var UBC = function() {

    var menu = function() {
        var primaryNav;

        var accordionConfig = {
            autoHeight: false,
            active: "H3.active",
            collapsible: true,
            header: "H3"
        };

        return {
            init: function() {
                primaryNav = jQuery("#primary-nav");
                if (primaryNav.length < 1) return;

                primaryNav.accordion(accordionConfig);
                primaryNav.find("LI A").click(menu.expand);
                primaryNav.show();

                if (jQuery("H3", primaryNav).length == 1) {
                    primaryNav.accordion('disable');
                }
            },


            expand: function() {
                var node = jQuery(this);
                var sibling = node.next();
                if (sibling.is("UL")) {
                    sibling.toggleClass("active");
                    return (node.attr("href") !== "#");
                }
                return true;
            }
        };
    }();

    var marquee = function() {
        return {
            init: function() {
                jQuery("MARQUEE").marquee().mouseover(marquee.stop).mouseout(marquee.start);
            },

            stop: function(){
                jQuery(this).trigger('stop');
            },
            start: function(){
                jQuery(this).trigger('start');
            }
        };
    }();

    var toggler = function(){
        return {
            init: function() {
                var toggle_triggers = jQuery("DL.toggle DT A");
                if (toggle_triggers.length == 0) return;

                toggle_triggers.click(toggler.trigger);
                jQuery("<span class='ui-icon ui-icon-triangle-1-e'></span>").insertBefore(toggle_triggers);
            },

            trigger: function() {
                jQuery(this).parent().next("DD").toggleClass("active");
                return false;
            }
        };
    }();

    var siteSearch = function() {
        return {
            init: function() {
                var text_field = jQuery("#search-keyword");
                var callback = function(e) {
                    if (e.type == "focus") {
                        if (this.value === this.title) {
                            this.value = "";
                            this.className = "";
                        }
                    } else if (e.type == "blur") {
                        if (this.value === "") {
                            this.value = this.title;
                            this.className = "hint";
                        }
                    }
                };
                text_field.focus(callback).blur(callback).trigger("blur");
            }
        };
    }();

    var linkRel = function() {
        var bio_width = 730;
        var bio_height = 600;
        var cdr_demo_width = 730;
        var cdr_demo_height = 600;


        return {
            init: function() {
                var iterator = function() {
                    if (this.rel === "bio") {
                        jQuery(this).click(linkRel.displayBio);
                    } else if (this.rel == "closer") {
                        jQuery(this).click(linkRel.closeWindow);
                    } else if (this.rel == "cdr-demo") {
                        jQuery(this).click(linkRel.displayCdrDemo);
                    }
                };

              jQuery("A[rel]").each(iterator);
            },

            closeWindow: function() {
                window.close();
            },

            displayCdrDemo: function() {
                var xpos = (screen.width - cdr_demo_width)/2;
                var ypos = (screen.height - cdr_demo_height)/2;

                var windowAttributes = ["width=", cdr_demo_width, ",height=", cdr_demo_height,  ",left=", xpos,  ",top=",  ypos, ",screenX=", xpos, ",screenY=", ypos, ",resizable,scrollbars"];

                var cdrdemo = window.open(this.href, 'cdrdemo', windowAttributes.join(""));
                if (cdrdemo) cdrdemo.focus();
                return false;
            },

            displayBio: function() {
                var xpos = (screen.width - bio_width)/2;
                var ypos = (screen.height - bio_height)/2;

                var windowAttributes = ["width=", bio_width, ",height=", bio_height,  ",left=", xpos,  ",top=",  ypos, ",screenX=", xpos, ",screenY=", ypos, ",resizable,scrollbars"];

                var bioWindow = window.open(this.href, 'bio', windowAttributes.join(""));
                if (bioWindow) bioWindow.focus();
                return false;
            }
        };
    }();

    var experience = function() {
        var handler = function() {
            jQuery(this).parent().toggleClass("experience_container_active");
        };
        jQuery("A.experience_heading").click(handler);
    }();

    return {
        init: function() {
            menu.init();
            marquee.init();
            toggler.init();
            siteSearch.init();
            linkRel.init();
        }
    };
}();

jQuery(document).ready(UBC.init);
