//Global Variables
$sidebarState = window.localStorage.getItem('sidebarState');
$ua = navigator.userAgent;
$.extend($.support, {
    touch: "ontouchend" in document
});
if($.support.touch) {
    mouseenterEvent = clickEvent = "touchstart";
} else {
    clickEvent = "click";
    mouseenterEvent = "mouseenter";
};


!function ($) {
    // Focus first element
    $.fn.focusFirstField = function(){
        $this = this;
        $this.find(":text:visible:enabled").filter(function(){
            return $(this).parents(":hidden").size() == 0;
        }).slice(0,1).focus();
        return this;
    }


    //Checked Toggle
    $.fn.togglebox = function () {
        var $checked = this;
        $checked.each(function() {
            if(!$(this).closest('div').hasClass('togglebox')) {
                $(this).wrap('<div class="togglebox" />');
                $('<label><b></b></label>').insertAfter($(this));
            }
        })
        $checked.each(function(i) {
            if($(this).attr('type') == "checkbox") {
                if($(this).prop('checked')) {
                    $(this).parent('.togglebox').addClass('disabled').closest('li').addClass('disabled');
                };
                $(this).on({
                    change: function() {
                        $(this).parent('.togglebox').toggleClass('disabled');
                        $(this).closest('tr').toggleClass('disable');
                    }
                });
            };
            if($(this).attr('type') == "radio") {
                if(!$(this).prop('checked')) {
                    $(this).parent('.togglebox').addClass('disabled').closest('li').addClass('disabled');
                    $(this).closest('tr').addClass('disable');
                };
                $(this).on({
                    change: function() {
                        $checked.each(function(i) {
                            if(!$(this).parent('.togglebox').hasClass('disabled')) {
                                $(this).parent('.togglebox').toggleClass('disabled');
                                $(this).closest('tr').toggleClass('disable');
                            };
                        });
                        $(this).parent('.togglebox').toggleClass('disabled')
                        $(this).closest('tr').toggleClass('disable');
                    }
                });
            };
            if($('#sitemap').length) {
                $(this).on({
                    change: function() {
                        $(this).closest('li').toggleClass('disabled');
                        if($(this).prop('checked')) {
                            $(this).attr('checked', 'checked');
                            $(this).parents('h6')
                                   .siblings('ul')
                                   .find('li')
                                   .addClass('disabled')
                                   .find('h6 .togglebox')
                                   .addClass('disabled')
                                   .find('input[type="checkbox"]')
                                   .prop('checked', true)
                                   .attr('checked', 'checked');
                        } else {
                            $(this).removeAttr('checked');
                            $(this).parents('h6')
                                   .siblings('ul')
                                   .find('li')
                                   .removeClass('disabled')
                                   .find('h6 .togglebox')
                                   .removeClass('disabled')
                                   .find('input[type="checkbox"]')
                                   .prop('checked', false)
                                   .removeAttr('checked');
                        };
                        $('.toggle-check').each(function(i) {
                            var len = $(this).closest('ul').children('li').length,
                                checLen = $(this).closest('ul').children('li').find('input[checked]').length,
                                checLen = checLen - $(this).closest('ul').children('li').find('ul').find('input[checked]').length;
                            if(len == checLen) {
                                $(this).closest('ul')
                                       .parent('li')
                                       .addClass('disabled')
                                       .children('h6')
                                       .find('.togglebox')
                                       .addClass('disabled')
                                       .find('input[type="checkbox"]')
                                       .prop('checked', true)
                                       .attr('checked', 'checked');
                            } else {
                                $(this).closest('ul')
                                       .parent('li')
                                       .removeClass('disabled')
                                       .children('h6')
                                       .find('.togglebox')
                                       .removeClass('disabled')
                                       .find('input[type="checkbox"]')
                                       .prop('checked', false)
                                       .removeAttr('checked');
                            };
                        });
                    },
                });
            };
        });
    };


    // Search Clear
    $.fn.searchClear = function (param){
        _defaultSettings = {
            inputName: ':input',
            inputIcon: 'inputIcon',
            clearBtnIcon: 'clearBtnIcon',
            liveFilter: false,
        };
        _set = $.extend(_defaultSettings, param);
        $this = this;
        $input = this.find(_set.inputName);
        $tmp = '<i class="'+_set.inputIcon+'"></i><i class="'+_set.clearBtnIcon+' search-clear"></i>';
        $input.wrap('<div class="sc-field" />');
        $this.find('.sc-field').prepend($tmp);
        $searchClear = $this.find(".search-clear");
        function run(e) {
            $searchClear.hide();
            $($input).each(function() {
                if($(this).val().length > 0) {
                    $(this).prev($searchClear).show();
                }else {
                    $(this).prev($searchClear).hide();
                }
                $(this).on("blur keyup", function(){
                    if($(this).val().length > 0) {
                        $(this).prev($searchClear).show();
                    }else {
                        $(this).prev($searchClear).hide();
                    }
                });
                if(_set.liveFilter) {
                    $(this).prevAll($searchClear).on({
                        click: function(){
                            $(this).hide();
                            $(this).next($input).val("");
                            $('.checkbox-card .mark').removeClass('mark')
                        },
                    });
                } else {
                    $(this).prevAll($searchClear).on({
                        click: function(){
                            $(this).hide();
                            $(this).next($input).val("");
                        },
                    });
                }
            });
        }
        
        // Checking IE10
        // if Windows 8 and IE is ture. remove search clear buttom and fix text input padding-right
        if(/Windows NT 6.2/g.test(navigator.userAgent)){
            if(/MSIE/g.test(navigator.userAgent)){
                $searchClear.remove();
                $input.css({
                    'padding-right': '5px',
                });
            }else{run()}
        }else{run()}
    }


    // Fixed Nav
    fixedNav = function () {
        if($('.fixed-nav').length){
            var $fixedNav = $('.fixed-nav');
            if($sidebarState){
                $fixedNav.addClass('open');
            }
            $fixedNav.on(clickEvent, function() {
                if($sidebarState) {
                    window.localStorage.removeItem('sidebarState');
                    $fixedNav.removeClass('open');
                }else{
                    window.localStorage.setItem('sidebarState', 1);
                    $fixedNav.addClass('open');
                }
                $sidebarState = window.localStorage.getItem('sidebarState')
            });
        }
    };


    // Sidebar
    sidebarNav = function () {
        var $sidebar = $('#sidebar'),
            $sidebarMenu = $('#sidebar-menu'),
            $scroller = $('.scroller'),
            $sidebarNav = $('.sidebar-nav'),
            $el = $('.sidebar-nav').children('li'),
            $elIndex = null,
            $blockList = $('.sub-nav-block-list'),
            $block = $('.sub-nav-block'),
            $blockIndex = 0,
            $arrow = $('.sub-nav-arrow'),
            $wrap = $('#main-wrap'),
            $wrapLeft = $wrap.css('margin-left'),
            $position = 0,
            $arrowHeightFormat = $('.position').height()-8;
        if($('#sidebar').length>0) {
            $wrap.css({'margin-left': 61});
            $wrapLeft = 61;
        }
        if($el.hasClass('active')) {
            // Menu defaults active
            $elIndex = $el.filter('.active').index();
            if($sidebarState && !$sidebarNav.hasClass('no-sub-nav')) {
                $block.eq($elIndex).addClass('show');
                $blockList.css({'width': 180});
                $wrap.css({
                    'margin-left': 241,
                });
            }

            // Arrow defaults position
            $position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop();
            $arrow.css({
                'top': $position,
            });
        }
        if($.support.touch && !$sidebarNav.hasClass('no-sub-nav')) {
            $el.find('a').removeAttr('href');
        };
        $el.on(mouseenterEvent, function(e) {
            $block.siblings().removeClass('show').eq($(this).index()).addClass('show');
            $arrow.stop(true, false).animate({
                top: ($(this).offset().top-$(this).height()/2)+$arrowHeightFormat-$(document).scrollTop(),
            },{
                duration: 500,
                easing: 'easeInOutBack',
            });
            if(!$sidebarState || !$el.hasClass('active')) {
                $blockList.css({'width': 180});
                if($('#pageslide').length) {
                    if($('#pageslide').is(":hidden")) {
                        $wrap.css({
                            'margin-left': $blockList.width()+$sidebarNav.width(),
                        });
                    }
                }else{
                    $wrap.css({
                        'margin-left': $blockList.width()+$sidebarNav.width(),
                    });
                }
                // if($('.topnav').length) {
                //     $('.topnav').css({
                //         'left': $blockList.width()+$sidebarNav.width()+20,
                //     });
                // }
                if($('.bottomnav').length) {
                    $('.bottomnav').css({
                        'left': $blockList.width()+$sidebarNav.width()+20,
                    });
                }
                $sidebar.css({
                    'width': $blockList.width()+$sidebarNav.width(),
                });
            }
        });
        if ($sidebarNav.hasClass('no-sub-nav')) {
            $sidebar.on('mouseleave', function() {
                $arrow.stop(true, false).animate({
                    'top': $position,
                },{
                    duration: 500,
                    easing: 'easeInOutBack',
                });
            })
        };
        // $el.on('mouseleave', function() {
        //     $el.hasClass('active') ? $position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop() : 0;
        //     $(this).hasClass('active') ? '':$(this).children('span').removeClass('hover');
        // });
        $block.on({
            mouseenter: function() {
                $blockIndex = $block.filter('.sub-nav-block show').index();
                $el.eq($blockIndex).hasClass('active') ? '':$el.eq($blockIndex).children('span').addClass('hover');
            },
            mouseleave: function() {
                $block.removeClass('show');
                if(!$sidebarState || !$el.hasClass('active')) {
                    $blockList.css({'width': 0});
                    if($('#pageslide').length) {
                        if($('#pageslide').is(":hidden")) {
                            $wrap.css({
                                'margin-left': $wrapLeft,
                            });
                            // if($('.topnav').length) {
                            //     if($sidebarState) {
                            //         $('.topnav').css({
                            //             'left': 261,
                            //         });
                            //     }
                            // }
                        }
                    } else {
                        $wrap.css({
                            'margin-left': $blockList.width()+$sidebarNav.width(),
                        });
                    }
                    // if($('.topnav').length) {
                    //     $('.topnav').css({
                    //         'left': $blockList.width()+$sidebarNav.width()+20,
                    //     });
                    // }
                    if($('.bottomnav').length) {
                        $('.bottomnav').css({
                            'left': $blockList.width()+$sidebarNav.width()+20,
                        });
                    }
                    $sidebar.css({'width': 61});
                }else{
                    $block.eq($elIndex).addClass('show');
                };


                if($elIndex === null) {
                    $position = 0;
                } else {
                    $position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop();
                }
                $arrow.stop(true, false).animate({
                    top: $position,
                },{
                    duration: 500,
                    easing: 'easeInOutBack',
                });
            }
        });
        // Touch Start
        $wrap.on({
            touchstart: function() {
                if(!$sidebarState || !$el.hasClass('active')) {
                    if($block.hasClass('show')) {
                        $blockIndex = $block.filter('.sub-nav-block show').index();
                        $block.removeClass('show');
                        $blockList.css({'width': 0});
                        $wrap.css({
                            'margin-left': $wrapLeft,
                        });
                        $sidebar.css({'width': 61});
                        $arrow.stop().animate({
                            top: $position,
                        },{
                            duration: 500,
                            easing: 'easeInOutBack',
                        });
                        $el.eq($blockIndex).hasClass('active') ? '':$el.eq($blockIndex).children('span').removeClass('hover');
                    }
                }
            }
        });
        // Sidebar Nav Drag
        if(/MSIE 8.0/g.test($ua)){
            $sidebarMenu.addClass('nano')
                        .css({'position': 'relative', 'top': '0px'})
                        .children('.scroller')
                        .addClass('content')
                        .removeClass('scroller');
            $sidebarMenu.nanoScroller({ scrollTop: 0 });
        } else {
            if($('#sidebar').length) {
                var sidebarMenu = new iScroll('sidebar-menu', {
                    vScrollbar: true,
                    scrollbarClass: 'myScrollbar',
                    onBeforeScrollStart: function (e) {
                        var target = e.target;
                        clearTimeout(this.hoverTimeout);
                        while (target.nodeName != "SPAN") target = target.parentNode;
                        $target = $(target.parentNode).index();
                    },
                    touch: function () {
                        if (this.hoverTarget) {
                            clearTimeout(this.hoverTimeout);
                            $('.sub-nav-block').removeClass('show')
                            $('.sub-nav-block').eq($target).addClass('show')
                        }
                    },
                });
            }
        };
    };



    // Initial State
    initialState = function () {
        if($('.bottomnav').length) {
            var $bottomnavHeight = $('.bottomnav').outerHeight();
            $('.wrap-inner').css({
                'padding-bottom': $bottomnavHeight,
            })
            if($sidebarState) {
                if(!$('.sidebar-nav').hasClass('no-sub-nav')) {
                    $('.bottomnav').css({
                        'left': 261,
                    });
                }
            }
        }
        // if($('.topnav').length) {
        //     if($sidebarState) {
        //         $('.topnav').css({
        //             'left': 261,
        //         });
        //     }
        // }
    };
}(window.jQuery);


// Open Slide
function openSlide() {
    var $openSlide = $('.open-slide'),
        $pageslideW;

    $(window).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
    $(window).resize(function() {
        $(this).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
    })
    $openSlide.each(function() {
        if($(this).hasClass('view-page')) {
            $(this).pageslide({ W: $pageslideW, iframe: true});
        } else if($('.item-groups').length) {
            $(this).pageslide({ W: 324});
        } else {
             $(this).pageslide();
        };
    });
    $('.bottomnav .open-slide').on('click', function() {
        $('.table tr').removeClass('active');
        $('.filter-item').removeClass('active')
    });
}

function formTip() {
    if($('.main-forms').length && $('.add-on').length) {
        $('.main-forms .add-on').tooltip();
    }
}


// Document Ready
$(function() {
    initialState();
    $('#login').on('shown', function () {
        $(document.body).addClass('modalBlur');
        $('#login').focusFirstField();
    }).on("hide", function() {
        $(document.body).removeClass('modalBlur');
    });
    $('#orbit-bar .searchClear').searchClear({
        inputName: '.search-query',
        inputIcon: 'icon-search',
        clearBtnIcon: 'icons-cross-3',

    });
    $('#filter .searchClear').searchClear({
        inputName: '.search-query',
        inputIcon: 'icon-search',
        clearBtnIcon: 'icons-cross-3',
        liveFilter: true,
    });
    $('#member-filter').on('shown', function() {
        $(this).find('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
    });
    if($('#sidebar').length) {
        if(!/MSIE 8.0/g.test(navigator.userAgent)){
            document.getElementById('sidebar').addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
        }
        demo_fu1();
    }
    if($('#pageslide').length) {
        openSlide();
    }
    if($('.tags').length) {
        $('#filter-input').fastLiveFilter('#tags-list', '.filter-item', '.tag');
    }
    if($('#card-list').length) {
        $('#filter-input').fastLiveFilter('#card-list', '.filter-item', '.user-name');
    }
    if($('.toggle-check').length) {
        $('.toggle-check').togglebox();
    }
    formTip()
    sidebarNav();
});