/*fonctions pour les tableaux */

Array.prototype.inArray = function(val) {
   for(var i = 0; i < this.length; i++) {
      if(this[i] == val)
return true;
   }
   return false;
}


Array.prototype.removeElt = function(val) {
	var newTab= new Array();
   for(var i = 0; i < this.length; i++) {
      if(this[i] != val)
		newTab.push(this[i]); 
   }
   return newTab;
}
function GetCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}




//Partie de Yahoo!Map pour la page Synoptique.php
var map;
var img = new YImage("img/MarkerRondNoir.png", new YSize(20,20));
var staCachees;
var reg=new RegExp("%3B", "g");
if(GetCookie('staCachees') != null)
{
	//document.write("Chaîne d'origine : " + GetCookie('staCachees') + "<BR>");
	staCachees = GetCookie('staCachees').split(reg); //alert('loool');
	//for (var i=0; i<staCachees.length; i++) {
		//document.write("tableau[" + i + "] = " + staCachees[i] + "<BR>");}
}
else
	staCachees = new Array();
	
	
function createYMarker(point, html, sta, code) {
  var marker = new YMarker(point, img, code);
  YEvent.Capture(marker, EventsList.MouseClick,   
        function(){marker.openSmartWindow('<nobr>' + sta + '</nobr>');
					
					});
  
  marker.addLabel('');
  return marker;
}
//onEndGeoCode
function creerMarkerSta(point)
{
	var marker = new YMarker(point, img);
	
	return marker;
	
}
function modifLabelMarker(codeSta, label, libCapt)
{
	//alert('<label class="infoSynop"><br/><b>'+label+'</b></label>');
	map.getMarkerObject(codeSta).reLabel('<nobr><label class="infoSynop"><br/><b>'+label+'</b></label></nobr>');
	map.getMarkerObject(codeSta).addAutoExpand(libCapt);
}

function cacherAfficherMarker(cac)
{
	//alert(GetCookie('staCachees'));
	
	//if(GetCookie('staCachees') != null)
		//alert('cookie' + GetCookie('staCachees'));
	//alert('tab'+staCachees);
	if(cac.checked==false)
	{
		//alert('dans le if');
		map.getMarkerObject(cac.value).hide();
		//alert('avant push'+staCachees);
		staCachees.push(cac.value);
		//alert('apres push'+staCachees);
	}
	else
	{
		//alert('dans les else');
		map.getMarkerObject(cac.value).unhide();
		//alert('avant remove '+staCachees);
		staCachees = staCachees.removeElt(cac.value);
		//alert('apres remove '+staCachees);
	}
	var new_tab_js = staCachees.join(";");
	document.cookie='staCachees'+"="+escape(new_tab_js);
}


function toutCacher()
{
	
	
	var ids= map.getMarkerIDs();
	var i = 0;
	var taille=ids.length;
	for(i=0;i<taille;i++)
	{
		map.getMarkerObject(ids[i]).hide();
		staCachees.push(ids[i]);
	}
	
	var form = document.stations_form;
	for(i=0;i<taille;i++)
	{
		form.stas[i].checked=false;
	}
	
	var new_tab_js = staCachees.join(";");
	document.cookie='staCachees'+"="+escape(new_tab_js);
}

function toutMontrer()
{
	var ids= map.getMarkerIDs();
	var i = 0;
	var taille=ids.length;
	for(i=0;i<taille;i++)
	{
		map.getMarkerObject(ids[i]).unhide();
	}
	
	var form = document.stations_form;
	for(i=0;i<taille;i++)
	{
		form.stas[i].checked=true;
	}
	staCachees = new Array();
	var new_tab_js = staCachees.join(";");
	document.cookie='staCachees'+"="+escape(new_tab_js);
}

function CacherMontrerAuto()
{
	var ids= map.getMarkerIDs();
	var i = 0;
	var taille=ids.length;
	var form = document.stations_form;
	for(i=0;i<taille;i++)
	{
		if(form.stas[i].checked==false)
			map.getMarkerObject(ids[i]).hide();
	}
}
function afficherMap(tabCoord, tabSta, tabCodes, zoom, lat, lon)
{
	// Create a map object  
	map = new YMap(document.getElementById('ymap'));  
	
	
	//Ajout de l'évènement du changement de zoom
	//On sotcke le nouveau zoom dans un cookie "zoom" pour le garder en mémoire
	YEvent.Capture(map, EventsList.changeZoom, 
		function()
		{
			//code qui créer le cookie avec le nouveau zoom
			//document.cookie=nom+"="+escape(valeur);
			document.cookie='zoom'+"="+escape(map.getZoomLevel());
		});
	

	//AJout de l'évènement fin de bougeage de carte
	//on sotcke le nouveau centre dans 2 cookies ("lat" et "lon")
	YEvent.Capture(map, EventsList.endPan, 
		function()
		{
			//code qui créer deux cookies avec le nouveau centre
			//document.cookie=nom+"="+escape(valeur);
			document.cookie='lat'+"="+escape(map.getCenterLatLon().Lat);
			document.cookie='lon'+"="+escape(map.getCenterLatLon().Lon);
			
		});
    

	// Add map zoom (long) control  
    map.addZoomLong();  
   
    // Add the Pan Control  
    map.addPanControl();

	//Ajout des markers
	
	var i;
	
	var tabGeo = new Array();
	
	for(i=0;i<tabCoord.length;i++)
	{
		//var textFen= "<label class=\"infoSynop\"><br/><b>T&nbsp;°&nbsp;(air)&nbsp;:&nbsp;15°C</b></label>";
		//newMarker.openSmartWindow(textFen);
		map.addOverlay(createYMarker(new YGeoPoint(tabCoord[i][0], tabCoord[i][1]),'', tabSta[i], tabCodes[i]));
		tabGeo.push(new YGeoPoint(tabCoord[i][0], tabCoord[i][1]));
	}
	
	
	//On met la map en vue "Plan" -> YAHOO_MAP_REG
    // Set map type to either of: YAHOO_MAP_SAT, YAHOO_MAP_HYB, YAHOO_MAP_REG  
    map.setMapType(YAHOO_MAP_REG);  
   
  
	//Affichage de la carte
	
	//On vérifie si c'est le premier chargement de la carte ou un énième
	if(typeof(zoom)=='undefined' && typeof(lat)=='undefined')
	{//si premier affichage
	
		var ZC = map.getBestZoomAndCenter(tabGeo);
		map.drawZoomAndCenter(ZC.YGeoPoint, ZC.zoomLevel);
		
	}
	else if(typeof(zoom)!='undefined' && typeof(lat)!='undefined')
	{//si un énième affichage
			
			var centreMap = new YGeoPoint(lat, lon);
			map.drawZoomAndCenter(centreMap, zoom);
			
	}
	
	
}

//Partie de yahoo map sur la carte qui s'affiche sur la page station.php
var mapSta;
function mapStation(lat, longi)
{
	//Création de la carte
	mapSta = new YMap(document.getElementById('map'));
	
	// Add map zoom (long) control  
    mapSta.addZoomLong();  

	//Création du point de la station
	var point = new YGeoPoint(lat, longi);
	
	//Création du marker
	var marker =creerMarkerSta(point);
	
	//Choix du type de la carte (Plan)
	mapSta.setMapType(YAHOO_MAP_REG);  
	
	//Centrer la carte et zoomer
	mapSta.drawZoomAndCenter(point, 5); 
	
	//var ZC = mapSta.getBestZoomAndCenter(new Array(point)); //Zoom trop près !
	
	//mapSta.drawZoomAndCenter(ZC.YGeoPoint, ZC.zoomLevel);
	
	//alert(mapSta.getCenterLatLon().Lat);
	//ajout du marker sur la map
	mapSta.addOverlay(marker);
	
}

 