new-menu.js 10.8 KB
$(function() {
    newMainMenu()
    function newMainMenu() {
        var newMenu = $('.main-menu-new');

        newMenu.find('li').each(function() {
            if ($(this).find('ul').length > 0) {
                $(this).addClass('has-list')
            }
        });

        if(!(newMenu.hasClass('demo-main-menu'))){
            newMenu.children('ul').addClass('level-' + (+(newMenu.children('ul').index()) + 1));
            newMenu.children('ul').find('li').children('ul').addClass('level-' + (+(newMenu.children('ul').find('li').children('ul').index()) + 1));
            newMenu.children('ul').find('li').children('ul').find('li').children('ul').addClass('level-3').removeClass('level-2');


            if(newMenu.hasClass('menu-view-2')){
                console.log('1111')
                newMenu.find('.level-1').find('.has-list').find('ul').css({minHeight:newMenu.find('.level-1').height() + 2})

            } else if(newMenu.hasClass('menu-view-3')){
                newMenu.children('ul').find('li').children('ul').find('li').children('ul').find('li').children('ul').addClass('level-4').removeClass('level-3');

            } else {

                newMenu.find('.level-2 li.has-list').each(function() {
                    var countLi = $(this).find('ul').find('li').length;
                    $(this).attr('data-li', countLi);
                });

                newMenu.find('.level-2').attr('data-ul', '0');

                newMenu.find('.level-2 li.has-list').each(function() {

                    var num1 = +($(this).attr('data-li'));
                    var num2 = +($(this).parent().attr('data-ul'));

                    if (num1 > num2) {
                        $(this).parent().attr('data-ul', num1)
                    }
                });

                newMenu.find('.level-2').each(function() {
                    var thisNum = +($(this).attr('data-ul'));

                    if ($(window).width() > 1200) {
                        $(this).attr('data-row', Math.ceil(thisNum / 4))
                    } else {
                        $(this).attr('data-row', Math.ceil(thisNum / 3))
                    }

                    $(this).attr('data-height', +($(this).attr('data-row')) * 140);

                    var minHeight = (+($(this).attr('data-height'))) + 47 + 2;

                    if($(this).find('ul').length>0) {

                        if(minHeight>=469) {
                            $(this).css({height: minHeight});
                            $(this).find('ul').css({minHeight: minHeight})
                        }
                    } else {
                        $(this).css({minHeight: 'auto'})
                    }

                });
            }


            $(window).resize(function() {
                newMenu.find('.level-2').each(function() {
                    var thisNum = +($(this)
                        .attr('data-ul'));

                    if ($(window)
                            .width() > 1200) {
                        $(this)
                            .attr('data-row', Math.ceil(thisNum / 4))
                    } else {
                        $(this)
                            .attr('data-row', Math.ceil(thisNum / 3))
                    }
                })
            });

            var timeoutMenuSecondRemove;
            var timeoutMenuSecondShow;
            var timeoutMenuSecondShow2;
            var timeoutMenuSecondShow3;

            var listUl = $('.main-menu-new ul');
            $('.main-menu-new ul li').hover(function() {
                var thisIs = $(this);
                var thisNesting = thisIs.parent();
                var thisParent = thisIs.parent('ul');

                if(thisIs.parents('.main-menu-new').hasClass('menu-view-3')) {
                    timeoutMenuSecondShow = setTimeout(function() {

                        if (thisIs.hasClass('has-list')) {

                            if ($('body')
                                    .find('#overlay-menu').length <= 0) {
                                $('body')
                                    .append('<div id="overlay-menu"></div>');
                            }

                            if (thisIs.hasClass('hover')) {
                            } else {
                                //$('.main-menu-new ul li').removeClass('hover');

                                thisIs.children('ul').removeClass('end-anim-ul');

                                thisIs.parent().find('li').removeClass('hover');
                                thisIs.addClass('hover');

                                setTimeout(function() {
                                    thisIs.children('ul').addClass('start-anim-ul')
                                }, 20);

                                setTimeout(function() {
                                    thisIs.children('ul').addClass('end-anim-ul');
                                    thisIs.children('ul').removeClass('start-anim-ul')
                                }, 310)
                            }

                        } else {
                            thisIs.parent().find('li').removeClass('hover');
                            thisIs.find('ul').removeClass('end-anim-ul');
                        }

                    }, 300)
                } else {
                    if (thisNesting.hasClass('level-1')) {
                        timeoutMenuSecondShow = setTimeout(function() {

                            if (thisIs.hasClass('has-list')) {

                                if ($('body')
                                        .find('#overlay-menu').length <= 0) {
                                    $('body')
                                        .append('<div id="overlay-menu"></div>');
                                }

                                if (thisIs.hasClass('hover')) {
                                } else {
                                    $('.main-menu-new ul li')
                                        .removeClass('hover');
                                    $('.main-menu-new ul li')
                                        .removeClass('hover2');

                                    thisIs.children('ul')
                                        .removeClass('end-anim-ul');
                                    $('.main-menu-new ul li ul')
                                        .removeClass('end-anim-ul2');
                                    thisIs.addClass('hover');

                                    setTimeout(function() {
                                        thisIs.children('ul')
                                            .addClass('start-anim-ul')
                                    }, 20);

                                    setTimeout(function() {
                                        thisIs.children('ul')
                                            .addClass('end-anim-ul');
                                        thisIs.children('ul')
                                            .removeClass('start-anim-ul')
                                    }, 310)
                                }

                            } else {
                                $('.main-menu-new ul li')
                                    .removeClass('hover');
                                $('.main-menu-new ul li')
                                    .removeClass('hover2');
                                $('.main-menu-new ul')
                                    .removeClass('end-anim-ul');
                                $('.main-menu-new ul li ul')
                                    .removeClass('end-anim-ul2');
                            }

                        }, 300)
                    }
                    if (thisNesting.hasClass('level-2') && thisNesting.hasClass('end-anim-ul')) {
                        timeoutMenuSecondShow2 = setTimeout(function() {
                            if (thisIs.hasClass('has-list')) {
                                if (thisIs.hasClass('hover2')) {

                                } else {
                                    $('.main-menu-new ul li')
                                        .removeClass('hover2');

                                    $('.main-menu-new ul')
                                        .removeClass('end-anim-ul2');
                                    thisIs.addClass('hover2');

                                    setTimeout(function() {
                                        console.log($(this)
                                            .height());
                                        thisIs.children('ul')
                                            .addClass('start-anim-ul2')

                                    }, 20);

                                    setTimeout(function() {
                                        thisIs.children('ul')
                                            .addClass('end-anim-ul2');
                                        thisIs.children('ul')
                                            .removeClass('start-anim-ul2')
                                    }, 410)
                                }
                            } else {
                                $('.main-menu-new ul li')
                                    .removeClass('hover2');
                                $('.main-menu-new ul')
                                    .removeClass('end-anim-ul2');
                            }

                        }, 300)

                    }
                }





            }, function() {
                var thisNesting = $(this).parent();
                var thisIs = $(this);
                if(thisIs.parents('.main-menu-new').hasClass('menu-view-3')) {
                    clearTimeout(timeoutMenuSecondShow);
                } else {
                    if (thisNesting.hasClass('level-1')) {
                        clearTimeout(timeoutMenuSecondShow);
                    }
                    if (thisNesting.hasClass('level-2')) {
                        clearTimeout(timeoutMenuSecondShow2);
                    }
                }

            });

            var timeoutOverlay;
            $('body').on('mouseover', '#overlay-menu', function() {
                    timeoutOverlay = setTimeout(function() {
                        $('#overlay-menu').remove();
                        $('.main-menu-new ul li')
                            .removeClass('hover');
                        $('.main-menu-new ul li')
                            .removeClass('hover2');
                        $('.main-menu-new ul li ul')
                            .removeClass('end-anim-ul');
                        $('.main-menu-new ul li ul')
                            .removeClass('end-anim-ul2');
                        $('.main-nav-item').removeClass('open');
                    }, 300)
                });
            $('body').on('mouseout', '#overlay-menu', function() {
                    clearTimeout(timeoutOverlay)
                })

        } else {


        }
    }
});