/* //Nombre de minute entre les 2 dates soit 24H*/
var dif = 1440;

/* //one hour */
var type = 1;

var timeLine="";
/* 
//Tableau contenant les valeurs de la timeline ( tab[id] = "AAAA-MM-JJ" ) */
var val = new Array();

var controlSlider;

var activeImage = false;
var imageGalleryLeftPos = false;
var imageGalleryWidth = false;
var imageGalleryObj = false;
var maxGalleryXPos = false;
var slideSpeed = 0;
var imageGalleryCaptions = new Array();
/* 
//Passe a true si la limite a ete atteinte par le slider */
var limiteRight = false;
var limiteLeft = false;

var isVisibleMenuShare = false;


function initTimeLine()
{
	
	 this.enableSlider();
	   
	 
	 this.createTimeLineValues();
	   

	initSlideShow();

	

}

function createTimeLineValues()
{

	var w =  (document.getElementById(idTimeLine).offsetWidth-1)/ this.nbJours;
	var temp;
	var text;
	var id;
	
	var classType = "eri";
	
/* 
	//On travaille seulement sur un jour */
	this.timeLine="";
	
	switch ( this.scale )
	{
		case "Minute" :
			this.finTimeLine = (this.dateFinTemp.getHours()*60)+this.dateFinTemp.getMinutes() ;
			this.debutTimeLine = this.finTimeLine-this.nbJoursTotal;
			
			if ( debutTimeLine < 0 )
				debutTimeLine=0;
		break;		
		
		case "Quarter" :
		
			this.finTimeLine = (this.dateFinTemp.getHours()*60)+this.dateFinTemp.getMinutes() ;
			this.debutTimeLine = this.finTimeLine-(this.nbJoursTotal*15);
			
			if ( debutTimeLine < 0 )
				debutTimeLine=0;
		break;		

		
		case "Hour" :
	
			this.debutTimeLine=0;
			this.finTimeLine=this.val.length;
		
		break;
	}	
	
		/* //Permet d'afficher les graduations */
	for ( var i=this.debutTimeLine; i<=this.finTimeLine ; i+=this.type )
	{	
		
			
		if ( i < this.val.length )
		{	
			/* HEURE-MINUTE */
			 temp = this.val[i].split('-');
			
			switch ( this.scale )
			{
				case "Hour" :
				
					text = temp[0]+"H";
					id=temp[0];
					
					i+=59;

				break;
			
				case "Quarter" :
				
						text = temp[0]+":"+temp[1];
					    id=this.val[i];
						
						i+=14;
						
				break;
				
				case "Minute" :
				
					text = temp[0]+":"+temp[1];
					id=this.val[i];
				break;
				
	
			}
		
			
			
			
			temp = "<div id ="+id+" style=\" width:"+w+"px; float:left; height:"+this.height+"px; border-left:1px solid; \" class='"+classType+"'>"+text+"</div>";
			
			this.timeLine+=temp;
			
			if ( i > this.finTimeLine )
			{
				try
				{
					temp = this.val[i].split('-');
					
					switch ( this.scale )
					{
						case "Hour" :
					
					
						text = temp[0]+"H";
						id=temp[0];
						
						i+=59;

						break;
					
						case "Quarter" :
						
								text = temp[0]+":"+temp[1];
								id=this.val[i];
								
								i+=14;
								
						break;
						
						case "Minute" :
						
							text = temp[0]+":"+temp[1];
							id=this.val[i];
						break;
						
					}
						
						
						
				
					temp = "<div id ="+id+" style=\" width:"+w+"px; float:left; height:"+this.height+"px; border-left:1px solid; \" class='"+classType+"'>"+text+"</div>";
					this.timeLine+=temp;
					
				}catch (err){}	
			} 
		}	

	}

	
	this.timeLine+="<div id=\"slideEnd\">";
	document.getElementById("theDates").innerHTML  = this.timeLine;
	
/* 	On charge les données correspondant à la nouvelle Timeline */
	
	if (  isLoadedHoraires  )
	{	
		
		var url ='./include/ajax/ajax_chargerDonnees.php';

		var hour1 = this.dateDebutTemp.getHours();
		var minute1 = this.dateDebutTemp.getMinutes();
	
		var hour2 = this.dateFinTemp.getHours();
		var minute2 = this.dateFinTemp.getMinutes();
		
		var date1 = hour1+":"+minute1;
		var date2 = hour2+":"+minute2;
		

				var ajax = new Ajax.Request(
					url,
					{
						method:'post',
						evalScripts: true, 
						parameters: { first:date1, last:date2 },
						onComplete:ajaxChargerDonneesCallback
					});
					
					
			
			
	}		


 }
 
function ajaxChargerDonneesCallback (request)
{
	eval(request.responseText);
	
	updateVisibilityOut ( "HORAIRES", this.markersHoraires, this.getIntervalleDate() );
	updateVisibilityIn ( "HORAIRES", this.markersHoraires, this.getIntervalleDate() );

}

	


function enableSlider ()
{

	var myDate = DATE_DEBUT_TIMELINE;
	var myYear = myDate.getFullYear();
	var myMonth = myDate.getMonth();

	myMonth += 1	
		
	var myDay = myDate.getDate()-1;

	/* //Pour les ecarts de la time line */
	var heure=0;
	var minute=0;
	
	var heureTemp=0;
	var minuteTemp=0;

	for ( var i=0; i<this.dif; i++ )
	{
	
		/* Changement d'heure */
		if ( minute == 60 )
		{
			heure+=1;
			minute=0;
		
		}
		
		
		
		if ( heure < 10 )
			heureTemp="0"+heure;
		else
			heureTemp=heure;
			
		if ( minute < 10 )
			minuteTemp="0"+minute;	
		else
			minuteTemp=minute;	

		this.val[i] =heureTemp+"-"+minuteTemp;
		
		minute++;
			

	}



	 this.controlSlider = new Control.Slider(['zoom-handle-1','zoom-handle-2'], 'galleryContainer',
		{ spans:['zoom-track-selected'], 

		   range:$R(1,this.nbJours) ,
		   sliderValue:[this.sliderValue1, this.sliderValue2],
		   restricted:true,
		   onSlide:function(v)
			{
				ajaxRecuperDonnees ( v );
			},
			
			onChange:function(v)
			{
			ajaxRecuperDonnees ( v );
			}
		  
		  });		  
			  
}


function ajaxRecuperDonnees ( v )
{


	var interval = v.inspect();
	
	var temp = interval.split(',');
	var temp2 = temp[0].split('[');
	var temp3 = temp[1].split(']');
	var temp4 = temp3[0].split(' ');
	
	var debut = this.val[temp2[1]];
	var fin = this.val[temp4[1]];
	

	visibilityMarkers ();

		

					

}

/* //Recupere la liste des dates de l'intervalle */
function get2date()
{
	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[myListe.length] = id;
			}	
			else if ( posDivRight >= posSliderLeft &&  posDivRight <= posSliderRight )
			{
					myListe[myListe.length] = id;
			}		
		}
		catch (err){}	
	}

	
		
	return myListe;
}  


 
 function startSlide(e)
{
	/* // visibilityMarkers (); */

	if(document.all)
		e = event;
	
	var id = this.id;
	
	/* //this.getElementsByTagName('DIV')[0].src = './images/' + this.id + '.gif';	
 */	
	if(this.id=='arrow_right')
	{
		slideSpeedMultiply = Math.floor((e.clientX - this.offsetLeft) / 5);
		slideSpeed = -1*slideSpeedMultiply;
		slideSpeed = Math.max(-10,slideSpeed);
	}else
	{			
		slideSpeedMultiply = 10 - Math.floor((e.clientX - this.offsetLeft) / 5);
		slideSpeed = 1*slideSpeedMultiply;
		slideSpeed = Math.min(10,slideSpeed);
		if(slideSpeed<0)slideSpeed=10;
	}
	
	
}

function releaseSlide()
{
/* 	// visibilityMarkers (); */
	var id = this.id;
/* 	//this.getElementsByTagName('DIV')[0].src = './images/' + this.id + '.gif'; */
	slideSpeed=0;
}
	
function gallerySlide()
{
	var temp = false;
	
	
	if(slideSpeed!=0)
	{
		var leftPos = imageGalleryObj.offsetLeft;
		leftPos = leftPos/1 + slideSpeed;
		
		if(leftPos>=maxGalleryXPos)
		{
		
			temp = "left";
			
			if ( this.limiteLeft || this.scale == "Decade" )
			{
			
				leftPos = maxGalleryXPos;
				slideSpeed = 0;
			}	
			
		}
		
		if(leftPos<=minGalleryXPos)
		{
			temp = "right";
			
			if ( this.limiteRight || this.scale == "Decade")
			{	
				leftPos = minGalleryXPos;
				slideSpeed=0;
			}	
		}
		
		if ( temp == false || this.scale == "Decade" )
			imageGalleryObj.style.left = leftPos + 'px';
		
		if ( this.scale!= "Hour" ) 
				moveTimeLine( temp );
				
			
	
		visibilityMarkers ();
			
			
	}
	
	setTimeout('gallerySlide()',20);
	

}	

/**********************************************************************************************************************


								BUG SUR LA TIMELINE QUAND ON MES A JOURS SI LA LIMITE EST ATTEINTE
									APPAREMENT QUE SUR LA LIMITE A DROITE
								

***********************************************************************************************************************/


function moveTimeLine ( leftPos )
{
	var hour ;
	var hour2 ;
	
	var quarter ;
	var quarter2 ;
	
	var minute ;
	var minute2 ;
	

	/* //On agrandit à droite */
	if ( leftPos == "right" )
	{
		switch ( this.scale )
		{
			case "Hour" :
				
				if ( !this.limiteRight )
				{
					day = this.dateDebutTemp.getDate() + this.NB_JOURS_RECHARGER;
					day2 = this.dateFinTemp.getDate() + this.NB_JOURS_RECHARGER ;
					
					this.dateDebutTemp.setDate(day);
					this.dateFinTemp.setDate( day2 );
					
					if ( this.dateFinTemp>=this.DATE_FIN_TIMELINE )
					{

						var monthTemp = this.DATE_FIN_TIMELINE.getMonth();
						var dayTemp = this.DATE_FIN_TIMELINE.getDate();
						var yearTemp = this.DATE_FIN_TIMELINE.getFullYear();
						
						this.dateFinTemp= new  Date(yearTemp, monthTemp, dayTemp);
						
						this.dateDebutTemp = new  Date(yearTemp, monthTemp, dayTemp);
					
						dayTemp = dayTemp - 20;
					
					
						this.dateDebutTemp.setDate( dayTemp );
						
						this.limiteRight=true;
							
					}
				}

				this.limiteLeft = false;				
			
			break;
			
			case "Quarter" :
			
				if ( !this.limiteRight )
				{
				
					
					minute = this.dateDebutTemp.getMinutes() + ((this.NB_JOURS_RECHARGER*15)+45);
					minute2 = this.dateFinTemp.getMinutes() + ((this.NB_JOURS_RECHARGER)*15+45);
					
					this.dateDebutTemp.setMinutes( minute );
					this.dateFinTemp.setMinutes( minute2 );
										
				
					if ( this.dateFinTemp>=this.DATE_FIN_TIMELINE )
					{

						var monthTemp = this.DATE_FIN_TIMELINE.getMonth();
						var dayTemp = this.DATE_FIN_TIMELINE.getDate();
						var yearTemp = this.DATE_FIN_TIMELINE.getFullYear();
						var hourTemp = this.DATE_FIN_TIMELINE.getHours();
						var minuteTemp = this.DATE_FIN_TIMELINE.getMinutes();
						
						
						this.dateFinTemp = new  Date(yearTemp, monthTemp, dayTemp, hourTemp, minuteTemp );


						this.dateDebutTemp = new  Date(yearTemp, monthTemp, dayTemp, hourTemp, minuteTemp);
						
						minuteTemp = minuteTemp - this.nbJoursTotal*15;
					
						this.dateDebutTemp.setMinutes( minuteTemp );
				

						this.limiteRight=true;	
					}
				}
				
				this.limiteLeft = false;	
					
			break;
			
			case "Minute" :
				

				if ( !this.limiteRight )
				{
					minute = this.dateDebutTemp.getMinutes() + (this.NB_JOURS_RECHARGER+2);
					minute2 = this.dateFinTemp.getMinutes() + (this.NB_JOURS_RECHARGER+2);
					
					this.dateDebutTemp.setMinutes( minute );
					this.dateFinTemp.setMinutes( minute2 );
										
					if ( this.dateFinTemp>=this.DATE_FIN_TIMELINE )
					{

						var monthTemp = this.DATE_FIN_TIMELINE.getMonth();
						var dayTemp = this.DATE_FIN_TIMELINE.getDate();
						var yearTemp = this.DATE_FIN_TIMELINE.getFullYear();
						var hourTemp = this.DATE_FIN_TIMELINE.getHours();
						var minuteTemp = this.DATE_FIN_TIMELINE.getMinutes();
						
						
						this.dateFinTemp= new  Date(yearTemp, monthTemp, dayTemp, hourTemp, minuteTemp );


						this.dateDebutTemp = new  Date(yearTemp, monthTemp, dayTemp, hourTemp, minuteTemp);

						minuteTemp = minuteTemp - this.NB_JOURS_RECHARGER*2;

						this.dateDebutTemp.setMinutes( minuteTemp );

						this.limiteRight=true;	
					}
				}
				
				this.limiteLeft = false;	
				
			break;
	
		}
		
		
	}	
		 
	/* //On agrandit à gauche */
	if ( leftPos == "left" )
	{
	
		switch ( this.scale )
		{
			case "Hour" :
					
				if ( !this.limiteLeft )
				{
						
					day = this.dateDebutTemp.getDate() - this.NB_JOURS_RECHARGER;
					day2 = this.dateFinTemp.getDate() - this.NB_JOURS_RECHARGER;
					
					this.dateDebutTemp.setDate(day);
					this.dateFinTemp.setDate( day2 );
					
					
					if ( this.dateDebutTemp<=this.DATE_DEBUT_TIMELINE )
					{ 
						
						var monthTemp = this.DATE_DEBUT_TIMELINE.getMonth();
						var dayTemp = this.DATE_DEBUT_TIMELINE.getDate();
						var yearTemp = this.DATE_DEBUT_TIMELINE.getFullYear();
							
							
						this.dateDebutTemp= new  Date(yearTemp, monthTemp, dayTemp);	
						this.dateFinTemp = new  Date(yearTemp, monthTemp, dayTemp);	
							
						dayTemp = dayTemp + 20;	
						
						this.dateFinTemp.setDate( dayTemp );
						
						
							
						this.limiteLeft=true;	
					
					}
						
				}
				
				this.limiteRight = false;
				
			
			break;
			
			case "Quarter" :
			
				
					
					minute = this.dateDebutTemp.getMinutes() - ((this.NB_JOURS_RECHARGER*15)+45);
					minute2 = this.dateFinTemp.getMinutes() - ((this.NB_JOURS_RECHARGER*15)+45);
					
					this.dateDebutTemp.setMinutes( minute );
					this.dateFinTemp.setMinutes( minute2 );
					
					if ( this.dateDebutTemp<=this.DATE_DEBUT_TIMELINE )
					{ 
						
						var monthTemp = this.DATE_DEBUT_TIMELINE.getMonth();
						var dayTemp = this.DATE_DEBUT_TIMELINE.getDate();
						var yearTemp = this.DATE_DEBUT_TIMELINE.getFullYear();
						var hourTemp = this.DATE_DEBUT_TIMELINE.getHours();
						var minuteTemp = this.DATE_DEBUT_TIMELINE.getMinutes();
						
						
							
						this.dateDebutTemp= new  Date(yearTemp, monthTemp, dayTemp, hourTemp, minuteTemp );


						this.dateFinTemp = new  Date(yearTemp, monthTemp, dayTemp, hourTemp, minuteTemp);
						
						
					

						minuteTemp = minuteTemp + this.nbJoursTotal*15;

						this.dateFinTemp.setMinutes( minuteTemp );

							this.limiteLeft=true;	
						
					}
						
				
				this.limiteRight = false;
						
			break;
			
			case "Minute" :
								
	
				if ( !this.limiteLeft )
				{
					
					minute = this.dateDebutTemp.getMinutes() - (this.NB_JOURS_RECHARGER+2);
					minute2 = this.dateFinTemp.getMinutes() - (this.NB_JOURS_RECHARGER+2);
					
					this.dateDebutTemp.setMinutes( minute );
					this.dateFinTemp.setMinutes( minute2 );
					
					if ( this.dateDebutTemp<=this.DATE_DEBUT_TIMELINE )
					{ 
						
						var monthTemp = this.DATE_DEBUT_TIMELINE.getMonth();
						var dayTemp = this.DATE_DEBUT_TIMELINE.getDate();
						var yearTemp = this.DATE_DEBUT_TIMELINE.getFullYear();
						var hourTemp = this.DATE_DEBUT_TIMELINE.getHours();
						var minuteTemp = this.DATE_DEBUT_TIMELINE.getMinutes();
						
						
							
						this.dateDebutTemp= new  Date(yearTemp, monthTemp, dayTemp, hourTemp, minuteTemp );


						this.dateFinTemp = new  Date(yearTemp, monthTemp, dayTemp, hourTemp, minuteTemp);

						minuteTemp = minuteTemp + this.NB_JOURS_RECHARGER*2;

						this.dateFinTemp.setMinutes( minuteTemp );

						this.limiteLeft=true;	
					
					}
						
				}
				
				this.limiteRight = false;
						
			break;
			
		
		
		}
		
	}	


	
	if (  leftPos )
	{
		this.createTimeLineValues();	
		
		if ( leftPos == "left" && !this.limiteLeft )
		{
			imageGalleryObj.style.left = minGalleryXPos+"px";
			
		}	
		else 
		if (leftPos == "right" && !this.limiteRight)
			imageGalleryObj.style.left = maxGalleryXPos+"px";
		
	}	

	
}

function initSlideShow()
{
	document.getElementById('arrow_left').onmousemove = startSlide;
	document.getElementById('arrow_left').onmouseout = releaseSlide;
	document.getElementById('arrow_right').onmousemove = startSlide;
	document.getElementById('arrow_right').onmouseout = releaseSlide;


	
	imageGalleryObj = document.getElementById('theDates');
	imageGalleryLeftPos = imageGalleryObj.offsetLeft;
	imageGalleryWidth = document.getElementById('galleryContainer').offsetWidth - 80;
	maxGalleryXPos = imageGalleryObj.offsetLeft; 
	minGalleryXPos = imageGalleryWidth - document.getElementById('slideEnd').offsetLeft;
	
	var slideshowImages = imageGalleryObj.getElementsByTagName('DIV');
	

	gallerySlide();
	imageGalleryObj.style.left = minGalleryXPos+"px";
}



 function deployerMenu ()
 {

	if ( isVisibleMenuShare )
	{
		 Effect.SlideUp('menuShare');
		 isVisibleMenuShare = false;

	}
	else
	{
		 Effect.SlideDown('menuShare');
		 isVisibleMenuShare = true;
		 
	}
}			
 
 

 