function AjaxWorker(remoteTarget, customRequestHandler) { this.sendRequest = sendRequest; this.createRequestObject = createRequestObject; this.remoteTarget = remoteTarget; this.customRequestHandler = customRequestHandler; this.request = createRequestObject(); this.requestHandler = requestHandler; } function requestHandler() { if(this.request.readyState == 4) { this.customRequestHandler(); } } function createRequestObject() { if (navigator.appName == "Microsoft Internet Explorer") { return new ActiveXObject("Microsoft.XMLHTTP"); } else { return new XMLHttpRequest(); } } function sendRequest(reqParams) { this.request.open('get', this.remoteTarget + "?" + reqParams); this.request.onreadystatechange = createMethodReference(this, "requestHandler"); this.request.send(null); } function createMethodReference(object, methodName) { return function () { object[methodName].apply(object, arguments); }; }