main.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. ;(function () {
  2. 'use strict';
  3. var isMobile = {
  4. Android: function() {
  5. return navigator.userAgent.match(/Android/i);
  6. },
  7. BlackBerry: function() {
  8. return navigator.userAgent.match(/BlackBerry/i);
  9. },
  10. iOS: function() {
  11. return navigator.userAgent.match(/iPhone|iPad|iPod/i);
  12. },
  13. Opera: function() {
  14. return navigator.userAgent.match(/Opera Mini/i);
  15. },
  16. Windows: function() {
  17. return navigator.userAgent.match(/IEMobile/i);
  18. },
  19. any: function() {
  20. return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
  21. }
  22. };
  23. var mobileMenuOutsideClick = function() {
  24. $(document).click(function (e) {
  25. var container = $("#fh5co-offcanvas, .js-fh5co-nav-toggle");
  26. if (!container.is(e.target) && container.has(e.target).length === 0) {
  27. if ( $('body').hasClass('offcanvas') ) {
  28. $('body').removeClass('offcanvas');
  29. $('.js-fh5co-nav-toggle').removeClass('active');
  30. }
  31. }
  32. });
  33. };
  34. var offcanvasMenu = function() {
  35. $('#page').prepend('<div id="fh5co-offcanvas" />');
  36. $('#page').prepend('<a href="#" class="js-fh5co-nav-toggle fh5co-nav-toggle fh5co-nav-white"><i></i></a>');
  37. var clone1 = $('.menu-1 > ul').clone();
  38. $('#fh5co-offcanvas').append(clone1);
  39. var clone2 = $('.menu-2 > ul').clone();
  40. $('#fh5co-offcanvas').append(clone2);
  41. $('#fh5co-offcanvas .has-dropdown').addClass('offcanvas-has-dropdown');
  42. $('#fh5co-offcanvas')
  43. .find('li')
  44. .removeClass('has-dropdown');
  45. // Hover dropdown menu on mobile
  46. $('.offcanvas-has-dropdown').mouseenter(function(){
  47. var $this = $(this);
  48. $this
  49. .addClass('active')
  50. .find('ul')
  51. .slideDown(500, 'easeOutExpo');
  52. }).mouseleave(function(){
  53. var $this = $(this);
  54. $this
  55. .removeClass('active')
  56. .find('ul')
  57. .slideUp(500, 'easeOutExpo');
  58. });
  59. $(window).resize(function(){
  60. if ( $('body').hasClass('offcanvas') ) {
  61. $('body').removeClass('offcanvas');
  62. $('.js-fh5co-nav-toggle').removeClass('active');
  63. }
  64. });
  65. };
  66. var burgerMenu = function() {
  67. $('body').on('click', '.js-fh5co-nav-toggle', function(event){
  68. var $this = $(this);
  69. if ( $('body').hasClass('overflow offcanvas') ) {
  70. $('body').removeClass('overflow offcanvas');
  71. } else {
  72. $('body').addClass('overflow offcanvas');
  73. }
  74. $this.toggleClass('active');
  75. event.preventDefault();
  76. });
  77. };
  78. var contentWayPoint = function() {
  79. var i = 0;
  80. $('.animate-box').waypoint( function( direction ) {
  81. if( direction === 'down' && !$(this.element).hasClass('animated-fast') ) {
  82. i++;
  83. $(this.element).addClass('item-animate');
  84. setTimeout(function(){
  85. $('body .animate-box.item-animate').each(function(k){
  86. var el = $(this);
  87. setTimeout( function () {
  88. var effect = el.data('animate-effect');
  89. if ( effect === 'fadeIn') {
  90. el.addClass('fadeIn animated-fast');
  91. } else if ( effect === 'fadeInLeft') {
  92. el.addClass('fadeInLeft animated-fast');
  93. } else if ( effect === 'fadeInRight') {
  94. el.addClass('fadeInRight animated-fast');
  95. } else {
  96. el.addClass('fadeInUp animated-fast');
  97. }
  98. el.removeClass('item-animate');
  99. }, k * 200, 'easeInOutExpo' );
  100. });
  101. }, 100);
  102. }
  103. } , { offset: '85%' } );
  104. };
  105. var dropdown = function() {
  106. $('.has-dropdown').mouseenter(function(){
  107. var $this = $(this);
  108. $this
  109. .find('.dropdown')
  110. .css('display', 'block')
  111. .addClass('animated-fast fadeInUpMenu');
  112. }).mouseleave(function(){
  113. var $this = $(this);
  114. $this
  115. .find('.dropdown')
  116. .css('display', 'none')
  117. .removeClass('animated-fast fadeInUpMenu');
  118. });
  119. };
  120. var goToTop = function() {
  121. $('.js-gotop').on('click', function(event){
  122. event.preventDefault();
  123. $('html, body').animate({
  124. scrollTop: $('html').offset().top
  125. }, 500, 'easeInOutExpo');
  126. return false;
  127. });
  128. $(window).scroll(function(){
  129. var $win = $(window);
  130. if ($win.scrollTop() > 200) {
  131. $('.js-top').addClass('active');
  132. } else {
  133. $('.js-top').removeClass('active');
  134. }
  135. });
  136. };
  137. // Loading page
  138. var loaderPage = function() {
  139. $(".fh5co-loader").fadeOut("slow");
  140. };
  141. var counter = function() {
  142. $('.js-counter').countTo({
  143. formatter: function (value, options) {
  144. return value.toFixed(options.decimals);
  145. },
  146. });
  147. };
  148. var counterWayPoint = function() {
  149. if ($('#fh5co-counter').length > 0 ) {
  150. $('#fh5co-counter').waypoint( function( direction ) {
  151. if( direction === 'down' && !$(this.element).hasClass('animated') ) {
  152. setTimeout( counter , 400);
  153. $(this.element).addClass('animated');
  154. }
  155. } , { offset: '90%' } );
  156. }
  157. };
  158. var sliderMain = function() {
  159. $('#fh5co-hero .flexslider').flexslider({
  160. animation: "fade",
  161. slideshowSpeed: 5000,
  162. directionNav: true,
  163. start: function(){
  164. setTimeout(function(){
  165. $('.slider-text').removeClass('animated fadeInUp');
  166. $('.flex-active-slide').find('.slider-text').addClass('animated fadeInUp');
  167. }, 500);
  168. },
  169. before: function(){
  170. setTimeout(function(){
  171. $('.slider-text').removeClass('animated fadeInUp');
  172. $('.flex-active-slide').find('.slider-text').addClass('animated fadeInUp');
  173. }, 500);
  174. }
  175. });
  176. };
  177. $(function(){
  178. mobileMenuOutsideClick();
  179. offcanvasMenu();
  180. burgerMenu();
  181. contentWayPoint();
  182. sliderMain();
  183. dropdown();
  184. goToTop();
  185. loaderPage();
  186. counterWayPoint();
  187. });
  188. }());