﻿function slider(container){
	this.container = container;
	this.speed = 40; 
	this.delai = 10; 
	this.globalTimer;
	this.slideTimer;
	this.slideOrentientation = 1;
	this.slideSens = 1;
	this.slideOrdre = 1; 
	this.slidePos = 0;
	this.slidePasCount = 0;
	this.slidePasX = 980;
	this.slidePasY = 275;		
	this.indexBack = 1;
	this.indexFront;
	this.nbSlides = 0;
	this.slideToMove;
	this.aleatoireMvt = true;
	this.H_mvt = true;
	this.V_mvt = true;
	this.autoLoop = true;
	var _self = this;
	this.init = function(){
		for(i = 0; i < document.getElementById(this.container).childNodes.length; i++){		
			if(document.getElementById(this.container).childNodes[i].className == 'slide' || document.getElementById(this.container).childNodes[i].className == 'slide_on')
				this.nbSlides ++;
		}		
		this.slideToMove = this.nbSlides;
		this.indexFront = this.nbSlides+1;
		
		if(this.H_mvt && this.V_mvt){
			this.slideOrentientation = Math.round(Math.random()*1)+1;
		}else
		if(!this.H_mvt){
			this.slideOrentientation = 1;
		}else
		if(!this.V_mvt){
			this.slideOrentientation = 2;
		}				
		this.sliding(0);
		if(this.autoLoop){
			this.globalTimer = setInterval(function(){_self.sliding(0);},4000);
		}
	}	
	this.sliding = function(ordre, sens){
		clearInterval(this.slideTimer);
		this.slideTimer = setInterval(function(){_self.move();},this.delai);
					
		if(0 != ordre){
			clearInterval(this.globalTimer);		
			this.slideOrdre = ordre;
			this.slideSens = sens;
		}else
		if(this.aleatoireMvt){
			this.slideSens = Math.round(Math.random()*1)+1;
			if(this.H_mvt && this.V_mvt){
				this.slideOrentientation = Math.round(Math.random()*1)+1;
			}			
		}
	}	
	this.getNextSlide = function(eltMpos){	
		if(1 == this.slideOrdre){
			if(eltMpos < this.nbSlides){
				return eltMpos+1;
			}else{
				return 1;
			}
		}else{
			if(1 < eltMpos){
				return eltMpos-1;
			}else{
				return this.nbSlides;
			}			
		}	
	}
	this.move = function(){
		document.getElementById(this.container+"_slide"+this.slideToMove).style.zIndex = this.indexFront;
		var next_slideToMove = this.getNextSlide(this.slideToMove);
		document.getElementById(this.container+"_slide"+next_slideToMove).style.zIndex = this.indexFront-1;
		document.getElementById(this.container+"_slide"+next_slideToMove).className = 'slide_on';		
		if(1 == this.slideSens){		
			this.slidePos+= this.speed;
			this.slidePasCount += this.speed;			
			switch(this.slideOrentientation){
				case 2:
					document.getElementById(this.container+"_slide"+this.slideToMove).style.left = this.slidePos+'px';					
					if(this.slidePasCount >= this.slidePasX){
						this.moveEnd();			
					}			
				break;
				case 1:
					document.getElementById(this.container+"_slide"+this.slideToMove).style.top = this.slidePos+'px';					
					if(this.slidePasCount >= this.slidePasY){
						this.moveEnd();			
					}			
				break;
			}				
		}else
		if(2 == this.slideSens){
			this.slidePos-= this.speed;
			this.slidePasCount += this.speed;
			switch(this.slideOrentientation){
				case 2:		
					document.getElementById(this.container+"_slide"+this.slideToMove).style.left = this.slidePos+'px';					
					if(this.slidePasCount >= this.slidePasX){
						this.moveEnd();
					}
				break;
				case 1:
					document.getElementById(this.container+"_slide"+this.slideToMove).style.top = this.slidePos+'px';					
					if(this.slidePasCount >= this.slidePasY){
						this.moveEnd();
					}				
				break;
			}
			
		}	
		return;	
	}
	this.moveEnd = function(){	
		clearInterval(this.slideTimer);
		this.slidePos = 0;
		this.slidePasCount = 0;		
		document.getElementById(this.container+"_slide"+this.slideToMove).style.zIndex = this.indexFront-2;
		switch(this.slideOrentientation){
			case 2:	
				document.getElementById(this.container+"_slide"+this.slideToMove).style.left = '0px';
			break;
			case 1:
				document.getElementById(this.container+"_slide"+this.slideToMove).style.top = '0px';
			break;
		}		
		this.slideToMove = this.getNextSlide(this.slideToMove);
		
	}
}
