var test="";
function retournePosTailleElement(elt){

var iLargeur="0";
if(elt.offsetWidth){
	iLargeur=elt.offsetWidth;
}
else{
	if(elt.clip){
		iLargeur=elt.clip.width; 
	}

}


var iHauteur="0";
if(elt.offsetHeight){
	iHauteur=elt.offsetHeight;
}
else{
	if(elt.clip){
		iHauteur=elt.clip.height; 
	}

}

var iDessus="0";
if(elt.style.top){
	iDessus=elt.style.top;
}
else{
	if(elt.style.pixelTop){
		iDessus=elt.style.pixelTop; 
	}
	else{
		if(elt.offsetTop){
			iDessus=elt.offsetTop; 
		}
	}

}

var iGauche="0";
if(elt.style.left){
	iGauche=elt.style.left;
}
else{
	if(elt.style.pixelLeft){
		iGauche=elt.style.pixelLeft; 
	}
	else{
		if(elt.offsetLeft){
			iGauche=elt.offsetLeft; 
		}
	}

}
var obj={'Gauche':iGauche,'Dessus':iDessus,'Hauteur':iHauteur,'Largeur':iLargeur};
return(obj);

}


ClasseMenu = function(id,titre,classecss,classecssselectionne,menupere,url,affplpage) {
	this.init(id,titre,classecss,classecssselectionne,menupere,url,affplpage);
}

ClasseMenu.prototype.init = function(id,titre,classecss,classecssselectionne,menupere,url,affplpage) {
	this.setId(id);
	this.setTitre(titre);
	this.setClasse(classecss);
	this.setClasseSelectionne(classecssselectionne);
	this.setMenuPere(menupere);
	this.setFilsSurvole(false);
	this.setUrl(url);
	this.setSousAffichageAssocie(null);
	this.setAffichagePleinePage((affplpage=="1"));
	this.elementFils=new Array;
	
}

ClasseMenu.prototype.getId = function() {
	return this.id;
}
ClasseMenu.prototype.setId = function(val) {
	this.id = val;
}


ClasseMenu.prototype.getTitre = function() {
	return this.titre;
}
ClasseMenu.prototype.setTitre = function(val) {
	this.titre = val;
}

ClasseMenu.prototype.getUrl = function() {
	return this.url;
}
ClasseMenu.prototype.setUrl = function(val) {
	this.url = val;
}

ClasseMenu.prototype.getAffichagePleinePage = function() {
	return this.affplpg;
}
ClasseMenu.prototype.setAffichagePleinePage = function(val) {
	this.affplpg = val;
}


ClasseMenu.prototype.getClasse = function() {
	return this.classecss;
}
ClasseMenu.prototype.setClasse = function(val) {
	this.classecss = val;
}

ClasseMenu.prototype.getClasseSelectionne = function() {
	return this.classecsssel;
}
ClasseMenu.prototype.setClasseSelectionne = function(val) {
	this.classecsssel = val;
}

//Permet de savoir si le fils est actuellement survole, ce qui permet de ne pas rentrer le sous menu 
ClasseMenu.prototype.getFilsSurvole = function() {
	return this.filsurvole;
}
ClasseMenu.prototype.setFilsSurvole = function(val) {
	this.filsurvole = val;
}


ClasseMenu.prototype.getMenuPere = function() {
	return this.menupere;
}
ClasseMenu.prototype.setMenuPere = function(val) {
	this.menupere = val;
	if(this.menupere!=null){
		this.menupere.ajouteMenuFils(this);
	}
}

ClasseMenu.prototype.ajouteMenuFils = function(menuFils) {
	return this.elementFils[this.elementFils.length]=menuFils;
}

ClasseMenu.prototype.getMenuFils = function() {
	return this.elementFils;
}

ClasseMenu.prototype.getMenuFilsDid = function(id) {
	var elt=null;
	var bTrouve=false;
	var i=0;
	while((i<this.elementFils.length)&&(!bTrouve)){
		if(this.elementFils[i].getId()==id){
			elt=this.elementFils[i];
			bTrouve=true;
		}
		i++;
	}
	return elt;
}

ClasseMenu.prototype.getSousAffichageAssocie = function() {
	return this.sousaffasso;
}
ClasseMenu.prototype.setSousAffichageAssocie = function(val) {
	this.sousaffasso = val;
}

/*********************************************************************************************************************************************************************
 Classe sous menu affichage
**********************************************************************************************************************************************************************/

ClasseSousMenuAffichage= function(classemere,id,nmobjet,nmobjetmasque,sensmenuderoul) {
	this.init(classemere,id,nmobjet,nmobjetmasque,sensmenuderoul);
}
ClasseSousMenuAffichage.prototype.init = function(classemere,id,nmobjet,nmobjetmasque,sensmenuderoul) {
	this.setClasseMere(classemere);
	this.setId(id);
	this.setSensMenuDeroul(sensmenuderoul);
	this.setNomObjet(nmobjet);
	this.setNomObjetMasque(nmobjetmasque);
	this.setNbPixelsAffiche(0);
	this.increment=5;

}

ClasseSousMenuAffichage.prototype.getClasseMere = function() {
	return this.clssmere;
}
ClasseSousMenuAffichage.prototype.setClasseMere = function(val) {
	this.clssmere = val;
}

ClasseSousMenuAffichage.prototype.getId = function() {
	return this.id;
}
ClasseSousMenuAffichage.prototype.setId = function(val) {
	this.id = val;
}
ClasseSousMenuAffichage.prototype.getNomObjet = function() {
	return this.nmobj;
}
ClasseSousMenuAffichage.prototype.setNomObjet = function(val) {
	this.nmobj = val;
}

ClasseSousMenuAffichage.prototype.getObjet = function() {
	return this.obj;
}
ClasseSousMenuAffichage.prototype.setObjet = function(val) {
	this.obj = val;
}

ClasseSousMenuAffichage.prototype.getNomObjetMasque = function() {
	return this.nmobjmasque;
}
ClasseSousMenuAffichage.prototype.setNomObjetMasque = function(val) {
	this.nmobjmasque = val;
}

ClasseSousMenuAffichage.prototype.getObjetMasque = function() {
	return this.objmasque;
}
ClasseSousMenuAffichage.prototype.setObjetMasque = function(val) {
	this.objmasque = val;
}

ClasseSousMenuAffichage.prototype.initialiseObjet = function() {
var elt=document.getElementById(this.getNomObjet());
var eltMasque=document.getElementById(this.getNomObjetMasque());
if((elt)&&(eltMasque)){
	this.setObjet(elt);
	this.setObjetMasque(eltMasque);
	var PTelt=retournePosTailleElement(elt);
	if(this.getSensMenuDeroul()<2){
		this.setNbPixelsMenuOri(PTelt.Hauteur);
		eltMasque.style.width=PTelt.Largeur+"px";
		eltMasque.style.height="0px";
	}
	else{
		this.setNbPixelsMenuOri(PTelt.Largeur);
		eltMasque.style.height=PTelt.Hauteur+"px";
		eltMasque.style.width="0px";
	}
	
	

}
return(this.getNbPixelsMenuOri());
}

ClasseSousMenuAffichage.prototype.initialisePosition = function(eltPere) {
	var PTeltPere=retournePosTailleElement(eltPere);
	var valeur;
	
	switch(this.getSensMenuDeroul()){
		case 0:
			//Vers le bas
			this.x=PTeltPere.Gauche;
			valeur=PTeltPere.Dessus+PTeltPere.Hauteur;
			this.y=-this.getNbPixelsMenuOri();
			this.getObjetMasque().style.left=this.x+"px";
			this.getObjetMasque().style.top=valeur+"px";

			break;
		case 1:
			this.x=PTeltPere.Gauche;
			//Vers le haut
			this.y=0;
			this.getObjetMasque().style.left=this.x+"px";
			this.getObjetMasque().style.top=PTeltPere.Dessus+"px";
			break;
		case 2:
			//Vers la droite
			valeur=PTeltPere.Gauche+PTeltPere.Largeur;
			this.x=-this.getNbPixelsMenuOri();
			this.y=PTeltPere.Dessus;
			this.getObjetMasque().style.top=this.y+"px";
			this.getObjetMasque().style.left=valeur+"px";
			break;
		case 3:
			//Vers la gauche
			this.x=0;
			this.y=PTeltPere.Dessus;
			this.getObjetMasque().style.top=this.y+"px";
			this.getObjetMasque().style.left=PTeltPere.Gauche+"px";
			break;
			
	}
	this.setNbPixelsAffiche(0);
	

}

ClasseSousMenuAffichage.prototype.getAffiche = function() {
	return this.affiche;
}
ClasseSousMenuAffichage.prototype.setAffiche = function(val) {
	this.affiche = val;
}

ClasseSousMenuAffichage.prototype.getSensMenuDeroul = function() {
	return this.sensmenuderoul;
}
ClasseSousMenuAffichage.prototype.setSensMenuDeroul = function(val) {
	this.sensmenuderoul = val;
}

ClasseSousMenuAffichage.prototype.getX = function() {
	return this.x;
}
ClasseSousMenuAffichage.prototype.setX = function(x) {
	this.x = x;
}

ClasseSousMenuAffichage.prototype.getY = function() {
	return this.y;
}
ClasseSousMenuAffichage.prototype.setY = function(y) {
	this.y = y;
}



ClasseSousMenuAffichage.prototype.getNbPixelsMenuOri = function() {
	return this.nbpixmenuori;
}
ClasseSousMenuAffichage.prototype.setNbPixelsMenuOri = function(val) {
	this.nbpixmenuori = val;
}


ClasseSousMenuAffichage.prototype.getNbPixelsAffiche = function() {
	return this.nbpixaff;
}
ClasseSousMenuAffichage.prototype.setNbPixelsAffiche = function(val) {
	this.nbpixaff = val;
}

ClasseSousMenuAffichage.prototype.afficheCaheSousMenu = function() {
	var iNbPixelAffiche=this.getNbPixelsAffiche();
	var bContinuer=true;
	if(this.getAffiche()){
		iNbPixelAffiche=iNbPixelAffiche+this.increment;
		
		this.getObjet().style.zindex=1;
		if(iNbPixelAffiche<this.getNbPixelsMenuOri()){
			switch(this.getSensMenuDeroul()){
				case 0:
					//Vers le bas
					this.y=this.y+this.increment;
					break;
				case 1:
					//Vers le haut
					this.y=this.y-this.increment;
					break;
				case 2:
					//Vers la droite
					this.x=this.x+this.increment;
					break;
				case 3:
					//Vers la gauche
					this.x=this.x-this.increment;
					break;
					
			}
		
		}
		else{
			iNbPixelAffiche=this.getNbPixelsMenuOri();
			switch(this.getSensMenuDeroul()){
				case 0:
					//Vers le bas
					this.y=0;
					break;
				case 1:
					//Vers le haut
					this.y=0;
					break;
				case 2:
					//Vers la droite
					this.x=0;
					break;
				case 3:
					//Vers la gauche
					this.x=0;
					break;
					
			}
			
			bContinuer=false;
		}
	}
	else{
		//On cache le menu
		iNbPixelAffiche=iNbPixelAffiche-this.increment;
		if(iNbPixelAffiche>0){
			switch(this.getSensMenuDeroul()){
				case 0:
					//Vers le bas
					this.y=this.y-this.increment;
					break;
				case 1:
					//Vers le haut
					this.y=this.y+this.increment;
					break;
				case 2:
					//Vers la droite
					this.x=this.x-this.increment;
					break;
				case 3:
					//Vers la gauche
					this.x=this.x+this.increment;
					break;
			
			}
		}
		else{
			iNbPixelAffiche=0;
			switch(this.getSensMenuDeroul()){
				case 0:
					//Vers le bas
					this.y=-this.getNbPixelsMenuOri();
					break;
				case 1:
					//Vers le haut
					this.y=0;
					break;
				case 2:
					//Vers la droite
					this.x=-this.getNbPixelsMenuOri();
					break;
				case 3:
					//Vers la gauche
					this.x=0;
					break;
			
			}
			
			bContinuer=false;
		}
	}
	this.setNbPixelsAffiche(iNbPixelAffiche);
	
	this.positionneMenu();
	if(bContinuer){
		var commande=this.getClasseMere().getNomObjet()+".afficheCaheSousMenu("+this.getId()+")";
		setTimeout(commande,50);
	}
}
ClasseSousMenuAffichage.prototype.positionneMenu = function() {
	var dimmasque=this.getNbPixelsAffiche();
	//Deplacement de l objet
	switch(this.getSensMenuDeroul()){
		case 0:
			//Vers le bas
			this.getObjet().style.top=this.y+"px";
			this.getObjetMasque().style.height=dimmasque+"px";
			break;
		case 1:
			//Vers le haut
			this.getObjet().style.top="0px";
			this.getObjetMasque().style.top=this.y+"px";
			this.getObjetMasque().style.height=dimmasque+"px";
			break;
		case 2:
			//Vers la droite
			this.getObjet().style.left=this.x+"px";
			this.getObjetMasque().style.width=dimmasque+"px";
			break;
		case 3:
			//Vers la gauche
			this.getObjet().style.left="0px";
			this.getObjetMasque().style.left=this.x+"px";
			this.getObjetMasque().style.width=dimmasque+"px";
			break;
	
	}
	
	//window.status=dimmasque+" "+this.x+" "+this.y+" "+this.getNbPixelsMenuOri();
		
}

/*********************************************************************************************************************************************************************
 Classe  menu affichage
**********************************************************************************************************************************************************************/

ClasseMenuAffichage = function(nomObjet,sensmenuderoul,nomframe) {
	this.init(nomObjet,sensmenuderoul,nomframe);
}

ClasseMenuAffichage.prototype.init = function(nomObjet,sensmenuderoul,nomframe) {
	this.setSensMenuDeroul(sensmenuderoul);
	this.setNomObjet(nomObjet);
	this.setNomFrame(nomframe);
	this.elementRacine=new ClasseMenu(0,"","","",null,"");
	this.elementSousMenuAffichage=new Array;

}

ClasseMenuAffichage.prototype.getNomObjet = function() {
	return this.nomobj;
}
ClasseMenuAffichage.prototype.setNomObjet = function(val) {
	this.nomobj = val;
}

ClasseMenuAffichage.prototype.getNomFrame = function() {
	return this.nomframe;
}
ClasseMenuAffichage.prototype.setNomFrame = function(val) {
	this.nomframe = val;
}

ClasseMenuAffichage.prototype.getSensMenuDeroul = function() {
	return this.sensmenuderoul;
}
ClasseMenuAffichage.prototype.setSensMenuDeroul = function(val) {
	this.sensmenuderoul = val;
}




ClasseMenuAffichage.prototype.ajouteMenuPrincipal = function(menuPrinc) {
	menuPrinc.setMenuPere(this.elementRacine);
}


ClasseMenuAffichage.prototype.ajouteSousMenuAffichage = function(sousMenu) {
	return this.elementSousMenuAffichage[this.elementSousMenuAffichage.length]=sousMenu;
}

ClasseMenuAffichage.prototype.genereMenu = function(nomDivMenu) {
var elt=document.getElementById(nomDivMenu);

if(elt){
	
	elt.style.position="relative";
	
	var sTexte="";
	sTexte=sTexte+"<DIV style=\"z-index:100;position:absolute;top:0px;left:0px\">";
	sTexte=sTexte+"<TABLE  border=\"0\" cellspacing=\"0px\" cellpadding=\"0px\" >";
	sTexte=sTexte+"<TR>";
	//Generation du menu principale
	var lesMenusPrinc=this.elementRacine.getMenuFils();
	for(i=0;i<lesMenusPrinc.length;i++){
		var mencrt=lesMenusPrinc[i];

		sTexte=sTexte+"<TD id=\"menu"+mencrt.getId()+"\"  name=\"menu"+mencrt.getId()+"\" valign=\"center\" class=\""+mencrt.getClasse()+"\"  onmouseover=\""+this.getNomObjet()+".deploieMenuDid("+mencrt.getId()+")\" onmouseout=\""+this.getNomObjet()+".replieMenuDid("+mencrt.getId()+")\" onclick=\""+this.getNomObjet()+".affichePage('"+mencrt.getUrl()+"',"+mencrt.getAffichagePleinePage()+")\">";
		sTexte=sTexte+mencrt.getTitre();
		sTexte=sTexte+"</TD>";
		
		if(this.getSensMenuDeroul()>=2){
			//Affichage vertical
			if(i+1!=lesMenusPrinc.length){
				sTexte=sTexte+"</TR><TD class=\"separateurtableau\"></TD><TR>";
			}
		}
		else{
			sTexte=sTexte+"<TD class=\"separateurtableau\">";
			sTexte=sTexte+"</TD>";
		}
	}
	sTexte=sTexte+"</TR>";
	sTexte=sTexte+"</TABLE>";
	sTexte=sTexte+"</DIV>";
	
	//Sous menu
	//sTexte=sTexte+"<DIV  style=\"z-index:1;position:absolute;top:0px;left:0px;height:100%;width:100%;background:#FF0000\">";
	lesMenusPrinc=this.elementRacine.getMenuFils();
	for(i=0;i<lesMenusPrinc.length;i++){
		var mencrt=lesMenusPrinc[i];
		var lesFils=mencrt.getMenuFils();
		if(lesFils.length>0){
			sTexte=sTexte+"<DIV id=\"masquesousmenus"+mencrt.getId()+"\" name=\"masquesousmenus"+mencrt.getId()+"\" style=\"z-index:1;position:absolute;top:0px;left:0px;width:100%;overflow:hidden;\">";
			sTexte=sTexte+"<DIV id=\"sousmenu"+mencrt.getId()+"\"  name=\"sousmenu"+mencrt.getId()+"\" style=\"position:absolute;top:0px;left:0px;border:#000000 1px solid\" >";
			sTexte=sTexte+"<TABLE border=\"0\" cellspacing=\"0px\" cellpadding=\"0px\" >"
			for(j=0;j<lesFils.length;j++){
				sTexte=sTexte+"<TR><TD  onclick=\""+this.getNomObjet()+".affichePage('"+lesFils[j].getUrl()+"',"+lesFils[j].getAffichagePleinePage()+")\">";
				sTexte=sTexte+"<DIV id=\"menu"+lesFils[j].getId()+"\"  name=\"menu"+lesFils[j].getId()+"\" class=\""+lesFils[j].getClasse()+"\"  onmouseover=\""+this.getNomObjet()+".survolSousMenu("+mencrt.getId()+",true,"+lesFils[j].getId()+")\"  onmouseout=\""+this.getNomObjet()+".survolSousMenu("+mencrt.getId()+",false,"+lesFils[j].getId()+")\" >";
				sTexte=sTexte+lesFils[j].getTitre();
				sTexte=sTexte+"</DIV>";
				sTexte=sTexte+"</TD></TR>";
			}
			sTexte=sTexte+"</TABLE>";
			sTexte=sTexte+"</DIV>";
			sTexte=sTexte+"</DIV>";
			var sousMenu=new ClasseSousMenuAffichage(this,this.elementSousMenuAffichage.length,"sousmenu"+mencrt.getId(),"masquesousmenus"+mencrt.getId(),this.getSensMenuDeroul());
			this.ajouteSousMenuAffichage(sousMenu);
			mencrt.setSousAffichageAssocie(sousMenu);
			
			
		}
		
	}
	//sTexte=sTexte+"</DIV>";
	//Menu
	elt.innerHTML=sTexte;
	var dimMax=0;
	//Initialisation des objets
	for(i=0;i<this.elementSousMenuAffichage.length;i++){
		var ssmencrt=this.elementSousMenuAffichage[i];
		ssmencrt.initialiseObjet();
	
	}
	
	this.initialisePositionEnsembleMenu();

}

}



ClasseMenuAffichage.prototype.initialisePositionEnsembleMenu=function(){
	var lesMenusPrinc=this.elementRacine.getMenuFils();
	for(i=0;i<lesMenusPrinc.length;i++){
		var mencrt=lesMenusPrinc[i];
		var elt=document.getElementById("menu"+mencrt.getId());
		if(elt){
			var sousmenuaff=mencrt.getSousAffichageAssocie();
			if(sousmenuaff!=null){
				sousmenuaff.initialisePosition(elt);
				sousmenuaff.positionneMenu();
			}
		}
	}
}

ClasseMenuAffichage.prototype.sourisBouge= function(e){
	//onmousemove=\""+this.getNomObjet()+".sourisBouge(event)\"
	test=test+"-";
	window.status=test;
	if(test.length>30){
		test="";
	}
	window.status=test;
}

ClasseMenuAffichage.prototype.survolSousMenu= function(idMenu,survol,idSousMenu){
var mencrt=this.elementRacine.getMenuFilsDid(idMenu);
var ssmencrt=mencrt.getMenuFilsDid(idSousMenu);
var elt=document.getElementById("menu"+idSousMenu);


if(elt){
	mencrt.setFilsSurvole(survol);
	if(!survol){
		elt.className=ssmencrt.getClasse();
		this.replieMenuDid(idMenu);
	}
	else{
		elt.className=ssmencrt.getClasseSelectionne();
	}
}
}

ClasseMenuAffichage.prototype.replieMenuDidAttente = function(idMenu) {
var elt=document.getElementById("menu"+idMenu);
var bATraiter=true;

if(elt){
	
	var mencrt=this.elementRacine.getMenuFilsDid(idMenu);
	elt.className=mencrt.getClasse();
	
	if(!mencrt.getFilsSurvole()){
		
		var sousmenuaff=mencrt.getSousAffichageAssocie();
		if(sousmenuaff!=null){
			sousmenuaff.setAffiche(false);
			sousmenuaff.afficheCaheSousMenu();
		}
	}
	
}
}



ClasseMenuAffichage.prototype.replieMenuDid = function(idMenu) {
	//On attend avant de replie si l utilisateur ne va pas sur l autre menu
	var commande=this.getNomObjet()+".replieMenuDidAttente("+idMenu+")";
	setTimeout(commande,500);
}

ClasseMenuAffichage.prototype.deploieMenuDid = function(idMenu) {
var elt=document.getElementById("menu"+idMenu);
var bATraiter=true;

if(elt){

	var mencrt=this.elementRacine.getMenuFilsDid(idMenu);
	

	elt.className=mencrt.getClasseSelectionne();

	var sousmenuaff=mencrt.getSousAffichageAssocie();
	if(sousmenuaff!=null){

		sousmenuaff.initialisePosition(elt);
		sousmenuaff.setAffiche(true);
		sousmenuaff.afficheCaheSousMenu();
	}
	
	
}
}

ClasseMenuAffichage.prototype.afficheCaheSousMenu= function(iIndice){
	var sousmenuaff=this.elementSousMenuAffichage[iIndice];
	sousmenuaff.afficheCaheSousMenu();
}

ClasseMenuAffichage.prototype.affichePage = function(url,pleinecran) {
if(pleinecran){
	window.location=url;
}
else{
	if(this.getNomFrame()!=""){
		var elt=document.getElementById(this.getNomFrame());
		if(elt){
			elt.src=url;
		}
	}
	else{
		window.location=url;
	}
}
}
/*****************
Test compilation
*****************/
//alert("comp ok");