﻿var MKW;
MKW = MKW || {};

MKW.Tab = function(sModuleName) {
    this.sModuleName = sModuleName;
    this.aTabs = [];
    this.sBody = "";
    this.aDataProcessed = [];
    this.bHotLinkEnable = 1;
    this.oHotLinks = null;
    this.dCurTab = "";
    this.dCurTabNum = 1;
    this.sCurrentTab = null;
    this.fAction = null;
};

MKW.Tab.prototype.setupTabs = function() {
    this.loadingMsg = "<div class='loading_div'><h3>" + MKW.Message.messages["Loading"] + "</h3><img src='" + ICON_PATH + "loading.gif' alt=''></div>";
    var dTab = document.getElementById(this.sModuleName).getElementsByTagName("li");
    var nTabLength = dTab.length, i, j;
    var oSelf = this;

    var fAction = function(e) {
        var eNode = YAHOO.util.Event.getTarget(e);
        var eParentNode = eNode;
        while (eParentNode.tagName.toLowerCase() != "li"
                && eParentNode.id != oSelf.sModuleName) {
            eParentNode = eParentNode.parentNode;
        }
        if (oSelf.bHotLinkEnable
				&& YAHOO.util.Dom.hasClass(eParentNode, "on")) {
            var sTab = eNode.id;
            if (e && oSelf.oHotLinks && oSelf.oHotLinks[sTab]) {
                YAHOO.util.Event.stopEvent(e);
                location.href = oSelf.oHotLinks[sTab];
            } else {
                return true;
            }
        }
        if (e) {
            YAHOO.util.Event.stopEvent(e);
        }

        var dNode = document.all ? window.event.srcElement : e.target;

        oSelf.tabAction(e, dNode);
        return false;
    }

    for (i = 0; i < nTabLength; i++) {
        // set current tab number
        if (YAHOO.util.Dom.hasClass(dTab[i], "on")) {
            this.dCurTab = dTab[i];
        }
        var dClickTag = dTab[i].getElementsByTagName("a") || 0;
        var nClickTagLength = dClickTag.length;
        for (j = 0; j < nClickTagLength; j++) {
            dClickTag[j].order = (i + 1);
            this.aTabs[(i + 1)] = dClickTag[j];

            YAHOO.util.Event.addListener(
		        dClickTag[j], "click", fAction);
        }
    }
};

/* Changes tab "on" and "off" classes. */
MKW.Tab.prototype.changeTab = function(dNode) {
    // remove "on" and "off" classes.
    if ((this.dCurTabNum - 1) > 0) {
        YAHOO.util.Dom.removeClass(this.aTabs[(this.dCurTabNum - 1)].parentNode.parentNode, "off");
    }
    YAHOO.util.Dom.removeClass(this.dCurTab, "on");

    this.dCurTab = dNode.parentNode.parentNode;

    // add "on" and "off" classes.
    this.dCurTabNum = dNode.order;
    YAHOO.util.Dom.addClass(this.dCurTab, "on");
    if ((this.dCurTabNum - 1) > 0) {
        YAHOO.util.Dom.addClass(this.aTabs[(this.dCurTabNum - 1)].parentNode.parentNode, "off");
    }
};

MKW.Tab.prototype.tabAction = function(e, dNode) {
    if (dNode.tagName == 'IMG') {
        dNode = dNode.parentNode;
    }
    //this.changeTab(dNode);
    this.loadPanel(dNode);

    return false;
};

MKW.Tab.prototype.loadPanel = function(dNode) {
    if (!this.aDataProcessed[dNode.order]) {
        var sBody = this.sBody + dNode.order;
        document.getElementById(sBody).innerHTML = document.getElementById(sBody).innerHTML + this.loadingMsg;
        this.changeTab(dNode);
        this.showPanel(this.sBody + dNode.order);
        this.fAction(dNode, this);
    } else {
        this.changeTab(dNode);
        this.showPanel(this.sBody + dNode.order);
    }
    return;
};

MKW.Tab.prototype.showPanel = function(sCurrentNodeId) {
    var a = arguments;
    var sTagName = 'span';
    var sClassName = 'current';
    var aNodes = YAHOO.util.Dom.getChildren(document.getElementById(sCurrentNodeId).parentNode);
    var nNodesLength = aNodes.length, i;
    for (i = 0; i < nNodesLength; i++) {
        if (YAHOO.util.Dom.hasClass(aNodes[i], sClassName)) {
            YAHOO.util.Dom.removeClass(aNodes[i], sClassName);
        }
    }
    YAHOO.util.Dom.addClass(document.getElementById(sCurrentNodeId), sClassName);
};

MKW.Tab.prototype.panelCallBack = function() {
    var sData = arguments[0];
    var dNode = arguments[1];
    var sBody = this.sBody + dNode.order;
    document.getElementById(sBody).innerHTML = sData;
    sData.evalScripts();

    this.aDataProcessed[dNode.order] = 1;
    this.changeTab(dNode);
    this.showPanel(sBody);
};