var Mackolik = Mackolik || {};

Mackolik.AnimatedTab = function() {}

Mackolik.oATErrorManager = {
	tabScores : {
		html : "go to <a href='r/lm'>Yahoo! Mail</a> to get your mail.</li><li class='last'><a href='r/ll'>&#187; Go To Yahoo! Mail",
		status : false,
		buffer : false,
		requestDelayTimeout : null,
		requestFailTimeout : null,
		bProcessed : 1,
		dScriptNode : null
	},
	tabStanding : {
		html : "go to <a href='r/p4'>Yahoo! Messenger</a> to see your online contacts.</li><li class='last'><a href='ymsgr:SendIM'>&#187; Go To Yahoo! Messenger",
		status : false,
		buffer : false,
		requestDelayTimeout : null,
		requestFailTimeout : null,
		bProcessed : 0,
		dScriptNode : null
	},
	tabIddaa : {
		html : "go to <a href='r/h3'>Yahoo! Astrology</a> to get your horoscope.</li><li class='last'><a href='r/h3'>&#187; Go To Yahoo! Astrology",
		error : false,
		status : false,
		buffer : false,
		requestDelayTimeout : null,
		requestFailTimeout : null,
		bProcessed : 0,
		dScriptNode : null
	},
	tabSahadan : {
		html : "go to <a href='r/kf'>Yahoo! Local</a> to get the local traffic.</li><li class='last'><a href='r/kf'>&#187; Go To Yahoo! Local",
		status : false,
		buffer : false,
		requestDelayTimeout : null,
		requestFailTimeout : null,
		bProcessed : 0,
		dScriptNode : null
	},
	tabEmail : {
		html : "go to <a href='r/kf'>Yahoo! Local</a> to get the local events.</li><li class='last'><a href='r/kf'>&#187; Go To Yahoo! Local",
		status : false,
		buffer : false,
		requestDelayTimeout : null,
		requestFailTimeout : null,
		bProcessed : 0,
		dScriptNode : null
	},
	tabPredictions : {
		html : "<h3><a href='r/uc'>LAUNCHcast Radio:</a> <em><a href='r/ud'>Featured stations</a></em></h3><div class='station'><div class='station-hd'></div><div class='station-bd' class='fixfloat'><a class='photo-link' href='r/ut/*-http://music.yahoo.com/launchcast/stations/station.asp?i=341'><img class='station-photo' src='http://us.ent1.yimg.com/images.launch.yahoo.com/000/025/969/25969265.jpg'></a><h4><a class='station-name' href='r/ut/*-http://music.yahoo.com/launchcast/stations/station.asp?i=341'>Today's Big Hits</a></h4><p class='artists'><a href='r/ut/*-http://music.yahoo.com/launchcast/stations/station.asp?i=341'>Mary J. Blige, Kelly Clarkson, Sean Paul, Beyonce</a></p><a class='listen' href='r/ul/*-http://music.yahoo.com/lc/?rt=1&rp1=341&rp2=0' onclick=\"YAHOO.Fp.launchMusicWindow('http://radio.music.yahoo.com/radio/player/default.asp?clientID=1&clientStationID=0&p=1&m=341&d=0',491,365,'http://music.yahoo.com/lc/?rt=1&rp1=341&rp2=0');return false;\">Listen</a></div><div class='station-ft'></div></div><a class='btn-more' href='r/ua'>&#187; View All Stations</a><div class='nav'><a class='back' onclick=\"return  YAHOO.Fp.oPaModule.getModuleData('music',{nav:'prev',curr_stn:1})\" href='r/um'>Previous</a><a class='frwd' onclick=\"return YAHOO.Fp.oPaModule.getModuleData('music',{nav:'next',curr_stn:1})\" href='r/um'>Next</a></div>",
		error : false,
		status : false,
		buffer : false,
		requestDelayTimeout : null,
		requestFailTimeout : null,
		bProcessed : 0,
		dScriptNode : null
	},
	template : {
		templateHdr : "<div class='pa-alert error'><ul><li class='first'>Please ",
		templateFtr : "</a></li></ul></div>"
	}
}

Mackolik.AnimatedTab.prototype = {
	ANMTION_TIME : 0.3,
	//PRV_DIV_SIZE : 118,
	PRV_DIV_SIZE : 210,
	PRV_DIV_INV_SIZE : 0,
	PA_HOVER_DELAY : 100,
	PA_PASS_THROUGH_DELAY : 300,
	MOUSEOUT_DELAY : 1000,
	REFRESH_TIME : 300000,
	REQUEST_DELAY_TIMEOUT : 5000,
	REQUEST_FAIL_TIMEOUT : 8000,
	LOCAL_JS_EVAL_DELAY : 10,
	loadingMsg : "<div class='loading'><h3>Yükleniyor</h3><img src='" + ICON_PATH + "loading.gif' alt=''></div>",
	sCurrentPreviewSpanId : null,
	sCurrentModuleName : null,
	sOpenRowId : null,
	dPaContainer : null,
//	bLocationChanged : false,
//	sLocalTabType : null,
	prvmouseoutTimeout : null,
	movertimeout : null,
	dPaContainer : null,
	bPaInUse : false,
	oModuleMgr : Mackolik.oATErrorManager,
	_getDefaultMessage : function(sModuleName) {
		var oModuleHandler = this.oModuleMgr[sModuleName];
		var oErrorTemplateHandler = this.oModuleMgr.template;
		/*
		if (sModuleName === "music") {
			return oModuleHandler.html;
		}*/
		return oErrorTemplateHandler.templateHdr + oModuleHandler.html
				+ oErrorTemplateHandler.templateFtr;
	},
	_timer : function(sModuleName) {
		var oSelf = this;
		oSelf.oModuleMgr[sModuleName].bProcessed = 0;
		setTimeout(function() {
			oSelf._timer(sModuleName);
		}, oSelf.REFRESH_TIME);
	},
	_processTabMouseover : function(sTabsRowId, sModuleName) {
		if (this.sCurrentModuleName === sModuleName) {
			return;
		}
		//sModuleName === "mail" ? YAHOO.Fp.VSearch.setFocus() : "";
		var nAnimationHeight = this.PRV_DIV_SIZE;
		var oModuleMgr = this.oModuleMgr[sModuleName];
		var dTab = document.getElementById(sModuleName);
		var sModuleContainerId = sModuleName + "preview";
		var dModuleContainer = document.getElementById(sModuleContainerId);
		var dPreviewDiv = document.getElementById(sTabsRowId + 'previewdiv');

		if (this.sCurrentModuleName) {
			YAHOO.util.Dom.removeClass(document.getElementById(this.sCurrentModuleName), "tab-on");
			YAHOO.util.Dom.removeClass(document.getElementById(this.sCurrentPreviewSpanId), "current");
		}
		this.sCurrentModuleName = sModuleName;
		this.sCurrentPreviewSpanId = sModuleContainerId;
		if (!dModuleContainer) {
			dModuleContainer = this._createModuleDataContainer(sModuleContainerId);
			dPreviewDiv.appendChild(dModuleContainer);
		}
        if(dModuleContainer.innerHTML === ''
				|| oModuleMgr.status === 'error'
				|| oModuleMgr.bProcessed === 0
				|| oModuleMgr.refresh) {
			this._prepareRequest(dModuleContainer, sModuleName);
		}
		if (this.sOpenRowId === sTabsRowId) {
			this._showModule();
			return;
		}
		if (this.sOpenRowId) {
			this._doAnimation(document.getElementById(this.sOpenRowId
					+ "previewdiv"), this.PRV_DIV_INV_SIZE, false, true);
		}
		this._doAnimation(dPreviewDiv, nAnimationHeight, false);
		this.sOpenRowId = sTabsRowId;
	},
	_createModuleDataContainer : function(sModuleDataContainerId) {
		var dModuleContainer = document.createElement("span");
		dModuleContainer.id = sModuleDataContainerId;
		return dModuleContainer;
	},
	_prepareRequest : function(dModuleDataContainer, sModuleName) {
		var oModuleMgr = this.oModuleMgr[sModuleName];
		if (oModuleMgr.failSafe) {
			this._handleRequestTimeout(dModuleDataContainer, sModuleName, 'error');
			return;
		}
		
		dModuleDataContainer.innerHTML = this.loadingMsg;
		/*
		if (sModuleName === "traffic" || sModuleName === "events") {
			YAHOO.Fp.display_map("traffic", {
				errorType : "loading",
				html : this.loadingMsg
			});
		} else {
			dModuleDataContainer.innerHTML = this.loadingMsg;
		}
		*/
		var bIsNs = 0; //typeof(YAHOO.Fp._ns) != 'undefined' ? YAHOO.Fp._ns : 0;
		/*
		var oRequestArgs = ((sModuleName === "messenger" && !YAHOO.Fp._mac
				&& !bIsNs && !YAHOO.Fp._op && !YAHOO.Fp.oMessengerInfo.installed)
				? { noclient : 1 }
				: (sModuleName === "mail" ? { partner : YAHOO.Fp.sPartner } : ''));
        */
		oModuleMgr.status = 'request';
		oModuleMgr.buffer = false;
		this.getModuleData(sModuleName);
		/*
		if (sModuleName === "weather" || sModuleName === "traffic") {
			this.bLocationChanged = false;
		}*/
		if (oModuleMgr.bProcessed === 0) {
			oModuleMgr.bProcessed = 1;
		}
		/*
		if ((sModuleName === 'mail' || sModuleName === 'messenger')
				&& oModuleMgr.bProcessed === 0) {
			oModuleMgr.bProcessed = 1;
		}
		*/
	},
	_changeStyles : function() {
		var oTmp = arguments[2];
		if (oTmp) {
			var oSelf = oTmp.target;
			var dCurrentTab = document.getElementById(oSelf.sCurrentModuleName);
			var dPreviewDiv = oTmp.dPreviewDiv;
			if (oTmp.bDivClose) {
				YAHOO.util.Dom.removeClass(dPreviewDiv, "preview-on");
				YAHOO.util.Dom.removeClass(dCurrentTab, "tab-on");
				YAHOO.util.Dom.removeClass(document.getElementById(oSelf.sCurrentPreviewSpanId), "current");
			} else {
				YAHOO.util.Dom.addClass(dPreviewDiv, "preview-on");
				YAHOO.util.Dom.addClass(dCurrentTab, "tab-on");
			}
		}
	},
	_doAnimation : function(dPreviewDiv, nHeight, bPaClose, bDivClose) {
		var oRowAnmtn = dPreviewDiv.animationObject;
		if (oRowAnmtn) {
			oRowAnmtn.onComplete.unsubscribe(this._showModule, this);
			oRowAnmtn.onStart.unsubscribe(this._changeStyles, this);
			oRowAnmtn = null;
		}
		
		var bIsIe7 = 0;//(typeof(YAHOO.Fp._ie7) != 'undefined' && YAHOO.Fp._ie7);
		//(YAHOO.Fp._ie && !bIsIe7) ? {
		var attributes = 1 ? 
		{height : { to : nHeight }} : 
		{minHeight : { to : nHeight }};
		oRowAnmtn = new YAHOO.util.Anim(dPreviewDiv, attributes,
				this.ANMTION_TIME, YAHOO.util.Easing.easeBoth);
		oRowAnmtn.onStart.subscribe(this._changeStyles, {
			target : this,
			dPreviewDiv : dPreviewDiv,
			bDivClose : bDivClose
		});
		oRowAnmtn.onComplete.subscribe(this._showModule, {
			target : this,
			row : dPreviewDiv,
			height : nHeight,
			bPaClose : bPaClose
		});
		oRowAnmtn.animate();
		dPreviewDiv.animationObject = oRowAnmtn;
	},
	_showModule : function() {
		var oSelf;
		if (arguments.length > 2) {
			var oTmp = arguments[2];
			oSelf = oTmp.target;
		} else {
			oSelf = this;
		}
		//oSelf.sCurrentModuleName === "mail" ? "" : YAHOO.Fp.VSearch.setFocus();
		if (arguments.length > 2) {
			var oTmp = arguments[2];
			oSelf = oTmp.target;
			if (!oTmp.height) {
				if (oTmp.bPaClose) {
					oSelf.sCurrentPreviewSpanId = null;
					oSelf.sCurrentModuleName = null;
					oSelf.sOpenRowId = null;
				}
				setTimeout(function() {
					oSelf._setFocusOnFirstTextField(document
							.getElementById(oSelf.sCurrentPreviewSpanId));
				}, 100);
				return;
			}
		} else {
			oSelf = this;
			YAHOO.util.Dom.addClass(document
					.getElementById(oSelf.sCurrentModuleName), "tab-on");
		}
		if (oSelf.oModuleMgr[oSelf.sCurrentModuleName].status === 'success') {
		}
		Mackolik.showCurrentPanel(oSelf.sCurrentPreviewSpanId);
		if (typeof(ad) != 'undefined' && typeof(resize) != 'undefined') {
			resize();
		}
		/*
		if (oSelf.sCurrentPreviewSpanId != 'trafficpreview') {
			YAHOO.Fd.attachUlt(document
					.getElementById(oSelf.sCurrentPreviewSpanId));
		}
		*/
		setTimeout(function() {
			oSelf._setFocusOnFirstTextField(document
					.getElementById(oSelf.sCurrentPreviewSpanId));
		}, 100);
	},
	getModuleData : function(sPaModuleId) {
		this._sendRequest(sPaModuleId, 
				document.getElementById(this.sCurrentPreviewSpanId));
		return false;
	},
	_setFocusOnFirstTextField : function(eCurrentPreviewDiv) {
		Mackolik.setInputFocus(eCurrentPreviewDiv);
	},
	_sendRequest : function(sModuleName, dPreviewSpan) {
		var oSelf = this, oModuleMgr = this.oModuleMgr[sModuleName];

		this.dPreviewSpan = dPreviewSpan;
		oModuleMgr.requestDelayTimeout = setTimeout(function() {
			oSelf._handleRequestTimeout(dPreviewSpan, sModuleName, 'wait');
		}, this.REQUEST_DELAY_TIMEOUT);
		oModuleMgr.requestFailTimeout = setTimeout(function() {
			oSelf._handleRequestTimeout(dPreviewSpan, sModuleName, 'error');
		}, this.REQUEST_FAIL_TIMEOUT);
		Mackolik.AnimatedTab.getData(sModuleName, this);
		
		//YAHOO.cookie.set("D", "", "-1", "/", "yahoo.com");
		//oModuleMgr.dScriptNode = YAHOO.Fp.dod(sUrl, 0, 0);
	},
	_handleRequestTimeout : function(dPreviewSpan, sModuleName, sStatus) {
		var oModule = this.oModuleMgr[sModuleName];
		if (sStatus === 'error' && oModule.dScriptNode) {
			this._removeScriptNode(oModule.dScriptNode);
		}
		oModule.status = sStatus;
		var sErrorMsg = this._getDefaultMessage(sModuleName);
		/*
		if (sModuleName === "traffic" || sModuleName === "events") {
			YAHOO.Fp.display_map("traffic", {
				errorType : "timeout",
				html : sErrorMsg
			});
		} else {
			dPreviewSpan.innerHTML = sErrorMsg;
		}
		*/
		//YAHOO.Fd.attachUlt(dPreviewSpan);
	},
	processResponse : function(oData, sModuleName) {
		var jsonData;
		var dPrvContainer = document.getElementById(sModuleName	+ "preview");
		var oModule = this.oModuleMgr[sModuleName];
		var oSelf = this;
		try {
			this._removeScriptNode(oModule.dScriptNode);
			if (oModule.status === 'error' || !oData) {
				return;
			}
			clearTimeout(oModule.requestDelayTimeout);
			clearTimeout(oModule.requestFailTimeout);
            /*			
			if (jsonData.retcode && jsonData.retcode === '-1') {
				this._handleRequestTimeout(dPrvContainer, sModuleName, 'error');
				return;
			}
			*/
			var sHtmlText = oData;
			if (sHtmlText && sHtmlText != '-1') {
				oModule.buffer = sHtmlText;
				if (oModule.status != 'wait') {
					dPrvContainer.innerHTML = sHtmlText;
					//YAHOO.Fd.attachUlt(dPrvContainer);
				}
				oModule.status = 'success';
				var oSelf = this;
			}
			/*
			if (jsonData.js) {
				setTimeout(function() {
					eval(jsonData.js);
				}, this.LOCAL_JS_EVAL_DELAY);
			}*/
			setTimeout(function() {
				oSelf._setFocusOnFirstTextField(dPrvContainer);
			}, 100);
			/*
			if (sModuleName == 'messenger' && YAHOO.Fp.PA.Messenger) {
				YAHOO.Fp.PA.Messenger();
			}*/
		} catch (exception) {
			this._handleRequestTimeout(dPrvContainer, sModuleName, 'error');
		}
	},
	_addListeners : function(aRows) {
		var self = this, yUeEv = YAHOO.util.Event, iRowsLength = aRows.length;
		for (var nRow = 0; nRow < iRowsLength; nRow++) {
			var aTabs = aRows[nRow].getElementsByTagName('a'), iLength = aTabs.length;
			for (var i = 0; i < iLength; i++) {
				yUeEv.addListener(aTabs[i], "mouseover", function(oSelf,
						sRowId, sModuleName, node) {
					return function(e) {
						oSelf._handleTabMouseover(e, sRowId, sModuleName, node);
					};
				}(self, aRows[nRow].id,
						aTabs[i].parentNode.parentNode.parentNode.id, aTabs[i]));
			}
		}
	},
	_handleTabMouseover : function(e, sRowId, sModuleName, node) {
		var oSelf = this;
		clearTimeout(this.prvmouseoutTimeout);
		var mouseoverDelay = (oSelf.bPaInUse)
				? oSelf.PA_HOVER_DELAY
				: oSelf.PA_PASS_THROUGH_DELAY;
		this.movertimeout = setTimeout(function() {
			if (!oSelf.bPaInUse) {
				oSelf.bPaInUse = true;
			}
			oSelf._processTabMouseover(sRowId, sModuleName);
		}, mouseoverDelay);
	},
	_handlePaMouseover : function(e) {
		clearTimeout(this.prvmouseoutTimeout);
	},
	_handlePaMouseout : function(e) {
		var oSelf = this;
		clearTimeout(this.movertimeout);
		this.prvmouseoutTimeout = setTimeout(function() {
			oSelf._processPaMouseout();
		}, this.MOUSEOUT_DELAY);
	},
	_processPaMouseout : function() {
		this.bPaInUse = false;
		if (this.sOpenRowId) {
			this._doAnimation(document.getElementById(this.sOpenRowId
					+ "previewdiv"), this.PRV_DIV_INV_SIZE, true, true);
		}/*
		if (YAHOO.Fp.localmap) {
			YAHOO.Fp.localmap.onMouseOut();
		}*/
	},
	_removeScriptNode : function(dNode) {
		if (dNode && dNode.parentNode) {
			dNode.parentNode.removeChild(dNode);
			dNode = null;
		}
	},
	init : function() {
		var oSelf = this, yUe = YAHOO.util.Event;
		this.dPaContainer = document.getElementById('pa');
		this._addListeners([document.getElementById('tabs1'),document.getElementById('tabs2')]);
		//this._timer('mail');
		//this._timer('messenger');
		/*
		*****************************
		DO NOT CLOSE TABS ON MOUSEOUT
		*****************************
		yUe.addListener(this.dPaContainer, "mouseout", function() {
			oSelf._handlePaMouseout();
		});
		*/
		yUe.addListener(this.dPaContainer, "mouseover", function() {
			oSelf._handlePaMouseover();
		});
	}
};

function instantiatePaModule() {
	Mackolik.oAnimatedTab = new Mackolik.AnimatedTab();
	Mackolik.oAnimatedTab.sCurrentModuleName = "tabScores";
	Mackolik.oAnimatedTab.sCurrentPreviewSpanId = "tabScorespreview";
	Mackolik.oAnimatedTab.sOpenRowId = "tabs1";
    //Mackolik.oAnimatedTab._processTabMouseover("tabs1","tabScores");
    Mackolik.oAnimatedTab.init();
}

Mackolik.setInputFocus = function(eNode) {
	var tSetFocus = null;
	var nCycle = 0;
	var setFocus = function(eNode) {
		if (YAHOO.util.Dom.getStyle(eNode, 'display') == 'none') {
			if (nCycle <= 2) {
				nCycle++;
			} else {
				window.clearInterval(tSetFocus);
			}
		} else {
			window.clearInterval(tSetFocus);
			var aInputs = eNode.getElementsByTagName('input');
			for (var i = 0; i < aInputs.length; i++) {
				var eInput = aInputs[i];
				if (eInput.type === 'text') {
					var eInputParentNode = eInput.parentNode;
					while (eInputParentNode.id != eNode.id
							&& eInputParentNode.nodeName != 'HTML') {
						eInputParentNode = eInputParentNode.parentNode;
						if (YAHOO.util.Dom
								.getStyle(eInputParentNode, 'display') == 'none') {
							return;
						}
					}
					eInput.focus();
				}
			}
		}
	}
	if (eNode) {
		tSetFocus = window.setInterval(function() {
			setFocus(eNode);
		}, 100);
	}
}

Mackolik.showCurrentPanel = function(sCurrentNodeId) {
	var a = arguments;
	var sTagName = (a.length > 1 && a[1] != '') ? a[1] : 'span';
	var sClassName = (a.length > 2 && a[2] != '') ? a[2] : 'current';
	var aNodes = document.getElementById(sCurrentNodeId).parentNode
			.getElementsByTagName(sTagName);
	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.AnimatedTab.getData = function(sModuleName, obj) {
    var url = APP_ROOT + '/MainTab/MainTabHandler.aspx?tab=' + sModuleName;
    var callback = new AjaxCallback(function(response) { 
        obj.processResponse.call(obj, response.responseText, sModuleName);
    });
    YAHOO.util.Connect.asyncRequest( 'GET', url, callback ); 
    Mackolik.Analytics.trackEvent('Ana Sayfa Yahoo Tab', obj.sCurrentModuleName);
};
