var gnReqVersion   = 8;  // Required flash version
var gnFlashVersion = deconcept.SWFObjectUtil.getPlayerVersion()['major'];  // Current flash version
var gaFlashReplace = new Array();  // Array to hold flash objects until ready to implement

/*** Standard Functions ***/
function getElementsByClassName(lcClassName) {
	var laElements = (document.body.all)? document.body.all : document.body.getElementsByTagName("*");
	var laReturnElements = new Array();
	var lcTest = new RegExp("(^|\\s)" + lcClassName.replace(/\-/g, "\\-") + "(\\s|$)");  // Build RegExp and escape '-'
	var loElement;
	for(var i = 0; i < laElements.length; i++) {
		loElement = laElements[i];
		if(lcTest.test(loElement.className)) {
			laReturnElements[laReturnElements.length] = loElement;  // Avoid 'push' method for IE 5.0
		};
	};
	return (laReturnElements);
};
/**************************/

/*** Replace 'new window' links ***/
function linkReplace() {
	var laLinks = getElementsByClassName("_blank");
	for(var i = 0; i < laLinks.length; i++) {
		laLinks[i].onclick = function() {
			window.open(this.getAttribute("href"));
			return false;
		}
	}	
}
/**********************************/

/*** Enable dropdown CSS menu ***/
function navHover() {
	if(navigator.vendor && navigator.vendor.indexOf("Apple") != -1) {  // Hide subnav due to poor safari flash implementation
		var laNavElements = getElementsByClassName("subnav")
		for (var i = 0; i < laNavElements.length; i++) {
			laNavElements[i].className = "subnav-hidden";
		}
	} else {
		var laNavElements = getElementsByClassName("nav")
		for (var i = 0; i < laNavElements.length; i++) {
			var laMenuElements = laNavElements[i].childNodes[0].childNodes;
			for (var j = 0; j < laMenuElements.length; j++) {
			if (laMenuElements[j].getElementsByTagName("div")[0]) {
					laMenuElements[j].onmouseover = function() {this.getElementsByTagName("div")[0].style.left = "auto";}
					laMenuElements[j].onmouseout = function() {this.getElementsByTagName("div")[0].style.left = "-9999em";}
				}
			}
		}
	}
}
/********************************/

/*** Replace flash elements ***/
function flashReplace(lcReplaceId, lcFlashUrl, lcWidth, lcHeight) {
	if(gnFlashVersion >= gnReqVersion && document.getElementById) {
		var so = new SWFObject(lcFlashUrl, lcReplaceId, lcWidth, lcHeight, gnReqVersion, "");
		gaFlashReplace[gaFlashReplace.length] = so;
	};
};
function doFlashReplace() {
	if(document.getElementById("flash-required")) document.getElementById("flash-required").style.display = "none";
	for (i = 0; i < gaFlashReplace.length; i++) {
		gaFlashReplace[i].addParam("wmode", "transparent");
		gaFlashReplace[i].write(gaFlashReplace[i].attributes.id);
	};
}
/******************************/

/*** Replace thumbnail link href and add onclick ***/
function thumbnailReplace() {
	if(gnFlashVersion >= gnReqVersion && document.getElementById && document.getElementById("thumbnails")) {
		// Set thumbnail links
		var laThumbnailLinks = document.getElementById("thumbnails").getElementsByTagName("a");
		for (i = 0; i < laThumbnailLinks.length; i++) {
			var lcHref = laThumbnailLinks[i].href;
			var lnImageId = lcHref.substring(lcHref.lastIndexOf("_")+1, lcHref.lastIndexOf("."));
			
			// Test for embed object first to see if Mozilla browser in use
			var lcFlashMovie = (document.getElementById('embed-model-image')) ? "document.getElementById('embed-model-image')" : "document.getElementById('object-model-image')";
			laThumbnailLinks[i].onclick = new Function(lcFlashMovie + ".SetVariable('gnNewId', '" + lnImageId + "');");
			laThumbnailLinks[i].href = "#portfolio";
		};
	};
};
/***************************************************/

/*** Setup functions to run after DOM is loaded ***/
function addDOMLoadEvent(func) {
	var oldOnDOMLoadEvents = window.onDOMLoadEvents;
	if(typeof window.onDOMLoad != "function") {
		window.onDOMLoadEvents = func;
	} else {
		window.onDOMLoadEvents = function() {
			if(oldOnDOMLoadEvents) {
				oldOnDOMLoadEvents();
			};
			func();
		};
	};
};
function onDOMLoad() {
	// quit if this function has already been called
	if (arguments.callee.done) return;
	// flag this function so we don't do the same thing twice    
	arguments.callee.done = true;
	if(typeof window.onDOMLoad == "function") onDOMLoadEvents();
};

if(document.addEventListener) document.addEventListener('DOMContentLoaded', onDOMLoad, false);

// for Internet Explorer (using conditional comments)
/*@cc_on @*/
/*@if (@_win32)
	document.write("<script id=\"IE_onDOMLoad\" defer src=\"javascript:void(0)\;\"><\/script>");
	var script = document.getElementById("IE_onDOMLoad");
	script.onreadystatechange = function() {
		if (this.readyState == "complete") {
			onDOMLoad(); // call the onload handler
		};
	};
/*@end @*/

/* for Safari */
if (/KHTML|WebKit/i.test(navigator.userAgent)) { // sniff
	var _timer = setInterval(function() {
		if (/loaded|complete/.test(document.readyState)) {
			onDOMLoad(); // call the onload handler
		}}, 1);
	};
	
/* for other browsers */
window.onload = onDOMLoad;
/**************************************************/

// set Loaded functions
addDOMLoadEvent(linkReplace);
addDOMLoadEvent(doFlashReplace);
addDOMLoadEvent(navHover);