var sliderSideMaxLenght = 0;
var sliderSideMinLenght = 0;
var sliderSideWidth = -1;
var slidingSide = false;
var slideSideSpeed = 10;
var slider;

var idSlideDown = -1;
var idSlideUp = -1;
var idFermetureMenu = -1;
var idFermerMenuForcer = -1;

var ouvrirId = -1;
var fermerId = -1;


function DemanderOuverture() {
	// Je ne suis pas entrain de bouger
	if (!sliding) {
		if (ouvrirId == -1) 
		{
			// Je suis entrain de dessendre
			slidingSide = true;
			ouvrirId = setInterval('Ouvrir()', 30);
		}
	}
}

function ArreterOuverture() 
{
	
	if (ouvrirId != -1) 
	{
		clearInterval(ouvrirId);
		ouvrirId = -1;
		slidingSide=false;
	}
}

function DemanderFermeture() 
{
	// Je ne suis pas entrain de bouger
	if (!sliding) 
	{
		if (fermerId == -1) 
		{
			slidingSide=true;
			fermerId = setInterval('Fermer()', 30);
		}
	}
}

function ArreterFermeture() 
{
	if (fermerId != -1) 
	{
		slidingSide = false;
		clearInterval(fermerId);
		fermerId = -1;
	}
}

// Fait dessendre le menu des divisions
function OuvrirFermerMenu(nombreDeDivision) {
	ArreterTimerFermetureMenu();

	// Si on est déjà en train de bougon, on doit ignorer cette demande.
	if (slidingSide) 
	{
		return;
	}

	// Calcul la hauteur maximal du menu en fonction du nombre de division
	sliderSideMaxLenght = 20 * nombreDeDivision;

	// Permet de régler un drole de bug avec IE
	if (sliderSideWidth == -1) {
		sliderSideWidth = parseInt(document.getElementById('menu_division').style.height
				.split("px")[0]);
	}

	// J'ai atteint ma longueur maximal, je vais fermer
	if (sliderSideWidth == sliderSideMaxLenght) {
		this.DemanderFermeture();
	} else {
		this.DemanderOuverture();
	}
}

// Ouvre le menu des divisions
function Ouvrir() 
{
	slider = document.getElementById('menu_division');

	if (sliderSideWidth >= sliderSideMaxLenght) 
	{
		this.ArreterOuverture();
		sliderSideWidth = sliderSideMaxLenght;
		slider.style.height = sliderSideMaxLenght + 'px';
	} 
	else 
	{
		// Je n'ai pas atteint ma longueur, je continu de grandir

		// Aggrandi de la vitesse ou met à la longueur maximal
		if ((sliderSideWidth + slideSideSpeed) > sliderSideMaxLenght) 
		{
			sliderSideWidth = sliderSideMaxLenght;
		} 
		else 
		{
			sliderSideWidth += slideSideSpeed;
		}

		slider.style.height = sliderSideWidth + 'px';
	}
}

// Ferme le menu
function Fermer() {

	slider = document.getElementById('menu_division');

	if (sliderSideWidth <= sliderSideMinLenght) 
	{
		// J'ai atteint ma longueur minimum ou plus petit
		this.ArreterFermeture();
		sliderSideWidth = sliderSideMinLenght;
		slider.style.height = '0px';
	} 
	else 
	{
		if ((sliderSideWidth - slideSideSpeed) < sliderSideMinLenght) 
		{
			sliderSideWidth = sliderSideMinLenght;
		} 
		else 
		{
			sliderSideWidth -= slideSideSpeed;
		}

		slider.style.height = sliderSideWidth + 'px';
	}
}

function ArreterTimerFermetureMenu() {

	// Arrete de regarder pour fermer le menu
	clearTimeout(idFermerMenuForcer);
}



function FermerMenu(seconde) {
	if (sliding) {
		// Deja entrain d'ouvrir ou fermer
		clearTimeout(idFermetureMenu);
		idFermetureMenu = setTimeout('FermerMenu()', 5); // On va vérifier à
															// toutes les 200 ms
															// pour fermer le
															// menu
		return;
	} else {
		clearTimeout(idFermetureMenu);
		this.DemanderFermerMenuForcer(seconde * 1000);
	}
}

function DemanderFermerMenuForcer(temps) {
	ArreterFermetureForcer();
	idFermerMenuForcer = setTimeout("FermerMenuForcer()", temps);
}

function ArreterFermetureForcer() {
	if (idFermerMenuForcer != -1) {
		clearTimeout(idFermerMenuForcer);
	}
}

function FermerMenuForcer() {
	

		this.ArreterFermeture();
		this.ArreterOuverture();
		this.DemanderFermeture();
}

function ArreterTimerFermetureMenuEvent(e) {

	if (!e)
		var e = window.event;
	var relTarg = e.relatedTarget || e.fromElement;

	if (relTarg.className == 'mcontentwrapper' || relTarg.className == 'groupe-header' || relTarg.className == 'contentwrapper') {
		clearTimeout(idFermerMenuForcer);
	}
	
	//console.log("in " + relTarg.className);
}

function submenuMouseoutHandler(e) {
	if (!e)
		var e = window.event;
	var relTarg = e.relatedTarget || e.toElement;

	if (relTarg.className.indexOf("noCloseMenuDivision") == -1 ) 
	{
		this.ArreterFermetureForcer();
		this.FermerMenuForcer();
	}
	
	//console.log("out " + relTarg.className);
}
