


(function () {
     function toArray(pseudoArray) {
         var result = [];
         for (var i = 0; i < pseudoArray.length; i++)
             result.push(pseudoArray[i]);
         return result;
     }

     Function.prototype.bind = function (object) {
         var method = this;
         var oldArguments = toArray(arguments).slice(1);
         return function (argument) { if (argument == nullObject) {
            method = null;
            oldArguments = null;
        } else if (method == null) {
            throw "Attempt to invoke destructed method reference.";
        } else {
            var newArguments = toArray(arguments);
            return method.apply(object, oldArguments.concat(newArguments));
        }

         };
     }

     Function.prototype.bindEventListener = function (object) {
         var method = this;
         var oldArguments = toArray(arguments).slice(1);
         return function (event) {
             return method.apply(object, event || window.event, oldArguments);
         };
     }
})();

function nullObject(){

};

function updater(){
	this.xmlhttp =createXMLHTTPObject();
}


updater.prototype.sendARequest = function(url,callback,postData)
{
	var req = createXMLHTTPObject();
	if (!req) return;
	var method ="";
	if(postData){
		method = "POST"
	}else{
		method = "GET"
		url += "&" + Math.random(10);
	}
	req.open(method,url,true);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	if (postData) req.setRequestHeader('Content-type','application/x-www-form-urlencoded');

	req.onreadystatechange = function () {
		if (req.readyState != 4) return;
		if (req.status != 200 && req.status != 304) {
			return;
		}
		if(callback) callback(req);
	}
	if (req.readyState == 4) return ;
	req.send(postData);
}



var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0;i<XMLHttpFactories.length;i++) {
		try {
			xmlhttp = XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}




