function Tabs() {
	if ( document.getElementById ) {
		var p = new Poly9.URLParser(document.location.href); // parse the url, get the fragment after '#'
		var tabGroups = collectClass('tabGroup','div');
		if ( tabGroups.length > 0 ) {
			var tabs = collectClass('tabTab','div');
			if ( tabs.length > 0 ) {
				doTabs(tabGroups,tabs);
			}
			if (p.getFragment()) {
				str = p.getFragment() + "Open";
				swapTab(str);
			}
		}
	}
}
link = new Array();
function doTabs(tabGroups, tabs) {
	link = prepareTabGroups(tabGroups,tabs); // newDiv, group.id, tab.id
	loadTabs(tabGroups,link);
}
function prepareTabGroups(tabGroups,tabs) {
	var link = new Array();
	var string = "";
	for (var i = 0; i < tabGroups.length; i++) {
		tabGroups[i].className = "tabGroup clearfix";
		tabGroups[i].id = "tabGroup-" + i;
	}
	for (var z = 0; z < tabs.length; z++) {
		thisNode = tabs[z];
		stringTemp = thisNode.parentNode.getElementsByTagName('h2')[0].innerHTML + ' ' + thisNode.getElementsByTagName('h3')[0].innerHTML + "Open";
		stringTemp = stringTemp.replace(/ /g,'');
		thisNode.id = stringTemp;
		// thisNode.id = "tabTab-" + z;
		thisArray = prepareTabNavigation(thisNode,z); // newDiv, group.id, tab.id
		link.push(thisArray);
		tabs[z].className = "tabTab clearfix hide";
	}
	for (var i = 0; i < tabGroups.length; i++) {
		parentDiv = tabGroups[i];
		var newDiv = document.createElement("div");
		// newDiv.setAttribute('style','clear:both');
		newDiv.style.cssText = 'clear:both;';
		sibling = parentDiv.getElementsByTagName('div');
		sibling = sibling[0];
		addElement(sibling,newDiv,parentDiv);
		buildTabNavigation(link,parentDiv);
	}
	return link;
}
function prepareTabNavigation(thisNode,z) {
	thisParent = thisNode.parentNode;
	h3s = thisNode.getElementsByTagName('h3');
	thisH3 = h3s[0];
	group = document.getElementById(thisParent.id);
	newDiv = document.createElement("div");
	newDiv.id = "tabLinkDiv-" + z;
	newDiv.className = "tabHead inactive";
  newDiv.innerHTML = '<a id="tabLink-' + z + '" href="#' + thisNode.id.replace('Open','') + '" onclick="swapTab(' + "'" + thisNode.id + "'" + ');">' + thisH3.innerHTML + '</a>';
	removeElement(thisNode,thisH3);
	thisArray = new Array();
	thisArray.push(newDiv);
	thisArray.push(thisParent.id);
	thisArray.push(thisNode.id);
	return thisArray;
}
function buildTabNavigation(tabGroupLinkArray,parent) {
	for (var z = tabGroupLinkArray.length-1 ; z >= 0 ; z--) {
		groupID = tabGroupLinkArray[z][1];
		if (parent.id == groupID) {
			element = tabGroupLinkArray[z][0];
			sibling = parent.getElementsByTagName('div');
			sibling = sibling[0];
			addElement(sibling,element,parent);
		}
	}
}
function findFirstTabInGroup(groupID,link) {
	logic = 1;
	thisReturn = new Array();
	for (var i = 0; i < link.length; i++) {
		if (link[i][1] == groupID) {
			if (logic) {
				first = Array();
				first.push(link[i][0]);
				first.push(link[i][2]);
				logic = 0;
			}
			else {
				notFirst = new Array();
				notFirst.push(link[i][0]);
				notFirst.push(link[i][2]);
				thisReturn.push(notFirst);
			}
		}
	}
	r = new Array();
	r.push(first);
	r.push(thisReturn);
	return (r);
}
function findThisTabInGroup(tabID,groupID,link) {
	logic = 1;
	thisReturn = new Array();
	for (var i = 0; i < link.length; i++) {
		if (link[i][1] == groupID) {
			if (link[i][2] == tabID) {
				if (logic) {
					thisTab = new Array();
					thisTab.push(link[i][0]); // div
					thisTab.push(link[i][2]); // tab.id
					logic = 0;
				}
			}
			else {
				notThisTab = new Array();
				notThisTab.push(link[i][0]); // div
				notThisTab.push(link[i][2]); // tab.id
				thisReturn.push(notThisTab);
			}
		}
	}
	r = new Array();
	r.push(thisTab);
	r.push(thisReturn);
	return (r);
}
function findGroup(tab,link) {
	for (var i = 0; i < link.length; i++){
		if (link[i][2] == tab.id) {
			groupID = link[i][1];
			return groupID;
		}
	}
}
function loadTabs(groups,link) {
	for (var i = 0; i < groups.length; i++) {
		all = findFirstTabInGroup(groups[i].id,link);
		load = all[0];
		load[0].className = "tabHead active";
		load[1].className = "tabTab clearfix show";
		unload = all[1];  //newDiv, groupID
		for (z = 0; z < unload.length; z ++) {
			document.getElementById(unload[z][1]).className = "hide";
		}
	}
}
function swapTab(tabID) {
	if (document.getElementById(tabID)) {
		tab = document.getElementById(tabID);
		groupID = findGroup(tab,link);
		all = findThisTabInGroup(tab.id,groupID,link);
		load = all[0];
		load[0].className = "tabHead active";
		if(document.documentElement.blur) {
			load[0].blur();
		}
		document.getElementById(load[1]).className = "tabTab clearfix show";
		unload = all[1];  //newDiv, groupID
		for (z = 0; z < unload.length; z ++) {
			unload[z][0].className = "tabHead inactive";
			document.getElementById(unload[z][1]).className = "hide";
		}
		resize();
	}
}

