﻿$(document).ready(function () {
    $('.selectList').each(function () {
        var self = $(this),
            parentClass = self.attr("class"),
            mainUl = self.find('ul.selectListWrap');

        self.click(function (e) {
            e.stopPropagation();
        });

        if ($('body').hasClass('ie6')) {
            var guts = self.find('td:eq(0)').html(),
                parent = self.find('li.selectListCurrentItem');
            parent.append(guts);
            parent.find('iframe').remove();
            self.find('table:eq(0)').remove();
        }

        var actionLink = self.find('.selectListCurrentItem > a'),
            dropdown = self.find('ul.selectListDropdown');
        if (dropdown.height() > 155 && parentClass.indexOf("subjectFilter") == -1) {
            dropdown.css({ 'height': '155px', 'overflow-y': 'scroll' });
        }

        actionLink.bind('click', function (e) {
            e.preventDefault();
            var alreadyOpen = $('.selectList').find('ul.open').not(mainUl);
            if (alreadyOpen.size() > 0) {
                $('ul.open').find('ul.selectListDropdown').slideUp(250);
                $('ul.open').removeClass('open');
            }
            mainUl.toggleClass('open');
            dropdown.slideToggle(250);
            if (parentClass.indexOf("subjectFilter") != -1) {
                var activePanels = actionLink.closest('ul').find('li.active');
                if (activePanels.size() > 0) {
                    activePanels.removeClass('active').find('ul.checkListFlyout').hide();
                }
            }
            closeOut();
        });

    });

    $('.selectList.subjectFilter ul.selectListDropdown li.selectListItem').each(function () {
        var self = $(this),
            parent = self.parent('ul'),
            discipline = self.children('span.checkbox:eq(0)'),
            subjects = self.find('ul'),
            dCheck = discipline.find(':checkbox'),
            sCheck = subjects.find(':checkbox');


        // Open Subjects on Hover
        self.mouseover(function (e) {
            if ($('#page-container').hasClass('ie6')) {
                parent.css({ overflow: 'visible' });
                self.css({ 'background-color': '#f0f0f0' });
            } else {
                fixOffset(subjects);
            }
        }).mouseout(function () {
            if ($('#page-container').hasClass('ie6')) {
                self.css({ 'background-color': '#fafafa' });
            } else {
                subjects.css({ 'top': '-1px' });
            }
        });
        // Check parent, check all children
        dCheck.bind('click', function () {
            sCheck.attr('checked', this.checked);
        });
        // Check child, uncheck parent and siblings
        sCheck.bind('click', function () {
            var me = $(this);
            if (dCheck.attr('checked')) {
                dCheck.attr('checked', false);
                sCheck.attr('checked', false);
                me.attr('checked', true);
            } else {
                me.attr('checked', this.checked);
            }
        });

    });
});

function fixOffset(flyout) {
    var visible = false,
        winH = $(window).height(),
        winOffset = $(window).scrollTop(),
        flyoutH = flyout.outerHeight(),
        flyoutOffset = flyout.offset(),
        flyoutTop = flyoutOffset.top,
        moveUp;

    if (flyout.is(':visible')) {
        visible = true;
    }

    if (visible && $('body').attr('class').indexOf('ie6') == -1 || $('#page-container').attr('class').indexOf('ie6') == -1) {
        /*if ((flyoutH + flyoutTop) > winH) {
        moveUp = -(((flyoutH + flyoutTop) - winOffset) - winH) + 'px'; //-((flyoutH + flyoutTop) - winH) + 'px';
        flyout.css({'top': moveUp});
        }*/
        if ((flyoutH + flyoutTop) > (winH + winOffset)) {
            moveUp = -((flyoutH + (flyoutTop - winOffset)) - winH) + 'px';
            flyout.css({ 'top': moveUp });
        }
    }
}

function closeOut() {
    $(document).bind('click', function () {
        if ($('.selectList').find('ul.open').length > 0) {
            $('.selectList').find('ul.open').find('ul.selectListDropdown').slideUp(250);
            $('.selectList').find('ul.open').removeClass('open');
        }
        $(document).unbind('click');
    });
}
