// JavaScript Document

var tabDirections = new Array();
var tabMarkers = new Array();
var currentTrajet = 0;
var tabResults = new Array();
var tabIdsTrajet = new Array();
var tabIdsDepart = new Array();
var nbResults = 0;
var tabColorsMarkers = ["#f81406","#e82e06","#d84805","#cb5f04","#c07104","#b38604","#a3a302","#93bc02","#84d601","#76ee00"];

var tabImagesMarkers = [web_path+"/images/marqueur/gr-mark1.png",web_path+"/images/marqueur/gr-mark2.png",web_path+"/images/marqueur/gr-mark3.png",web_path+"/images/marqueur/gr-mark4.png",web_path+"/images/marqueur/gr-mark5.png",web_path+"/images/marqueur/gr-mark6.png",web_path+"/images/marqueur/gr-mark7.png",web_path+"/images/marqueur/gr-mark8.png",web_path+"/images/marqueur/gr-mark9.png",web_path+"/images/marqueur/gr-mark10.png"];

var tabImagesMarkersWStar = [web_path+"/images/marqueur/gr-mark1-star.png",web_path+"/images/marqueur/gr-mark2-star.png",web_path+"/images/marqueur/gr-mark3-star.png",web_path+"/images/marqueur/gr-mark4-star.png",web_path+"/images/marqueur/gr-mark5-star.png",web_path+"/images/marqueur/gr-mark6-star.png",web_path+"/images/marqueur/gr-mark7-star.png",web_path+"/images/marqueur/gr-mark8-star.png",web_path+"/images/marqueur/gr-mark9-star.png",web_path+"/images/marqueur/gr-mark10-star.png"];

var cptMarkerAffed = 0;
var optMarkerTracker = { color: '#069', weight: 10, length: 15 };
var mt1 = null;
var mt2 = null;
var tabPtCalcul = [];
var tabPolysMouseOver = [];
var tabDirMouseOver = [];
var secondSlider = 0;
var fromListeResultats = 0;

//Tableau de sauvegarde du calcul des heures de passage d'un conducteur sur le trajet passager pour l'envoi par mail
var tabHPassage = "";

function zoomfit(cas)
{
	if(!cas)
	{
		if (tabResults!=null && tabResults.length > 0){
			newzoom = map.getBoundsZoomLevel(boundsMapGlobal) - 1;
			newcenter = boundsMapGlobal.getCenter();
			map.setCenter (newcenter,newzoom);
		}
	} else {
		if(document.getElementById('isGroupe'))
		{
			newzoom = map.getBoundsZoomLevel(boundsMapGlobalGpe);
			newcenter = boundsMapGlobalGpe.getCenter();
			map.setCenter (newcenter,newzoom);
		}
	}
}

var clicked = false;

function CreateMarkerEvent(marker,id_trajet,id_depart,data,cas, isGroupe)
{	
	GEvent.addListener(marker, "click", function() {
		clicked=true;
		
		if(fromListeResultats == 0)
			showDetailsTrajet(id_trajet,id_depart);
		
		var bounds = tabDirMouseOver[id_depart].getBounds();
		//var center = bounds.getCenter();
		//map.setCenter(center);
		
		if (isGroupe)
			conducteur = data[1];
		else {
			conducteur = 1;
			if (data[16] == "2") conducteur = 0;
		}
		
		if(conducteur==1 && tabPolysMouseOver[id_depart])
			tabPolysMouseOver[id_depart].show();
			
		if (cas == 1) {
			if (isGroupe) adresse = data[20]; else adresse = '<img src="'+web_path + '/images/icoD.png" />' + data[23];
		}
		else {			
			if (isGroupe) adresse = data[10]; else adresse = '<img src="'+web_path + '/images/icoA.png" />' + data[24];
		}
		
		if (isGroupe)
			client = data[7];
		else
			client = data[17];
		
		//Adresse selon le sens du groupe
		if (isGroupe && $("#sensTrajet").val() == 2){			
			adresse = data[20];
		}
		
		var code = '<div class="infobulle">';			
		if(conducteur==0)
			code += '<img src="'+web_path + '/images/icoResGpePassager.png" /> <span>'+client+'</span>';
		else
			code += '<img src="'+web_path + '/images/icoResGpeConducteur.png" /> <span>'+client+'</span>';			
		code += '<BR/> '+adresse;			
		code += "</div>";
		
		tabMarkers[id_depart][0].show();
		tabMarkers[id_depart][1].show();
		if(!isGroupe)
			marker.openInfoWindowHtml(code);
		else {
			//Vers le groupe
			if ($("#sensTrajet").val() == 2)
				tabMarkers[id_depart][1].openInfoWindowHtml(code);
			else // Depuis le groupe
				tabMarkers[id_depart][0].openInfoWindowHtml(code);		
		}
	});
	  
	GEvent.addListener(marker, "mouseover", function() {
		if(document.getElementById('lineResult'+id_depart))
			document.getElementById('lineResult'+id_depart).className = "trajetSelected";
		
		if(document.getElementById('sens_groupe')){
			if(document.getElementById('sens_groupe').value==1)			
				tabMarkers[id_depart][0].show();
			else if(document.getElementById('sens_groupe').value==2)			
				tabMarkers[id_depart][1].show();
		}
		
		if (isGroupe)
			conducteur = data[1];
		else {
			conducteur = 1;
			if (data[16]=="2") conducteur = 0;
		}
			
		if(conducteur==1)
			tabPolysMouseOver[id_depart].show();
				
		if (cas == 1) {
			if (isGroupe) adresse = data[10]; else adresse = '<img src="'+web_path + '/images/icoD.png" />' + data[23];
		}
		else {
			if (isGroupe) adresse = data[20]; else adresse = '<img src="'+web_path + '/images/icoA.png" />' + data[24];
		}
		
		if (isGroupe){
			client = data[7];
			conducteur = data [1];
		}
		else{
			client = data[17];
			if (data[16] == "2") conducteur = 0; else conducteur = 1;
		}
		
		var code = '<div class="infobulle">';			
		if(conducteur==0)
			code += '<img src="'+web_path + '/images/icoResGpePassager.png" /> <span>'+client+'</span>';
		else
			code += '<img src="'+web_path + '/images/icoResGpeConducteur.png" /> <span>'+client+'</span>';			
		code += '<BR/> '+adresse;			
		code += "</div>";
		
		marker.openInfoWindowHtml(code);
		if (isGroupe){
			//Test le sens du groupe Hubert - 25/02/2010 - Bug 0097
			if ($("#sensTrajet").val() == 1){
				tabMarkers[id_depart][1].show();
			}
			else
				tabMarkers[id_depart][0].show();
		}
	});
	
	GEvent.addListener(marker, "mouseout", function() {
		if(!clicked){						
			if(document.getElementById('sens_groupe')){
				if(document.getElementById('sens_groupe').value==1){
					tabMarkers[id_depart][0].hide();
				}
				else if(document.getElementById('sens_groupe').value==2){
					tabMarkers[id_depart][1].hide();				
				}
			}			
			
			if(document.getElementById('lineResult'+id_depart))
				document.getElementById('lineResult'+id_depart).className = "resultatsTrajets";
			
			if(tabPolysMouseOver[id_depart]){
				tabPolysMouseOver[id_depart].hide();
			}
			
			marker.closeInfoWindow();
			if (isGroupe){
				//Test le sens du groupe Hubert - 25/02/2010 - Bug 0097
				if ($("#sensTrajet").val() == 1)
					tabMarkers[id_depart][1].hide();
				else
					tabMarkers[id_depart][0].hide();
			}
		}
	});
}

function CreateDirectionMap(id_depart,depart_lat,depart_lng,arrivee_lat,arrivee_lng)
{	
	tabDirMouseOver[id_depart] = new GDirections(map);
	GEvent.addListener(tabDirMouseOver[id_depart], "error", function() {
		CreateDirectionMap(id_depart,depart_lat,depart_lng,arrivee_lat,arrivee_lng);
	});
	GEvent.addListener(tabDirMouseOver[id_depart], "load", function() {
		//alert('je cree la ligne dans'+id_depart);
		var gp = new GPolyline();
		gp = tabDirMouseOver[id_depart].getPolyline();		
		gp.hide();
		tabPolysMouseOver[id_depart] = gp;
		tabDirMouseOver[id_depart].getMarker(0).setLatLng( new GLatLng(90, 0));
		tabDirMouseOver[id_depart].getMarker(1).setLatLng( new GLatLng(90, 0));
	});
	tabDirMouseOver[id_depart].loadFromWaypoints([new GLatLng(depart_lat,depart_lng),new GLatLng(arrivee_lat,arrivee_lng)],{preserveViewport:true,getPolyline:true});	
}

function importanceOrder (marker,b) {
	return GOverlay.getZIndex(marker.getPoint().lat()) + marker.importance*100000000;
  }
  
  function importanceOrderGroupe (marker,b) {
	return GOverlay.getZIndex(marker.getPoint().lat()) + marker.importance*100000000;
  }


/**
* Convert number of seconds into time object
*
* @param integer secs Number of seconds to convert
* @return object
*
*/
function secondsToTime(secs)
{
	var hours = Math.floor(secs / (60 * 60));
    var divisor_for_minutes = secs % (60 * 60);
    var minutes = Math.floor(divisor_for_minutes / 60);
    var divisor_for_seconds = divisor_for_minutes % 60;
    var seconds = Math.ceil(divisor_for_seconds);
    var obj = {
  		"h": hours,
  		"m": minutes,
  		"s": seconds
  	};
    return obj;
}

var lastCasSort = 0;

function sortResultLines(cas,start)
{
	var tabTmp = Array();
	
	for(var i=0; i<tabResults.length;i++)
	{
		for(var j=0; j<tabResults.length;j++)
		{
			if(cas == lastCasSort && start !=1)
			{
				if(tabResults[i][cas] > tabResults[j][cas])
				{
					var valTmp = tabResults[i][0];
					tabResults[i][0] = tabResults[j][0];
					tabResults[j][0] = valTmp;
					
					valTmp = tabResults[i][1];
					tabResults[i][1] = tabResults[j][1];
					tabResults[j][1] = valTmp;
					
					valTmp = tabResults[i][2];
					tabResults[i][2] = tabResults[j][2];
					tabResults[j][2] = valTmp;
					
					valTmp = tabResults[i][3];
					tabResults[i][3] = tabResults[j][3];
					tabResults[j][3] = valTmp;
					
					valTmp = tabResults[i][4];
					tabResults[i][4] = tabResults[j][4];
					tabResults[j][4] = valTmp;
					
					valTmp = tabResults[i][5];
					tabResults[i][5] = tabResults[j][5];
					tabResults[j][5] = valTmp;
					
					valTmp = tabResults[i][6];
					tabResults[i][6] = tabResults[j][6];
					tabResults[j][6] = valTmp;
				}
			} else {
				
				if(tabResults[i][cas] < tabResults[j][cas])
				{
					var valTmp = tabResults[i][0];
					tabResults[i][0] = tabResults[j][0];
					tabResults[j][0] = valTmp;
					
					valTmp = tabResults[i][1];
					tabResults[i][1] = tabResults[j][1];
					tabResults[j][1] = valTmp;
					
					valTmp = tabResults[i][2];
					tabResults[i][2] = tabResults[j][2];
					tabResults[j][2] = valTmp;
					
					valTmp = tabResults[i][3];
					tabResults[i][3] = tabResults[j][3];
					tabResults[j][3] = valTmp;
					
					valTmp = tabResults[i][4];
					tabResults[i][4] = tabResults[j][4];
					tabResults[j][4] = valTmp;
					
					valTmp = tabResults[i][5];
					tabResults[i][5] = tabResults[j][5];
					tabResults[j][5] = valTmp;
					
					valTmp = tabResults[i][6];
					tabResults[i][6] = tabResults[j][6];
					tabResults[j][6] = valTmp;
				}				
			}
		}		
	}
	
	//tabResults.sort(mysortfn);
	
	var container = document.getElementById("contenuResultatsTrajets");
	container.innerHTML = "";
	
	if(lastCasSort==cas)
	{
		lastCasSort=0;
	}
	else
	{
		lastCasSort = cas;
	}
	
	formatResultLines();
}

function closeDetailsTrajet(id_trajet,id_depart,cas,idToOpen)
{
	clicked = false;
	for( x in tabMarkers){
		for(var i = 0;i<tabMarkers[x].length;i++){
			tabMarkers[x][i].show();	
		}
	}
	
	for( x in tabPolysMouseOver){
		tabPolysMouseOver[x].hide();	
	}
	
	if(prop_trajet=="1"){
		//drawLine();
	}
	
	GEvent.trigger(tabMarkers[id_depart][0], 'mouseout');
	GEvent.trigger(tabMarkers[id_depart][1], 'mouseout');	
	
	tabMarkers[id_depart][0].closeInfoWindow();
	tabMarkers[id_depart][1].closeInfoWindow();
	
	//$("#detais_trajet_"+id_trajet).animate( { height:"0px"}, { queue:true, duration:300 } );
	/*
	 var height = document.getElementById("resultsTrajets").offsetHeight;
	height -= 156;
	$("#resultsTrajets").animate( { height:height+"px" }, { queue:true, duration:300 } );
	*/
	//var Mt = document.getElementById("divFiltres").style.marginTop.replace("px","");
	//Mt = Mt - 156;
	//$("#divFiltres").animate( { marginTop:Mt+"px" }, { queue:true, duration:300 } );
	
	document.getElementById('lineResult'+id_depart).setAttribute('class','resultatsTrajets');
	clicked=false;
	
	var passe = 0;
	for(var l = 0;l<tabIdsTrajet.length;l++){
		if(tabIdsDepart[l]==id_depart){
			passe=1;
		} else if(passe==1){	
			var Mt = document.getElementById("lineResult"+tabIdsDepart[l]).style.marginTop.replace("px","");
			Mt = parseInt(Mt) - 156;
			$("#lineResult"+tabIdsDepart[l]).animate( { marginTop:Mt+"px" }, { queue:true, duration:300 } );
		}
	}
	
	$('#detais_trajet_'+id_depart).hide();
	/*
	hide('detais_trajet_'+id_depart);
	height = document.getElementById("contenuResultatsTrajets").offsetHeight;
	height -= 156;
	$("#contenuResultatsTrajets").animate( { height:height+"px" }, { queue:true, duration:300 } );
	*/
	resultOpened = 0;
	resultOpenedDepart = 0;
	fromListeResultats = 0;
	
	return true;
}

function calculHeureP(nb, conducteur)
{	
	var now = new Date();
	//ancien code -> 10/01/2010 if(depart && !document.getElementById("isGroupe"))
	if(depart)
	{
		//Suppression de l'attribut map en paramètre de new GDirections(map);
		var directionCalcul = new GDirections();
		
		GEvent.addListener(directionCalcul, "error", function() 
		{
			calculHeureP(nb);
		});
		
		GEvent.addListener(directionCalcul, "load", function() 
		{				
			var id_trajet = tabResults[nb][0];
			var id_depart = tabResults[nb][18];
			var duration = directionCalcul.getDuration();
			time = secondsToTime(duration.seconds);
			/*alert('coucou');
			for (k=0;k<tabResults.length;k++)
				alert(k + ':' + tabResults[nb][k]);*/
			
			var heure_depart = tabResults[nb][4];	
			var tabTmp = heure_depart.split(".");
			if(tabResults[nb][2]==2){
			} else {				
				if(tabTmp[0][0]==0)
					tabTmp[0] = tabTmp[0][1];
				if(tabTmp[1][0]==0)
					tabTmp[1] = tabTmp[1][1];
				
				tabTmp[0] = parseInt(tabTmp[0]) + parseInt(time.h);
				tabTmp[1] = parseInt(tabTmp[1]) + parseInt(time.m);
				
				if(tabTmp[0]>=24){
					var diff = tabTmp[0] - 24;
					tabTmp[0] = diff;
				}
				
				if(tabTmp[1]>=60){
					var diff = tabTmp[1] - 60;
					tabTmp[1] = diff;
					tabTmp[0]++;
				}
				
				if(tabTmp[0]<10)
					tabTmp[0] = "0"+tabTmp[0];
				if(tabTmp[1]<10)
					tabTmp[1] = "0"+tabTmp[1];
					
				if(tabTmp[0]==24)
					tabTmp[0] = "00";
			}
			
			var tabTmp2 = tabResults[nb][8].split("-");
			
			/*if(tabResults[nb][2]==1)
				var datePassage = new Date(tabTmp2[2],(tabTmp2[1]-1),tabTmp2[0],tabTmp[0],parseInt(tabTmp[1])+10,tabTmp[2]);
			else*/
				var datePassage = new Date(tabTmp2[2],(tabTmp2[1]-1),tabTmp2[0],tabTmp[0],parseInt(tabTmp[1]),tabTmp[2]);		
			if (conducteur){				
				var heure_depart_c = tabResults[nb][4];	
				var tabTmp_c = heure_depart_c.split(".");
				datePassage = new Date(tabTmp2[2],(tabTmp2[1]-1),tabTmp2[0],tabTmp[0],tabTmp_c[1],tabTmp_c[2]);
				tabTmp[0] = tabTmp_c[0];
				tabTmp[1] = tabTmp_c[1];
			}
			
			var dateDay = new Date();
			
			//Il faut comparer l'heure calculée et l'heure actuelle et garder que les trajets qui sont partis il y a 10 minutes
			if(datePassage.getTime() < now.getTime() && Math.abs(now.getTime() - datePassage.getTime()) > 600000){
				hide("lineResult"+tabResults[nb][18]);
				$("#nbResultats").text($("#nbResultats").text()-1);
				tabMarkers[tabResults[nb][18]][0].hide();
				tabMarkers[tabResults[nb][18]][1].hide();
				tabMarkers[tabResults[nb][18]] = [];
				removeMarkersAndPoly(tabResults[nb][18]);
				if ($("#nbResultats").text() == "0"){
					hide("resultsTrajets");
					show("noResultsTrajets");
				}
			} else if(document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart)){
				//L'heure de passage est ici identifiée donc appel de la méthode pour envoyer le mail à l'utilsateur				
				/*if (conducteur && document.getElementById('new_trajet') && document.getElementById('new_trajet').value == '1'){					
					envoyerMailPassager(tabResults[nb][14], tabResults[nb][10], tabResults[nb][11], tabTmp[0]+":"+tabTmp[1], id_trajet);
				} Code mis dans common.php*/
				var dateCmp = new Date(tabTmp2[2],(tabTmp2[1]-1),tabTmp2[0]);
				var dateToday = new Date();
				dateCmp = dateCmp.getDate()+"-"+dateCmp.getMonth()+"-"+dateCmp.getFullYear();
				dateToday = dateToday.getDate()+"-"+dateToday.getMonth()+"-"+dateToday.getFullYear();
				
				if(dateToday == dateCmp){
					document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).style.fontSize = "19px";
					document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).innerHTML = tabTmp[0]+"H"+tabTmp[1];
				}
				else
					document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).innerHTML = tabResults[nb][8]+" "+tabTmp[0]+"H"+tabTmp[1];				
				tabResults[nb][4] = tabTmp[0]+"."+tabTmp[1]+".00";
				var timeTxt = "<input type=\"hidden\"name=\"heure_passage_"+id_trajet+"\" id=\"heure_passage_"+id_trajet+"\" value=\""+tabTmp[0] + ':' + tabTmp[1]+":00\"/>";
				document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).innerHTML += timeTxt;
			}			
			nb++;
			if(tabResults[nb])
				calculHeureP(nb, conducteur);
			//Ici provoque erreur a is null
			directionCalcul.clear();
		});
		var tabPoints = new Array();
		tabPoints.push(tabPtCalcul[tabResults[nb][0]][0]);
		tabPoints.push(depart);
		//directionCalcul.loadFromWaypoints([tabPtCalcul[tabResults[nb][0]][1],tabPtCalcul[tabResults[nb][0]][0]],depart,{preserveViewport:true});
		directionCalcul.loadFromWaypoints(tabPoints,{preserveViewport:true});
	} else if(document.getElementById("isGroupe")) {		
		var directionCalculGrpe = new GDirections(map);

		GEvent.addListener(directionCalculGrpe, "error", function() 
		{
			calculHeureP(nb);
		});

		GEvent.addListener(directionCalculGrpe, "load", function() 
		{
			var id_trajet = tabResults[nb][0];
			var id_depart = tabResults[nb][18];
											
			var duration = directionCalculGrpe.getDuration();
			time = secondsToTime(duration.seconds);
			
			var heure_depart = tabResults[nb][4];				
			var tabTmp = heure_depart.split(".");
			
			if(tabTmp[0][0]==0)
				tabTmp[0] = tabTmp[0][1];
			if(tabTmp[1][0]==0)
				tabTmp[1] = tabTmp[1][1];
			
			tabTmp[0] = parseInt(tabTmp[0]) + parseInt(time.h);
			tabTmp[1] = parseInt(tabTmp[1]) + parseInt(time.m);
			
			if(tabTmp[0]>=24)
			{
				var diff = tabTmp[0] - 24;
				tabTmp[0] = diff;
			}
			
			if(tabTmp[1]>=60)
			{
				var diff = tabTmp[1] - 60;
				tabTmp[1] = diff;
				tabTmp[0]++;
			}
			
			if(tabTmp[0]<10)
				tabTmp[0] = "0"+tabTmp[0];
			if(tabTmp[1]<10)
				tabTmp[1] = "0"+tabTmp[1];
				
			if(tabTmp[0]==24)
				tabTmp[0] = "00";

			var tabTmp2 = tabResults[nb][8].split("-");
				
			if(tabResults[nb][2]==1)
				var datePassage = new Date(tabTmp2[2],(tabTmp2[1]-1),tabTmp2[0],tabTmp[0],parseInt(tabTmp[1])+10,tabTmp[2]);
			else
				var datePassage = new Date(tabTmp2[2],(tabTmp2[1]-1),tabTmp2[0],tabTmp[0],parseInt(tabTmp[1]),tabTmp[2]);			
			
			var dateDay = new Date();
			
			if(compare_date(datePassage, dateDay)==-1){				
			} else {
				
				var dateCmp = new Date(tabTmp2[2],(tabTmp2[1]-1),tabTmp2[0]);
				var dateToday = new Date();
				
				dateCmp = dateCmp.getDate()+"-"+dateCmp.getMonth()+"-"+dateCmp.getFullYear();
				dateToday = dateToday.getDate()+"-"+dateToday.getMonth()+"-"+dateToday.getFullYear();
				
				if(document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart) && tabResults[nb][2] != "2" && document.getElementById("sens_groupe").value!=2)
				{
					if(dateToday == dateCmp)
					{
						document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).style.fontSize = "19px";
						document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).innerHTML = tabTmp[0]+"H"+tabTmp[1];
					}
					else
						document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).innerHTML = tabResults[nb][8]+" "+tabTmp[0]+"H"+tabTmp[1];
					tabResults[nb][4] = tabTmp[0]+"."+tabTmp[1]+".00";
				} else if(document.getElementById("sens_groupe").value==2 && tabResults[nb][2] != "2")
				{
					var tabTmp = tabResults[nb][4].split(".");
					if(dateToday == dateCmp)
					{
						document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).style.fontSize = "19px";
						document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).innerHTML = tabTmp[0]+"H"+tabTmp[1];
					}
					else
						document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).innerHTML = tabResults[nb][8]+" "+tabTmp[0]+"H"+tabTmp[1];
					tabResults[nb][4] = tabTmp[0]+"."+tabTmp[1]+".00";
				} else {
					var tabTmp = tabResults[nb][4].split(".");
					if(dateToday == dateCmp)
					{
						document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).style.fontSize = "19px";
						document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).innerHTML = tabTmp[0]+"H"+tabTmp[1];
					}
					else
						document.getElementById("spanHoraire_"+id_trajet+"_"+id_depart).innerHTML = tabResults[nb][8]+" "+tabTmp[0]+"H"+tabTmp[1];
					tabResults[nb][4] = tabTmp[0]+"."+tabTmp[1]+".00";
				}
			}
			
			directionCalculGrpe.clear();
			
			nb++;
			if(tabResults[nb])
				calculHeureP(nb);			
		});
		directionCalculGrpe.loadFromWaypoints([tabPtCalcul[tabResults[nb][0]][1],new GLatLng(document.getElementById('coordDepart').value.split("//")[0],document.getElementById('coordDepart').value.split("//")[1])],{preserveViewport:true});
	}
}

function addLineToMap(i,lines,ids)
{
	//Clear All markers
	clearMarkers();
	
	var direction = new GDirections(map);
	GEvent.addListener(direction, "load", function() { 	
						
		if(document.getElementById("recherche_trajet_page"))
		{
						
			var Icon = new GIcon(); 
			Icon.image = "images/icone_depart_trajet.png"; 
			Icon.iconSize = new GSize(32, 32); 
			Icon.shadowSize = new GSize(22, 20); 
			Icon.iconAnchor = new GPoint(16, 32); 
			Icon.infoWindowAnchor = new GPoint(6, 1); 
			Icon.infoShadowAnchor = new GPoint(13, 13);
		
			markerDepart = new GMarker(direction.getMarker(0).getLatLng(),Icon);
			
			var Icon = new GIcon(); 
			  Icon.image = "images/icone_arrivee_trajet.png"; 
			  //Icon.shadow = "path to your icon shadow"; 
			  Icon.iconSize = new GSize(32, 32); 
			  Icon.shadowSize = new GSize(22, 20); 
			  Icon.iconAnchor = new GPoint(16,32); 
			  Icon.infoWindowAnchor = new GPoint(6, 1); 
			  Icon.infoShadowAnchor = new GPoint(13, 13);
		
			markerTerminus = new GMarker(direction.getMarker(1).getLatLng(),Icon);
												
			map.addOverlay(markerTerminus);
			map.addOverlay(markerDepart);
			
			direction.getMarker(0).setLatLng( new GLatLng(90, 0));
			direction.getMarker(1).setLatLng( new GLatLng(90, 0));
		}
		
	    var j = i;
		var poly = direction.getPolyline();
		
		poly.hide();
		
		poly.setStrokeStyle({'opacity':'0.7','weight':2});
		GEvent.addListener(poly, "click", function() {
			//poly.setStrokeStyle({'color':'#FFFF00','opacity':'0.8','weight':'4'});
			var route = direction.getRoute(0);
			
			/*for(var i = 0; i < route.getNumSteps();i++)
			{
				console.log(route.getStep(i).getLatLng());	
			}*/
			
			//showLineInfos(ids[j]);
		});
		
		i++;
		if(i<lines.length)
		{
			addLineToMap(i,lines,ids);
		} else {
			//map.setCenter(new GLatLng(47.368594,2.988281),5);	
		}
		
	});
	
	//alert(lines[i].length);
	
	if(lines[i].length>25)
	{		
		getDirections(lines[i],0);
	} else {
		direction.loadFromWaypoints(lines[i],{preserveViewport:false, getSteps:true});
		tabDirections.push(direction);
	}
}

function getDirections(markers, num) 
{ 
   var dir = new GDirections();
   var start = num;
   var end = num + 25;
   
   var tabTmp = [];
   
   if(end>markers.length)
   		end = markers.length;
   
   for(var i=num;i<end;i++)
   {
	   if(markers[i]);
		   tabTmp.push(markers[i]);
   }
   
   GEvent.addListener(dir, "load", function() 
   { 
   		var polyTp = dir.getPolyline(); 
		polyTp.setStrokeStyle({'opacity':'0.7','weight':2});
    	map.addOverlay(polyTp);
		
   		if (tabTmp.length>0) 
			getDirections(markers, end); 
   }); 
   
   dir.loadFromWaypoints(tabTmp,{getPolyline:true}); 
} 

function centerMapOnAdress(id_champ)
{
	var adresse = document.getElementById(id_champ).value;
	
	geocoder.getLatLng(adresse, function (coord) {
		if(coord)
		{
			var tabCoord = coord.toString().split(",");

			if(document.getElementById("lat"))
			{
				document.getElementById("lat").value = tabCoord[0].replace("(","");
			}
			
			if(document.getElementById("lng"))
			{
				document.getElementById("lng").value = tabCoord[1].replace(")","");
			}
			
			// Et centrage de la map sur les coordonn�es renvoy�es par Google :
			map.setCenter(coord, 15);
			  var marker = new GMarker(coord);
			   GEvent.addListener(marker, "click", function() {
				  map.setCenter(coord,5, G_HYBRID_MAP );
				  marker.openInfoWindowHtml("");
			  });
			   map.addOverlay(marker);
		}
	});
	
}

function changeSensTrajet()
{
	var depart = document.getElementById("depart_adresse").value;
	var terminus = document.getElementById("terminus_adresse").value;
	
	document.getElementById("depart_adresse").value = terminus;
	document.getElementById("terminus_adresse").value = depart;
	
	//Clear All directions
	for(var l = 0;l<tabDirections.length;l++)
	{
		tabDirections[l].clear();	
	}
	
	searchDepart();
	searchTerminus();
	
}

function searchDepartGroupe(adresse,cas)
{
		// Recherche des coordonn�es d'un point dont on connait l'adresse :
		geocoder.getLatLng(adresse, function (coord) {
				// Et centrage de la map sur les coordonn�es renvoy�es par Google :								
				   depart = coord;
				   points[0] = coord;
				   
				   map.setCenter(coord, 10);
				   
				   if(cas==1)
				   {
						//showOneGroupOnMap(adresse,1);
				   		showGroupsOnMap(0,1);
				   }
			});
	}

function filtreZoom(cas)
{		
	if(cas==1)
	{
		var coord = getFieldValue("coordDepart");
		
		if(coord.length==0)
			coord = getFieldValue("coordDepart1");
		
		var tab = coord.split("//");
		var center = new GLatLng(tab[0],tab[1]);
		map.setCenter(center,16);
	} else if(cas==2) {
		var coord = getFieldValue("coordTerminus");
		
		if(coord.length==0)
			coord = getFieldValue("coordTerminus1");
			
		var tab = coord.split("//");
		var center = new GLatLng(tab[0],tab[1]);
		map.setCenter(center,16);
	} else if(cas==3) {
		var coord = getFieldValue("coordDepart");
		if(coord.length==0)
			coord = getFieldValue("coordDepart1");
		
		var tab = coord.split("//");
		var dep = new GLatLng(tab[0],tab[1]);
		var coord = getFieldValue("coordTerminus");
		
		if(coord.length==0)
			coord = getFieldValue("coordTerminus1");
		
		var tab = coord.split("//");
		var arr = new GLatLng(tab[0],tab[1]);
		//var rec = new GLatLngBounds(dep,arr);
		//var center = rec.getCenter();
		//map.setCenter(center,8);	
		
		var bounds = new GLatLngBounds();
		
		bounds.extend(dep);
		bounds.extend(arr);
		
		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds) - 1);
	}
}

function setActionToolbar(cas)
{
	if(cas==1)
	{
		filtreZoom(1);
	} else if(cas==2)
	{
		filtreZoom(2);
	} else if(cas==3)
	{
		filtreZoom(3);
	} else if(cas==4)
	{
		map.setMapType(G_NORMAL_MAP)
	} else if(cas==5)
	{
		map.setMapType(G_SATELLITE_MAP)
	}
	
	if(cas<4)
	{
		for(var i=1;i<4;i++)
		{		
			if(document.getElementById("liToolbar_"+i))
				document.getElementById("liToolbar_"+i).className = "";
		}
		
		document.getElementById("liToolbar_"+cas).className = "selected";
	} else {
		for(var i=4;i<6;i++)
		{		
			if(document.getElementById("liToolbar_"+i))
				document.getElementById("liToolbar_"+i).className = "";
		}
		
		document.getElementById("liToolbar_"+cas).className = "selected";		
	}
}

var resultOpened = 0;
var resultOpenedDepart = 0;

function chooseResult(id_trajet,id_depart)
{
	//alert("chooseResult " + id_trajet + "," + id_depart);
	fromListeResultats = 1;
	var closed=0;
	clicked=true;
		
	if(resultOpened==id_trajet && resultOpenedDepart==id_depart){
		closeDetailsTrajet(id_trajet,id_depart);
		return '';
	}
		
	if(resultOpened>0)
	{
		//console.log("ici1");
		//$("#contenuResultatsTrajets").animate( { height:"125px" }, { queue:true, duration:10 } );
		/*	if(closeDetailsTrajet(resultOpened,resultOpenedDepart,1,id_trajet)==true)
		{
			closed=1;
			resultOpened=0;
			resultOpenedDepart=0;
			chooseResult(id_trajet,1);
			return false;
		}*/
		//Je ferme le courant
		closeDetailsTrajet(resultOpened,resultOpenedDepart);
		//J'ouvre celui qui vient d'être cliqué en le sauvegardant
		/*resultOpened = id_trajet;
		resultOpenedDepart = id_depart;*/		
	}
		
	if(closed==0)
	{
		clearMarkers();
		clearAllDirections();
	
		var tbTmp = [];
	
		for( x in tabMarkers)
		{
			if(x==id_trajet)
			{
				for(var i = 0;i<tabMarkers[x].length;i++)
				{
					tabMarkers[x][i].show();	
					tbTmp.push(tabMarkers[x][i].getLatLng());
				}
			}
		}
			
		var passe = 0;
		for(var l = 0;l<tabIdsTrajet.length;l++)
		{
			if(tabIdsTrajet[l]==id_trajet && tabIdsDepart[l]==id_depart)
			{
				passe=1;
			} else if(passe==1)
			{	
				var Mt = document.getElementById("lineResult"+tabIdsDepart[l]).style.marginTop.replace("px","");
				Mt = parseInt(Mt) + 156;
				$("#lineResult"+tabIdsDepart[l]).animate( { marginTop:Mt+"px" }, { queue:true, duration:300 } );
			}
		}
		$('#detais_trajet_'+id_depart).show();
		/*
		show('detais_trajet_'+id_depart);
		$("#detais_trajet_"+id_depart).animate( { height:"180px"}, { queue:true, duration:300 } );
		
		var height = document.getElementById("resultsTrajets").offsetHeight;
		height += 156;
		$("#resultsTrajets").animate( { height:height+"px" }, { queue:true, duration:300 } );
	
		height = document.getElementById("contenuResultatsTrajets").offsetHeight;
		height += 156;
		$("#contenuResultatsTrajets").animate( { height:height+"px" }, { queue:true, duration:300 } );
		*/
		if (document.getElementById('lineResult'+id_depart))
			document.getElementById('lineResult'+id_depart).setAttribute("class","trajetSelected");
		
		resultOpened = id_trajet;
		resultOpenedDepart = id_depart;		
		/***********/		
		if (tabMarkers[id_depart]){
			GEvent.trigger(tabMarkers[id_depart][0], 'click');
			GEvent.trigger(tabMarkers[id_depart][1], 'click');
		}
		/***********/		
	}
	else
	{
		//resultOpened = id_trajet;
		//resultOpenedDepart = id_depart;		
		setTimeout("chooseResult("+id_trajet+","+id_depart+")",300);
	}
}

function clearAllDirectionsGroupe(){
	for (x in tabDirMouseOver){
		tabDirMouseOver[x].hide();
	}
		
}

function clearAllDirections()
{
	//Clear All directions
	for(var l = 0;l<tabDirections.length;l++)
	{
		tabDirections[l].clear();	
		tabDirections.pop();
	}	
}

function clearMarkers()
{
	for( x in tabMarkers)
	{
		for(var i = 0;i<tabMarkers[x].length;i++)
		{
			tabMarkers[x][i].hide();			
		}		
	}	
}

function clearPolysGroupe(){
	for (x in tabPolysMouseOver)
		tabPolysMouseOver[x].hide();
}

function getAddressGroupeDD(latlng)
{
  if (latlng != null) {
	address = latlng;
	geocoder.getLocations(latlng, showAddressGroupeDD);
  }
}

function showAddressGroupeDD(response) {
 
  if (!response || response.Status.code != 200) {
	alert("Status Code:" + response.Status.code);
  } else {
	place = response.Placemark[0];
	point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
	document.getElementById("lieu").value = place.address;
  }
}

function verifDepTerm()
{
	if(document.getElementById("depart_adresse").value.length > 0 && document.getElementById("terminus_adresse").value.length > 0) 
		createTrajetsMap(2);
	else
		alert("Veuillez entrer un depart et une arrivee !");
}

function showLoadingBox(id_element)
{
	
	var container = document.getElementById(id_element);
	container.innerHTML = "";
	
	if(document.getElementById("messNoResults"))
	{
		document.getElementById("messNoResults").parentNode.removeChild(document.getElementById("messNoResults"));
	}
	
	if(document.getElementById("loadingBoxDiv"))
	{
		document.getElementById("loadingBoxDiv").parentNode.removeChild(document.getElementById("loadingBoxDiv"));
	}
	
	var div = document.createElement("DIV");
	div.id = "loadingBoxDiv";
	var img = document.createElement("IMG");
	img.src = web_path + "/images/loading.gif";
	div.appendChild(img);
	
	if(div)
		container.appendChild(div);
}

function hideLoadingBox()
{
	if(document.getElementById("loadingBoxDiv"))
	{
		document.getElementById("loadingBoxDiv").parentNode.removeChild(document.getElementById("loadingBoxDiv"));
	}
}

function mysortfn(a,b,cas) 
{
	if (a[cas]<b[cas]) return -1;
	if (a[cas]>b[cas]) return 1;
	return 0;
}

function compare_date(date_1, date_2)
{
    diff = date_1.getTime()-date_2.getTime();
    return (diff==0?diff:diff/Math.abs(diff));
}

function survoleTrajetListe(id_depart,cas,type, isGroupe)
{
	if(clicked==false)
	{
		if(cas==1)
		{
			if (isGroupe){
				tabMarkers[id_depart][0].show();
				tabMarkers[id_depart][1].show();
			}
			else if(document.getElementById('sens_groupe'))
			{
				if(document.getElementById('sens_groupe').value==1)								
					tabMarkers[id_depart][0].show();
				else if(document.getElementById('sens_groupe').value==2)				
					tabMarkers[id_depart][1].show();
			}										
			manageOthersMarkers(id_depart, 1);
			
			if (isGroupe){
				if (tabTrajetIsConducteur[id_depart] != 0 && tabPolysMouseOver[id_depart])
					tabPolysMouseOver[id_depart].show();
			}
			else
				tabPolysMouseOver[id_depart].show();
					
		} else if(cas==2) {
			if(document.getElementById('sens_groupe'))
			{
				if(document.getElementById('sens_groupe').value==1)					
					tabMarkers[id_depart][0].hide();
				else if(document.getElementById('sens_groupe').value==2)
					tabMarkers[id_depart][1].hide();
			}
			if (isGroupe) {
				removeOtherMarkerForGroupe();
			}
			else 
				manageOthersMarkers(id_depart, 2);
			if(tabPolysMouseOver[id_depart])
				tabPolysMouseOver[id_depart].hide();			
		}
	}
}

function removeOtherMarkerForGroupe(){
	for (x in tabMarkers){
		//Test du sens du groupe		
		if (sensGroupeSearch == 1){
			tabMarkers[x][1].hide();
			tabMarkers[x][0].show();
		}
		else {
			tabMarkers[x][0].hide();
			tabMarkers[x][1].show();
		}
	}
}

function removeMarkersAndPoly (id){
	if (tabMarkers[id][0])
		tabMarkers[id][0].hide();
	if (tabMarkers[id][1])
		tabMarkers[id][1].hide();
	tabPolysMouseOver[id].hide();
}


function manageOthersMarkers (id_depart, cas){
	for( x in tabMarkers)
	{
		for(var i = 0;i<tabMarkers[x].length;i++)
		{
			if (x != id_depart)
				if (cas == 1)
					tabMarkers[x][i].hide();
				else {					
					tabMarkers[x][i].show();
				}
			if (tabPolysMouseOver[x])
				tabPolysMouseOver[x].hide();
		}		
	}
}

/* Covoiturage */
function appelTraceTrajetCovoiturage(coordDepartconducteur, coordArriveeconducteur,coordDepartpassager, coordArriveepassager, role,
		adresseDepart, adresseTerminus){
	//Passage en jQuery Hubert 27/01/2010
	$("#blocCovoiturage").hide();
	$("#blocCovoiturage").removeShadow();
	$("#blocLegende").show();
	$("#adresseDepartDefaut").html(adresseDepart);
	$("#adresseTerminusDefaut").html(adresseTerminus);	
    traceTrajetWithParameter(coordDepartconducteur,coordArriveeconducteur,1, role);
    traceTrajetWithParameter(coordDepartpassager,coordArriveepassager,0, role);
}

function zoomToPoint(lat,lng){
	map.setCenter(new GLatLng(lat,lng), 10);
}