var bCarte=false;
var bDetails=false;
var sCarte='';

var ZOOM_MAX = 12;
var ZOOM_MIN = 6;

var geocoder = new GClientGeocoder();
var map28_pnk0i_0;
var divLoading;
var mapTypeCourant=null; //le type de carte courant
var aGeoXML = new Array();//tableau de tous les itinéraires et autres kml qui seront affichés sur la carte
var aBoutons = new Array();//on stocke les boutons dans un tableau pour savoir lesquels sont activés ou pas
var aOverlays = new Array(); // tableau des overlays chargés dynamiquement
var bCols=false;
var aPasTrouve = new Array();
var nav; // quel navigateur est utilisé : 1 = IE, 2 = Firefox, 3 = autre
var bJQueryGlobal = false;
var oRGA;
var oVA;
var oCDS;
var oDefaut;
var couleurTheme='vert';
var ggeo_num;
var aCommunes = new Array();
var aObjets = new Array();
var aCourant = null;

/*Extension de la classe Array*/

Array.prototype.contains = function (element)
  {
          for (var i = 0; i < this.length; i++)
       {
              if (this[i] == element)
          {
                      return true;
              }
          }
          return false;
}



/*objets des cartes*/
function initObjects () {
  oDefaut = {
  			nom:"Défaut",
  			kml: new Array(),
  			coord:new Array(45.508984, 6.680396,10),
  			btnActif:new Array()
  			};
}




function setCheminSite(pchem) {
  cheminSite = pchem;
}

var oIti=null;//l'objet de l'itinéraire courant




/*initialisation des icones personnalisées*/

//OT
var iconeOt = new GIcon();
    iconeOt.image= cheminSite+'png/ot.png';
    iconeOt.shadow = cheminSite+'png/map/ombre.png';
    iconeOt.iconSize = new GSize(28, 28);
    iconeOt.shadowSize = new GSize(22, 20);
    iconeOt.iconAnchor = new GPoint(27, 7);
    iconeOt.infoWindowAnchor = new GPoint(20, 20);

function setPicto(nom) {
  iconeOt.image= cheminSite+'img/info_'+nom+'.png';
  couleurTheme=nom;
}


function checkNavigateur() {
  if(navigator.userAgent.indexOf("MSIE 7") != -1)
    nav=1;
    else if(navigator.userAgent.indexOf("MSIE 6") != -1)
    nav=1;
    else if(navigator.userAgent.indexOf("Firefox/2") != -1)
    nav=2;
    else if(navigator.userAgent.indexOf("Firefox") != -1)
    nav=2;
    else if(navigator.userAgent.indexOf("Netscape/7") != -1)
    nav=2;
    else if(navigator.userAgent.indexOf("Netscape") != -1)
    nav=2;
    else if(navigator.userAgent.indexOf("Opera/9") != -1)
    nav=3;
    else if(navigator.userAgent.indexOf("Opera") != -1)
    nav=3;
  else
  nav=3;
}

function initMap(bJQuery) {
  initObjects();
  checkNavigateur();
	bJQueryGlobal = bJQuery;
	//$("#detailsObjet").slideUp("fast");
//	$("#contenuBtnPanelCarte").slideUp("fast");

	sCarte="Défaut";
	oIti = oDefaut;
	/*
	if(nav==2) {
    oIti.coord[0] = oIti.coord[0];
    oIti.coord[1] = oIti.coord[1] + 1;
  }
	*/
   if (GBrowserIsCompatible()) {
    loading(true);
		var bSuite = false;
		bSuite = true;
		if(bSuite == true) {
  		var point=null;
  		var zoomCourant = null;
  		if(bJQuery==true) {
  			point = map28_pnk0i_0.getCenter();
  			zoomCourant = map28_pnk0i_0.getZoom();

  		}

   map28_pnk0i_0 = new GMap2(document.getElementById('map_aptv'));
   GEvent.addListener(map28_pnk0i_0,"load",onMapLoaded);
  map28_pnk0i_0.clearOverlays();
  aGeoXML = new Array();

	map28_pnk0i_0.getContainer().style.overflow='hidden';

	point =(point==null)	?	new GLatLng( oIti.coord[0], oIti.coord[1])	:	point;
	map28_pnk0i_0.addControl(new GLargeMapControl());

 			var centerpoint = point;
	zoomCourant=(zoomCourant!=null)	?	zoomCourant	:	oIti.coord[2];
      map28_pnk0i_0.setCenter(centerpoint, zoomCourant);

	if(mapTypeCourant == null) {
		map28_pnk0i_0.setMapType(G_PHYSICAL_MAP);
		mapTypeCourant = G_PHYSICAL_MAP;
	}else {
		map28_pnk0i_0.setMapType(mapTypeCourant);
	}


			}


      }

}


function onMapLoaded() {
  	if(!bJQueryGlobal) {
			 //on initialise JQuery
			 initDatePicker();

			 bSuite = initJQuery();
         loading(false);

			 //on charge les données SITRA
			 bSuite = loadFichier();
		  }else {
		    bSuite = true;
		  }



}



function initDatePicker() {
  //on initialise le comportement des champs de recherche de date
      $("#inputDate1").attr("readonly","readonly");
      $("#inputDate2").attr("readonly","readonly");
      $('#inputDate1').datePicker().bind(
			'dateSelected',
			function(e, selectedDate, $td)
			{
			 var dateTemp = selectedDate;
			 dateTemp.setDate(dateTemp.getDate()+7);
			 var annee = ($.browser.msie)?dateTemp.getYear():dateTemp.getYear()+1900;
			 $("#inputDate2").attr("value",dateTemp.getDate()+"/"+(dateTemp.getMonth()+1)+"/"+annee);
				//console.log('You selected ' + selectedDate);
			}
		);

      $('#inputDate2').datePicker();
  $("#btnRechercher").click(function(){
    afficheObjetsTrieDate();
   // alert("on va chercher les événements se déroulant entre le "+$("#inputDate1").attr("value")+" et le "+$("#inputDate2").attr("value"));
  });


}

function onKmlLoaded() {
}


function switchMap(val) {
	switch(val) {
		case 1 : 	mapTypeCourant = G_PHYSICAL_MAP;map28_pnk0i_0.setMapType(G_PHYSICAL_MAP);break;
		case 2 :	mapTypeCourant = G_SATELLITE_3D_MAP;map28_pnk0i_0.setMapType(G_SATELLITE_3D_MAP);break;
		default:	mapTypeCourant = G_PHYSICAL_MAP;map28_pnk0i_0.setMapType(G_PHYSICAL_MAP);break;
	}
}

function loading(bDisplay) {
	divLoading = $("#loading");
  if(bDisplay == true) {
  		divLoading.css('display','block');
	}else {
		divLoading.css('display','none');
	}
}






function loadFichier(b2meEssai) {
  //on va chercher le fichier de la sélec, et une fois qu'il est chargé il appelle la fonction afficheDonnees
  //GLog.write("début du chargement des données");
  var fichier = (b2meEssai) ? "sortie_old.php" : "sortie.php";
  loading(true);
   $.ajax({
	   type: "GET",
	   url: cheminBase+"sitra/evenements/" + fichier,
	   data: "",
	   dataType:"script",
	   success: function(obj){
			//aMarkers = obj;
			//GLog.write("données chargées");

	   },
	   complete:function (XMLHttpRequest, textStatus) {
    	loading(false);

		}
	 });
  return true;
}

function afficheDonnees(aData,replace) {

  if(aData.length<1)
  {
    loadFichier(true)
  }else {
      /*
      Forme des objets JS :
      {
        id
        nom
        desc
        lat
        lon
        commune
        cp
      }
    */
    if(!replace) {
      aObjets = aData;
    }

   /* for(var i=0;i<aObjets.length;i++) {
      GLog.write("Evénement : "+aObjets[i].titre);
    }
    */



     // alert("nombre d'options du select : "+sel.options.length);

      for(var i=0;i<aData.length;i++) {
        var obj = aData[i];

        showLatLng(obj.lon,obj.lat,obj.titre,obj.id,obj.commune,"D&eacute;tails de l'&eacute;v&eacute;nement");
        if(obj.commune!="") {
        aCommunes.push({cp:obj.cp,commune:obj.commune});
        }
       // addSelect(sel,obj.cp,obj.commune);

      }

      trieCommunes();

      if($("#choixListe").hasClass("minChoixActif")) {
        afficherListe(aData);
        //$("#lienKML").slideUp("fast");
      }
    }

}

function afficheDonneesTriees(aData) {
    map28_pnk0i_0.clearOverlays();
    geo = new GGeoXml("http://www.savoie-tarentaise.com/php/sitra/trace_tarentaise.kml");
	  	map28_pnk0i_0.addOverlay(geoXml);
    for(var i=0;i<aData.length;i++) {
      var obj = aData[i];
      showLatLng(obj.lon,obj.lat,obj.titre.substring(0,30),obj.id,obj.commune,"D&eacute;tails de l'&eacute;v&eacute;nement");
    }

    aCourant = aData;
    afficherListe(aData);
    if($("#choixListe").hasClass("minChoixActif")) {
    }
}


function trieCommunes() {
  var aTemp = new Array();
  var aCp = new Array();
  var i=0;
  for(i=0;i<aCommunes.length;i++) {
    if(!aTemp.contains(aCommunes[i].commune)) {
      aTemp.push(aCommunes[i].commune);
      aCp.push(aCommunes[i].cp);
    }

  }

  aCommunes = new Array();
  var sel = document.getElementById('selectCommune');
  sel.options.length=0;
  sel.options[0] = new Option("Choisir un lieu...", "-999", true, true);
  aTemp.sort();
  for(i=0;i<aTemp.length;i++) {
    aCommunes.push({cp:aCp[i],commune:aTemp[i]});
    addSelect(sel,aCp[i],aTemp[i]);
  }
  sel.onchange = selectionCommune;


}

function addSelect(selectElemObj,cp,ville) {
  selectElemObj.options[selectElemObj.options.length] = new Option(ville, cp, false, false)  ;
}


function selectionCommune() {

  var sel = document.getElementById('selectCommune');
  var valSel = sel.options[sel.selectedIndex].value;
  var labelSel = sel.options[sel.selectedIndex].text;

  if(valSel!='-999') {
    centerAddress(valSel+" "+labelSel);
    afficheObjetsTrieCommune(labelSel);

  } else {

  aCourant = null;
  afficheDonnees(aObjets);
   var  point =new GLatLng( oIti.coord[0], oIti.coord[1]);
   map28_pnk0i_0.setCenter(point,oIti.coord[2]);
  }
}

function afficheObjetsTrieCommune(commune) {
  var aTemp = new Array();
  var i=0;
  for(i=0;i<aObjets.length;i++) {
    if(aObjets[i].commune.toUpperCase() == commune.toUpperCase()) {

      aTemp.push(aObjets[i]);
    }
  }
  afficheDonneesTriees(aTemp);

}
function afficheObjetsTrieDate(pdate1,pdate2) {

  loading(true);
  var aDate1 = (!pdate1)?$("#inputDate1").attr('value').split('/'):pdate1.split('/');
  var date1 = new Date(aDate1[2],aDate1[1]-1,aDate1[0]);
  date1 = date1.getTime()/1000;
  var aDate2 =(!pdate2)? $("#inputDate2").attr('value').split('/'):pdate2.split('/');
  var date2 = new Date(aDate2[2],aDate2[1]-1,aDate2[0]);
  date2 = date2.getTime()/1000;

  if(date1<=date2) {
    var aTemp = new Array();
    var i=0;
    var nbObj = 0;
    for(i=0;i<aObjets.length;i++) {
      var obj = aObjets[i];
      var dates = obj.dates.split(',');
      var nb = dates.length;
	  //console.log("longueur" + nb);
      /*
	  faire une boucle sur tous les element s de obj.dates et recup tab[0] date deb et tab[1] date fin
	  puis traitement normal ci-dessous
	  */
	for ( l=0;l<nb;l++ )
	{
		mesDates 	= 	dates[l].split('|');
		date_debut 	= 	mesDates[0];
		date_fin 	= 	mesDates[1];
		//console.log( obj.titre + " date de debut => " + date_debut + " date de fin => " +date_fin);

		//var dateObjet = new Date(date_debut);
		//console.log( " date de debut OBJ=> " + date_debut + " date de debut demandee => " +date1);
		if(date_debut<=date2 && date_debut>=date1 )
		{
			nbObj = nbObj+1;
			aTemp.push(aObjets[i]);
			break;
		}
	}
      
      
    }
    if(nbObj>0) {
      afficheDonneesTriees(aTemp);
    } else {
      alert("Aucun événement entre le "+$("#inputDate1").attr("value")+" et le "+$("#inputDate2").attr("value"));
    }
  }else {
    alert("Veuillez choisir deux dates valides");
  }
  loading(false);
}

function afficheObjetsTrieCommune(commune) {
  var aTemp = new Array();
  var i=0;
  for(i=0;i<aObjets.length;i++) {
    //alert(commune.toUpperCase()+" vs. "+aObjets[i].commune.toUpperCase());
    //var communeCourante = (aObjets[i].commune.toUpperCase() ==  "LES ARCS BOURG-SAINT-MAURICE") ?  "Bourg-Saint-Maurice" : aObjets[i].commune;
    var communeCourante = aObjets[i].commune;
    if(communeCourante.toUpperCase() == commune.toUpperCase()) {

      aTemp.push(aObjets[i]);
    }
  }
  afficheDonneesTriees(aTemp);

}

function afficherProfil() {
  bCarte=false;


   $("#choixListe").hover(function (){
      if(!$(this).hasClass("minChoixActif")) {
        $(this).addClass("minChoixHover");
      }
      },function(){
      $(this).removeClass("minChoixHover");
  });

  $("#choixCarte").hover(function (){
      if(!$(this).hasClass("minChoixActif")) {
        $(this).addClass("minChoixHover");
      }
      },function(){
      $(this).removeClass("minChoixHover");
  });

   $("#choixListe").click(function (){
   $(this).removeClass("minChoixHover");
    if(!$("#choixListe").hasClass("minChoixActif")) {
        $("#choixListe").addClass("minChoixActif");

        afficherListe(aObjets);
        $("#map_aptv").css("display","none");
        $("#liste_aptv").css("display","block");
        $("#choixCarte").removeClass("minChoixActif");
      } else {
      //sinon on referme le tout


      }
   });
   $("#choixCarte").click(function (){
   $(this).removeClass("minChoixHover");
      if(!$("#choixCarte").hasClass("minChoixActif")) {
        $("#choixCarte").addClass("minChoixActif");
        $("#choixListe").removeClass("minChoixActif");
        $("#contenu_liste_aptv").html("Liste des Objets");
        $("#map_aptv").css("display","block");
        $("#liste_aptv").css("display","none");
      } else {
      //sinon on referme le tout
      //$("#choixCarte").removeClass("minChoixActif");

      }
   });

   $("#btnCacherPanelDetails").click(function () {
        $("#btnCacherPanelCarte").addClass("barrePanel");
        //$("#containerMenuPanel").slideDown();
          $("#detailsObjet").slideUp();

   });

  return true;
}

function initJQuery() {
  var retour=false;
  retour = afficherProfil();

  return retour;

}

function afficherListe(data) {
  aData=(aCourant ==null)?data:aCourant;
  var contenu = "";
  var classe="";
  for(var i=0;i<aData.length;i++) {
    var obj = aData[i];
    classe=(classe=="")?"fondGris":"";
    var communeCp = (obj.commune!='')?","+obj.commune+" ("+obj.cp+")":"";
    
	var dateObjet = "";
      var dates = obj.dates.split(',');
      var nb = dates.length;
	  //console.log("longueur" + nb);
      /*
	  faire une boucle sur tous les element s de obj.dates et recup tab[0] date deb et tab[1] date fin
	  puis traitement normal ci-dessous
	  */
	

	for ( l=0;l<nb;l++ )
	{
		mesDates 	= 	dates[l].split('|');
		var dateDeb = new Date(mesDates[0]*1000);
		jour = (dateDeb.getDate() < 10 )? "0" + dateDeb.getDate() : dateDeb.getDate();
		mois = (dateDeb.getMonth() < 9 )? "0" + (dateDeb.getMonth()+1) : (dateDeb.getMonth() + 1);
		dateDeb = jour + "/" + mois + "/" + dateDeb.getFullYear();
		
		var dateFin = new Date(mesDates[1]*1000);
		jour = (dateFin.getDate() < 10 )? "0" + dateFin.getDate() : dateFin.getDate();
		mois = (dateFin.getMonth() < 9 )? "0" + (dateFin.getMonth()+1) : (dateFin.getMonth() + 1);
		dateFin = jour + "/" + mois + "/" + dateFin.getFullYear();
		if( l > 0 ) dateObjet += "<br /> et ";
		dateObjet += (dateDeb==dateFin)  ? "le "+dateDeb : "du "+dateDeb+" au "+dateFin;
			
		//console.log( obj.titre + " date de debut => " + date_debut + " date de fin => " +date_fin);

		//var dateObjet = new Date(date_debut);
		
		
	}
	contenu = contenu + "<span class='detailObjetListe' onclick='javascript:afficherDetailObjet(\""+obj.id+"\");'><img src='"+cheminSite+"img/details.png' title='Voir le détail'/></span><span class='carteObjetListe' onclick='javascript:afficherCarteCentrerObjet(\""+obj.id+"\");'><img src='"+cheminSite+"img/centrer_carte.png' title='Voir sur la carte'/></span><div class='objetListe "+classe+"' onclick='javascript:afficherDetailObjet(\""+obj.id+"\");'><p style='width:420px;'><strong>"+obj.titre+"</strong><br />"+dateObjet+" - "+ obj.commune +"</p></div>";

  }


  $("#contenu_liste_aptv").html(contenu);
  $("span.objetListe").hover(function(){
    $(this).addClass("objetListeHover",1000);
  },function(){
    $(this).removeClass("objetListeHover",1000);
  });
   $("span.fondGris").hover(function(){
    $(this).css("backgroundColor","#e9ff87");

  },function(){
    $(this).css("backgroundColor","#eee");
  });
}

function supprOverlays()  {
  var aTemp = new Array();
  var i;
  for(i=0;i<aOverlays.length;i++) {
      if(aOverlays[i].iti) {
        aTemp.push(aOverlays[i]);
      }
  }

  for(i=0;i<aOverlays.length;i++) {
      if(!aOverlays[i].iti) {
        map28_pnk0i_0.removeOverlay(aOverlays[i]);
      }else {
      }
  }
  aOverlays = aTemp;
}

function afficherDetailObjet(id) {
  loading(true);
   $.ajax({
      	   type: "GET",
      	   url: cheminBase+"sitra/details_objet/details_objet.php",
      	   data: "eve=1&objet="+id+"&couleur="+couleurTheme,
      	   dataType:"text/html",
      	   success: function(obj){
      			 $("#contenuDetailsObjet").html(obj);
      			 //$("#containerMenuPanel").slideUp();
      			 $("#detailsObjet").slideDown();
      	   },
      	   complete:function (XMLHttpRequest, textStatus) {

          	loading(false);
      		}
      	 });
}


function afficherCarteCentrerObjet(id) {

  for(var i=0;i<aObjets.length;i++) {
    var obj = aObjets[i];
    if(obj.id == id) {
      $("#choixCarte").trigger("click");
      //centerAddress(obj.cp+" "+obj.commune);
      centerPoint(obj.id,obj.lat,obj.lon);
    }
  }
}
/*fonctions utilitaires*/

function htmlEnt(char,urlencodechars)
{
  var chars = new Array ('&','à','á','â','ã','ä','å','æ','ç','è','é',
                         'ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô',
                         'õ','ö','ø','ù','ú','û','ü','ý','þ','ÿ','À',
                         'Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë',
                         'Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö',
                         'Ø','Ù','Ú','Û','Ü','Ý','Þ','€','\"','ß','<',
                         '>','¢','£','¤','¥','¦','§','¨','©','ª','«',
                         '¬','­','®','¯','°','‘','²','³','´','µ','¶',
                         '·','¸','¹','º','»','¼','½','¾');

  var entities = new Array ('&','a','a','a','a','a','a','ae','c','e','e',
                         'e','e','i','i','i','i','o','n','o','o','o',
                         'o','o','o','u','u','u','u','u','þ','y','a',
                         'A','A','A','A','A','AE','C','E','E','E','E',
                         'I','I','I','I','D','N','O','O','O','O','O',
                         'O','U','U','U','U','Y','','euro','','','<',
                         '>','','','','','','','','','','',
                         '','','','','','','','','','','',
                         '','','','','','','','');

  var urlEncode = new Array ('&amp;','&agrave;','&acute;','&acirc;','&atilde;','&auml;','&aring;','&aelig;','&ccedil;','&egrave;','&eacute;',
                         '&ecirc;','&euml;','&igrave;','&iacute;','&icirc;','&iuml;','&ordm;','&ntilde;','&ograve;','&oacute;','&ocirc;',
                         '&otilde;','&ouml;','&oslash;','&ugrave;','&uacute;','&ucirc;','&uuml;','&yacute;','&THORN;','&yuml;','&Agrave;',
                         '&acute;','&Acirc;','&Atilde;','&Auml;','&Aring;','&AElig;','&Ccedil;','&Egrave;','&Eacute;','&Ecirc;','&Euml;',
                         '&Igrave;','&Iacute;','&Icirc;','&Iuml;','&ETH;','&Ntilde;','&Ograve;','&Oacute;','&Ocirc;','&Otilde;','&Ouml;',
                         '&Oslash;','&Ugrave;','&Uacute;','&Ucirc;','&Uuml;','&Yacute;','&thorn;','&euro;','\"','&Beta;','<',
                         '>','','','','','','','','','','',
                         '','','','','','','','','','','',
                         '','','','','','','','');

  newString = char;
  for (var i = 0; i < chars.length; i++)
  {
    myRegExp = new RegExp();
    myRegExp.compile(chars[i],'g')
	if(!urlencodechars) {
    	newString = newString.replace (myRegExp, '' + entities[i] + '');
	}else {
		newString = newString.replace (myRegExp, '' + urlEncode[i] + '');
	}
  }
  return newString;
}


function showLatLng(lon,lat,nom,id,commune,titre) {
  				var obj={icon:iconeOt};

  				var point = new GLatLng(lat,lon);

  				var marker = new GMarker(point,obj);
  				map28_pnk0i_0.addOverlay(marker);
  				aOverlays.push(marker);


  				GEvent.addListener(marker, "click", function() {

  					titre = (!titre)  ? nom : titre;


            afficherDetailObjet(id);

             // marker.openInfoWindowHtml("<b>" + nom + "</b>");  						//alert("on va initialiser thickbox");

              //marker.openInfoWindowHtml("<b>" + nom + "</b><br /><span id='lien"+id+"' class='spanLien' onclick='openTb(\"lien"+id+"\",\""+cheminBase+"sitra/details_objet/details_objet.php?width=700"+String.fromCharCode(38)+"height=400"+String.fromCharCode(38)+"objet="+id+""+String.fromCharCode(38)+"\",\""+htmlEnt(titre)+"\");'>Plus d'infos</span>");  						//alert("on va initialiser thickbox");

  				});

  				GEvent.addListener(marker, "mouseover", function() {
            marker.setImage(cheminSite+'img/info_defaut.png');
            marker.openInfoWindowHtml("<div class='infowindow_gmap'><h4>" + nom + "</h4>"+commune+"<a style='display:block;float:right;' href='#' onclick=\"afficherDetailObjet('" +id+  "')\">+ d'infos</a></div>");
  				});

  				GEvent.addListener(marker, "mouseout", function() {

  				marker.setImage(iconeOt.image);
  				});
	}


function centerAddress(address) {
	  address = address + ", France";
   geocoder.getLatLng(
		address,
		function(point) {
		  if (!point) {

		  } else {
				map28_pnk0i_0.setCenter(point,13);
		  }
		}
	  );
	}
function centerPoint(id,lat,lon) {
  var point = new GLatLng(lat,lon);
	map28_pnk0i_0.setCenter(point,13);

}

function openTb(elt,url,title) {
  var htmlelt = document.getElementById(elt);
	var t = title
	var a = url
	var g = false;
	tb_show(t,a,g);
	$("#"+elt).blur();
	return false;
}


function pausecomp(millis)
{
  var date = new Date();
  var curDate = null;

  do { curDate = new Date(); }
  while(curDate-date < millis);
}


