function preloadImage () { 
	var args = preloadImage.arguments; 
	imgs = new Array();
	for(x=0; x < args.length; x++) {
		imgs[x] = new Image();
		imgs[x].src = args[x];
	}
}

//use browser sniffing to determine if IE or Opera (ugly, but required)
var isOpera, isIE = false;
browser = navigator.appName;
if (browser == "Microsoft Internet Explorer") 
	isIE = true;

if(typeof(window.opera) != 'undefined') {isOpera = true;}

//alert('Nav : '+navigator.appName);

//fix both IE and Opera (adjust when they implement this method properly)
if(isOpera || isIE){
	document.nativeGetElementById = document.getElementById;
	document.getElementById = function(id)
	{
		var elem = document.nativeGetElementById(id);
		if(elem)
		{
			//make sure that it is a valid match on id
			if(elem.id == id)
			{
				return elem;
			}
			else
			{
				//otherwise find the correct element
				for(var i=1;i<document.all[id].length;i++)
				{
					if(document.all[id][i].id == id)
					{
						return document.all[id][i];
					}
				}
			}
		}
		return null;
	};


document.getElementsByName = function(name, tag){
	if(!tag){
		tag = '*';
	}
	var elems = document.getElementsByTagName(tag);
	var res = []
	for(var i=0;i<elems.length;i++){
		att = elems[i].getAttribute('name');
		if(att == name) {
			res.push(elems[i]);
		}
	}
	return res;
}
}


/**
 * X-browser event handler attachment and detachment
 * TH: Switched first true to false per http://www.onlinetools.org/articles/unobtrusivejavascript/chapter4.html
 *
 * @argument obj - the object to attach event to
 * @argument evType - name of the event - DONT ADD "on", pass only "mouseover", etc
 * @argument fn - function to call
 */
function o2AddEvent (obj, evType, fn) {
 if (!obj) { return false; }
 if (obj.addEventListener != null){
	obj.addEventListener(evType, fn, false);
	return true;
 } else if (obj.attachEvent){
	var r = obj.attachEvent("on"+evType, fn);
	return r;
 } else {
	return false;
 }
}
function removeEvent(obj, evType, fn, useCapture){
  if (obj.removeEventListener){
	obj.removeEventListener(evType, fn, useCapture);
	return true;
  } else if (obj.detachEvent){
	var r = obj.detachEvent("on"+evType, fn);
	return r;
  } else {
	alert("Handler could not be removed");
  }
}