
// @author: Richard Herrera /Dan Pinnick
// @description: Tabbed Interface
var EnableTabs = {
	init : function() {
		var container = getElementsByClassName(document, "*", "tabbedFields");
		if (!container) return;
		
		/* If Safari, return. Safari supports this code,
		   but because of its Flash z-index bug,
		   it makes more sense to no show the drop down. */
		//if (/KHTML|WebKit/i.test(navigator.userAgent)) return true;

		for (var i = 0; i < container.length; i++) {
			ClassName.add(container[i], "enabled");

			var menu, links, tabbers;
			menu = getElementsByClassName(container[i], "*", "tabMenu")[0];
			tabbers = getElementsByClassName(container[i], "*", "tabContent");

			links = menu.getElementsByTagName("a");
			for (var k = 0; k < links.length; k++) {

				if (ClassName.test(links[k].parentNode, "focus", true)) ClassName.add(tabbers[k], "show");
				else ClassName.add(tabbers[k], "hide");

				links[k].onclick = function() { return EnableTabs.onclick(this); };

				var trigger = tabbers[k].getElementsByTagName("a");
				for (var l = 0; l < trigger.length; l++) {
					if (ClassName.test(trigger[l], "closeThisTab", true)) {
						trigger[l].onclick = function() {
							ClassName.replace(this.parentNode, "show", "hide");
							ClassName.remove(getElementsByClassName(menu, "li", "focus")[0], "focus");
							return false;
						};
					}
				}
			}
		}
	},
	onclick : function(e) {
		var f = e.parentNode.parentNode.getElementsByTagName("a");
		var g = getElementsByClassName(e.parentNode.parentNode.parentNode.parentNode, "*", "tabContent");

		for (var k = 0; k < f.length; k++) {
			if (f[k] == e) {
				if (ClassName.test(e.parentNode.parentNode.parentNode.parentNode, "collapse", true)) {
					if (!(ClassName.test(f[k].parentNode, "focus"))) ClassName.replace(g[k], "hide", "show");
					else {
						ClassName.replace(g[k], "show", "hide");
						ClassName.remove(f[k].parentNode, "focus");
						return false;
					}
				}
				else {
					ClassName.replace(g[k], "hide", "show");
				}
			}
			else {
				ClassName.replace(g[k], "show", "hide");
				ClassName.remove(f[k].parentNode, "focus");
			}
		}
		ClassName.add(e.parentNode, "focus");

		for (var l = 0; l < g.length; l++) {
			if (ClassName.test(g[l], "show", true)) {
				var target = g[l].getElementsByTagName("input")[0] ? g[l].getElementsByTagName("input")[0] : g[l].getElementsByTagName("select")[0];
				if (!target) break;
				else target.focus();
			}
		}
		return false;
	}
};
DomLoaded.load(EnableTabs.init);

// @author: Richard Herrera / Dan Pinnick
// @description: Style Zebra Tables
var ZebraTables = function() {
	// Style All Tables
	//var table = document.getElementsByTagName("table");

	// Style Specific Tables
	var table = getElementsByClassName(document, "table", "zebra");

	if (!table) return;

	for (var i = 0; i < table.length; i++) {
		var tbody = table[i].getElementsByTagName("tbody");
		if (tbody) {
			for (var j = 0; j < tbody.length; j++) {
				var tr = tbody[j].getElementsByTagName("tr");
				for (var k = 0; k < tr.length; k = (k + 2)) ClassName.add(tr[k], "alt");
			}
		} else {
			var tr = table[i].getElementsByTagName("tr");
			for (var j = 0; j < tr.length; j = (j + 2)) ClassName.add(tr[j], "alt");
		}
	}
};
DomLoaded.load(ZebraTables);

// @author: www.askthecssguy.com/Dan Pinnick
// @description: show hints
function prepareInputsForHints() {
	var el1, el2, el3;
	var inputs = document.getElementsByTagName("input");
	for (var i=0; i<inputs.length; i++){
		inputs[i].onmouseover = function () {
		el1 = getElementsByClassName(this.parentNode, "span", "hint")[0];
			if(el1){
				el1.style.display = "inline";
			}
		}
		inputs[i].onmouseout = function () {
			if(el1){
				el1.style.display = "none";
			}
		}
 	}
	var selects = document.getElementsByTagName("select");
	for (var j=0; j<selects.length; j++){
		selects[j].onmouseover = function () {
		el2 = getElementsByClassName(this.parentNode, "span", "hint")[0];
			if(el2){
				el2.style.display = "inline";
			}
		}
		selects[j].onmouseout = function () {
			if(el2){
				el2.style.display = "none";
			}
		}
 	}
	var textareas = document.getElementsByTagName("textarea");
	for (var k=0; k<textareas.length; k++){
		textareas[k].onmouseover = function () {
		el3 = getElementsByClassName(this.parentNode, "span", "hint")[0];
			if(el3){
				el3.style.display = "inline";
			}
		}
		textareas[k].onmouseout = function () {
			if(el3){
				el3.style.display = "none";
			}
		}
 	}
}
//DomLoaded.load(prepareInputsForHints);
AddEvent(window,"load", prepareInputsForHints);

// @author: John Doe
// @description: ShowHide
function fixLinks() {
	var toc;
	if((toc = document.getElementById("toc")) != null) {
		var anchors = toc.getElementsByTagName("a");
		for (var i = 0; i < anchors.length; i++) {
			var a = anchors[i];
			var href = a.href;
			if(href.indexOf("#") != -1) {
				var index = href.indexOf("#") + 1;
				//a.innerHTML = (a.innerHTML == "Hide Description") ? "Hide Description" : "Show Description";
	 			var text = a.innerHTML.replace("View","");
				//a.innerHTML = (a.innerHTML.indexOf("Hide")>0) ? a.innerHTML : "Hide " + text;
				href = "javascript:toggle('" + href.substring(index) + "');";
				a.setAttribute("href", href);
			}
		}
	}
}

function toggle(what) {
 var toc = document.getElementById("toc");
 var el = document.getElementById(what);
 var uls = toc.getElementsByTagName("ol");
 var divs = (toc.getElementsByTagName("ol").length > 1) ?toc.getElementsByTagName("ol") :toc.getElementsByTagName("dd") ;
 var num = what.substring(6,what.length);
 var trigger = document.getElementById("trigger"+num);
 var target = document.getElementById("target"+num);
  for(var i = 0;i<divs.length; i++) {
    var div = divs[i];
	var id = div.id;
	if (id == what){
		target.style.display = (target.style.display == "none" || target.offsetWidth==0) ? "block" : "none";
		var theInner = trigger.innerHTML;
	// var text = theInner.replace("Show","");
		//trigger.innerHTML = (trigger.innerHTML == "Show Description") ? "Hide Description" : "Show Description";
		trigger.innerHTML = (trigger.innerHTML.indexOf("View")>-1) ? "Hide " + theInner.replace("View","") : "View " + theInner.replace("Hide","");
		
		trigger.className=(trigger.className=="arrow_hide") ? "arrow_show" : "arrow_hide";
    }
  }
}
DomLoaded.load(fixLinks);

// @author: rox
// @description: osx ff2 css opacity + flash wmode transparent doesn't work- for site menu
function fixMacOpacity() {
	var userAgent = navigator.userAgent.toLowerCase();
	if (userAgent.indexOf("mac") != -1 && userAgent.indexOf("firefox")!=-1) {
     
 		var sitenav = document.getElementById("siteNav");
		if (sitenav) {
				var uls = sitenav.getElementsByTagName("ul");					
					for (var k = 0; k < uls.length; k++) {
						ClassName.add(uls[k], "firefox");
					
					
					}
		}
									
   }
}
DomLoaded.load(fixMacOpacity);