var Layout = function () { // IE mode var isRTL = false; var isIE8 = false; var isIE9 = false; var isIE10 = false; var isIE11 = false; var responsive = true; var responsiveHandlers = []; var handleInit = function() { if ($('body').css('direction') === 'rtl') { isRTL = true; } isIE8 = !! navigator.userAgent.match(/MSIE 8.0/); isIE9 = !! navigator.userAgent.match(/MSIE 9.0/); isIE10 = !! navigator.userAgent.match(/MSIE 10.0/); isIE11 = !! navigator.userAgent.match(/MSIE 11.0/); if (isIE10) { jQuery('html').addClass('ie10'); // detect IE10 version } if (isIE11) { jQuery('html').addClass('ie11'); // detect IE11 version } } // runs callback functions set by App.addResponsiveHandler(). var runResponsiveHandlers = function () { // reinitialize other subscribed elements for (var i in responsiveHandlers) { var each = responsiveHandlers[i]; each.call(); } } // handle the layout reinitialization on window resize var handleResponsiveOnResize = function () { var resize; if (isIE8) { var currheight; $(window).resize(function () { if (currheight == document.documentElement.clientHeight) { return; //quite event since only body resized not window. } if (resize) { clearTimeout(resize); } resize = setTimeout(function () { runResponsiveHandlers(); }, 50); // wait 50ms until window resize finishes. currheight = document.documentElement.clientHeight; // store last body client height }); } else { $(window).resize(function () { if (resize) { clearTimeout(resize); } resize = setTimeout(function () { runResponsiveHandlers(); }, 50); // wait 50ms until window resize finishes. }); } } var handleIEFixes = function() { //fix html5 placeholder attribute for ie7 & ie8 if (isIE8 || isIE9) { // ie8 & ie9 // this is html5 placeholder fix for inputs, inputs with placeholder-no-fix class will be skipped(e.g: we need this for password fields) jQuery('input[placeholder]:not(.placeholder-no-fix), textarea[placeholder]:not(.placeholder-no-fix)').each(function () { var input = jQuery(this); if (input.val() == '' && input.attr("placeholder") != '') { input.addClass("placeholder").val(input.attr('placeholder')); } input.focus(function () { if (input.val() == input.attr('placeholder')) { input.val(''); } }); input.blur(function () { if (input.val() == '' || input.val() == input.attr('placeholder')) { input.val(input.attr('placeholder')); } }); }); } } // Handles scrollable contents using jQuery SlimScroll plugin. var handleScrollers = function () { $('.scroller').each(function () { var height; if ($(this).attr("data-height")) { height = $(this).attr("data-height"); } else { height = $(this).css('height'); } $(this).slimScroll({ allowPageScroll: true, // allow page scroll when the element scroll is ended size: '7px', color: ($(this).attr("data-handle-color") ? $(this).attr("data-handle-color") : '#bbb'), railColor: ($(this).attr("data-rail-color") ? $(this).attr("data-rail-color") : '#eaeaea'), position: isRTL ? 'left' : 'right', height: height, alwaysVisible: ($(this).attr("data-always-visible") == "1" ? true : false), railVisible: ($(this).attr("data-rail-visible") == "1" ? true : false), disableFadeOut: true }); }); } var handleSearch = function() { $('.search-btn').click(function () { if($('.search-btn').hasClass('show-search-icon')){ if ($(window).width()>767) { $('.search-box').fadeOut(300); } else { $('.search-box').fadeOut(0); } $('.search-btn').removeClass('show-search-icon'); } else { if ($(window).width()>767) { $('.search-box').fadeIn(300); } else { $('.search-box').fadeIn(0); } $('.search-btn').addClass('show-search-icon'); } }); // close search box on body click if($('.search-btn').size() != 0) { $('.search-box, .search-btn').on('click', function(e){ e.stopPropagation(); }); $('body').on('click', function() { if ($('.search-btn').hasClass('show-search-icon')) { $('.search-btn').removeClass("show-search-icon"); $('.search-box').fadeOut(300); } }); } } var handleMenu = function() { $(".header .navbar-toggle").click(function () { if ($(".header .navbar-collapse").hasClass("open")) { $(".header .navbar-collapse").slideDown(300) .removeClass("open"); } else { $(".header .navbar-collapse").slideDown(300) .addClass("open"); } }); } var handleSubMenuExt = function() { $(".header-navigation .dropdown").on("hover", function() { if ($(this).children(".header-navigation-content-ext").show()) { if ($(".header-navigation-content-ext").height()>=$(".header-navigation-description").height()) { $(".header-navigation-description").css("height", $(".header-navigation-content-ext").height()+22); } } }); } var handleSidebarMenu = function () { $(".sidebar .dropdown > a").click(function (event) { if ($(this).next().hasClass('dropdown-menu')) { event.preventDefault(); if ($(this).hasClass("collapsed") == false) { $(this).addClass("collapsed"); $(this).siblings(".dropdown-menu").slideDown(300); } else { $(this).removeClass("collapsed"); $(this).siblings(".dropdown-menu").slideUp(300); } } }); } function handleDifInits() { $(".header .navbar-toggle span:nth-child(2)").addClass("short-icon-bar"); $(".header .navbar-toggle span:nth-child(4)").addClass("short-icon-bar"); } function handleUniform() { if (!jQuery().uniform) { return; } var test = $("input[type=checkbox]:not(.toggle), input[type=radio]:not(.toggle, .star)"); if (test.size() > 0) { test.each(function () { if ($(this).parents(".checker").size() == 0) { $(this).show(); $(this).uniform(); } }); } } var handleFancybox = function () { if (!jQuery.fancybox) { return; } jQuery(".fancybox-fast-view").fancybox(); if (jQuery(".fancybox-button").size() > 0) { jQuery(".fancybox-button").fancybox({ groupAttr: 'data-rel', prevEffect: 'none', nextEffect: 'none', closeBtn: true, helpers: { title: { type: 'inside' } } }); $('.fancybox-video').fancybox({ type: 'iframe' }); } } // Handles Bootstrap Accordions. var handleAccordions = function () { jQuery('body').on('shown.bs.collapse', '.accordion.scrollable', function (e) { Layout.scrollTo($(e.target), -100); }); } // Handles Bootstrap Tabs. var handleTabs = function () { // fix content height on tab click $('body').on('shown.bs.tab', '.nav.nav-tabs', function () { handleSidebarAndContentHeight(); }); //activate tab if tab id provided in the URL if (location.hash) { var tabid = location.hash.substr(1); $('a[href="#' + tabid + '"]').click(); } } var handleMobiToggler = function () { $(".mobi-toggler").on("click", function(event) { event.preventDefault();//the default action of the event will not be triggered $(".header").toggleClass("menuOpened"); $(".header").find(".header-navigation").toggle(300); }); }; //js获取项目根路径,如: http://localhost:8080/ems var getRootPath=function () { //获取当前网址,如: http://localhost:8080/ems/Pages/Basic/Person.jsp var curWwwPath = window.document.location.href; //获取主机地址之后的目录,如: /ems/Pages/Basic/Person.jsp var pathName = window.document.location.pathname; var pos = curWwwPath.indexOf(pathName); //获取主机地址,如: http://localhost:8080 var localhostPath = curWwwPath.substring(0, pos); //获取带"/"的项目名,如:/ems var projectName = ""; if (pathName.indexOf("hxyhweb") == 1) { projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1); } return(localhostPath + projectName); }; var handleTheme = function () { var panel = $('.color-panel'); var rootPath=getRootPath(); // handle theme colors var setColor = function (color) { $('#style-color').attr("href", rootPath+"/stc/assets/frontend/layout/css/themes/" + color + ".css"); //$('.corporate .site-logo img').attr("src", rootPath+"/stc/assets/frontend/layout/img/logos/logo-corp-" + color + ".png"); //$('.ecommerce .site-logo img').attr("src", rootPath+"/stc/assets/frontend/layout/img/logos/logo-shop-" + color + ".png"); } $('.icon-color', panel).click(function () { $('.color-mode').show(); $('.icon-color-close').show(); }); $('.icon-color-close', panel).click(function () { $('.color-mode').hide(); $('.icon-color-close').hide(); }); // $('li', panel).click(function () { var color = $('li', panel).attr("data-style"); //alert(color); setColor(color); $('.inline li', panel).removeClass("current"); $(this).addClass("current"); // }); } return { init: function () { // init core variables handleTheme(); handleInit(); handleResponsiveOnResize(); handleIEFixes(); handleSearch(); handleFancybox(); handleDifInits(); handleSidebarMenu(); handleAccordions(); handleMenu(); handleScrollers(); handleSubMenuExt(); handleMobiToggler(); }, initUniform: function (els) { if (els) { jQuery(els).each(function () { if ($(this).parents(".checker").size() == 0) { $(this).show(); $(this).uniform(); } }); } else { handleUniform(); } }, initTwitter: function () { }, initTouchspin: function () { $(".product-quantity .form-control").TouchSpin({ buttondown_class: "btn quantity-down", buttonup_class: "btn quantity-up" }); $(".quantity-down").html(""); $(".quantity-up").html(""); }, initFixHeaderWithPreHeader: function () { jQuery(window).scroll(function() { if (jQuery(window).scrollTop()>37){ jQuery("body").addClass("page-header-fixed"); } else { jQuery("body").removeClass("page-header-fixed"); } }); }, initNavScrolling: function () { function NavScrolling () { if (jQuery(window).scrollTop()>60){ jQuery(".header").addClass("reduce-header"); } else { jQuery(".header").removeClass("reduce-header"); } } NavScrolling(); jQuery(window).scroll(function() { NavScrolling (); }); }, initOWL: function () { $(".owl-carousel5-brands").owlCarousel({ pagination: false, navigation: true, items: 5, addClassActive: true, itemsCustom : [ [0, 1], [320, 1], [480, 2], [660, 2], [700, 3], [768, 3], [992, 4], [1024, 4], [1200, 5], [1400, 5], [1600, 5] ] }); $(".owl-carousel5").owlCarousel({ pagination: true, navigation: false, items: 5, addClassActive: true, itemsCustom : [ [0, 1], [320, 4], [360, 4], [400, 5], [660, 5], [700, 5], [768, 5], [992, 5], [1024, 5], [1200, 5], [1400, 5], [1600, 5] ] }); $(".owl-carousel4").owlCarousel({ pagination: false, navigation: true, items: 4, addClassActive: true }); $(".owl-carousel3").owlCarousel({ pagination: false, navigation: true, items: 3, addClassActive: true, itemsCustom : [ [0, 1], [320, 1], [480, 2], [700, 3], [768, 2], [1024, 3], [1200, 3], [1400, 3], [1600, 3] ] }); $(".owl-carousel2").owlCarousel({ pagination: false, navigation: true, items: 2, addClassActive: true, itemsCustom : [ [0, 1], [320, 1], [480, 2], [700, 3], [975, 2], [1200, 2], [1400, 2], [1600, 2] ] }); }, /*initImageZoom: function () { $('.product-main-image').zoom({url: $('.product-main-image img').attr('data-BigImgSrc')}); },*/ /* initFlexSlider:function(){ $(".flexslider").flexslider({ slideshowSpeed: 4000, //展示时间间隔ms animationSpeed: 400, //滚动时间ms touch: true //是否支持触屏滑动 }); },*/ initSliderRange: function () { $( "#slider-range" ).slider({ range: true, min: 0, max: 500, values: [ 50, 250 ], slide: function( event, ui ) { $( "#amount" ).val( "$" + ui.values[ 0 ] + " - $" + ui.values[ 1 ] ); } }); $( "#amount" ).val( "$" + $( "#slider-range" ).slider( "values", 0 ) + " - $" + $( "#slider-range" ).slider( "values", 1 ) ); }, // wrapper function to scroll(focus) to an element scrollTo: function (el, offeset) { var pos = (el && el.size() > 0) ? el.offset().top : 0; if (el) { if ($('body').hasClass('page-header-fixed')) { pos = pos - $('.header').height(); } pos = pos + (offeset ? offeset : -1 * el.height()); } jQuery('html,body').animate({ scrollTop: pos }, 'slow'); }, //public function to add callback a function which will be called on window resize addResponsiveHandler: function (func) { responsiveHandlers.push(func); }, scrollTop: function () { App.scrollTo(); }, gridOption1: function () { $(function(){ $('.grid-v1').mixitup(); }); } }; }();