/**
 * menuMatic 
 * @version 0.68.3 (beta)
 * @author Jason J. Jaeger | greengeckodesign.com
 * @copyright 2008 Jason John Jaeger
 
 **/
var MenuMatic = new Class({
    Implements: Options,
    options: {
        id: "nav",
        subMenusContainerId: "subMenusContainer",
        effect: "slide & fade",
        duration: 600,
        physics: Fx.Transitions.Pow.easeOut,
        hideDelay: 1000,
        stretchMainMenu: false,
        matchWidthMode: false,
        orientation: "horizontal",
        direction: {
            x: "right",
            y: "down"
        },
        tweakInitial: {
            x: 0,
            y: 0
        },
        tweakSubsequent: {
            x: 0,
            y: 0
        },
        center: false,
        opacity: 95,
        mmbFocusedClassName: null,
        mmbClassName: null,
        killDivider: null,
        fixHasLayoutBug: false,
        onHideAllSubMenusNow_begin: (function() {}),
        onHideAllSubMenusNow_complete: (function() {}),
        onInit_begin: (function() {}),
        onInit_complete: (function() {})
    },
    hideAllMenusTimeout: null,
    allSubMenus: [],
    subMenuZindex: 1,
    initialize: function(B) {
        this.setOptions(B);
        this.options.onInit_begin();
        if (this.options.opacity > 99) {
            this.options.opacity = 99.9
        }
        this.options.opacity = this.options.opacity / 100;
        Element.implement({
            getId: function() {
                if (!this.id) {
                    var E = this.get("tag") + "-" + $time();
                    while (DNN370(E)) {
                        E = this.get("tag") + "-" + $time()
                    }
                    this.id = E
                }
                return this.id
            }
        });
        this.options.direction.x = this.options.direction.x.toLowerCase();
        this.options.direction.y = this.options.direction.y.toLowerCase();
        if (this.options.direction.x === "right") {
            this.options.direction.xInverse = "left"
        } else {
            if (this.options.direction.x === "left") {
                this.options.direction.xInverse = "right"
            }
        }
        if (this.options.direction.y === "up") {
            this.options.direction.yInverse = "down"
        } else {
            if (this.options.direction.y === "down") {
                this.options.direction.yInverse = "up"
            }
        }
        var A = DNN370(this.options.id).getElements("a");
        A.each(function(F, E) {
            F.store("parentLinks", F.getParent().getParents("li").getFirst("a"));
            F.store("parentLinks", F.retrieve("parentLinks").erase(F.retrieve("parentLinks").getFirst()));
            F.store("childMenu", F.getNext("ul") || F.getNext("ol"));
            theSubMenuType = "subsequent";
            if (DNN370(F.getParent("ul") || F.getParent("ol")).id === this.options.id) {
                theSubMenuType = "initial"
            }
            F.store("subMenuType", theSubMenuType);
            if (theSubMenuType === "initial" && DNN370(F.getNext("ul") || F.getNext("ol"))) {
                F.addClass("mainMenuParentBtn")
            } else {
                if (DNN370(F.getNext("ul") || F.getNext("ol"))) {
                    F.addClass("subMenuParentBtn")
                }
            }
        }.bind(this));
        var D = new Element("div", {
            id: this.options.subMenusContainerId
        }).inject(DNN370(document.body), "bottom");
        DNN370(this.options.id).getElements("ul, ol").each(function(F, E) {
            new Element("div", {
                "class": "smOW"
            }).inject(D).grab(F)
        }.bind(this));
        D.getElements("a").set("tabindex", "-1");
        A.each(function(G, E) {
            if (!G.retrieve("childMenu")) {
                return
            }
            G.store("childMenu", G.retrieve("childMenu").getParent("div"));
            this.allSubMenus.include(G.retrieve("childMenu"));
            G.store("parentSubMenus", G.retrieve("parentLinks").retrieve("childMenu"));
            var F = new MenuMaticSubMenu(this.options, this, G)
        }.bind(this));
        var C = DNN370(this.options.id).getElements("a").filter(function(F, E) {
            return ! F.retrieve("childMenu")
        });
        C.each(function(F, E) {
            F.addEvents({
                mouseenter: function(G) {
                    this.hideAllSubMenusNow();
                    if (this.options.mmbClassName && this.options.mmbFocusedClassName) {
                        DNN370(F).retrieve("btnMorph", new Fx.Morph(F, {
                            duration: (this.options.duration / 2),
                            transition: this.options.physics,
                            link: "cancel"
                        })).start(this.options.mmbFocusedClassName)
                    }
                }.bind(this),
                focus: function(G) {
                    this.hideAllSubMenusNow();
                    if (this.options.mmbClassName && this.options.mmbFocusedClassName) {
                        DNN370(F).retrieve("btnMorph", new Fx.Morph(F, {
                            duration: (this.options.duration / 2),
                            transition: this.options.physics,
                            link: "cancel"
                        })).start(this.options.mmbFocusedClassName)
                    }
                }.bind(this),
                mouseleave: function(G) {
                    if (this.options.mmbClassName && this.options.mmbFocusedClassName) {
                        DNN370(F).retrieve("btnMorph", new Fx.Morph(F, {
                            duration: (this.options.duration * 5),
                            transition: this.options.physics,
                            link: "cancel"
                        })).start(this.options.mmbClassName)
                    }
                }.bind(this),
                blur: function(G) {
                    if (this.options.mmbClassName && this.options.mmbFocusedClassName) {
                        DNN370(F).retrieve("btnMorph", new Fx.Morph(F, {
                            duration: (this.options.duration * 5),
                            transition: this.options.physics,
                            link: "cancel"
                        })).start(this.options.mmbClassName)
                    }
                }.bind(this),
                keydown: function(H) {
                    var G = new Event(H);
                    if (H.key === "up" || H.key === "down" || H.key === "left" || H.key === "right") {
                        H.stop()
                    }
                    if (H.key === "left" && this.options.orientation === "horizontal" || H.key === "up" && this.options.orientation === "vertical") {
                        if (F.getParent("li").getPrevious("li")) {
                            F.getParent("li").getPrevious("li").getFirst("a").focus()
                        } else {
                            F.getParent("li").getParent().getLast("li").getFirst("a").focus()
                        }
                    } else {
                        if (H.key === "right" && this.options.orientation === "horizontal" || H.key === "down" && this.options.orientation === "vertical") {
                            if (F.getParent("li").getNext("li")) {
                                F.getParent("li").getNext("li").getFirst("a").focus()
                            } else {
                                F.getParent("li").getParent().getFirst("li").getFirst("a").focus()
                            }
                        }
                    }
                }.bind(this)
            })
        },
        this);
        this.stretch();
        this.killDivider();
        this.center();
        this.fixHasLayoutBug();
        this.options.onInit_complete()
    },
    fixHasLayoutBug: function() {
        if (Browser.Engine.trident && this.options.fixHasLayoutBug) {
            DNN370(this.options.id).getParents().setStyle("zoom", 1);
            DNN370(this.options.id).setStyle("zoom", 1);
            DNN370(this.options.id).getChildren().setStyle("zoom", 1);
            DNN370(this.options.subMenusContainerId).setStyle("zoom", 1);
            DNN370(this.options.subMenusContainerId).getChildren().setStyle("zoom", 1)
        }
    },
    center: function() {
        if (!this.options.center) {
            return
        }
        DNN370(this.options.id).setStyles({
            left: "50%",
            "margin-left": -(DNN370(this.options.id).getSize().x / 2)
        })
    },
    stretch: function() {
        if (this.options.stretchMainMenu && this.options.orientation === "horizontal") {
            var C = parseFloat(DNN370(this.options.id).getCoordinates().width);
            var D = 0;
            var B = DNN370(this.options.id).getElements("a");
            B.setStyles({
                "padding-left": 0,
                "padding-right": 0
            });
            B.each(function(F, E) {
                D += F.getSize().x
            }.bind(this));
            if (C < D) {
                return
            }
            var A = (C - D) / B.length;
            B.each(function(F, E) {
                F.setStyle("width", F.getSize().x + A)
            }.bind(this));
            B.getLast().setStyle("width", B.getLast().getSize().x - 1)
        }
    },
    killDivider: function() {
        if (this.options.killDivider && this.options.killDivider.toLowerCase() === "first") {
            DNN370(DNN370(this.options.id).getElements("li")[0]).setStyles({
                background: "none"
            })
        } else {
            if (this.options.killDivider && this.options.killDivider.toLowerCase() === "last") {
                DNN370(DNN370(this.options.id).getElements("li").getLast()).setStyles({
                    background: "none"
                })
            }
        }
    },
    hideAllSubMenusNow: function() {
        this.options.onHideAllSubMenusNow_begin();
        $clear(this.hideAllMenusTimeout);
        DNN360(this.allSubMenus).fireEvent("hide");
        this.options.onHideAllSubMenusNow_complete()
    }
});
var MenuMaticSubMenu = new Class({
    Implements: Options,
    Extends: MenuMatic,
    options: {
        onSubMenuInit_begin: (function(A) {}),
        onSubMenuInit_complete: (function(A) {}),
        onMatchWidth_begin: (function(A) {}),
        onMatchWidth_complete: (function(A) {}),
        onHideSubMenu_begin: (function(A) {}),
        onHideSubMenu_complete: (function(A) {}),
        onHideOtherSubMenus_begin: (function(A) {}),
        onHideOtherSubMenus_complete: (function(A) {}),
        onHideAllSubMenus_begin: (function(A) {}),
        onHideAllSubMenus_complete: (function(A) {}),
        onPositionSubMenu_begin: (function(A) {}),
        onPositionSubMenu_complete: (function(A) {}),
        onShowSubMenu_begin: (function(A) {}),
        onShowSubMenu_complete: (function(A) {})
    },
    root: null,
    btn: null,
    hidden: true,
    myEffect: null,
    initialize: function(B, A, C) {
        this.setOptions(B);
        this.root = A;
        this.btn = C;
        this.childMenu = this.btn.retrieve("childMenu");
        this.subMenuType = this.btn.retrieve("subMenuType");
        this.childMenu = this.btn.retrieve("childMenu");
        this.parentSubMenus = DNN360(this.btn.retrieve("parentSubMenus"));
        this.parentLinks = DNN360(this.btn.retrieve("parentLinks"));
        this.parentSubMenu = DNN370(this.parentSubMenus[0]);
        if (this.parentSubMenu) {
            this.parentSubMenu = this.parentSubMenu.retrieve("class")
        }
        this.childMenu.store("class", this);
        this.btn.store("class", this);
        this.childMenu.store("status", "closed");
        this.options.onSubMenuInit_begin(this);
        this.childMenu.addEvent("hide", function() {
            this.hideSubMenu()
        }.bind(this));
        this.childMenu.addEvent("show", function() {
            this.showSubMenu()
        }.bind(this));
        if (this.options.effect) {
            this.myEffect = new Fx.Morph(DNN370(this.childMenu).getFirst(), {
                duration: this.options.duration,
                transition: this.options.physics,
                link: "cancel"
            })
        }
        if (this.options.effect === "slide" || this.options.effect === "slide & fade") {
            if (this.subMenuType == "initial" && this.options.orientation === "horizontal") {
                this.childMenu.getFirst().setStyle("margin-top", "0")
            } else {
                this.childMenu.getFirst().setStyle("margin-left", "0")
            }
        } else {
            if (this.options.effect === "fade" || this.options.effect === "slide & fade") {
                this.childMenu.getFirst().setStyle("opacity", 0)
            }
        }
        if (this.options.effect != "fade" && this.options.effect != "slide & fade") {
            this.childMenu.getFirst().setStyle("opacity", this.options.opacity)
        }
        var D = DNN370(this.childMenu).getElements("a").filter(function(F, E) {
            return ! F.retrieve("childMenu")
        });
        D.each(function(F, E) {
            DNN370(F).addClass("subMenuBtn");
            F.addEvents({
                mouseenter: function(G) {
                    this.childMenu.fireEvent("show");
                    this.cancellHideAllSubMenus();
                    this.hideOtherSubMenus()
                }.bind(this),
                focus: function(G) {
                    this.childMenu.fireEvent("show");
                    this.cancellHideAllSubMenus();
                    this.hideOtherSubMenus()
                }.bind(this),
                mouseleave: function(G) {
                    this.cancellHideAllSubMenus();
                    this.hideAllSubMenus()
                }.bind(this),
                blur: function(G) {
                    this.cancellHideAllSubMenus();
                    this.hideAllSubMenus()
                }.bind(this),
                keydown: function(H) {
                    var G = new Event(H);
                    if (H.key === "up" || H.key === "down" || H.key === "left" || H.key === "right" || H.key === "tab") {
                        H.stop()
                    }
                    if (H.key === "up") {
                        if (F.getParent("li").getPrevious("li")) {
                            F.getParent("li").getPrevious("li").getFirst("a").focus()
                        } else {
                            if (this.options.direction.y === "down") {
                                this.btn.focus()
                            } else {
                                if (this.options.direction.y === "up") {
                                    F.getParent("li").getParent().getLast("li").getFirst("a").focus()
                                }
                            }
                        }
                    } else {
                        if (H.key === "down") {
                            if (F.getParent("li").getNext("li")) {
                                F.getParent("li").getNext("li").getFirst("a").focus()
                            } else {
                                if (this.options.direction.y === "down") {
                                    F.getParent("li").getParent().getFirst("li").getFirst("a").focus()
                                } else {
                                    if (this.options.direction.y === "up") {
                                        this.btn.focus()
                                    }
                                }
                            }
                        } else {
                            if (H.key === this.options.direction.xInverse) {
                                this.btn.focus()
                            }
                        }
                    }
                }.bind(this)
            })
        },
        this);
        DNN370(this.btn).removeClass("subMenuBtn");
        if (this.subMenuType == "initial") {
            this.btn.addClass("mainParentBtn")
        } else {
            this.btn.addClass("subParentBtn")
        }
        DNN370(this.btn).addEvents({
            mouseenter: function(E) {
                this.cancellHideAllSubMenus();
                this.hideOtherSubMenus();
                this.showSubMenu();
                if (this.subMenuType === "initial" && this.options.mmbClassName && this.options.mmbFocusedClassName) {
                    DNN370(this.btn).retrieve("btnMorph", new Fx.Morph(DNN370(this.btn), {
                        duration: (this.options.duration / 2),
                        transition: this.options.physics,
                        link: "cancel"
                    })).start(this.options.mmbFocusedClassName)
                }
            }.bind(this),
            focus: function(E) {
                this.cancellHideAllSubMenus();
                this.hideOtherSubMenus();
                this.showSubMenu();
                if (this.subMenuType === "initial" && this.options.mmbClassName && this.options.mmbFocusedClassName) {
                    DNN370(this.btn).retrieve("btnMorph", new Fx.Morph(DNN370(this.btn), {
                        duration: (this.options.duration / 2),
                        transition: this.options.physics,
                        link: "cancel"
                    })).start(this.options.mmbFocusedClassName)
                }
            }.bind(this),
            mouseleave: function(E) {
                this.cancellHideAllSubMenus();
                this.hideAllSubMenus()
            }.bind(this),
            blur: function(E) {
                this.cancellHideAllSubMenus();
                this.hideAllSubMenus()
            }.bind(this),
            keydown: function(E) {
                E = new Event(E);
                if (E.key === "up" || E.key === "down" || E.key === "left" || E.key === "right") {
                    E.stop()
                }
                if (!this.parentSubMenu) {
                    if (this.options.orientation === "horizontal" && E.key === this.options.direction.y || this.options.orientation === "vertical" && E.key === this.options.direction.x) {
                        if (this.options.direction.y === "down") {
                            this.childMenu.getFirst().getFirst("li").getFirst("a").focus()
                        } else {
                            if (this.options.direction.y === "up") {
                                this.childMenu.getFirst().getLast("li").getFirst("a").focus()
                            }
                        }
                    } else {
                        if (this.options.orientation === "horizontal" && E.key === "left" || this.options.orientation === "vertical" && E.key === this.options.direction.yInverse) {
                            if (this.btn.getParent().getPrevious()) {
                                this.btn.getParent().getPrevious().getFirst().focus()
                            } else {
                                this.btn.getParent().getParent().getLast().getFirst().focus()
                            }
                        } else {
                            if (this.options.orientation === "horizontal" && E.key === "right" || this.options.orientation === "vertical" && E.key === this.options.direction.y) {
                                if (this.btn.getParent().getNext()) {
                                    this.btn.getParent().getNext().getFirst().focus()
                                } else {
                                    this.btn.getParent().getParent().getFirst().getFirst().focus()
                                }
                            }
                        }
                    }
                } else {
                    if (E.key === "tab") {
                        E.stop()
                    }
                    if (E.key === "up") {
                        if (this.btn.getParent("li").getPrevious("li")) {
                            this.btn.getParent("li").getPrevious("li").getFirst("a").focus()
                        } else {
                            if (this.options.direction.y === "down") {
                                this.parentSubMenu.btn.focus()
                            } else {
                                if (this.options.direction.y === "up") {
                                    this.btn.getParent("li").getParent().getLast("li").getFirst("a").focus()
                                }
                            }
                        }
                    } else {
                        if (E.key === "down") {
                            if (this.btn.getParent("li").getNext("li")) {
                                this.btn.getParent("li").getNext("li").getFirst("a").focus()
                            } else {
                                if (this.options.direction.y === "down") {
                                    this.btn.getParent("li").getParent().getFirst("li").getFirst("a").focus()
                                } else {
                                    if (this.options.direction.y === "up") {
                                        this.parentSubMenu.btn.focus()
                                    }
                                }
                            }
                        } else {
                            if (E.key === this.options.direction.xInverse) {
                                this.parentSubMenu.btn.focus()
                            } else {
                                if (E.key === this.options.direction.x) {
                                    if (this.options.direction.y === "down") {
                                        this.childMenu.getFirst().getFirst("li").getFirst("a").focus()
                                    } else {
                                        if (this.options.direction.y === "up") {}
                                    }
                                }
                            }
                        }
                    }
                }
            }.bind(this)
        });
        this.options.onSubMenuInit_complete(this)
    },
    matchWidth: function() {
        if (this.widthMatched || !this.options.matchWidthMode || this.subMenuType === "subsequent") {
            return
        }
        this.options.onMatchWidth_begin(this);
        var A = this.btn.getCoordinates().width;
        DNN370(this.childMenu).getElements("a").each(function(E, D) {
            var C = parseFloat(DNN370(this.childMenu).getFirst().getStyle("border-left-width")) + parseFloat(DNN370(this.childMenu).getFirst().getStyle("border-right-width"));
            var B = parseFloat(E.getStyle("padding-left")) + parseFloat(E.getStyle("padding-right"));
            var F = C + B;
            if (A > E.getCoordinates().width) {
                E.setStyle("width", A - F);
                E.setStyle("margin-right", -C)
            }
        }.bind(this));
        this.width = this.childMenu.getFirst().getCoordinates().width;
        this.widthMatched = true;
        this.options.onMatchWidth_complete(this)
    },
    hideSubMenu: function() {
        if (this.childMenu.retrieve("status") === "closed") {
            return
        }
        this.options.onHideSubMenu_begin(this);
        if (this.subMenuType == "initial") {
            if (this.options.mmbClassName && this.options.mmbFocusedClassName) {
                DNN370(this.btn).retrieve("btnMorph", new Fx.Morph(DNN370(this.btn), {
                    duration: (this.options.duration),
                    transition: this.options.physics,
                    link: "cancel"
                })).start(this.options.mmbClassName).chain(function() {
                    DNN370(this.btn).removeClass("mainMenuParentBtnFocused");
                    DNN370(this.btn).addClass("mainMenuParentBtn")
                }.bind(this))
            } else {
                DNN370(this.btn).removeClass("mainMenuParentBtnFocused");
                DNN370(this.btn).addClass("mainMenuParentBtn")
            }
        } else {
            DNN370(this.btn).removeClass("subMenuParentBtnFocused");
            DNN370(this.btn).addClass("subMenuParentBtn")
        }
        this.childMenu.setStyle("z-index", 1);
        if (this.options.effect && this.options.effect.toLowerCase() === "slide") {
            if (this.subMenuType == "initial" && this.options.orientation === "horizontal" && this.options.direction.y === "down") {
                this.myEffect.start({
                    "margin-top": -this.height
                }).chain(function() {
                    this.childMenu.style.display = "none"
                }.bind(this))
            } else {
                if (this.subMenuType == "initial" && this.options.orientation === "horizontal" && this.options.direction.y === "up") {
                    this.myEffect.start({
                        "margin-top": this.height
                    }).chain(function() {
                        this.childMenu.style.display = "none"
                    }.bind(this))
                } else {
                    if (this.options.direction.x === "right") {
                        this.myEffect.start({
                            "margin-left": -this.width
                        }).chain(function() {
                            this.childMenu.style.display = "none"
                        }.bind(this))
                    } else {
                        if (this.options.direction.x === "left") {
                            this.myEffect.start({
                                "margin-left": this.width
                            }).chain(function() {
                                this.childMenu.style.display = "none"
                            }.bind(this))
                        }
                    }
                }
            }
        } else {
            if (this.options.effect == "fade") {
                this.myEffect.start({
                    opacity: 0
                }).chain(function() {
                    this.childMenu.style.display = "none"
                }.bind(this))
            } else {
                if (this.options.effect == "slide & fade") {
                    if (this.subMenuType == "initial" && this.options.orientation === "horizontal" && this.options.direction.y === "down") {
                        this.myEffect.start({
                            "margin-top": -this.height,
                            opacity: 0
                        }).chain(function() {
                            this.childMenu.style.display = "none"
                        }.bind(this))
                    } else {
                        if (this.subMenuType == "initial" && this.options.orientation === "horizontal" && this.options.direction.y === "up") {
                            this.myEffect.start({
                                "margin-top": this.height,
                                opacity: 0
                            }).chain(function() {
                                this.childMenu.style.display = "none"
                            }.bind(this))
                        } else {
                            if (this.options.direction.x === "right") {
                                this.myEffect.start({
                                    "margin-left": -this.width,
                                    opacity: 0
                                }).chain(function() {
                                    this.childMenu.style.display = "none"
                                }.bind(this))
                            } else {
                                if (this.options.direction.x === "left") {
                                    this.myEffect.start({
                                        "margin-left": this.width,
                                        opacity: 0
                                    }).chain(function() {
                                        this.childMenu.style.display = "none"
                                    }.bind(this))
                                }
                            }
                        }
                    }
                } else {
                    this.childMenu.style.display = "none"
                }
            }
        }
        this.childMenu.store("status", "closed");
        this.options.onHideSubMenu_complete(this)
    },
    hideOtherSubMenus: function() {
        this.options.onHideOtherSubMenus_begin(this);
        if (!this.btn.retrieve("otherSubMenus")) {
            this.btn.store("otherSubMenus", DNN360(this.root.allSubMenus.filter(function(A) {
                return ! this.btn.retrieve("parentSubMenus").contains(A) && A != this.childMenu
            }.bind(this))))
        }
        this.parentSubMenus.fireEvent("show");
        this.btn.retrieve("otherSubMenus").fireEvent("hide");
        this.options.onHideOtherSubMenus_complete(this)
    },
    hideAllSubMenus: function() {
        this.options.onHideAllSubMenus_begin(this);
        $clear(this.root.hideAllMenusTimeout);
        this.root.hideAllMenusTimeout = (function() {
            $clear(this.hideAllMenusTimeout);
            DNN360(this.root.allSubMenus).fireEvent("hide")
        }).bind(this).delay(this.options.hideDelay);
        this.options.onHideAllSubMenus_complete(this)
    },
    cancellHideAllSubMenus: function() {
        $clear(this.root.hideAllMenusTimeout)
    },
    showSubMenu: function(A) {
        if (this.childMenu.retrieve("status") === "open") {
            return
        }
        this.options.onShowSubMenu_begin(this);
        if (this.subMenuType == "initial") {
            DNN370(this.btn).removeClass("mainMenuParentBtn");
            DNN370(this.btn).addClass("mainMenuParentBtnFocused")
        } else {
            DNN370(this.btn).removeClass("subMenuParentBtn");
            DNN370(this.btn).addClass("subMenuParentBtnFocused")
        }
        this.root.subMenuZindex++;
        this.childMenu.setStyles({
            display: "block",
            visibility: "hidden",
            "z-index": this.root.subMenuZindex
        });
        if (!this.width || !this.height) {
            this.width = this.childMenu.getFirst().getCoordinates().width;
            this.height = this.childMenu.getFirst().getCoordinates().height;
            this.childMenu.setStyle("height", this.height, "border");
            if (this.options.effect === "slide" || this.options.effect === "slide & fade") {
                if (this.subMenuType == "initial" && this.options.orientation === "horizontal") {
                    this.childMenu.getFirst().setStyle("margin-top", "0");
                    if (this.options.direction.y === "down") {
                        this.myEffect.set({
                            "margin-top": -this.height
                        })
                    } else {
                        if (this.options.direction.y === "up") {
                            this.myEffect.set({
                                "margin-top": this.height
                            })
                        }
                    }
                } else {
                    if (this.options.direction.x === "left") {
                        this.myEffect.set({
                            "margin-left": this.width
                        })
                    } else {
                        this.myEffect.set({
                            "margin-left": -this.width
                        })
                    }
                }
            }
        }
        this.matchWidth();
        this.positionSubMenu();
        if (this.options.effect === "slide") {
            this.childMenu.setStyles({
                display: "block",
                visibility: "visible"
            });
            if (this.subMenuType === "initial" && this.options.orientation === "horizontal") {
                if (A) {
                    this.myEffect.set({
                        "margin-top": 0
                    }).chain(function() {
                        this.showSubMenuComplete()
                    }.bind(this))
                } else {
                    this.myEffect.start({
                        "margin-top": 0
                    }).chain(function() {
                        this.showSubMenuComplete()
                    }.bind(this))
                }
            } else {
                if (A) {
                    this.myEffect.set({
                        "margin-left": 0
                    }).chain(function() {
                        this.showSubMenuComplete()
                    }.bind(this))
                } else {
                    this.myEffect.start({
                        "margin-left": 0
                    }).chain(function() {
                        this.showSubMenuComplete()
                    }.bind(this))
                }
            }
        } else {
            if (this.options.effect === "fade") {
                if (A) {
                    this.myEffect.set({
                        opacity: this.options.opacity
                    }).chain(function() {
                        this.showSubMenuComplete()
                    }.bind(this))
                } else {
                    this.myEffect.start({
                        opacity: this.options.opacity
                    }).chain(function() {
                        this.showSubMenuComplete()
                    }.bind(this))
                }
            } else {
                if (this.options.effect == "slide & fade") {
                    this.childMenu.setStyles({
                        display: "block",
                        visibility: "visible"
                    });
                    this.childMenu.getFirst().setStyles({
                        left: 0
                    });
                    if (this.subMenuType === "initial" && this.options.orientation === "horizontal") {
                        if (A) {
                            this.myEffect.set({
                                "margin-top": 0,
                                opacity: this.options.opacity
                            }).chain(function() {
                                this.showSubMenuComplete()
                            }.bind(this))
                        } else {
                            this.myEffect.start({
                                "margin-top": 0,
                                opacity: this.options.opacity
                            }).chain(function() {
                                this.showSubMenuComplete()
                            }.bind(this))
                        }
                    } else {
                        if (A) {
                            if (this.options.direction.x === "right") {
                                this.myEffect.set({
                                    "margin-left": 0,
                                    opacity: this.options.opacity
                                }).chain(function() {
                                    this.showSubMenuComplete()
                                }.bind(this))
                            } else {
                                if (this.options.direction.x === "left") {
                                    this.myEffect.set({
                                        "margin-left": 0,
                                        opacity: this.options.opacity
                                    }).chain(function() {
                                        this.showSubMenuComplete()
                                    }.bind(this))
                                }
                            }
                        } else {
                            if (this.options.direction.x === "right") {
                                this.myEffect.set({
                                    "margin-left": -this.width,
                                    opacity: this.options.opacity
                                });
                                this.myEffect.start({
                                    "margin-left": 0,
                                    opacity: this.options.opacity
                                }).chain(function() {
                                    this.showSubMenuComplete()
                                }.bind(this))
                            } else {
                                if (this.options.direction.x === "left") {
                                    this.myEffect.start({
                                        "margin-left": 0,
                                        opacity: this.options.opacity
                                    }).chain(function() {
                                        this.showSubMenuComplete()
                                    }.bind(this))
                                }
                            }
                        }
                    }
                } else {
                    this.childMenu.setStyles({
                        display: "block",
                        visibility: "visible"
                    }).chain(function() {
                        this.showSubMenuComplete(this)
                    }.bind(this))
                }
            }
        }
        this.childMenu.store("status", "open")
    },
    showSubMenuComplete: function() {
        this.options.onShowSubMenu_complete(this)
    },
    positionSubMenu: function() {
        this.options.onPositionSubMenu_begin(this);
        this.childMenu.setStyle("width", this.width);
        this.childMenu.getFirst().setStyle("width", this.width);
        if (this.subMenuType === "subsequent") {
            if (this.parentSubMenu && this.options.direction.x != this.parentSubMenu.options.direction.x) {
                if (this.parentSubMenu.options.direction.x === "left" && this.options.effect && this.options.effect.contains("slide")) {
                    this.myEffect.set({
                        "margin-left": this.width
                    })
                }
            }
            this.options.direction.x = this.parentSubMenu.options.direction.x;
            this.options.direction.xInverse = this.parentSubMenu.options.direction.xInverse;
            this.options.direction.y = this.parentSubMenu.options.direction.y;
            this.options.direction.yInverse = this.parentSubMenu.options.direction.yInverse
        }
        var C;
        var A;
        if (this.subMenuType == "initial") {
            if (this.options.direction.y === "up") {
                if (this.options.orientation === "vertical") {
                    C = this.btn.getCoordinates().bottom - this.height + this.options.tweakInitial.y
                } else {
                    C = this.btn.getCoordinates().top - this.height + this.options.tweakInitial.y
                }
                this.childMenu.style.top = C + "px"
            } else {
                if (this.options.orientation == "horizontal") {
                    this.childMenu.style.top = this.btn.getCoordinates().bottom + this.options.tweakInitial.y + "px"
                } else {
                    if (this.options.orientation == "vertical") {
                        C = this.btn.getPosition().y + this.options.tweakInitial.y;
                        if ((C + this.childMenu.getSize().y) >= DNN370(document.body).getScrollSize().y) {
                            A = (C + this.childMenu.getSize().y) - DNN370(document.body).getScrollSize().y;
                            C = C - A - 20
                        }
                        this.childMenu.style.top = C + "px"
                    }
                }
            }
            if (this.options.orientation == "horizontal") {
                this.childMenu.style.left = this.btn.getPosition().x + this.options.tweakInitial.x + "px"
            } else {
                if (this.options.direction.x == "left") {
                    this.childMenu.style.left = this.btn.getPosition().x - this.childMenu.getCoordinates().width + this.options.tweakInitial.x + "px"
                } else {
                    if (this.options.direction.x == "right") {
                        this.childMenu.style.left = this.btn.getCoordinates().right + this.options.tweakInitial.x + "px"
                    }
                }
            }
        } else {
            if (this.subMenuType == "subsequent") {
                if (this.options.direction.y === "down") {
                    if ((this.btn.getCoordinates().top + this.options.tweakSubsequent.y + this.childMenu.getSize().y) >= DNN370(document.body).getScrollSize().y) {
                        A = (this.btn.getCoordinates().top + this.options.tweakSubsequent.y + this.childMenu.getSize().y) - DNN370(document.body).getScrollSize().y;
                        this.childMenu.style.top = (this.btn.getCoordinates().top + this.options.tweakSubsequent.y) - A - 20 + "px"
                    } else {
                        this.childMenu.style.top = this.btn.getCoordinates().top + this.options.tweakSubsequent.y + "px"
                    }
                } else {
                    if (this.options.direction.y === "up") {
                        if ((this.btn.getCoordinates().bottom - this.height + this.options.tweakSubsequent.y) < 1) {
                            this.options.direction.y = "down";
                            this.options.direction.yInverse = "up";
                            this.childMenu.style.top = this.btn.getCoordinates().top + this.options.tweakSubsequent.y + "px"
                        } else {
                            this.childMenu.style.top = this.btn.getCoordinates().bottom - this.height + this.options.tweakSubsequent.y + "px"
                        }
                    }
                }
                if (this.options.direction.x == "left") {
                    this.childMenu.style.left = this.btn.getCoordinates().left - this.childMenu.getCoordinates().width + this.options.tweakSubsequent.x + "px";
                    if (this.childMenu.getPosition().x < 0) {
                        this.options.direction.x = "right";
                        this.options.direction.xInverse = "left";
                        this.childMenu.style.left = this.btn.getPosition().x + this.btn.getCoordinates().width + this.options.tweakSubsequent.x + "px";
                        if (this.options.effect === "slide" || this.options.effect === "slide & fade") {
                            this.myEffect.set({
                                "margin-left": -this.width,
                                opacity: this.options.opacity
                            })
                        }
                    }
                } else {
                    if (this.options.direction.x == "right") {
                        this.childMenu.style.left = this.btn.getCoordinates().right + this.options.tweakSubsequent.x + "px";
                        var D = this.childMenu.getCoordinates().right;
                        var B = document.getCoordinates().width + window.getScroll().x;
                        if (D > B) {
                            this.options.direction.x = "left";
                            this.options.direction.xInverse = "right";
                            this.childMenu.style.left = this.btn.getCoordinates().left - this.childMenu.getCoordinates().width + this.options.tweakSubsequent.x + "px";
                            if (this.options.effect === "slide" || this.options.effect === "slide & fade") {
                                this.myEffect.set({
                                    "margin-left": this.width,
                                    opacity: this.options.opacity
                                })
                            }
                        }
                    }
                }
            }
        }
        this.options.onPositionSubMenu_complete(this)
    }
});