/**
 * @author Ananda S. Wickramaarachchi
 */

if (Vms == undefined) {
	var Vms = {};
}
Vms.Core= {};

/*
 * Create XMLHTTP Object
 */

Vms.Core.XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

Vms.Core.createXMLHTTPObject= function() {
	var xmlhttp = false;
	for (var i=0;i<Vms.Core.XMLHttpFactories.length;i++) {
		try {
			xmlhttp = Vms.Core.XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}


Vms.Core.sendRequest= function(url,callback,postData) {
	if (!Vms.Core.requestObject) {
		Vms.Core.requestObject= Vms.Core.createXMLHTTPObject();
	}

	
	if (!Vms.Core.requestObject) return;
	
	var method = (postData) ? "POST" : "GET";
	
	Vms.Core.requestObject.open(method,url,true);
	Vms.Core.requestObject.setRequestHeader('User-Agent','XMLHTTP/1.0');
	if (postData)
		Vms.Core.requestObject.setRequestHeader('Content-type','application/x-www-form-urlencoded');
		
	Vms.Core.requestObject.onreadystatechange = function () {
		if (Vms.Core.requestObject.readyState != 4) return;
		if (Vms.Core.requestObject.status != 200 && Vms.Core.requestObject.status != 304) {
			return;
		}
		
		callback(Vms.Core.requestObject);
	}
	if (Vms.Core.requestObject.readyState == 4) return;
	Vms.Core.requestObject.send(postData);
}