PageRenderTime 125ms CodeModel.GetById 33ms RepoModel.GetById 1ms app.codeStats 0ms

/app/js/common.js

https://gitlab.com/DmitryTravnikov/appinion
JavaScript | 415 lines | 232 code | 117 blank | 66 comment | 29 complexity | 6b8539692ee0b2b6b24efc60efdeff53 MD5 | raw file
  1. 'use strict';
  2. // //Каруселька
  3. // //Документация: http://owlgraphic.com/owlcarousel/
  4. // var owl = $(".carousel");
  5. // owl.owlCarousel({
  6. // items : 1,
  7. // autoPlay: 5000,
  8. // pagination: false,
  9. // transitionStyle: 'fade',
  10. // itemsDesktop: [1199,1],
  11. // itemsDesktopSmall: [979,1],
  12. // itemsTablet: [768,0],
  13. // itemsMobile: [479,0]
  14. // });
  15. // owl.on("mousewheel", ".owl-wrapper", function (e) {
  16. // if (e.deltaY > 0) {
  17. // owl.trigger("owl.prev");
  18. // } else {
  19. // owl.trigger("owl.next");
  20. // }
  21. // e.preventDefault();
  22. // });
  23. // $(".next_button").click(function(){
  24. // owl.trigger("owl.next");
  25. // });
  26. // $(".prev_button").click(function(){
  27. // owl.trigger("owl.prev");
  28. // });//карусель end
  29. // //Аякс отправка форм
  30. // //Документация: http://api.jquery.com/jquery.ajax/
  31. // $("form").submit(function() {
  32. // $.ajax({
  33. // type: "GET",
  34. // url: "mail.php",
  35. // data: $("form").serialize()
  36. // }).done(function() {
  37. // alert("Спасибо за заявку!");
  38. // setTimeout(function() {
  39. // $.fancybox.close();
  40. // }, 1000);
  41. // });
  42. // return false;
  43. // });//ajax формы end
  44. // //AJAX вкладки (анимацию делать на keyframes)
  45. // $('.link').click(function() {
  46. // var info = $(this).attr('href') + ' #content';//берет href ссылки и задает тот блок, который будет обновляться с помощью ajax при переходе по ссылке
  47. // $('#content').hide(0, loadContent());//скрываем содержимое блока #content той страницы, на которой находимся//задать анимацию для содержимого
  48. // $('#loader').fadeIn('slow');//анимация лоадера
  49. // function loadContent() {//основная функция для загрузки контента
  50. // $('#content').load(info, '', function() {//блок, в который мы хотим загрузить новый контент//info подгружает именно тот контент, который нам нужен//'' - различные переменные, дата, опускаем его
  51. // $('#content').show(0, hideLoader());//показываем наш блок с контентом//скрываем лоадер//задать анимацию для содержимого
  52. // });
  53. // }
  54. // function hideLoader() {//функция для скрытия лоадера
  55. // $('#loader').fadeOut('normal');
  56. // }
  57. // return false;//чтобы не происходило перехода по ссылке, а только происходила подгрузка контента
  58. // });//ajax вкладки end
  59. $(document).ready(function() {
  60. //prevent default
  61. function prevdef() {
  62. $('.prevdef').click(function(event) {
  63. event.preventDefault();
  64. });
  65. }// prevdef();
  66. prevdef();
  67. // Hamburger
  68. let headerHamburger = document.querySelector('.header__hamburger');
  69. let headerCollapsedBlock = document.querySelector('.header__collapsed-block');
  70. headerHamburger.onclick = function() {
  71. this.classList.toggle('active');
  72. headerCollapsedBlock.classList.toggle('active');
  73. }
  74. // Select
  75. let languageSelect = document.querySelector('.header__language-select');
  76. let languageSelectFake = document.querySelector('.header__language-select-fake');
  77. let languageSelectOptionsContainerFake = document.querySelector('.header__language-select-options-container-fake');
  78. let languageOptionFake = document.querySelectorAll('.header__language-option-fake');
  79. languageSelectFake.onclick = function() {
  80. this.classList.toggle('active');
  81. languageSelectOptionsContainerFake.classList.toggle('active');
  82. }
  83. languageSelectOptionsContainerFake.onmouseleave = function() {
  84. this.classList.remove('active');
  85. languageSelectFake.classList.remove('active');
  86. }
  87. for (let i = 0; i < languageOptionFake.length; i++) {
  88. languageOptionFake[i].onclick = function() {
  89. for (let i = 0; i < languageOptionFake.length; i++) {
  90. languageOptionFake[i].classList.remove('active');
  91. }
  92. this.classList.add('active');
  93. languageSelectFake.innerHTML = this.innerHTML;
  94. languageSelectFake.classList.remove('active');
  95. languageSelectOptionsContainerFake.classList.remove('active');
  96. for (let i = 0; i < languageOptionFake.length; i++) {
  97. if (languageOptionFake[i].classList.contains('active')) {
  98. languageSelect.options[i].selected = true;
  99. }
  100. }
  101. }
  102. }
  103. // Main Input
  104. let mainEmailInput = document.querySelector('.main__email-input');
  105. let mainSubmitButton = document.querySelector('.main__submit-button');
  106. mainEmailInput.onkeyup = function() {
  107. this.parentNode.classList.add('active');
  108. mainSubmitButton.disabled = false;
  109. if (!this.value) {
  110. this.parentNode.classList.remove('active');
  111. mainSubmitButton.disabled = true;
  112. }
  113. }
  114. mainEmailInput.onblur = function() {
  115. if (!mainEmailInput.value) {
  116. this.parentNode.classList.remove('active');
  117. mainSubmitButton.disabled = true;
  118. }
  119. }
  120. //Каруселька
  121. //Документация: http://owlgraphic.com/owlcarousel/
  122. var brandsSlider = $(".brands__slider");
  123. brandsSlider.owlCarousel({
  124. items : 1,
  125. autoPlay: 5000,
  126. pagination: false,
  127. transitionStyle: 'fade',
  128. itemsDesktop: [1199,1],
  129. itemsDesktopSmall: [979,1],
  130. itemsTablet: [768,1],
  131. itemsMobile: [479,1]
  132. });
  133. // Cases Slider
  134. let casesSlides = document.querySelectorAll('.cases__slide');
  135. let casesCounter = 0;
  136. let casesPlayVideoButtons = document.querySelectorAll('.cases__play-video-button');
  137. let casesVideos = document.querySelectorAll('.cases__video');
  138. let casesVideoContainer = document.querySelectorAll('.cases__video-container');
  139. let casesShowAdditionalListLinks = document.querySelectorAll('.cases__show-additional-list');
  140. let casesPrevButton = document.querySelector('.cases__prev-button');
  141. let casesNextButton = document.querySelector('.cases__next-button');
  142. casesPrevButton.addEventListener('click', casesSwitchPrev);
  143. casesNextButton.addEventListener('click', casesSwitchNext);
  144. for (let i = 0; i < casesPlayVideoButtons.length; i++) {
  145. casesPlayVideoButtons[i].addEventListener('click', casesPlayVideoFunc);
  146. }
  147. for (let i = 0; i < casesShowAdditionalListLinks.length; i++) {
  148. casesShowAdditionalListLinks[i].addEventListener('click', casesAdditionalListShowFunc);
  149. }
  150. function startCasesSlider() {
  151. window.casesSliderId = window.setInterval(function() {
  152. casesCounter++;
  153. if (casesCounter >= casesSlides.length) {
  154. casesCounter = 0;
  155. }
  156. for (let i = 0; i < casesSlides.length; i++) {
  157. casesSlides[i].classList.remove('active');
  158. }
  159. casesSlides[casesCounter].classList.add('active');
  160. }, 5000);
  161. }
  162. startCasesSlider();
  163. function stopCasesSlider() {
  164. window.clearInterval(window.casesSliderId);
  165. }
  166. function casesPlayVideoFunc() {
  167. stopCasesSlider();
  168. this.previousElementSibling.contentWindow.postMessage('{"event":"command","func":"' + 'playVideo' + '","args":""}', '*');
  169. this.classList.add('active');
  170. this.parentNode.classList.add('active');
  171. }
  172. function casesAdditionalListShowFunc() {
  173. stopCasesSlider();
  174. this.previousElementSibling.classList.add('active');
  175. this.classList.add('active');
  176. }
  177. function casesSwitchPrev() {
  178. stopCasesSlider();
  179. casesCounter--;
  180. if (casesCounter < 0) {
  181. casesCounter = casesSlides.length - 1;
  182. }
  183. for (let i = 0; i < casesSlides.length; i++) {
  184. casesSlides[i].classList.remove('active');
  185. }
  186. casesSlides[casesCounter].classList.add('active');
  187. startCasesSlider();
  188. casesSlideReset();
  189. }
  190. function casesSwitchNext() {
  191. stopCasesSlider();
  192. casesCounter++;
  193. if (casesCounter >= casesSlides.length) {
  194. casesCounter = 0;
  195. }
  196. for (let i = 0; i < casesSlides.length; i++) {
  197. casesSlides[i].classList.remove('active');
  198. }
  199. casesSlides[casesCounter].classList.add('active');
  200. startCasesSlider();
  201. casesSlideReset();
  202. }
  203. function casesSlideReset() {
  204. for (let i = 0; i < casesVideoContainer.length; i++) {
  205. casesVideoContainer[i].classList.remove('active');
  206. casesVideos[i].contentWindow.postMessage('{"event":"command","func":"' + 'stopVideo' + '","args":""}', '*');
  207. casesShowAdditionalListLinks[i].previousElementSibling.classList.remove('active');
  208. casesShowAdditionalListLinks[i].classList.remove('active');
  209. casesPlayVideoButtons[i].classList.remove('active');
  210. }
  211. }
  212. // Contact Inputs
  213. let contactInputs = document.querySelectorAll('.contact__input');
  214. let contactNameInput = document.querySelector('.contact__name-input');
  215. let contactEmailInput = document.querySelector('.contact__email-input');
  216. let contactSiteInput = document.querySelector('.contact__site-input');
  217. let contactCommentInput = document.querySelector('.contact__comment-input');
  218. let contactSubmitButton = document.querySelector('.contact__submit-button');
  219. let contactValidationArray = [contactNameInput, contactEmailInput, contactSiteInput, contactCommentInput];
  220. for (let i = 0; i < contactInputs.length; i++) {
  221. contactInputs[i].onkeyup = function() {
  222. for (let i = 0; i < contactInputs.length; i++) {
  223. contactInputs[i].parentNode.classList.add('active');
  224. contactSubmitButton.disabled = false;
  225. if (!contactInputs[i].value) {
  226. contactInputs[i].parentNode.classList.remove('active');
  227. contactSubmitButton.disabled = true;
  228. }
  229. }
  230. }
  231. }
  232. contactSubmitButton.onclick = function() {
  233. if (contactNameInput.value && contactEmailInput.value && contactSiteInput.value && contactCommentInput.value) {
  234. modalSuccessContainer.style.opacity = '1';
  235. modalSuccessContainer.style.zIndex = '999';
  236. modalOverlay.style.display = 'block';
  237. for (let i = 0; i < contactValidationArray.length; i++) {
  238. contactValidationArray[i].value = '';
  239. contactValidationArray[i].parentNode.classList.remove('active');
  240. }
  241. this.disabled = true;
  242. }
  243. }
  244. // Modals
  245. let headerLogInButton = document.querySelector('.header__log-in-button');
  246. headerLogInButton.addEventListener('click', registrationFormShow);
  247. function registrationFormShow() {
  248. modalOverlay.style.display = 'block';
  249. modalRegistrationFormContainer.style.opacity = '1';
  250. modalRegistrationFormContainer.style.zIndex = '999';
  251. }
  252. let modalRegistrationInputs = document.querySelectorAll('.modal__input');
  253. let modalLogInButton = document.querySelector('.modal__log-in-button');
  254. let modalRegistrationButton = document.querySelector('.modal__registration-button');
  255. for (let i = 0; i < modalRegistrationInputs.length; i++) {
  256. modalRegistrationInputs[i].onkeyup = function() {
  257. this.parentNode.classList.add('active');
  258. modalLogInButton.classList.add('active');
  259. if (!this.value) {
  260. this.parentNode.classList.remove('active');
  261. modalLogInButton.classList.remove('active');
  262. }
  263. }
  264. }
  265. modalLogInButton.onclick = function() {
  266. for (let i = 0; i < modalRegistrationInputs.length; i++) {
  267. if (!modalRegistrationInputs[i].value) {
  268. modalRegistrationInputs[i].style.borderColor = 'red';
  269. } else {
  270. modalRegistrationInputs[i].style.borderColor = '';
  271. }
  272. }
  273. }
  274. let modalCloseButtons = document.querySelectorAll('.modal__close-button');
  275. let modalOverlay = document.querySelector('.modal__overlay');
  276. let modalRegistrationFormContainer = document.querySelector('.modal__registration-form-container');
  277. for (let i = 0; i < modalCloseButtons.length; i++) {
  278. modalCloseButtons[i].onclick = function() {
  279. modalsHide();
  280. }
  281. }
  282. modalOverlay.addEventListener('click', modalsHide);
  283. function modalsHide() {
  284. modalOverlay.style.display = 'none';
  285. modalRegistrationFormContainer.style.opacity = '0';
  286. modalRegistrationFormContainer.style.zIndex = '-1';
  287. modalSuccessContainer.style.opacity = '0';
  288. modalSuccessContainer.style.zIndex = '-1';
  289. }
  290. let modalSuccessContainer = document.querySelector('.modal__success-container');
  291. $('.top').mPageScroll2id({
  292. offset: 50,
  293. scrollSpeed: 200
  294. });
  295. });//doc.ready end
  296. var cLog = function(n) {
  297. return console.log(n);
  298. };//console.log