﻿var mxHeaderTabs = function() {};

mxHeaderTabs = {
	offsetLeft : 0,
	minOffsetLeft : 0,
	maxWidth : 0,
	tabsConnWidth : 0,
	maxScroll : 0,
	tabsMargin : 10,
	setp : 100,
	speed: 500,
	isLock : false,
	l : function() {
		var setp = mxHeaderTabs.setp;
		if($("#mxheadertabs-list").offset().left<mxHeaderTabs.minOffsetLeft||mxHeaderTabs.isLock)return false;
		if($("#mxheadertabs-list").offset().left-100<mxHeaderTabs.minOffsetLeft)
		setp = $("#mxheadertabs-list").offset().left - mxHeaderTabs.minOffsetLeft ;
		mxHeaderTabs.isLock = true;
		$("#mxheadertabs-list").animate({left : '-='+setp}, mxHeaderTabs.speed,function(){
		mxHeaderTabs.isLock = false;		 		
		});
	
	},
	r : function() {
		var setp =  mxHeaderTabs.setp;
		if($("#mxheadertabs-list").offset().left>mxHeaderTabs.offsetLeft||mxHeaderTabs.isLock)return false;
		if($("#mxheadertabs-list").offset().left+100>mxHeaderTabs.offsetLeft)
		setp = mxHeaderTabs.offsetLeft - $("#mxheadertabs-list").offset().left
		mxHeaderTabs.isLock = true;
		$("#mxheadertabs-list").animate({left : '+='+setp}, mxHeaderTabs.speed,function(){
					mxHeaderTabs.isLock = false;	
				});
	},
	getSumWidth : function(o) {
		var tabs = $("#mxheadertabs-list a");
		var nowLeft = $("#mxheadertabs-list").offset().left;
		var sumWidth = 0;
		var i=0;
		var oIndex = jQuery.inArray(o, tabs);
		tabs.each(function() {
					var tab = $(this).get(0);
					if (i<=oIndex)
					sumWidth += tab.offsetWidth
							+ mxHeaderTabs.tabsMargin;
					i++;
				})
		var scollWidth = mxHeaderTabs.offsetLeft - nowLeft ; 
		var leftStep = o.offsetLeft - scollWidth;
		var rightStep = o.offsetLeft - scollWidth - mxHeaderTabs.tabsConnWidth;
		
		if(leftStep<0){
		mxHeaderTabs.isLock = true;
		if(oIndex-1>=0)leftStep -= $(tabs.get(oIndex-1)).width()/2;
		$("#mxheadertabs-list").animate({left : '-='+leftStep}, mxHeaderTabs.speed,function(){
					mxHeaderTabs.isLock = false;	
				});
		return false;
		}
		
		if(rightStep<0&&Math.abs(rightStep)<$(o).width()){
		mxHeaderTabs.isLock = true;
		rightStep = $(o).width() + rightStep + mxHeaderTabs.tabsMargin;
		if(oIndex+1<=tabs.size()-1)rightStep += $(tabs.get(oIndex+1)).width()/2;
		$("#mxheadertabs-list").animate({left : '-='+rightStep}, mxHeaderTabs.speed,function(){
					mxHeaderTabs.isLock = false;	
				});
		return false;
		}
	},

	switchTab : function(o) {
		if (typeof(o) == 'string') {
			var tab = document.getElementById(o);
			mxHeaderTabs.setClass(tab);
			return false;
		}

		mxHeaderTabs.setClass(this);
	},
	setClass : function(o) {
		
		var tabs = $("#mxheadertabs-list a");
		tabs.each(function() {
					this.className = "";
					if(document.getElementById(this.id.replace("mxheadertabs_", "")))
					document.getElementById(this.id.replace("mxheadertabs_", "")).style.display="none"
					else this.style.display="none";
				});

		if (!o) {
			o = $("#mxheadertabs-list a").get(0);
		}
		o.className = "selected";
		Cookies.clear('mxheadertabs_'+wgPageName);
		Cookies.set('mxheadertabs_'+wgPageName,o.id);
		
		document.getElementById(o.id.replace("mxheadertabs_", "")).style.display="block";
		mxHeaderTabs.getSumWidth(o);
	},
	isShowButton : function() {

		if ($("#mxheadertabs").get(0).offsetWidth > mxHeaderTabs.maxWidth) {
			$('#mxheadertabs_pre').hide();
			$('#mxheadertabs_next').hide();
			return false
		} else {
			$('#mxheadertabs_pre').show();
			$('#mxheadertabs_next').show();

		}

		mxHeaderTabs.tabsConnWidth = $("#mxheadertabs .mxheadertabs-conn")
				.get(0).offsetWidth;
		mxHeaderTabs.offsetLeft = $("#mxheadertabs-list").offset().left;
		mxHeaderTabs.maxScroll = mxHeaderTabs.maxWidth
				- mxHeaderTabs.tabsConnWidth;
		mxHeaderTabs.minOffsetLeft = mxHeaderTabs.offsetLeft -  mxHeaderTabs.maxScroll;
		$('#mxheadertabs_pre').get(0).style.dispaly = "block";
		$('#mxheadertabs_pre').bind("click", mxHeaderTabs.r);
		$('#mxheadertabs_next').get(0).style.dispaly = "block";
		$('#mxheadertabs_next').bind("click", mxHeaderTabs.l);
	},
	isFromOtherPage : function() {
		var winHref = window.location.href;
		var winSearch = window.location.search;
		var tabid = '';
		if (winSearch.indexOf('tab=') != -1) {// from other page
			var parmArray = winSearch.substring(1).split('&');
			for (var i = 0; i < parmArray.length; i++)
				if (parmArray[i].indexOf("tab=") != -1)
					tabid = parmArray[i].replace("tab=", "");
		} else if(winHref.indexOf('#tab=')!= -1){
			var sp = winHref.indexOf('#tab=');
			if (sp == -1)
				return "";
			var resp = winHref.substring(sp).indexOf('=') + 1;
			var endsp = winHref.substring(sp).length;
			if (winHref.substring(sp).indexOf('?') != -1)
				endsp = winHref.substring(sp).indexOf('?')
			tabid = winHref.substring(sp).substring(resp, endsp);
		}else{
			tabid = Cookies.get('mxheadertabs_'+wgPageName);
			if(!tabid) return "";
			else return tabid;
			}
			
		tabid = "mxheadertabs_" + tabid;
		
		return tabid;
	},
	init : function() {
		if (!$("#mxheadertabs").get(0))
			return false;
		$("#mxheadertabs-content").get(0).style.display='none';	
		var st = 0;
		if($.browser.msie&&$("#floatbox_outer").size()>0){
			st = 14;
		};
		$("#mxheadertabs").get(0).style.width = $("#mxheadertabs").parent()
				.attr("offsetWidth")-st
				+ 'px';
		$("#mxheadertabs-content").get(0).style.display='block';
		var tabs = $("#mxheadertabs-list a");

		tabs.each(function() {
					var tab = $(this).get(0);
					$(this).bind("click", mxHeaderTabs.switchTab);
					tab.style.width = tab.offsetWidth + 'px';
					mxHeaderTabs.maxWidth += tab.offsetWidth
							+ mxHeaderTabs.tabsMargin;
				})

		mxHeaderTabs.isShowButton();
		var otherPageTabid = mxHeaderTabs.isFromOtherPage();
		if (otherPageTabid != '')
			mxHeaderTabs.switchTab(otherPageTabid)
		else
			mxHeaderTabs.setClass(tabs.get(0));
	}

}

$(function() {
			mxHeaderTabs.init();
		});