// You can substitute the ID of the anchor that switches styles here.
var switchStyleID = "switch-style";

addLoader(initMenu);
addLoader(initStyleSwitcher)

/**
 *  Stylesheet Switcher
 *
 *  This allows the switching of a stylesheet on any link with id="switch-style"
 */

function initStyleSwitcher()
{
	var anchor = get(switchStyleID);
	
	if (anchor) {
		anchor.onclick = makePrinterFriendly;
	}
}

function makePrinterFriendly()
{
	var links = document.getElementsByTagName("link");
	
	for (var i = 0; i < links.length; i++) {
		if (links[i].getAttribute("rel") == "stylesheet") {
			if (links[i].getAttribute("media") && links[i].getAttribute("media") == "print") {
				var newLink = document.createElement("link");
				newLink.setAttribute("rel", "stylesheet");
				newLink.setAttribute("type", "text/css");
				newLink.setAttribute("media", "screen");
				newLink.setAttribute("href", links[i].getAttribute("href"));
				document.getElementsByTagName("head")[0].appendChild(newLink);
			}
		}
	}
	
	var undoLink = document.createElement("a");
	undoLink.appendChild(document.createTextNode("Close Print View"));
	undoLink.onclick = makeScreenFriendly;
	undoLink.setAttribute("href", "#");
	undoLink.setAttribute("id", "undo-link");
	undoLink.style.display = "block";
	
	document.getElementsByTagName("body")[0].appendChild(undoLink);
	
	return false;
}

function makeScreenFriendly()
{
	window.location.reload();
	
	return false;
}

/**
 *  Menu Functions
 *
 *  These functions fix menu support on IE.
 */

function initMenu() {			
	
	var mainNavigation = document.getElementById("nav");
	var items = mainNavigation.getElementsByTagName("li");
	
	for (var i = 0; i < items.length; i++) {
		addEvent(items[i], "mouseover", openMenu);
		addEvent(items[i], "mouseout", closeMenu);
	}
}

function openMenu()
{
	if (this.className == "first") {
		this.className = "first active";
	} else {
		this.className = "active";
	}
}

function closeMenu()
{
	if (this.className == "first active") {
		this.className = "first";
	} else {
		this.className = "";
	}
}

/**
 *  Utility Functions
 *
 *  These functions are just here to help.
 */

// Adds an event handler to an element
function addEvent(element, type, handler)
{
    if (element.addEventListener) {
        element.addEventListener(type, handler, false);
    } else if (element.attachEvent) {
        element["e" + type + handler] = handler;
        element[type + handler] = function() { element["e" + type + handler](window.event); }
        element.attachEvent("on" + type, element[type + handler]);
    }
}

// Removes an event handler from an element
function removeEvent(element, type, handler)
{
    if (element.removeEventListener) {
        element.removeEventListener(type, handler, false);
    } else if (element.detachEvent) {
        element.detachEvent("on" + type, element[type+handler]);
        element[type+handler] = null;
    }
}

// Add a "loader" event to be called on page load
function addLoader(loader) { addEvent(window, "load", loader); }

// Simplifies the document.getElementById idiom
function get(element)
{
	if (document.getElementById) {
		return document.getElementById(element);
	}
}