var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support XMLHTTP!");
  return;
  }
xmlhttp.onreadystatechange=processResponse;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}

function stateChanged()
{
if (xmlhttp.readyState==4)
  {
  if (xmlhttp.status==200)
    {
    // our code here....
    }
  else
    {
    alert("Problem retrieving XML data:" + xmlhttp.statusText);
    }
  }
}

/**
* function can do two things, call third party function or set elements value
*/
function processResponse() 
{
    // only if req shows "complete"
    if (xmlhttp.readyState == 4) {
        // only if "OK"
        if (xmlhttp.status == 200) {
          var response  = xmlhttp.responseXML.documentElement;
          var method = response.getElementsByTagName('method')[0];
          // if result is a method call
          if ( method != null ) {
              var methodValue = method.firstChild.data;
              var parameters = '';
              var parameter = response.getElementsByTagName('parameter');
              var paramLength = parameter.length;
              for ( var i = 0; i < paramLength ; i++ ) {
                   if ( parameter[i] != null ) {
                       if ( !parameters == '' ) {
                         parameters = parameters +',';  
                       }
                       parameters = parameters + parameter[i].firstChild.data;     
                   }
              }
              eval(method + '('+parameters+')');
          } else {
              var elementId = response.getElementsByTagName('elementId')[0].firstChild.data;
              var value = response.getElementsByTagName('value')[0].firstChild.data;
              document.getElementById(elementId).value=value;
          }
        } else {
            alert("There was a problem retrieving the XML data:\n" + xmlhttp.statusText);
        }
    }
}
