// stores the reference to the XMLHttpRequest object

var xmlHttp = createXmlHttpRequestObject();

// retrieves the XMLHttpRequest object
function createXmlHttpRequestObject()
{
  // will store the reference to the XMLHttpRequest object
var xmlHttp;
  // if running Internet Explorer
  if (window.ActiveXObject)
    {
     try
      {
       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
     catch(e)
     {
      xmlHttp = false;
     }
    }
  // if running Mozilla or other browsers
  else
   {
    try
    {
     xmlHttp = new XMLHttpRequest();
    }
   catch(e)
    {
     xmlHttp = false;
    }

   }
  // return the created object or display an error message
  if (!xmlHttp)
    alert("Error creating the XMLHttpRequest object.");
   else
    return xmlHttp;
}

// make asynchronous HTTP request using the XMLHttpRequest object
function identifyRadioButtonSelection(button)
 {
  for (Count = 0; Count<11; Count++)
    {
     if (button[Count].checked)
       break;
    }
  return Count;
 }
 
function processAJAX(myVar,myType, form)
 {
  // proceed only if the xmlHttp object isn't busy
  if (xmlHttp.readyState == 4 || xmlHttp.readyState==0)
   {
    // retrieve the name typed by the user on the form
    name = myVar;   //  encodeURIComponent(document.getElementById("myName").value)
    userData = form.info.value;
    pathway=form.pathway.value;
    if ((myType=="radio") || (myType=="likert"))
        userData = identifyRadioButtonSelection(form.info);
    //alert(userData);
    userEmail = form.emailAddress.value;
    params ="name="+myVar+"&emailAddress="+userEmail+"&info="+userData+"&pathway="+pathway+"&type="+myType;
    // execute the quickstart.php page from the server
   // alert('I see ' + name + '.' );
    xmlHttp.open("POST","http://www.startkc.com/skipcrooker/interactPostMySQL.php", true);
    // defining the header information to supply posted form data.
      xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xmlHttp.setRequestHeader("Content-length",params.length);
      xmlHttp.setRequestHeader("Connection","close");
    
    // define the method to handle server responses
    //alert("item "+name+"email " + userEmail + "Data " + userData);
    xmlHttp.onreadystatechange = handleServerResponse;
    // make the server request
    xmlHttp.send(params);
  //  alert("I sent " + params);
   }
  else
    // if the connection is busy, try again after one second
    setTimeout('processAJAX(myVar,form)', 1000);
 }

// executed automatically when a message is received from the server
function handleServerResponse()
{
  // move forward only if the transaction has completed
  if (xmlHttp.readyState==4)
    {
     myID = "click";
     // status of 200 indicates the transaction completed successfully
     if (xmlHttp.status==200)
     {
      // extract the XML retrieved from the server
      xmlResponse = xmlHttp.responseXML;
      // obtain the document element (the root element) of the XML structure
      xmlDocumentElement = xmlResponse.documentElement;
      // get the text message, which is the first child of 
      // the document element
      helloMessage = xmlDocumentElement.firstChild.data;
      thisLength = helloMessage.length;
      thisBox = helloMessage.substring(0,4);
      myID = myID + thisBox;
      thisMessage = helloMessage.substring(5,(thisLength-1));
      
      // update the client display using hte data received from the server
       document.getElementById(myID).innerHTML= '<i>' + thisMessage + '</i>';
       //alert('The message is ' + helloMessage + '.');
       //restart sequence
       
     }
    // a HTTP status different than 200 signals an error
    else
      {
       alert("There was a problem accessing the server: " + xmlHttp.statusText);
      }
    }
}

