var racineId = '';

window.document.onclick = function()
{
    if(racineId != '')
	cacheMenu(racineId);
}

window.onload = function()
{
    menuInit();
}


/*============================================================================================================================

================================================================================================================================*/



function getOffset(OFFSET_id) {
    var OFFSET_object = document.getElementById(OFFSET_id);
    var OFFSET_trueoffset = new Object;
    
    OFFSET_trueoffset.offLeft = OFFSET_object.offsetLeft;
    OFFSET_trueoffset.offTop = OFFSET_object.offsetTop;
    
    var origineObject = OFFSET_object;
    var reeloffset_x = 0;
    var reeloffset_y = 0;
    while (origineObject.offsetParent != null)
    {
    reeloffset_x += origineObject.offsetLeft;
    reeloffset_y += origineObject.offsetTop;
    origineObject = origineObject.offsetParent;
    }

    if(OFFSET_trueoffset.offLeft != reeloffset_x || OFFSET_trueoffset.offTop != reeloffset_y)
    {
        OFFSET_trueoffset.offLeft = reeloffset_x;
        OFFSET_trueoffset.offTop = reeloffset_y;
    }

    return OFFSET_trueoffset;
}

var openMenu = new Array();
var activeMenu = new Array();

function menuInit() {
    var liste_ul=document.getElementById("li_link_0").getElementsByTagName("ul");
    for (var i=0; i<liste_ul.length; i++) {
        var oneUl=liste_ul[i];
        
        if(oneUl.className == "list_link")
        {
            racineId = oneUl.id;
			break;
        }

    }
	
	var lien=document.getElementById("list_menu").getElementsByTagName("a");
    for (var i=0; i<lien.length; i++) {
        var s=lien[i];
        
        if(s.className == "link_tag")
        {
            s.onmouseover = new Function('cacheMenuByIdLien(this.id);');
        }

    }
}

function cacheMenuByIdLien(id_lien) {

    var reg = new  RegExp("[_]+", "g");
    var tableau = id_lien.split(reg);
    var id_cache = "list_link_" + tableau[2];
    cacheMenu(id_cache);
    
}

function cacheMenu(id_cache) {

    if(activeMenu[id_cache] != undefined)
    {
    document.getElementById(activeMenu[id_cache]).className = "link_tag_parent";
    delete activeMenu[id_cache];
    }
    
    if(openMenu[id_cache] != undefined)
    {
        cacheMenu(openMenu[id_cache]);
        document.getElementById(openMenu[id_cache]).style.display = "none";
        delete openMenu[id_cache];
    }
    
}

function sousMenu(id_lien, id_menuOuvrir)
{
    /*=====================================
    
    Traitement des donnees envoyees pour 
    recupere l'id du menu ouvrant
    exemple : link_tag_1_2 > creer > menu_1
    
    =====================================*/
    var reg = new  RegExp("[_]+", "g");
    var tableau = id_lien.split(reg);
    
    var id_menuOuvrant = "list_link_" + tableau[2];
    
    
    /*=====================================
    
    Celon les menus, on initialise
    la position des sous menu par rapport 
    au lien.
    
    =====================================*/
    
    if(id_menuOuvrant == racineId)
    {
    var position_x = "left";
    var position_y = "bottom";
    }
    else
    {
    var position_x = "right";
    var position_y = "top";
    }
    
    /*=====================================
    
    on cache les sous menu existant, puis 
    on enregistre  l'ouverture de ce menu
    pour pouvoir facilement leffacer a la fin
    
    =====================================*/
    
    cacheMenu(id_menuOuvrant);
    openMenu[id_menuOuvrant] = id_menuOuvrir;
    activeMenu[id_menuOuvrant] = id_lien;
    
    /*=====================================
    
    initialisation classique des variable
    
    =====================================*/
    
    var lien = document.getElementById(id_lien);
    var menu = document.getElementById(id_menuOuvrir);
    
    
    /*=====================================
    
    on apelle la fonction getOffset qui renvoie un objet
    avec deux variable contenant la position x et y 
    du lien clique
    
    =====================================*/
    
    var offsetLien = getOffset(id_lien)
    var positionMenuX = offsetLien.offLeft;
    var positionMenuY = offsetLien.offTop;
    
    /*=====================================
    
    celon les position demander on ajoute les valeurs
    
    =====================================*/
    
    if(position_x == "right")
    positionMenuX += lien.offsetWidth;
    
    if(position_y == "bottom")
    positionMenuY += lien.offsetHeight;
    
    /*=====================================
    
    Et hop on affiche tout ca!!!
    
    =====================================*/
    
    lien.className = "link_tag_parent_over";
    menu.style.top = positionMenuY + "px";
    menu.style.left = positionMenuX + "px";
    menu.style.display = "block";
}






//un peut d'ajax
function aRequest(fichier, id_recepteur, variables) {

    var httpRequest = false;
    if (window.XMLHttpRequest) 
    { 
        // Mozilla
        httpRequest = new XMLHttpRequest();
        if (httpRequest.overrideMimeType) 
        {
            httpRequest.overrideMimeType("text/xml");
        }
    }
    else if (window.ActiveXObject) 
    { 
        // IE
        try 
        {
            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) 
        {
            try 
            {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {}
        }
    }

    if (!httpRequest) 
    {
        alert("Abandon : Impossible de créer une instance XMLHTTP");
        return false;
    }
    
    
    httpRequest.onreadystatechange = function() { alertContents(httpRequest, id_recepteur); };
    httpRequest.open("POST", fichier, true);
    httpRequest.setRequestHeader('Content-type','application/x-www-form-urlencoded;');
    httpRequest.send(variables);
    
}

function alertContents(httpRequest, idDivReception) {
    
    if (httpRequest.readyState == 4) {
        if (httpRequest.status == 200) {
            
            document.getElementById(idDivReception).innerHTML = httpRequest.responseText;

            var lien = document.getElementById(idDivReception).getElementsByTagName("a");
            for (var i=0; i<lien.length; i++) {
                var s=lien[i];
                s.setAttribute("onFocus", "this.blur();");
            }
            
            var AllScripts = document.getElementById(idDivReception).getElementsByTagName("script");
            
            for (var i=0; i<AllScripts.length; i++) {
                var s=AllScripts[i];
                if (s.src && s.src!="") {
                    eval(getFileContent(s.src));
                }
                else {
                    eval(s.innerHTML);
                }
            }
                
        } else {
            alert("Un problème est survenu avec la requête.");
        }
    }
}
