
/*
onDomReady : Runs a specified function when DOM is loaded

@param {String} func : The name of the function to be called
	You may also include parameters to be passed to the function e.g. onDomReady(myFunction(param1,param2));
	This can also be a function literal as in onDomReady(function() { more code to run on page load });

Source : brothercake's domFunction: http://www.brothercake.com/site/resources/scripts/domready/
	and Dave Rolsky's DOM.Ready: http://www.openjsan.org/doc/a/au/autarch/DOM/Ready/0.14/lib/DOM/Ready.html
*/

function onDomReady(func) {
	var t = setInterval( function() {
		if ( typeof document.getElementsByTagName != "undefined" && typeof document.getElementById != "undefined" && ( document.getElementsByTagName( "body" )[0] != null || document.body != null ) ) {
			if ( typeof func == "function" ) {
				func();
				clearInterval(t);
			}
		}
	}, 250 );
}

/*
activateActiveX : Activates ActiveX content for Internet Explorer 6.0+ to avoid requiring a user to click before using an object

Source : http://sixtwothree.org/blog/archives/2006/05/07/activateactivex-a-standards-based-solution-to-internet-explorers-active-content-woes/
*/

function activateActiveX() {
	if ( !document.getElementsByTagName || !document.body.outerHTML || !document.compatMode ) return false;
	var elems = new Array( "object", "applet" );
	for ( i = 0, j = elems.length; i < j; i++ ) {
		var objects = document.getElementsByTagName(elems[i]);
		for ( k = 0, l = objects.length; k < l; k++ ) {
			var params = "";
			for ( m = 0, n = objects[k].childNodes.length; m < n; m++ ) {
				params += objects[k].childNodes[m].outerHTML;
			}
			objects[k].outerHTML = objects[k].outerHTML.replace( "</" + elems[i].toUpperCase() + ">", params + "</" + elems[i].toUpperCase() + ">" );
		}
	}
}

onDomReady(activateActiveX);


/* Source : http://muffinresearch.co.uk/archives/2006/04/29/getelementsbyclassname-deluxe-edition/ */
function getElementsByClassName(strClass, strTag, objContElm) {
	strTag = strTag || "*";
	objContElm = objContElm || document;
	var objColl = (strTag == '*' && document.all) ? document.all : objContElm.getElementsByTagName(strTag);
	var arr = new Array();
	var delim = strClass.indexOf('|') != -1  ? '|' : ' ';
	var arrClass = strClass.split(delim);
	for (i = 0, j = objColl.length; i < j; i++) {
	var arrObjClass = objColl[i].className.split(' ');
		if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
		var c = 0;
		comparisonLoop:
		for (k = 0, l = arrObjClass.length; k < l; k++) {
			for (m = 0, n = arrClass.length; m < n; m++) {
				if (arrClass[m] == arrObjClass[k]) c++;
				if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
					arr.push(objColl[i]);
					break comparisonLoop;
				}
			}
		}
	}
	return arr;
}

/* ----- window.onload rewriting function ------------------------------- */
function addLoadEvent( func ) {
	var oldonload = window.onload;
	if ( typeof window.onload != "function" ) {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

function displayBios() {
	packages = document.getElementsByClassName("expandWrapper");
	details = document.getElementsByClassName("expandDetails");
	togglers = document.getElementsByClassName("expandLink");

	for ( var i=0; i<packages.length; i++ ) {
		Effect.BlindUp(details[i]);
		togglers[i].firstChild.onclick = function() {
			
			divs = this.parentNode.parentNode.getElementsByTagName("DIV");
			for ( var j=0; j<divs.length; j++ ) {
				if (divs[j].className == "expandDetails")
					Effect.BlindUpAndDown(divs[j]);
			}
	
			if ( this.lastChild.nodeValue == "View Full Bio" ) {
				this.lastChild.nodeValue = 'Close Bio';
			}
			else {
				this.lastChild.nodeValue = 'View Full Bio';
			}
			return false;
		}
	}
}

function displayYear() {
	packages = document.getElementsByClassName("expandWrapper");
	details = document.getElementsByClassName("expandDetails");
	togglers = document.getElementsByClassName("expandLink");

	for ( var i=0; i<packages.length; i++ ) {
		Effect.BlindUp(details[i]);
		togglers[i].firstChild.onclick = function() {
			
			divs = this.parentNode.parentNode.getElementsByTagName("DIV");
			for ( var j=0; j<divs.length; j++ ) {
				if (divs[j].className == "expandDetails")
					Effect.BlindUpAndDown(divs[j]);
			}
	
			return false;
		}
	}
}

function WindowOnload(f) {
	var prev=window.onload;
	window.onload=function(){ if(prev)prev(); f(); }
}