function makeRequest(url, cityElement, stateElement) {

  var http_request = false;

  if (window.XMLHttpRequest) { // Mozilla, Safari, Opera 8.0+, IE7?? 
    http_request = new XMLHttpRequest(); 
    if (http_request.overrideMimeType) { 
      http_request.overrideMimeType('text/xml');
      //We override the Mime Type because Mozilla might get crabby if you don't
    }
  } else if (window.ActiveXObject) { // IE 5.0+
      try {
         http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
         http_request.overrideMimeType('text/xml'); }          
      catch (e) {
        try {
          http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
          http_request.overrideMimeType('text/xml'); } 
        catch (e) {}
      }
    }

    if (!http_request) {        
      return false;
    } else {
      http_request.onreadystatechange = function() { processResponse(http_request, cityElement, stateElement) };
      http_request.open('GET', url, true);
      http_request.send(null);
      return true;
    }
}

function getNodeValue(xml,node) 
{ 
	var value; 
	value = xml.getElementsByTagName(node)[0].firstChild.nodeValue; 
	return value; 
}

function processResponse(http_request, cityElement, stateElement) 
{ 
	if (http_request.readyState == 4) 
	{ 
		if (http_request.status == 200) 
		{ 
			return displayData(http_request, cityElement, stateElement); 
		} 
		else { return false; } 
	}
}

function displayData(http_request, cityElement, stateElement) { 
	var xml = null; 
	var flag,state,city; 
	xml = http_request.responseXML; 
	flag = getNodeValue(xml,"flag"); 
	if (flag=="Y") 
	{ 
		state = getNodeValue(xml,"state"); 
		city = getNodeValue(xml,"city"); 
		document.getElementById(cityElement).value = city; 
		document.getElementById(stateElement).value = state; 
	} 
}

function getCS(zipcode, cityElement, stateElement) 
{ 
	if (zipcode.length >= 4)
	{		
		makeRequest("getcsz.asp?zipcode="+zipcode, cityElement, stateElement); 
	}
}
