

// deal with xmlhttp on IE < 7
if(!window.XMLHttpRequest) {
	function XMLHttpRequest() {
		var vs = ['MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
		for(var i = 0; i < 6; i++)
		{
			try {
				return new ActiveXObject(vs[i]);
			} catch(e) { }
		}
		return null;
	}
}
// part of this fixEvent function by jQuery
function fixEvent(event) {
	
	if(!event) {
		event = window.event;
	}
	
	// fix preventDefault and stopPropagation
	if (!event.preventDefault)
		event.preventDefault = function() {
			this.returnValue = false;
		};

	if (!event.stopPropagation)
		event.stopPropagation = function() {
			this.cancelBubble = true;
		};

	return event;
}

//*** This code is copyright 2003 by Gavin Kistner, gavin@refinery.com
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
//*** Reuse or modification is free provided you abide by the terms of that license.
//*** (Including the first two lines above in your source code satisfies the conditions.)


//***Cross browser attach event function. For 'evt' pass a string value with the leading "on" omitted
//***e.g. addEvent(window,'load',MyFunctionNameWithoutParenthesis,false);

function addEvent(obj,evt,fnc){
	if(obj) {
		if (obj.addEventListener){
			obj.addEventListener(evt,fnc,false);
			return true;
		} else if (obj.attachEvent) {
			return obj.attachEvent("on"+evt,fnc);
		} else {
			MyAttachEvent(obj,evt,fnc);
			obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
		}
	}
} 

//The following are for browsers like NS4 or IE5Mac which don't support either
//attachEvent or addEventListener
function MyAttachEvent(obj,evt,fnc){
	if (!obj.myEvents) obj.myEvents={};
	if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
	var evts = obj.myEvents[evt];
	evts[evts.length]=fnc;
}
function MyFireEvent(obj,evt){
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) evts[i]();
}
