// 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);
	}

	// City search script
	var CitySearch;
	var CitySearchID;
	var CitySearchTextBox;
	var CitySearchProvince;
	var CitySearchTableRows;
	var AJAXCities;

	function CitySearchInit() {
		CitySearch = document.getElementById('CitySearchContainer');
		CitySearchID = document.getElementById('SearchCityID');
		CitySearchTextBox = document.getElementById('rVille');
		CitySearchProvince = document.getElementById('SearchProvince');
		CitySearchTableRows = document.getElementById('CitySearchTable').getElementsByTagName("tr");
		AJAXCities = document.getElementById('AJAXCities');

		CitySearchTextBox.LastSearch = CitySearchTextBox.value;
		CitySearchTextBox.Timer = 0;
		CitySearchTextBox.Matched = (CitySearchTextBox.value.length > 0);
		CitySearchTextBox.HasFocus = false;
		CitySearchTextBox.PreviousRow = -1;
		CitySearchTextBox.PreviousRowClassName = '';
		CitySearchTextBox.SelectedRow = -1;
	}

	function CitySearchFocus(hint) {
		//CitySearchTextBox.className = "FormTextBox Focus";
		CitySearchTextBox.style.color='#000';
		CitySearchTextBox.HasFocus = true;
		if (CitySearchTextBox.value == hint)
			CitySearchTextBox.value = '';
		else
			CitySearchProcess();
	}

	function CitySearchKeyDown(event) {
		CitySearchTableRows = document.getElementById('CitySearchTable').getElementsByTagName("tr");
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == 38) {
			if (CitySearchTableRows.length > 0)
				CitySearchHighlightRow(CitySearchTextBox.SelectedRow - 1);
			return false;
		}
		else if (keyCode == 40) {
			if (CitySearchTableRows.length > 0)
				CitySearchHighlightRow(CitySearchTextBox.SelectedRow + 1);
			return false;
		}
		else if (keyCode == 13) {
			if (CitySearchTableRows.length > 0 && CitySearchTextBox.SelectedRow >= 0)
				CitySearchSelect(stripComment(CitySearchTableRows[CitySearchTextBox.SelectedRow].getElementsByTagName("td")[0].innerHTML), CitySearchTableRows[CitySearchTextBox.SelectedRow].getElementsByTagName("td")[1].innerHTML, true)
			else if (CitySearchTableRows.length > 0 && CitySearchTextBox.SelectedRow < 0)
				CitySearchSelect(stripComment(CitySearchTableRows[0].getElementsByTagName("td")[0].innerHTML), CitySearchTableRows[0].getElementsByTagName("td")[1].innerHTML, true)
			return false;
		}
		return true;
	}

	function CitySearchKeyUp(event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == 13)
			return false;

		CitySearchProcess();
		return true;
	}

	function CitySearchKeyPress(event) {
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == 13)
			return false;
		
		return true;
	}

	function CitySearchProcess() {
		if (CitySearchTextBox.value != CitySearchTextBox.LastSearch) {
			if (CitySearchTextBox.Timer > 0) {
				clearTimeout(CitySearchTextBox.Timer);
				CitySearchTextBox.Timer = 0;
			}
			CitySearchTextBox.Matched = false;
		}
		
		if (CitySearchTextBox.value.length >= 2) {
			if (CitySearchTextBox.value != CitySearchTextBox.LastSearch) {
				CitySearchTextBox.LastSearch = CitySearchTextBox.value;
				CitySearchTextBox.Timer = setTimeout('CitySearchLookup();', 500);
			}
		}
		else {
			CitySearch.style.display = 'none';
		}
	}

	function CitySearchLookup() {
		AJAXCities.innerHTML = '<table cellspacing="0" style="border:0px; padding:0px; width: 310px; height: 80px;"><tr><td style="width: 100%; height: 100%; text-align: center; vertical-align: middle;"><table cellspacing="0" style="border:0px; padding:4px;  margin: 0px 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" style="border:0px; padding:0px;"></table>';					
		CitySearch.style.display = '';
		CitySearchID.value = 0;
		CitySearchTextBox.PreviousRow = -1;
		CitySearchTextBox.SelectedRow = -1;
		CitySearchTextBox.Timer = ajaxRequest('/Shared/Helpers/AJAXCities.html?City=' + encodeURIString(CitySearchTextBox.value) + '&Province=' + encodeURIString(CitySearchProvince.value), 'AJAXCities');
	}

	function CitySearchSelect(id, city, withsubmit) {
		CitySearchID.value = id;
		CitySearchTextBox.value = decodeHTMLString(city);
		CitySearchTextBox.LastSearch = city;
		CitySearchTextBox.Matched = true;
		CitySearchTextBox.HasFocus = false;
		if (withsubmit)
		{
			if (document.getElementById('rCodePostal').value == 'Code postal...')
				document.getElementById('rCodePostal').value = '';
			if (document.getElementById('rTypeCours').value == 'Type de cours...')
				document.getElementById('rTypeCours').value = '';
			if (document.getElementById('rVille').value == 'Ville...')
				document.getElementById('rVille').value = '';
			theForm.action = '/RecherchePostBack.html';
			__doPostBack('submitSearch', '');
		}
		else
			setTimeout('CitySearchClose();', 500);
	}

	function CitySearchHighlightRow(row) {
		CitySearchTableRows = document.getElementById('CitySearchTable').getElementsByTagName("tr");
		if (CitySearchTextBox.PreviousRow >= 0)
			CitySearchTableRows[CitySearchTextBox.PreviousRow].className = CitySearchTextBox.PreviousRowCssClass;

		CitySearchTextBox.SelectedRow = row; 
		
		if (CitySearchTextBox.SelectedRow < 0)
			CitySearchTextBox.SelectedRow = CitySearchTableRows.length - 1;
		else if (CitySearchTextBox.SelectedRow >= CitySearchTableRows.length)
			CitySearchTextBox.SelectedRow = 0;

		CitySearchTextBox.PreviousRow = CitySearchTextBox.SelectedRow;					
		CitySearchTextBox.PreviousRowCssClass = CitySearchTableRows[CitySearchTextBox.SelectedRow].className;
		CitySearchTableRows[CitySearchTextBox.SelectedRow].className = 'defaultGridViewSelectedRow';
	}		

	function CitySearchClose() {
		if (!CitySearchTextBox.HasFocus) {
			CitySearch.style.display = 'none';
		}
	}

	function CitySearchBlur(hint) {
		CitySearchTextBox.HasFocus = false;
		if (CitySearchTextBox.value == '') {
			CitySearchTextBox.value = hint;
			//CitySearchTextBox.className = "FormTextBox Blur";
		CitySearchTextBox.style.color='#999';
		}
		else
			//CitySearchTextBox.className = "FormTextBox Focus";
		CitySearchTextBox.style.color='#000';
		setTimeout('CitySearchClose();', 500);
	}
