// JavaScript Document

	// Add HTML decoding support
	function decodeHTMLString(value) {
		var div = document.createElement('div');
		div.innerHTML = value;
		return div.childNodes[0].nodeValue;
	}
	
	// Strip HTML comment
	function stripComment(value) {
		return value.substr(value.indexOf('<!--') + 4, value.indexOf('-->') - 4);
	}

	// Advanced City search script
	var AdvancedCitySearch;
	var AdvancedCitySearchID;
	var AdvancedCitySearchTextBox;
	var AdvancedCitySearchProvince;
	var AdvancedCitySearchTableRows;
	var AdvancedAJAXCities;

	function AdvancedCitySearchInit() {
		AdvancedCitySearch = document.getElementById('AdvancedCitySearchContainer');
		AdvancedCitySearchID = document.getElementById('AdvancedSearchCityID');
		AdvancedCitySearchTextBox = document.getElementById('AdvancedSearchCity');
		AdvancedCitySearchProvince = document.getElementById('AdvancedSearchProvince');
		AdvancedCitySearchTableRows = document.getElementById('AdvancedCitySearchTable').getElementsByTagName("tr");
		AdvancedAJAXCities = document.getElementById('AdvancedAJAXCities');

		AdvancedCitySearchTextBox.LastSearch = AdvancedCitySearchTextBox.value;
		AdvancedCitySearchTextBox.Timer = 0;
		AdvancedCitySearchTextBox.Matched = (AdvancedCitySearchTextBox.value.length > 0);
		AdvancedCitySearchTextBox.HasFocus = false;
		AdvancedCitySearchTextBox.PreviousRow = -1;
		AdvancedCitySearchTextBox.PreviousRowClassName = '';
		AdvancedCitySearchTextBox.SelectedRow = -1;
	}

	function AdvancedCitySearchFocus(hint) {
		AdvancedCitySearchTextBox.className = "FormTextBox Focus";
		AdvancedCitySearchTextBox.HasFocus = true;
		if (AdvancedCitySearchTextBox.value == hint)
			AdvancedCitySearchTextBox.value = '';
		else
			AdvancedCitySearchProcess();
	}

	function AdvancedCitySearchKeyDown(event) {
		AdvancedCitySearchTableRows = document.getElementById('AdvancedCitySearchTable').getElementsByTagName("tr");
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == 38) {
			if (AdvancedCitySearchTableRows.length > 0)
				AdvancedCitySearchHighlightRow(AdvancedCitySearchTextBox.SelectedRow - 1);
			return false;
		}
		else if (keyCode == 40) {
			if (AdvancedCitySearchTableRows.length > 0)
				AdvancedCitySearchHighlightRow(AdvancedCitySearchTextBox.SelectedRow + 1);
			return false;
		}
		else if (keyCode == 13) {
			if (AdvancedCitySearchTableRows.length > 0 && AdvancedCitySearchTextBox.SelectedRow >= 0)
				AdvancedCitySearchSelect(stripComment(AdvancedCitySearchTableRows[AdvancedCitySearchTextBox.SelectedRow].getElementsByTagName("td")[0].innerHTML), AdvancedCitySearchTableRows[AdvancedCitySearchTextBox.SelectedRow].getElementsByTagName("td")[1].innerHTML)
			else if (AdvancedCitySearchTableRows.length > 0 && AdvancedCitySearchTextBox.SelectedRow < 0)
				AdvancedCitySearchSelect(stripComment(AdvancedCitySearchTableRows[0].getElementsByTagName("td")[0].innerHTML), AdvancedCitySearchTableRows[0].getElementsByTagName("td")[1].innerHTML)
			return false;
		}
		return true;
	}

	function AdvancedCitySearchKeyUp(event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == 13)
			return false;

		AdvancedCitySearchProcess();
		return true;
	}

	function AdvancedCitySearchKeyPress(event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == 13)
			return false;
		
		return true;
	}

	function AdvancedCitySearchProcess() {
		if (AdvancedCitySearchTextBox.value != AdvancedCitySearchTextBox.LastSearch) {
			if (AdvancedCitySearchTextBox.Timer > 0) {
				clearTimeout(AdvancedCitySearchTextBox.Timer);
				AdvancedCitySearchTextBox.Timer = 0;
			}
			AdvancedCitySearchTextBox.Matched = false;
		}
		
		if (AdvancedCitySearchTextBox.value.length >= 2) {
			if (AdvancedCitySearchTextBox.value != AdvancedCitySearchTextBox.LastSearch) {
				AdvancedCitySearchTextBox.LastSearch = AdvancedCitySearchTextBox.value;
				AdvancedCitySearchTextBox.Timer = setTimeout('AdvancedCitySearchLookup();', 500);
			}
		}
		else {
			AdvancedCitySearch.style.display = 'none';
		}
	}

	function AdvancedCitySearchLookup() {
		AdvancedAJAXCities.innerHTML = '<table cellpadding="0" cellspacing="0" border="0" style="width: 310px; height: 80px;"><tr><td style="width: 100%; height: 100%; text-align: center; vertical-align: middle;"><table cellpadding="4" cellspacing="0" border="0" style="margin: 0 auto;"><tr><td><img alt="" src="/Design/Misc/Spinner.gif" style="width: 16px; height: 16px;" /></td></tr></table></td></tr></table><table id="CitySearchTable" class="defaultGridView" cellspacing="0" cellpadding="0" border="0"></table>';					
		AdvancedCitySearch.style.display = '';
		AdvancedCitySearchID.value = 0;
		AdvancedCitySearchTextBox.PreviousRow = -1;
		AdvancedCitySearchTextBox.SelectedRow = -1;
		AdvancedCitySearchTextBox.Timer = ajaxRequest('/Shared/Helpers/AdvancedAJAXCities.html?City=' + encodeURIString(AdvancedCitySearchTextBox.value) + '&Province=' + encodeURIString(AdvancedCitySearchProvince.value), 'AdvancedAJAXCities');
	}

	function AdvancedCitySearchSelect(id, city) {
		AdvancedCitySearchID.value = id;
		AdvancedCitySearchTextBox.value = decodeHTMLString(city);
		AdvancedCitySearchTextBox.LastSearch = city;
		AdvancedCitySearchTextBox.Matched = true;
		AdvancedCitySearchTextBox.HasFocus = false;
		setTimeout('AdvancedCitySearchClose();', 500);
	}

	function AdvancedCitySearchHighlightRow(row) {
		AdvancedCitySearchTableRows = document.getElementById('AdvancedCitySearchTable').getElementsByTagName("tr");
		if (AdvancedCitySearchTextBox.PreviousRow >= 0)
			AdvancedCitySearchTableRows[AdvancedCitySearchTextBox.PreviousRow].className = AdvancedCitySearchTextBox.PreviousRowCssClass;

		AdvancedCitySearchTextBox.SelectedRow = row; 
		
		if (AdvancedCitySearchTextBox.SelectedRow < 0)
			AdvancedCitySearchTextBox.SelectedRow = AdvancedCitySearchTableRows.length - 1;
		else if (AdvancedCitySearchTextBox.SelectedRow >= AdvancedCitySearchTableRows.length)
			AdvancedCitySearchTextBox.SelectedRow = 0;

		AdvancedCitySearchTextBox.PreviousRow = AdvancedCitySearchTextBox.SelectedRow;					
		AdvancedCitySearchTextBox.PreviousRowCssClass = AdvancedCitySearchTableRows[AdvancedCitySearchTextBox.SelectedRow].className;
		AdvancedCitySearchTableRows[AdvancedCitySearchTextBox.SelectedRow].className = 'defaultGridViewSelectedRow';
	}		

	function AdvancedCitySearchClose() {
		if (!AdvancedCitySearchTextBox.HasFocus) {
			AdvancedCitySearch.style.display = 'none';
		}
	}

	function AdvancedCitySearchBlur(hint) {
		AdvancedCitySearchTextBox.HasFocus = false;
		if (AdvancedCitySearchTextBox.value == '') {
			AdvancedCitySearchTextBox.value = hint;
			AdvancedCitySearchTextBox.className = "FormTextBox Blur";
		}
		else
			AdvancedCitySearchTextBox.className = "FormTextBox Focus";
		setTimeout('AdvancedCitySearchClose();', 500);
	}
