﻿// Define ready state constants.
var XMLHTTPREQUEST_READY_STATE_UNINITIALIZED = 0;
var XMLHTTPREQUEST_READY_STATE_LOADING       = 1;
var XMLHTTPREQUEST_READY_STATE_LOADED        = 2;
var XMLHTTPREQUEST_READY_STATE_INTERACTIVE   = 3;
var XMLHTTPREQUEST_READY_STATE_COMPLETED     = 4;

var XMLHTTPREQUEST_STATUS_SUCCESSFUL         = 200;
var XMLHTTPREQUEST_STATUS_PAGENOTFOUND       = 404;

//
//  url = name of page to call to process data
//        must include query parameters as data
//
function execPage(url)
{
   var pageRequest;

   if (window.XMLHttpRequest)
   {
      try
      {
         pageRequest = new XMLHttpRequest();
      }
      catch(e)
      {
         pageRequest = null;
      }
   }
   // branch for IE/Windows ActiveX version
   else if (window.ActiveXObject)
   {
      try
      {
         pageRequest = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch(e)
      {
         try
         {
            pageRequest = new ActiveXObject("Microsoft.XMLHTTP");
         }
         catch(e)
         {
            pageRequest = null;
         }
      }
   }

   if (pageRequest)
   {
      pageRequest.open("GET", url, false);
      pageRequest.onreadystatechange=function()
      {
         if (pageRequest.readyState==4)
         {

         }
      }
      pageRequest.setRequestHeader('Accept','message/x-jl-formresult')
      pageRequest.send(null)
   }
}

//
//  url = name of page to call to process data
//  dataToSend = data to send to 'url' for processing
//  routine = function to call upon succesful call
//  objectID = ID of <div> to place returned data into
//      -- Can easily be modified to be any object
//
function fetchData (url, dataToSend, routine, objectID)
{

   var pageRequest;

   // branch for native XMLHttpRequest object
   if (window.XMLHttpRequest)
   {
      try
      {
         pageRequest = new XMLHttpRequest();
      }
      catch(e)
      {
         pageRequest = null;
      }
   }
   // branch for IE/Windows ActiveX version
   else if (window.ActiveXObject)
   {
      try
      {
         pageRequest = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch(e)
      {
         try
         {
            pageRequest = new ActiveXObject("Microsoft.XMLHTTP");
         }
         catch(e)
         {
            pageRequest = null;
         }
      }
   }

   if (pageRequest)
   {
      var funct =  
         function ()
         {
            ajaxCheckState (routine, pageRequest, objectID);
         }

      if (dataToSend)
      {
         var sendData ='sendData=' + dataToSend;
   
         pageRequest.open('POST', url, true);
         pageRequest.onreadystatechange = funct;
         pageRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
         pageRequest.send(sendData);
      }
      else
      {
         pageRequest.open('GET', url, true);
         pageRequest.onreadystatechange = funct;
         pageRequest.send(null);
      }
   }

}  // end fetchDATA


function ajaxCheckState (routine, pageRequest, objectID)
{
 //  var object = document.getElementById(objectID);
 
   if (pageRequest.readyState == XMLHTTPREQUEST_READY_STATE_COMPLETED)
   {
       if (pageRequest.status == XMLHTTPREQUEST_STATUS_SUCCESSFUL)
       {
            routine(pageRequest, objectID);
//          object.innerHTML = pageRequest.responseText;
       }
 //      else if (pageRequest.status == XMLHTTPREQUEST_STATUS_PAGENOTFOUND)
 //         object.innerHTML = 'Sorry, that information is not currently available.';
 //      else
 //         object.innerHTML = 'Sorry there seems to be some kind of problem.';
   }
   else
     return;
}


