// actus defilantes au clic
function actu()
{
    if( $$('#bloc-actus ul').length)
    {
	var megaContainer = $('bloc-actus');
	var container = new Element('div',{
	    'id':'actus-window'
	}).injectBottom(megaContainer);
	var layer = new Element('div',{
	    'id':'actus-container'
	}).inject(container);
	megaContainer.getElement('ul').inject(layer);
	if(layer.getElement('li') != null)
	{
	    var L = layer.getElement('li').getCoordinates().width;
		
	    actuFx = new Fx.Morph
	    (
		layer,
		{
		    link: 'cancel',
		    duration: 600,
		    transition: 'expo:in:out'
		}
		);
	
	    // creation des liens gauche et droite
	    var linkPrev = new Element('div',{
		'id':'link-prev'
	    }).injectBefore(container);
	    var linkNext = new Element('div',{
		'id':'link-next'
	    }).injectAfter(container);
		
	    var actus = layer.getElements('li');
	    var marginContainer = container.getStyle('margin-left').toInt() + container.getStyle('margin-right').toInt();
	    var widthContainer = container.getStyle('width').toInt() + 1 + marginContainer; // ajout de 1 a cause de bidouillage derniere bordure
	    var largeurLayer = L * actus.length + marginContainer;
	    layer.setStyle('width', largeurLayer );
	
	    // marge initiale du layer, et pas de bouton precedent
	    var margeSlidingActu = 0;
	    linkPrev.setStyle('visibility','hidden');
	
	    // suivant !!
	    linkNext.addEvent('click', function()
	    {
		linkNext.addClass('currently-sliding-right');
			
		if(-margeSlidingActu < largeurLayer - widthContainer)
		{
		    margeSlidingActu -= L;
		    actuFx.start
		    ({
			'margin-left': margeSlidingActu
		    })
		    .chain
		    (
			function()
			{
			    linkNext.removeClass('currently-sliding-right');
	
			    // on remet le bouton du sens oppose
			    linkPrev.setStyle('visibility','visible');
	
			    // on cache le bouton si besoin
			    if(-margeSlidingActu >= largeurLayer - widthContainer)
			    {
				linkNext.setStyle('visibility','hidden');
			    }
			}
			);
		}
	    });
	
	    // precedent !!
	    linkPrev.addEvent('click', function()
	    {
		linkPrev.addClass('currently-sliding-left');
			
		if(-margeSlidingActu > 0)
		{
		    margeSlidingActu += L;
		    actuFx.start
		    ({
			'margin-left': margeSlidingActu
		    })
		    .chain
		    (
			function()
			{
			    linkPrev.removeClass('currently-sliding-left');
	
			    // on remet le bouton du sens oppose
			    linkNext.setStyle('visibility','visible');
	
			    // on cache le bouton si besoin
			    if(-margeSlidingActu <= 0)
			    {
				linkPrev.setStyle('visibility','hidden');
			    }
			}
			);
		}
	    });
		
	    // defilement auto des actus
	    var nb = (widthContainer / L).toInt();
	    var current = 1;
		
	    if(actus.length > nb)
	    {
		var routine = (
		    function()
		    {
			if(current == actus.length - nb + 1)
			{
			    margeSlidingActu = L;
			    current = 0;
			    linkNext.setStyle('visibility','visible');
			}
			linkNext.fireEvent('click', linkNext);
			current += 1;
		    }
		    ).periodical(3000);
			
		megaContainer.addEvents(
		{
		    'mouseenter' : function()
		    {
			$clear(routine);
		    },
		    'mouseleave' : function()
		    {
			routine = (
			    function()
			    {
				if(current == actus.length - nb + 1)
				{
				    margeSlidingActu = L;
				    current = 0;
				    linkNext.setStyle('visibility','visible');
				}
				linkNext.fireEvent('click', linkNext);
				current += 1;
			    }
			    ).periodical(3000);
		    }
		});
			
	    }
	} else {
	    $$('#bloc-actus').hide();
	}
    }
	
	
    // skin carousel
    if($('texte-corps'))
    {
	if($('texte-corps').getElement('ul.sousmenu'))
	{
	    var paves = $('competences-slides').getElements('ul.sousmenu');
			
	    var limit = 7;
			
	    var n = 0;
			
	    paves.each
	    (
		function(pave,i)
		{
		    if(pave.getParent().tagName == "LI")
		    {
			// attribution de couleurs aux fichettes
			pave.getParent().addClass('nomSecteur fichette couleur'+ n);
						
			n++;
						
			if ( n == limit )
			{
			    n = 0;
			}
		    }
		}
		);
	}
    }
	
    // launch carousel
    if(! $('competences-slides') ) return;
    var carousel = new Carousel('competences-slides');
}

function getInternetExplorerVersion()
{
    var rv = -1; // Return value assumes failure.
	
    if (navigator.appName == 'Microsoft Internet Explorer')
    {
	var ua = navigator.userAgent;
	
	var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
	
	if (re.exec(ua) != null)
	
	    rv = parseFloat(RegExp.$1);
	
    }
	
    return rv;
}


// carousel

var Carousel = new Class
({
    Implements: [ Options ],
	
    options:
    {
	max_width: 160
    },
	
    initialize: function(container, options)
    {
	this.container = $(container);
		
	this.layer = this.container.getElement('ul');
		
	this.previous = new Element('a',{
	    'class':'previous',
	    'href':'#'
	}).set('html','Préc.').inject(this.container);
		
	this.next = new Element('a',{
	    'class':'next',
	    'href':'#'
	}).set('html','Suivant').inject(this.container);
		
	this.elements = this.layer.getElements('li.fichette');
		
	this.container.setStyle('height',this.return_max_height());
		
	this.limit = this.elements.length;
		
	this.min_width = this.elements[0].getCoordinates().width + this.elements[0].getStyle('margin-right').toInt();
		
	this.element_gap = this.elements[0].getStyle('margin-right').toInt();
		
	this.max_width = this.options.max_width;
		
	this.center = this.container.getCoordinates().width / 2;
		
	this.layer.setStyle('width', this.min_width * this.limit);
		
	this.elements_fx = [];
		
	this.elements_h = [];
		
	this.elements.each
	(
	    function(element,index)
	    {
		var rows = element.getElements('li');
				
		var element_h = element.getElement('a').getCoordinates().height + element.getElement('ul').getStyle('padding-top').toInt() + element.getElement('ul').getStyle('padding-bottom').toInt();
						
		rows.each
		(
		    function(row)
		    {
			var row_h = row.getCoordinates().height;
			element_h += row_h;
		    }
		    );
				
		this.elements_h.push(element_h);
				
		var fx = new Fx.Morph
		(
		    element,
		    {
			link: 'cancel',
			duration: 500,
			transition: 'expo:in:out'
		    }
		    );
				
		this.elements_fx.push(fx);
	
		element.getElements('a.nomSecteur').addEvents
		({
		    'click': function(e)
		    {
			new Event(e).stop();
			this.index = index;

			if (Browser.Engine.trident)
			{
			    this.focus_lame();
			}
			else
			{
			    this.focus();
			}
		    }
		    .bind(this)
		});
		
		
		
	    }
	    .bind(this)
	    );
		
	//this.index = (this.limit/2).toInt();
	this.index = 0;
		
	if (Browser.Engine.trident)
	{
	    this.focus_lame();
	}
	else
	{
	    this.focus();
	}
		
	//this.focus();
		
	this.previous.addEvent
	(
	    'click', function(e)
	    {
		new Event(e).stop();
		this.index--;
		if(this.index <= 0) this.index = 0;
				
		if (Browser.Engine.trident)
		{
		    this.focus_lame();
		}
		else
		{
		    this.focus();
		}
	    }
	    .bind(this)
	    );
		
	this.next.addEvent
	(
	    'click', function(e)
	    {
		new Event(e).stop();
		this.index++;
		if(this.index >= this.limit) this.index = this.limit-1;
				
		if (Browser.Engine.trident)
		{
		    this.focus_lame();
		}
		else
		{
		    this.focus();
		}
	    }
	    .bind(this)
	    );
    },
	
    focus_lame: function()
    {
	// preceding elements
	for ( a = 0 ; a < this.index ; a++ )
	{
	    this.elements[a].removeClass('selected');
			
	    var w = this.min_width;

	    if ( a - this.index == 1 ){
		w = this.max_width;
	    }
						
	    this.elements_fx[a].set
	    ({
		'left': this.center - w * (this.index - a),
		'margin-left': - w - this.element_gap,
		'width': this.min_width - this.element_gap,
		'height': 90,
		'top': (this.max_height / 2) - (90 /2)
	    });
			
	    this.elements[a].getElements('li').setStyle('visibility', 'hidden');
			
	    this.elements[a].getElement('a').setStyle('font-size', '11');
	}
		
	// following elements
	for ( a = this.index+1 ; a < this.limit ; a++ )
	{
	    this.elements[a].removeClass('selected');
			
	    var w = this.min_width;
			
	    var m = 0 + this.element_gap;

	    if ( a - this.index == 1 ){
		w = this.max_width;
	    }
	    if ( a - this.index == 1 ){
		m = - w / 2;
	    }
			
	    this.elements_fx[a].set
	    ({
		'left': this.center + this.element_gap + w * (a - this.index),
		'margin-left': m,
		'width': this.min_width - this.element_gap,
		'height': 90,
		'top': (this.max_height / 2) - (90 /2)
	    });
			
	    this.elements[a].getElements('li').setStyle('visibility', 'hidden');
			
	    this.elements[a].getElement('a').setStyle('font-size', '11');
	}
		
	// current element
	this.elements_fx[this.index].set
	({
	    'left': this.center,
	    'margin-left': - this.max_width / 2,
	    'width': this.max_width,
	    'height': this.elements_h[this.index],
	    'top': (this.max_height / 2) - (this.elements_h[this.index] /2)
	});
		
	this.elements[this.index].getElements('li').setStyle('visibility', 'visible');
		
	this.elements[this.index].getElement('a').setStyle('font-size', '15');
    },
	
    focus: function()
    {
	// preceding elements
	for ( a = 0 ; a < this.index ; a++ )
	{
	    this.elements[a].removeClass('selected');
			
	    var w = this.min_width;

	    if ( a - this.index == 1 ){
		w = this.max_width;
	    }
						
	    this.elements_fx[a].start
	    ({
		'left': this.center - w * (this.index - a),
		'margin-left': - w - this.element_gap,
		'width': this.min_width - this.element_gap,
		'height': 90,
		'top': (this.max_height / 2) - (90 /2)
	    });
			
	    this.elements[a].getElements('li').fade('out');
			
	    this.elements[a].getElement('a').tween('font-size', '11');
	}
		
	// following elements
	for ( a = this.index+1 ; a < this.limit ; a++ )
	{
	    this.elements[a].removeClass('selected');
			
	    var w = this.min_width;
			
	    var m = 0 + this.element_gap;

	    if ( a - this.index == 1 ){
		w = this.max_width;
	    }
	    if ( a - this.index == 1 ){
		m = - w / 2;
	    }
			
	    this.elements_fx[a].start
	    ({
		'left': this.center + this.element_gap + w * (a - this.index),
		'margin-left': m,
		'width': this.min_width - this.element_gap,
		'height': 90,
		'top': (this.max_height / 2) - (90 /2)
	    });
			
	    this.elements[a].getElements('li').fade('out');
			
	    this.elements[a].getElement('a').tween('font-size', '11');
	}
		
	// current element
	this.elements_fx[this.index].start
	({
	    'left': this.center,
	    'margin-left': - this.max_width / 2,
	    'width': this.max_width,
	    'height': this.elements_h[this.index],
	    'top': (this.max_height / 2) - (this.elements_h[this.index] /2)
	})
	.chain
	(
	    function()
	    {
		this.elements[this.index].getElements('li').fade('in');
	    }
	    .bind(this)
	    );
		
	this.elements[this.index].getElement('a').tween('font-size', '15');
		
    //this.elements[this.index].addClass('selected');
    },
	
    return_max_height: function()
    {
	this.max_height = 0;
		
	this.elements.each
	(
	    function(element)
	    {
		var rows = element.getElements('li');
				
		var element_h = element.getElement('a').getCoordinates().height + element.getElement('ul').getStyle('padding-top').toInt() + element.getElement('ul').getStyle('padding-bottom').toInt();
				
		rows.each
		(
		    function(row)
		    {
			var row_h = row.getCoordinates().height;
			element_h += row_h;
		    }
		    );
				
		this.max_height = Math.max(this.max_height, element_h);
	    }
	    .bind(this)
	    );
		
	return this.max_height;
    }
}); 
