// JavaScript Document
$(document).ready(function(e){
	Logger.initLogger();
	Logger.show(true);
	
	//instanciation slide show
	var slideShowContainer = $('#slideHome');
	var mySlide = new MIRASlideShow(slideShowContainer);	
});

/* Constructeur */
/* @params container : elt html contenant le slide show */
/* @params delay : temps em millisecondes entre chaque animation */
function MIRASlideShow(container, delay){
	this.container = container;
	this.active = false;
	this.items = new Array();
	this.interval = false;
	this.delay = delay || 10000;
	this.initialize();
};

/* initialise les parametres du slide show */
MIRASlideShow.prototype.initialize = function(){
	var items = $('.left .container .title a', this.container);
	var that = this;
	for(var i = 0; i < items.length; i++){
		var myItem = items[i];
		if(!$(myItem).is('a')) continue;
		$(myItem).click(function(e){
			that.doSlideShow(this, true);
			return false;
		});
		this.items.push(myItem);
	}
	this.active = $(this.items[0]).attr('rel');
	this.setIntervalSlideShow();
};

/* set la classe active pour l'item du menu gauche */
/* correspondant a la photo affichee */
MIRASlideShow.prototype.setActive = function(elt){
	if(!$(elt).hasClass('active')){
		for(var i = 0; i < this.items.length; i++){
			var myItem = this.items[i];
			$(myItem).removeClass('active');		
		}
		$(elt).addClass('active');
	}	
	this.active = $(elt).attr('rel');
};

/* effectue l'animation entre chaque photo sur un click utilisateur */
MIRASlideShow.prototype.doSlideShow = function(elt, byClick){
	if(byClick) this.removeIntervalSlideShow();
	var containers = $('.slideWindow .slideIllustration');
	var activeContainer = $('#' + $(elt).attr('rel'))[0];
	if($(activeContainer).is('div') && $(activeContainer).attr('id') != this.active){
		for(var i = 0; i < containers.length; i++){
			var myContainer = containers[i];
			$(myContainer).css('display', 'none');
		}
		this.setActive(elt);	
		$(activeContainer).fadeIn('slow');		
	}		
};

/* effectue automatiquement a intervales fixes la transition entre photo */
MIRASlideShow.prototype.autoSlideShow = function(){
	for(var i = 0; i < this.items.length; i++){
		var myItem = this.items[i];
		if($(myItem).hasClass('active')){
			var nextElt = (i == (this.items.length - 1))? this.items[0] : this.items[i + 1];
			this.doSlideShow(nextElt);	
			break;
		}
	}
};

/* initialise le delay d'execution des animations automatiques */
MIRASlideShow.prototype.setIntervalSlideShow = function(){
	var that = this;
	this.interval = window.setInterval(function(){
		that.autoSlideShow();																
	}, that.delay);	
};

/* supprime le delay d'execution des animations automatiques */
MIRASlideShow.prototype.removeIntervalSlideShow = function(){
	if(this.interval) window.clearInterval(this.interval);
	this.setIntervalSlideShow();	
};

//Class - Logger
var Logger = Logger || {};
/* */
Logger.initLogger = function(){
	var container = $('#logError');
	if(!$(container).is('div')) return;
	$(container).css('display', 'block');
};

/* */
Logger.echo = function(txt){
	var message = '<p>' + txt + '</p>';
	$('#logError').prepend(message);
};

/* */
Logger.show = function(value){
	var container = $('#logError');
	(value)? $(container).css('display', 'block') : $(container).css('display', 'none');
};
