function submitViaAjax(form) {
  
  var paramString = "x=x";
  
  for (var ii=0; ii<form.elements.length; ii++) {
    if (form.elements[ii].type == 'checkbox' || form.elements[ii].type == 'radio') {
      if (!form.elements[ii].checked) {
        continue;
      }
    }
    paramString += '&'+form.elements[ii].name+'='+escape(form.elements[ii].value);//escape(encodeURI(form.elements[ii].value));
  }
  
  //alert(paramString);

  var req = newXMLHttpRequest();

  var handlerFunction = getReadyStateHandler(req, function(rtnXML) { dataLoaded(rtnXML, form) } );
  req.onreadystatechange = handlerFunction;  
  req.open("POST", form.action, true);
  req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  
  req.send(paramString);
  form.className = form.className+' AjaxLoading';
  return false;
}


function dataLoaded(inputXML, form) {    
  if (inputXML != null) {
    var rootNode = inputXML.getElementsByTagName("root")[0];
    var tmpNode = rootNode.getElementsByTagName("result")[0].firstChild;
    var code = rootNode.getElementsByTagName("code")[0].firstChild;
  }
  
  var response = 'An unknown error occurred, please try again';
  
  if (tmpNode != null) {
    response = tmpNode.nodeValue;
    //alert(response);
  }

  document.getElementById('ajaxform-response').innerHTML = response;

  form.className = form.className.replace('AjaxLoading', '').replace('AjaxError', '');
  
  if (code != null) {
    if (code.nodeValue == 'OK') {
      form.className = form.className+' AjaxReturned';
    } else {
      form.className = form.className+' AjaxError';
    }
  } else {
    form.className = form.className+' AjaxError';
  }
  
  return;
}