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


//-------------------------------------------------------------------------------------------
// // Recherche la ou les provinces positionné sur le point données

function whereAreWe(position)
{
	var provinceFound = new Array();
		
	for (var p=1; p<provincesListIndex; p++)
	{
		// Recuperer le bounds de chaque trail
		var strParam = provincesList[p].sw + "," + provincesList[p].ne;
		var param = strParam.split(',');  // split les param
		var provinceBounds  = new GLatLngBounds(new GLatLng(param[0],param[1]), new GLatLng(param[2],param[3]));
					
		//Si le point central de la map est dans le bound de la province on ajoute la province
		if (provinceBounds.contains(position))
			provinceFound.push(p);
	}
	// Renvoi l'index des provinces trouvés
	return provinceFound;
}


//-------------------------------------------------------------------------------------------
// Parcourir les sentiers et afficher ceux dont la province est visualiser
// Appel sur zoom compact trail seulement et affiché dans la geoList

function showTrailsByProvinces()
{
	var selectGeoList = document.getElementById('geoList');
	selectGeoList.options.length = 0;	// Effacer contenu de select

	var provinceSearch = new Array();
	var showAllTrails = true;
	var nbOpt = 0;
	
	// Si different de minZoom (3)
	if(mapZoom.actualZoom != mapZoom.minZoom)
		provinceSearch = whereAreWe(map.getCenter());	// recherche la ou les provinces visualisés sur la MAP
			
	// Si des provinces sont trouvés
	if(provinceSearch.length > 0)
		showAllTrails = false; // montrer seulement les sentiers par provinces trouvés

	// parcourir sentier et afficher les sentier par province visualisés
	for (var t=0; t<trailListIndex; t++)
	{							
		if(showAllTrails == true) // montrer tout les sentiers
			selectGeoList.options[nbOpt++] = new Option(trailsList[t].number + ", " + trailsList[t].province + ", " + trailsList[t].name, trailsList[t].sw + ", " + trailsList[t].ne + ", " + t);
		
		// Afficher les sentier des province trouvés
		else {			
			for (var p=0; p<provinceSearch.length; p++)
			{
				if(provincesList[provinceSearch[p]].code == trailsList[t].province){
					selectGeoList.options[nbOpt++] = new Option(trailsList[t].number + ", " + trailsList[t].province + ", " + trailsList[t].name, trailsList[t].sw + ", " + trailsList[t].ne + ", " + t);
					break;
				}
			}
		}
	}
}


//-------------------------------------------------------------------------------------------
// Affichage des sentiers en ménoire avec la global mappedExtendTrails
// Appel sur zoom extend trail seulement et affiché dans la geoList

function showTrailsByPosition()
{
	var selectGeoList = document.getElementById('geoList');
	selectGeoList.options.length = 0;	// Effacer contenu de select
	
	for (var t=0; t<mappedExtendTrails.length; t++)
		selectGeoList.options[t] = new Option(trailsList[mappedExtendTrails[t]].number + ", " + trailsList[mappedExtendTrails[t]].province + ", " + trailsList[mappedExtendTrails[t]].name, trailsList[mappedExtendTrails[t]].sw + ", " + trailsList[mappedExtendTrails[t]].ne + ", " + mappedExtendTrails[t]);
}


//-------------------------------------------------------------------------------------------
// Recherche du zoom qui permet de voir la trail près de chez vous 5 / 9 / 11
// par defaut si aucun sentier n'est près de la location -  le zoom minimun est de 5
// Les zoom de cet fonction ne font pas références a  tLocatorZoom
// Les zoom font références au zoom google map

function trailNearYou(location)
{	
	var zoom = 5;
	var t, strParam, param, trailBounds;
	
	// A partir du point de location creation d'un bounds pour le zoom 11 et 9
	var locationBounds11  = new GLatLngBounds(new GLatLng((location.y *1) - 0.07, (location.x *1) - 0.25), new GLatLng((location.y *1) + 0.085, (location.x *1) + 0.25));
	var locationBounds09  = new GLatLngBounds(new GLatLng((location.y *1) - 0.3, (location.x *1) - 1.0), new GLatLng((location.y *1) + 0.35, (location.x *1) + 1.0));
	
	// Parcourir les sentiers
	for(var t=0; t<trailListIndex; t++)
	{											
		// Recuperer le bounds de chaque trail
		strParam = trailsList[t].sw + "," + trailsList[t].ne;
		param = strParam.split(',');  // split les param
		trailBounds  = new GLatLngBounds(new GLatLng(param[0],param[1]), new GLatLng(param[2],param[3]));
			
		// Si le sentier est dans la zone de location - On donne le zoom 11
		if (trailBounds.intersects(locationBounds11))
		{
			zoom = 11;
			break;
		}
		// Sinon on regarde pour le zoom 9
		else if (trailBounds.intersects(locationBounds09))
			zoom = 9;		
	}

	return mapZoom.findZoomInArray(zoom); // Trouver le zoom dans l'index du tableau tLocatorZoom
}
