//REQUIRES SHOWHIDELAYER.JS
function testAjax(testformid){
/*
other="other"
//testformd=other.indexOf("form");
testformd=testformid;
  document.write(testformd.tagName);
  document.write(testformd);
  if(testformd.tagName=="FORM"){
    document.write('yay form!');
  }
  else document.write('no form');
  */
//    document.write('aoeeeu:'+ajaxDo.doPush);
    //document.write('aoeeeu:'+queue);
//return('testajax');
var b=5;
  function coo(){
    return b;
  }
  var ho=coo();
//  alert('this ho: '+ho);
}
function phpparam(formid1){
  var result='';
  if(formid1!=''){
    var form=formid1;
    
    var inputlength=parseInt(form.getElementsByTagName('input').length);
    var selectlength=parseInt(form.getElementsByTagName('select').length);
    var textarealength=parseInt(form.getElementsByTagName('textarea').length);

    //idlength=selectlength+inputlength;

    var forminput=form.getElementsByTagName('input');
    var formselect=form.getElementsByTagName('select');
    var formtextarea=form.getElementsByTagName('textarea');
    
    for(var i=0;i<inputlength;i++){
      //if EXCLUDE((type=radio and NOT checked) OR send button)
      if(!(((forminput.item(i).type=="radio"||forminput.item(i).type=="checkbox")&&forminput.item(i).checked==0)||forminput.item(i).type=="button")){ 
        result=result+forminput.item(i).id+'='+forminput.item(i).value;
        /*
        if(i!=inputlength-1){//so & ends after id=value except last id=value
          result=result+'&';
        }
        */
        result=result+'&';
      }
    }
    for(var i=0;i<selectlength;i++){
      result=result+formselect.item(i).id+'='+formselect.item(i).options[formselect.item(i).selectedIndex].value+'&';
    }
    for(var i=0;i<textarealength;i++){
      result=result+formtextarea.item(i).id+'='+formtextarea.item(i).value+'&';
    }
    result=result.substring(0,result.length-1);
  }
  return result; 
}

//Element.prototype.ajaxDo=function(php,formid,nest1) {
function ajaxClass(){
  var http = createRequestObject();
  var queue = new Array();
  this.run=run;
  var pushBool=true;
  var endFunc=function(){return 0};//=endFunc;
  this.setEndFunc=function(func0){
    endFunc=func0;
  }
  function createRequestObject() {
      var req=false;
  // branch for native XMLHttpRequest object
      if(window.XMLHttpRequest) {
        try {
          req = new XMLHttpRequest();
        } 
        catch(e) {
          req = false;
        }
      // branch for IE/Windows ActiveX version
      } 
      else if(window.ActiveXObject) {
          try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
          } 
          catch(e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch(e) {
                req = false;
            }
          }
      }
      return req;
  }
  function run(postget,php,formid,nest0) {
                //alert('pushBool '+pushBool);
    var param;
    var qLength;
    if(http){
      if(pushBool==true){
        qLength=queue.length;
        queue[qLength]=new Array();
        queue[qLength][0]=postget;
        queue[qLength][1]=php;
        queue[qLength][2]=formid;
        queue[qLength][3]=nest0;
      }  
      if(http.readyState==4||http.readyState==0){
        if(queue[0][2].tagName=='FORM'){ //is form
          param=phpparam(queue[0][2]);
        }
        else{ //not form
          param=queue[0][2];
        }
        function handleResponse(){
          /*
          0 Uninitialized. The object is not initialized with data.
          1 Loading. The object is loading its data.
          2 Loaded. The object has finished loading its data.
          3 Interactive. The user can interact with the object even though it's not fully loaded.
          4 Complete. The object is completely initialized.
          */
            if(http.readyState == 0){ //0=unitialized
                queue[0][3].innerHTML = "Data Uninitialized!";
                queue.shift();
            }
            if(http.readyState == 1){ //1=loading
              if(queue[0][0].toLowerCase()=='post')
                queue[0][3].innerHTML = "Loading...";
            }
            if(http.readyState == 4){ //4=complete
              if(http.status==200){ 
                queue[0][3].innerHTML = http.responseText;
              }
              else if(http.status==404){ //error 
                queue[0][3].innerHTML = "<b class=\"redbox\">File not found!</b>We apologize for the inconvenience, email us manually at<br /><b>web@infiniti-home-theatres.com</b>";
              }
              else{
                queue[0][3].innerHTML = "<b class=\"redbox\">Critical Error!</b>We apologize for the inconvenience, email us manually at<br /><b>web@infiniti-home-theatres.com</b><br />and include the error message if you don't mind";
              }
              queue.shift();
              if(queue.length>0){
                pushBool=false;
                run();
              }
              else{
                pushBool=true;
                endFunc();
              }

            }
        }//end handleresp
        http.onreadystatechange = handleResponse;
        if(queue[0][0].toLowerCase()=='get'){
          http.open('GET', queue[0][1]+'?'+param); //for GET
        }
        else{ 
          http.open('POST',queue[0][1],true);
          //Send the proper header information along with the request for POST
          http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
          http.setRequestHeader("Content-length", param.length);
          http.setRequestHeader("Connection", "close");
        }
        if(queue[0][0].toLowerCase()=='get') http.send(null); //for GET
        else http.send(param); //for POST
      }//end if http.readystate==1 or 4
    }//end if http
  }//end function run
}//end ajaxclass
