var portal;
var type;

function onOverWidget(portal, widget) {
    widget.getElement().insertBefore($('control_buttons'), widget.getElement().firstChild);
    $('control_buttons').show(); 
} 
   
function onOutWidget(portal, widget) {
    $('control_buttons').hide();
} 

/**
 * バツボタンを押したときの動作
 */ 
function removeWidget(element) {
    var widget = $(element).up(".widget").widget;
    if (confirm('非表示にしますか？')) { 
        //----- ポートレットを削除
        document.body.appendChild($('control_buttons').hide())
        portal.remove(widget);

        //----- Cookieから削除
        var ajax = new Ajax.Request(
            'api/portlet_remove.php',
            {
                method:'get',
                parameters:'pid=' + widget.pid + '&l=' + portletPageID + '&t=' + type,
                onComplete:onRemoveSuccess
            }
        );
    }
}

function goToHelp(element) {
    var widget = $(element).up(".widget").widget;
    window.open(widget.help); 
}

function onRemoveSuccess(o) {
    //alert("remove");
}

function more(url, windowtitle) {
    myLightWindow.activateWindow({
        href        : url,
        width       : 800,
        height      : 600,
        iframeEmbed : true,
        title       : windowtitle
    });
}

var portlets;

function buildHtml(request)
{
    obj = eval("(" + request.responseText + ")");
    var resTit = obj['title'];
    var resCon = obj['contents'];
    var resHlp = obj['help'];
    var resTyp = obj['type'];
    var resIdx = obj['index'];
    var resPid = obj['pid'];

    if (resTyp == 'html') {  
    } else if (resTyp == 'list') {
        resCon = makeList(obj);
    } else if (resTyp == 'listfull') {
        resCon = makeListFull(obj);
    }
	//高さを指定
    if (resPid == '101') {
        var height = resCon.toString().length / 12;
        if (height < 120) {
            height = 120;
        }
	//    $('content_widget_0').style.height = height + 'px';
    }

    //統計
    if(resPid=="107"){
	portlets[resIdx].getContent().style.height=120;
    }
    

    // 見た目をセンターにするために余分な空白を挿入
    portlets[resIdx].setTitle(resTit + "&nbsp;");
    portlets[resIdx].setContent(resCon);
    portlets[resIdx].updateHeight();
    portlets[resIdx].help = resHlp;
    //高さを調整
    portal._updateColumnsHeight();
}

function makeList(obj)
{
    var resTit = obj['title'];
    var resPid = obj['pid'];
    var resLen = obj['length'];
    var resCon = obj['contents'];
    var resUrl = obj['url'];
    var resJid = obj['jglobalid'];
    var resTab = obj['tab'];
    var resSln = obj['strlen'];
    var resMor = obj['more'];

    var content = '<div style="line-height:130%;">';
    if (typeof resCon != "undefined") {

        var len = (resCon.length < 5) ? resCon.length : 5;
        var max;
        if (typeof resSln != "undefined") {
            max = (resPid == 104) ? 10 : resSln;
        } else {
            max = (resPid == 104) ? 10 : 15;
        }
        for (var j = 0; j < len; j++) {
            if (resCon[j] == null) {
                resCon[j] = 'not found';
            } else {
                if (resCon[j].length > max) {
                    resCon[j] = resCon[j].substr(0, max) + "...";
                }
            }
            content += (j+1) + ' : ' + '<a href="' + resUrl[j] + '">' + resCon[j] + '</a><br />';
        }
    }
    content += '</div>';

    if (typeof resMor != 'undefined') {
        content += '<div style="line-height:130%;" align="right">';
        content += '<a href="' + resMor + '">もっと見る</a>';
        content += '</div>';
    } else if (resLen > 5) {
        var url = 'more.php?pid=' + resPid;
        if (resJid != 'undefined' && resJid != null) {
            url += '&amp;JGLOBAL_ID=' + resJid;
        }
        if (resTab != 'undefined' && resTab != null) {
            url += '&amp;t=' + resTab;
        }
        content += '<div style="line-height:130%;" align="right">';
        content += '<a href="' + url + '" onClick="more(\'' + url + '\', \'' + resTit + '\');return false;">もっと見る</a>';
        content += '</div>';
    }

    return content;
}

function makeListFull(obj)
{
    var resPid = obj['pid'];
    var resCon = obj['contents'];
    var resUrl = obj['url'];

    var content = '<div style="line-height:130%;"><ul style="margin:0px;padding:0 0 0 30px;">';
    if (typeof resCon != "undefined") {
        var len = resCon.length;
        var max = (resPid == 4) ? 10 : 15; 
        for (var j = 0; j < len; j++) {
            if (resCon[j] == null) {
                resCon[j] = 'not found';
            } else {
                if (resCon[j].length > max) {
                    resCon[j] = resCon[j].substr(0, max) + "...";
                }
            }
            content += '<li><a href="' + resUrl[j] + '">' + resCon[j] + '</a></li>';
        }
    }
    content += '</ul></div>';
    return content;
}

function faildLoad() {
}

function exLoad(a, q) {
    //alert('onException');
    //alert(q);
}

function portletAPI_loaded(request) {

    // json[i][0] = pid
    // json[i][1] = title
    // json[i][2] = col
    var json = eval("(" + request.responseText + ")");
    portlets = new Array(json.length);

    //----- apiより取得したportletidのリストを元にポートレットを追加
    for (var i = 0; i < portlets.length; i++) {
        if (json[i]['pid'] == '') {
            continue;
        }
        portlets[i] = new Xilinus.Widget();
        //----- for remove pushing x button.
        portlets[i].pid = json[i]['pid'];
        portlets[i].setContent('<img src="img/icons/loading.gif" style="border:0px;position:absolute;top:50%;left:50%;margin:-16px 0 0 -16px;">');
        portal.add(portlets[i], json[i]['col']);

        //----- 090312 「その他の関連情報」の時はみ出るのを防止
        if (json[i]['pid'] == '22' || json[i]['pid'] == '313') {
            var widgetid = 'content_widget_' + i;
            $(widgetid).style.height = '170px';
        }
    }

    if (portletPageID != 3) {
        jid = '';
    }

    //----- ポートレットのコンテンツをAjaxで取得
    var ajax = new Array(json.length);
    var obj  = new Array(json.length);
    for (var i = 0; i < portlets.length; i++) {
        ajax[i] = new Ajax.Request(
            '/api/portlet_load_content.php',
            {
                method      : 'get',
                parameters  : 'pid=' + portlets[i]['pid'] + '&index=' + i + '&t=' + type + '&jid=' + jid,
                onSuccess   : buildHtml,
                onFailure   : faildLoad,
                onException : exLoad
            }
        );
    }
}

function onChange() {
    //alert("hoge");
}

/**
 * 位置を移動したら覚える
 */
function onUpdate(obj) {

    //----- 090312 「その他の関連情報」の時はみ出るのを防止
    if (portletPageID == '3') {
        if (obj._currentOverWidget.widget.pid == '22') {
            var hoge = 'content_' + obj._currentOverWidget.widget._id;
            $(hoge).style.height = '170px';
        }
    }

    cols = 1;
    if (portletPageID == 1) {
        cols = 4;
    }

    //----- ポートレットの位置を示す値を作成
    //----- 例（デフォルトの場合）：1,2-3,4,5-6-7
    var pos = '';
    var tmp2 = Array();
    for (i = 0; i < cols; i++) {
        if (obj._columns[i].childNodes.length != 0) {
            var tmp1 = Array();
            for (j = 0; j < obj._columns[i].childNodes.length; j++) {
                tmp1.push(obj._columns[i].childNodes[j].widget.pid);
            }
            tmp2.push(tmp1.join(","));
        }
    }
    pos = tmp2.join("-");

    //----- Cookieから削除
    var ajax = new Ajax.Request(
        'api/portlet_save.php',
        {
            method:'get',
            parameters:'pos=' + pos + '&l=' + portletPageID + '&t=' + type,
            onComplete: onUpdateComplete
        }
    );
}

function onUpdateComplete() {
}

function init() {

    //----- 科学技術用語はポートレットを変えるため
    type = document.searchForm.t.value;
	if(typeof document.documentForm == "undefined"){
		jid="";
	}else{
		jid=document.documentForm.jid.value;
	}
		//----- ポートレットパネルのインスタンスを作成
    portal = new Xilinus.Portal(
        "#page div",
        {
            onOverWidget : onOverWidget, 
            onOutWidget  : onOutWidget, 
            onChange     : onChange,
            onUpdate     : onUpdate,
            removeEffect : Effect.SwitchOff
        }
    ); 

    //----- ポートレット一覧を取得
    var ajax = new Ajax.Request(
        'api/portlet_load.php',
        {
            method     : 'get',
            parameters : 'l=' + portletPageID + '&t=' + type + '&jid='+jid,
            onComplete : portletAPI_loaded
        }
    );

    portal.addWidgetControls("control_buttons");
}

