function HttpClient(){ } HttpClient.prototype={ requestType:'GET', isAsync:false, xmlhttp:false, callback:false, dest:'', onSend:function(){ // document.getElementById('statusMessage').innerHTML = 'Loading ...'; }, onload:function(){ // document.getElementById('statusMessage').innerHTML = ' '; }, onError:function(error){ alert(error); }, init:function(){ try { this.xmlhttp = new XMLHttpRequest(); }catch(e){ var XMLHTTP_IDS = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'); var success = false; for(var i=0;i < XMLHTTP_IDS.length && !success; i++){ try{ this.xmlhttp = new ActiveXObject(XMLHTTP_IDS[i]); success = true; }catch(e){} } if(!success){ this.onError('Unable to create XMLHttpRequest.'); } } }, makeRequest: function(url, payload){ if (!this.xmlhttp){ this.init(); } this.xmlhttp.open(this.requestType, url, this.isAsync); var self = this; this.xmlhttp.onreadystatechange = function(){ self._readyStateChangeCallback(); } this.xmlhttp.send(payload); if(!this.isAsync){ return this.xmlhttp.responseText; } }, makeFormRequest: function(url, payload, form){ if (!this.xmlhttp){ this.init(); } var xParam = this.getquerystring(form); url += (xParam.length > 0)?'?' + xParam:''; this.xmlhttp.open(this.requestType, url, this.isAsync); var self = this; this.xmlhttp.onreadystatechange = function(){ self._readyStateChangeCallback(); } this.xmlhttp.send(payload); if(!this.isAsync){ return this.xmlhttp.responseText; } }, _readyStateChangeCallback:function(){ switch(this.xmlhttp.readyState){ case 2: this.onSend(); break; case 4: this.onload(); if(this.xmlhttp.status == 200){ this.callback(this.xmlhttp.responseText); }else{ this.onError('HTTP Error Making Request: ' + '[' + this.xmlhttp.status + ']' + this.xmlhttp.statusText); } break; } }, getquerystring:function(formname){ var form = document.forms[formname]; var qstr = ""; function GetElemValue(name, value){ qstr += (qstr.length > 0 ? "&" : "") + escape(name).replace(/\+/g, "%2B") + "=" + escape(value ? value : "").replace(/\+/g, "%2B"); //+ escape(value ? value : "").replace(/\n/g, "%0D"); } var elemArray = form.elements; for (var i = 0; i < elemArray.length; i++){ var element = elemArray[i]; var elemType = element.type.toUpperCase(); var elemName = element.name; if (elemName){ if(elemType == "TEXT" || elemType == "TEXTAREA" || elemType == "PASSWORD" || elemType == "BUTTON" || elemType == "RESET" || elemType == "SUBMIT" || elemType == "FILE" || elemType == "IMAGE" || elemType == "HIDDEN") GetElemValue(elemName, element.value); else if(elemType == "CHECKBOX" && element.checked) GetElemValue(elemName, element.value ? element.value : "On"); else if(elemType == "RADIO" && element.checked) GetElemValue(elemName, element.value); else if(elemType.indexOf("SELECT") != -1) for(var j = 0; j < element.options.length; j++){ var option = element.options[j]; if(option.selected) GetElemValue(elemName, option.value ? option.value : option.text); } } } return qstr; } }