﻿// JScript File

var currentTownValue;
var origTownValue = null;

var suburbSearchField;
var suburbResults;

function InitLoadTowns()
{
	if (document.getElementById(contentPfx + "uxSuburbTown"))
	{
		document.getElementById(contentPfx + "uxSuburbTown").onkeyup = SearchTowns;
		document.onclick = KillResults;
	}
	//think we need to do this for safari
	var ipts = document.getElementsByTagName("input");
	for (var i=0; i<ipts.length; i++)
	{
		if (ipts[i].className.indexOf("AutoComplete") != -1)
		{
			ipts[i].onkeyup = SearchTowns;
			document.onclick = KillResults;
		}
	}
	
}

function SearchTowns(evt)
{

	if (window.event) evt = window.event;
	suburbSearchField = (evt.srcElement) ? evt.srcElement : evt.target;

	if (document.getElementById("Results"))
	{
		suburbResults = document.getElementById("Results");
	}
	else
	{
		suburbResults = suburbSearchField.parentNode.getElementsByTagName("div")[0];
	}

	currentTownValue = suburbSearchField.value;
	
	stateValue = document.getElementById(contentPfx + "ddlState").value;
	regionValue = document.getElementById(contentPfx + "uxRegion").value;
	
	var charCode = (evt.charCode) ? evt.charCode : evt.keyCode;
	
	if (charCode == 38 || charCode == 40 || charCode == 63232 || charCode == 63233) // up/down arrows, for IE, Firefox, Safari
	{
		HandleKey(evt);
	}
	else
	{
		if (currentTownValue != origTownValue)
		{
			origTownValue = currentTownValue;
			xmlRequest = null;
			GetXml("/Script/LoadTowns.aspx?suburb=" + origTownValue + "&state=" + stateValue + "&region=" + regionValue, DisplayTowns);
		}
	}
}

var safariTimer = null;
function HandleKey(evt)
{
	if (navigator.userAgent.indexOf("Safari") != -1)
	{
		if (safariTimer != null)
		{
			safariTimer = null;
			return;
		}
		safariTimer = setTimeout("KillSafariTimer()", 10);
	}
	if (evt != undefined && suburbResults.style.display != "none")
	{
		var charCode = (evt.charCode) ? evt.charCode : evt.keyCode;
	
		var search = suburbSearchField;
		var results = suburbResults.getElementsByTagName("div");
		var action = null;
		if (charCode == 38 || charCode == 40 || charCode == 63232 || charCode == 63233) // up/down arrows
		{
			var foundSelected = false;
			for (var i=0; i<results.length; i++)
			{
				if (results[i].className.indexOf("Selected") != -1)
				{
					if (charCode == 38 || charCode == 63232)
					{
						results[i].className = results[i].className.replace(" Selected", "");
						if (i-1 >= 0)
						{
							results[i-1].className += " Selected";
							
							if(document.all){
								search.value = results[i-1].innerText;
							} else{
								search.value = results[i-1].textContent;
							}
						}
						else
						{
							search.value = origTownValue;
						}
					}
					else
					{
						if (i+1 < results.length)
						{
							results[i].className = results[i].className.replace(" Selected", "");
							results[i+1].className += " Selected";
							
							if(document.all){
								search.value = results[i+1].innerText;
							} else{
								search.value = results[i+1].textContent;
							}
						}
					}
					foundSelected = true;
					break;
				}
			}
			if (!foundSelected && (charCode == 40 || charCode == 63233))
			{
				results[0].className += " Selected";
				
				if(document.all){
					search.value = results[0].innerText;
				} else{
					search.value = results[0].textContent;
				}
			}
		}
	}
}

function KillSafariTimer()
{
	safariTimer = null;
} 

function KillResults()
{
	if (document.getElementById("Results"))
	{
		document.getElementById("Results").style.display = "none";
	}
}

function DisplayTowns()
{
	var resultsNode = document.getElementById("Results");
	if (xmlRequest != null && xmlRequest.readyState == 4)
	{
		if (xmlRequest.status == 200)
		{
			resultsNode.innerHTML = "";
			var newHTML = "";
			var first = true;
			for (var i=0; i<xmlRequest.responseXML.childNodes.length; i++)
			{
				if (xmlRequest.responseXML.childNodes[i].nodeName == "suburbs")
				{
					var rs = xmlRequest.responseXML.childNodes[i];
					for (var j=0; j<rs.childNodes.length; j++)
					{
						if (rs.childNodes[j].nodeName == "suburb")
						{
							newHTML += "<div class=\"SuburbResult\" onmouseover=\"Highlight(this);\" onclick=\"SelectResult(this);\">" + rs.childNodes[j].getAttribute("sname") + "</div>";
						}
					}
					break;
				}
			}
			if (newHTML == "")
			{
				resultsNode.style.display = "none";
			} else
			{
				resultsNode.style.display = "block";
			}
			resultsNode.innerHTML = newHTML;
		}
	}
}

function Highlight(o)
{
	var results = document.getElementById("Results").getElementsByTagName("div");
	for (var i=0; i<results.length; i++)
	{
		results[i].className = results[i].className.replace(" Selected", "");
	}
	o.className += " Selected";
}

function SelectResult(o)
{
	if(document.all){
		suburbSearchField.value = o.innerText;
	} else{
		suburbSearchField.value = o.textContent;
	}
	suburbResults.style.display = "none";
}

