﻿if (window["MM"] == undefined)
    var MM = {};

if (MM.Controls == undefined)
    MM.Controls = {};

MM.Controls.SideMenu = function(sectionId, menuId, vertical) {
    var menuIdSub = menuId + "_sub";
    var itmSel = "iSelected";
    var itmDes = "iDeselected";

    this.toggle = function() {
        if (this.parentNode.className.indexOf("open") == (-1)) {
            var elements = $(menuId).getElementsByTagName("ul");
            var elLength = elements.length;
            for (var i = 0; i < elLength; i++) {
                if (elements[i] != this.parentNode.parentNode) {
                    elements[i].style.display = "none";
                }
            }
            var items = $(menuId).getElementsByTagName("li");
            var itemsLength = items.length;
            for (var i = 0; i < itemsLength; i++) {
                if (this.parentNode.parentNode.parentNode != items[i]) {
                    items[i].className = items[i].className.replace(itmSel, itmDes);
                    items[i].className = items[i].className.replace("open", "");
                }
            }

            this.parentNode.className = this.parentNode.className.replace(itmDes, itmSel);

            var ulObj = this.parentNode.getElementsByTagName("ul")[0]
            if (ulObj != undefined) {
                if (vertical) {
                    this.parentNode.getElementsByTagName("ul")[0].style.display = "block";
                }
                else {
                    var div = $(menuIdSub);
                    if (!div) {
                        div = document.createElement('div');
                        div.setAttribute("id", menuIdSub);
                        div.setAttribute("class", "subMenu");
                        $(menuId).parentNode.appendChild(div);
                    }

                    html = "<ul>" + ulObj.innerHTML + "</ul>";
                    div.innerHTML = html;
                    div.style.display = "block";
                }
            } else {
                if (!vertical) {
                    var div = $(menuIdSub);
                    //Como el subMenu (horizontal) se inserta en un DIV debe actualizar su contenido
                    //para que se marque la última opción seleccionada.
                    if (div.style.display == "block") {
                        $(menuIdSub).innerHTML = "<ul>" + this.parentNode.parentNode.innerHTML + "</ul>";
                        div.style.display = "block";
                    }
                }

                if (this.internalClick != undefined)
                    this.internalClick();

                return true;
            }

            this.parentNode.className = this.parentNode.className + " open";
        } else {
            //Cuando el usuario presiona sobre un item anteriormente seleccionado
            this.parentNode.className = this.parentNode.className.replace(itmSel, itmDes);
            if (vertical)
                this.parentNode.getElementsByTagName("ul")[0].style.display = "none";
            else
                $(menuIdSub).style.display = "none";
            this.parentNode.className = this.parentNode.className.replace("open", "");
        }

        if (this.internalClick != undefined)
            this.internalClick();

        return false;
    };

    this.init = function() {
        var items = $(menuId).getElementsByTagName("a");
        var length = items.length;
        for (var i = 0; i < length; i++) {
            //Pone una referencia para que la siguiente página mantenga la selección si contiene el mismo menú.
            if (items[i].href.length >= 10 && items[i].href.substring(0, 10) != "javascript" && items[i].href.toLowerCase().indexOf("marketmonitor.aspx") != -1)
                items[i].href = MM.VCWUtils.Url.AddUrlParam(items[i].href, sectionId + "=" + i);

            //Quita la selección de todos los elementos
            items[i].parentNode.className += " " + itmDes;
            items[i].internalClick = items[i].onclick;

            if (items[i].onclick == undefined || items[i].parentNode.parentNode.parentNode.tagName == "DIV")
                items[i].onclick = this.toggle;

            if (items[i].parentNode.getElementsByTagName("ul").length > 0) {

                if (items[i].parentNode.className.indexOf("open") != (-1)) {
                    items[i].parentNode.getElementsByTagName("ul")[0].style.display = "block";
                }
            }
        }

        var elements = $(menuId).getElementsByTagName("ul");
        var elLength = elements.length;
        for (var i = 0; i < elLength; i++) {
            elements[i].style.display = "none";
        }
    };

    this.select = function(selected) {
        try {
            if (selected == -1)
                return;

            var items = $(menuId).getElementsByTagName("a");

            if (items.length <= selected)
                return;

            var item = items[selected];
            this.searchParent(item);
        }
        catch (e) {
        }
    };

    this.searchParent = function(item) {
        var parent = item.parentNode.parentNode.parentNode;
        if (parent.tagName == "LI") {
            this.searchParent(parent.getElementsByTagName("a")[0]);
            if (typeof item.onclick == 'function')
                item.onclick();
        }
        else {
            if (typeof item.onclick == 'function')
                item.onclick();
        }
    }
};
if (window["MM"]!=undefined) 
 MM.Ajax.JSLoader.JSLoaded("js/jsobjects/sidemenumethods.js");