var nbfam;
var menufamille;
var liens;
var CodesFam= new Array() ;
var MenuItem=4; //a modifier si le catalogue devait être utilisé dans l'espace adhérent
var blnMenusCharge=false;

//var cheminimg="../images/testeurvert.jpg";//Utiliser cette image pour voir les hiddeurs
var cheminimg="../images/spacer.gif";

if (document.getElementById) {
  addEvent(window, 'load', loadcatlogueevent) ;
}

function loadcatlogueevent(){
  //alert("go go go !");
  //alert(document.getElementById("nbCapa"));
  if(document.getElementById("menufamille")!=null){
    init_catalogue();
    AjaxLoadXmlTypeProd();
    }
  }
  
function  init_catalogue(){
  var menutypecou;
  

  //Recuperation du menu famille (principale)
  menufamille=document.getElementById("menufamille");
  //Recupération lien du menu
  liens = menufamille.getElementsByTagName("a");
  nbfam=liens.length;
  //Boucle sur les liens pour création des sous menu et des évenements (récup sous menu)
  
  for(i=0;i<nbfam;i++){
    //DEV 22/09/09addEvent(liens[i], 'click', lienfamille_click) ;
    //DEV 22/09/09addEvent(liens[i], 'mouseover', lienfamille_over) ;

    //Récupération du numéro de famille (a la fin de l'id)
    //DEV 22/09/09idxs=liens[i].id.substr(4).split("_");
    //DEV 22/09/09codfam=idxs[1];
    //Stockage
    //DEV 22/09/09CodesFam[i]= codfam;
    //Création du sous menus
    //DEV 22/09/09 creer_sousmenu(codfam);
    }

  //Création des supr hiddeurs (au dessus a gauche et a droite)
  creer_hiddeur(liens[0],"supperhiddertop",true);
  creer_hiddeur(liens[0],"supperhidderleft",true);
  creer_hiddeur(liens[0],"supperhidderright",true);
  repositionne_superhiddeurs();
  
  creer_hiddeur(liens[0],"contexthidderleft",false);
  creer_hiddeur(liens[0],"contexthidderright",false);
  creer_hiddeur(liens[0],"contexthidderbottom",false);
  

  addEvent(window, 'resize', window_resize) ;

  }
  
function creer_sousmenu(nosousmenu){
  var nodebase;
  var parent;
  var ulnew;
  var linew;
  var emnew;
  var txtnew;

  /*On creer un truc du genre :
    <ul class= id='menutype0'><li><em>patientez...</em></ul>*/

  nodebase= document.getElementById("detailcatalogue");
  parent=nodebase.parentNode;

  ulnew = document.createElement("ul");

  Attribut = document.createAttribute("class");
  Attribut.nodeValue =  "menutype";
  ulnew.setAttributeNode(Attribut);
  
  Attribut = document.createAttribute("id");
  Attribut.nodeValue =  "menutype"+nosousmenu;
  ulnew.setAttributeNode(Attribut);
  
  linew = document.createElement("li");
  
  emnew= document.createElement("em");
  
  txtnew = document.createTextNode("chargement en cours...");

  emnew.appendChild(txtnew);
  linew.appendChild(emnew);
  ulnew.appendChild(linew);
  
  parent.insertBefore(ulnew,nodebase);
  }

  
function creer_hiddeur(nodebase,id,blnVisib){
    var imgnew;
    var parent=nodebase.parentNode;
    var divnew = document.createElement("div");
    divnew.style.position='absolute';
    if(blnVisib){
      divnew.style.visibility="visible";
      }
    else{
      divnew.style.visibility="hidden";
      }

    //divnew.style.backgroundColor="#FF5555"; //Ceci est pour les tests

    Attribut = document.createAttribute("id");
    Attribut.nodeValue =  id;
    divnew.setAttributeNode(Attribut);
    
    imgnew= document.createElement("img");
    Attribut = document.createAttribute("src");
    Attribut.nodeValue =  cheminimg;
    imgnew.setAttributeNode(Attribut);
    
    divnew.appendChild(imgnew);
     
    parent.insertBefore(divnew,nodebase);
    addEvent(divnew, 'mouseover', hiddeur_over) ;
    }
    
function repositionne_hiddeur(id,x,y,w,h){

  divnew=document.getElementById(id);
  divnew.style.left=x;
  divnew.style.top=y;
  divnew.style.width=w;
  divnew.style.height=h;
  divnew.style.visibility="visible";
  
  imgs=divnew.getElementsByTagName('img')
  imgnew=imgs[0];
  imgnew.style.width=w;
  imgnew.style.height=h;
  

  /*imgnew= divnew.firstChild ;
  imgnew.style.width=w;
  imgnew.style.height=h;*/
  
  }
  
function repositionne_superhiddeurs(){
  var h=60;
  
  repositionne_hiddeur("supperhiddertop",menufamille.offsetLeft,menufamille.offsetTop-h,menufamille.offsetWidth,h+13);

  repositionne_hiddeur("supperhidderleft",0,menufamille.offsetTop,liens[0].offsetLeft,menufamille.offsetHeight);

  repositionne_hiddeur("supperhidderright",liens[nbfam-1].offsetLeft+liens[nbfam-1].offsetWidth,menufamille.offsetTop,30,menufamille.offsetHeight);



}
  
function lienfamille_over(e){
    var menutypecou;
    var dernfam;//le dernier élement (lien) de menu famille
    var maxy;//La position droite de cet élément
    var rightcou;//la postion droite possible du menu courant
    

    if (e.target == null && e.srcElement) {
      // cas particulier de MSIE 6 pour recuperer la balise DOM cible
      e.target = e.srcElement ;
      }
    idxs=e.target.id.substr(4).split("_");

    nofam=idxs[1];

    dernfam=liens[liens.length-1];
    maxy=dernfam.offsetLeft+dernfam.offsetWidth;
    //alert(maxy);

    menutypecou=document.getElementById("menutype"+nofam);
    rightcou=e.target.offsetLeft+menutypecou.offsetWidth;
    if(rightcou>maxy){//Le menu dépasserait a droite on le calle a droite
        newleft=e.target.offsetLeft+e.target.offsetWidth-menutypecou.offsetWidth;
        menutypecou.style.right=e.target.offsetWidth;//-30;
       }
    else{//Sinon on le calle gauche (normal)
       newleft=e.target.offsetLeft;
       menutypecou.style.left=newleft;
      }
    //menutypecou.style.left=newleft;
    menutypecou.style.top=e.target.offsetTop+e.target.offsetHeight+1;
    menutypecou.style.visibility="visible";
    
    //Repositionnement des hiddeurs contextuel (gauche droite et dessous du menu)
    var offsetRight=newleft+menutypecou.offsetWidth;
    var offsetBottom=menutypecou.offsetTop+menutypecou.offsetHeight; // En fait le top du contexthidderbottom
    var lapage=document.getElementById("lapage");
    var mheight=lapage.offsetTop+lapage.offsetHeight;
    repositionne_hiddeur("contexthidderleft",0,menutypecou.offsetTop,newleft,menutypecou.offsetHeight);
    repositionne_hiddeur("contexthidderright",offsetRight,menutypecou.offsetTop,maxy-offsetRight+30,menutypecou.offsetHeight);
    repositionne_hiddeur("contexthidderbottom",0,offsetBottom,maxy+30,mheight-offsetBottom);

    //On cache les autres menus
    //alert(nbfam);
    for(i=0;i<nbfam;i++){
      menutypecou=document.getElementById("menutype"+CodesFam[i]);
      if(CodesFam[i]!=nofam){
        if(menutypecou!=null){
          menutypecou.style.visibility="hidden";
          }
        }
      }

    

 }
function lienfamille_click(e){
  if(blnMenusCharge){
    if (! e.preventDefault ){
      // cas particulier de MSIE pour empecher l'action par defaut du navigateur
      e.preventDefault = function () { this.returnValue = false ; } ;
      }
    e.preventDefault()  ;
    return false ;
    }
    
  }
 
function window_resize(){ // au redimentionnement de la fenetre
  hideall();
  repositionne_superhiddeurs();
  }

function hideall(){ //Cache tous les sousmenu
  for(i=0;i<nbfam;i++){
    menutypecou=document.getElementById("menutype"+CodesFam[i]);
    if(menutypecou!=null){
      menutypecou.style.visibility="hidden";
      }
    }
  //On cache les hiddeurs contextuel par la même ocassion
  //histoire qu'il ne gène pas l'utilisation de lien en dessous.
  document.getElementById("contexthidderleft").style.visibility="hidden";
  document.getElementById("contexthidderright").style.visibility="hidden";
  document.getElementById("contexthidderbottom").style.visibility="hidden";

  }
function hiddeur_over(){ //Quand on sort du menu
    hideall();
 }
 
 
 //-------------------------------
 //AJAX

  function AjaxLoadXmlTypeProd(){
	   var xhr;

 		if (window.ActiveXObject) {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		else{
			xhr = new XMLHttpRequest();
			xhr.overrideMimeType("text/xml");
			}

    	xhr.onreadystatechange  = function(){
        	if(xhr.readyState  == 4){
              if(xhr.status  == 200)
			 	        //alert( xhr.responseXML);
                xmlTypeProdLoaded(xhr );
              else
                  alert("Error code " + xhr.status);
         	  }
    		};



   		xhr.open( "GET", "xml/typeproduit.xml.php",  true);
		//xhr.open( "GET", "data.xml",  true);
		//xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   		xhr.send(null);
		}

  function xmlTypeProdLoaded(xhr){
    var linew;
    var newah;
    var txtnew;
		if (window.ActiveXObject) {
			doc = new ActiveXObject("Microsoft.XMLDOM");
			doc.loadXML(xhr.responseText)
			}
		else{
			doc=xhr.responseXML;
			}
    //alert("loaded");
		//liste=doc.getElementsByTagName("liste");
		//alert(liste);
		familles=doc.getElementsByTagName("famille");
		//Nous allons boucler sur les familles afin de remplir les sous menus
		for(i=0;i<familles.length;i++){      //
      //Récupération du code famille
		  codefam= familles.item(i).getAttribute('codefamille');
		  //Récupération du menu correstondant
      menutypcou = document.getElementById('menutype'+codefam);
      //On efface le patientez.
      menutypcou.removeChild(menutypcou.firstChild);
      //Récupération de la liste des type produits correspondant à la famille
		  typesprod=familles.item(i).getElementsByTagName("typeproduit");

		  //Boucle sur les type produit
		  for(j=0;j<typesprod.length;j++){
        //Recupération du code et du libéllé du type de produit
		    codetyp=typesprod.item(j).getAttribute('codetypeprod');
		    typep=typesprod.item(j).firstChild.nodeValue;

        //Création de <li><a href....."
        linew= document.createElement("li");
        newah =document.createElement("a");
        Attribut = document.createAttribute("href");
        Attribut.nodeValue =  "?MenuItem="+MenuItem+"&CodeFamille="+codefam+"&CodeTypeProd="+codetyp;
        newah.setAttributeNode(Attribut);
        txtnew = document.createTextNode(typep);
        //Enregistrement en cascade des nodes créés
        newah.appendChild(txtnew);
        linew.appendChild(newah);
        menutypcou.appendChild(linew);

        }//fin boucle sur type produit

		  }//fin Boucle Famille
    blnMenusCharge=true;
	  }
	  
	  

 

