$(document).ready(function(){
    
    $("a#login").fancybox({
        'frameWidth': 350,
        'frameHeight': 300,
        'hideOnContentClick': false
    });

    $("a#logout").click(function(event){
        if (!confirm("Are you sure you want to logout?")) {
            event.preventDefault();
        }
    });

    var base_url = $('base').attr('href');
    
    // =================================== helper functions
    
    function view_file_url_for(url) {
        return base_url + 'ajax.php?page=' + url;
    }
    
    function menu_file_url_for(url) {
        return base_url + 'ajax.php?menu=' + url;
    }
    
    function addTabDividers() {
        $("#main_menu li").before("<img src='images/tab_divide.png' />");
    }

    // ====================================== actions

    var addFrontPageLinks = function() {
        $("a.front_page").click(function() {
            var href = $(this).attr("href");
            var menu = menu_file_url_for(href);
            var page = view_file_url_for(href);
            $("#sub_menu_content").slideUp("fast", function() {
                $("#sub_menu_content").load(menu);
                $("#sub_menu_content").slideDown("slow", addClickHandlers);
                $("#content").hide().load(page).show();
            });
            return false;
        });
    }

    var addBottomMenu = function() {
        $("#bottom_menu a").click(function() {
            $("#main_menu li a").each(function() { $(this).parent().removeClass("active"); });
            var href = $(this).attr("href");
            var page = view_file_url_for(href);
            var menu = menu_file_url_for(href);
            var section_name = "#main_menu a#" + $(this).attr("class");
            $(section_name).parent().addClass("active");
            $("#sub_menu_content").slideUp("fast", function() {
                $("#sub_menu_content").load(menu);
                $("#sub_menu_content").slideDown("slow", addClickHandlers);
                $("#content").load(page);
            });
            window.scrollTo(0,0);
            return false;
        });
    }
      
    var addInternalContentLink = function() {
        addBottomMenu();
        $("#content a.internal").click(function() {
            var page = view_file_url_for($(this).attr("href"));
            $("#content").hide().load(page).show();
            window.scrollTo(0,0);
            return false;
        });
    }
  
    var addClickHandlers = function() {
        $("#sub_menu_content a").click(function() {
            var page = view_file_url_for($(this).attr("href"));
            $("#content").hide().load(page, addInternalContentLink).show();
            addFrontPageLinks();
            return false;
        });
    }
  
    var addMainMenuActions = function() {
        $("#main_menu li a").click(function() {
            $("#main_menu li a").each(function() { $(this).parent().removeClass("active"); });
            $(this).parent().addClass("active");
            
            var href = $(this).attr("href");
            var page = view_file_url_for(href);
            var menu = menu_file_url_for(href)

            $("#sub_menu_content").slideUp("fast", function(){
                $("#sub_menu_content").load(menu, function() {
                    $("#content").hide().load(page, addInternalContentLink).show();
                    $("#sub_menu_content").slideDown("slow", addClickHandlers);
                    
                });
            });
            return false;
        });
    }


    // ========================= boot time
    
    addMainMenuActions();  
    addInternalContentLink();
    addFrontPageLinks();
    addTabDividers();
        
    $("#main_menu li").not(".active").hover(function() {
        $(this).addClass("hover");
    }, function() {
        $(this).removeClass("hover");
    });
  
    $(".extras a").not("#homelink").click(function() {
        var page = view_file_url_for($(this).attr("href"));
        $("#content").hide().load(page, addInternalContentLink).show();
        $("#main_menu li a").each(function() { $(this).parent().removeClass("active"); });
        window.scrollTo(0,0);
        return false;
    });

});
