Advertisement
salmancreation

Script.js

Dec 5th, 2019
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function ($) {
  2.     var ua = window.navigator.userAgent;
  3.     var isIE = /MSIE|Trident/.test(ua);
  4.  
  5.     if ( !isIE ) {
  6.         //IE specific code goes here
  7.         "use strict";
  8.     }
  9.    
  10.     /*** Adobe typekit font */
  11.     try{Typekit.load({ async: true });}catch(e){};
  12.  
  13.     /*** Sticky header */
  14.     $(window).scroll(function(){
  15.         if($("body").scrollTop() > 0 || $("html").scrollTop() > 0) {
  16.             $(".header").addClass("stop");
  17.         } else {
  18.             $(".header").removeClass("stop");
  19.         }
  20.     });
  21.  
  22.     /*** Sidr Menu */
  23.     $('.navbar-toggle').sidr({
  24.         name: 'sidr-main',
  25.         side: 'left',
  26.         source: '#sidr',
  27.         displace: false,
  28.         renaming: false,
  29.     });
  30.  
  31.     $('.navbar-toggle.in').on('click', function(){
  32.         $.sidr('close', 'sidr-main');
  33.     });
  34.  
  35.     /*** Header Search */
  36.     $(".search-bar .search-icon").click(function(e) {
  37.         e.preventDefault();
  38.         $(".search-box").toggle();
  39.         // $("input.dgwt-wcas-search-input").focus();
  40.     });
  41.  
  42.     /*** Click To scroll */
  43.     $('.scrollDown').click(function() {
  44.           var target = $('#primary');
  45.           if (target.length) {
  46.             $('html,body').animate({
  47.               scrollTop: target.offset().top - 120
  48.             }, 1000);
  49.           }
  50.     });
  51.  
  52.     /*** Header height = gutter height */
  53.     function setGutterHeight(){
  54.         var header = document.querySelector('.header'),
  55.               gutter = document.querySelector('.header_gutter');
  56.         if (gutter) {
  57.             gutter.style.height = header.offsetHeight + 'px';
  58.         }
  59.     }
  60.     window.onload = setGutterHeight;
  61.     window.onresize = setGutterHeight;
  62.  
  63.  
  64.     /*** SVG Separator */
  65.     $('img.svg').each(function(){
  66.         var $img = $(this);
  67.         var imgID = $img.attr('id');
  68.         var imgClass = $img.attr('class');
  69.         var imgURL = $img.attr('src');
  70.         var dataColor = $img.attr('data-color');
  71.  
  72.         $.get(imgURL, function(data) {
  73.             // Get the SVG tag, ignore the rest
  74.             var $svg = $(data).find('svg');
  75.  
  76.             // Add replaced image's ID to the new SVG
  77.             if(typeof imgID !== 'undefined') {
  78.                 $svg = $svg.attr('id', imgID);
  79.             }
  80.  
  81.             // Add replaced image's classes to the new SVG
  82.             if(typeof imgClass !== 'undefined') {
  83.                 $svg = $svg.attr('class', imgClass+' replaced-svg');
  84.             }
  85.  
  86.             // Add replaced image's classes to the new SVG
  87.             if(typeof dataColor !== 'undefined') {
  88.                 $($svg[0].firstElementChild).css({ stroke :  dataColor });
  89.             }
  90.    
  91.             // Remove any invalid XML tags as per http://validator.w3.org
  92.             $svg = $svg.removeAttr('xmlns:a');
  93.            
  94.             // Check if the viewport is set, else we gonna set it if we can.
  95.             if(!$svg.attr('viewBox') && $svg.attr('height') && $svg.attr('width')) {
  96.                 $svg.attr('viewBox', '0 0 ' + $svg.attr('height') + ' ' + $svg.attr('width'))
  97.             }
  98.    
  99.             // Replace image with new SVG
  100.             $img.replaceWith($svg);
  101.    
  102.         }, 'xml');
  103.     });
  104.  
  105.     /*** Video Popup */
  106.     $('.popup-video').magnificPopup({
  107.         type: 'iframe',
  108.         midClick: true,
  109.         fixedBgPos: true,
  110.         removalDelay: 500,
  111.         removalDelay: 160,
  112.         preloader: false,
  113.         mainClass: 'mfp-fade',
  114.         fixedContentPos: false,
  115.         iframe: {
  116.         markup: '<div class="mfp-iframe-scaler mfp-custom-figure">'+  
  117.             '<div class="mfp-top-bar"><div class="mfp-title"></div></div>'+          
  118.             '<iframe class="mfp-iframe" frameborder="0" allowfullscreen></iframe>'+
  119.             '<div class="mfp-bottom-bar">'+
  120.               '<div class="mfp-close popup-arrow"></div>'+
  121.             '</div>'+
  122.           '</div>',
  123.         }
  124.     });
  125.  
  126.  
  127.     /*** Google map */
  128.     var mapElement = document.getElementById("gmap");
  129.     if( mapElement) {
  130.         var map;
  131.         google.maps.event.addDomListener(window, 'load', init);
  132.     }
  133.    
  134.     function init() {
  135.  
  136.         var google_map_setting = {
  137.             latitude: my_ajax_object.latitude,
  138.             longitude: my_ajax_object.longitude
  139.         };
  140.        
  141.         if (my_ajax_object.map_icon)
  142.         {
  143.             var image = my_ajax_object.map_icon;
  144.         }
  145.         else
  146.         {
  147.             var image = '../images/map-pin.png';
  148.         }
  149.        
  150.         var mapOptions = {
  151.             zoomControl: true,
  152.             disableDefaultUI: true,
  153.             draggable: true,
  154.             scrollwheel: false,
  155.             zoom: parseInt(my_ajax_object.map_zoom),
  156.             center: new google.maps.LatLng( google_map_setting.latitude, google_map_setting.longitude),
  157.         };
  158.  
  159.         var contentString = my_ajax_object.address;
  160.         var infowindow = new google.maps.InfoWindow({
  161.             content: contentString,
  162.             maxWidth: 200
  163.         });
  164.  
  165.         var map = new google.maps.Map(mapElement, mapOptions);
  166.  
  167.         var marker = new google.maps.Marker({
  168.             position: new google.maps.LatLng( google_map_setting.latitude, google_map_setting.longitude),
  169.             map: map,
  170.             icon: image,
  171.         });
  172.  
  173.         google.maps.event.addListener(marker, 'click', function() {
  174.             infowindow.open(map, marker);
  175.         });
  176.  
  177.         var center = map.getCenter();
  178.         google.maps.event.addDomListener(window, 'resize', function() {
  179.             map.setCenter(center);
  180.         });
  181.     }
  182.  
  183.     /*** Generated by CoffeeScript 1.9.2 */
  184.     function stickyKit() {
  185.         var reset_scroll;
  186.  
  187.         $(function() {
  188.             return $("[data-sticky_column]").stick_in_parent({
  189.                 parent: "[data-sticky_parent]",
  190.                 offset_top: 130,
  191.                 bottoming: true,
  192.             });
  193.         });
  194.  
  195.         reset_scroll = function() {
  196.             var scroller;
  197.             scroller = $("body,html");
  198.             scroller.stop(true);
  199.  
  200.             if ($(window).scrollTop() !== 0) {
  201.                 scroller.animate({
  202.                     scrollTop: 0
  203.                 }, "fast");
  204.             }
  205.             return scroller;
  206.         };
  207.  
  208.         window.scroll_it = function() {
  209.             var max;
  210.             max = $(document).height() - $(window).height();
  211.  
  212.             return reset_scroll().animate({
  213.                 scrollTop: max
  214.             }, max * 3).delay(100).animate({
  215.                 scrollTop: 0
  216.             }, max * 3);
  217.         };
  218.  
  219.         window.scroll_it_wobble = function() {
  220.             var max, third;
  221.             max = $(document).height() - $(window).height();
  222.             third = Math.floor(max / 3);
  223.  
  224.             return reset_scroll().animate({
  225.                 scrollTop: third * 2
  226.             }, max * 3).delay(100).animate({
  227.                 scrollTop: third
  228.             }, max * 3).delay(100).animate({
  229.                 scrollTop: max
  230.             }, max * 3).delay(100).animate({
  231.                 scrollTop: 0
  232.             }, max * 3);
  233.         };
  234.  
  235.         $(window).on("load", (function(_this) {
  236.             return function(e) {
  237.                 return $(document.body).trigger("sticky_kit:recalc");
  238.             };
  239.         })(this));
  240.  
  241.         $(window).on("resize", (function(_this) {
  242.             return function(e) {
  243.                 return $(document.body).trigger("sticky_kit:recalc");
  244.             };
  245.         })(this));
  246.  
  247.     }
  248.  
  249.     var window_width = $(window).width();
  250.  
  251.     if (window_width < 992) {
  252.         $(document.body).trigger("sticky_kit:detach");
  253.     } else {
  254.         stickyKit();
  255.     }
  256.  
  257.     $( window ).resize(function() {
  258.         window_width = $( window ).width();
  259.         if (window_width < 992) {
  260.             $(document.body).trigger("sticky_kit:detach");
  261.         } else {
  262.             stickyKit();
  263.         }
  264.     });
  265.  
  266.     /*** Select Field Custom */
  267.     $('select:not(#quantity, #pa_size, #pa_denomination, #quantity-type, #billing_country)').each(function(){
  268.         var $this = $(this), numberOfOptions = $(this).children('option').length;
  269.         var overflow = numberOfOptions > 5 ? 'overflow-y' : '';
  270.         $this.addClass('select-hidden');
  271.         $this.wrap('<div class="select"></div>');
  272.         $this.after('<div class="select-styled"></div>');
  273.  
  274.         var $styledSelect = $this.next('div.select-styled');
  275.         $styledSelect.text($this.children('option').eq(0).text());
  276.      
  277.         var $list = $('<ul />', {
  278.             'class': 'select-options'
  279.         }).insertAfter($styledSelect);
  280.      
  281.         for (var i = 0; i < numberOfOptions; i++) {
  282.             $('<li />', {
  283.                 text: $this.children('option').eq(i).text(),
  284.                 rel: $this.children('option').eq(i).val()
  285.             }).appendTo($list);
  286.         }
  287.      
  288.         var $listItems = $list.children('li');
  289.      
  290.         $styledSelect.click(function(e) {
  291.             e.stopPropagation();
  292.             $('div.select-styled.active').not(this).each(function(){
  293.                 $(this).removeClass('active').next('ul.select-options').hide();
  294.             });
  295.             $(this).toggleClass('active').next('ul.select-options').addClass(overflow).toggle();
  296.         });
  297.      
  298.         $listItems.click(function(e) {
  299.             e.stopPropagation();
  300.             $styledSelect.text($(this).text()).removeClass('active');
  301.             $this.val($(this).attr('rel'));
  302.             $('select option').removeAttr('selected');
  303.             $('select option[value="'+$(this).attr('rel')+'"]').attr('selected','selected');
  304.             // Only Woo Orderby
  305.             if ($this.hasClass('orderby')) {
  306.                 $(this).closest( 'form' ).submit();
  307.             }
  308.             $list.hide();
  309.         });
  310.      
  311.         $(document).click(function() {
  312.             $styledSelect.removeClass('active');
  313.             $list.hide();
  314.         });
  315.  
  316.     });
  317.  
  318.     /*** Custom Scrollbar */
  319.     $(".select-options").niceScroll({
  320.         cursorcolor:"#2497BD",
  321.         cursorminheight: 50,
  322.         cursorborder:"1px solid #2497BD",
  323.         railpadding: { top: 0, right: 0, left: 0, bottom: 0 }
  324.     });
  325.  
  326.     /** Shop page widget Categories after arrow */
  327.     var arrow = $('<span class="arrow_plus icon-plus"></span>');
  328.     $(".product-categories li.cat-parent > a").after(arrow);
  329.     $(".product-categories li.cat-parent .arrow_plus").click(function() {
  330.         $(this).parent().toggleClass('open');
  331.         $(this).toggleClass('icon-plus icon-minus').next().toggle();
  332.     });
  333.  
  334.     /*** WooCommerce Quantity Increment */
  335.     $('.woocommerce .quantity').on('click', '.qty-minus', function (e) {
  336.         console.log(this)
  337.         var $inputQty = $(this).parent().parent().find('input.qty');
  338.         var val = parseInt($inputQty.val());
  339.         var step = $inputQty.attr('step');
  340.         step = 'undefined' !== typeof(step) ? parseInt(step) : 1;
  341.         if (val > 0) {
  342.             $inputQty.val(val - step).change();
  343.         }
  344.     });
  345.  
  346.     $('.woocommerce .quantity').on('click', '.qty-plus', function (e) {
  347.         console.log('minus')
  348.         var $inputQty = $(this).parent().parent().find('input.qty');
  349.         var val = parseInt($inputQty.val());
  350.         var step = $inputQty.attr('step');
  351.         step = 'undefined' !== typeof(step) ? parseInt(step) : 1;
  352.         $inputQty.val(val + step).change();
  353.     });
  354.  
  355. }(jQuery));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement