﻿/**************************************************** MAIN CLASSIFICATION MENU *****************************************************/
var menu_state = false;
var menu_cache = new Object();
var menu_timeoutid = null;
var menu_id = null;
var menu_event = null;
var menu_el = null;
var menu_prevel = null;
var menu_service = null;


function menu_show(el, id) {
    // Clear mouse move event to preserve CPU usage
    document.body.onmousemove = null;

    // Cancel an existing queued hide or show events
    if (menu_timeoutid) {
        clearTimeout(menu_timeoutid);
    }

    // Store current page and element
    menu_id = id;
    menu_el = el;
    
    // Call delayed menu show
    menu_timeoutid = setTimeout(menu_showContent, 400);
}

function menu_hide(e) {
    // Cancel an existing queued hide or show events
    if (menu_timeoutid) {
        clearTimeout(menu_timeoutid);
    }

    // Create mouse move event so we know if the user is still
    // hovering the menu so we cancel any close events
    document.body.onmousemove = function(e) { menu_event = e; };
    
    // Call delayed close
    menu_timeoutid = setTimeout(menu_hideContent, 400);
}

function menu_persist() {
    // Cancel an existing queued hide or show events
    if (menu_timeoutid) {
        clearTimeout(menu_timeoutid);
    }
}

function menu_showContent() {
    // Toggle active css class for selected element
    if (menu_el) menu_el.className = "menu_li_active";
    if (menu_prevel && menu_el != menu_prevel) menu_prevel.className = "menu_li";
    menu_prevel = menu_el;

    // Display floating menu content
    var menu_c = $get("menu_c");
    if (!menu_c) return;
    menu_c.style.display = "";

    // Set main category title
    var title = $get("menu_c_tp");
    var link = $get("menu_c_tpa");
    title.innerHTML = menu_el.innerHTML;
    link.href = $("#menu_c_tp > a").attr("href");

    // Get menu content
    var menu_c = $get("menu_c_c");

    if (!menu_customerid) menu_customerid = "";
    if (!menu_roles) menu_roles = "";
    if (!menu_actions) menu_actions = "";
    if (!menu_pricelists) menu_pricelists = "";
    if (!menu_minartciles) menu_minartciles = "";

    // Check if content is available in client cache
    if (menu_id && menu_cache[menu_id] != null) {
        menu_c.innerHTML = menu_cache[menu_id]; return;
    } else {
        // Clear existing content
        menu_c.innerHTML = "";

        // Get content before actuqaly displaying the floating menu
        // this is called "data preloading", so the data should be already
        // waiting
        menu_service = Sys.Net.WebServiceProxy.invoke('/Services/Public.asmx', 'AjaxCallShort', false,
            {
                fullTypeAndMethodPath: 'PageMenu.PageMenu.GetSubPagesExtended',
                args: new Array(menu_id, 2, 4, "Index", true, null, menu_customerid, menu_roles, menu_actions, menu_pricelists, menu_minartciles, true)
            },
            menu_contentLoaded,
            menu_contentError,
            menu_id, 2000);
    }
}

function menu_contentLoaded(result, id) {
    var result = Sys.Serialization.JavaScriptSerializer.deserialize(result, true);

    // Get menu
    var menu_c = $get("menu_c_c");
    var divCont = null;
    var count = 0;

    var table = document.createElement("TABLE");
    table.style.width = "100%";
    var tbody = document.createElement("TBODY");
    var tr = document.createElement("TR");
    tr.vAlign = "top";
    var tdl = document.createElement("TD");
    tdl.style.width = "50%";
    var tdr = document.createElement("TD");
    tdr.style.width = "50%";
    table.appendChild(tbody);
    tbody.appendChild(tr);
    tr.appendChild(tdl);
    tr.appendChild(tdr);
    
    // Loop trough sub pages
    for (var i = 0; i < result.pages.length; i++) {
        var item = document.createElement("a");
        
        // Create menu item by page level
        if (result.pages[i].level == 3) {
            divCont = document.createElement("div");
            divCont.className = "menu_itemcontainer";
            item.className = "menu_sublink";
            item.href = "/" + result.pages[i].path;
            if (count % 2 == 0) tdl.appendChild(divCont);
            else tdr.appendChild(divCont);
            count++;
        } else {
            item.className = "menu_subsublink";
            item.href = "/" + result.pages[i].path;
        }

        // Append menu item to menu content
        item.innerHTML += result.pages[i].title;
        divCont.appendChild(item);
    }

    menu_c.appendChild(table);
    
    // Cache menu content
    menu_cache[id] = menu_c.innerHTML; 
    menu_service = null;
}

function menu_contentError() {
    // Do nothing, this function is requiered or
    // a js error is thrown... yes, mr. MS :)
}

function menu_hideContent() {
    // Clear mouse move event to preserve CPU usage
    document.body.onmousemove = null;

    // Toggle css class
    if (menu_el) menu_el.className = "menu_li";
    if (menu_prevel) menu_prevel.className = "menu_li";
    
    // Get menu
    var menu = $get("menu");
    var menu_c = $get("menu_c");

    // Check if user is still hovering over the menu, then cancel the close event
    if (Utils.isHit(menu_event, menu) || Utils.isHit(menu_event, menu_c)) return;
    
    // Hide floating menu
    menu_c.style.display = "none";
    menu_event = null;
}
/**************************************************** MAIN CLASSIFICATION MENU *****************************************************/

/************************************************ LEVEL 1 + 2 CLASSIFICATION MENU **************************************************/
var menu1_cache = new Object();
var menu1_service = null;
function menu1_showContent(el, pageid) {
    // Get html container
    var div = $get("menu" + pageid);
    if (!div) return;

    // Check if content is available in client cache
    if (menu1_cache[pageid] != null) {
        div.innerHTML = menu1_cache[pageid]; return;
    } else {
        // Get content before actuqaly displaying the floating menu
        // this is called "data preloading", so the data should be already
        // waiting
        menu1_service = Sys.Net.WebServiceProxy.invoke('/Services/Public.asmx', 'AjaxCallShort', false,
            {
                fullTypeAndMethodPath: 'PageMenu.PageMenu.GetSubPages',
                args: new Array(pageid, 4, "Index", true, null)
            },
            menu1_contentLoaded,
            menu1_contentError,
            pageid, 2000);
    }
}
function menu1_contentLoaded(result, id) {
    var result = Sys.Serialization.JavaScriptSerializer.deserialize(result, true);

    // Reset html
    var div = $get("menu" + id);
    if (!div) return;
    div.innerHTML = "";

    // Hide show all link
    var a = $get("menusa" + id);
    a.parentNode.removeChild(a);

    for (var i = 0; i < result.pages.length; i++) {
        var item = document.createElement("a");
        item.innerHTML = result.pages[i].title;
        item.href = "/" + result.pages[i].path;
        item.className = "Menu1_subitem";
        div.appendChild(item);
    }
}
function menu1_contentError() {
    // Do nothing, this function is requiered or
    // a js error is thrown... yes, mr. MS :)
}
/************************************************ LEVEL 1 + 2 CLASSIFICATION MENU **************************************************/

/*********************************************************** HEAD POPUP ************************************************************/
var head_poup = false;
document.body.onclick = function(e) { if (e) head_popHide(e); else head_popHide(window.event); };

function head_poupRegister() {
    head_poup = true;
    $("#popLogin").fadeOut(0);
    $("#popRegister").slideDown(200);

    $(".Head_Middle_User_Login_hover").addClass("Head_Middle_User_Login");
    $(".Head_Middle_User_Login_hover").removeClass("Head_Middle_User_Login_hover");
    
    $(".Head_Middle_User_Register").addClass("Head_Middle_User_Register_hover");
    $(".Head_Middle_User_Register").removeClass("Head_Middle_User_Register");
}
function head_poupLogin() {
    head_poup = true;
    $("#popRegister").fadeOut(0);
    $("#popLogin").slideDown(200);

    $(".Head_Middle_User_Register_hover").addClass("Head_Middle_User_Register");
    $(".Head_Middle_User_Register_hover").removeClass("Head_Middle_User_Register_hover");
    
    $(".Head_Middle_User_Login").addClass("Head_Middle_User_Login_hover");
    $(".Head_Middle_User_Login").removeClass("Head_Middle_User_Login");
}
function head_popHide(e) {
    head_poup = false;
    if (e && (Utils.isHit(e, $get("popLogin")) || Utils.isHit(e, $get("popRegister")))) return;
    menu_t = setTimeout("head_popHided()", 400);
}
function head_popHided() {
    if (head_poup) return;
    $("#popLogin").fadeOut(100);
    $("#popRegister").fadeOut(100);
    
    $(".Head_Middle_User_Login_hover").addClass("Head_Middle_User_Login");
    $(".Head_Middle_User_Login_hover").removeClass("Head_Middle_User_Login_hover");
    
    $(".Head_Middle_User_Register_hover").addClass("Head_Middle_User_Register");
    $(".Head_Middle_User_Register_hover").removeClass("Head_Middle_User_Register_hover");
}
/*********************************************************** HEAD POPUP ************************************************************/