
var req = createXMLHttpRequest();

function createXMLHttpRequest() {
 var ua;
 if(window.XMLHttpRequest) {
 try {
  ua = new XMLHttpRequest();
 } catch(e) {
  ua = false;
 }
 } else if(window.ActiveXObject) {
  try {
  ua = new ActiveXObject("Microsoft.XMLHTTP");
  } catch(e) {
  ua = false;
  }
 }
return ua;
}
var gTargetId;
var gCallBackFunction;

function sendRequest(frm,targetId,callBackFunction) {
 var rnd982g = Math.random();
 var str = "";
 gTargetId=targetId;
 gCallBackFunction=callBackFunction;
 if(str = getForm(frm)) {
  req.open("GET", frm.action+"?"+str);
  req.onreadystatechange = handleResponse;
  req.send(null);
 }
 return false;
}

function handleResponse() {
 if(req.readyState == 4){
  var response = req.responseText;
  if(gTargetId!=null)
    document.getElementById(gTargetId).innerHTML = response;
  if(gCallBackFunction!=null)
    window.setTimeout(gCallBackFunction(response), 1);
 }
}

function getForm(fobj) {
 var str = "";
 var ft = "";
 var fv = "";
 var fn = "";
 var fc = "";
 var els = "";
 for(var i = 0;i < fobj.elements.length;i++) {
  els = fobj.elements[i];
  ft = els.title;
  fv = els.value;
  fn = els.name;
  fc = els.getAttribute("caption");
 switch(els.type) {
  case "text":
  case "hidden":
  case "password":
  case "textarea":
  // is it a required field?
  if(encodeURI(ft) == "required" && encodeURI(fv).length < 1) {
  alert(fc+" is a required field, please complete.");
  els.focus();
  return false;
  }
  str += fn + "=" + encodeURIComponent(fv) + "&";
  break;

  case "checkbox":
  case "radio":
   if(els.checked) str += fn + "=" + encodeURIComponent(fv) + "&";
  break;

  case "select-one":
  str += fn + "=" +
  els.options[els.selectedIndex].value + "&";
  break;
  } // switch
 } // for
 str = str.substr(0,(str.length - 1));
 return str;
}

