/*********************************************************************
	Navigation script www.x-prime.com	
	Copyright X' All rights reserved.
*********************************************************************/

//Variables GLOBALE:
var COMPTEUR = 0;
var semaf_menu = new Array(0, 0, 0, 0);

function menuobj(num,contid,divid,imgid,imgsrc,imgpath){
	//this.x = x; //position x du layer de menu
	//this.y = y; //position y du layer de menu
	//this.vis = vis; //visibilité du layer de menu
	this.num = num;
	this.divid = divid; //id du layer de menu
	this.contid = contid; //id du layer contenant (pour clipping)
	this.imgid = imgid; //id de l'image lien d'ouverture/fermeture du menu (null si pas d'image).
	this.imgsrc = imgsrc; //racine du nom de l'image (ex: 'image' pour image_on.gif ou image_off.gif
	this.imgpath = imgpath; //chemin du repertoire contenant les images;
	
	//creation des objet d'acces au DOM:
	this.odiv = (document.all)?document.all[divid].style:(document.layers)?eval("document."+contid+".document."+divid):document.getElementById(divid).style;
	if(document.images)
		this.oimg = eval("document."+imgid);
	else
		this.oimg = null;
		
	this.etat = false; //etat du menu (fermé = false ; ouvert = true);
	this.encours = false; //menu en cours d'ouverture/fermeture
	//calcul de la taille du layer:
	this.height = eval ("(document.layers) ? document."+contid+".document."+divid+".document.height: (document.all)?document.all."+divid+".offsetHeight:document.getElementById(\""+divid+"\").offsetHeight;");
	//on masque le layer de menu sous le layer de masque:
	this.odiv.visibility = "visible";
	this.pas = parseInt(this.height/10) + 1;
	this.odiv.top = - this.pas * 10;	

	//assignation des methodes de la classe
	this.open_menu = open_menu;
	this.close_menu = close_menu;
	this.toggle_menu = toggle_menu;
	this.WaitFor = WaitFor
	
	return this;
}


function open_menu(){
	if(this.encours || this.etat) return false;

	this.encours = true;
	move_menu(this.num,this.pas, 10);
	this.etat = true;
	return true;
}

function close_menu(){
	if(this.encours || !this.etat) return false;
	move_menu(this.num,-this.pas, 10);
	this.etat = false;
	return true;
}

//TODO : redesign utilisation objet global tmenu
function move_menu(num, inc, nb){
	if(nb == 0){
		tmenu[num].encours = false;
		return;
	}
	nb--;
	tmenu[num].odiv.top = parseInt(tmenu[num].odiv.top) + inc;
	setTimeout("move_menu("+num+","+inc+","+nb+")",1);
}
	
function toggle_menu(){
	if(!document.flag_loaded) return;
	if(this.etat) this.WaitFor(false);
	else{
		for(i=1;i<tmenu.length;i++){
			if(tmenu[i].etat) tmenu[i].WaitFor(false);
		}
		this.WaitFor(true);
	}
		
}

//TODO : modification fonction callback WaitFor pour passage de fonction en argument
function WaitFor(func){
	if(this.encours){
		setTimeout("WaitFor("+func+")", 100);
		return;
	}else{
		if(func) this.open_menu();
		else this.close_menu();
		return;
	}
}

//**FONCTION DE DEBOGUAGE
num=0;
function debug(str){
//	return;//RETURN!!!!!
	num++;
	if(!document.debugWin)
		document.debugWin = window.open();

	document.debugWin.document.writeln("#"+num+"- debug : "+str+"<br>");
}

function MM_findObj(n, d) { //v3.0
	// n => nom de l'objet
	// d => document
	var p,i,x;
	if(!(x=d[n])&&d.all)
		x=d.all[n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) 
		x=MM_findObj(n,d.layers[i].document); 
	return x;
}

//FONCTION DE ROLLOVER :
timg = new Array();
timg_on = new Array();
timg_off = new Array();
function preload(path,tid){
	var i;
//	document.tt1.src = "../img/vide.gif";
	for(i=0;i<tid.length;i++){
		timg[tid[i]] = (document.layers)?MM_findObj(tid[i], document):eval("document."+tid[i]);
		timg_on[tid[i]] = new Image();
		timg_off[tid[i]] = new Image();
		timg_on[tid[i]].src = path+tid[i]+"_on.gif";
		timg_off[tid[i]].src = path+tid[i]+"_off.gif";
	}
	return;
}

function imgswap(nimg,etat){
	if(!document.flag_loaded) return;
	if(etat == 'on') omover(nimg);
	else omout(nimg);
}

function omover(nimg){
	var index_menu = nimg.charAt(nimg.length - 1);
	if ((index_menu == "1") || (index_menu == "2") || (index_menu == "3"))
		semaf_menu[index_menu]++;
		
	if(!document.flag_loaded) return;
	timg[nimg].src = timg_on[nimg].src;
	return;
}

function autohide(index) {
//  alert("semaf_menu["+index+"]" + semaf_menu[index]); 
	if (!semaf_menu[index])
		tmenu[index].close_menu();
};

function omout(nimg){
	var index_menu = nimg.charAt(nimg.length - 1);
	if ((index_menu == "1") || (index_menu == "2") || (index_menu == "3")) { 
		semaf_menu[index_menu]--;
//    alert("index_menu = " + index_menu);
		setTimeout("autohide(" + index_menu + ")",3000);
	}; 
	if(!document.flag_loaded) return;
	timg[nimg].src = timg_off[nimg].src;
	return;
}