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($(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=$(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, ol"));
            theSubMenuType="subsequent";
            if(F.getParent("ul, ol").id===this.options.id){
                theSubMenuType="initial"
            }
            F.store("subMenuType",theSubMenuType);
            if(theSubMenuType==="initial"&&F.getNext("ul, ol")){
                F.addClass("mainMenuParentBtn")
            }else{
                if(F.getNext("ul, ol")){
                    F.addClass("subMenuParentBtn")
                }
            }
        }.bind(this));
        var D=new Element("div",{
            id:this.options.subMenusContainerId
        }).inject($(document.body),"bottom");
        $(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=$(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){
                        $(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){
                        $(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){
                        $(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){
                        $(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){
            $(this.options.id).getParents().setStyle("zoom",1);
            $(this.options.id).setStyle("zoom",1);
            $(this.options.id).getChildren().setStyle("zoom",1);
            $(this.options.subMenusContainerId).setStyle("zoom",1);
            $(this.options.subMenusContainerId).getChildren().setStyle("zoom",1)
        }
    },
    center:function(){
        if(!this.options.center){
            return
        }
        $(this.options.id).setStyles({
            left:"50%",
            "margin-left":-($(this.options.id).getSize().x/2)
        })
    },
    stretch:function(){
        if(this.options.stretchMainMenu&&this.options.orientation==="horizontal"){
            var C=parseFloat($(this.options.id).getCoordinates().width);
            var D=0;
            var B=$(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"){
            $($(this.options.id).getElements("li")[0]).setStyles({
                background:"none"
            })
        }else{
            if(this.options.killDivider&&this.options.killDivider.toLowerCase()==="last"){
                $($(this.options.id).getElements("li").getLast()).setStyles({
                    background:"none"
                })
            }
        }
    },
    hideAllSubMenusNow:function(){
        this.options.onHideAllSubMenusNow_begin();
        $clear(this.hideAllMenusTimeout);
        $$(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=$$(this.btn.retrieve("parentSubMenus"));
        this.parentLinks=$$(this.btn.retrieve("parentLinks"));
        this.parentSubMenu=$(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($(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=$(this.childMenu).getElements("a").filter(function(F,E){
            return !F.retrieve("childMenu")
        });
        D.each(function(F,E){
            $(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);
        $(this.btn).removeClass("subMenuBtn");
        if(this.subMenuType=="initial"){
            this.btn.addClass("mainParentBtn")
        }else{
            this.btn.addClass("subParentBtn")
        }
        $(this.btn).addEvents({
            mouseenter:function(E){
                this.cancellHideAllSubMenus();
                this.hideOtherSubMenus();
                this.showSubMenu();
                if(this.subMenuType==="initial"&&this.options.mmbClassName&&this.options.mmbFocusedClassName){
                    $(this.btn).retrieve("btnMorph",new Fx.Morph($(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){
                    $(this.btn).retrieve("btnMorph",new Fx.Morph($(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;
        $(this.childMenu).getElements("a").each(function(E,D){
            var C=parseFloat($(this.childMenu).getFirst().getStyle("border-left-width"))+parseFloat($(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){
                $(this.btn).retrieve("btnMorph",new Fx.Morph($(this.btn),{
                    duration:(this.options.duration),
                    transition:this.options.physics,
                    link:"cancel"
                })).start(this.options.mmbClassName).chain(function(){
                    $(this.btn).removeClass("mainMenuParentBtnFocused");
                    $(this.btn).addClass("mainMenuParentBtn")
                }.bind(this))
            }else{
                $(this.btn).removeClass("mainMenuParentBtnFocused");
                $(this.btn).addClass("mainMenuParentBtn")
            }
        }else{
            $(this.btn).removeClass("subMenuParentBtnFocused");
            $(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",$$(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);
            $$(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"){
            $(this.btn).removeClass("mainMenuParentBtn");
            $(this.btn).addClass("mainMenuParentBtnFocused")
        }else{
            $(this.btn).removeClass("subMenuParentBtn");
            $(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)>=$(document.body).getScrollSize().y){
                            A=(C+this.childMenu.getSize().y)-$(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)>=$(document.body).getScrollSize().y){
                        A=(this.btn.getCoordinates().top+this.options.tweakSubsequent.y+this.childMenu.getSize().y)-$(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)
    }
});
var PlaceholderInput = new Class({

    initialize: function(element, klass) {
        var klass = klass || 'input_placeholder';
        this.element = $(element).store('placeholder', this);
        this.element.addEvents({
            'focus': function() {
                if(this.get('value', true) == this.get('placeholder')) {
                    this.set('value', '');
                    this.removeClass(klass);
                }
            },
            'blur': function() {
                if(this.get('value', true) == '' || this.get('value', true) == this.get('placeholder')) {
                    this.set('value', this.get('placeholder'));
                    this.addClass(klass);
                }
            }
        });
        if(this.element.get('value', true) != this.element.get('placeholder')) this.element.removeClass(klass);
        this.element.fireEvent('focus').fireEvent('blur');
    }

});

window.addEvent('domready', function(){
    if ($('formular')) {
        new FormCheck('formular', {
            display : {
                showErrors : 0,
                closeTipsButton : 0,
                flashTips : 1
            }
        })
    };

    var myMenu = new MenuMatic();

    Element.implement({

        setPlaceholder: function(klass) {
            new PlaceholderInput(this, klass);
            return this;
        }

    });

    $$('input[placeholder]').setPlaceholder();

    $$('.info_changer').addEvent('mouseover', function(ev) {

        new Event(ev).stop();

        $('change_cost').set('html', this.get('cost'));
        $('change_title').set('html', this.get('title'));
        $('change_size').set('html', this.get('size'));
        $('change_note').set('html', this.get('note'));
        $('change_id').set('class', this.get('number'));

        return false;
    });


    var Tips1 = new Tips('.Tips1',{
        showDelay: 400,
        hideDelay: 400,
        fixed:false
    });
    Tips1.addEvent('onShow', function(tip){
        tip.fade('in');
    });
    Tips1.addEvent('onHide', function(tip){
        tip.fade('out');
    });

});

window.addEvent('domready', function() {
    $("bookmark_this_page").addEvent("click", function(){
        if(document.all){
            window.external.AddFavorite(location.href,document.title);
        }
        else if(window.sidebar){
            window.sidebar.addPanel(document.title,location.href,'');
        }
    });

    $("print_top").addEvent("click", function(){
        window.print();
    });

    for(i=1; i<=8; i++){
        if($("slide_button_" + i) != null){
            $("slide_button_" + i).href = "javascript:exchange_slide(" + i + ",true)";
        }
    }
});

