// -= Variables globales =-
//==========================
var Interval = 10;
var SumInt = 0;
var imgOButton = "../images/boutonFerme.jpg";						// Ouvrir le menu
var imgFButton = "../images/boutonOuvert.jpg";						// Fremer le menu
var arrListMenu = new Array();


// -= Fonctions =-
//=================

function getCookieVal(offset) {
	var endstr=document.cookie.indexOf (";", offset);
	if (endstr==-1) endstr=document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}

function LireCookie(nom) {
	var arg=nom+"=";
	var alen=arg.length;
	var clen=document.cookie.length;
	var i=0;
	while (i<clen) {
		var j=i+alen;
		if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
		i=document.cookie.indexOf(" ",i)+1;
		if (i==0) break;
	}
	return null;
}

function EcrireCookie(nom, valeur) {
	var argv=EcrireCookie.arguments;
	var argc=EcrireCookie.arguments.length;
	var expires=(argc > 2) ? argv[2] : null;
	var path=(argc > 3) ? argv[3] : null;
	var domain=(argc > 4) ? argv[4] : null;
	var secure=(argc > 5) ? argv[5] : false;
	document.cookie = nom+"="+escape(valeur)+
	((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
	((path==null) ? "" : ("; path="+path))+
	((domain==null) ? "" : ("; domain="+domain))+
	((secure==true) ? "; secure" : "");
}

function EffaceCookie(nom) {
	date=new Date;
	date.setFullYear(date.getFullYear()-1);
	EcrireCookie(nom,null,date);
}


function StartMenu() {
	for( var i = 0; i < arrListMenu.length; i++ ) fctWrite(i);
}

function getObject( id ) {
	for( var Cpt = 0; Cpt < arrListMenu.length; Cpt++ ){
	 	if( id == arrListMenu[Cpt].Name ) return arrListMenu[Cpt];
		for( var Cpt2 = 0; Cpt2 < arrListMenu[Cpt].Option.length; Cpt2++ ){
	 		if( id == arrListMenu[Cpt].Option[Cpt2].Name ) return arrListMenu[Cpt].Option[Cpt2];
		}
	}
}

function fctMove( strObj, intVitesse ) {
	// Param.:	- Index = Numéro du menu. 
	//			- intVitesse = Vitesse de mouvement.
	
	var Obj = getObject( strObj );
	setTimeout("fctMove('" + Obj.Name + "'," + intVitesse + ")", Interval);
}


function fctAnim( Index ) {
	// But:		Animation du menu
	// Param.:	- Index = Numéro du menu.
	var Menu = arrListMenu[Index];
		
	if( !Menu.isShowed ) {
		// ouverture du menu plié
		EffaceCookie( Menu.Name )
		document.getElementById( Menu.ImageName ).src = imgFButton;
		document.getElementById( Menu.OptionName ).style.display = "";
		for( var intCpt = 0; intCpt < Menu.Option.length; intCpt++) {
			fctMove(Menu.Option[intCpt].Name, intCpt);
		}
		for( var intCpt = Menu.Index + 1; intCpt < arrListMenu.length; intCpt++ ) {
			fctMove(arrListMenu[intCpt].Name, Menu.Option.length + 1 );
		}
		Menu.isShowed = true;
	} else {
		// fermeture du menu déplié
		duree = 10;  						// Durée de vie du cookie en jours
      	date_expire = new Date();
      	date_expire.setTime(date_expire.getTime() + (duree*24*60*60*1000));
      	EcrireCookie( Menu.Name, "plié", date_expire );
		document.getElementById( Menu.ImageName ).src = imgOButton;
		for( var intCpt = 0; intCpt < Menu.Option.length; intCpt++) {
			fctMove(Menu.Option[intCpt].Name, intCpt + 1);
			SumInt += Interval/2;
		}
		for( var intCpt = Index + 1; intCpt < arrListMenu.length; intCpt++ ) {
			fctMove(arrListMenu[intCpt].Name, Menu.Option.length + 1 );
			SumInt += Interval/2;
		}
		Menu.isShowed = false;
		setTimeout("document.getElementById('" + Menu.OptionName + "').style.display = 'none'", SumInt);
		SumInt = 0;
	}
}

function fctWrite( Index ) {
	// But:		Ecriture du menu dans le browser.
	var strReturn = "";
	var Menu = arrListMenu[Index];
	if( !Menu.isShowed ) var img = imgOButton; 
	else var img = imgFButton;
			
strReturn += "\n<table width='98%' align='center' class='colonne' border='0' cellpadding='0' cellspacing='0' id='" + Menu.Name + "'>"

strReturn += "<tr align='center'>";
strReturn += "<td style='font-weight:bold; font-size:15px;'><span style='cursor:n-resize;' onClick=\"fctAnim(" + Index + ")\">";
strReturn += Menu.Caption + "&nbsp;&nbsp;&nbsp;"
strReturn += "<img id='" + Menu.ImageName + "' src='" + img + "'></span></td>";
strReturn += "</tr>";
strReturn += "<tr><td height='2'></td></tr>";

strReturn += "\n<tr><td><table border='0' cellpadding='0' cellspacing='0' id='" + Menu.OptionName + "'>";
//if( Menu.isShowed ) {
	for( var intCpt = 0; intCpt < Menu.Option.length; intCpt++ ){
		strReturn += "<tr valign='top' id='" + Menu.Option[intCpt].Name + "'>";
		strReturn += "<td><img src='" + Menu.Option[intCpt].Image + "'></td>";
		strReturn += "<td>";
		strReturn += "<a href='" + Menu.Option[intCpt].Links + "' target='" + Menu.Option[intCpt].Target + "'>";
		strReturn += Menu.Option[intCpt].Caption + "</a></td></tr>";
	}
//}
strReturn += "</table></td></tr>\n";
strReturn += "</table>\n";
document.write( strReturn );
if( !Menu.isShowed ) setTimeout("document.getElementById('" + Menu.OptionName + "').style.display = 'none'", 0);
}

function fctCreateOption( strName, strTitre, strHref, strTarget, strImage){
	this.Option[this.Option.length] = new OptionObject(strName,strTitre,strHref,strTarget,strImage);
}


// -= Objet "Menu" =-
//====================
function MenuObject( strMenuName, strImageName, strTitre, strEtat) {
	this.bgColor= "#44AAFF";
	this.Name = strMenuName;
	this.ImageName = strImageName;
	this.Caption = strTitre;
	this.OptionName = strMenuName + "Option";
	if ( strEtat == "true") this.isShowed = true; 
	else this.isShowed = false;
	this.Opac = 0;
	this.Index = arrListMenu.length;
	arrListMenu[arrListMenu.length] = this;
	this.Option = new Array();
	
	this.CreateOption = fctCreateOption;
}


// -= Objet "Option " =-
//======================
function OptionObject( strName, strTitre, strHref, strTarget, strImage) {
	this.Name = strName;
	this.Image = strImage;
	this.Caption = strTitre;
	this.Target = strTarget;
	this.Links = strHref;
}