String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

function swap_menu(element) {

    if (element.tagName.toLowerCase() == 'ul') {
        var listChilds = element.childNodes;
        for (var i = 0; i < listChilds.length; i++) {
            if ((listChilds.item(i).tagName == undefined) ||
                (listChilds.item(i).tagName == null) ||
                (listChilds.item(i).tagName.toLowerCase() != 'li'))
                continue;
            var entryChilds = listChilds.item(i).childNodes;
            listChilds.item(i).className = listChilds.item(i).className.replace('hover', '').trim();
            //si il y a 'current' parmis les class de l'item, alors on le laisse affich?
            var current_is_in = listChilds.item(i).className.indexOf('courrant');
            for (var j = 0; j < entryChilds.length; j++) {
                if ((entryChilds.item(j).tagName == undefined) ||
                    (entryChilds.item(j).tagName == null) ||
                    (entryChilds.item(j).tagName.toLowerCase() != 'ul') ||
                    (current_is_in > -1))
                    continue;
                entryChilds.item(j).style.display = 'none';
            }
        }
    }else if (element.tagName.toLowerCase() == 'li') {
        element.className = (element.className + ' hover').trim();
        var entryChilds = element.childNodes;
        element.parentNode.parentNode.blocked = true;
        for (var j = 0; j < entryChilds.length; j++) {
            if ((entryChilds.item(j).tagName == undefined) ||
                (entryChilds.item(j).tagName == null) ||
                (entryChilds.item(j).tagName.toLowerCase() != 'ul'))
                continue;
            entryChilds.item(j).style.display = 'block';
            if (element.blocked)
                element.blocked = false;
            /*else   
                swap_menu(entryChilds.item(j));*/
        }
    }
}

