//************ Module de gestion de l'affichage *********
//
// Version V1
// Date : 06/04/2008
// Auteur: T. LARMIER
// (c) QoS telecom
//
//*********************************************************************

var map;   // Carte GoogleMAP     
var DrawCoverage = true; // Il faut représenter la couverture sur la carte
var punaise; // Punaise de lieu créé par la recherche d'adresse
var PinState=0; // Temoin si punaise affichée

	 
	

//function PutCoverage2() {
//	loading = true;
//	PutCoverage();

//}

function OnLoad() {
// Fonction affichant le message de chargement
   var oLMsg = document.getElementById('loadingMessage');
	
	oLMsg.style.display = ''; // Rend visible le message
	oLMsg.style.filter="alpha(opacity=70)";
}

function ZoomOnNet() {
        alert("lkjkjk" + IMark);
     //   map.panTo( NetMarkers[Net].Point );
  
}


function PutMarkers(){
// Fonction afficher les marker de réseaux 

   var NbMarker = NetMarkers.length; // Nombre de markers references
	var CurrentZoom=map.getZoom(); // Niveau de zoom actuel   
	var IMark = 0 ; // Indice de marker initialise a 0
	var options = { 
					icon : NET_ICON ,
               draggable : false ,
               clickable : true ,
               bouncy : false
                 }; 
   
   
   for ( IMark ; IMark < NbMarker ; IMark++ ) // Parcour tous les markers references
   	{
   	if (( CurrentZoom <=NetMarkers[IMark].ZoomMax )&&( CurrentZoom >=NetMarkers[IMark].ZoomMin ))
			    // Si ce Marker doit etre affiche dans le niveau de zoom actuel  
			{
			if ( ! NetMarkers[IMark].OnMap ) // Si il n'est pas encore affiche
			   {
			   
			 //  NetMarkers[IMark].Mark = new GMarker(NetMarkers[IMark].Point , options ); // Alors cree l'objet Marker
           	
			   map.addOverlay( NetMarkers[IMark].Mark ); // ajoute le marqueur dans la vue
			   NetMarkers[IMark].OnMap = true; // Temoin que le marker est maintenant affiche
			   }
			}
		else  // Si il ne doit pas etre affiche
			{
			if ( NetMarkers[IMark].OnMap ) // Si il est visible sur la carte
			   {
			   map.removeOverlay( NetMarkers[IMark].Mark ); // enleve le marqueur dans la vue
			   NetMarkers[IMark].OnMap = false; // Temoin que le marker est maintenant enleve
			   }
			}    
   	} 

}


function PutCoverage() {
// Fonction de egstion des couvertures. Affiche et efface les différentes couches référencées
// en fonction de la fenetre Googlemap de visualisation 
	var NbOverlay = AllCoverage.length; // Nombre de couches de couvertures référencées
	var CurrentZoom=map.getZoom(); // Niveau de zoom actuel 
	var Coverage=0; // indice de couche de couverture
	var AllIsLoaded=true; // Temoin que toutes les couvertures devant etre chargees le sont
	var oLMsg = document.getElementById('loadingMessage');
	var OneIsErased = false ; // Temoin qu'une couverture a été effacee
	
	OnLoad(); // Affiche le message de chargement 
	
	//document.body.style.cursor = "wait";
	
	for (Coverage;Coverage<NbOverlay;Coverage++)  // Parcours toutes les couches de couvertures référencées
		 { 
		 if (! DrawCoverage )  // Si il ne faut pas afficher les couvertures
		    {
		    if (AllCoverage[Coverage].OnMap )  //  Cette couche est elle présente dans la fenêtre ?
			    {
			    map.removeOverlay(AllCoverage[Coverage].geo ); // Alors il faut la retirer
			    AllCoverage[Coverage].OnMap=false;  // Indique que cette couche n'est plus présente dans la vue.
			    OneIsErased = true ;
			    }
			 }
			 else  // Si il faut afficher la couverture
			 {   	  
			 if (( CurrentZoom <=AllCoverage[Coverage].ZoomMax )&&( CurrentZoom >=AllCoverage[Coverage].ZoomMin ))
			    // Si cette couverture doit être afficher dans le niveau de zoom actuel  
			    {
				 if (AllCoverage[Coverage].bounds.intersects(map.getBounds()))  
				    // Si cette couverture est incluse dans la vue actuelle 
				    {				    
			       if (! AllCoverage[Coverage].OnMap ) // Si cette couverture n'est pas encore affichée
			          { 
			          AllCoverage[Coverage].geo= new GGeoXml(AllCoverage[Coverage].File );
			          map.addOverlay(AllCoverage[Coverage].geo ); // Ajoute la couverture à la vue
			          AllCoverage[Coverage].OnMap=true; // Indique que cette couvrture est présnte dans la vue
			          }
			       AllIsLoaded = ( (AllCoverage[Coverage].geo.hasLoaded() ) && ( AllIsLoaded ) );
			       //alert(Coverage + " " + AllIsLoaded );   
			       }
			       else // Si cette couverture n'est pas incluse dans la vue
			       {
			       if (AllCoverage[Coverage].OnMap) // Si la couverture est affichée
			          {
                   map.removeOverlay(AllCoverage[Coverage].geo ); // Alors il faut la retirer
			          AllCoverage[Coverage].OnMap=false; // Indique que cette couche n'est plus présente dans la vue.
			          OneIsErased = true ;
			     	    }
			       }
			    }
			    else // Si cette couverture ne doit pas être affichée dans le niveau de zoom actuel
			    {
			    if (AllCoverage[Coverage].OnMap ) // Si la couverture est affichée
			       {
			       map.removeOverlay(AllCoverage[Coverage].geo );// Alors il faut la retirer
			       AllCoverage[Coverage].OnMap=false; // Indique que cette couche n'est plus présente dans la vue.
			       OneIsErased = true ;
			       } 
			    } // Fin Pas dans zoom  		    
		    }  // Fin else if DrawCoverage
		 }   // Fin For	
		 
	PutMarkers(); // Gestion de l'affichage des markers
		 
	if ( (! AllIsLoaded) || OneIsErased ) // Si toutes les couverture, devant l'etre, ne sont pas chargees  
	   {                                  // Si une a ete effacee
		var to = window.setTimeout('PutCoverage()',500); // Alors Rappeler la fonction dans 500ms
	   }
	   else // Sinon si toutes les couvertures,devant l'etre, sont affichees et si aucune n'a ete effacee 
	   {
		oLMsg.style.display = 'none'; // Alors rendre invisible le message
	   }
		 	    
   }
	 
	 
function FrCenter() {
// Fonction recadrant sur la France entiere
   OnLoad(); // Afficghe le message de chargement
   setTimeout('map.setCenter(new GLatLng(46.860191,2.285156), 6)',500); // Recentre la carte après un délais 
	// Le delais permet de laisser le navigateur afficher le message de chargement
}	 
	
	
function ZoomPlus() {
// Fonction zoom
	OnLoad();// Afficghe le message de chargement
	setTimeout('map.zoomIn()',50);
	// Le delais permet de laisser le navigateur afficher le message de chargement
}	 

function ZoomMoins() {
// Fonction zoom dezoom
	OnLoad(); // Afficghe le message de chargement
	setTimeout('map.zoomOut()',50);
	// Le delais permet de laisser le navigateur afficher le message de chargement
}

	 	
function load() {
// Fonction appelée au chargement de la page
   var point = new GLatLng(0,0);
   var startzoom ;  
   
    
   InitVar();
   if  (! (navigator.appName=="Netscape")) 
       {  
        w=window.open("extinclud/firefox.html","pop1","width=400,height=300,scrollbars=yes"); 
       } 
   if (GBrowserIsCompatible())  // Si le navigateur est compatible
      {
      InitCoverage();	// Initialise le tableau des différentes couches       
      map = new GMap2(document.getElementById("map")); // Créé l'objet GoogleMap
      //map.addControl(new GSmallMapControl()); // Ajoute un controle de carte : zoom, direction
		map.addControl(new GMapTypeControl()); // Ajoute les boutons type de carte
		if (! Net==0 ) // Si au chargement de la page un réseau particulier est demande
         {
         point = AllCoverage[Net].bounds.getCenter(); // centre sur la couverture 
         startzoom = AllCoverage[Net].ZoomMin ; // Ajuste le niveau de zoom
         } 
         else  // Si aucun reseau appele a l'ouverture de la page alors fenetre sur france entiere
         {
         point = new GLatLng(46.860191,2.285156);
         startzoom = 6 ; 
         }
       if ( ! ( ( Rue == " " ) && ( Ville == " " ) && ( CP == " " ) ) ) // Si une adresse demandee 
          {
             document.getElementById('idAddr').value = Rue ; // Modifie les champs de la page
             document.getElementById('idville').value = Ville ; 
             document.getElementById('idcp').value = CP ;
             setTimeout('CtrAddr()',500); ; // Appel de la fonction recherche d'adresse
          } 
        
      map.setCenter( point , startzoom ); // Alors Centre la vue sur la France ou le reseau demande
      GEvent.addListener(map, "moveend", function () { PutCoverage();}); // Ajoute un handler si la carte bouge
      //GEvent.addListener(map, "movestart", function () { OnLoad();});
      
      PutCoverage(); // Affiche les couverture
      }
   }
   
   
    
function toggleMyKml() {
// Fonction bascule On Off la couverture
   if (DrawCoverage) // Si l'etat actuel est affiche la couverture 
      {
      DrawCoverage=false; // Nouvel etat : Ne pas afficher la couverture
      PutCoverage(); // Affiche la couverture
      document.getElementById('BtCouv').value= "Afficher"; // Change l'affichage du bouton
      } 
      else // Si l'etat actuel est ne pas afficher la couverture 
      {
      DrawCoverage=true; // Nouvel etat : afficher la couverture
      PutCoverage();// Affiche la couverture
      document.getElementById('BtCouv').value= "Effacer"; // Change l'affichage du bouton
      }    
   }
      
function CtrAddr() {
// Fonction centre et zoom sur l'adresse indiquée
// Fonction appellée par le bouton Rechercher
   var address; // Adresse complète
   var geocoder = new GClientGeocoder; // Créer un Objet geocoder
    	
   address = document.getElementById('idAddr').value + ", " +  // Construit l'adresse avec tous les champs
             document.getElementById('idville').value + " " +  // Et ajoute France à la fin
             document.getElementById('idcp').value + ", france";
   //document.getElementById('idAddr').value = "test";
   geocoder.getLatLng(address, function(point) { // Geocode l'adresse
  			if (point) {  // Si l'adresse a été trouvée
  			   if (PinState==1) {map.removeOverlay(punaise);} // Si il y a déjà une punaise d'adresse, alors l'enlever
  			   //map.clearOverlays();
  			   punaise= new GMarker(point); // Ajoute la punaise d'adresse
   		   map.addOverlay(punaise); 
    			map.setCenter(point, 15); // Centre la vue sur l'adresse et zoom en 15
    			PinState=1; // Indique une punaise affichée
    		   // Comme la vue change la fonction PutCoverage est appelée par le Handler move 
  				}
			 }); // fin geocoder
    }  
