﻿
$.fn.megaMeny = function (arg) {
    var that = $(this), isOpenBool = false, lastOpenTabBlock = '', lastOpenLi = '', timeVar = '', menuIsClickOpened = false;
    that.find('.menyDropDownWrap').hide();
    var settings = {
        'animate': false,
        'time': 400,
        'timeToClose': 0
    };
    settings = $.extend({}, settings, arg);

    var openMeny = function (obj, liobj) {
        lastOpenTabBlock = obj; // set last open
        var flik = liobj.parent();
        //Set vars
        var colWidth = 207,
             totalColWidth = (obj.find('.column').length * 207) + 6,
             zeroPoint = flik.parent().position().left,
             flikPos = liobj.position().left,
             positionMeny = zeroPoint + flikPos,
             rekPos = flikPos - 40,
             allTotal = (rekPos + zeroPoint) + totalColWidth;

        if (allTotal > 930 && allTotal < 1000) {
            obj.show();
            obj.css({ 'left': rekPos - (allTotal - 930), 'width': totalColWidth });
        } else if (allTotal > 1000) {
            obj.show();
            obj.css({ 'left': rekPos - (allTotal - 930) + 47, 'width': totalColWidth });
        } else {
            obj.show();
            obj.css({ 'left': rekPos, 'width': totalColWidth });
        }
    };

    var closeMeny = function () {
        lastLi.removeClass('hover');
        lastOpenTabBlock.hide();
    };

    var positonMM = function (obj) {
        return obj.offset();
    };

    var thatOnHover = that,
        thatOnClick = that.filter(':has(>.clickToOpen)'),
        iJustClickedAlink = false;

    thatOnClick.click(function (e) {
        var obj = $(this),
            dropDownWrap = obj.children('.menyDropDownWrap');

        if (menuIsClickOpened) {
            closeMeny();
            menuIsClickOpened = false;
        } else {
            lastLi = obj;
            obj.addClass('hover');
            openMeny(dropDownWrap, obj);
            menuIsClickOpened = true;
        }
        if (!iJustClickedAlink)
            return false;
    });
    // Work-around for event bubbling
    thatOnClick.find('li a').click(function () {
        iJustClickedAlink = true;
    });

    $(document).click(function () {
        if (menuIsClickOpened) {
            closeMeny();
            menuIsClickOpened = false;
        }
    });

    thatOnHover.hover(function () {
        if (menuIsClickOpened) return;

        var obj = $(this);
        lastLi = obj;
        obj.addClass('hover');
        openMeny(obj.children('.menyDropDownWrap'), obj);
    }, function () {
        if (menuIsClickOpened) return;

        closeMeny();
    });
};

