﻿this.jQuery(function ($) {

    // primary nav flyouts 
    $("#primaryNav > li:not(.CMSListMenuLIlast):not(.CMSListMenuHighlightedLIlast)").hover(
        function () {
            $(this).addClass("hover").find("ul").show();
        },
        function () {
            $(this).removeClass("hover").find("ul").hide();
        }
    );

    var balanceColumns = function(masterUl, newColumns) {
        var smallestColumn = 10000;
        masterUl.find('> li').each(function () {
            var count = $(this).find('> ul > li').length;
            if (count < smallestColumn) {
                smallestColumn = count;
            }
        }).each(function () {
            if (!newColumns) {
                return false;
            }
            var baseUl = $(this).find('> ul'),
                items = baseUl.find('> li'),
                oldItems,
                newItems;
            if (items.length > smallestColumn) {
                oldItems = items;
                items.remove();
                while (oldItems.length > smallestColumn) {
                    newItems = oldItems.slice(0, smallestColumn);
                    oldItems = oldItems.slice(smallestColumn);
                    if (
                        oldItems.length > newItems.length && newColumns === 1
                    ) {
                        var difference = oldItems.length - newItems.length,
                            i;
                        for (i = 0; i < difference; i += 1) {
                            newItems = newItems.add(oldItems.get(0));
                            oldItems = oldItems.not(oldItems.get(0));
                        }
                    }
                    baseUl.append(
                        $('<li class="sub-column" />').append(
                            $('<ul/>').append(newItems)
                        )
                    );
                    newColumns -= 1;
                    if (!newColumns) {
                        break;
                    }
                }

                if (oldItems.length) {
                    baseUl.append(
                        $('<li class="sub-column"/>').append(
                            $('<ul/>').append(oldItems)
                        )
                    );
                }
            } else {
                baseUl.append(
                    $('<li class="sub-column"/>').append(
                        $('<ul/>').append(items)
                    )
                );
            }
        });
        masterUl.children('li').each(function () {
            var heading = $(this),
                subColumns = heading.find('> ul > li.sub-column');
            if (subColumns.length) {
                heading.width(subColumns.length * 181);
                var allItems = subColumns.find('> ul > li'),
                    perColumn = Math.ceil(allItems.length / subColumns.length),
                    currentItem = 0,
                    currentColumn = 0;
                subColumns.each(function () {
                    $(this).children('ul').empty();
                    var newItems = 
                        allItems.slice(currentItem, currentItem + perColumn);
                    currentItem += perColumn;
                    $(this).children('ul').append(newItems);
                });

            }
        });
    };

    $('#primaryNav > li:not(.CMSListMenuLIlast)').each(function () {
        var header = $(this),
            columns = 3,
            masterUl = header.find('> ul:first'),
            unparented = [],
            currentColumns;

        masterUl.children('li').each(function() {
            if ($(this).children('ul').length) {
                return false;
            }
            unparented.push(this);
        });

        if (this === $('#primaryNav > li:first').get(0)) {
            columns = 4;
        } else {
            columns = 3;
            masterUl.css('left', $('#primaryNav > li:first').width() + 'px');

        }

        if (unparented.length) {
            masterUl.prepend(
                $('<li class="heading"/>').append(
                    $('<span/>').text(header.find('a:first').text())
                ).append(
                    $('<ul class="CMSListMenuUL"/>').append(unparented)
                )
            );
        }

        masterUl.find('> li:not(.heading)').addClass('heading');

        currentColumns = header.find('> ul > li').length;

        if (currentColumns < columns) {
            balanceColumns(masterUl, columns - currentColumns);
        }

    });

    // primary nav sports style
    $("#primaryNav #primaryNav_LI_0_1_1 #primaryNav_UL_1 > li:first-child").addClass("first-child");

    // marquee slideshow
    $("div#marquee").marquee({
        state: "ul.controls",
        display: "ul.images > li",
        start_moving: true,
        speed: 5000,
        transition: "fade",
        infinite: true
    }).find('.copy').one('mouseover', function () {
        $(this).closest('#marquee').data('pause')(true);
    });

    // Fancybox
    $(".modalLink").fancybox({
        'width': 860,
        'height': 495,
        'scrolling': 'no',
        'type': 'iframe',
        'transitionIn': 'none',
        'transitionOut': 'none',
        'autoScale': false,
        'padding': 0,
        'margin': 0
    });

    // side nav hover 
    $("#sidenavLinks li, #Cmslistmenu1 li").hover(function () {
        $(this).addClass("hover");
    },
        function () {
            $(this).removeClass("hover");
        }
    );

    // sidenav headings become spans
    $("#sidenavLinks .CMSListMenuUL, #Cmslistmenu1 .CMSListMenuUL").prev("a").each(function () {
        var text = $(this).text();
        $(this).replaceWith("<span >" + text + "</span>");
    });

    $("#primaryNav > li > ul > li > ul").prev("a").each(function () {
        var text = $(this).text();
        $(this).replaceWith("<span >" + text + "</span>").parent("li").addClass("heading");
    });

    // 'rise' image margins depending on floats
    $("div.rise img,div.basic-page img").filter(function () { return $(this).css("float") === "left"; }).css("margin-right", "13px").end().filter(function () { return $(this).css("float") === "right"; }).css("margin-left", "13px");

    // ie6 css
    $("#side-nav .notes p:first-child, .CMSSiteMapList li:first-child, .min-calendar .pagination li:first-child, .media-nav li:first-child").addClass("first-child");

});

