// holds an instance of XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();
// creates an XMLHttpRequest instance
function createXmlHttpRequestObject() {
  // will store the reference to the XMLHttpRequest object
  var xmlHttp;
  // this should work for all browsers except IE6 and older
  try {
    // try to create XMLHttpRequest object
    xmlHttp = new XMLHttpRequest();
  } catch(e) {
    // assume IE6 or older
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
    // try every prog id until one works
    for (var i = 0; i < XmlHttpVersions.length && !xmlHttp; i++) {
      try {
        // try to create XMLHttpRequest object
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } catch (e) {}
    } 
  }
  // return the created object or display an error message
  if (!xmlHttp)
    alert("Error creating the XMLHttpRequest object.");
  else
    return xmlHttp;
}

// read a file from the server
function process(input) {

  var url = "findRecords.php";

  if (xmlHttp) {
    // try to connect to the server
    try {
      // initiate reading a file from the server
      url = url + "?input=" + input;
      url = url + "&sid=" + Math.random();
      xmlHttp.open("GET", url, true);
      xmlHttp.onreadystatechange = handleRequestStateChange;
      xmlHttp.send(null);
    } catch (e) {
      alert("Can't connect to server:\n" + e.toString());
    }
  }
}

// function called when the state of the HTTP request changes
function handleRequestStateChange() {
  // when readyState is 4, we are ready to read the server response
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
    // continue only if HTTP status is "OK"
    if (xmlHttp.status == 200) {
      try {
        // do something with the response from the server
        handleServerResponse();
      } catch(e) {
        // display error message
        alert("Error reading the response: " + e.toString());
      }
    } else {
      // display status message
      alert("There was a problem retrieving the data:\n" +
             xmlHttp.statusText);
    }
  }
}

// handles the response received from the server
function handleServerResponse() {
  $("#data").html(xmlHttp.responseText)
  //document.getElementById("data").innerHTML = xmlHttp.responseText;
}

function checkReturn(e) {
  var e = (e) ? e : ((event) ? event : null);

  var node = (e.target) ? e.target : ((e.srcElement) ? e.srcElemnt : null);

  if ((e.keyCode == 13) && (node.type == "text")) {
    return false;
  }

  document.onkeypress = checkReturn;
}

function highlight(input) {
  document.getElementById(input).style.backgroundColor = "#eff8fb";
}

function resetHighlight(input) {
  document.getElementById(input).style.backgroundColor = "white";
}

function submitOnce(){
  var formLength = document.forms[0].length;
  //if IE 4+ or NS 6+
  if (document.all || document.getElementById) {
  //screen thru every element in the form, and hunt down "submit" and "reset"
  for (i=0;i<formLength;i++){
    var tempobj=document.forms[0].elements[i];
    if (tempobj.type.toLowerCase()=="submit" || tempobj.type.toLowerCase()=="reset")
      //disable em
      tempobj.disabled=true;
    }
  }
}

function displayFlow() {
  window.open("http://status.cgi.co.uk/Process_Flow.html");
}

