﻿/// <reference path="~/Resources/js/jquery-1.2.6-intellisense.js" />

$(function() {
    $('.group').parents('.panel').each(function() {
        var items = $('.group li', $(this));
        var columns = $('.column', $(this));
        var rows = Math.ceil(items.length / columns.length);

        var html = $('<div></div>');
        var column = $('<div class="column"></div>');
        var ul = $('<ul></ul>');
        var columnNo = 1;

        items.each(function(i) {
            if (i > (columnNo * rows) && $(this).hasClass('title')) {
                column.append(ul);
                ul = $('<ul></ul>');
                html.append(column);
                column = $('<div class="column"></div>');
                columnNo++;
            } else if (i > 0 && $(this).hasClass('title')) {
                column.append(ul);
                ul = $('<ul></ul>');
            }

            ul.append(this);
        });

        column.append(ul);
        html.append(column);

        if ($('.column', html).length < columns.length) {
            var lastUl = $('.column:last ul:last', html);
            lastUl.remove();
            html.append($('<div class="column"></div>').append(lastUl));
        }

        $(this).html($('.column', html));
    });

    $('#main-menu .promotion-area').parents('.panel').each(function() {
        $('.promotion-area', $(this)).each(function() {
            var promotionArea = $(this);

            var column = promotionArea.parents('.column:first');

            var li = promotionArea.parents('li:first');
            var ul = li.parent();

            var index = 0;
            $('li', ul).each(function(i) {
                if ($('.promotion-area', $(this)).length > 0)
                    index = i;
            });

            promotionArea.parents('li:first').remove();

            promotionArea = $('<div class="column"></div>').append(promotionArea);

            if (index == 0)
                column.before(promotionArea);
            else
                column.after(promotionArea);
        });
    });

    $(".top-menu a[name='drop-down']")
        .hover(function() {
            var id = $(this).attr('href').substring(1);
            var panel = $('#panel-' + id);

            $('.panel').each(function() {
                if (this.id != panel.id)
                    $(this).hide();
            });

            panel.data("cancelHide", true)
                 .css('left', $(this).position().left)
                 .fadeIn();

            if (panel.data("sizeSet") != true) {
                panel.width(getPanelWidth(panel))
                     .height(getPanelHeight(panel));
                panel.data("sizeSet", true);
            }

            $('.panel').css('z-index', 1000);
            panel.css('z-index', 2000);
        }, function() {
            var id = $(this).attr('href').substring(1);
            var panel = $('#panel-' + id);
            panel.data("cancelHide", false);
            setTimeout(function() {
                if (!panel.data("cancelHide")) {
                    panel.fadeOut();
                }
            }, 500);
        });

    $(".panel")
        .hover(function() {
            var panel = $(this);
            panel.data("cancelHide", true);
            panel.css('left', $(this).position().left);
            panel.fadeIn();
            panel.css('z-index', 1);
        }, function() {
            var panel = $(this);
            panel.data("cancelHide", false);
            setTimeout(function() {
                if (!panel.data("cancelHide")) {
                    panel.fadeOut();
                }
            }, 500);
        });
});

function getPanelWidth(panel) {
    var width = 0;
    $(".column", panel).each(function() {
        width += $(this).outerWidth();
    });
    return width + 40;
}

function getPanelHeight(panel) {
    var height = 0;
    $(".column", panel).each(function() {
        var tmp = $(this).outerHeight();
        if (tmp > height)
            height = tmp;
    });
    return height;
}

