| 
1
 | 
     1 //=========================================================================================================
 | 
| 
 | 
     2 function RemoteDataProvider(sUrl) {
 | 
| 
 | 
     3     this.iActiveRequests = 0;
 | 
| 
 | 
     4     this.sUrl = sUrl;
 | 
| 
 | 
     5 }
 | 
| 
 | 
     6 
 | 
| 
 | 
     7 //-------------------------------------------------------------------------------------------------------------
 | 
| 
 | 
     8 RemoteDataProvider.prototype.GetHttpObj = function() {
 | 
| 
 | 
     9     var oHttpObj = null;
 | 
| 
 | 
    10     try {
 | 
| 
 | 
    11         oHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
 | 
| 
 | 
    12     } catch(e) {
 | 
| 
 | 
    13         try {
 | 
| 
 | 
    14             oHttpObj = new ActiveXObject("Microsoft.XMLHTTP")
 | 
| 
 | 
    15         } catch(oc) {
 | 
| 
 | 
    16             oHttpObj = null;
 | 
| 
 | 
    17         }
 | 
| 
 | 
    18     }
 | 
| 
 | 
    19     if (!oHttpObj && typeof XMLHttpRequest != "undefined") {
 | 
| 
 | 
    20         oHttpObj = new XMLHttpRequest();
 | 
| 
 | 
    21     }
 | 
| 
 | 
    22     return oHttpObj; 
 | 
| 
 | 
    23 }
 | 
| 
 | 
    24 
 | 
| 
 | 
    25 //-------------------------------------------------------------------------------------------------------------
 | 
| 
 | 
    26 RemoteDataProvider.prototype.Request = function(sRequest, method) {
 | 
| 
 | 
    27     var oHttpObj = this.GetHttpObj();
 | 
| 
 | 
    28     if (null == oHttpObj) return;
 | 
| 
 | 
    29 
 | 
| 
 | 
    30     method = (!method) ? "GET" : "POST";
 | 
| 
 | 
    31     var sURL = (method == "GET") ? this.sUrl + "?" + sRequest : this.sUrl;        //alert(sURL);    
 | 
| 
 | 
    32     this.iActiveRequests++;
 | 
| 
 | 
    33     var oThis = this;
 | 
| 
 | 
    34     oHttpObj.onreadystatechange = function () {
 | 
| 
 | 
    35         if (oHttpObj.readyState == 4 && oHttpObj.status == 200) {
 | 
| 
 | 
    36             oThis.onSuccess(oHttpObj);
 | 
| 
 | 
    37             oThis.iActiveRequests--;    
 | 
| 
 | 
    38             oThis.onStop();    
 | 
| 
 | 
    39         } else if(oHttpObj.readyState == 4 && oHttpObj.status != 200) {
 | 
| 
 | 
    40             oThis.onError(oHttpObj);
 | 
| 
 | 
    41             oThis.iActiveRequests--;    
 | 
| 
 | 
    42             oThis.onStop();    
 | 
| 
 | 
    43         }
 | 
| 
 | 
    44     };
 | 
| 
 | 
    45     
 | 
| 
 | 
    46     if (oHttpObj.readyState != 0) oHttpObj.abort();
 | 
| 
 | 
    47     this.onStart();
 | 
| 
 | 
    48     oHttpObj.open(method, sURL, true);
 | 
| 
 | 
    49 //    oHttpObj.setRequestHeader('Cache-Control', 'no-cache');
 | 
| 
 | 
    50     var params = (method == "GET") ? null : sRequest;
 | 
| 
 | 
    51     if (params) {
 | 
| 
 | 
    52         oHttpObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 | 
| 
 | 
    53         oHttpObj.setRequestHeader("Content-length", params.length);
 | 
| 
 | 
    54         oHttpObj.setRequestHeader("Connection", "close");
 | 
| 
 | 
    55     }
 | 
| 
 | 
    56     oHttpObj.send(params);
 | 
| 
 | 
    57 }
 | 
| 
 | 
    58 
 | 
| 
 | 
    59 //-------------------------------------------------------------------------------------------------------------
 | 
| 
 | 
    60 RemoteDataProvider.prototype.onSuccess = function(obj) {
 | 
| 
 | 
    61     alert(["success:", this.iActiveRequests, obj.responseText]);
 | 
| 
 | 
    62 }
 | 
| 
 | 
    63 
 | 
| 
 | 
    64 //-------------------------------------------------------------------------------------------------------------
 | 
| 
 | 
    65 RemoteDataProvider.prototype.onStart = function() {
 | 
| 
 | 
    66 //    alert(["start:", this.iActiveRequests]);
 | 
| 
 | 
    67 }
 | 
| 
 | 
    68 
 | 
| 
 | 
    69 //-------------------------------------------------------------------------------------------------------------
 | 
| 
 | 
    70 RemoteDataProvider.prototype.onStop = function() {
 | 
| 
 | 
    71 //    alert(["start:", this.iActiveRequests]);
 | 
| 
 | 
    72 }
 | 
| 
 | 
    73 
 | 
| 
 | 
    74 //-------------------------------------------------------------------------------------------------------------
 | 
| 
 | 
    75 RemoteDataProvider.prototype.onError = function(obj) {
 | 
| 
 | 
    76     //alert(["error:", this.iActiveRequests, obj.status]);
 | 
| 
 | 
    77 }
 | 
| 
 | 
    78 
 | 
| 
 | 
    79 
 |