//////////////////////////////////
// INIT au chargement de la page
//////////////////////////////////
window.onload=function(){   
    initNav();
    initFastLinks();
    
    document.onclick = docClicked;
}


//////////////////////////////
// VARIABLES D'ETAT
//////////////////////////////

// etat Menu principal
var modeClickControl = false;
var lastOpenedMDummy = null;
var closeMenuWanted = true;

// sous menus principal
var lastOpenedPSMenu = null;
var lastOpenedTSMenu = null;
var subMenuClicked = false;

// etat Menu secondaire

var lastOpenedMenu = null;
var lastOpenedTitre = null;
var foundCurrentPage = false;
var aCurPageLink = null;
var curPageHRef = null;

/////////////////////////////////
// MENU RAPIDE
/////////////////////////////////

// hide Sub Menus
function initFastLinks(){
    var menu = document.getElementById("fastMenu1");
    
    if(menu != null){
        initCurPageHRef();
        findAndHideSubMenusInChilds(menu);
    }
}

function initCurPageHRef(){
    var tmp = window.location.href;
    
    var i = window.location.href.indexOf("#");
    if(i > -1){
        tmp = tmp.substring(0,i);
    }
    i = tmp.indexOf("?");
    if(i > -1){
        tmp = tmp.substring(0,i);
    }
    curPageHRef = tmp;
}

function findAndHideSubMenusInChilds(node){
    if(!node.hasChildNodes())
        return;
    
    var childs = node.childNodes;
    
    for(var ci=0 ; ci < childs.length; ci++){
        var c = childs[ci];
    
        if(c.nodeName == "LI"){
            handleLiNode(c);
        }
    }
}

function handleLiNode(li){
    if(!li.hasChildNodes())
        return;
    
    var childs = li.childNodes;
    var titreMenu = null;
    
    for(var ci=0 ; ci < childs.length; ci++){
        var c = childs[ci];
        if(!foundCurrentPage && c.nodeName == "A"){
            testALink(c); 
        }
        else if(c.className == "fTitreMenu"){
            titreMenu = c;
        }
        else if(c.className == "fSousMenu"){
            if(foundCurrentPage){
                c.style.display = "none";
            }
            else{
                findCurrentPageALink(c);
                if(foundCurrentPage){
                    c.style.display = "none";
                    changeDisplay(titreMenu);
                }
                else{
                  c.style.display = "none";
                }
            }
        }
    }
}

function testALink(a){    
   if(curPageHRef == a.href){
      aCurPageLink = a;
      setCurPageStyle(aCurPageLink);
      foundCurrentPage = true;
      return true;
   }   
   return false;
}


function findCurrentPageALink(divNode){
    
    var childs = divNode.childNodes;    
    
    for(var ci=0 ; ci < childs.length; ci++){
        var c = childs[ci];
        if(c.nodeName == "UL"){
            var childs2 = c.childNodes;
            for(var cj=0 ; cj < childs2.length; cj++){
              var c2 = childs2[cj];
              if(c2.nodeName == "LI"){
                var childs3 = c2.childNodes;
                for(var ck=0 ; ck < childs3.length; ck++){
                  var c3 = childs3[ck];
                  if(c3.nodeName == "A" ){
                      testALink(c3);
                      if(foundCurrentPage)
                          return;
                  }
                }
              }
            }
        }
    }
}

function findAssSubMenu(titre){     
    var parent = titre.parentNode;
    var childs = parent.childNodes;    

    for(var ci=0 ; ci < childs.length; ci++){
        var c = childs[ci];
        
        if(c.className == "fSousMenu"){ 
            return c;
        }
    }    
    return null;
}

function survoleFST(obj){
    setOverTSMStyle(obj);
}
function quitteSurvolFST(obj){
    setNormalTSMStyle(obj);
}

function changeDisplay(obj){
    var sousMenu = findAssSubMenu(obj);
    
    if(sousMenu == null){        
        return;
    }

    
    if(sousMenu.style.display == "none"){
        sousMenu.style.display = "block";
        
        if( lastOpenedMenu != null && lastOpenedMenu != sousMenu && lastOpenedMenu.style.display != "none"){
            lastOpenedMenu.style.display = "none";
            setClosedTSMStyle(lastOpenedTitre);
        }
        lastOpenedMenu = sousMenu;        
        setOpenedTSMStyle(obj);
        lastOpenedTitre = obj;
    }        
    else{
        sousMenu.style.display = "none";   
        setClosedTSMStyle(obj);
    }
}


//////////////////////////////////
// MENU PRINCIPAL 
//////////////////////////////////

function survoleLi(li){    
    setOverLiStyle(li);
    if(modeClickControl == true)
        return;
    
    var sousMenu = findMDummy(li);
    if(sousMenu == null){        
        return;
    }
    //    alert("display = "+sousMenu.style.display);
    //    if(sousMenu.style.display == "none"){
    sousMenu.style.display = "block";        
    //    }     
}
function quitteSurvolLi(li){    
    setNormalLiStyle(li);
    if(modeClickControl == true)
        return;
    
    var sousMenu = findMDummy(li);
    
    if(sousMenu == null){        
        return;
    }
    sousMenu.style.display = "none"; 
}


function liClicked(){
    closeMenuWanted = false;
}

function tDummyClicked(tDummy){
    if(subMenuClicked==true)
        return;
    
    li = tDummy.parentNode;
    var sousMenu = findMDummy(li);
    
    if(sousMenu == null){        
        return;
    }
    
    if(modeClickControl == true){
        if(lastOpenedMDummy != sousMenu){
            lastOpenedMDummy.style.display = "none";
        }
    
        if(sousMenu.style.display == "none"){
            sousMenu.style.display = "block";
        }
        else{
            sousMenu.style.display = "none";
            modeClickControl = false;
        }
    }
    else
        modeClickControl = true;

    lastOpenedMDummy = sousMenu;
}

function docClicked(){
    if(subMenuClicked == true){
        subMenuClicked = false;
        closeMenuWanted = true;
        return;
    }
    
        // cas initial : astuce pas propre
        if(lastOpenedMDummy == null)
            return;
    else if(closeMenuWanted == true){
        lastOpenedMDummy.style.display = "none";
        modeClickControl = false;
    }
    else        
        closeMenuWanted = true;
}

// Sous menus


function initNav(){
    var menu = document.getElementById("navigationPrincipale");
    
    if(menu != null)
        hidePSubMenus(menu);
}

function hidePSubMenus(node){
    if(!node.hasChildNodes())
        return;
    
    var childs = node.childNodes;
    
    
    for(var ci=0 ; ci < childs.length; ci++){
        var c = childs[ci];
    
        if(c.className == "pSousMenu"){
            c.style.display = "none";
        }
        else{
            hidePSubMenus(c);
        }
    }
}

function survolePST(obj){
    setOverTSMStyle(obj);
}
function quitteSurvolPST(obj){
    setNormalTSMStyle(obj);
}

function changePSDisplay(obj){
    subMenuClicked = true;
    var sousMenu = findPSousMenu(obj);
    
    if(sousMenu == null){        
        return;
    }

    
    if(sousMenu.style.display == "none"){
        sousMenu.style.display = "block";
        
        if( lastOpenedPSMenu != null && lastOpenedPSMenu != sousMenu && lastOpenedPSMenu.style.display != "none"){
            lastOpenedPSMenu.style.display = "none";
        setClosedTSMStyle(lastOpenedTSMenu);
        }
        lastOpenedPSMenu = sousMenu;
        lastOpenedTSMenu = obj;
        setOpenedTSMStyle(obj);
    }        
    else{
        sousMenu.style.display = "none";
        setClosedTSMStyle(obj);
    }
}


/////////////////////////////////////////////
// RECHERCHE DANS L'ARBRE DU MENU PRINCIPAL 
/////////////////////////////////////////////

function findTDummy(li){     
    var childs = li.childNodes;    

    for(var ci=0 ; ci < childs.length; ci++){
        var c = childs[ci];
        
        if(c.className == "tDummy"){ 
            return c;
        }
    }    
    return null;
}

function findMDummy(li){     
    var childs = li.childNodes;    

    for(var ci=0 ; ci < childs.length; ci++){
        var c = childs[ci];
        
        if(c.className == "mDummy"){ 
            return c;
        }
    }    
    return null;
}

function findPSousMenu(titre){     
    var parent = titre.parentNode;
    var childs = parent.childNodes;    

    for(var ci=0 ; ci < childs.length; ci++){
        var c = childs[ci];
        
        if(c.className == "pSousMenu"){ 
            return c;
        }
    }    
    return null;
}


//////////////////////////////////
// STYLE DYNAMIQUE
//////////////////////////////////

function getImgURL(imgPath){
    return "url("+window.location.protocol+"//"+window.location.host+"/hattrick/img/"+imgPath+")";
}

function setCurPageStyle(a){
    a.style.backgroundImage = getImgURL("common/boutonMenu/cur_page.png");
}

function setOverLiStyle(li){ 
    var tDummy = findTDummy(li);
    tDummy.style.backgroundImage = getImgURL("common/bg/bg_nav_li_over.jpg");
//    tDummy.style.backgroundImage = 'url(img/test1.jpg)';
//    tDummy.style.backgroundRepeat = "repeat-y";
//    tDummy.style.backgroundPosition = "0 0";
    tDummy.style.color = "#ffcc00";
    
}
function setNormalLiStyle(li){
    var tDummy = findTDummy(li);
    tDummy.style.backgroundImage = getImgURL("common/bg/bg_nav_li.jpg");
//    tDummy.style.backgroundImage = 'url(img/test2.jpg)';
//    tDummy.style.backgroundRepeat = "repeat-y";
//    tDummy.style.backgroundPosition = "0 0";

    tDummy.style.color = "#fff";    
}

function setOverTSMStyle(tSM){    
    tSM.style.color = "#fdca00";
    tSM.style.backgroundColor = "#3ba23a";    
}

function setNormalTSMStyle(tSM){  
    tSM.style.color = "#fff";
    tSM.style.backgroundColor = "#1f951f";
}

function setClosedTSMStyle(tSM){
    tSM.style.backgroundImage = getImgURL("common/boutonMenu/down_nice.png");
    tSM.style.backgroundPosition = "right center";
    
    tSM.style.paddingLeft = "10px";
    tSM.style.paddingRight = "22px";
    tSM.style.color = "#fff";
}
function setOpenedTSMStyle(tSM){    
    tSM.style.backgroundImage = getImgURL("common/boutonMenu/down_nice_yellow.png");
    tSM.style.backgroundPosition = "left center";
    tSM.style.paddingLeft = "22px";
    tSM.style.paddingRight = "10px";
    tSM.style.color = "#ffcc00";
}