PageSourceSearch

https://himenus.com/wp-content/themes/sandbox/js/scripts.js?ver=20180910

js himenus.com collected 2026-09-24 11:35:57 UTC 12,268 bytes, 367 lines download raw bytes

1( function( $ ) {
2    'use strict';
3
4  /* rtl check */
5  function rtl_owl(){
6  if ($('body').hasClass("rtl")) {
7    return true;
8  } else {
9    return false;
10  }};
11
12  /* --------------------------------------------------
13  * sticky header
14  * --------------------------------------------------*/
15  $('.header-desktop .is-fixed').parent().append('<div class="dheader-clone"></div>');
16  $('.header-mobile .is-fixed').parent().append('<div class="mheader-clone"></div>');
17 	var dclone = $('.dheader-clone'),
18 	    mclone = $('.mheader-clone'),
19      fixed  = $('#site-header .is-fixed');
20  $(window).on("scroll", function(){
21    var site_header = $('#site-header').outerHeight() + 200;  
22      
23    if ($(window).scrollTop() >= site_header) {
24      fixed.addClass('is-stuck');
25      fixed.find('.hitem').addClass('scrolled');
26      dclone.height($('.header-desktop .is-fixed').outerHeight());
27      mclone.height($('.header-mobile .is-fixed').outerHeight());
28    }else{
29      fixed.removeClass('is-stuck');                  
30      fixed.find('.hitem').removeClass('scrolled');
31      dclone.height('0');
32      mclone.height('0');
33    }
34  });
35
36  /* --------------------------------------------------
37  * mobile menu
38  * --------------------------------------------------*/
39  $('.mmenu_wrapper li:has(ul)').prepend('<span class="arrow"><i class="uil-angle-down"></i></span>');
40  $(".mmenu_wrapper .mobile_mainmenu > li span.arrow").on('click',function() {
41      $(this).parent().find("> ul").stop(true, true).slideToggle()
42      $(this).toggleClass( "active" ); 
43  });
44
45	$( "#mmenu_toggle" ).on('click', function() {
46		$(this).toggleClass( "active" );
47		$(this).parents('.header_mobile').toggleClass( "open" );
48		if ($(this).hasClass( "active" )) {
49			$('.mobile_nav').stop(true, true).slideDown(100);
50		}else{
51			$('.mobile_nav').stop(true, true).slideUp(100);
52		}		
53	});
54
55  /* --------------------------------------------------
56  * popup promo
57  * --------------------------------------------------*/
58  var popup = $('.popup-form'),
59      news  = $('.popup-newsletter');
60
61  function popupOpen() {
62    $('.error').parents('.popup-form').addClass('popup-open');
63    news.addClass('popup-open');
64    news.parents('body').addClass('popup-active');
65  }
66
67  $(window).on('load', function() {
68    setTimeout(popupOpen(), 400);
69  });
70
71  $('.elementor-button-wrapper a[href=#promo], .ot-button-wrapper a[href=#promo]').on('click', function(){
72    popupOpen();
73    return false;
74  });
75
76  /* --------------------------------------------------
77  * popup login/register
78  * --------------------------------------------------*/
79  var login = $('.popup-login');
80  var regis = $('.popup-regis');
81
82  $('.popup-form a[href=#signin], .elementor-button-wrapper a[href=#signin], .ot-button-wrapper a[href=#signin]').on('click', function(){
83    popup.removeClass('popup-open');
84    login.addClass('popup-open');
85    $('body').addClass('popup-active');
86    return false;
87  });
88
89
90  $('.popup-form a[href=#signup], .elementor-button-wrapper a[href=#signup], .ot-button-wrapper a[href=#signup]').on('click', function(){
91    popup.removeClass('popup-open');
92    regis.addClass('popup-open');
93    $('body').addClass('popup-active');
94    return false;
95  });
96
97  $('.popup-close, .popup-overlay').on('click', function(){
98    popup.removeClass('popup-open');
99    $('body').removeClass('popup-active');
100    return false;
101  });
102
103  /* --------------------------------------------------
104  * gallery post
105  * --------------------------------------------------*/
106  $('.gallery-post').each( function () {
107    var selector = $(this);
108    selector.owlCarousel({
109      rtl: rtl_owl(),
110      loop:false,
111      margin:0,
112      responsiveClass:true,
113      items:1,
114      dots:true,
115      nav:true,
116      dotsClass: 'owl-dots dots-over',
117      navText:['<i class="uil uil-arrow-left"></i>', '<i class="uil uil-arrow-right"></i>']
118    });
119  });
120
121  /* --------------------------------------------------
122  * slide posts
123  * --------------------------------------------------*/
124  $('.slide-posts').each( function () {
125    var selector = $(this);
126    selector.owlCarousel({
127      rtl: rtl_owl(),
128      loop:false,
129      margin:30,
130      responsiveClass:true,
131      dots:true,
132      nav:false,
133      responsive : {
134        0 : {
135          items: 1,
136        },
137        992 : {
138          items: 2,
139        }
140      }
141    });
142  });
143
144  /* --------------------------------------------------
145  * share toggle
146  * --------------------------------------------------*/
147  $(document).on('click', 'body', function(){
148    $('.sdropdown').hide();
149  });
150  $(document).on('click', '.share-btn', function(){
151    $(this).next().toggle();
152    return false;
153  });
154  
155
156  /* --------------------------------------------------
157    * back to top
158    * --------------------------------------------------*/
159  var theme = {
160    init: function () {
161      theme.passVisibility();
162      theme.pageProgress();
163      theme.bsModal();
164      theme.singlePostGLightbox();
165      theme.rellax();
166      theme.backgroundImageMobile();
167      theme.scrollCue();
168      theme.textRotator();
169      theme.loader();
170    },
171
172    /**
173     * scrollCue.js
174     * Enables showing elements by scrolling
175     * Requires assets/js/vendor/scrollCue.min.js
176     */
177    scrollCue: () => {
178      scrollCue.init({
179        interval: -400,
180        duration: 700,
181        percentage: 0.9
182      });
183      scrollCue.update();
184    },
185
186    passVisibility: () => {
187      let pass = document.querySelectorAll('.password-field');
188      for (let i = 0; i < pass.length; i++) {
189        let passInput = pass[i].querySelector('.form-control');
190        let passToggle = pass[i].querySelector('.password-toggle > i');
191        passToggle.addEventListener('click', (e) => {
192          if (passInput.type === "password") {
193            passInput.type = "text";
194            passToggle.classList.remove('uil-eye');
195            passToggle.classList.add('uil-eye-slash');
196          } else {
197            passInput.type = "password";
198            passToggle.classList.remove('uil-eye-slash'); 
199            passToggle.classList.add('uil-eye');
200          } 
201        }, false);
202      }
203    },
204
205    bsModal: () => {
206      if(document.querySelector(".modal-popup") != null) {
207        var myModalPopup = new bootstrap.Modal(document.querySelector('.modal-popup'));
208        setTimeout(function() {
209          myModalPopup.show();
210        }, 200);
211      }
212      // Fixes jumping of page progress caused by modal
213      var innerWidth = window.innerWidth;
214      var clientWidth = document.body.clientWidth;
215      var scrollSize = innerWidth - clientWidth;
216      var myModalEl = document.querySelectorAll('.modal');
217      var navbarFixed = document.querySelector('.navbar.fixed');
218      var pageProgress = document.querySelector('.progress-wrap');
219      function setPadding() {
220        if(navbarFixed != null) {
221          navbarFixed.style.paddingRight = scrollSize + 'px';
222        }
223        if(pageProgress != null) {
224          pageProgress.style.marginRight = scrollSize + 'px';
225        }
226      }
227      function removePadding() {
228        if(navbarFixed != null) {
229          navbarFixed.style.paddingRight = '';
230        }
231        if(pageProgress != null) {
232         pageProgress.style.marginRight = '';
233        }
234      }
235      myModalEl.forEach(myModalEl => {
236        myModalEl.addEventListener('show.bs.modal', function(e) {
237          setPadding();
238        })
239        myModalEl.addEventListener('hidden.bs.modal', function(e) {
240          removePadding();
241        })
242      });
243    } ,
244
245    pageProgress: () => {
246      var progressWrap = document.querySelector('.progress-wrap');
247      var progressPath = document.querySelector('.progress-wrap path');
248      var pathLength = progressPath.getTotalLength();
249      var offset = 50;
250      if(progressWrap != null) {
251        progressPath.style.transition = progressPath.style.WebkitTransition = 'none';
252        progressPath.style.strokeDasharray = pathLength + ' ' + pathLength;
253        progressPath.style.strokeDashoffset = pathLength;
254        progressPath.getBoundingClientRect();
255        progressPath.style.transition = progressPath.style.WebkitTransition = 'stroke-dashoffset 10ms linear';
256        window.addEventListener("scroll", function(event) {
257          var scroll = document.body.scrollTop || document.documentElement.scrollTop;
258          var height = document.documentElement.scrollHeight - document.documentElement.clientHeight;
259          var progress = pathLength - (scroll * pathLength / height);
260          progressPath.style.strokeDashoffset = progress;
261          var scrollElementPos = document.body.scrollTop || document.documentElement.scrollTop;
262          if(scrollElementPos >= offset) {
263            progressWrap.classList.add("active-progress")
264          } else {
265            progressWrap.classList.remove("active-progress")
266          }
267        });
268        progressWrap.addEventListener('click', function(e) {
269          e.preventDefault();
270          window.scroll({
271            top: 0, 
272            left: 0,
273            behavior: 'smooth'
274          });
275        });
276      }
277    },
278    singlePostGLightbox: () => {
279      const singlePostGlightbox = GLightbox({
280        selector: '.single-post-gallery',
281      });
282    },
283
284    /**
285     * Background Image Mobile
286     * Adds .mobile class to background images on mobile devices for styling purposes
287     */
288    backgroundImageMobile: () => {
289      var isMobile = (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i)) ? true : false;
290      if(isMobile) {
291        document.querySelectorAll(".elementor-section.image-wrapper").forEach(e => {
292          e.classList.add("mobile")
293        })
294      }
295    },
296
297    /**
298     * ReplaceMe.js
299     * Enables text rotator
300     * Requires assets/js/vendor/replaceme.min.js
301     */
302    textRotator: () => {
303      if(document.querySelector(".rotator-zoom") != null) {
304        var replace = new ReplaceMe(document.querySelector('.rotator-zoom'), {
305          animation: 'animate__animated animate__zoomIn',
306          speed: 2500,
307          separator: ',',
308          clickChange: false,
309          loopCount: 'infinite'
310        });
311        document.querySelector(".rotator-zoom").style.opacity = "1";
312      }
313      if(document.querySelector(".rotator-fade") != null) {
314        var replace = new ReplaceMe(document.querySelector('.rotator-fade'), {
315          animation: 'animate__animated animate__fadeInDown',
316          speed: 2500,
317          separator: ',',
318          clickChange: false,
319          loopCount: 'infinite'
320        });
321        document.querySelector(".rotator-fade").style.opacity = "1";
322      }
323    },
324
325    /**
326     * Rellax.js
327     * Adds parallax animation to shapes and elements
328     * Requires assets/js/vendor/rellax.min.js
329     */
330    rellax: () => {
331      if(document.querySelector(".rellax") != null) {
332        window.onload = function() {
333          var rellax = new Rellax('.rellax', {
334            speed: 2,
335            center: true,
336            breakpoints: [576, 992, 1201]
337          });
338          var projects_overflow = document.querySelectorAll('.projects-overflow');
339          imagesLoaded(projects_overflow, function() {
340            rellax.refresh();
341          });
342        }
343      }
344    },
345
346    /**
347     * Loader
348     * 
349     */
350    loader: () => {
351      var preloader = document.querySelector('.page-loader');
352      if(preloader != null) {
353        document.body.onload = function(){
354          setTimeout(function() {
355            if( !preloader.classList.contains('done') )
356            {
357              preloader.classList.add('done');
358            }
359          }, 300)
360        }
361      }
362    },
363
364  }
365  theme.init();
366
367} )( jQuery );

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.