$(document).ready(function(){
	$("span.states-findinfo select").change(statePicked)
	$("span.suburbs-findinfo select").change(suburbPicked)
	$("span.regions-findinfo select").change(regionPicked)

	function statePicked() {
		//find variables and objects we will need
		sType				= $(this).parents("li").attr("class");
		sSuburbName		= $("." + sType + " span.suburbs-findinfo select").attr("name")
		oSuburbSpan		= $("." + sType + " span.suburbs-findinfo");
		sRegionName		= $("." + sType + " span.regions-findinfo select").attr("name")
		oRegionSpan		= $("." + sType + " span.regions-findinfo");
		oPostCodeSpan	= $("." + sType + " span.postcode-findinfo");

		//since state has changeg reset everything
		oSuburbSpan.children("select").val('')
		oRegionSpan.children("select").val('')
		oPostCodeSpan.children("input").val('')

		//show loading
		oSuburbSpan.parents("li").children("span.loading-findinfo").show();
		oRegionSpan.parents("li").children("span.loading-findinfo").show();

		//run loading suburbs
		loadSuburbs(oSuburbSpan,sSuburbName,sType)
		loadRegions(oRegionSpan,sRegionName,sType)
	};

	function suburbPicked() {
		//find variables and objects we will need
		sType				= $(this).parents("li").attr("class");
		sRegionName		= $("." + sType + " span.regions-findinfo select").attr("name")
		oRegionSpan		= $("." + sType + " span.regions-findinfo");

		//show loading
		oRegionSpan.parents("li").children("span.loading-findinfo").show();

		//run loading suburbs
		loadRegions(oRegionSpan,sRegionName,sType)

		//set selected suburb data
		loadSuburbInfo(sType)
	};

	function regionPicked() {
		//find variables and objects we will need
		sType				= $(this).parents("li").attr("class");
		sSuburbName		= $("." + sType + " span.suburbs-findinfo select").attr("name")
		oSuburbSpan		= $("." + sType + " span.suburbs-findinfo");

		//show loading
		oSuburbSpan.parents("li").children("span.loading-findinfo").show();

		//run loading suburbs
		loadSuburbs(oSuburbSpan,sSuburbName,sType)
	};

	function loadSuburbs(oSpan,sSelectName,sType) {
		var iStateID	= $("." + sType + " span.states-findinfo select").val()
		var iRegionID	= $("." + sType + " span.regions-findinfo select").val()
		var iSuburbID	= $("." + sType + " span.suburbs-findinfo select").val()

		//disable any buttons that need to be
		$("input.disable-findinfo, select.disable-findinfo, span.disable-findinfo input, span.disable-findinfo select").attr("disabled", "disabled")

		$.get("ajaxSuburbs.asp",{iStateID: iStateID, iRegionID: iRegionID, iSuburbID: iSuburbID, sSelectName: sSelectName}, function(sData){
			//return the options
			oSpan.html(sData);

			//show loading
			oSpan.parents("li").children("span.loading-findinfo").hide();

			$('span.suburbs-findinfo select').bind('change', suburbPicked);

			//disable any buttons that need to be
			$("input.disable-findinfo, select.disable-findinfo, span.disable-findinfo input, span.disable-findinfo select").attr("disabled", "")
		})
	};

	function loadRegions(oSpan,sSelectName,sType) {
		var iStateID	= $("." + sType + " span.states-findinfo select").val()
		var iRegionID	= $("." + sType + " span.regions-findinfo select").val()
		var iSuburbID	= $("." + sType + " span.suburbs-findinfo select").val()

		//disable any buttons that need to be
		$("input.disable-findinfo, select.disable-findinfo, span.disable-findinfo input, span.disable-findinfo select").attr("disabled", "disabled")

		$.get("ajaxRegions.asp",{iStateID: iStateID, iRegionID: iRegionID, iSuburbID: iSuburbID, sSelectName: sSelectName}, function(sData){
			//return the options
			oSpan.html(sData);

			//show loading
			oSpan.parents("li").children("span.loading-findinfo").hide();
			$('span.regions-findinfo select').bind('change', regionPicked);

			//disable any buttons that need to be
			$("input.disable-findinfo, select.disable-findinfo, span.disable-findinfo input, span.disable-findinfo select").attr("disabled", "")
		})
	};

	function loadSuburbInfo(sType) {
		var iSuburbID	= $("." + sType + " span.suburbs-findinfo select").val()
		oSuburbSpan		= $("." + sType + " span.suburbs-findinfo");
		oRegionSpan		= $("." + sType + " span.regions-findinfo");
		oPostCodeSpan	= $("." + sType + " span.postcode-findinfo");

		$.getJSON("ajaxSuburbInfo.asp",{iSuburbID: iSuburbID}, function(aInfo){
			var sClass		= oPostCodeSpan.children("select input").attr("class")
			var sName		= oPostCodeSpan.children("select input").attr("name")
			
			oPostCodeSpan.children("select input").remove();

			if ( aInfo.length > 1 ) {
				oPostCodeSpan.html("<select name=" + sName + " class=" + sClass + "></select>")

				var options = '';

				for (var i = 0; i < aInfo.length; i++) {  
					options += "<option value=" + aInfo[i].sPostCode + ">" + aInfo[i].sPostCode + "</option>"
				}      
				oPostCodeSpan.children("select").html(options);
			} else {
				oPostCodeSpan.html("<input type='text' name='" + sName + "' class='" + sClass + "' value='" + aInfo[0].sPostCode + "' />")
			}

		  oRegionSpan.children("select").val(aInfo[0].sRegionID);
		})
	};
});
