var mainTabs = false;
var subTabs = new Array();

var lastHash = document.location.hash;

$(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(){
		$(this).click(function(){
			openTab($(this).attr("href"));
			this.blur();
		});
	});
	
	for(subTab in subTabs)
	{
		subTab = subTabs[subTab];
		$(subTab).tabs();
		
		$(subTab + " > ul:first li a").each(function(){
			$(this).click(function(){
				hashCode = normalizeHashCode($(this).attr("href"));
				openTab(subTab+"/"+hashCode);
				this.blur();
			});
		});
	}
	
	openTab(document.location.hash, true);
	setInterval('monitorBF()',500);
});

function openTab(hashCode, scrollTop)
{
	if (hashCode == "" || hashCode == "#")
	{
		$(mainTabs).tabs('select', 0);
		return;
	}
	
	setSafeURLHash(hashCode);
	
	hashCode = hashCode.split(":");
	if (hashCode.length > 1)
	{
		var mainTab = hashCode.shift();
		var subTab = hashCode.join(":");
	}
	else
	{
		hashCode = hashCode.join(":").split("/");
		var mainTab = hashCode.shift();
		var subTab = hashCode.join("/");
	}
	mainTab = normalizeHashCode(mainTab);
	
	var tabCounter = 0;
	$(mainTabs + " > ul:first li a").each(function(){
		if ("#"+mainTab == $(this).attr("href")) $(mainTabs).tabs('select', tabCounter);
		tabCounter++;
	});

	var tabCounter = 0;
	$("#"+mainTab + " > ul:first li a").each(function(){
		if ("#"+subTab == $(this).attr("href")) $("#"+mainTab).tabs('select', tabCounter);
		tabCounter++;
	});
	
	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);
}