 var map;
 var geoCodeur;

 var gdir;
 
 var markers = new Array();
 var markerClusterer;
 
/* idTrajet => Contient des associations de points 2 par 2 (pour les polylines) */
var arrayPointToPoint = new Array();
 
  var circles = new Array();
/* 
//tableau de objet : polyline+idTyphoon	 */
  var polylines = new Array();

 var lastIntervalleDate = new Array();
 
 var visibleInfoWindow;
 
/*  // For load */
 var flag = false;
 var timeoutChargement;

 var MyMar;
 
/*  //Premier chargement */
 var premierC = true;
 
 
 
 /*Liste de la forme tab[idTrajet] = listeMarker  Que les markers selon la timeline*/ 
 var arrayTrajets = new Array();
 /*Liste de la forme tab[idTrajet] = listeMarker tous les markers du trajet */ 
 var arrayToutLeTrajet = new Array();
 
 
 /* tableau ou sont stockés les id des stops et leurs coordonnées	 */
  var arrayStop = new Array();
 
 
 var trajetSelected;
 
 var busSelected = new Array();
 
 
 
 var imageStopPrincipal = "./images/bus_grey.png";
 var imageStopActuel = "./images/bus_trajet.png";
 var imageStopAutre = "./images/bus_actif.png";
 
 var imageBus =  "./images/bus_brown.png";
 
var playActive=false;
 
/*   // GOOGLE MAP V2   */
  function initialize() 
  {
	
	if(GBrowserIsCompatible()) 
	{
	
	  map = new GMap2(document.getElementById('myMap'));
	  map.setCenter(new GLatLng(-12.37896 , 130.874226), 15);
	  // map.addControl(new GSmallMapControl());
	  map.addControl(new GMapTypeControl());
	
	 var extLargeMapControl = new ExtLargeMapControl();
		map.addControl(extLargeMapControl); 


	  
	  map.addMapType(G_SATELLITE_3D_MAP);
	  geoCodeur = new GClientGeocoder();
	  gdir = new GDirections( map ); 
	 
	 
	  this.debutChargement();
	  
	  this.twitterReload();
	  
	
	  
	
	}
	

	
  }

  


  
/* //Recupere la liste des dates de l'intervalle */
function getIntervalleDate()
{
	var myListe = new Array();

	var posSliderLeft = document.getElementById('zoom-handle-1').offsetLeft;
	var posSliderRight = document.getElementById('zoom-handle-2').offsetLeft;
	var posDivLeft;
	var posDivRight;
	var temp;
	var id;
	

	for ( var i = this.debutTimeLine; i<this.finTimeLine; i++ )
	{
		try
		{
			temp = this.val[i].split('-');
			
				
			switch ( this.scale )
			{
				case "Hour" :
					id=temp[0];
				break;
			
				case "Quarter" :
					id=this.val[i];
				break;
				
				case "Minute" :
					id=this.val[i];
					

				break;
			}

		
		
			posDivLeft = document.getElementById("theDates").offsetLeft  + document.getElementById(id).offsetLeft;
			posDivRight = document.getElementById("theDates").offsetLeft  + document.getElementById(id).offsetLeft + parseFloat(document.getElementById(id).style.width);
			
			
		
			
			
			if (  posDivLeft >= posSliderLeft &&  posDivLeft <= posSliderRight  )
			{	
				myListe[id] = id;
			}	
			else if ( posDivRight >= posSliderLeft &&  posDivRight <= posSliderRight )
			{
				myListe[id] = id;
			}	
			else if (  posDivLeft <= posSliderRight &&	posDivRight >= posSliderLeft  )
			{
				myListe[id] = id;
			}	

					
					
		}
		catch (err){}	
	}
	
	
	return myListe;
}  


function visibilityFirstLoad()
{

		if (  isLoadedHoraires  )
		{

			if ( this.visibilityHoraires )
			{	
				
			
				updateVisibilityOut ( "HORAIRE", this.markersHoraires, this.getIntervalleDate() );
				updateVisibilityIn ( "HORAIRE", this.markersHoraires, this.getIntervalleDate() );
				
				var expression = new RegExp("_[0-9]*$"); 
	

	
				
			}	
			
			

			
			ajaxMajTable();
			
			clearTimeout(this.timeoutChargement);
			this.finChargement();
			
			slidePlay();

		}
		else
			this.timeoutChargement = setTimeout( "visibilityFirstLoad ()", 1);

	
}


function ajaxMajTable()
{

var url ='./include/ajax/ajax_MajTable.php';


		var ajax = new Ajax.Request(
			url,
			{
				method:'post',
				onComplete:ajaxMajTableCallback
			});
}	

function ajaxMajTableCallback (request)
{
	var txt = request.responseText.split ("<numpage>");
	
	document.getElementById("spreadSheet").innerHTML = txt[0];

	changerPageSpreadSheet( parseInt (txt[1]) );

}
	


  
function visibilityMarkers ( )
{

	var intervalleDate = this.getIntervalleDate();
	
	var listeUploadIn = new Array();
	var listeUploadOut = new Array();
	var expression;
	
	switch ( this.scale )
	{
		case "Hour" :
			expression = new RegExp("^[0-9]{2}$");
		break;
		case "Minute" :
			expression = new RegExp("^[0-9]{2}-[0-9]{2}$");
		break;
		case "Quarter" :
			expression = new RegExp("^[0-9]{2}-[0-9]{2}$");
		break;
	
	}
	
/* 	//Premier enregistrement de l'intervalle */
	if ( this.premierC  )
	{
		this.lastIntervalleDate = intervalleDate;
		
		for ( var temp =0; temp< this.val.length; temp++ )
			listeUploadOut[this.val[temp]] = this.val[temp];
		
		 listeUploadIn = intervalleDate;
	
		 this.premierC = false;
	}
	else
	{	

		for ( i in this.lastIntervalleDate )
		{	
			/* //Si c'est de la forme AAAA-MM-JJ */
			for ( j in intervalleDate )
			{
				if (expression.test(i) && expression.test(j))
				{	
					/* //On test si la nouvelle valeur n'existe pas dans l'ancien intervalle */
					if ( !this.lastIntervalleDate[j] )
					{
						listeUploadIn[j]=j;
						
						/* // document.getElementById("test").innerHTML += j+"  "; */
					}	
											
					/* //On test si l'ancienne valeur n'existe pas dans le nouvel intervalle	 */			
					if ( !intervalleDate[i] )
					{
						listeUploadOut[i]=i;
					/* // document.getElementById("test2").innerHTML += i+"  "; */
					}	
						
				}
			}
		}	
	}	
	
	
/* 	//MARKERS HORAIRE */
	if (  visibilityHoraires )
	{	
		updateVisibilityIn( "HORAIRE", this.markersHoraires, listeUploadIn);
		updateVisibilityOut("HORAIRE", this.markersHoraires, listeUploadOut);
	}
	
	
/* 
	//On mes a jour la liste des anciens intervalles */
	this.lastIntervalleDate = intervalleDate;
	


	this.visibilityMarkesEnd = true;	

	/* // this.redrawLine ()	 */
}




/* //Rend invisible les markers en dehors l'intervalle  */
function updateVisibilityOut ( disaster, listMarkers, intervalL)
{	

	var expression;
	var date;
	var hour;
	var minute;

	
	switch ( this.scale )
	{
		case "Hour" :
			expression = new RegExp("^[0-9]{1,2}$");
		break;
		case "Minute" :
			expression = new RegExp("^[0-9]{1,2}-[0-9]{1,2}$");
		break;
		case "Quarter" :
			expression = new RegExp("^[0-9]{1,2}-[0-9]{1,2}$");
		break;
	
	}


	for ( i in  intervalL )
	{
		if ( expression.test(i))
		{
						
			date =i.split("-");
			hour = date[0];
			minute = date[1];

			switch ( this.scale )
			{
				case "hour" :
				
					/* //Si il y a des markers dans cet interval */
					if ( listMarkers[hour] )
					{	
						for ( listeMinute in listMarkers[hour])
						{
								with ( listMarkers[hour][listeMinute] )
								{			
									
									this.setChange ( disaster, listeMarker, false );	
								}	
						
						}			
					}
				

				break;
				
				case "Quarter" :
				
					try
					{
						/* //Si il y a des markers dans cet interval */
						if ( listMarkers[hour][minute] )
						{	
							for ( k in listMarkers[hour][minute])
							{

								with ( listMarkers[hour][minute][k] )
								{			
									
										this.setChange ( disaster, listeMarker, false );	
								}	
							
							}			
						}
					}catch(err){}
				
				break;
				
				case "Minute" :
				
				try
					{
						/* //Si il y a des markers dans cet interval */
						if ( listMarkers[hour][minute] )
						{	

							with ( listMarkers[hour][minute] )
							{			
								
									this.setChange ( disaster, listeMarker, false );	
							}			
						}
					}catch(err){}
				
				break;
			
			}
				
		}	
	
	}
	
	this.flag = false;

}



/* //Rend visible les markers dans l'intervalle  */
function updateVisibilityIn (disaster, listMarkers,  intervalL)
{
	var expression;
	var expressionJourMois = new RegExp("^[0-9]{1-2}$"); 
	var date;
	var year;
	var month;
	var day;
	
	var arrayReturn;
	
	switch ( this.scale )
	{
		case "Hour" :
			expression = new RegExp("^[0-9]{1,2}$");
		break;
		case "Minute" :
			expression = new RegExp("^[0-9]{1,2}-[0-9]{1,2}$");
		break;
		case "Quarter" :
			expression = new RegExp("^[0-9]{1,2}-[0-9]{1,2}$");
		break;
	
	}

	
	
	for ( i in  intervalL )
	{
		if ( expression.test(i))
		{
			
			date =i.split("-");
			hour = date[0];
			minute = date[1];

			switch ( this.scale )
			{
				case "hour" :
				
					/* //Si il y a des markers dans cet interval */
					if ( listMarkers[hour] )
					{	
						for ( listeMinute in listMarkers[hour])
						{
							
							for ( k in listeMinute)
							{

								with ( listMarkers[hour][listeMinute][k] )
								{			
									
										this.setChange ( disaster, listeMarker, true );	
								}	

							}
						
						}			
					}
				

				break;
				
				case "Quarter" :
				
					try
					{
						/* //Si il y a des markers dans cet interval */
						if ( listMarkers[hour][minute] )
						{	
							for ( k in listMarkers[hour][minute])
							{

								with ( listMarkers[hour][minute][k] )
								{			
									
										this.setChange ( disaster, listeMarker, true );	
								}	
							
							}			
						}
					}catch(err){}
				
				break;
				
				case "Minute" :
			
				try
					{
						/* //Si il y a des markers dans cet interval */
						if ( listMarkers[hour][minute] )
						{	
 								with ( listMarkers[hour][minute] )
								{			
							
										this.setChange ( disaster, listeMarker, true );	
								}	
							
				
						}
					}catch(err)
					{
					}
				
				break;
			
			}
				
		}	
	
	}
	
	this.flag = false;
	
}

function setChange ( disaster, listOfMarker, changeType, id )
{
	var good=true;
	
		
	if ( changeType )
	{
		for ( var i=0; i<listOfMarker.length; i++ )
		{ 
			with (listOfMarker[i]) 
			{
				updateArrayTrajets ( idTrajet, mark, true );

	
						/*Le marker change */
				
						
				map.addOverlay (mark);	
				
				
				if ( this.trajetSelected ==  idTrajet)
						changerCouleurMarkers ( idTrajet );
				
			

			}
	
		}
	
	}
	else
	{
		for ( var i=0; i<listOfMarker.length; i++ )
		{ 
			with (listOfMarker[i]) 
			{
				updateArrayTrajets ( idTrajet, mark, false );
				
				/*Le marker change */
				
					
				map.removeOverlay (mark);	
				
				
				if ( this.trajetSelected ==  idTrajet)
						changerCouleurMarkers ( idTrajet );
		

			}
	
		}
					

	}

				


}


/*function qui met à jour liste arrayTrajets */
function updateArrayTrajets ( idTrajet, marker, visible )
{
	if ( visible )
	{	/* On teste si la liste existe */
		if ( this.arrayTrajets[idTrajet] )
		{
			pushMarker ( this.arrayTrajets[idTrajet], marker );
		}
		else
		{
			this.arrayTrajets[idTrajet] = new Array();
			pushMarker ( this.arrayTrajets[idTrajet], marker );
		}
	
	}
	else
	{
		/* On teste si la liste existe */
		if ( this.arrayTrajets[idTrajet] )
			clearMarker ( this.arrayTrajets[idTrajet], marker );

	}

}


/*function qui met à jour les markers et la liste qui les listes entres ceux ci grace à arrayTrajets */
function updateTrajetsLine ( )
{	

	var expression = new RegExp("_[0-9]*$"); 
	

	/*Pour chaque trajets */
	for ( var i in this.arrayTrajets )
	{	
		if ( expression.test(i) )
		{
			
			this.eraseLine ( this.arrayTrajets [i], i );
			this.drawLine ( this.arrayTrajets [i], i );
		}	
			
			
	}

}




/* //Fonction qui verifie si un marker est dans une liste et qui l'ajoute à celle ci en suite */
function pushMarker ( liste,  mark )
{
	if ( liste )
		for ( var i =0; i< liste.length; i++ )
		{
			if  ( liste[i] == mark )
				return;			
		}
	liste.push ( mark );	


}


function clearMarker ( liste, mark )
{
	if ( liste )
		for ( var i =0; i< liste.length; i++ )
		{
			if  ( liste[i] == mark )
			{/* //On inverse avec le dernier element et on supprime le dernier element */
			
				var temp = liste[liste.length-1];
				liste[liste.length-1] = liste[i];
				liste[i] = temp;
				
				
				liste.pop();
			
				return;		
			}		
		
		}
		
}


function test()
{
	document.getElementById ("test2").innerHTML ="";
	for ( var i in arrayPointToPoint )
	{
		document.getElementById ("test2").innerHTML += i+" / ";
	}
}
  
/* //Place un marqueur par rapport à un point */
	
function placerMarker (  lat, lng, info,  dateTime, idHoraire, idTrajet  )
{


	var date = dateTime.split(":");						

	var hour = date[0];
	var minute = date[1];
	var isGood = true;
	
			/* //On teste si l'heure existe  */
			if ( this.markersHoraires[hour] )
			{

				/* //Si elle existe on teste dans cette liste si la minute existe */
				if (  this.markersHoraires[hour][minute] )
				{		
					
				/* //Si elle existe on ajoute dans cette liste le marker  */
						with ( this.markersHoraires[hour][minute] )
						{
						
							for ( var m=0; m<listeMarker.length; m++ )
							{	
								with ( listeMarker[m] )
								{
									if ( idHoraire ==  id )
										isGood = false;
								}

							}
							
							if  ( isGood )
								listeMarker[listeMarker.length] = placer (lat, lng, info, date, idHoraire, idTrajet );
						}
						
				}/* //L'année, le mois existe mais pas le jour */
				else
				{
					
					
					/* //On ajoute le marker à la liste des markers du jours */
					var mDArray = new markerDateArray ( date, new Array() );
					with ( mDArray )
					{
						listeMarker[0] =  placer (lat, lng, info, date, idHoraire, idTrajet );
						
						
					}
					
					this.markersHoraires[hour][minute] = mDArray;
	
				}
				
			}
			else
			{/* //On crée les listes correspondante et on les imbriques */
			
				var myListeMinute = new Array();
			
				/* //On ajoute le marker à la liste des markers du jours */
				var mDArray = new markerDateArray ( date, new Array() );
				
				with ( mDArray )
				{
					listeMarker[0] =  placer (lat, lng, info, date, idHoraire, idTrajet );
					
				}
			
				myListeMinute[minute] = mDArray;
				/* //On ajoute la liste de minite dans les heures */
				this.markersHoraires[hour] = myListeMinute;
			}
		
	
	
	
	if ( this.nbHoraires == this.nbHorairesDepart  )
	{
		this.isLoadedHoraires = true;	
	}	
	
	

}


/*Fonction qui place tous les arrets de bus sur la map */
function placerMarkerStop ( idStop, lat, lng, info )
{
	var iconMarker = new GIcon(G_DEFAULT_ICON);
	
	iconMarker.image = imageStopPrincipal;
	iconMarker.shadow = "";
	iconMarker.iconSize =  new GSize(25, 25);
	var latlng = new GLatLng(lat, lng);
	var marker;
	
	var centre = new GLatLng(lat,lng); 

	marker = new GMarker(latlng, {icon: iconMarker, title: "Stop"});

			GEvent.addListener(marker,"click", function() 
			{
				 marker.openInfoWindowHtml(info);
				 idStopTemp = idStop;
				 centreTemp = centre;
				 setTimeout("placerStreetViewInfoWindows()", 1000);
										
			});


	this.map.addOverlay (marker);	
	
	this.arrayStop[centre] = marker;
	

return marker;

}

function majArrayToutLeTrajet ( idTrajet )
{
	if ( this.arrayToutLeTrajet[idTrajet] )
	{
		pushMarker ( this.arrayToutLeTrajet[idTrajet], marker );
	}
	else
	{	
		this.arrayToutLeTrajet[idTrajet] = new Array();
		pushMarker ( this.arrayToutLeTrajet[idTrajet], marker );
	}
}	


var idStopTemp;
var centreTemp;
function placerStreetViewInfoWindows ( )
{ 
	try
	{
		document.getElementById("streetView_"+idStopTemp).innerHTML ="";
		var panorama = new GStreetviewPanorama(document.getElementById("streetView_"+idStopTemp));
		panorama.setLocationAndPOV(centreTemp, {yaw:80.5}); 

		GEvent.addListener(panorama, "error", function ( errorCode )
		{
				
			 document.getElementById("streetView_"+idStopTemp).innerHTML ="There is no available Street View for this bus stop!";
			 
			
			
		});
	}
	catch ( err ) {}
}


function placer (lat, lng, info, date, idHoraire, idTrajet )
{
	
	var iconMarker = new GIcon(G_DEFAULT_ICON);
	iconMarker.image = imageBus;
	iconMarker.shadow = "";
	iconMarker.iconSize =  new GSize(25, 25);
	var latlng = new GLatLng(lat, lng);
	var marker;
	
	var centre = new GLatLng(lat,lng); 
	
	
	marker = new GMarker(latlng, {icon: iconMarker, title: "Cobus"});

		 
			 
		 GEvent.addListener(marker,"click", function() 
		{
			
			
			
			 idStopTemp = idHoraire;
			 centreTemp = centre;
			 setTimeout("placerStreetViewInfoWindows()", 1000);
											
			changerCouleurMarkers ( idTrajet );
			
			 marker.openInfoWindowHtml(info);						
		});
				
	this.arrayStop[centre] = marker;
			
			
	var MyMar = new MyMarker( date, idHoraire, marker, idTrajet ); 	
	
		
	return MyMar;	

}


function changerCouleurMarkers ( idTrajet )
{
	/* On remet à jour les autres markers */
	if ( this.trajetSelected )
	{
	
		for ( var i =0; i<this.arrayToutLeTrajet[trajetSelected].length; i++ )
		{
		/* On change le marker de tout le trajet */
		try
		{
			this.arrayToutLeTrajet[trajetSelected][i].setImage( imageStopPrincipal );
	
			
		}catch ( err ){}	
		
		
		

		}
		
		for (var i = 0; i< this.busSelected.length; i++)
		{
			/* On change le marker de tout le trajet */
			try
			{
				this.busSelected[i].setImage( imageBus );
			}catch ( err ){}	
			
			delete (this.busSelected[i]);
	
		}	

	}
	
	
	for ( var i =0; i<this.arrayToutLeTrajet[idTrajet].length; i++ )
	{
		/* On change le marker de tout le trajet */
		try
		{
			this.arrayToutLeTrajet[idTrajet][i].setImage( imageStopAutre );
	
			
		}catch ( err ){}	
		
		
		/* On change le marker du trajet */
		try
		{
			this.arrayTrajets[idTrajet][i].setImage( imageStopActuel );
			
			
			this.busSelected.push (this.arrayTrajets[idTrajet][i]);
			
		}catch ( err ){}	
	

	}
		
	this.trajetSelected = idTrajet;

}








/***************************************************TWITTER***************************************************/



/* //FOR TWITTER  */
function placerMarkerTY ( location, info, myDate, type, isNew  )
{
	var temp = true;

	/* //On teste si la liste de nom date existe  */
	if ( this.markersTwitter[myDate] )
	{/* //On ajoute la valeur à la liste */
		
		/* //on fait un test pour savoir si le marker n'ai pas deja dans la liste */
		with ( this.markersTwitter[myDate] )
		{
			for (var i = 0; i< listeMarker.length; i++ )
			{
				with ( listeMarker[i] )
				{
					if ( date == myDate && location == mark.getTitle() )
					{
						temp = false;
					}	
				}
				
			}
			
		}	
		
		if ( temp )
			placerTY (location, info, myDate, this.markersTwitter[myDate], isNew);		
			
	}
	else
	{/* //On crée la liste */
	
		var mDArray = new markerDateArray ( myDate, new Array() );
		placerTY (location, info, myDate, mDArray, isNew);
		
		
		this.markersTwitter[myDate] = mDArray;
		
		
	}
	
	
	
}

/* //FOR TWITTER  */
function placerTY (location, info, date, liste, isNew)
{

		if (geoCodeur)
		{
			
			
			geoCodeur.getLocations(location, function(response)
			{
	
					 if (response.Status.code == 200) 
					{ 
						
						var icon = new GIcon(G_DEFAULT_ICON);
						
							icon.image = "./images/twitterMark.png";
							icon.shadow  = "./images/twitter_shadow.png";
							icon.iconSize  = new GSize(24, 24);
							
						var place = response.Placemark[0];
						var point = new GLatLng(place.Point.coordinates[1],  place.Point.coordinates[0]);

							
						var marker = new GMarker(point, {icon: icon, title: location });
						
		
					
							
						GEvent.addListener(marker,"click", function() 
						{
							 marker.openInfoWindowHtml(info);
							 
													
						});
						
						this.map.addOverlay (marker);	
							
						
						with ( liste )
						{
							listeMarker[listeMarker.length] = new MyMarker( marker, date );
						}	
						
					}
				});

		}
		
}



/***************************************************END TWITTER***************************************************/


/***************************************************DRAW LINE FUNCTIONS********************************************/
var flag2 = 1;
/* //dessine le trajet du bus */
function drawLine ( liste, idTrajet )
{

	var points = new Array();
	
	var lastPoint="";
	var arrayPointToPointTemp;
	
	var lineColor = "#FF0700";
	
	var lineWeight = 5;
	var lineOpacity = .8;
	var polyline;
	
	var direction;
	
	
	if ( this.arrayPointToPoint[idTrajet] )
	{
		arrayPointToPointTemp = this.arrayPointToPoint[idTrajet]
	}
	else
		arrayPointToPointTemp = new Array();
	
	if ( liste.length > 0 )
	{	
		 for ( var j=0; j<liste.length; j++ )
		{	
			 if (lastPoint != "")
			{
				if ( !arrayPointToPointTemp[lastPoint.getLatLng()+"|"+liste[j].getLatLng()] )
				{
					
					
				
				/* 	//On ajoute la ligne entre les 2 points */
					points = new Array ();
					points.push (lastPoint.getLatLng());
					points.push (liste[j].getLatLng());
					
					polyline = this.polylineEncoder.dpEncodeToGPolyline(points, lineColor, lineWeight, lineOpacity);
			
					arrayPointToPointTemp[lastPoint.getLatLng()+"|"+liste[j].getLatLng()] = polyline;
					map.addOverlay(polyline);	
				
	
					
					
					
				}
				
			}
			
			
			lastPoint = liste[j];	
			
			this.map.addOverlay (this.arrayStop[liste[j].getLatLng()] );

		} 
		
			
		

		
/* 		//On sauvegarde les valeurs */
		this.arrayPointToPoint[idTrajet] = arrayPointToPointTemp;
		


	}

	

}


/* //dessine le trajet du bus */
function eraseLine ( liste, idTrajet )
{

	// var points = new Array();
	var expression = new RegExp("^[(].*[)][|][(].*[)]$"); 
	var lastPoint="";
	var arrayPointToPointTemp = new Array ();

	/*Si la liste existe on parcours celle ci en effacant les lignes correspondantes*/
	if ( this.arrayPointToPoint[idTrajet] )
	{
		/*On initialise le tableau Temporaire */
		for ( var j=0; j<liste.length; j++ )
		{	
			if (lastPoint != "")
			{
				if ( !arrayPointToPointTemp[lastPoint.getLatLng()+"|"+liste[j].getLatLng()] )
				{	/*Pas besoins de valeur on se servira que de l'id */
					arrayPointToPointTemp[lastPoint.getLatLng()+"|"+liste[j].getLatLng()] = "";
				}
				
			}
			
			lastPoint = liste[j];	
		}
		
		
	
		
		
		var count = 0;
		
		/*On parcours la liste de polyline et on la compare avec celle précedement crée */
		for ( var i in this.arrayPointToPoint[idTrajet]  )
		{	/*On enleve les resultats qui ne servent à rien*/

			if ( expression.test(i))
			{	
				/*Si l'element est encore dans la liste on laisse la ligne affichée à l'écran sinon on la supprime de la map et de la liste */
				if ( !arrayPointToPointTemp[i] )
				{
		
				
					
					var tab = arrayPointToPoint[idTrajet][i].split  ("|");
					
					try
					{
						this.map.removeOverlay (tab[0] );
					}catch (err){}	
					
					try
					{
						this.map.removeOverlay (tab[1] );
					}catch (err){}	
					
				
				
					this.map.removeOverlay( arrayPointToPoint[idTrajet][i] );
					delete (arrayPointToPoint[idTrajet][i] );
					
						
				
				}	
				
			}


		}
		
		
		
		
	}	
		
		


}



/***************************************************END DRAW LINE FUNCTION*****************************************/

/***************************************************ITINERAIRE*****************************************/

var fromLatLng;
var toLatLng;

function tracerItineraire()
{
	var from = $F("fromValue");
	var to = $F("toValue");
	

	
	var points = new Array();
	
	geoCodeur.getLocations(from, function(response)
			{
					 if (response.Status.code == 200) 
					{ 
						var place = response.Placemark[0];
						fromLatLng = "("+place.Point.coordinates[1]+","+place.Point.coordinates[0]+")";
					
					}
			});
			
	geoCodeur.getLocations(to, function(response)
			{
					 if (response.Status.code == 200) 
					{ 
						var place = response.Placemark[0];
						toLatLng = "("+place.Point.coordinates[1]+","+place.Point.coordinates[0]+")";
						
							
						points.push( fromLatLng );
						points.push( toLatLng );
						
						gdir.loadFromWaypoints(points); 

				
					}
			});	


}


/***************************************************FIN ITINERAIRE*****************************************/


function displayOption ( visible )
{
	
	if ( visible )
		document.getElementById("listCheckBoxExtra").style.display="block"; 
	else
		document.getElementById("listCheckBoxExtra").style.display="none"; 

}


/* //Possede un nom de type AAAA-MM-JJ et la liste de tous les markers à cette date */
function markerDateArray( nom, listeMarker ) 
{
	this.nom=nom;
	this.listeMarker=listeMarker;
}


function chargement ( )
{
	if ( !this.flag  )	
	{
		clearTimeout(this.timeoutChargement);
/* 		// document.getElementById("loadingMap").style.display="none";  */
		
	}
	else
		setTimeout( "chargement ()", 1);
		
}



function debutChargement ()
{
	/*  // document.getElementById("loadingMap").style.display="block";  */
}

function finChargement ()
{
	 /* document.getElementById("loadingMap").style.display="none";  */
}



function geocodeAdresse()
{
	geoCodeur.getLocations($F("whereValue"), function(response)
			{
					/* // document.getElementById("test").innerHTML += response.Status.code+"<BR />"; */
					 if (response.Status.code == 200) 
					{ 
						var place = response.Placemark[0];
						map.setCenter(new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]), 7);
					
					}
			});

}


/***************************************************CLASS***************************************************/



function MyMarker(  date, id, mark, idTrajet ) 
{
	this.mark=mark;
	this.date=date;
	this.id=id;
	this.idTrajet=idTrajet;
	
}



/***************************************************END CLASS***************************************************/

/* //Appelé lorsqu'on slide entre la map et le spreedsheet */
function changeStateMapSpreedSheet ()
{
	if ( stateMapSpreedSheet == 0 )	
	{
		stateMapSpreedSheet=1;
		$("buttonMap").src = "./images/design/buttonMap.png";
		$("buttonSpreadSheet").src  = "./images/design/buttonSpreadSheetSelect.png";
	}		
	else
	{
		stateMapSpreedSheet=0;
		$("buttonMap").src = "./images/design/buttonMapSelect.png";
		$("buttonSpreadSheet").src  = "./images/design/buttonSpreadSheet.png";
	}		
}	


function centrerMap ( lat, lng )
{
	Effect.Appear('mapContainer'); Effect.Fade('spreadSheet'); 
	stateMapSpreedSheet=0;
	$("buttonMap").src = "./images/design/buttonMapSelect.png";
	$("buttonSpreadSheet").src  = "./images/design/buttonSpreadSheet.png";
	 map.setCenter(new GLatLng( lat, lng ), 17);



}

function clearAllOfTheMap()
{

/* 	//On remes reinitialize les listes */
	 this.visibleTyphoons = new Array();
	 
/* 	 //On efface les polygon  */
	map.clearOverlays(); 


}



function playTimeline ()
{
	if ( !this.playActive )
	{
	
		
		$("liveTweetLogo").src  = "./images/design/stop.png";
		this.playActive = true;
		slidePlay();
	
	}
	else
	{
		$("liveTweetLogo").src  = "./images/design/play.png";
		this.playActive = false;


	}		
	



}



function slidePlay()
{


		var temp = false;
		var slideSpeed = -1*6;
		slideSpeed = Math.max(-10,slideSpeed);
		
	 
		var leftPos = imageGalleryObj.offsetLeft;
		leftPos = leftPos/1 + slideSpeed;
		
		if(leftPos>=maxGalleryXPos)
		{
		
			temp = "left";
			
			if ( this.limiteLeft  )
			{
			
				leftPos = maxGalleryXPos;
				slideSpeed = 0;
			}	
			
		}
		
		if(leftPos<=minGalleryXPos)
		{
			temp = "right";
			
			if ( this.limiteRight )
			{	
				leftPos = minGalleryXPos;
				slideSpeed=0;
			}	
		}
		
		if ( temp == false )
			imageGalleryObj.style.left = leftPos + 'px';
		

			moveTimeLine( temp );
		
			visibilityMarkers ();
		
	if ( this.playActive )
	{
		setTimeout('slidePlay()',20);
	}	
	
	

}

function inputWhereModif ( type )
{
	switch ( type )
	{
		case "from" :
		
			if ( $F("fromValue") == "Australia, Darwin, rapid creek" )
			{
				$("fromValue").value ="";
				$("fromValue").className = "inputTexte";
				
			}
			
			
		
		
		
		
		break;
		case "to" :
		
		if ( $F("toValue") == "Australia,Darwin, alawa Cres" )
			{
				$("toValue").value ="";
				$("toValue").className = "inputTexte";
				
			}
			
		break;
	}


}	


function inputWhereModifChange ( type )
{ 
	switch ( type )
	{
		case "from" :
		
			if ( $F("fromValue") == "" )
			{
				$("fromValue").value ="Australia, Darwin, rapid creek";
				$("fromValue").className = "inputTexteGray";
				
			}
			
			
		
		
		
		
		break;
		case "to" :
		
		if ( $F("toValue") == "" )
			{
				$("toValue").value ="Australia,Darwin, alawa Cres";
				$("toValue").className = "inputTexteGray";
				
			}
			
		break;
	}


}

document.write("<script type=\"text/javascript\">initialize();</script>");





 
 