var Mackolik;
Mackolik = Mackolik || {};

Mackolik.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;
    this.loadingMsg = "<div class='loading_div'><h3>Yükleniyor</h3><img src='" + ICON_PATH + "loading.gif' alt=''></div>";
};

Mackolik.Tab.prototype.setupTabs = function() {
    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. */
Mackolik.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");
	}
};

Mackolik.Tab.prototype.tabAction = function(e, dNode) {
	if (dNode.tagName == 'IMG') {
		dNode = dNode.parentNode;
	}
    //this.changeTab(dNode);
	this.loadPanel(dNode);

	return false;
};

Mackolik.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;
};

Mackolik.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);  
};

Mackolik.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);
};