var mainTabs = false;
var subTabs = new Array();

var mainTabIDs = new Array();
var subTabIDs = new Array();

var lastHash = document.location.hash;

var firstTab = false;

var lastSubTab = new Array();

$(document).ready(function(){
	if (mainTabs == false) return;
	
	$(mainTabs).tabs();
	
	for(subTab in subTabs)
	{
		subTab = subTabs[subTab];
		$(subTab).tabs();
	}
	
	$(mainTabs + " > ul:first li a").each(function(tabIndex){
		$(this).click(function(){
			openTab($(this).attr("href"));
			this.blur();
		});
		
		hashCode = normalizeHashCode($(this).attr("href"));
		mainTabIDs[hashCode] = tabIndex;
		
		if (firstTab==false) firstTab = hashCode;
	});
	
	for(subTab in subTabs)
	{
		subTab = normalizeHashCode(subTabs[subTab]);
		$('#'+subTab).tabs();
		
		subTabIDs[subTab] = new Array();
		lastSubTab[subTab] = "";
		
		$('#'+subTab + " > ul:first li a").each(function(tabIndex){
			$(this).click(function(){
				hashCode = normalizeHashCode($(this).attr("href"));
				lastSubTab[subTab] = hashCode;
				setSafeURLHash(subTab+"/"+hashCode);
				this.blur();
			});
			
			hashCode = normalizeHashCode($(this).attr("href"));
			subTabIDs[subTab][hashCode] = tabIndex;
		});
	}
	
	//openTab(document.location.hash, true);
	setTimeout('openTab(document.location.hash, true)',100);
	setInterval('monitorBF()',500);
});

function openTab(hashCode, scrollTop)
{
	hashCode = normalizeHashCode(hashCode);
	
	hashCode = (hashCode == "") ? firstTab : hashCode;
	
	setSafeURLHash(hashCode);
	
	hashCode = hashCode.replace(":","/");
	hashCode = hashCode.split("/");
	var mainTab = hashCode.shift();
	var subTab = hashCode.join("/");
	
	mainTab = normalizeHashCode(mainTab);
	
	$(mainTabs).tabs('select', mainTabIDs[mainTab]);
	
	if (subTabIDs[mainTab] !== undefined)
	{
		subTab = (subTab == "") ? lastSubTab[mainTab] : subTab;
		subTab = (subTab == "") ? 1 : subTabIDs[mainTab][subTab]+1;
		$("#"+mainTab+" > ul:first li:nth-child("+subTab+") a").click();
	}
	
	if (scrollTop) scrollTo(0,0);
}

function normalizeHashCode(hashCode)
{
	if (hashCode.substr(0,1)=="#") hashCode = hashCode.substr(1);
	
	return hashCode;
}

function setSafeURLHash(hashCode)
{
	hashCode = "#"+normalizeHashCode(hashCode);
	
	lastHash = hashCode;
	noSub = (hashCode.indexOf("/") < 0);
	
	var scrollLeft = $(document).scrollLeft();
	var scrollTop = $(document).scrollTop();
	
	if (noSub && (hashCode != "#") && (hashObject = $(hashCode)))
	{
		originalID = hashObject.attr("id");
		hashObject.attr("id",originalID+"-defuse");
		document.location.hash = hashCode;
		hashObject.attr("id",originalID);
	}
	else
	{
		document.location.hash = hashCode;
	}
}

function monitorBF()
{
	if (document.location.hash == lastHash) return;
	
	lastHash = document.location.hash;
	openTab(lastHash);
}
