

function createReqObject()
{
   var request = false;

   try {
     request = new XMLHttpRequest();
   } catch (trymicrosoft) {
     try {
       request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (othermicrosoft) {
       try {
         request = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (failed) {
         request = false;
       }  
     }
   }
   return request;
}

function buildParameterBlock(theForm)
{
   var elemArray = theForm.elements;
   var parameters = new Array();
   for(var i=0; i < elemArray.length; i++)
   {
      if( elemArray[i].type == 'text' || elemArray[i].type == 'textarea' || elemArray[i].type == 'hidden' || 
         ((elemArray[i].type=='radio' || elemArray[i].type == 'checkbox') && elemArray[i].checked) )
      {
         parameters.push(encodeURIComponent(elemArray[i].name) + "=" + encodeURIComponent(elemArray[i].value));
      }
   }
   return parameters.join("&");
}

function getFieldIndex(theForm, fieldName)
{
   var elemArray = theForm.elements;

   for(var i=0; i < elemArray.length; i++)
   {
      if( elemArray[i].name == fieldName)
         return i;
   }
   return -1;
}


function fillFromResponse(theForm, resp)
{
   var elemArray = theForm.elements;
   var fields = resp.split("&");

   for(var i=0; i < fields.length; i++)
   {
      var parms = fields[i].split("=");      
      var fIdx = getFieldIndex( theForm, decodeURIComponent(parms[0]) );
      if( fIdx >= 0 )
          elemArray[fIdx].value = (parms.length > 0) ? decodeURIComponent(parms[1]) : null;
   }
}


function getFieldValue(resp, fName)
{
   var fields = resp.split("&");

   for(var i=0; i < fields.length; i++)
   {
      var parms = fields[i].split("=");      
      if( decodeURIComponent(parms[0]) == fName )
         return ((parms.length > 0) ? decodeURIComponent(parms[1]) : null);
   }
   return null;
}


function ajaxSubmit(theForm, callback, url)
{
   var elemArray = theForm.elements;
   var request = createReqObject();

   if( request )
   {
      // Build the post data from the form
      var subData = buildParameterBlock(theForm);

      // Send the data off to receiver
      //var url = "ajaxFormSubmit.php";
      request.open("POST", url, true);
      request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      request.setRequestHeader("Content-length", subData.length);
      request.setRequestHeader("Connection", "close");
      request.send(subData);
   }

   request.onreadystatechange = function()
   {
      if ( request.readyState == 4 && request.status == 200 )   
      {     
         if( request.responseText == 'SUCCESS' )
            callback(true);
         else
            callback(false);
      }
   }   
}







