//***********************************************************
// Trail Locator Project
// The Trans Canada Trail
// http://www.tctrail.ca
// 
// Coding by Stephane Simard
// ssoutbox-tctrail@yahoo.com
//************************************************************


//-------------------------------------------------------------------------------------------
// Process de la recherche de type GeoCoding - Send to Google

function geoFinder()
{
	var address = document.getElementById('geoString').value;
	document.getElementById('geoString').value = "";
	
	// Vide
	if(address == "")	
		return;
	
	// Si l'adresse n'est pas valide - seulement des chiffres
	if(!isNaN(address))
	{
		alert(lang(2));
		inputFocus.focus();
		return;
	}
	
	// Send request to google
	var geocoder = new GClientGeocoder();
	geocoder.setBaseCountryCode("CA");	
	address = address + ", Canada";
	geocoder.getLocations(address, function(result) 
	{
		if (result.Status.code == G_GEO_SUCCESS)
		{
			var resultForm = document.getElementById('searchResultList');
			resultForm.options.length = 0;
			resultForm.options[0] = new Option(lang(7) + result.Placemark.length + lang(8), "");	
			resultForm.options[1] = new Option("" , "");	// espace vide dans le select
			
			var nbOpt = 2;
			for (var i=0; i<result.Placemark.length; i++) // Loop through the results, placing markers
			{
				var place = result.Placemark[i];
				var zLevel = Math.min(3*place.AddressDetails.Accuracy,17);
				var center = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
				var p = result.Placemark[i].Point.coordinates;
				
				// Insérer la location dans le searchList
				resultForm.options[nbOpt++] = new Option(i+1 + ". " + result.Placemark[i].address, p[1] + ", " + p[0] + ", " + zLevel + ", " + result.Placemark[i].address);
		
				// Aficher la recherche s'il y a un seul resultat et si le point est au canada uniquement
				if(result.Placemark.length == 1)
				{
					resultForm.selectedIndex = 2;
					showGeoLocation();
				}
			}
			
			resultForm.options[nbOpt++] = new Option(lang(21) , "cancel");	// Option cancel
			if(i != 1)	// Si plusieurs resultats
				showSearchResult();
		}else{
			alert(lang(9) + address + lang(10));	// aucun resultat
		}
	});
}


//-------------------------------------------------------------------------------------------
// Loading trail in selectbox trailList whit sorting & search mode

function trailsListView(value)
{
	// Determine la provenance de l'appel
	// Si value numeric = viewAllTrails button
	// Reset = mettre l'option de trie a 0 & mettre  trailString a vide
	if(!isNaN(value))
	{
		document.getElementById('trailProvinceList').selectedIndex = 0;
		document.getElementById('trailString').value = "";
	}
	
	var nbOpt=0;
	var selectTrailList = document.getElementById('trailList');					// Recuperer le select
	var provinceSearch = 1*document.getElementById('trailProvinceList').value;	// Recuperer l'option de trie par province
	var strSearch = document.getElementById('trailString').value.toLowerCase();	// Recuperer les element de la recherche en minuscule
	selectTrailList.options.length = 0;											// effacer le contenu du select
	
	for (var t=0; t<trailListIndex; t++)	// boucle sur les sentiers en memoire
	{
		var trailName = trailsList[t].name.toLowerCase();	// Recuperer nom de la trail
		var trailNumber = trailsList[t].number;				// Recuperer numero de la trail
		
		// provinceSearch = Canada
		if(provinceSearch == 0)
		{
			if(trailName.search(strSearch)>=0 || trailNumber.search(strSearch)>=0) // Search string options 
				selectTrailList.options[nbOpt++] = new Option(trailsList[t].number + ", " + trailsList[t].province + ", " + trailsList[t].name, trailsList[t].sw + ", " + trailsList[t].ne + ", " + t);
		}
		
		// Esle if - Sorting province is enable
		else if(provincesList[provinceSearch].code == trailsList[t].province)
		{
			if(trailName.search(strSearch)>=0 || trailNumber.search(strSearch)>=0)	// Search string options 
				selectTrailList.options[nbOpt++] = new Option(trailsList[t].number + ", " + trailsList[t].province + ", " + trailsList[t].name, trailsList[t].sw + ", " + trailsList[t].ne + ", " + t);
		}	
	}
	
	if(nbOpt == 0)	// aucun resultat
		selectTrailList.options[0] = new Option(lang(11) + strSearch + lang(10) + lang(13) + provincesList[provinceSearch].name,"");
	
	inputFocus.focus();
}
