/* load functions when dom finishes loading, not when images finish loading 
 * 
 * use <script defer="defer" type="text/javascript" src="load.js" id="loadedScript"></script>
 * to load file.  defer attibribute is IE specific to let script be after body content
 * is loaded
 * 
 */

if (/WebKit/i.test(navigator.userAgent)) { // safari
    var _timer = setInterval(function() {
        if (/loaded|complete/.test(document.readyState)) {
            clearInterval(_timer);
            loadall(); // call the onload handler
        }
    }, 10);
}	
else if (document.addEventListener) { //opera, mozilla
    document.addEventListener("DOMContentLoaded", loadall, false);
}
else { //ie
	var script = document.getElementById("loader");
    script.onreadystatechange = function() {
    if (this.readyState == "complete") {

        setTimeout('loadall()',250); // call the onload handler
      }
    };	
}


/**
 * dynamically load function name based on url.
 */ 
function loadall() {

	s = document.getElementById('loader'); //calling script tag
	if(s.src.match(/\?.*load=([a-z,]*)/)) {
		includes = s.src.substr(s.src.indexOf('?load=')+6).toString().split(','); //get list of items after load argument
		for(i=0;i< includes.length;i++) {try{eval(includes[i]+'()');}catch(e){}}
	}
}
/** 
 * try to add function to event, without replacing other functions already attached
 * @param {Object} obj object to add listener to
 * @param {Object} evType type of event to listen for
 * @param {Object} fn function to call when event is triggered
 */
function addEvent(obj, evType, fn){ 

	try{
		if (obj.addEventListener){ // most non ie
			obj.addEventListener(evType, fn, false); 			
			return true; 
		} else if (obj.attachEvent){ // IE
			var r = obj.attachEvent("on"+evType, fn); 
			return r; 
		} else { //anything else	
			try {
				var oldevent = eval("obj.on"+evType);
				if(typeof(oldevent) != 'function') {eval("obj.on"+evType+"=fn;");} 
				else {eval("obj.on"+evType+"=function(){oldevent();fn();}");}
			} catch(e) {return false;}
			return true;
		} 
	}catch(e){ return false; }
}
/**
 * create the AJAX request object
 * @return {Object} returns either an object to be used for AJAX requests or null
 */
function createRequestObject() {
	var req; //request object
	//attempt to create request object
	if(window.XMLHttpRequest){ // Firefox, Safari, Opera... 
		req = new XMLHttpRequest(); 
	} else if(window.ActiveXObject) { // Internet Explorer 5+ 
		req = new ActiveXObject("Microsoft.XMLHTTP"); 
	} else { // There is an error creating the object, return a flag to check for
		req = null;
	} 
	return req; 
}




