var d = document, dE = d.documentElement;

/* Style sheet switching
*******************************************************************************/

function setActiveStyleSheet(title) {
	var i, a, main;
	var found = 0;

	for (i = 0; (a = d.getElementsByTagName("link")[i]); i++) {
		if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
			a.disabled = true;
			if (a.getAttribute("title") == title) {
				a.disabled = false;
				found = 1;
			}
		}
	}

	if (found == 0) {
		title = getPreferredStyleSheet();
		if (title) {
			setActiveStyleSheet(title);
		}
	}
}

function getActiveStyleSheet() {
	var i, a;
	for (i = 0; (a = d.getElementsByTagName("link")[i]); i++) {
		if (a.getAttribute("rel").indexOf("style") != -1
		&& a.getAttribute("title") && !a.disabled) {
			return a.getAttribute("title");
		}
	}
	return null;
}

function getPreferredStyleSheet() {
	var i, a;
	for(i = 0; (a = d.getElementsByTagName("link")[i]); i++) {
		if (a.getAttribute("rel").indexOf("style") != -1
		&& a.getAttribute("rel").indexOf("alt") == -1
		&& a.getAttribute("title")) {
			return a.getAttribute("title");
		}
	}
	return null;
}

/* Dynamically load additional css files
*******************************************************************************/

function extraCSS() {
	if (d.getElementById && d.createAttribute) {
		var eHead = d.getElementsByTagName("head")[0];
		var eLink = d.createElement("link");

		eLink.type = "text/css";
		eLink.media = "screen, projection";
		eLink.href = "";
		eLink.rel = "stylesheet";
		eHead.appendChild(eLink);
	}
}

/* Styleswitcher UI
*******************************************************************************/

function addStyleswitcher() {
	var switcher = d.getElementById("barswitch");
	var buttons = switcher.getElementsByTagName("a");

	for (var i = 0, bL = buttons.length; i < bL; i++) {
		buttons[i].onclick = function() {
			this.blur();
			setActiveStyleSheet(this.hash.substring(1));
			return false;
		};
	}
}

/* Toggle Side Bar Panels
*******************************************************************************/

function toggleHandlers() {
	var sidebar = d.getElementById("sidebar");
	var panels = sidebar.getElementsByTagName("h2");

	for (var i = 1, pL = panels.length; i < pL; i++) {
		panels[i].parentNode.className = "panel-visible";
		panels[i].title = "Toggle this panel";
		panels[i].onclick = function() {
			this.parentNode.className =
				(this.parentNode.className == "panel-visible")
				? "panel-hidden"
				: "panel-visible";
		};

		if (typeof panels[i].parentNode.onselectstart != "undefined") {
			panels[i].parentNode.onselectstart = function() {
				return false;
			};
		}
	}
}

/* Perform on page load/unload
*******************************************************************************/

window.onload = function(e) {
	if (d.getElementById) {

		// Opera wont switch css sometimes unless we do it onload! POS!
		if (navigator.userAgent.indexOf('Opera') != -1) {
			init();
			//alert("Your browser sucks!!");
		}

		addStyleswitcher();
		extraCSS();
		toggleHandlers();
	}
};
