/*======================================================================*\
|| #################################################################### ||
|| # vBulletin 3.8.7
|| # ---------------------------------------------------------------- # ||
|| # Copyright �2000-2011 vBulletin Solutions, Inc. All Rights Reserved. ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # http://www.vbulletin.com | http://www.vbulletin.com/license.html # ||
|| #################################################################### ||
\*======================================================================*/


vBulletin.add_event("vBmenuShow");
vBulletin.add_event("vBmenuHide");

function vB_Popup_Handler() {
    this.open_steps = 10;
    this.open_fade = false;
    this.active = false;
    this.menus = new Array();
    this.activemenu = null
}
vB_Popup_Handler.prototype.activate = function (A) {
    this.active = A;
    console.log("vBmenu :: System Activated")
};
vB_Popup_Handler.prototype.register = function (D, A, C) {
    this.menus[D] = new vB_Popup_Menu(D, A, C);
    var B = YAHOO.util.Dom.get("usercss");
    if (B && YAHOO.util.Dom.isAncestor(B, D)) {
        this.menus[D].imgsrc = IMGDIR_MISC + "/menu_open_usercss.gif"
    }
    this.menus[D].startup();
    return this.menus[D]
};
vB_Popup_Handler.prototype.hide = function () {
    if (this.activemenu != null) {
        this.menus[this.activemenu].hide()
    }
};
var vBmenu = new vB_Popup_Handler();

function vbmenu_hide(A) {
    if (A && A.button && A.button != 1 && A.type == "click") {
        return true
    } else {
        vBmenu.hide()
    }
}

function vB_Popup_Menu(C, A, B) {
    this.controlkey = C;
    this.noimage = A;
    this.noslide = B;
    this.menuname = this.controlkey.split(".")[0] + "_menu";
    
    if (Drupal.settings.IMGDIR_MISC) {
      IMGDIR_MISC = Drupal.settings.IMGDIR_MISC;
    }
    
    $('#' + C + ' a').attr('href', 'javascript:return false;');
    
    this.imgsrc = IMGDIR_MISC + "/menu_open.gif"
}
vB_Popup_Menu.prototype.startup = function () {
    this.init_control(this.noimage);
    if (fetch_object(this.menuname)) {
        this.init_menu()
    }
    this.slide_open = (this.noslide ? false : true);
    this.open_steps = vBmenu.open_steps;
    vBulletin.add_event("vBmenuShow_" + this.controlkey);
    vBulletin.add_event("vBmenuHide_" + this.controlkey)
};
vB_Popup_Menu.prototype.init_control = function (A) {
    this.controlobj = fetch_object(this.controlkey);
    this.controlobj.state = false;
    if (this.controlobj.firstChild && (this.controlobj.firstChild.tagName == "TEXTAREA" || this.controlobj.firstChild.tagName == "INPUT")) {} else {
        if (!A && !(is_mac && is_ie)) {
            var C = document.createTextNode(" ");
            this.controlobj.appendChild(C);
            var B = document.createElement("img");
            B.src = this.imgsrc;
            B.border = 0;
            B.title = "";
            B.alt = "";
            this.img = this.controlobj.appendChild(B)
        }
        this.controlobj.unselectable = true;
        if (!A) {
            this.controlobj.style.cursor = pointer_cursor
        }
        this.controlobj.onclick = vB_Popup_Events.prototype.controlobj_onclick;
        this.controlobj.onmouseover = vB_Popup_Events.prototype.controlobj_onmouseover
    }
};
vB_Popup_Menu.prototype.init_menu = function () {
    this.menuobj = fetch_object(this.menuname);
    this.select_handler = new vB_Select_Overlay_Handler(this.menuobj);
    if (this.menuobj && !this.menuobj.initialized) {
        this.menuobj.initialized = true;
        this.menuobj.onclick = e_by_gum;
        this.menuobj.style.position = "absolute";
        this.menuobj.style.zIndex = 50;
        if (is_ie && !is_mac) {
            if (YAHOO.env.ua.ie < 7) {
                this.menuobj.style.filter += "alpha(enabled=1,opacity=100)"
            } else {
                this.menuobj.style.minHeight = "1%"
            }
        }
        this.init_menu_contents()
    }
};
vB_Popup_Menu.prototype.init_menu_contents = function () {
    var E = new Array("td", "li");
    for (var D = 0; D < E.length; D++) {
        var H = fetch_tags(this.menuobj, E[D]);
        for (var F = 0; F < H.length; F++) {
            if (H[F].className == "vbmenu_option") {
                if (H[F].title && H[F].title == "nohilite") {
                    H[F].title = ""
                } else {
                    H[F].controlkey = this.controlkey;
                    H[F].onmouseover = vB_Popup_Events.prototype.menuoption_onmouseover;
                    H[F].onmouseout = vB_Popup_Events.prototype.menuoption_onmouseout;
                    var C = fetch_tags(H[F], "a");
                    if (C.length == 1) {
                        H[F].className = H[F].className + " vbmenu_option_alink";
                        H[F].islink = true;
                        var B = C[0];
                        var A = false;
                        H[F].target = B.getAttribute("target");
                        if (typeof B.onclick == "function") {
                            H[F].ofunc = B.onclick;
                            H[F].onclick = vB_Popup_Events.prototype.menuoption_onclick_function;
                            A = true
                        } else {
                            if (typeof H[F].onclick == "function") {
                                H[F].ofunc = H[F].onclick;
                                H[F].onclick = vB_Popup_Events.prototype.menuoption_onclick_function;
                                A = true
                            } else {
                                H[F].href = B.href;
                                H[F].onclick = vB_Popup_Events.prototype.menuoption_onclick_link
                            }
                        }
                        if (A) {
                            var G = document.createElement("a");
                            G.innerHTML = B.innerHTML;
                            G.href = "#";
                            G.onclick = function (I) {
                                I = I ? I : window.event;
                                I.returnValue = false;
                                return false
                            };
                            H[F].insertBefore(G, B);
                            H[F].removeChild(B)
                        }
                    } else {
                        if (typeof H[F].onclick == "function") {
                            H[F].ofunc = H[F].onclick;
                            H[F].onclick = vB_Popup_Events.prototype.menuoption_onclick_function
                        }
                    }
                }
            }
            if (H[F].title == "nohilite") {
                H[F].title = ""
            }
        }
    }
};
vB_Popup_Menu.prototype.show = function (B, A) {
    if (!vBmenu.active) {
        return false
    } else {
        if (!this.menuobj) {
            this.init_menu()
        }
    }
    if (!this.menuobj || vBmenu.activemenu == this.controlkey) {
        return false
    }
    console.log("vBmenu :: Show '%s'", this.controlkey);
    if (vBmenu.activemenu != null && vBmenu.activemenu != this.controlkey) {
        vBmenu.menus[vBmenu.activemenu].hide()
    }
    vBmenu.activemenu = this.controlkey;
    this.menuobj.style.display = "";
    if (this.slide_open) {
        this.menuobj.style.clip = "rect(auto, 0px, 0px, auto)"
    }
    this.set_menu_position(B);
    if (!A && this.slide_open) {
        this.intervalX = Math.ceil(this.menuobj.offsetWidth / this.open_steps);
        this.intervalY = Math.ceil(this.menuobj.offsetHeight / this.open_steps);
        this.slide((this.direction == "left" ? 0 : this.menuobj.offsetWidth), 0, 0)
    } else {
        if (this.menuobj.style.clip && this.slide_open) {
            this.menuobj.style.clip = "rect(auto, auto, auto, auto)"
        }
    }
    this.select_handler.hide();
    if (this.controlobj.editorid) {
        this.controlobj.state = true;
        vB_Editor[this.controlobj.editorid].menu_context(this.controlobj, "mousedown")
    }
    vBulletin.events["vBmenuShow_" + this.controlkey].fire(this.controlkey);
    vBulletin.events.vBmenuShow.fire(this.controlkey)
};
vB_Popup_Menu.prototype.set_menu_position = function (A) {
    this.pos = this.fetch_offset(A);
    this.leftpx = this.pos.left;
    this.toppx = this.pos.top + A.offsetHeight;
    if ((this.leftpx + this.menuobj.offsetWidth) >= document.body.clientWidth && (this.leftpx + A.offsetWidth - this.menuobj.offsetWidth) > 0) {
        this.leftpx = this.leftpx + A.offsetWidth - this.menuobj.offsetWidth;
        this.direction = "right"
    } else {
        this.direction = "left"
    }
    if (this.controlkey.match(/^pagenav\.\d+$/)) {
        A.appendChild(this.menuobj)
    }
    this.menuobj.style.left = this.leftpx + "px";
    this.menuobj.style.top = this.toppx + "px"
};
vB_Popup_Menu.prototype.hide = function (A) {
    if (A && A.button && A.button != 1) {
        return true
    }
    console.log("vBmenu :: Hide '%s'", this.controlkey);
    this.stop_slide();
    this.menuobj.style.display = "none";
    this.select_handler.show();
    if (this.controlobj.editorid) {
        this.controlobj.state = false;
        vB_Editor[this.controlobj.editorid].menu_context(this.controlobj, "mouseout")
    }
    vBmenu.activemenu = null;
    vBulletin.events["vBmenuHide_" + this.controlkey].fire(this.controlkey);
    vBulletin.events.vBmenuHide.fire(this.controlkey)
};
vB_Popup_Menu.prototype.hover = function (A) {
    if (vBmenu.activemenu != null) {
        if (vBmenu.menus[vBmenu.activemenu].controlkey != this.id) {
            this.show(A, true)
        }
    }
};
vB_Popup_Menu.prototype.slide = function (C, B, A) {
    if (this.direction == "left" && (C < this.menuobj.offsetWidth || B < this.menuobj.offsetHeight)) {
        C += this.intervalX;
        B += this.intervalY;
        this.menuobj.style.clip = "rect(auto, " + C + "px, " + B + "px, auto)";
        this.slidetimer = setTimeout("vBmenu.menus[vBmenu.activemenu].slide(" + C + ", " + B + ", " + A + ");", 0)
    } else {
        if (this.direction == "right" && (C > 0 || B < this.menuobj.offsetHeight)) {
            C -= this.intervalX;
            B += this.intervalY;
            this.menuobj.style.clip = "rect(auto, " + this.menuobj.offsetWidth + "px, " + B + "px, " + C + "px)";
            this.slidetimer = setTimeout("vBmenu.menus[vBmenu.activemenu].slide(" + C + ", " + B + ", " + A + ");", 0)
        } else {
            this.stop_slide()
        }
    }
};
vB_Popup_Menu.prototype.stop_slide = function () {
    clearTimeout(this.slidetimer);
    this.menuobj.style.clip = "rect(auto, auto, auto, auto)"
};
vB_Popup_Menu.prototype.fetch_offset = function (E) {
    if (E.getBoundingClientRect) {
        var C = E.getBoundingClientRect();
        var D = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
        var F = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
        if (document.documentElement.dir == "rtl") {
            F = F + document.documentElement.clientWidth - document.documentElement.scrollWidth
        }
        return {
            left: C.left + F,
            top: C.top + D
        }
    }
    var B = E.offsetLeft;
    var A = E.offsetTop;
    while ((E = E.offsetParent) != null) {
        B += E.offsetLeft;
        A += E.offsetTop
    }
    return {
        left: B,
        top: A
    }
};

function vB_Popup_Events() {}
vB_Popup_Events.prototype.controlobj_onclick = function (A) {
    if (typeof do_an_e == "function") {
        if (vBmenu.activemenu == null || vBmenu.menus[vBmenu.activemenu].controlkey != this.id) {
            vBmenu.menus[this.id].show(this)
        } else {
            vBmenu.menus[this.id].hide()
        }
    }
};
vB_Popup_Events.prototype.controlobj_onmouseover = function (A) {
    if (typeof do_an_e == "function") {
        do_an_e(A);
        vBmenu.menus[this.id].hover(this)
    }
};
vB_Popup_Events.prototype.menuoption_onclick_function = function (A) {
    this.ofunc(A);
    vBmenu.menus[this.controlkey].hide()
};
vB_Popup_Events.prototype.menuoption_onclick_link = function (A) {
    A = A ? A : window.event;
    A.cancelBubble = true;
    if (A.stopPropagation) {
        A.stopPropagation()
    }
    if (A.preventDefault) {
        A.preventDefault()
    }
    if (A.shiftKey || (this.target != null && this.target != "" && this.target.toLowerCase() != "_self")) {
        if (this.target != null && this.target.charAt(0) != "_") {
            window.open(this.href, this.target)
        } else {
            window.open(this.href)
        }
    } else {
        window.location = this.href
    }
    vBmenu.menus[this.controlkey].hide();
    return false
};
vB_Popup_Events.prototype.menuoption_onmouseover = function (A) {
    this.className = "vbmenu_hilite" + (this.islink ? " vbmenu_hilite_alink" : "");
    this.style.cursor = pointer_cursor
};
vB_Popup_Events.prototype.menuoption_onmouseout = function (A) {
    this.className = "vbmenu_option" + (this.islink ? " vbmenu_option_alink" : "");
    this.style.cursor = "default"
};
