/*
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 = false 
 var UrlWebRoot = '/web/animalia' 
 var imgsrc = '/web/animalia/WebElementsAni.nsf/objects/internet_menu_imgs/$file/' 
 var imgcontextsrc = '/web/animalia/WebElementsAni.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') 
 
 var containerContextMenu = 'MenuContext' 

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


 datamenu["000"]=new Array( 
 new Array(101, "ani produit", 1, "assAniNavN.gif","","assAniNavS.gif","Produit","",false,0), 
 new Array(102, "ani primes", 1, "assAniNavN.gif","","assAniNavS.gif","Primes","",false,0), 
 new Array(103, "ani contact", 1, "assVieNavN.gif","","assVieNavS.gif","Contact","",false,0), 
 new Array(104, "ani infos utiles", 1, "assAniNavN.gif","","assAniNavS.gif","Infos utiles","",false,0), 
 new Array(105, "ani actualité", 1, "assAniNavN.gif","","assAniNavS.gif","Actualité","",false,0), 
 new Array(106, "ani services", 1, "assAniNavN.gif","","assAniNavS.gif","Service clientèle","",false,0) ) 
 imageList["101"]="assAnimaProduits_f.jpg"
imageList["102"]="assAnimaPrimes_f.jpg"
imageList["103"]="assAnimaContact_f.jpg"
imageList["104"]="assAnimaInfosUtiles_f.jpg"
imageList["105"]="assAnimaActualite_f.jpg"
imageList["106"]="assAnimaServices_f.jpg"
 
 datamenu["101"]=new Array( 
 new Array(10101, "ani animalia", -1, "","","","Animalia","/contenu/docproduits.nsf/ref/prod-animalia?OpenDocument",false,0) ) 
 
 datamenu["102"]=new Array( 
 new Array(10201, "ani offre", -1, "","","","Demander une offre","/offres/animalia.nsf/WFormular?OpenForm&S=WDocAnimaliaInit",false,0) ) 
 
 datamenu["103"]=new Array( 
 new Array(10301, "ani succursales", -1, "","","","Adresse","/contenu/docproduits.nsf/ref/succursales?OpenDocument",false,0) ) 
 
 datamenu["104"]=new Array( 
 new Array(10401, "ani questions-réponses", -1, "","","","Questions-réponses","/contenu/docproduits.nsf/($All_byref)/questions-reponses_animalia?OpenDocument",false,0), 
 new Array(10402, "ani tarifs de référence", -1, "","","","Tarifs de référence","/contenu/docproduits.nsf/ref/tarifsRef_animalia?OpenDocument",false,0) ) 
 
 datamenu["105"]=new Array( 
 new Array(10501, "ani concours", -1, "","","","Concours","/contenu/docproduits.nsf/ref/Animalia-concours?OpenDocument",false,0), 
 new Array(10502, "ani jeu", -1, "","","","Jeu Animalia","/contenu/docproduits.nsf/ref/jeu-animalia?OpenDocument",false,0), 
 new Array(10503, "ani partenaires", -1, "","","","Partenaires","/contenu/docproduits.nsf/ref/animalia-part?OpenDocument",false,0), 
 new Array(10504, "ani évènements", -1, "","","","Evènements","/contenu/docproduits.nsf/ref/animalia-events?OpenDocument",false,0) ) 
 
 datamenu["106"]=new Array( 
 new Array(10601, "ani formulaires", -1, "","","","Formulaires","/contenu/docproduits.nsf/ref/services-formlist?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=""
  	}
}
