var moz = false;

function initRequester(arequester) {
  if (arequester != null && arequester.readyState != 0 && arequester.readyState != 4) { 
    arequester.abort(); 
  } 
  arequester = null;    
  try { 
    arequester = new XMLHttpRequest();
    if(arequester.overrideMimeType){        
      arequester.overrideMimeType("text/xml");
    }
    moz = true;
  } catch (error) { 
    try { 
      arequester = new ActiveXObject("Microsoft.XMLHTTP"); 
    } catch (error) { 
      arequester = null; 
    } 
  }
  return arequester;
}

function loadXML(xmlstring){
  if (window.ActiveXObject){
    var xmlobject = new ActiveXObject("Microsoft.XMLDOM");
    xmlobject.async = "false";
    xmlobject.loadXML(xmlstring);
  } else {
    var parser = new DOMParser();
    var xmlobject = parser.parseFromString(xmlstring,"text/xml");
  }
  return xmlobject;
}

function updatePage(xmlstring) {
  if (xmlstring == '') {
    return false;
  }
  var xmlobject = loadXML(xmlstring);
  var root = xmlobject.getElementsByTagName('root')[0];
  if (root == null) {
    alert("Invalid response:"+xmlstring);
  }
  var items = root.getElementsByTagName("item");
  for (var i = 0 ; i < items.length ; i++) {
    var item = items[i];
    var elId = item.getAttribute("id");
    var elValue = item.getAttribute("value");
    var elType = item.getAttribute("type");
    var el = document.getElementById(elId);
    if (el == null) {
      alert("Element not found: "+elId);
      continue;
    }
    switch (elType) {
      case "value":
        el.value = elValue;
        break;
      
      case "html":
        el.innerHTML = elValue;
        break;
      
      case "select":
        var SelectObject = el;
        if (elValue == 0) {
          SelectObject.selectedIndex = 0;
        } else { 
          for(index = 0; index < SelectObject.length; index++) {
            if (SelectObject[index].value == elValue) {
              SelectObject.selectedIndex = index;
            }
          }
        }
        
      default:
        // No valid element type
        break;
    }
  }
}


var updateRequest = null;

function doUpdateRequest(query) {
  updateRequest = initRequester(updateRequest);
  updateRequest.open("POST", "ajax.php", true);
  updateRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  updateRequest.onreadystatechange = function() {
   if (updateRequest.readyState == 4) {
     updatePage(updateRequest.responseText);
   }
  }
  updateRequest.send(query);
  return '';
} 
  
function setInnerText(aObj, aVal){  
  if (document.all) {
    aObj.innerText = aVal; 
  } else {
    aObj.textContent = aVal; 
  }
}

function getFormQueryString() {
  var theForm = document.forms[formname];
  // Start with URI's get parameters
  var reqStr = document.location.search.substring(1);
  reqStr += '&submitform=true';
  for (i=0; i<theForm.elements.length; i++) {
    var el = theForm.elements[i];
    switch (el.type) {
      case "text":
      case "textarea":
      case "hidden":
        reqStr += "&"+el.name+"="+encodeURIComponent(el.value);
        break;
      case "checkbox":
      case "radio": 
        if (el.checked) { 
          reqStr += "&"+el.name + "=" + el.value; 
        } 
        break; 
      case "select-one": 
      case "select": 
        reqStr += "&"+el.name + "=" + el.options[el.selectedIndex].value; 
        break;
    }
  }
  return reqStr;
}