/static/js/base.js

https://gitlab.com/mfgt/hugo-theme-mfgt-2016 · JavaScript · 189 lines · 121 code · 37 blank · 31 comment · 22 complexity · dd5a503fcf6ca3768cf556a8cd46970b MD5 · raw file

  1. /*
  2. * @author (c) 2013 Aji yahya <aji.yahya@gmail.com>
  3. * All rights reserved
  4. */
  5. jQuery.noConflict();
  6. (function($) {
  7. $(document).ready(function() {
  8. // console.log();
  9. // alert ($(window).width());
  10. /* set header-image */
  11. //$('#header-image').css('height','1');
  12. var headerImgHeight = $('#header-image img').height();
  13. $('#header-image').css('height', headerImgHeight);
  14. // console.log(headerImgHeight);
  15. var body = $('body'),
  16. page = body.find('#main'),
  17. navToggle = body.find('#nav-toggle');
  18. navToggle.on('click', function(){
  19. // ie 7 8 9 fix
  20. if (getInternetExplorerVersion() === 7 || getInternetExplorerVersion() === 8 || getInternetExplorerVersion() === 9) {
  21. $('.cssmenu').animate({left:'-260px'});
  22. $('#wrap').css('left','260px');
  23. }
  24. body.removeClass('loading').toggleClass('nav-open');
  25. if ( body.hasClass('nav-open') ) {
  26. navToggle.addClass('navToggle');
  27. $('.nav-open #menubar').css('height', '');
  28. $('.nav-open #menubar').css('height', $(document).height());
  29. $(window).resize(function () {
  30. $('.nav-open #menubar').css('height', $(document).height());
  31. });
  32. } else {
  33. navToggle.removeClass('navToggle');
  34. $('#menubar').css('height', '');
  35. $(window).resize(function () {
  36. $('#menubar').css('height', '');
  37. });
  38. // ie 7 8 9 fix
  39. if (getInternetExplorerVersion() === 7 || getInternetExplorerVersion() === 8 || getInternetExplorerVersion() === 9) {
  40. $('.cssmenu').animate({left:'-260px'});
  41. $('#wrap').css('left','0');
  42. }
  43. }
  44. });
  45. $('.nav-open').on('click touchstart', function(){
  46. removeClass('nav-open');
  47. });
  48. });
  49. $(window).resize(function () {
  50. // console.log($(window).width());
  51. /* set header-image */
  52. //$('#header-image').css('height', '');
  53. var headerImgHeight = $('#header-image img').height();
  54. $('#header-image').css('height', headerImgHeight);
  55. // console.log($(window).width());
  56. // remove style "display:none" from nav-submenu if window resized from Devices to Screen > 1024:
  57. // Bug fix submenu was not showing after resize from DEvice to Screen Version
  58. if ($(window).width() > 1024) {
  59. // $('.nav-submenu').css('display','');
  60. $('body').removeAttr('class');
  61. }
  62. $('#menubar').css('height', '');
  63. });
  64. /* Metanavi-home dropdown*/
  65. $(document).ready(function () {
  66. // SVG fix on IE8
  67. if (getInternetExplorerVersion() === 8) {$('img[src$=".svg"]').each(function(){$(this).attr('src', $(this).attr('src').replace('.svg', '.png'));});}
  68. var homenav = $('.dropdown-tool-menu');
  69. var timeout = 0;
  70. var hovering = false;
  71. homenav.hide();
  72. $('.dropdown-tool').on("mouseenter", function () {
  73. hovering = true;
  74. // Open the menu
  75. $('.dropdown-tool-menu')
  76. .stop(true, true)
  77. .slideDown(400);
  78. if (timeout > 0) {
  79. clearTimeout(timeout);
  80. }
  81. })
  82. .on("mouseleave", function () {
  83. resetHover();
  84. });
  85. $('#main').on('click' , function () {$(".dropdown-tool-menu").hide()}) ;
  86. $(".dropdown-tool-menu").on("mouseenter", function () {
  87. // reset flag
  88. hovering = true;
  89. // reset timeout
  90. startTimeout();
  91. })
  92. .on("mouseleave", function () {
  93. // The timeout is needed incase you go back to the main menu
  94. resetHover();
  95. });
  96. function startTimeout() {
  97. // This method gives you 1 second to get your mouse to the sub-menu
  98. timeout = setTimeout(function () {
  99. closeMenu();
  100. }, 1000);
  101. };
  102. function closeMenu() {
  103. // Only close if not hovering
  104. if (!hovering) {
  105. $('.dropdown-tool-menu').stop(true, true).slideUp(400);
  106. }
  107. };
  108. function resetHover() {
  109. // Allow the menu to close if the flag isn't set by another event
  110. hovering = false;
  111. // Set the timeout
  112. startTimeout();
  113. };
  114. // slide the Text
  115. function metaHomeText ($h,$s) {
  116. $($h).hover(
  117. function () {
  118. $($s).stop(true, true).show();
  119. },
  120. function () {
  121. $($s).stop(true, true).hide();
  122. }
  123. );
  124. };
  125. if(! /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ){
  126. metaHomeText($('#meta-cal'),$('#meta-cal-text'));
  127. metaHomeText($('#meta-nl'),$('#meta-nl-text'));
  128. metaHomeText($('#meta-loc'),$('#meta-loc-text'));
  129. }
  130. });
  131. // detect ie version
  132. function getInternetExplorerVersion()
  133. {
  134. var rv = -1;
  135. if (navigator.appName == 'Microsoft Internet Explorer')
  136. {
  137. var ua = navigator.userAgent;
  138. var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
  139. if (re.exec(ua) != null)
  140. rv = parseFloat( RegExp.$1 );
  141. }
  142. else if (navigator.appName == 'Netscape')
  143. {
  144. var ua = navigator.userAgent;
  145. var re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
  146. if (re.exec(ua) != null)
  147. rv = parseFloat( RegExp.$1 );
  148. }
  149. return rv;
  150. }
  151. // alert (getInternetExplorerVersion());
  152. ;})(jQuery);