/**
 * Some common asynchronous request routines
 * Copyright Andrew Rice, Invest Solutions Limited 2006
 *
 * http://www.investsolutions.co.uk
 *
 * Please contact us for permission before copying this code.
 *
 * Version 1.0
 */

function GetXmlHttpObject() {
  var objXMLHttp = null;
  if (window.XMLHttpRequest) {
    objXMLHttp = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  return objXMLHttp;
} 

function serializeFormData(form) {
  var nodeName = String.toUpperCase(form.nodeName);
  var result = "";
  if (nodeName == 'INPUT' ||
      nodeName == 'TEXTAREA' ||
      nodeName == 'SELECT') {
    result = "&"+escape(form.name)+"="+escape(form.value);
  }
  var children = form.childNodes;
  for(var i=0;i < children.length; i++) {
    result = result + serializeFormData(children[i]);
  }
  return result;
}
