﻿// function to create an XMLHttpClient in a cross-browser manner
//This is javascript object which
//will be used as a AJAX Fremework.

function HttpClient() { }
HttpClient.prototype = {
 // type GET,POST passed to open
 requestType:'GET',
 // when set to true, async calls are made
 isAsync:false,

 // where an XMLHttpRequest instance is stored
 xmlhttp:false,

  // what is called when a successful async call is made
  callback:false,

  // what is called when send is called on XMLHttpRequest
  // set your own function to onSend to have a custom loading
 // effect
   onSend:function() {
     //document.getElementById('HttpClientStatus').innerHTML="Loading....";
     //document.getElementById('HttpClientStatus').style.display ='block';
 },

 // what is called when readyState 4 is reached, this is
 // called before your callback
  onload:function() {
      //document.getElementById('HttpClientStatus').style.display ='none';
  },

 // what is called when an http error happens
 onError:function(error) {
     alert(error);
 },

 // method to initialize an xmlhttpclient
 init:function() {
   try {
       // Mozilla / Safari
        this.xmlhttp = new XMLHttpRequest();
   } catch (e) {
       // IE
       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.');
       }
    }
 },

 // method to make a page request
 // @param string url  The page to make the request to
 // @param string payload  What you're sending if this is a POST
//                        request
makeRequest: function(url,payload) {
     if (!this.xmlhttp) {
         this.init();
     }
     this.xmlhttp.open(this.requestType,url,this.isAsync);

     // set onreadystatechange here since it will be reset after a
    //completed call in Mozilla
     var self = this;
     this.xmlhttp.onreadystatechange = function() {
    self._readyStateChangeCallback(); }

     this.xmlhttp.send(payload);

     if (!this.isAsync) {
         return this.xmlhttp.responseText;
     }
},

 // internal method used to handle ready state changes
_readyStateChangeCallback:function() {
     switch(this.xmlhttp.readyState) {
          case 2:
           this.onSend();
           break;
        case 4:
           this.onload();
           if (this.xmlhttp.status == 200) {
               if (this.isAsync) {
                    this.callback(this.xmlhttp.responseText);
               }
           } else {
               this.onError('HTTP Error Making Request: '+'['+this.xmlhttp.status+']'+this.xmlhttp.statusText);
           }
           break;
     }
 }
}


function getXMLHttpRequestObject() {
 var xmlhttp;
 try {
     // Mozilla / Safari / IE7
     xmlhttp = new XMLHttpRequest();
 } catch (e) {
      // IE
      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 {
               xmlhttp = new ActiveXObject(XMLHTTP_IDS[i]);
                  success = true;
            } catch (e) {}
      }
      if (!success) {
          throw new Error('Unable to create XMLHttpRequest.');
      }
 }
 return xmlhttp;
}
   
function AjaxQuery(query)
{
    var client = new HttpClient();
    var parts=document.location.href.split("//");
    var pparts1=parts[1].split("/")[0];
    var pparts2=parts[1].split("/")[1];
    var ajaxurl="http://"+pparts1+"/"+pparts2+"/AjaxQuery.aspx";
    var link=ajaxurl+"?query="+query;
    return client.makeRequest(link,null);
}

function AjaxGetUniqString(Table,Field)
{
    var client = new HttpClient();
    var parts=document.location.href.split("//");
    var pparts1=parts[1].split("/")[0];
    var pparts2=parts[1].split("/")[1];
    var ajaxurl="http://"+pparts1+"/"+pparts2+"/AjaxGetUniqString.aspx";
    var link=ajaxurl+"?Table="+Table+"&Field="+Field;
    return client.makeRequest(link,null);
}