
var homepageNavLinks = new Array("projects", "resume", "contact");
var listingNavLinks = new Array("projects", "resume", "contact");

/****************************************
	INIT
*****************************************/


function init() {
	_applyPopupHandling();
	_preloadNavImages();
}

function _applyPopupHandling() {
	var poppingLinks = document.getElementsByAttribute("target", "_blank");
	for(var i=0;i<poppingLinks.length;i++) {
		var link = poppingLinks[i];
		link.onclick = function() {
			window.open(this.href, "_blank", "width=1000,height=700,resizable=yes,location=yes,status=no,personalbar=no,scrollbars=yes");
			this.blur();
			return false;
		}
		link.className = "poppingLink";
	}
}

function _preloadNavImages() {
	for(var i=0;i<homepageNavLinks.length;i++) {
		preloadImage("/i/hdr_" + homepageNavLinks[i] + "_blur.gif");
	}

	for(var i=0;i<listingNavLinks.length;i++) {
		preloadImage("/i/hdr_" + listingNavLinks[i] + "_blur.gif");
	}
}

addWindowEvent("onload", init);


/****************************************
	MAIN UI
*****************************************/

function homepageNavHover(link, toggleOn) {

	// Wrap in try-catch in case event fires before library loaded
	try {

		if(typeof link == "undefined") return;

		var toggleOn = (typeof toggleOn == "undefined")?true:toggleOn;

		var linkId = link.id;

		for(var i=0;i<homepageNavLinks.length;i++) {
			var otherLink = homepageNavLinks[i];
			var otherLinkId = "homepage-nav-" + otherLink;

			if(linkId != otherLinkId) {
				var otherLinkObj;
				if(otherLinkObj = $(otherLinkId)) {
					var img = otherLinkObj.childNodes[0];
					var newSrc = "i/hdr_" + otherLink + (toggleOn?"_blur":"") + ".gif";
					img.src = newSrc;
				}
			}
		}
	} catch(e) {}
}

function homepageNavUnhover(link) {

	return homepageNavHover(link, false);
}


function navHover(link, toggleOn) {
	// Wrap in try-catch in case event fires before library loaded
	try {
		if(typeof link == "undefined") return;

		var toggleOn = (typeof toggleOn == "undefined")?true:toggleOn;

		var linkId = link.id;


		for(var i=0;i<listingNavLinks.length;i++) {
			var otherLink = listingNavLinks[i];
			var otherLinkId = "nav-" + otherLink;

			if(linkId != otherLinkId) {
				var otherLinkObj;
				if(otherLinkObj = $(otherLinkId)) {

					// Don't touch nav images merely wrapped in a SPAN, as these are disabled nav links
					if(otherLinkObj.tagName != "A") continue;

					var img = otherLinkObj.childNodes[0];
					var newSrc = "/i/nav_" + otherLink + (toggleOn?"_blur":"") + ".gif";
					img.src = newSrc;
				}
			}
		}
	} catch(e) {}
}

function navUnhover(link) {
	return navHover(link, false);
}

var _preloadedImages = {};
function preloadImage(src) {
	_preloadedImages[src] = new Image();
	_preloadedImages[src].src = src;
}

function swapImage(elem, src) {
	elem.src = src;
}


/****************************************
	DOM UTILS
*****************************************/

document.getElementsByClass = function (className) {
	return this.getElementsByAttribute("class", className);
}

document.getElementsByAttribute = function (attributeName, attributeValue) {
	function _GetElementsByClass(outArray, seed, attributeName, attributeValue) {
		while (seed) {
			if (seed.nodeType == 1) {
				if (seed[attributeName]) {
					var c = " " + seed[attributeName] + " ";
					if (c.indexOf(" " + attributeValue + " ") != -1)
					outArray.push(seed);
				}
				_GetElementsByClass(outArray, seed.firstChild, attributeName, attributeValue)
			}
			seed = seed.nextSibling;
		}
	}
	var outArray = new Array();
	_GetElementsByClass(outArray, document.documentElement, attributeName, attributeValue);
	return outArray;
}


// extension of an idea from simon willison
// http://simon.incutio.com/archive/2004/05/26/addLoadEvent
// adds function call to an arbitrary window event trigger
function addWindowEvent(event_name, function_to_add) {
	var current_event = window[event_name];

	if (typeof(current_event) != 'function') {
		window[event_name] = function_to_add;

	} else {
		window[event_name] = function() {
			current_event();
			function_to_add();
		};
	}
}


function $(id) {
	var obj = document.getElementById(id);

	if(typeof obj != "undefined")
		return obj;
	else
		return false;
}


/****************************************
	DBG
*****************************************/

var dbgDiv;
function dbg(str) {
	if(!dbgDiv) {
		dbgDiv = document.createElement("DIV");
		document.body.appendChild(dbgDiv);
	}

	var p = document.createElement("P");
	p.innerHTML = "- " + str;
	dbgDiv.appendChild(p);
}

