// adapted from http://www.hunlock.com/blogs/Are_you_ready_for_this

startStack=function() { };  // A stack of functions to run onload/domready

registerOnLoad = function(func) {
	var orgOnLoad = startStack;
	startStack = function () {
		orgOnLoad();
		func();
		return;
	}
}

var ranOnload=false; // Flag to determine if we've run the starting stack already.

if (document.addEventListener) {
	// seems to work for Firefox, Safari, Opera
	document.addEventListener("DOMContentLoaded", function(){if (!ranOnload) {ranOnload=true; startStack();}}, false);
	
} else if (document.all && !window.opera && typeof ie7_only != "undefined") {
	// For IE 7+ only
	document.write("<scr" + "ipt id='DOMReady' defer=true " + "src=//:><\/scr" + "ipt>"); 
	document.getElementById("DOMReady").onreadystatechange=function() {
		if (this.readyState=="complete"&&(!ranOnload)) {
			ranOnload=true;
			startStack();
		}
	}
} 
if (typeof ie6_only == "undefined") {
	// For OmniWeb; anybody else?
	var orgOnLoad = window.onload;
	window.onload = function() {
		if (typeof(orgOnLoad) == "function") {
			orgOnLoad();
		}
		if (!ranOnload) {
			ranOnload = true;
			startStack();
		}
	}
}

// borrowed from somewhere?

function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}	
	}
	return returnElements;
}


// website-specific initialization

function showShadowboxElements() {
	var allShadowboxElements = getElementsByClassName("hide shadowbox", "div", document);
	for(var i = 0; i < allShadowboxElements.length; i++) {
		allShadowboxElements[i].className = 'show shadowbox';
	}
}

function initShadowboxVideoLinks() {
	var allVideoLinks = getElementsByClassName("javascript-disabled", "a", document);
	for(var i = 0; i < allVideoLinks.length; i++) {
		allVideoLinks[i].className = 'play-video';
		allVideoLinks[i].href = '/video/' + allVideoLinks[i].id;
		allVideoLinks[i].removeAttribute("id");
	}
}

function ShadowboxOptions() {
Shadowbox.init({
		resizeDuration:'0.35',
		fadeDuration:'0.3',
		overlayOpacity:'0.7'
	});
}

if (typeof initSearchBox != "undefined") {
	registerOnLoad(initSearchBox);
}

if (typeof Shadowbox != "undefined") {
	registerOnLoad(initShadowboxVideoLinks);
	registerOnLoad(ShadowboxOptions);
	registerOnLoad(showShadowboxElements);
}
