/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 * Fichier     : googleMaps.js
 * Date        : 16/07/08
 * Auteur      : Mourouvin Cedric
 * Description : fonctions de manipulation des cartes Google Maps
 * 
 * Details     : en-tetes
 *			   - initMiniMap(no_etude, gid, ech, div)
 *             - initBigMap(div)
 *			   - loadKMLonBigMap (nos_echelles,nos_etudes)
 *             - resetBigMap()
 *             - fillBigMap(nos_etudes)
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
 	/* Variables communes */
	var kmlFileM, tmpKML  ; /* Les variables pour les chargements de couche KML */
	var miniMap = '' ; /* Nom principal de l'instance de la mini carte */
	var bigMap = '' ;  /* Nom principal de l'instance de la grande carte */
	
	/*	Fonction : initMiniMap(no_etude, gid, div)
	 *		- no_etude : numero(s) d'etude(s) que l'on veut charger sur la carte
	 *		- gid : indique si l'etude dispose bien d'une donnee geographique
	 *		- div : div ou on veut afficher la carte
	 *      - ech : echelle du contour a charger
	 *  Pas de zoom possible, pas de controle special (affichage centre, statique)
	 */
	function initMiniMap(no_etude, gid, ech, div) {
		
		// Existence d'un contour et compatibilite du navigateur
	    if ( GBrowserIsCompatible() && gid != '' ) {
	    
	      miniMap = new GMap2(document.getElementById(div));
	      kmlFileM = new GGeoXml("http://refersolstmp.orleans.inra.fr/georefersols/include/kml.php?no_etude="+no_etude+"&ech="+ech);
	      miniMap.addOverlay(kmlFileM); // Chargement du fichier KML
	      miniMap.disableInfoWindow() ; // Empeche l'affichage d'infobulle
	    
	      // Options de la carte
	      miniMap.setCenter(new GLatLng(47,2.5), 3); // Centrage sur la France au demarrage
	      miniMap.disableDragging() ; // Pas de deplacement sur la mini carte
	      kmlFileM.gotoDefaultViewport(miniMap) ; // Centrage sur le KML charge
	 
	    }
	     
	}
	
	/*	Fonction : initBigMap(div)
	 *		- divB : div ou on veut afficher la carte
	 *  Plus d'options que la miniMap :
	 *      - Large controle(regle de zoom)
	 *      - Zoom à la molette
	 */
	function initBigMap(divB) {
	
		// Compatibilite du navigateur
	    if ( GBrowserIsCompatible() ) {
	    
			bigMap = new GMap2(document.getElementById(divB));
			bigMap.addControl(new GLargeMapControl());
			bigMap.addControl(new GMapTypeControl());
			
			// Options de la carte
			bigMap.enableScrollWheelZoom() ; // Permettre le zoom a la molette
			bigMap.disableDoubleClickZoom() ; // Desactiver le zoom au double click
			bigMap.setCenter( new GLatLng(47,2) , 6); // Centrage sur la France au demarrage
			
	    }

	}
	
	
	/*	Fonction : loadKMLonBigMap (nos_etudes, echelle)
	 *		- nos_etudes : les numeros d'etudes a charger
	 *		- echelle : l'echelle pour filtrer (si null, on prends nos_etudes au complet) 
	 *     
	 */
	function loadKMLonBigMap (nos_echelles,nos_etudes) {
	
		
		var divObjMessage = (window.parent.document.getElementById) ? window.parent.document.getElementById('rechercherMessage') : eval("window.parent.document.all['rechercherMessage']");
		
		if ( nos_echelles != '' )
		{
			divObjMessage.innerHTML = "" ;
			tmpKML = new GGeoXml("http://refersolstmp.orleans.inra.fr/georefersols/include/kml.php?no_etude="+nos_etudes+"&ech="+nos_echelles);
			bigMap.addOverlay(tmpKML); // Chargement du fichier KML
			tmpKML.gotoDefaultViewport(bigMap) ;
		}
		else
		{// On affiche juste un message sur la carte
			divObjMessage.innerHTML = "Aucune échelle selectionnée" ;
		}
		
	}
	
	/*	Fonction : resetBigMap()
	 *		- Enleve toutes les couches presentes sur la grande carte bigMap
	 *      - Decoche les checkbox eventuellement coochee
	 */     
	function resetBigMap() {
	
		// Enleve toutes les couches de bigMap
		bigMap.clearOverlays() ;
		
		// Decoche le liste des echelles
		var echelle = document.forms['formEchelle'].elements['choixEchelle'] ;
		if( !isNaN(echelle.value) ) // Une seule case a cocher
			echelle.checked = false ;
		else
		{// Un tableau de checkbox
			for ( i=0 ; i < echelle.length ; i++)
			echelle[i].checked = false ;
		}
		
		var divObjMessage = (window.parent.document.getElementById) ? window.parent.document.getElementById('rechercherMessage') : eval("window.parent.document.all['rechercherMessage']");
		divObjMessage.innerHTML = "Aucune échelle selectionnée" ;
		
	}
	
	/*	Fonction : fillBigMap(nos_etudes)
	 *		- Charge tous les contours de la recherche sur la grande carte bigMap
	 *      - nos_etudes : liste des etudes a afficher
	 *		- all : a true si on veut un chargement total
	 *      - NB => on connait les echelles via le tableau des checkbox "choixEchelle"
	 *     
	 */     
	function fillBigMap(nos_etudes,all) {

		var stringEchelles = '' ;
		var echelle = document.forms['formEchelle'].elements['choixEchelle[]'] ;
		
		// Verifie si tout est deja coche
		var allChecked = true ;
		
		
		if( !isNaN(echelle.value) ) {
		// Cas d'une seule echelle => choixEchelle n'est pas un tableau
		// On a directement sa valeur 
		
			allChecked = false ;
		
			if ( all == true ) {// Cas de depart [ Tout cocher ]
			
				stringEchelles = echelle.value ;
				echelle.checked = true ;
			}
			else { // all == false
				
				if( echelle.checked == true )
				{
					stringEchelles = echelle.value ;
					echelle.checked = true ;
				}
				else
				{// On enleve juste le contour en décochant
					echelle.checked = false ;
					stringEchelles = '' ;
				}
			}
		}
		else {
		
		
			for ( i=0 ; i < echelle.length ; i++)
				allChecked &= echelle[i].checked ;
		
			// On coche toutes les cases "[ Tout cocher ]"
			if ( all == true )
				for ( i=0 ; i < echelle.length ; i++) 
					echelle[i].checked = true ;
		
			// Parcours de la liste de base et creation d'une liste d'echelles
			for ( i=0 ; i < echelle.length ; i++ )  {
			
				if ( echelle[i].checked == true  ) {
					if ( echelle[i].value == '' )
						stringEchelles += "NULL," ;
					else
						stringEchelles += echelle[i].value + "," ;
				}	
			}
			
			// Fin de la construction de la liste des echelles (on enlève la , superflue)
			stringEchelles = stringEchelles.substr(0,stringEchelles.lastIndexOf(",")) ;
	
		}
			
		// Verification avant chargement des contours
		if ( !allChecked ) {
			bigMap.clearOverlays() ; // Nettoie la map
			loadKMLonBigMap(stringEchelles, nos_etudes) ;
		}
		
	}
	
	
	
	
	
	
	
