﻿var http_request = false;
var hasResult = false;
var isResultSuccess = -1;
var address = "";
var AddressArr = new Array(100);
var ns = (window.navigator.appName.toLowerCase() == "netscape");
var usercontrolprefix = "";

if(ns)
{
	var displayRowValue = "table-row";
}
else
{
	var displayRowValue = "block";
}


function showDiv(id)
{
	document.getElementById(id).style.display = 'inline';
}

function doFindAddress() 
{

	
	
	if(document.getElementById('selPostcode').value == "" || document.getElementById('selPostcode').value.length < 5)
	{		
		alert("Please supply a full UK postcode...");
		return false;
	}	
	
	var postcode = document.getElementById('selPostcode').value;

    makeRequest(postcode);
}

function makeRequest(parameters) 
{     
	document.getElementById(usercontrolprefix + 'txtPostcode').value = document.getElementById('selPostcode').value;
	
	document.getElementById('btnFindAddress').disabled = true;
	document.getElementById('btnFindAddress').value = "Searching";

		
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
    } else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
		}
	}
	if (!http_request) {
		alert('Cannot create XMLHTTP instance');
		return false;
	}
	
	http_request.onreadystatechange = populateAddresses;
	http_request.open('GET', "/xmlAddresses.aspx?pc=" + parameters, true);
	http_request.send(null);
	
}



function buildAddress(addrnode) {

	address = "";
	
	address += getAddressItem(addrnode, "Organisation");
	address += getAddressItem(addrnode, "Addr1");
	address += getAddressItem(addrnode, "Addr2");
	address += getAddressItem(addrnode, "Town");
	address += getAddressItem(addrnode, "County");
	
	return address;
}

function getAddressItem(addrnode, nodename) {

	if(addrnode.getElementsByTagName(nodename)) {
		
		var el = addrnode.getElementsByTagName(nodename);
		
		if(el.item(0).childNodes.item(0)) {
			return ((address != "") ? ", " : "") + el.item(0).childNodes.item(0).data;
		}
	}
	
	return "";
}

function populateAddresses() {
	

	var selAddress = document.getElementById('selAddress');	
	
	// remove all options from select box
	for (i = 0; i < selAddress.options.length; i++) 
	{
   		 selAddress.options[i] = null;
	}
	
	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200 && !hasResult) 
		{
				
			hasResult = true;
			isResultSuccess = 0;
			var xmldoc = http_request.responseXML;
			var adrs = xmldoc.getElementsByTagName("Address");

		    var rows = 0;
		
			// loop through Address nodes
			for (i = 0; i < adrs.length; i++)  
			{
				var rowArr = new Array(12);
				
			    isResultSuccess = 1;		
				var addrnode = adrs.item(i);
				
		
				// build select menu
				selAddress.options[i] = new Option(buildAddress(addrnode), i);

				// build Address array object
				for (j = 0; j < addrnode.childNodes.length; j++) 
				{
					var sub = addrnode.childNodes.item(j);
					
					if (sub.childNodes.length > 0) 
					{	
						rowArr[sub.nodeName] = sub.childNodes.item(0).data;
					}
				}
				
				// add Address object to Address array			
				AddressArr[i] = rowArr;		
				
				rows++;
			
			}			

			if(isResultSuccess != 0)
		    {
			    selAddress.options[rows] = new Option("Enter manually...", -1);	
		    }
		    else
		    {
			    selAddress.options[0] = new Option("Enter manually...", -1);
		    }
		
		    show();
		}
	}
}

function displayRow(id)
{
	document.getElementById(id).style.display = displayRowValue;
}

function show()
{
	if(window.goSetHeight)
	{
		goSetHeight();
	}
		
	//document.getElementById('lookingup').style.display = 'none';

		
	if(isResultSuccess)
	{
		//displayRow('selAddressText');
		displayRow('selAddressRow');

	}
	else
	{		
		displayRow('notfoundRow');
		showAddressForm();
	}

	document.getElementById('selPostcodeRow').style.display = 'none';
		
}

function showAddressForm()
{
	isResultSuccess = 0;
	
	//document.getElementById('noresultText').style.display = 'inline';
	document.getElementById('selAddressRow').style.display = 'none';
	//document.getElementById('selAddressText').style.display = 'none';
	
	document.getElementById(usercontrolprefix + 'txtAddr1').value = '';
	document.getElementById(usercontrolprefix + 'txtAddr2').value = '';
	document.getElementById(usercontrolprefix + 'txtTown').value = '';
	document.getElementById(usercontrolprefix + 'txtCounty').value = '';

	
	displayRow('addr1Row');
	displayRow('addr2Row');
	displayRow('townRow');
	displayRow('countyRow');
	displayRow('postcodeRow');
	
	if(window.goSetHeight)
	{
		goSetHeight();
	}
}


function populateAddress()
{
	var selAddrIndex = document.getElementById('selAddress').value;

	var selAddressArr = AddressArr[selAddrIndex];

	document.getElementById(usercontrolprefix + 'txtAddr1').value = '';
	document.getElementById(usercontrolprefix + 'txtAddr2').value = '';
	document.getElementById(usercontrolprefix + 'txtTown').value = '';
	document.getElementById(usercontrolprefix + 'txtCounty').value = '';


	if(selAddressArr['Organisation'] != undefined)
	{
		if(selAddressArr['Addr2'] == undefined)
		{
			document.getElementById(usercontrolprefix + 'txtAddr1').value = selAddressArr['Organisation'];
					
			if(selAddressArr['Addr1'] != undefined)
			{
				document.getElementById(usercontrolprefix + 'txtAddr2').value = selAddressArr['Addr1']
			}
		}
		else
		{

			document.getElementById(usercontrolprefix + 'txtAddr1').value = selAddressArr['Organisation'];
			document.getElementById(usercontrolprefix + 'txtAddr1').value += ", " + selAddressArr['Addr1'];
			document.getElementById(usercontrolprefix + 'txtAddr2').value = selAddressArr['Addr2'];

		}
				
	}
	else
	{
				
		if(selAddressArr['Addr1'] != undefined)
		{
            document.getElementById(usercontrolprefix + 'txtAddr1').value = selAddressArr['Addr1'];

		}
	
		if(selAddressArr['Addr2'] != undefined)
		{
			document.getElementById(usercontrolprefix + 'txtAddr2').value = selAddressArr['Addr2'];
		}

	}
			
    if(selAddressArr['Town'] != undefined)
	{
		document.getElementById(usercontrolprefix + 'txtTown').value = selAddressArr['Town'];
	}

    if(selAddressArr['County'] != undefined)
	{
		document.getElementById(usercontrolprefix + 'txtCounty').value = selAddressArr['County'];
	}

}

function showStatement()
{
	document.getElementById('statement').style.display = 'block';
}

function find(id)
{
	return document.getElementById(id);
}

function CheckText(ID, Browser)
		{
		
			ID = usercontrolprefix + ID;
			
			if (Browser == 'ie') {
				if (document.all[ID].value != "") return true;
			}
			else {
				if(document.getElementById(ID).value !="") return true;
			}
			return false;

		}
		
		function CheckChecked(ID, Browser)
		{
			ID = usercontrolprefix + ID;
			
			if (Browser == 'ie') {
				if (document.all[ID].checked) return true;
			}
			else {
				if(document.getElementById(ID).checked) return true;
			}
			return false;
			
		}
		
		function CheckSelect(ID, Browser)
		{
			ID = usercontrolprefix + ID;
			
			if (Browser == 'ie') {		
				if (document.all[ID].options[document.all[ID].selectedIndex].value != "") return true;
			}
			else {
				if(document.getElementById(ID).options[document.getElementById(ID).selectedIndex].value !="") return true;
			}
			return false;
		}

function CheckOptions()
{


			var strErr = "The following error(s) occurred:\n";
			var blnErr = false;
			var Browser;
		
			if(document.all) {
				Browser = "ie";
			}
			else if (document.layers) {
				Browser = "ns";
			}
			else {
				Browser = "wc";
			}
	
			
			if (CheckSelect("ddlTitle",Browser) != true) 
			{
				//DoShow("divTitle",Browser);
				strErr += "Please choose your title...\n";
				blnErr = true;
			}
						
			if (CheckText("txtForename",Browser) != true) 
			{
				//DoShow("divForename",Browser);
				strErr += "Please supply your first name...\n";
				blnErr = true;
			}
			
			if (CheckText("txtSurname",Browser) != true) 
			{
				//DoShow("divSurname",Browser);
				strErr += "Please supply your surname...\n";
				blnErr = true;
			}				
			
			if(blnErr==true)
			{
				alert(strErr);
				return false;
			}
			else 
			{

				formsubmit();
				
				return true;
			}
		
}


		
/*
	var selAddress = document.getElementById('selAddress');	
	
	// remove all options from select box
	for (i = 0; i < selAddress.options.length; i++) {
   		 selAddress.options[i] = null;
	}

	if (http_request.readyState == 4) {
		if (http_request.status == 200 && !hasResult) {
		
			hasResult = true;
			var xmldoc = http_request.responseXML;
            var root = xmldoc.getElementsByTagName('Addresses').item(0);
			var Address = new Array(10);
            isResult = 0;
			var row = 0;

			for (var iNode = 0; iNode < root.childNodes.length; iNode++) 
			{
				var node = root.childNodes.item(iNode);

				if (node.childNodes.length > 0) 
				{
					var str = "";
					var col = 0;
					var rowArr = new Array(12);
		
              	 	for (i = 0; i < node.childNodes.length; i++) 
					{
                		var sibl = node.childNodes.item(i);
 

                 		if (sibl.childNodes.length > 0) 
						{	
							rowArr[sibl.nodeName] = sibl.childNodes.item(0).data;

							if(col != 0)
							{	
						
								if(str != "") str += ", ";
								str += sibl.childNodes.item(0).data;
							}	

							col++;
               			}	
					}
					selAddress.options[row] = new Option(str, row);
					AddressArr[row] = rowArr;
					row++;
				}
			}

			if(isResult != 0)
			{
				selAddress.options[row] = new Option("Enter manually...", -1);	
			}
			else
			{
				selAddress.options[0] = new Option("Enter manually...", -1);
			}
			show();

		} else {
        
			alert('There was a problem with the request. Please try again.');
		}
	}
	*/
