//var getXMLHTTPObject
//var GetXMLHTTPObject
function GetXmlHttpObject() {
  var xmlhttp=null;
  try { xmlhttp=new XMLHttpRequest(); }
  catch (e) {
    try { xmlhttp=new window.ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) { xmlhttp=new window.ActiveXObject("Microsoft.XMLHTTP"); }
  }
  if (xmlhttp===null) { alert("Your browser does not support (or has disabled) \nthe proper standards (Javascript/XMLHTTP) to run \nthis application properly"); }
  return xmlhttp;
}

function xmlhttpQuery(url, params) {
  var xmlhttp=new GetXmlHttpObject();
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4) { // ready to write the query data
      // alert("readyState: "+xmlhttp.readyState+"\nstatus: "+xmlhttp.status+"\nstatusText: "+xmlhttp.statusText)
      // heres my first attempt at detecting network connection loss.. after some testing i noticed
      // that the xmlhttp object will not hang up completely if there is no connection, but it will 
      // return status number and statusText that we can catch for detection.
      // statusText will ALWAYS be "OK" or "ERROR" when coming back from the server.
      // if no network connection is present the statusText gets returned Unknown.
      try
      {
        if (xmlhttp.statusText.toLowerCase()=="unknown") {
          var msg;
          msg ="An error occurred while making a server request.\n";
          msg+="This generally happens when the Network Connection is lost.\n";
          msg+="But may be caused by other network anomalies like heavy network load (lag)\n\n";
          msg+="If you have changes you need to save you should wait a moment and try again.";
          alert(msg);
        }
        htmldata=xmlhttp.responseText;
        if (htmldata!='undefined' && htmldata!==null && htmldata!=='') {
          //alert(htmldata)
          xmlhttpResponse(htmldata);
        }        
      }
      catch (ex)
      {
        alert('An error occured while talking to the server.\n\nError: '+ex);
      }

    }
  }
  xmlhttp.open("POST",url,true);
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  //if (!browser.isSafari){
  params+=''; // append to params (in the case params is blank..) makes it a 'valid' string
    xmlhttp.setRequestHeader("Content-length", params.length);
    xmlhttp.setRequestHeader("Connection", "close");
  //}
  xmlhttp.send(params); 
}

function xmlhttpGetData(url, div) {
  var xmlhttp=GetXmlHttpObject();
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4) { // ready to write the query data
      htmldata=xmlhttp.responseText;
      if (htmldata.substring(0,5) == "Error") alert(htmldata.substring(6)); // error testing..
      if (document.getElementById(div)) {
         if (document.getElementById(div).nodeName.toLowerCase()=='textarea')
         {
           document.getElementById(div).value=htmldata;
           if (typeof(document.getElementById(div).onchange)==='function')
           {
            document.getElementById(div).onchange();
           }
         }
         else {
          document.getElementById(div).innerHTML=htmldata;
         }
      } else alert('can not find div');
      //setOpenState();
    }
  }
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
}

function xmlhttpPostEval(url, params) {
  var xmlhttp=GetXmlHttpObject();
  var d=new Date(), d=d.valueOf();
  //path="/depositions/"
  path=url;
  params=params+"&x="+d;
  xmlhttp.open("POST",path,true);
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlhttp.setRequestHeader("Content-length", params.length);
  xmlhttp.setRequestHeader("Connection", "close");
  xmlhttp.send(params);
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4) {
      //alert(xmlhttp.responseText);
      //return;
      if (window.execScript){
        window.execScript(xmlhttp.responseText);
      } else {
        window.eval(xmlhttp.responseText);
      }
    }
  }
}


function xmlhttpResponse(xhrdata){
  var debug=false;
  if (UserAddr=="216.107.127.157")
  {
    //alert(xhrdata);
    //debug=true;
  }
 /**
  * Callback from lastmod check
  *********************************************************/
  if (xhrdata.substring(0,11)=="var cupdvar"){
    window.eval(xhrdata);
    //alert(typeof(cupdvar));
    var refresh=false;

    if (cupdvar.attorneys){
      var attorneysDate=new Date();
      attorneysDate.setTime(Date.parse(cupdvar.attorneys));
      if (attorneysDate.valueOf() > attorneysLastUpdate){ 
        if (debug){ alert('updating attorneysLastUpdate'); }
        refresh=true; attorneysLastUpdate=attorneysDate.valueOf(); 
      }
    }
    if (cupdvar.correspd){
      var correspdDate=new Date();
      correspdDate.setTime(Date.parse(cupdvar.correspd));
      if (correspdDate.valueOf() > correspdLastUpdate) { 
        if (debug){ alert('updating correspdLastUpdate'); }
        refresh=true; correspdLastUpdate=correspdDate.valueOf(); 
      }
    }
    if (cupdvar.credits){
      var creditsDate=new Date();
      creditsDate.setTime(Date.parse(cupdvar.credits));
      if (creditsDate.valueOf() > creditsLastUpdate) { 
        if (debug){ alert('updating creditsLastUpdate'); }
        refresh=true; creditsLastUpdate=creditsDate.valueOf(); 
      }
    }
    if (cupdvar.depoopt){
      var depooptDate=new Date();
      depooptDate.setTime(Date.parse(cupdvar.depoopt));
      if (depooptDate.valueOf() > depooptLastUpdate) { 
        if (debug){ alert('updating depooptLastUpdate'); }
        refresh=true; depooptLastUpdate=depooptDate.valueOf();
      }
    }
    if (cupdvar.depositions){
      var depositionsDate=new Date();
      depositionsDate.setTime(Date.parse(cupdvar.depositions));
      if (depositionsDate.valueOf() > depositionsLastUpdate) { 
        if (debug){ alert('updating depositionsLastUpdate'); }
        refresh=true; depositionsLastUpdate=depositionsDate.valueOf(); 
      }
    }
    if (cupdvar.deposits){
      var depositsDate=new Date();
      depositsDate.setTime(Date.parse(cupdvar.deposits));
      if (depositsDate.valueOf() > depositsLastUpdate) { 
        if (debug){ alert('updating depositsLastUpdate'); }
        refresh=true; depositsLastUpdate=depositsDate.valueOf(); 
      }
    }
    if (cupdvar.events){
      var eventsDate=new Date();
      eventsDate.setTime(Date.parse(cupdvar.events));
      if (eventsDate.valueOf() > eventsLastUpdate) { 
        if (debug){ alert('updating eventsLastUpdate'); }
        refresh=true; eventsLastUpdate=eventsDate.valueOf(); 
      }
    }
    if (cupdvar.firmrates){
      var firmratesDate=new Date();
      firmratesDate.setTime(Date.parse(cupdvar.firmrates));
      if (firmratesDate.valueOf() > firmratesLastUpdate) { 
        if (debug){ alert('updating firmratesLastUpdate'); }
        refresh=true; firmratesLastUpdate=firmratesDate.valueOf(); 
      }
    }
    if (cupdvar.firms){
      var firmsDate=new Date();
      firmsDate.setTime(Date.parse(cupdvar.firms));
      if (firmsDate.valueOf() > firmsLastUpdate) { 
        if (debug){ alert('updating firmsLastUpdate'); } 
        refresh=true; firmsLastUpdate=firmsDate.valueOf();
      }
    }
    if (cupdvar.invmsg){
      var invmsgDate=new Date();
      invmsgDate.setTime(Date.parse(cupdvar.invmsg));
      if (invmsgDate.valueOf() > invmsgLastUpdate) { 
        if (debug){ alert('updating invmsgLastUpdate'); }
        refresh=true; invmsgLastUpdate=invmsgDate.valueOf(); 
      }
    }
    if (cupdvar.invoices){
      var invoicesDate=new Date();
      invoicesDate.setTime(Date.parse(cupdvar.invoices));
      if (invoicesDate.valueOf() > invoicesLastUpdate) { 
        if (debug){ alert('updating invoicesLastUpdate'); }
        refresh=true; invoicesLastUpdate=invoicesDate.valueOf(); 
      }
    }
    if (cupdvar.items){
      var itemsDate=new Date();
      itemsDate.setTime(Date.parse(cupdvar.items));
      if (itemsDate.valueOf() > itemsLastUpdate) { 
        if (debug){ alert('updating itemsLastUpdate'); }
        refresh=true; itemsLastUpdate=itemsDate.valueOf(); 
      }
    }
    if (cupdvar.itemset){
      var itemsetDate=new Date();
      itemsetDate.setTime(Date.parse(cupdvar.itemset));
      if (itemsetDate.valueOf() > itemsetLastUpdate) { 
        if (debug){ alert('updating itemsetLastUpdate'); }
        refresh=true; itemsetLastUpdate=itemsetDate.valueOf(); 
      }
    }
    if (cupdvar.payroll){
      var payrollDate=new Date();
      payrollDate.setTime(Date.parse(cupdvar.payroll));
      if (payrollDate.valueOf() > payrollLastUpdate) { 
        if (debug){ alert('updating payrollLastUpdate'); }
        refresh=true; payrollLastUpdate=payrollDate.valueOf(); 
      }
    }
    if (cupdvar.pointrec){
      var pointrecDate=new Date();
      pointrecDate.setTime(Date.parse(cupdvar.pointrec));
      if (pointrecDate.valueOf() > pointrecLastUpdate) { 
        if (debug){ alert('updating pointrecLastUpdate'); }
        refresh=true; pointrecLastUpdate=pointrecDate.valueOf(); 
      }
    }
    if (cupdvar.points){
      var pointsDate=new Date();
      pointsDate.setTime(Date.parse(cupdvar.points));
      if (pointsDate.valueOf() > pointsLastUpdate) { 
        if (debug){ alert('updating pointsLastUpdate'); }
        refresh=true; pointsLastUpdate=pointsDate.valueOf(); 
      }
    }
    if (cupdvar.prlog){
      var prlogDate=new Date();
      prlogDate.setTime(Date.parse(cupdvar.prlog));
      if (prlogDate.valueOf() > prlogLastUpdate) { 
        if (debug){ alert('updating prlogLastUpdate'); }
        refresh=true; prlogLastUpdate=prlogDate.valueOf(); 
      }
    }
    if (cupdvar.receipts){
      var receiptsDate=new Date();
      receiptsDate.setTime(Date.parse(cupdvar.receipts));
      if (receiptsDate.valueOf() > receiptsLastUpdate) { 
        if (debug){ alert('updating receiptsLastUpdate'); }
        refresh=true; receiptsLastUpdate=receiptsDate.valueOf(); 
      }
    }
    if (cupdvar.styles){
      var stylesDate=new Date();
      stylesDate.setTime(Date.parse(cupdvar.styles));
      if (stylesDate.valueOf() > stylesLastUpdate) { 
        if (debug){ alert('updating stylesLastUpdate'); }
        refresh=true; stylesLastUpdate=stylesDate.valueOf(); 
      }
    }
    if (cupdvar.timeout){
      var timeoutDate=new Date();
      timeoutDate.setTime(Date.parse(cupdvar.timeout));
      if (timeoutDate.valueOf() > timeoutLastUpdate) { 
        if (debug){ alert('updating timeoutLastUpdate'); }
        refresh=true; timeoutLastUpdate=timeoutDate.valueOf(); 
      }
    }
    if (cupdvar.uploads){
      var uploadsDate=new Date();
      uploadsDate.setTime(Date.parse(cupdvar.uploads));
      if (uploadsDate.valueOf() > uploadsLastUpdate) { 
        if (debug){ alert('updating uploadsLastUpdate'); }
        refresh=true; uploadsLastUpdate=uploadsDate.valueOf(); 
      }
    }
    if (cupdvar.users){
      var usersDate=new Date();
      usersDate.setTime(Date.parse(cupdvar.users));
      if (usersDate.valueOf() > usersLastUpdate) { 
        if (debug){ alert('updating usersLastUpdate'); }
        refresh=true; usersLastUpdate=usersDate.valueOf();
      }
    }

    if (typeof(cupdvar.upd)==='undefined')
    {
      if (refresh){ 
        //alert('calling frame refresh');
        if (cupdvar.dblist!='all')
        {
          // special clause for depos...
          if (cupdvar.frame=='depositions'){cupdvar.frame='depos';}
          if (top.document.getElementById('f'+cupdvar.frame))
          {
            if (typeof(top.document.getElementById('f'+cupdvar.frame).contentWindow.updbtn) === 'function')
            {
              top.document.getElementById('f'+cupdvar.frame).contentWindow.updbtn();
            } else {

              if (typeof(top.document.getElementById('f'+cupdvar.frame).contentWindow.location.reload) !== 'undefined')
              {
                top.document.getElementById('f'+cupdvar.frame).contentWindow.location.reload();
              }
              else {
                alert('The function updbtn() was not found and could not initiate iframe.reload');
              }
            }
          }
        }
      }
    }
    else {
      //alert('found upd, no refresh. just update time\n\n'+print_r(cupdvar));
    }
    cupdvar=null; //!
  }
}