/* 
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/ClientSide/javascript.js to edit this template
 */


document.addEventListener("DOMContentLoaded", startup, false);


function startup() {
    window.menuVisibility = false;
    startup2();
}

function startup2() {
    const hamburger = document.getElementById("hamburger");
    window.addEventListener('scroll', scrollFunction);
    /*var supportsPassive = false;
     try {
     var opts = Object.defineProperty({}, 'passive', {
     get: function() {
     supportsPassive = true;
     }
     });
     window.addEventListener("testPassive", null, opts);
     window.removeEventListener("testPassive", null, opts);
     } catch (e) {}
     */



    hamburger.addEventListener("touchstart", toggleMenu2, {passive: false});
    //console.log("add event");
    //alert("add event");
}
function toggleMenu2(evt) {
    evt.preventDefault();
    //console.log("toggleMenu2");
    toggleMenu();
}

function isRuleApplied(rule, element) {
    var elements = document.querySelectorAll(rule), i;
    for (i = 0; i < elements.length; i++) {
        if (elements[i] === element) {
            return true;
        }
    }
    return false;
}


function isMobile() {
    var x = document.getElementById("hamburger");
    //console.log(x.className);
    if (x.className.includes("on")) {
        //console.log("mobile");
        return true;
    }
    //console.log("not mobile");
    return false;
}

function showMenu(menuName, hamburger) {

    //console.log("showMenu");

    /* afiseaza toate submeniurile */
    //var row=table.rows[0];
    //var column=row.cells[0];
    //console.log("column:"+column);
    //var ul=column.childNodes[1];
    //console.log(ul);
    //row.style.visibility="collapse";
    menuName.className = "shown";
    hamburger.className = "new-menu on";
    for (let i = 1; i < 12; i += 2) {
        const name = "menu" + i.toString();
        //console.log(name);
        const q = document.getElementById(name);
        if (q !== null) {
            //if (q.className.includes("submenu")){
            //    q.className="shown submenu";
            //}
            //else{
            q.className = "shown";
            //}

        } else {
            //console.log(i+" null ");
        }
    }
    //console.log(table);
    const ul = menuName.querySelectorAll("a");
    for (var i = 0; i < ul.length; i++) {
        //console.log(ul[i]);
        const c = ul[i];
        if (c.className.includes("single")) {
            c.className = "single shown";
        } else {
            if (c.className.includes("submenu")) {
                c.className = "submenu shown";
            }
        }

    }

}

function hideMenu(table, m) {
    //console.log("hideMenu");
    table.className = "mobile";
    m.className = "new-menu";
    //alert("show");
    for (let i = 1; i < 12; i += 2) {
        const name = "menu" + i.toString();
        const q = document.getElementById(name);
        if (q !== null) {
            if (q.className.includes("submenu")) {
                q.className = "mobile submenu";
            } else {
                q.className = "mobile";
            }

        }
    }
    const lista = table.querySelectorAll("a");
    //console.log("Urmeaza lista:");
    //console.log(lista);
    for (var i = 0; i < lista.length; i++) {
        //console.log(ul[i]);
        const c = lista[i];
        if (c.className.includes("single")) {
            c.className = "single mobile";
        } else {
            if (c.className.includes("submenu")) {
                c.className = "submenu mobile";
            } else {
                c.className = "mobile";
            }
        }
    }
}

function toggleMenu() {
    //console.log("toggleMenu");
    //alert("change");
    var table = document.getElementById("new-menu");
    //console.log(table);
    var ham = document.getElementById("hamburger");
    //alert(m);
    //console.log(m);
    menuVisibility = !menuVisibility;
    if (menuVisibility === true) {
        showMenu(table, ham);
        //console.log(ul);

    } else {
        //var row=table.rows[0];
        //row.style.visibility="visible";
        hideMenu(table, ham);

    }
    //alert("exit");
}

function hideOtherSubmenu(but, toggler, defaultAction) {
    //var table = document.getElementById("new-menu");
    //console.log("hideOtherSubmenu");
    const currentToggler = document.getElementById(toggler);
    for (var i = 1; i < 15; i += 2) {
        var name = "menu" + i.toString();
        //console.log("Name:");
        //console.log("i="+i.toString());
        var q = document.getElementById(name);


        var t = document.getElementById("toggler" + i.toString());
        //console.log(toggler);
        if (t !== null) {
            if (t !== currentToggler) {
                t.className = "toggle-closed";
            }
        }


        if (q !== null) {
            if (name !== but) { //ascund submeniul
                //console.log(name+"!="+but);
                q.className = "submenu-content hidden";
                var list = q.getElementsByTagName("a");
                for (j = 0; j < list.length; j++) {
                    //console.log(ul[i]);
                    var c = list[j];
                    /*if (c.className.includes("single")) {
                     c.className = "single mobile";
                     } else {
                     if (c.className.includes("submenu")) {
                     c.className = "submenu mobile";
                     }
                     }*/
                    var nclass = c.className.replace("shown", "simple");
                    //console.log(nclass);
                    c.className = nclass;
                }

                /* list=q.getElementsByTagName("div");
                 
                 for (j=0; j<list.length; j++){
                 c=list[j];
                 console.log(c);
                 nclass="basic";
                 c.className=nclass;
                 
                 }*/
            } else { //afisez submeniul
                //console.log()
                if (defaultAction === "shown") {
                    q.className = "submenu-content shown";
                    //console.log("submenu-content shown");
                } else {
                    q.className = "submenu-content hidden";
                    //console.log("submenu-content hidden");
                }


                /*list=q.getElementsByTagName("div");
                 for (j=0; j<list.length; j++){
                 c=list[j];
                 nclass="shown";
                 c.className=nclass;
                 
                 }*/

            }
        } else {
            //console.log("q is null");
        }
        //m1.style.visibility="visible";
    }
}

function toggleSubMenu(m, toggler) {
    var t1 = document.getElementById(toggler);
    var whatToDo = "";
    if (t1.className === "toggle-closed") {
        t1.className = "toggle-open";
        whatToDo = "shown";
    } else {
        t1.className = "toggle-closed";
        whatToDo = "mobile";
    }
    var m1 = document.getElementById(m);
    if (m1 === null) {

    } else {
        switch (whatToDo) {
            case "mobile":
                m1.className = "submenu-content hidden";
                break;
            case "shown":
                m1.className = "submenu-content show";
                break;
        }
        var list = m1.getElementsByTagName("a");
        if (list !== null) {
            //console.log(list);
            for (var i = 0; i < list.length; i++) {
                //ul[i].style.visiblity="visible";
                //list[i].style.visibility = "visible";
                list[i].className = whatToDo;
                //console.log(list[i]);
            }
        } else {
            //console.log("list is null");
        }

        list = m1.childNodes;
        if (list !== null) {
            for (i = 0; i < list.length; i++) {
                //console.log(list[i]);
                //list[i].className=whatToDo;
                switch (whatToDo) {
                    case "shown":
                        list[i].className = "v shown";
                        break;
                    case "mobile":
                        list[i].className = "v";
                        break;
                }
            }
        }

        hideOtherSubmenu(m, toggler, whatToDo);

    }
}


function showSubMenu(m, toggler, new_value, caller) {
    let hb = document.getElementById("new-menu");
    let display = window.getComputedStyle(hb).getPropertyValue("display");
    if (display !== null && display === "block") {/*mobile*/
        if (caller === "onmouseover")
            return;
    }
    //console.log(m);
    var whatToDo = "";
    var m1 = document.getElementById(m); //numele meniului ex. meniu1
    var t1 = document.getElementById(toggler); //toggler-ul
    if (t1.className === "toggle-closed") {
        t1.className = "toggle-open";
        whatToDo = "shown";
        //console.log("toggler: "+toggler+" is now open");
        /*ul[0].className="shown standard";*/
    } else {
        t1.className = "toggle-closed";
        whatToDo = "mobile";
        //console.log("toggler: "+toggler+" is now closed");
        /*ul[0].className="mobile standard";*/
    }
    /* if the new_value is specified, override the toggle value*/
    //console.log(new_value);
    if (new_value === true) {
        whatToDo = "shown";
        t1.className = "toggle-open";
    }

    if (new_value === false) {
        whatToDo = "mobile";
        t1.className = "toggle-closed";
    }
    //console.log(m1);
    if (m1 === null) {
        //console.log("m1 is null");
    } else {
        //console.log(whatToDo);
        switch (whatToDo) {
            case "mobile":
                m1.className = "submenu-content hidden";
                break;
            case "shown":
                m1.className = "submenu-content show";
                break;
        }

        var list = m1.getElementsByTagName("a");
        if (list !== null) {
            //console.log(list);
            for (var i = 0; i < list.length; i++) {
                //ul[i].style.visiblity="visible";
                //list[i].style.visibility = "visible";
                list[i].className = whatToDo;
                //console.log(list[i]);
            }
        } else {
            //console.log("list is null");
        }

        list = m1.childNodes;
        if (list !== null) {
            for (i = 0; i < list.length; i++) {
                //console.log(list[i]);
                //list[i].className=whatToDo;
                switch (whatToDo) {
                    case "shown":
                        list[i].className = "v shown";
                        break;
                    case "mobile":
                        list[i].className = "v";
                        break;
                }
            }
        }

        hideOtherSubmenu(m, toggler, whatToDo);

    }
    /*for (var x=0;x<100;x++){
     var m1=document.getElementById("menu"+x);
     if (m1!==null){
     alert(m1+" is not null"); 
     if (m1===m){
     m1.style.visibility="visible";
     }
     else{
     m1.style.visibility="collapse";
     }
     }
     else{
     alert(m1+" is null");
     }
     }*/
}


function hideAllMenus() {
    if (isMobile()) {
        //console.log("is mobile");
        return;
    }
    //console.log("hide all menus");
    var v = document.querySelectorAll(".submenu-content");
    for (var x = 0; x < v.length; x++) {
        v[x].className = "submenu-content hidden";
    }
    v = document.querySelectorAll(".v");
    for (var x = 0; x < v.length; x++) {
        v[x].className = "v hidden";
    }

    v = document.querySelectorAll("a.shown");
    for (var x = 0; x < v.length; x++) {
        v[x].className = "mobile item";
    }

    for (var x = 3; x < 13; x += 1) {
        var q = document.getElementById("toggler" + x.toString());
        if (q !== null) {
            q.className = "toggle-closed";
        }

    }
}



function toggleLeftMenu() {
    var stanga = document.getElementById("left-menu").className;
    //console.log("stanga="+stanga);
    if (!stanga.includes("hidden")) {
        //console.log("ramura1 ");
        window.previousStyleLeftMenu = stanga;
        document.getElementById("left-menu").className = "left-menu hidden";
        var cl = document.getElementById("left").className;
        //console.log("cl="+cl);
        window.previousStyleLeft = cl;
        //console.log("previous style left ="+window.previousStyleLeft);
        //console.log("previous style left menu="+window.previousStyleLeftMenu);
        document.getElementById("left").className = "left";
        document.getElementById("toggleMenuButton").className = "maximize off";
        document.getElementById("right").style.width = "100%";
        var cl2 = document.getElementById("left-submenu");
        if (cl2 !== null) {
            window.previousStyleSubmenu = cl2.className;
            document.getElementById("left-submenu").className = cl2.className + " " + "hidden";
        }
    } else {
        //console.log("ramura2");
        document.getElementById("left-menu").className = window.previousStyleLeftMenu;
        document.getElementById("left").className = window.previousStyleLeft;
        document.getElementById("toggleMenuButton").className = "maximize on";
        /*document.getElementById("right").style.width = "521px";*/
        var cl2 = document.getElementById("left-submenu");
        if (cl2 !== null) {
            document.getElementById("left-submenu").className = window.previousStyleSubmenu;
        }
    }



}

function toggleHarta() {
    var divTree=document.getElementById("tree-container"), i;
    var divs=divTree.querySelectorAll("ul.ui-treenode-children");
    var st=window.getComputedStyle(divs[0],null).getPropertyValue("display");
    var leftContent=document.getElementById("left");
    var rightContent=document.getElementById("right");
    //console.log(st);
    if (st!=="block"){
        window.rightContent=rightContent.style.width;
        window.leftContent=document.getElementById("form:sitemap").style.width;
        //console.log(window.rightContent);
    }
    for (i=0;i<divs.length;i++){
        if (st==="block"){
            divs[i].style="display:none";
            
        }
        else{
            divs[i].style="";
            
        }
    }
    //console.log(st);
    if (st==="block"){
        leftContent.className="left-content";
        document.getElementById("form:sitemap").style.width=window.leftContent;
        rightContent.style.width=window.rightContent;
        //rightContent.style.width="auto";
    }
    else{
        leftContent.className="left";
        document.getElementById("form:sitemap").style.width="0px";
        rightContent.style.width="100%";
        //rightContent.style.width="100%";
    }
}

function search(ev){
    if (ev.keyCode === 13){
        console.log("enter");
    }
}

function navigateToTop(){
    document.body.scrollTop = document.documentElement.scrollTop = 0;
}



function scrollFunction(){
    const vertical = window.scrollY;    // Getting vertical scrollbar position of a div
    const horizontal = window.scrollX;    // Getting vertical scrollbar position of a div
    const menuHeight=48;
    /*let scrollHeight = Math.max(
    document.body.scrollHeight, document.documentElement.scrollHeight,
    document.body.offsetHeight, document.documentElement.offsetHeight,
    document.body.clientHeight, document.documentElement.clientHeight
    );*/
    const clientHeight=document.documentElement.clientHeight;
    //console.log('scrollHeight:'+scrollHeight+' scrollY:'+vertical+' offsetHeight:'+document.documentElement.offsetHeight+' clientHeight:'+document.documentElement.clientHeight);
    if (vertical!==0){
        document.getElementById("scrollnt").className="topn";
        if (vertical>=130 && clientHeight>=menuHeight*4){
            document.getElementById("header0").className="header0 fixed";
            document.getElementById("headera").className="headera1";
            //document.getElementById("scrolling").className="scrolling eliminat";
        }
        
    }
    else{
        document.getElementById("scrollnt").className="topn hidden";
        if (!(vertical>=130 && clientHeight>=menuHeight*4)){
            document.getElementById("header0").className="header0";
            document.getElementById("headera").className="headera";
            //document.getElementById("scrolling").className="scrolling";
            
        }
        
    }
};