// Global Objects
var http   = (window.XMLHttpRequest) ? new XMLHttpRequest() :new ActiveXObject("Microsoft.XMLHTTP");
var target = null;

// Utility Functions
function removeChildrenFromNode(node) {
  if(!node) return;
  while (node.hasChildNodes()) node.removeChild(node.firstChild);
}

// Response Handlers
function updateListHandler() {
  if(http.readyState == 4 && http.status == 200) {
    removeChildrenFromNode(target);
    var options = http.responseXML.getElementsByTagName('option');
    for(i = 0; i < options.length; i++) {
      var node   = document.createElement('option');
      node.value = options[i].getAttribute('value');
      node.appendChild(document.createTextNode(options[i].firstChild.nodeValue));
      target.appendChild(node);
    } 
  }
}

// User Functions
function getCounties(state, list) {
  if(http.readyState == 0 || http.readyState == 4) { 
    target  = list;  
    var url = '/ajax/getCounties.php?state=' + state;

    http.open('get', url);
    http.onreadystatechange = updateListHandler;
    http.send(null);
  }
}
