﻿/// <reference path="jquery-1.5.2.js" />

$(document).ready(function ()
{
    HRG.JQueryUI.Init();
    HRG.DynamicPanels.Init();
    HRG.PrimaryNav.Init();
});

var _isEditing = false;
var HRG = {};

/*
* JQuery UI helper class
*/
HRG.JQueryUI =
{
    Init: function ()
    {
        $('select.dropdown').selectmenu();
        $('#tabs').tabs();
    }
}

/*
* Dynamic tabbed panels
*
* Looks for designated web part zones and combines web parts within
* into a jQuery UI tabbed interface, one tab per web part
*/
HRG.DynamicPanels =
{
    Init: function ()
    {
        if (!_isEditing)
        {
            var webPartZone = $('.hrg-dynamicpanels');
            if (webPartZone.length > 0)
            {
                try
                {
                    // Port content from web parts into jQuery UI tabs
                    HRG.DynamicPanels.ConvertWebPartsToTabs(webPartZone);
                    $('#tabs').tabs();

                    // Finish the job - notify the container that we're done and remove all web parts
                    webPartZone.addClass('loaded');
                    webPartZone.find('table:first').remove();
                }
                catch (e)
                {
                    webPartZone.hide();
                }
            }
        }
    },

    ConvertWebPartsToTabs: function (webPartZone)
    {
        webPartZone.each(function ()
        {
            var count = 0;

            var webParts = webPartZone.find('.s4-wpTopTable');
            webParts.each(function ()
            {
                // Support a maximum of three tabs
                if (count < 3)
                {
                    var webPartTitle = $(this).find('h3.ms-WPTitle').text();
                    var webPartBody = $(this).find('.ms-WPBody').html();

                    HRG.DynamicPanels.AppendTab(
                        webPartTitle,
                        webPartBody,
                        webPartZone);
                }
                count++;
            });
        });
    },

    AppendTab: function (title, body, webPartZone)
    {
        var tabContainer = HRG.DynamicPanels.TabContainer(webPartZone);
        var nav = tabContainer.find('ul.nav');
        var content = tabContainer.find('div.content');

        // Uniquely identify each tab
        var tabId = nav.find('li').length;

        // Add a new tab top navigation item
        var navCss = (tabId == 0) ? 'ui-tabs-selected ui-state-active' : '';
        nav.append('<li class="ui-state-default ui-corner-top ' + navCss + '"><a href="#tab-' + tabId + '">' + title + '</a></li>');

        // Add the body content
        content.append('<div id="tab-' + tabId + '" class="clear ui-tabs-panel ui-widget-content ui-corner-bottom">' + body + '</div>');
    },

    TabContainer: function (webPartZone)
    {
        var elem = webPartZone.find('#tabs');
        if (elem.length > 0)
        {
            return elem;
        }
        else
        {
            return webPartZone.prepend('<div id="tabs" class="ui-tabs ui-widget ui-widget-content ui-corner-all"><ul class="nav clear ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"></ul><div class="content"></div></div>')
        }
    }
}

/*
* Primary navigation animation and initialisation
*/
HRG.PrimaryNav =
{
    Init: function ()
    {
        var topNav = jQuery("#primary-nav");
        if (topNav.length > 0)
        {
            topNav.find("ul.root > li:last, ul.static > li:last").addClass("last");

            var topNavItems = topNav.find("ul.root > li");
            topNavItems.each(function ()
            {
                var topNavItem = jQuery(this);

                var subMenu = topNavItem.find('ul');
                if (subMenu.length > 0)
                {
                    // Setup the hover behaviour
                    var config = {
                        over: HRG.PrimaryNav.FlyoutHoverOver,
                        out: HRG.PrimaryNav.FlyoutHoverOut
                    };
                    topNavItem.hoverIntent(config);

                    // Show a down arrow on the menu item to denote that a sub-menu/flyout is available
                    topNavItem.addClass('flyout');
                }
            });
        }
    },

    FlyoutHoverOver: function ()
    {
        var topNavItem = $(this);
        topNavItem.addClass('hover');

        // Find sub menu and fade it in 
        var subMenu = topNavItem.find("ul");
        subMenu.fadeIn('fast');

        // Detect when the menu may be masked by the viewport and move accordingly
        if (jQuery('#header').width() < (topNavItem.position().left + subMenu.width()))
        {
            subMenu.addClass('overhanging');
        }
    },

    FlyoutHoverOut: function ()
    {
        var topNavItem = $(this);
        topNavItem.removeClass('hover');

        // Fade to 0 opacity
        var subMenu = topNavItem.find("ul");
        subMenu.fadeOut('fast');
    }
}

//HRG.CQWPToolbar = {
//    HideSection: function (containerId, sectionText) {
//        var hideExpression = "#" + containerId + "_configureQuery div.UserSectionHead span";
//        alert(hideExpression);
//        $(hideExpression).filter(function () { return $(this).text() == "List Type"; }).parentsUntil('tr').hide();
//    }
//}

