﻿var remember = false; //Remember menu states, and restore them on next visit.
var remember_Last = false; //Remember last (only one) menu state, and restore them on next visit.
var mark_current = true;  //  Mark current link and expands the submenu its in
var show_only_1 = true; //only open one submenu at a time
var menu, titles, submenus;
var heights = new Array();
var Cookiename = "_sdmenu"
var ExpirationDays = 30;
addLoadEvent = function(f) {
    var old = window.onload
    if (typeof old != 'function') window.onload = f
    else { window.onload = function() { old(); f() } }
}
addLoadEvent(init)

//if (remember) window.onunload = store;

function init() {

    menu = $("div.sdmenu").get(0);
    titles = $("div.sdmenu  span.title").get();
    submenus = $("div.sdmenu  div.submenu").get();

    //Hand out IDS to the ULS
    var MenuCount = 0;
    $("div.sdmenu  div.submenu ul").each(function() {

    $(this).attr("title", MenuCount);
        MenuCount++;
    })

    for (i = 0; i < Math.max(titles.length, submenus.length); i++) {
        titles[i].onclick = gomenu;
        heights[i] = submenus[i].offsetHeight;
        submenus[i].style.height = submenus[i].offsetHeight + "px";
        hidemenu(i);
    }
    if (mark_current)
        markCurrent();
    if (remember || remember_Last)
        restore();



}

function markCurrent() {

    $("a[href=" + window.location.pathname + "]").addClass("CurrentMenuItem");
    var current = $("div.submenu  li a.CurrentMenuItem").get();
    if (current[0]) {
        if (current[0].parentNode.nodeName == "LI") {
            var Currentparent = current[0].parentNode.parentNode;
            var sm = parseInt(Currentparent.title);
            showmenu(sm);
        } 
    }

}
function store() {
    var hidden = new Array();
    for (var i in titles) {
        if (titles[i].className == "title") {

            if (remember_Last) {
                putcookie(Cookiename, i, ExpirationDays);
            }
            else {
                //multiple
                hidden.push(i);
            }
        }
    }

    // multiple aktive
    if (!remember_Last) {
        putcookie(Cookiename, hidden.join(","), ExpirationDays);
    }


}

function restore() {
    if (getcookie(Cookiename) != null) {
        //one
        if (remember_Last) {
            showmenu(getcookie(Cookiename));
        }
        else {        //multiple
            var hidden = getcookie(Cookiename).split(",");
            if (hidden != '') {
                for (var i in hidden) {
                    showmenu(i);
                }

            }
        }


    }

}

function gomenu(e) {
    if (!e)
        var e = window.event;
    var ce = (e.target) ? e.target : e.srcElement;
    var sm;
    //get source element
    for (var i in titles) {
        if (titles[i] == ce)
            sm = i;
    }
    //height
    if (parseInt(submenus[sm].offsetHeight) > parseInt(heights[sm]) - 2) {
        hidemenu(sm);
    } else if (parseInt(submenus[sm].offsetHeight) < 2) {
        titles[sm].className = "title";
        showmenu(sm);

    }

}

function hidemenu(sm) {
    $(submenus[sm]).fadeTo("slow", 0.33).slideUp("fast");
    titles[sm].className = "titlehidden";
}

function showmenu(sm) {
    $(submenus[sm]).slideDown("fast").fadeTo("slow", 1);
    titles[sm].className = "title";
    if (show_only_1) {
        for (i = 0; i < Math.max(titles.length, submenus.length); i++) {
            if (i != sm) {
                hidemenu(i);
            }
        }
    }
    else {
        store();
    }

}



function putcookie(c_name, value, expiredays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate + "; path=/" + ";");
}

function getcookie(c_name) {
    if (document.cookie.length > 0) {
        var c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            var c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1)
                c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return null;
}



