/*------------------------------------------------------------------------------
| lehrhaus.js
| Lehrhaus Judaica
| Author(s): Richa Avasthi
| Created: 2010-06-17
|
| Operational JavaScript for the Lehrhaus WordPress site.
------------------------------------------------------------------------------*/

// Establish namespace. Change to match the name of your application.
var Lehrhaus = window.Lehrhaus ? window.Lehrhaus : {};

Lehrhaus.util = {
    /*
    ** Call out any specifically unsupported browsers here, like older versions
    ** of IE. Override this as necessary for your own application.
    */
    isSupportedBrowser: function() {
        var ua = navigator.userAgent;
        var supported = true;
        // We only support IE8 and greater.
        if(fiftyfive.util.isIE() && fiftyfive.util.isIE(7))
        {
            supported = false;
        }
        // Firefox 4+
        var v = ua.match(/Firefox\/(\d+)\./i);
        if(v && v[1] < 4)
        {
            supported = false;
        }
        // …etc.
        return supported;
    },

    /*--------------------------------------------------------------------------
    | equalizeColumns()
    |
    | Equalize the content and sidebar columns' heights.
    | Requirements: jquery-1.4.2
    --------------------------------------------------------------------------*/
    equalizeColumns: function() {
        var $j = jQuery;
        var ch = $j("#content").height();
        var sh = $j("#sidebar").height();
        $j("#content, #sidebar").css({
            height: Math.max(ch, sh)
        });
    },

    /*--------------------------------------------------------------------------
    | setBodyId(requestedBodyId)
    |
    |   requestedBodyId:        The ID to set this page's body element to.
    |
    | Set the body element's ID attribute to the requested value.
    | Requirements: jquery-1.4.2
    --------------------------------------------------------------------------*/
    setBodyId: function(requestedBodyId) {
        document.body.id = requestedBodyId;
    },

    /*--------------------------------------------------------------------------
    | setBodyClass(requestedBodyClass)
    |
    |   requestedBodyClass:     The class to set this page's body element to.
    |
    | Set the body element's class attribute to the requested value.
    | Requirements: jquery-1.4.2
    --------------------------------------------------------------------------*/
    setBodyClass: function(requestedBodyClass) {
        $(document.body).addClass(requestedBodyClass);
    },

    /*--------------------------------------------------------------------------
    | registerNewWindowLinks()
    |
    | JS to open links in a new window.
    | Requirements: jquery-1.4.2
    --------------------------------------------------------------------------*/
    registerNewWindowLinks: function() {
        jQuery("a[rel=external]").click(function() {
            event.preventDefault();
            window.open(this.href);
        });
    }
};

(function($) {
    /*--------------------------------------------------------------------------
    | navigationmenuwidget
    |
    | A jQuery UI-based widget for the secondary navigation menus.
    | Requirements: jquery-1.4.2, jquery-ui-1.8.2.widget,
    |               jquery-ui-1.8.2.position
    --------------------------------------------------------------------------*/
    $.widget("ui.navigationmenuwidget", {
        options: {
            menuDelay: 400
        },

        _create: function() {
            this.menu = this.element.find("ul.menu");
            this.menu.addClass("menu-hidden");
            this.element.addClass("menu-hidden");
            this.pageClass = $("body").attr("class");

            var menuWidth = 0;
            this.menu.find("li").each(function() {
                menuWidth += $(this).outerWidth(true);
            });

            this.menu.css({ width: menuWidth + 1 });

            this.element.hoverIntent({
                over: $.proxy(this.showMenu, this),
                timeout: this.options.menuDelay,
                out: $.proxy(this.hideMenu, this)
            });

            this.showDefault();
        },

        hideMenu: function(event) {
            this.menu.css({ left: "-10000px" });
            this.element.removeClass("menu-active").addClass("menu-hidden");
            this.menu.removeClass("menu-active").addClass("menu-hidden");
            this.showDefault();
        },

        showMenu: function() {
            // Hide all open menus except the current LI's
            $("#nav > li").not(this.element).find("ul.menu").css({
                left: "-10000px"
            }).removeClass("menu-active").addClass("menu-hidden");
            this.menu.removeClass("menu-hidden").addClass("menu-active");
            this.element.removeClass("menu-hidden").addClass("menu-active");

            if(this.element.hasClass("courses"))
            {
                this.menu.position({
                   my: "left top",
                   at: "left bottom",
                   of: this.element
                });
            }
            else if(this.element.hasClass("about"))
            {
                this.menu.position({
                    my: "right top",
                    at: "right top",
                    of: "#main",
                    offset: "-20 0"
                });
            }
            else
            {
                this.menu.position({
                    my: "center top",
                    at: "center bottom",
                    of: this.element
                });
            }
        },

        showDefault: function() {

            switch(this.pageClass)
            {
                case "courses":
                    var otherMenus =
                        $("#nav > li").not("li.courses").find("ul.menu");
                    if(!otherMenus.hasClass("menu-active"))
                    {
                        $("#nav li.courses ul.menu").position({
                           my: "left top",
                           at: "left bottom",
                           of: "#nav li.courses"
                        });
                    }
                    break;
                case "tours":
                    var otherMenus =
                        $("#nav > li").not("li.tours").find("ul.menu");
                    if(!otherMenus.hasClass("menu-active"))
                    {
                        $("#nav li.tours ul.menu").position({
                            my: "center top",
                            at: "center bottom",
                            of: "#nav li.tours"
                        });
                    }
                    break;
                case "events":
                    var otherMenus =
                        $("#nav > li").not("li.events").find("ul.menu");
                    if(!otherMenus.hasClass("menu-active"))
                    {
                        $("#nav li.events ul.menu").position({
                            my: "center top",
                            at: "center bottom",
                            of: "#nav li.events"
                        });
                    }
                    break;
                case "about":
                    var otherMenus =
                        $("#nav > li").not("li.about").find("ul.menu");
                    if(!otherMenus.hasClass("menu-active"))
                    {
                        $("#nav li.about ul.menu").position({
                            my: "right top",
                            at: "right top",
                            of: "#main",
                            offset: "-20 0"
                        });
                    }
                    break;
            }
        }
    });
})(jQuery);


(function($) {
    $(function() {
        $("html").addClass(fiftyfive.util.getIEClass());
        if(!Lehrhaus.util.isSupportedBrowser())
        {
          $("html").addClass("unsupported-browser");
        }
        $("#unsupported-browser-warning").unsupportedbrowserwarningwidget({
            cookieName: "Lehrhaus.browserWarningDismissed"
        });

        Lehrhaus.util.equalizeColumns();
        Lehrhaus.util.registerNewWindowLinks();
        $("#nav > li").has("ul.menu").navigationmenuwidget();
    });
})(jQuery);

