/**
 * 标签对象及相关函数。
 * @create   2004-10-14 source0
 * @author   source0 source0@hotmail.com
 * @copyright 版权所有（C） 2004  source0
 *                这一程序是自由软件，你可以遵照自由软件基金会出版的GNU通用
 *            公共许可证条款来修改和重新发布这一程序。或者用许可证的第二版，
 *            或者（根据你的选择）用任何更新的版本。
 *                发布这一程序的目的是希望它有用，但没有任何担保。甚至没有
 *            适合特定目的的隐含的担保。更详细的情况请参阅GNU通用公共许可证。
 *                你应该已经和程序一起收到一份GNU通用公共许可证的副本。如果
 *            还没有，写信给：
 *                The Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
 *                MA02139, USA
 */

var DEFAULT_TABBED_PANE_TAB_MARGIN = 10;

var TABBED_PANE_SET = new Array();

/**
 * 标签对象
 * @create   2004-10-14 source0
 */
function CTabbedPane(content){
//    this.id = id;
    this.contentId = content;
    this.borderSize = DEFAULT_BORDER_SIZE;
    this.tabMargin = DEFAULT_TABBED_PANE_TAB_MARGIN;
    this.imagePath = DEFAULT_BORDER_IMAGE_PATH;

    var id = new Date().getTime();

    /* 保存所有标签内的对象的ID。 */
    var tabs = new Array();

    this.getId = function(){
        return id;
    }

    this.add = function (conId){
        tabs[tabs.length] = conId;
    }

    this.getTabs = function(){
        return tabs;
    }
    this.getHtml = function(){
        var rt = new String();

        rt += "<table width='100%' height='100%' cellspacing=0 cellpadding=0 border=0>";

        rt += "<tbody><tr><td height='100%'>";
        rt += getContent(this.imagePath, this.borderSize, this.contentId);
        rt += "</td></tr></tbody>";

		rt += "<tbody>";
		rt += "<tr><td width='100%'>";
        rt += "<table cellspacing=0 cellpadding=0 width='100%'><tr>";
        rt += "<td width='" + this.borderSize + "' height='100%'>" + getTopCorner(this.imagePath, this.borderSize, "swCorner.gif") + "</td>";
        for ( var i = 0; i < tabs.length; i++ ){
            //rt += "<td width='" + this.tabMargin + "' height='100%'>" + getMargin(this.imagePath, this.borderSize, this.tabMargin) + "</td>";
            rt += "<td width=1>" + getTabHtml(id, false, this.imagePath, this.borderSize, tabs[i]) + "</td>";
        }
        rt += "<td width='100%' height='100%'>" + getMargin(this.imagePath, this.borderSize, "100%") + "</td>";
        rt += "<td width='" + this.borderSize + "' height='100%'>" + getTopCorner(this.imagePath, this.borderSize, "seCorner.gif") + "</td>";
        rt += "</tr></table>";
        rt += "</td></tr>";
        rt += "</tbody>";

        rt += "</table>";
        return rt;
    }
    function getTopCorner(imagePath, borderSize, image){
        var rt = new String();
        rt += "<table width='" + borderSize + "' height='100%' cellspacing=0 cellpadding=0 border=0><tbody>";
        rt += "<tr><td valign=top><img src='" + imagePath + "/" + image + "'/></td></tr>";
        rt += "</tbody></table>";
        return rt;
    }
    function getMargin(imagePath, borderSize, tabMargin){
        var rt = new String();
        rt += "<table width='100%' height='100%' cellspacing=0 cellpadding=0 border=0><tbody>";
        rt += "<tr><td valign=top>";
        rt += "<table valign=top width='100%' height='" + borderSize + "' cellspacing=0 cellpadding=0 border=0";
        rt += " style='background-color:#FFF;background:url(" + imagePath + "/sBorder.gif)'><tr><td></td></tr></table>";
        rt += "</td></tr>";
        rt += "</tbody></table>";
        return rt;
    }
    function getContent(imagePath, borderSize, contentId){
        var cnt = new String();
        cnt += "<table border=0 cellspacing=0 cellpadding=0 width='100%' height='100%'>";
        cnt += "<tr>";
        cnt += "<td width=" + borderSize + " height=" + borderSize + " style='background:url(" + imagePath + "/nwCorner.gif)'>";
        cnt += "<td style='background:url(" + imagePath + "/nBorder.gif)'></td>";
        cnt += "<td width=" + borderSize + " height=" + borderSize + " style='background:url(" + imagePath + "/neCorner.gif)'>";
        cnt += "</tr>";
        cnt += "<tr>";
        cnt += "<td width=" + borderSize + " style='background:url(" + imagePath + "/wBorder.gif)'>";
        cnt += "<td>";
        cnt += getOuterHTML(document.getElementById(contentId));
        cnt += "</td>";
        cnt += "<td width=" + borderSize + " style='background:url(" + imagePath + "/eBorder.gif)'>";
        cnt += "</tr>";
        cnt += "</table>";
        return cnt;
    }
}

/**
 * 得到标签的HTML代码。
 *
 * @create   2004-10-14 source0
 */
function getTabHtml(tabCtlId, isSelected, imagePath, borderSize, conId){
    var rt = new String();
    var sizeStr = " width='" + borderSize + "' height='" + borderSize + "'";
    rt += "<table cellspacing=0 cellpadding=0 border=0";
    rt += " id='TAB_" + conId + "'";
    rt += " style='background-color:transparent;'";
    rt += "><tbody>";

	if ( CURRENT_ROLE == null )
	{
		   /* 第三行。标签底部。 */
			rt += "<tr>";
			rt += "<td height='9' style='background:url(" + imagePath + "/sBorder.gif)'></td>";
			rt += "</tr>";
			/* 第二行。标签文本部分。 */
			rt += "<tr>";
			rt += "<td>";
			rt += getOuterHTML(document.getElementById(conId));
			rt += "</td>";
			rt += "</tr>";
			/* 第一行，标签顶部。*/
			rt += "<tr>";
			rt += "<td height='9'></td>";
			rt += "</tr>";
	}
	else
	{
		if ( isSelected ){
		   /* 第三行。标签底部。 */
			rt += "<tr>";
			rt += "<td style='background:url(" + imagePath + "/inwCorner.gif)'><img " + sizeStr + " src='" + imagePath + "/inwCorner.gif'></td>";
			rt += "<td class='imageFilledArea'></td>";
			rt += "<td style='background:url(" + imagePath + "/ineCorner.gif)'><img " + sizeStr + " src='" + imagePath + "/ineCorner.gif'></td>";
			rt += "</tr>";
			/* 第二行。标签文本部分。 */
			rt += "<tr>";
			rt += "<td width='" + borderSize + "' style='background:url(" + imagePath + "/wBorder.gif)'></td>";
			rt += "<td nowrap";
			rt += " onClick='selectTab(\"" + tabCtlId + "\", \"" + conId + "\");'";
			rt += ">";
			rt += getOuterHTML(document.getElementById(conId));
			rt += "</td>";
			rt += "<td width='" + borderSize + "' style='background:url(" + imagePath + "/eBorder.gif)'></td>";
			rt += "</tr>";
			/* 第一行，标签顶部。*/
			rt += "<tr>";
			rt += "<td style='background:url(" + imagePath + "/swCorner.gif)'><img " + sizeStr + " src='" + imagePath + "/swCorner.gif'/></td>";
		//    rt += "<td><img " + sizeStr + " src='" + imagePath + "/nwCorner.gif'/></td>";
			rt += "<td style='background:url(" + imagePath + "/sBorder.gif)'></td>";
			rt += "<td style='background:url(" + imagePath + "/seCorner.gif)'><img " + sizeStr + " src='" + imagePath + "/seCorner.gif'/></td>";

		} else {

		   /* 第三行。标签底部。 */
			rt += "<tr>";
			rt += "<td " + sizeStr + " style='background:url(" + imagePath + "/sBorder.gif)'></td>";
			rt += "<td style='background:url(" + imagePath + "/sBorder.gif)'></td>";
			rt += "<td " + sizeStr + " style='background:url(" + imagePath + "/sBorder.gif)'></td>";
			rt += "</tr>";
			/* 第二行。标签文本部分。 */
			rt += "<tr>";
			rt += "<td width='" + borderSize + "' style='background:url(" + imagePath + "/nsTabW.gif)'></td>";
			rt += "<td nowrap";
			rt += " onClick='selectTab(\"" + tabCtlId + "\", \"" + conId + "\");'";
			rt += ">";
			rt += getOuterHTML(document.getElementById(conId));
			rt += "</td>";
			rt += "<td width='" + borderSize + "' style='background:url(" + imagePath + "/nsTabE.gif)'></td>";
			rt += "</tr>";
			/* 第一行，标签顶部。*/
			rt += "<tr>";
			rt += "<td style='background:url(" + imagePath + "/nsTabSW.gif)'><img " + sizeStr + " src='" + imagePath + "/nsTabSW.gif'/></td>";
		//    rt += "<td><img " + sizeStr + " src='" + imagePath + "/nwCorner.gif'/></td>";
			rt += "<td style='background:url(" + imagePath + "/nsTabS.gif)'></td>";
			rt += "<td style='background:url(" + imagePath + "/nsTabSE.gif)'><img " + sizeStr + " src='" + imagePath + "/nsTabSE.gif'/></td>";
		}
	}
    rt += "</tr>";
    rt += "</tbody></table>";
    return rt;
}

/**
 * 设置指定标签组件的指定标签为选中。
 * @param tabCtlId 标签组件的id。
 * @param id 被选中的标签内的组件的id
 * @create   2004-10-14 source0
 */
function selectTab(tabCtlId, id){
	if(CURRENT_ROLE == null)
		return;
    var tabs = TABBED_PANE_SET[tabCtlId].getTabs();
    var conId = null;
    for ( var i = 0; i < tabs.length; i++ ){
        conId = tabs[i];
        setOuterHTML(document.getElementById("TAB_" + conId), getTabHtml(tabCtlId, (conId == id), DEFAULT_BORDER_IMAGE_PATH, DEFAULT_BORDER_SIZE, conId));
    }
}
/**
 * 根据标签内的组件的id，找到对应的标签组件并选中。
 * @param id 标签内的组件的id
 * @create   2004-10-16 source0
 */
function selectTabByContentId(id){
    var tabControlId = null;
    for ( var key in TABBED_PANE_SET ){
        var tabs = TABBED_PANE_SET[key].getTabs();
       for ( var i = 0; i < tabs.length; i++ ){
            if (id == tabs[i]){
                tabControlId = key;
                break;
            }
        }
        if ( null != tabControlId ){
            break;
        }
    }
    if ( null != tabControlId ){
        selectTab(tabControlId, id);
    }

}