/* from SlideDown */
Effect.SlideRight = function(element) {
/*
	SlideRightIn needs to have the content of the element wrapped in a container element with fixed width!
*/
	element = $(element).cleanWhitespace();
	var elementDimensions = element.getDimensions();
	return new Effect.Scale(element, 100, 
		Object.extend({ 
			scaleContent: false, 
			scaleY: false, 
			scaleFrom: window.opera ? 0 : 1,
			scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
			restoreAfterFinish: true,
			afterSetup: function(effect) {
				effect.element.makePositioned();
				effect.element.down().makePositioned();
				if(window.opera) effect.element.setStyle({left: ''});
				effect.element.makeClipping().setStyle({width: '0px'}).show(); 
			},
			afterUpdateInternal: function(effect) {
				effect.element.down().setStyle({right: (effect.dims[1] - effect.element.clientWidth) + 'px' }); 
			},
			afterFinishInternal: function(effect) {
				effect.element.undoClipping().undoPositioned();
				effect.element.down().undoPositioned();
			}
		}, arguments[1] || {})
	);
}

/*
//slide right pke ça existe pas chez scriptaculoous
Effect.SlideRight = function(element) {
  element = $(element);
  Element.cleanWhitespace(element);
  // SlideDown need to have the content of the element wrapped in a container element with fixed height!

  var oldInnerRight = 510;
  var elementDimensions = Element.getDimensions(element);
  return new Effect.Scale(element, 100, Object.extend({ 
    scaleContent: false, 
    scaleY: false, 
    scaleFrom: window.opera ? 0 : 1,
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
    restoreAfterFinish: true,
    afterSetup: function(effect) {
      effect.element.makePositioned();
      effect.element.down().makePositioned();
      if (window.opera) effect.element.setStyle({top: ''});
      effect.element.makeClipping().setStyle({width: '0px'}).show(); 
    },
    
    afterUpdateInternal: function(effect) {
      effect.element.down().setStyle({right:
        (effect.dims[1] - effect.element.clientWidth) + 'px' }); 
    },
  	afterFinishInternal: function(effect) {
      effect.element.undoClipping().undoPositioned();
      effect.element.down().undoPositioned().setStyle({right: oldInnerRight}); }
    }, arguments[1] || { })
  );
}*/




var Player = new Class.create();

Player.prototype = {
	initialize: function() {
		/* @author : Demyio
			em@il : alexandre.leblanc@demyio.com
		*/
		//tous les documents array enumerables
		this.documents=Array();
		this.current_id=null;
		this.current_obj=null;
		this.effect=null;
		this.timeout=null;
		this.width=510;
		this.height=305;
		this.play=true;
		this.diapo_images=Array();
		this.timer_diaporama=null;
		this.diapo_id=0;
		this.nb_diapo=0;
		this.diapo_id_after=null;
		this.enable_effects=true;
	},
	init_docs: function(docs) {
		var this_object=this;
		this_object.documents=docs;

		this_object.play=true;
		this_object.current_id=0;
		this_object.current_obj=this_object.documents[0];
		$('anime_select').selectedIndex=this_object.current_id;
		this_object.dispatcher();
	},
	dispatcher: function() {
		var this_object=this;	
		this_object.lance_diaporama();
	},
	
	lance_diaporama: function() {
		var this_object=this;
		//pour respecter l'ordre
		$('prevlabel').show();
		$('nextlabel').show();
	  	if(this_object.play){
	  		this_object.relance_diaporama();
	  	}else{
	  		this_object.relance_diaporama();
	  		this_object.pause_diapo();
	  	}

	},
	prev_diapo: function(){
		var this_object=this;
		window.clearTimeout(this_object.timer_diaporama);
		this_object.defil_diaporama_precedent();
		//this_object.timer_diaporama=window.setInterval("player.relance_diaporama()",20000);
		//on met en pause plutot
		this_object.pause_diapo();
		
	},
	next_diapo: function(){
		var this_object=this;
		window.clearTimeout(this_object.timer_diaporama);
		this_object.defil_diaporama();
		//this_object.timer_diaporama=window.setInterval("player.relance_diaporama()",20000);
		//on met en pause plutot
		this_object.pause_diapo();
		
	},
	relance_diaporama: function(){
		var this_object=this;
		window.clearTimeout(this_object.timer_diaporama);
		this_object.timer_diaporama=window.setInterval("player.defil_diaporama()",5000);
	},
	pause_diapo: function(){
		var this_object=this;
		window.clearTimeout(this_object.timer_diaporama);
	},
	play_diapo: function(){
		var this_object=this;
		$('playlabel').hide();
		$('pauselabel').show();
	  	this_object.relance_diaporama();
	},
	set_zindex: function(id,zindex){
		if($(id)){
			$(id).style.zIndex=zindex;
			$(id).down().style.zIndex=zindex;
		}
		/*$(id).down().down().style.zIndex=zindex;
		$(id).down().down().down().style.zIndex=zindex;
		$(id).down().down().down().down().style.zIndex=zindex;*/
	},
	defil_diaporama_precedent: function() {
		var this_object=this;
		if($('diapo_player_'+this_object.diapo_id)!=undefined){
			var id_after=this_object.diapo_id_after;
			var id_avant_assigner=this_object.diapo_id;
			//reorganisation de l'ordre
			this_object.set_zindex('diapo_player_'+this_object.diapo_id,33);
			this_object.diapo_id--;
			if($('diapo_player_'+this_object.diapo_id)==undefined){
				this_object.diapo_id=this_object.nb_diapo-1;
			}
			if(id_after){
				//reorganisation de l'ordre
				this_object.set_zindex('diapo_player_'+id_after,31);
			}
			$('diapo_player_'+this_object.diapo_id).hide();
			//reorganisation de l'ordre
			this_object.set_zindex('diapo_player_'+this_object.diapo_id,40);
			new Effect.SlideRight('diapo_player_'+this_object.diapo_id, {duration:0.5});
			if(this_object.e2){
				this_object.e1.cancel();
				this_object.e2.cancel();
			}
			if($('fond_bande_boutons'))	$('fond_bande_boutons').hide();
			$('bande_boutons').hide();
			if(this_object.enable_effects){
				this_object.e1=new Effect.Appear('fond_bande_boutons', {duration:1, from:0.0, to:0.8});
				this_object.e2=new Effect.Appear('bande_boutons', {duration:1, from:0.0, to:1});
			}else{
				$('fond_bande_boutons').show();
				$('bande_boutons').show();
			}
			$('diapo_texte_'+id_avant_assigner).hide();
			$('diapo_texte_'+this_object.diapo_id).show();
			if($('lightbox_'+id_avant_assigner)){
				$('lightbox_'+id_avant_assigner).hide();
				$('lightbox_'+this_object.diapo_id).show();
			}
			this_object.diapo_id_after=id_avant_assigner;
		}
	},				
	defil_diaporama: function() {
		var this_object=this;
		//console.log(this_object.diapo_id_after+'rrr'+this_object.diapo_id);
		if($('diapo_player_'+this_object.diapo_id)!=undefined && $$('#anime_player .surpelicule').length>1){
			var id_after=this_object.diapo_id_after;
			var id_avant_assigner=this_object.diapo_id;
			//reorganisation de l'ordre
			this_object.set_zindex('diapo_player_'+this_object.diapo_id,33);
			this_object.diapo_id++;
			if($('diapo_player_'+this_object.diapo_id)==undefined){
				this_object.diapo_id=0;
			}
			if(id_after){
				//reorganisation de l'ordre
				this_object.set_zindex('diapo_player_'+id_after,31);
			}
			$('diapo_player_'+this_object.diapo_id).hide();
			//reorganisation de l'ordre
			this_object.set_zindex('diapo_player_'+this_object.diapo_id,40);
			new Effect.SlideRight('diapo_player_'+this_object.diapo_id, {duration:0.5});
			if(this_object.e2){
				this_object.e1.cancel();
				this_object.e2.cancel();
			}
			$('bande_boutons').hide();
			
			if(this_object.enable_effects){
				this_object.e1=new Effect.Appear('fond_bande_boutons', {duration:1, from:0.0, to:0.8});
				this_object.e2=new Effect.Appear('bande_boutons', {duration:1, from:0.0, to:1});
			}else{
				$('fond_bande_boutons').show();
				$('bande_boutons').show();
			}
			if(!!$('diapo_texte_'+id_avant_assigner))
				$('diapo_texte_'+id_avant_assigner).hide();
			if(!!$('diapo_texte_'+this_object.diapo_id))
				$('diapo_texte_'+this_object.diapo_id).show();
			if($('lightbox_'+id_avant_assigner)){
				$('lightbox_'+id_avant_assigner).hide();
				$('lightbox_'+this_object.diapo_id).show();
			}
			this_object.diapo_id_after=id_avant_assigner;
		}
	},
	//nettoie les variable d'un player a un autre
	clear: function()
	{
		var this_object=this;
		if(this_object.effect){
			this_object.effect.cancel();
		}
		$("loading_player").hide();
		$("prevlabel").hide();
		$("nextlabel").hide();
		$("pauselabel").hide();
		$("playlabel").hide();
		$("image_presentation").innerHTML="";
		$("texte_presentation").innerHTML="";
		
		this_object.diapo_id=0;
		this_object.diapo_id_after=null;
		
		window.clearTimeout(this_object.timeout);
		window.clearTimeout(this_object.timer_diaporama);
	},				
	//destructeur
	destruct: function()
	{
		var this_object=this;
		window.clearTimeout(this_object.timeout);
		window.clearTimeout(this_object.timer_diaporama);
		this_object.documents=Array();
		this_object.current_id=null;
		this_object.current_obj=null;
		this_object.effect=null;
		this_object.timeout=null;
		this_object.play=true;
		this_object.diapo_images=Array();
	}
};


