//<![CDATA[

function createRequestObject() {   
    var oXml;
    var browser = navigator.appName;
    
	if (browser == "Microsoft Internet Explorer") {
        oXml = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        oXml = new XMLHttpRequest();
    }
    return oXml;
}

var http = createRequestObject();
var addressSelector;

function sendReq(action, pc, id) {
    http.open('post', '/addressFinder/?action='+action+'&pc='+pc+'&id='+id, false); // <-- set async to false so that script WAITS for a response before continuing!
    http.onreadystatechange = handleResponse;
    http.send(null);
}

function handleResponse() {
    if (http.readyState == 4) {
		var oXml = http.responseXML;
		var oRoot = oXml.documentElement;
		switch(oRoot.nodeName) {
			case 'ERROR' : displayError(oRoot); break;
			case 'PostcodeAnywhere' : populateList(oXml); break;
			case 'ADDRESS' : populateAddress(oRoot); break;
		}			
	}
}

function populateList(oXml) {
	var oNode, x, sAddr, sID;
	var oData = oXml.selectSingleNode("//Data");
	addressSelector = document.getElementById("objAddressFinder");	
	addressSelector.length=0;
	add("(Pick your address)", "");
	for (x=0; x <= (oData.selectNodes("Item").length)-1; x++) {
		oNode = oData.selectSingleNode("Item["+x+"]");
		sID = oNode.getAttribute("id");
		sAddr = oNode.getAttribute("description");
		add(sAddr, sID);
	}
	addressSelector.disabled = false;
}

function add(t, v) {
	var i = addressSelector.length++;
	addressSelector.options[i].value = v;
	addressSelector.options[i].text = t;
}

function populateAddress(oRoot) {
	document.getElementById("company").value = oRoot.selectSingleNode("company").text;
	document.getElementById("addr1").value = oRoot.selectSingleNode("addr1").text;
	document.getElementById("addr2").value = oRoot.selectSingleNode("addr2").text;
	document.getElementById("addr3").value = oRoot.selectSingleNode("addr3").text;
	document.getElementById("town").value = oRoot.selectSingleNode("town").text;	
	document.getElementById("county").value = oRoot.selectSingleNode("county").text;	
	document.getElementById("postcode").value = oRoot.selectSingleNode("postcode").text;	
	document.getElementById("txtFind").value = oRoot.selectSingleNode("postcode").text;
	addressSelector.disabled = true;	
}

function displayError(oRoot) {
	var oSpan = document.getElementById("errorMessage");
	oSpan.innerHTML = oRoot.selectSingleNode("//description").text;
}

//]]>
