navHover = function() {
	var cssRule;
	var newSelector;
	for (var i=0; i< document.styleSheets.length; i++)
		for (var x=0; x< document.styleSheets[i].rules.length; x++)
			{
			cssRule = document.styleSheets[i].rules[x];
			if (cssRule.selectorText.indexOf("LI:hover") >= 0)
			{
				 newSelector = cssRule.selectorText.replace(/LI:hover/gi, "LI.iehover");
				document.styleSheets[i].addRule(newSelector , cssRule.style.cssText);
			}
		}
	var getElm = document.getElementById("navigation").getElementsByTagName("LI");
	for (var i=0; i<getElm.length; i++) {
		getElm[i].onmouseover=function() {
			this.className+=" iehover";
		}
		getElm[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" iehover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", navHover);

function createRequest() {
	var ajaxRequest;
	
	try { ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); }		
	catch (e1) {
		try { ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch (e2) { ajaxRequest = new XMLHttpRequest(); }
	}
	
	return ajaxRequest;
}

function processPostcode() {
	var sPostcode = document.forms['find_nearest'].elements['postcode'].value;

	if (sPostcode.length > 0) {
		var localSearch = new GlocalSearch();
		localSearch.setSearchCompleteCallback(null, function() {
				if (localSearch.results[0]) {
					document.forms['find_nearest'].elements['lat'].value = localSearch.results[0].lat;
					document.forms['find_nearest'].elements['lon'].value = localSearch.results[0].lng;
					document.forms['find_nearest'].submit();
				} else {
					alert('Unable to find postcode - please enter an alternative and try again.');
					document.getElementById('fn_processing').style.display = 'none';
					document.getElementById('fn_submit').style.display = 'inline';
				}
			});

		localSearch.execute(sPostcode + ", UK");
		document.getElementById('fn_submit').style.display = 'none';
		document.getElementById('fn_processing').style.display = 'inline';
	}
}

function processPostcodeViaCache() {
	document.getElementById('fn_submit').style.display = 'none';
	document.getElementById('fn_processing').style.display = 'inline';
	
	var sPostcode = document.forms['find_nearest'].elements['postcode'].value;
	var ajax = createRequest();
	
	ajax.open('get', "geocode_postcode.html?postcode="+sPostcode);
	ajax.onreadystatechange = function() {
		if (ajax.readyState == 4) {
			var xmlDoc = ajax.responseXML;
			var markers = xmlDoc.documentElement.getElementsByTagName("postcode");
			
			if ((markers.length > 0) && (markers[0].getAttribute('unavailable') == 0)) {
				document.forms['find_nearest'].elements['lat'].value = markers[0].getAttribute('latitude');
				document.forms['find_nearest'].elements['lon'].value = markers[0].getAttribute('longitude');
				document.forms['find_nearest'].submit();
			} else {
				processPostcode();
			}
		}
	}	
	ajax.send(null);
}