/*
document.write("<div id='log' style='background-color:#aaaaaa; display:block; visibility:visible; position:absolute; top:0px;'>-DEBUG MODE -<br></div>")
 
function sysdebug(data)
{
	document.getElementById('log').innerHTML+=data+'<br>'	
}
function debugclear()
{
	document.getElementById('log').innerHTML=''
} 
/**/
var C_vertical=true;
var C_horizontal=false;
var C_portal = true
var C_simple = true 
var C_static = false
var C_dynamic = true 
var timeoutmenu = 750 		// 500ms avant supression des menus dynamiques
var AgntUsr=navigator.userAgent.toLowerCase();
var NN=AgntUsr.indexOf('mozilla')!=-1&&AgntUsr.indexOf('compatible')==-1?1:0;
var IE=AgntUsr.indexOf('msie')!=-1?true:false;			// dÃ©termine si on est avec IE ou Mozilla
var opera=window.opera
var Dom=document.getElementById?1:0;
var NN4=NN&&!Dom&&document.layers?1:0;
var IE=AgntUsr.indexOf('msie')!=-1?1:0;
var IE4=IE&&!Dom&&document.all?1:0;
NOV = IE4==1|NN4==1|!Dom?1:0							// Ancienne version du navigateur, ou ne supportant pas DOM
var Contextmenu = true								// Affichage du menu contextuel	
// Détection du navigateur
var OS_win = AgntUsr.indexOf("win")
		
var container = new Array()								// Liste des objets du menu 
var containerImg = new Array()							// Liste des image du menu	Nav
var timerID 										// ID du timer pour le menu
var selectedlevels=new Array(null,null,null,null)				// éléments sélectionnées
var mask=0000

 var imageList = new Array() 
 var leveltype = new Array() 
 var levelimg = new Array() 
 var datamenu = new Array() 

 var mode = true 
 var UrlWebRoot = '/web/assura' 
 var imgsrc = '/web/assura/WebElementsAss.nsf/objects/internet_menu_imgs/$file/' 
 var imgcontextsrc = '/web/assura/WebElementsAss.nsf/objects/internet_context_imgs/$file/' 
 
 var containerImage = 'ExtraContent' 
 var containerImageWidth = 190 
 var containerImageHeight = 127 
 var containerImageWidthContextFondNav = 190 
 var containerImageHeightContextFondNav = 17 

 levelimg[0] = new Array('assmalbkgndContextmenu.jpg') 
 levelimg[1] = new Array('assviebkgndContextmenu.jpg') 
 levelimg[2] = new Array('asslaabkgndContextmenu.jpg') 
 
 var containerContextMenu = 'MenuContext' 

 leveltype[0] = new Array('H','ItemMain','PortalArea',false) 
 leveltype[1] = new Array('H','ItemMainSub','MenuArea',false) 
 leveltype[2] = new Array('V','Itemsub',null,true) 
 


 datamenu["000"]=new Array( 
 new Array(101, "maladie et accidents", 1, "assMalF_N.gif","","assMalF_S.gif","&nbsp;","http://www.assura.ch/web/assura/internetportalass.nsf/ref/HPmaladie?OpenDocument",false,0), 
 new Array(102, "vie", 1, "assVieF_N.gif","","assVieF_S.gif","&nbsp;","http://www.assura.ch/web/assura/internetportalass.nsf/ref/HPvie?OpenDocument",false,0), 
 new Array(103, "laa", 1, "assLaaF_N.gif","","assLaaF_S.gif","&nbsp;","http://www.assura.ch/web/assura/internetportalass.nsf/ref/HPlaa?OpenDocument",false,0) ) 
 
 datamenu["101"]=new Array( 
 new Array(10101, "m/a produits", 1, "assMalNavN.gif","","assMalNavS.gif","Produits","",false,0), 
 new Array(10102, "m/a primes", 1, "assMalNavN.gif","","assMalNavS.gif","Primes","",false,0), 
 new Array(10103, "m/a services", 1, "assMalNavN.gif","","assMalNavS.gif","Services","",false,0), 
 new Array(10104, "m/a infos utiles", 1, "assMalNavN.gif","","assMalNavS.gif","Infos utiles","",false,0), 
 new Array(10105, "m/a actualité", 1, "assMalNavN.gif","","assMalNavS.gif","Actualité","",false,0), 
 new Array(10106, "m/a assura", 1, "assMalNavN.gif","","assMalNavS.gif","Assura","",false,0), 
 new Array(10107, "m/a jobs", 1, "assMalNavN.gif","","assMalNavS.gif","Jobs","",false,0) ) 
 imageList["10101"]="assMalProduits_f.jpg"
imageList["10103"]="assMalServices_f.jpg"
imageList["10104"]="assMalInfosUtiles_f.jpg"
imageList["10105"]="assMalActualité_f.jpg"
imageList["10106"]="assMalAssura_f.jpg"
imageList["10107"]="assMalJobs_f.jpg"
 
 datamenu["10101"]=new Array( 
 new Array(1010101, "m/a tous les produits", -1, "","","","Tous les produits","/contenu/docproduits.nsf/ref/prod-all?OpenDocument",false,0), 
 new Array(1010102, "m/a vosbesoins", -1, "","","","Vos besoins","/contenu/docproduits.nsf/ref/prod-vosBesoins?OpenDocument",false,0), 
 new Array(1010103, "m/a basis", -1, "","","","Assurance de base","/contenu/docproduits.nsf/ref/prod-basis?OpenDocument",false,0), 
 new Array(1010104, "m/a complementa maxi", -1, "","","","Complementa Maxi","/contenu/docproduits.nsf/ref/prod-complementamaxi?OpenDocument",false,0), 
 new Array(1010105, "m/a complementa plus", -1, "","","","Complementa Plus","/contenu/docproduits.nsf/ref/prod-complementaplus?OpenDocument",false,0), 
 new Array(1010106, "m/a priveco/priveco plus", -1, "","","","Priveco/Priveco Plus","/contenu/docproduits.nsf/ref/prod-priveco-privecoplus?OpenDocument",false,0), 
 new Array(1010107, "m/a optima/optima plus", -1, "","","","Optima","/contenu/docproduits.nsf/ref/prod-optima-optimaplus?OpenDocument",false,0), 
 new Array(1010108, "m/a ultra", -1, "","","","Ultra","/contenu/docproduits.nsf/ref/prod-ultra?OpenDocument",false,0), 
 new Array(1010109, "m/a hospita", -1, "","","","Hospita","/contenu/docproduits.nsf/ref/prod-hospita?OpenDocument",false,0), 
 new Array(1010110, "m/a denta plus", -1, "","","","Denta Plus","/contenu/docproduits.nsf/ref/prod-dentaplus?OpenDocument",false,0), 
 new Array(1010111, "m/a denta", -1, "","","","Denta","/contenu/docproduits.nsf/ref/prod-denta?OpenDocument",false,0), 
 new Array(1010112, "m/a medna", -1, "","","","Medna","/contenu/docproduits.nsf/ref/prod-medna?OpenDocument",false,0), 
 new Array(1010113, "m/a natura", -1, "","","","Natura","/contenu/docproduits.nsf/ref/prod-natura?OpenDocument",false,0), 
 new Array(1010114, "m/a mondia", -1, "","","","Mondia","/contenu/docproduits.nsf/ref/prod-mondia?OpenDocument",false,0), 
 new Array(1010115, "m/a previsia", -1, "","","","Previsia","/contenu/docproduits.nsf/ref/prod-previsia?OpenDocument",false,0), 
 new Array(1010116, "m/a previsia plus / previsia maxi", -1, "","","","Previsia Plus/Previsia Maxi","/contenu/docproduits.nsf/ref/prod-previsiaplusmaxi?OpenDocument",false,0), 
 new Array(1010117, "m/a previsia maladie", -1, "","","","Previsia Maladie","/contenu/docproduits.nsf/ref/prod-previsiamaladie?OpenDocument",false,0), 
 new Array(1010118, "m/a pecunia", -1, "","","","Pecunia","/contenu/docproduits.nsf/ref/prod-pecunia?OpenDocument",false,0), 
 new Array(1010119, "m/a aventura", -1, "","","","Aventura","/contenu/docproduits.nsf/ref/prod-aventura?OpenDocument",false,0), 
 new Array(1010120, "m/a prénatale", -1, "","","","Assurance Prénatale","/contenu/docproduits.nsf/ref/prod-prenatale?OpenDocument",false,0) ) 
 
 datamenu["10102"]=new Array( 
 new Array(1010201, "m/a demander une offre", -1, "","","","Demander une offre","/redirect.nsf/Offres?OpenForm&Redirect=http://www.assura.ch/web/assura/Offres/Maladie.nsf/WOffreStart?OpenForm&S=WDocOffres&NBP=0",false,0) ) 
 
 datamenu["10103"]=new Array( 
 new Array(1010301, "m/a nous contacter", -1, "","","","Nous contacter","/contenu/docproduits.nsf/ref/services-formlist?OpenDocument",false,0), 
 new Array(1010302, "m/a contacter un agent", -1, "","","","Contacter un conseiller","/contenu/formulaires.nsf/ref/Form_Agent?Opendocument",false,0), 
 new Array(1010303, "m/a documentation", -1, "","","","Documentation","/contenu/docproduits.nsf/ref/form-documentation?OpenDocument",false,0), 
 new Array(1010304, "m/a assura.net", -1, "","","","Assura.net","/contenu/docproduits.nsf/ref/assuranet?OpenDocument",false,0), 
 new Array(1010305, "m/a carte assuré", -1, "","","","Carte d'assuré LAMal ","/contenu/docproduits.nsf/ref/infos_carte_assure?OpenDocument",false,0) ) 
 
 datamenu["10104"]=new Array( 
 new Array(1010401, "m/a garantie age entree", -1, "","","","Garantie de l'âge d'entrée","/contenu/docproduits.nsf/ref/garantie-age-entree?OpenDocument",false,0), 
 new Array(1010402, "m/a transfert", -1, "","","","S'assurer auprès d'Assura","/contenu/docproduits.nsf/ref/infos_transfert?OpenDocument",false,0), 
 new Array(1010403, "m/a subsides", -1, "","","","Subsides","/contenu/docproduits.nsf/ref/infos_subsides?OpenDocument",false,0), 
 new Array(1010404, "m/a mode de paiement", -1, "","","","Mode de paiement","/contenu/docproduits.nsf/ref/infos_modepaiement?OpenDocument",false,0), 
 new Array(1010405, "m/a groupement factures", -1, "","","","Groupement de factures","/contenu/docproduits.nsf/ref/infos_groupement?OpenDocument",false,0), 
 new Array(1010406, "m/a feuille de pharmacie", -1, "","","","Le tiers garant","/contenu/docproduits.nsf/ref/infos_TiersGarant?OpenDocument",false,0), 
 new Array(1010407, "m/a génériques", -1, "","","","Médicaments génériques","/contenu/docproduits.nsf/ref/infos_generiques?OpenDocument",false,0), 
 new Array(1010408, "m/a porte-clés", -1, "","","","Porte-clés Assura","/contenu/docproduits.nsf/ref/porte-cles?OpenDocument",false,0), 
 new Array(1010409, "m/a faq", -1, "","","","FAQ","http://www.assura.ch/web/SitesWebMonitoring.nsf/StatLink?OpenAgent&ID=CNAL-85UH8Q&L=F",false,0) ) 
 
 datamenu["10105"]=new Array( 
 new Array(1010501, "m/a news", -1, "","","","Infos","/contenu/communiques.nsf/ref/com-news?OpenDocument",false,0), 
 new Array(1010502, "m/a opération des yeux", -1, "","","","Opération des yeux","/contenu/docproduits.nsf/ref/operation_vue?OpenDocument",false,0), 
 new Array(1010503, "m/a club assuraplus", -1, "","","","Club assuraPlus","/contenu/docproduits.nsf/ref/club_assuraplus?OpenDocument",false,0), 
 new Array(1010504, "m/a residgonenstein", -1, "","","","Résidence Gonenstein","/contenu/docproduits.nsf/ref/residenceGonenstein?OpenDocument",false,0), 
 new Array(1010505, "m/a dondusang", -1, "","","","Don du sang","/contenu/docproduits.nsf/ref/don_du_sang?OpenDocument",false,0) ) 
 
 datamenu["10106"]=new Array( 
 new Array(1010601, "m/a philosophie", -1, "","","","Philosophie","/contenu/docproduits.nsf/($All_byref)/assura-philosophie?OpenDocument",false,0), 
 new Array(1010602, "m/a portrait", -1, "","","","Portrait","/contenu/docproduits.nsf/ref/portrait?OpenDocument",false,0), 
 new Array(1010603, "m/a contrat de confiance", -1, "","","","Contrat de confiance","/contenu/docproduits.nsf/ref/contrat_confiance?OpenDocument",false,0), 
 new Array(1010604, "m/a historique", -1, "","","","Historique","/contenu/docproduits.nsf/ref/historique?OpenDocument",false,0), 
 new Array(1010605, "m/a rapport de gestion", -1, "","","","Rapport de gestion","/contenu/docproduits.nsf/ref/rapport-gestion-2008?OpenDocument",false,0), 
 new Array(1010606, "m/a succursales", -1, "","","","Succursales","/contenu/docproduits.nsf/ref/succursales?OpenDocument",false,0) ) 
 
 datamenu["10107"]=new Array( 
 new Array(1010701, "m/a offres emploi", -1, "","","","Offres d'emploi","/contenu/docproduits.nsf/ref/job-list?OpenDocument",false,0), 
 new Array(1010702, "m/a devenir agent", -1, "","","","Devenir conseiller","/contenu/docproduits.nsf/ref/devenir_conseiller?OpenDocument",false,0) ) 
 
 datamenu["102"]=new Array( 
 new Array(10201, "vie produits", 1, "assVieNavN.gif","","assVieNavS.gif","Produits","",false,0), 
 new Array(10202, "vie contact", 1, "assVieNavN.gif","","assVieNavS.gif","Contact","",false,0), 
 new Array(10203, "vie infos utiles", 1, "assVieNavN.gif","","assVieNavS.gif","Infos utiles","",false,0), 
 new Array(10204, "vie actualité", 1, "assVieNavN.gif","","assVieNavS.gif","Actualité","",false,0) ) 
 imageList["10201"]="assVieProduits_f.jpg"
imageList["10202"]="assVieContact_f.jpg"
imageList["10203"]="assVieInfos_f.jpg"
imageList["10204"]="assVieActu_F.jpg"
 
 datamenu["10201"]=new Array( 
 new Array(1020101, "vie tous les produits", -1, "","","","Tous les produits","/contenu/ass_vie.nsf/ref/prod-all?OpenDocument",false,0), 
 new Array(1020102, "vie assurarisk", -1, "","","","AssuraRisk","/contenu/ass_vie.nsf/ref/prod-assurarisk?OpenDocument",false,0), 
 new Array(1020103, "vie assurakid", -1, "","","","AssuraKid","/contenu/ass_vie.nsf/ref/prod-assurakid?OpenDocument",false,0), 
 new Array(1020104, "vie assurasafety", -1, "","","","AssuraSafety","/contenu/ass_vie.nsf/ref/prod-assurasafety?OpenDocument",false,0), 
 new Array(1020105, "vie assuraeconomy", -1, "","","","AssuraEconomy","/contenu/ass_vie.nsf/ref/prod-assuraeconomy?OpenDocument",false,0), 
 new Array(1020106, "vie assurainvest", -1, "","","","AssuraInvest","/contenu/ass_vie.nsf/ref/prod-assurainvest?OpenDocument",false,0), 
 new Array(1020107, "vie assuraannuity", -1, "","","","AssuraAnnuity","/contenu/ass_vie.nsf/ref/prod-assuraannuity?OpenDocument",false,0), 
 new Array(1020108, "vie assurafuneral", -1, "","","","AssuraFuneral","/contenu/ass_vie.nsf/ref/prod-assurafuneral?OpenDocument",false,0) ) 
 
 datamenu["10202"]=new Array( 
 new Array(1020201, "vie contactconseiller", -1, "","","","Contacter un conseiller","/Contenu/formulaires.nsf/ref/FORM_Life?OpenDocument",false,0), 
 new Array(1020202, "vie succursales", -1, "","","","Succursales","/contenu/ass_vie.nsf/ref/succursales?OpenDocument",false,0) ) 
 
 datamenu["10203"]=new Array( 
 new Array(1020301, "vie questions-réponses", -1, "","","","Questions-réponses","/contenu/ass_vie.nsf/ref/questions-reponses_vie?OpenDocument",false,0), 
 new Array(1020302, "vie ficsalité", -1, "","","","Fiscalité","/contenu/ass_vie.nsf/ref/fiscalite?OpenDocument",false,0), 
 new Array(1020303, "vie couverture perte emploi", -1, "","","","Couverture perte d'emploi","/contenu/ass_vie.nsf/ref/couverture_perte_emploi?OpenDocument",false,0) ) 
 
 datamenu["10204"]=new Array( 
 new Array(1020401, "vie promotion vie", -1, "","","","Promotion vie","/contenu/ass_vie.nsf/ref/promotion_vie?OpenDocument",false,0) ) 
 
 datamenu["103"]=new Array( 
 new Array(10301, "laa produits", 1, "assLAANavN.gif","","assLAANavS.gif","Produits","",false,0), 
 new Array(10302, "laa contact", 1, "assLAANavN.gif","","assLAANavS.gif","Offre","",false,0), 
 new Array(10303, "laa infos utiles", 1, "assLAANavN.gif","","assLAANavS.gif","Infos utiles","",false,0) ) 
 imageList["10301"]="assLAAProduits_f.jpg"
imageList["10302"]="assLAAOffre_f.jpg"
imageList["10303"]="assLAAInfosUtiles_f.jpg"
 
 datamenu["10301"]=new Array( 
 new Array(1030101, "laa laa", -1, "","","","LAA","/contenu/Ass_laa.nsf/ref/prod-laa?OpenDocument",false,0), 
 new Array(1030102, "laa laa+", -1, "","","","Complémentaire LAA+","/contenu/Ass_laa.nsf/ref/prod-laaplus?OpenDocument",false,0) ) 
 
 datamenu["10302"]=new Array( 
 new Array(1030201, "laa entreprise", -1, "","","","Entreprise","/contenu/formulaires.nsf/ref/FORM_LAAentreprise?opendocument",false,0) ) 
 
 datamenu["10303"]=new Array( 
 new Array(1030301, "laa questions-réponses", -1, "","","","Questions-réponses","/contenu/ass_laa.nsf/ref/questions-reponses_laa?OpenDocument",false,0) ) 
 
 
 

	
function showMenu(posx,posy,level,menuID,parentdivid)
{
	
	this.writeMenu = showMenu_writeMenu;
	this.clearMenu = showMenu_clearMenu;
	this.setimageMenu  = showMenu_setimageMenu;
	this.setcontextMenu	 = showMenu_setcontextMenu;				// affiche le menu contextuel 
	this.getdivID =showMenu_getdivID;
	
	this.parentdiv=null
	this.level=level
   	this.menuID = menuID
	this.menu=datamenu[menuID]
	this.eraseable = false
	this.classname=null
	this.orientation=null
	this.parentdivid=parentdivid
	this.type=null
//		this.divid=this.getdivID(this.level)										// ID de la balise div 
	this.posx = posx			
	this.posy = posy
	
}
function showMenu_setcontextMenu(data)
{
  if (!Contextmenu) return;
  var ctrl = document.getElementById(containerContextMenu)
  if (ctrl!=null)
  {
    var level2show=null
    var menuID2Show= selectedlevels[0]
    for(var i=selectedlevels.length-1;i>0;i--)
    {
      if(selectedlevels[i]!=null) 
      {
        menuID2Show=selectedlevels[i]
        break;
      }	
    }
    if (menuID2Show==null) return
    // récupèration du mennu parent si ce n'est pas déjà le parent 
    var selectedItem = menuID2Show
    if (menuID2Show.length>3)
	menuID2Show = menuID2Show.substring(0,menuID2Show.length-2)
       
    var menu2show = datamenu[menuID2Show]
    if (menu2show!=null)
    {
      // Affichage du menu 
      var menuID2ShowLenght      
      if (mode==true) 
        menuID2ShowLenght= menuID2Show.substring(0,3).charAt(2)-1
      else
        menuID2ShowLenght= 0
        
      var data ='<table border=0 cellspacing=0 cellpadding=0 width = "'+containerImageWidthContextFondNav+'">'
      
      for(var i=0; i<menu2show.length;i++)
      {
        // Effectue une opération AND entre le masque de l'utilisateur et le 
        // masque de l'élément du menu	
        // Si le résultat est 'true' on affiche l'élément du menu 		
        if (((menu2show[i][9] & mask)==menu2show[i][9])==true) 
        {	
          data+='<tr height="'+containerImageHeightContextFondNav+'"' 
          if (levelimg[menuID2ShowLenght]!="")
            data+="style='background-position: bottom; background-image : url("+imgsrc+levelimg[menuID2ShowLenght]+")'"
               
          data+='>'
           
          if (menu2show[i][0]==selectedItem)
          {
            // c'est l'éléments sélectionné de la page
            data+='<td  width=20 align=center><img src="'+imgsrc+'arrow_d.gif"></td><td>'
            data+='<div class=\'contextItemSelected\'>'
            data+='<a href=\''
              
            // détermine si la cible est interne ou externe
            if (menu2show[i][7].substring(0,7).toLowerCase()=="http://")
              data+=menu2show[i][7]
            else
              data+=addURLInfo(UrlWebRoot+menu2show[i][7],menu2show[i][0])
               
            data+='\''+target+'>'
            data+=FullDecodeStr(menu2show[i][6])+'</a></div></td></tr>'
          } else
          {
            // C'est les éléments du menu 
            var target=(menu2show[i][8])?'target=\'target=_BLANK\'':''
            data+='<td width=20 align=center ><img src="'+imgsrc+'arrow.gif"></td>'
            data+='<td><div class=\'contextItem\'>'
            data+='<a href=\''
               
            // détermine si la cible est interne ou externe
            if (menu2show[i][7].substring(0,7).toLowerCase()=="http://")
              data+=menu2show[i][7]
            else
              data+=addURLInfo(UrlWebRoot+menu2show[i][7],menu2show[i][0])
                
            data+='\''+target+'>'
            data+=FullDecodeStr(menu2show[i][6])+'</a></div></td></tr>'	
          }
        }
      }
        data+='</table>'			
        ctrl.innerHTML=data
        if (data!="")	ctrl.className='context'
    }
  }
}
function showMenu_setimageMenu()
{
	var img = imageList[selectedlevels[this.level]]
	if (img!=null)
	{
		var ctrl = document.getElementById(containerImage)
		if (ctrl!=null)
		{
			ctrl.style.backgroundImage ='url('+imgcontextsrc+imageList[selectedlevels[this.level]]+')'
			ctrl.style.width=containerImageWidth+'px'			
			ctrl.style.height=containerImageHeight+'px'
		}
	}
}
function showMenu_getdivID()
{
	var ctrl = document.getElementById('lvl'+this.level)
	if (ctrl==null)
	{
//		if (document.getElementById(this.parentdivid)!=null)
              {
		  ctrl = document.createElement('div')	
		  ctrl.left=0
		  ctrl.top=0
		  ctrl.style.position='relative'
		  ctrl.className=this.classname
		  ctrl.id='lvl'+this.level
		  ctrl.style.visibility='visible'
		  ctrl.style.display='block'
		  ctrl.style.zIndex=999
		  if (this.parentdivid!=null)
		  {
			ctrl.style.position='relative'
			document.getElementById(this.parentdivid).appendChild(ctrl)
		  }
		  else
		  {
			ctrl.style.position='absolute'
			document.getElementsByTagName('body')[0].appendChild(ctrl)	
		  }	
		  if (IE && !opera && this.type==C_dynamic)
		  {
			var ovr = document.getElementById('ieovrbug'+this.level)
			if (ovr==null)
			{
				ovr = document.createElement('iframe')	
				ovr.id='ieovrbug'+this.level
				ovr.style.position='absolute'
				ovr.style.display='block'	
				ovr.style.visibility='visible'
				ovr.style.filter='Alpha(opacity=100)';
					ovr.style.zIndex=998
				document.getElementsByTagName('body')[0].appendChild(ovr)					
			}
		  }
              }
	}
	return ctrl
}
function showMenu_clearMenu()
{
	this.divid.innerHTML=''
	if (this.type==C_dynamic)
	{
		this.divid.style.visibility='hidden'
	
	}
}	
function FullDecodeStr(data)
{
	if(data=='') return '&nbsp;'
	
	data = unescape(data)
	data= data.replace('%2F','/')
	data= data.replace('%2B','+')
	return data
}
	     
function showMenu_writeMenu(posx,posy,width,height)
{
	if (this.menu==null) return 
	this.setimageMenu()
	this.setcontextMenu()
	this.divid=this.getdivID(this.level)					// ID de la balise div 
//	if (this.divid==null) return 
	data='<table border=0 cellspacing=0 cellpadding=0>'
	if (this.orientation==C_horizontal) data+='<tr>'
	for (i=0;i<this.menu.length;i++)
	{ 
   
	   // Effectue une opération AND entre le masque de l'utilisateur et le masque de l'élément du menu	
	   // Si le résultat est 'true' on affiche l'élément du menu 		
	   if (((this.menu[i][9] & mask)==this.menu[i][9])==true) 
	   {
		if (this.orientation==C_vertical) data+='<tr>'
			
		var ctrlStyle='style=\' position:relative; '
		if (this.menu[i][2]==1 || this.menu[i][7]) ctrlStyle+=' cursor:pointer;'
		ctrlStyle+='\''
			
		if (this.menu[i][0]!=selectedlevels[this.level])
		{	
			// élément du menu pas sélectionné 
			if(this.menu[i][3]!='')
			{
				// Image du menu (non sélectionné) a afficher 
				data+='<td class=\''+this.classname+'_N\'' +
				ctrlStyle+' background=\''+imgsrc+this.menu[i][3]+'\''
			}
			else
			{
				// Pas d'image a afficher pour le menu (non sélectionné) 
				data+='<td class=\''+this.classname+'_N\'' +
				ctrlStyle
			}
		}		
		else
		{
			// élément du menu sélectionné 
			if(this.menu[i][5]!='')
			{
				// élément du menu contient une image
				data+='<td class=\''+this.classname+'_S\'' +
				ctrlStyle+' background=\''+imgsrc+this.menu[i][5]+'\''
			}
			else
			{
				// élément du menu ne contient pas d'image 
				data+='<td class=\''+this.classname+'_S\'' +
				ctrlStyle
			}
		}
	
	
		data+= ' id=\'i'+this.menuID+i+'\''
		data+=	" onmouseover=\"onMOver(this,"+i+",'"+this.level+"')\""+
		  		" onmouseout=\"onMOut(this,"+i+",'"+this.level+"')\""+ 
		  		" onclick=\"onMClick(this,"+i+",'"+this.level+"')\">"
							
		data+=FullDecodeStr(this.menu[i][6])
		data+='</td>'
		if (this.orientation==C_vertical) data+='</tr>'
          }
	}
	if (this.orientation==C_horizontal) data+='</tr>'
	data+='</table>'
		
	this.divid.innerHTML=data
	this.divid.style.visibility='visible'
	this.divid.style.display='block'
	
		
		
	if (this.parentdivid==null && posx!=null)
	{
		this.divid.style.left=posx +1 
		this.divid.style.top =posy +1
		this.divid.level=1000
	}
	
	if (IE && !opera && OS_win!=-1 && this.type==C_dynamic) IEBugOverlay(this.divid,this.level,true)
}
function onMOver(ctrl,pos,level)
{
	var obj = container[level]
	if (ctrl.className.indexOf('_N')!=-1)
		ctrl.className=ctrl.className.replace('_N','_O')
	else
		ctrl.className=ctrl.className.replace('_S','_SO')
	if (obj.menu[pos][4]!='')
	{
		ctrl = document.getElementById('i'+obj.menuID+pos)
		if (ctrl!=null)	ctrl.style.backgroundImage='url('+imgsrc+obj.menu[pos][4]+')'
	}
	var lvl=obj.level+1
		
	clearmenufrom(lvl)	
	// désactivation de la supression d'affiche des menus apres délai
	clearTimeout(timerID)	
		
	if (obj.menu[pos][2]==1)	
	{
		if(mode==true)
		{
			var mid = String(obj.menu[pos][0])
			if (selectedlevels[0]==null || mid.substring(0,3)!=selectedlevels[0])
			{
				return
			}
		}
		
		var posxy = getmenuposition(ctrl.id)
		container[lvl] = createMenuFromTemplate(lvl,obj.menu[pos][0],posxy)
		container[lvl].parentmenu	= obj			// on mémorise le parent
		obj.childmenu 		= container[lvl]	// on mémorise l'enfant
		var offsetx = 0
		var offsety = 0
		var cadrex = obj.divid.offsetLeft
		var cadrey = obj.divid.offsetTop
		
		var MenuAreaDiv = document.getElementById("MenuArea")
	
		if (obj.orientation==C_horizontal)
		{
			offsetx = MenuAreaDiv.offsetLeft+ctrl.clientWidth*pos
			offsety = MenuAreaDiv.offsetTop+ctrl.clientHeight
		} else
		{
			offsetx = ctrl.offsetWidth
			offsety = ctrl.offsetTop
		}
		container[lvl].writeMenu(cadrex+offsetx,cadrey+offsety,0,0)
	}
}			
				
function onMOut(ctrl,pos,level)
{
	var obj = container[level]
	if (ctrl.className.indexOf('_O')!=-1)
	{
		ctrl.className=ctrl.className.replace('_O','_N')
		if (obj.menu[pos][3]!='') ctrl.style.backgroundImage='url('+imgsrc+obj.menu[pos][3]+')'
	}
	else
	{
		ctrl.className=ctrl.className.replace('_SO','_S')
		if (obj.menu[pos][5]!='') ctrl.style.backgroundImage='url('+imgsrc+obj.menu[pos][5]+')'
	}
			
	timerID = setTimeout("clearmenufrom(0)", timeoutmenu);          		
}
function onMClick(ctrl,pos,level)
{
	var obj = container[level]
	if (obj.menu[pos][7]!='')
	{	
		clearmenufrom(0)
		// détermine si la cible est interne ou externe
		if (obj.menu[pos][7].substring(0,7).toLowerCase()=="http://")
			window.location.href=obj.menu[pos][7]
		else
			window.location.href=addURLInfo(UrlWebRoot+obj.menu[pos][7],obj.menu[pos][0])
	}	
}
	
	
function clearmenufrom(level)
{
	for(var i=level; i<container.length;i++)
	{
		
		if (container[i]!=null)
		  if (container[i].eraseable==true) // type==dynamic)
		  {
		  	if (IE && !opera && OS_win!=-1)
			{
				IEBugOverlay(null,container[i].level,false)
			} 
			container[i].clearMenu()
		  }	
	}	
}
function getmenuposition(divid)
{
	var ctrl = document.getElementById(divid)
	if(ctrl!=null)
		return new Array(ctrl.offsetLeft,ctrl.offsetTop)	
	else
		return new Array("0","0")
}
		
function createMenuFromTemplate(level,menu,pos)
{
	var template = null
	if (leveltype[menu]!=null)
	{
		template = leveltype[menu]
	} else
	{
		var lv = level
		while(leveltype[lv]==null &&lv>-1)
		{
			lv=lv-1
		}
		template = leveltype[lv]
	}
	
	if (pos==null) pos = getmenuposition(template[2])
	
	var obj = new showMenu(	pos[0],			// Position X du menu (0 si menu statique)
					pos[1],			// Position Y du menu (0 si menu statique) 
					level,				// Level du menu
					(level==0)?'000':menu,	// ID du menu a afficher (si null -> on affiche le menu ROOT
									template[2])					
       
	// Si la balise div n'existe pas pour le niveau 0 -> on sort car il est impossible d'afficher le menu 
	if(level==0 && document.getElementById(template[2])==null) return null
	
	
	obj.orientation		= (template[0]=='H')?C_horizontal:C_vertical
	obj.classname		= template[1]
	obj.eraseable		= template[3]														
	obj.parentmenu		= null
	obj.type			= (template[2]!=null)?C_static:C_dynamic					
		
	return obj
}
function convertToImage(menu)
{
	function setImage(menu,pos,img)
	{
		var imgname = menu[pos][img]
		menu[pos][img]= new Image 
		menu[pos][img].src=imgsrc+imgname
	}
	for(var i=0;i<menu.length;i++)
	{
		if 	(menu[i][3]&&typeof(menu[i][4])!='object')
		{
			setImage(menu,i,4)
			setImage(menu,i,5)
			setImage(menu,i,6)
		}
	}
}	
function parselevels(MId)
{
	for (var i=0; i<(MId.length-1)/2;i++)
	{
		selectedlevels[i]=MId.slice(0,(i*2)+3)
	}
	
}
function IEBugOverlay(ctrl,level,show)
{
	var ieovrbug = document.getElementById('ieovrbug'+level)
	if (show)
	{
		ieovrbug.style.left=ctrl.offsetLeft+'px' //String(parseInt(ctrl.style.left)-1)
		ieovrbug.style.top=ctrl.offsetTop+'px' //String(parseInt(ctrl.style.top)-1)
		ieovrbug.style.width=ctrl.offsetWidth+'px'
		ieovrbug.style.height=ctrl.offsetHeight+'px'
		ieovrbug.style.display='block';
		ieovrbug.style.visibility='visible';
	}
	else
	{
		ieovrbug.style.visibility='hidden';
		ieovrbug.style.display='none';
	}	
}
function getElement(ctrlname)
{
  if(NOV)
  {
	  return null
  }else{
	return document.getElementById(ctrlname)		  
  }
}
var UUniqueID
function getMid(IDText,mnu)
{
	if (mnu!=null)
	{
		for (var i=0; i<mnu.length;i++)
		{
			if (IDText==mnu[i][1]) 
			{
				return String(mnu[i][0])
			}
			if (mnu[i][2]==1) 
			{	
				var res = getMid(IDText,datamenu[String(mnu[i][0])])
				if (res!='') return res
			}
		}
	}
return ''
}
function addURLInfo(url,MenuID)
{
	var qs = new QueryString()
	var lang=qs.get("L","F")
	if (MenuID!="")	
		return  removeMidStringFromURL(url)+"&L="+lang.toUpperCase()+"&Mid="+MenuID
	else
		return  removeMidStringFromURL(url)+"&L="+lang.toUpperCase()
}
function removeMidStringFromURL(urlstr)
{
	var bstr = urlstr.indexOf("Mid=")
	if (bstr!=-1) 
	{	
		var estr = urlstr.indexOf("&",bstr)
		if (estr==-1) 
		{ 
			estr=urlstr.length
		}
		var toreplace=urlstr.substr(bstr,estr-bstr)
		return urlstr.replace(toreplace,'');
	}else{
		return urlstr;
	}
	
}
function QueryString()
{
	var querystring=location.search.substring(1,location.search.length);
	querystring = querystring.toLowerCase()
		
	var args = querystring.split('&');
	// split out each name = value pair
	for (var i=0;i<args.length;i++)
	{
		var pair = args[i].split('=');
		temp = unescape(pair[0]).split('+');
		temp0 = temp.join(' ');
		
		temp = unescape(pair[1]).split('+');
		temp1 = temp.join(' ');
		
		this[temp0]=temp1;
	}
	this.get=QueryString_get;
}
function QueryString_get(strKey,strDefault)
{
	var value=this[strKey.toLowerCase()];
	
	if (value==null){value=strDefault;}
	
	return value;
}
function ShowMenu(UniqueIDText)
{
	// recherche dans l'lr leparamètre ncm (NocontextMenu) si il ya un paramètre saisi, 
	// n'affiche pas le menu de contexte
	var QS = new QueryString()
	var ncm = QS.get('ncm','')			
	if (ncm!='') Contextmenu=false
	UUniqueID=UniqueIDText
	if (!isNaN(parseInt(UUniqueID)))
		parselevels(UniqueIDText)			
	else	
		parselevels(getMid(UniqueIDText,datamenu["000"]))			
	
	container[0] = createMenuFromTemplate(0,null,null)
	if (container[0]!=null) container[0].writeMenu()
			
	if (mode==C_portal && selectedlevels[0]!=null)
	{
		container[1] = createMenuFromTemplate(1,selectedlevels[0],null)
		if (container[1]!=null) container[1].writeMenu()
	}
}
// Utilisé pour corriger le bug du onMOver et onMOut
function onUnloadMenu()
{
	clearmenufrom(0)
	for (i=0; i<leveltype.length; i++)
  	{
    		ctrl = document.getElementById(leveltype[i][2])
    		if(ctrl!=null) ctrl.innerHTML=""
  	}
}
