var xmlHttp_new = null;
var RESPONSE_DIV = null;

function getXmlHttpObject()
{
  if(null != xmlHttp_new)
  {
    return xmlHttp_new;
  }
  try
  {
    // Firefox, Opera 8.0+, Safari
    xmlHttp_new=new XMLHttpRequest();
    xmlHttp_new.overrideMimeType('text/html');
  }
  catch (e)
  {
    // Internet Explorer
    try
    {
      xmlHttp_new=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      xmlHttp_new=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return xmlHttp_new;
}

function stateChanged() 
{ 
  if (xmlHttp_new.readyState==4)
  { 
    if (http_request.status == 200 && RESPONSE_DIV != null)
    {
      var response = xmlHttp_new.responseText;
      if(response == 'RCP')
      {
        window.location.reload(true);
      }
      else
      {
        document.getElementById(RESPONSE_DIV).innerHTML=response;
      }
    }
    else //some error or may be user moved to other page
    {  
      return false;
    }
  }
} 

function makePOSTRequest(url, parameters) 
{
  http_request = getXmlHttpObject();
  http_request.onreadystatechange = stateChanged;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);
}

function makeGETRequest(url, parameters) 
{
  http_request = getXmlHttpObject();
  http_request.onreadystatechange = stateChanged;
  http_request.open('GET', url + '?' + parameters, true);
  http_request.send(null);
}

function submitForm(uri, form, div, type)
{
  var form =  document.getElementById(form);
  if (form) 
  {
    var elements = form.elements;
    if (elements) 
    {
      var submit_string = null;
      for (var e = 0, element; element = elements[e]; e++) 
      {
        if ((element.type == 'radio' || element.type == 'checkbox') && element.checked == false) 
        {
          continue;
        }
        if (submit_string) 
        {
          submit_string += '&' + element.name + '=' + escape(element.value);
        }
        else 
        {
          submit_string = element.name + '=' + escape(element.value);
        }
      }
      //alert("submitting form");
      if (submit_string) 
      {
        RESPONSE_DIV = div;
        if(type == "POST")
        {
          makePOSTRequest(uri, submit_string);        
        }
        else
        {
          makeGETRequest(uri, submit_string);
        }
      }
    }  
  }
}

function dosomething(divid, uri, method)
{
  var response = xmlHTTPRequest(uri, method, null);
  if (response) {
    if(response == 'RCP') {
      window.location.reload(true);
    } else {
        var element = document.getElementById(divid);
        element.innerHTML = response;
      }
  }
}

function submit_form(uri, form)
{
  var response = null;

  var form =  document.getElementById(form);
  if (form) {
    var elements = form.elements;
    if (elements) {
      var submit_string = null;
      for (var e = 0, element; element = elements[e]; e++) {
        if ((element.type == 'radio' || element.type == 'checkbox') && element.checked == false) {
          continue;
        }

        if (submit_string) {
          submit_string += '&' + element.name + '=' + escape(element.value);
        }
        else {
          submit_string = element.name + '=' + escape(element.value);
        }
      }

      if (submit_string) {
        response = xmlHTTPRequest(uri, 'POST', submit_string);
        if (response) {
          if(response == 'RCP') {
            window.location.reload(true);
          }
        }
      }
    }
  }

  return response;
}

function submitform(divid, uri, form)
{
  var response = submit_form(uri, form);
  if (response) {
    var element = document.getElementById(divid);
    element.innerHTML = response;
  }
}

function submitFormParseErr(divId, errDivId, uri, form)
{
  var response = submit_form(uri, form);
  if (response) 
  {
    if (response.match(/^ERROR:(.+)/)) 
    {
      var element = document.getElementById(errDivId);
      element.innerHTML = RegExp.$1;
    }
    else
    {
      var element = document.getElementById(divId);
      element.innerHTML = response;
    }
  }
}

function submitform_ajax(divid, uri, form)
{
  submitForm(uri, form, divid, "POST");
}

function submitformAndRefresh(divid, uri, form, timeInMS, refreshText)
{
  var response = submit_form(uri, form);
  if (response) 
  {
    if (response.match(refreshText)) 
    {
      setTimeout('submitformAndRefresh("' + divid +'","'+ uri +'","'+ form +'",'+ timeInMS +',"'+ refreshText + '")', timeInMS);
      //alert('time set');
    }      
          
    var element = document.getElementById(divid);
    element.innerHTML = response;
  }
}
