Redfern_89

main.js

Jun 1st, 2022
936
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let touchWorkTime = 0;
  2. let touchStartTime = 0;
  3. let touchEndTime = 0;
  4. let touchStartX = 0;
  5. let touchStartY = 0;
  6. let touchEndX = 0;
  7. let touchEndY = 0;
  8.  
  9. let thumbChangeInterval;
  10.  
  11. const TOUCH_WORK_TIME_MIN = 10;
  12. const TOUCH_WORK_TIME_MAX = 400;
  13.  
  14. function showPagesActions(e, elem, id) {
  15.     let actions_row = document.getElementById('actions-' + id) || undefined;
  16.     let actions_rows = document.getElementsByClassName('actions') || undefined;
  17.    
  18.     if (typeof actions_rows !== 'undefined') {
  19.         for (i = 0; i < actions_rows.length; i++) {
  20.             actions_rows[i].classList.add('hide');
  21.         }
  22.     }
  23.    
  24.     if (typeof actions_row !== 'undefined') {
  25.         actions_row.classList.remove('hide');
  26.     }
  27.    
  28. }
  29.  
  30.  
  31. function offcanvasOpenElements() {
  32.     document.body.style.overflow = 'hidden';
  33.     //document.querySelector('.darkBG_wrap').style.display = 'block';
  34.     document.querySelector('.navbar-toggler').className = 'navbar-toggler mr-2 p180';  
  35. }
  36.  
  37. function offcanvasCloseElements() {
  38.     document.body.style.overflow = '';
  39.     //document.querySelector('.darkBG_wrap').style.display = 'none';
  40.     document.querySelector('.navbar-toggler').className = 'navbar-toggler mr-2 m180';  
  41. }
  42.  
  43.  
  44. function resizeContainer() {
  45.     let container = document.querySelector('[data-resize="resize"]') || undefined;
  46.     let nav = document.querySelector('nav.navbar');
  47.     let footer = document.querySelector('footer');
  48.    
  49.     if (typeof container !== 'undefined') {
  50.         container.style.minHeight = window.innerHeight - nav.offsetHeight - footer.offsetHeight + 'px';
  51.     }
  52. }
  53.  
  54. function removeClassFromAll(elem, className) {
  55.     //let elem = document.querySelectorAll('.' + className) || undefined;
  56.    
  57.     if (typeof elem !== 'undefined') {
  58.         elem.forEach(function(elem) {
  59.             elem.classList.remove(className);
  60.         });
  61.     }
  62. }
  63.  
  64. function removeClassFromAllByGroupAttr(elem, className, attr) {
  65.     if (typeof elem !== 'undefined') {
  66.         elem.forEach(function(elem) {
  67.             if (elem.getAttribute('data-group') == attr) {
  68.                 elem.classList.remove(className);
  69.             }
  70.         });
  71.     }  
  72. }
  73.  
  74. function xhr_post(url, data, callback) {
  75.     let xhr = new XMLHttpRequest();
  76.     xhr.open('POST', url, true);
  77.     xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  78.    
  79.     let postData = [];
  80.     for (const [key, val] of Object.entries(data)) {
  81.         postData.push(key + '=' + val);
  82.     }
  83.     postData = postData.join('&');
  84.     xhr.send(postData);
  85.  
  86.     xhr.onreadystatechange = function() {
  87.         if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) {
  88.             if (typeof callback !== 'undefined') callback(this.responseText);
  89.         }
  90.     }
  91. }
  92.  
  93. function shape_resize(elem) {
  94.     if (typeof elem !== 'undefined') {
  95.         if (window.scrollY > 0) {
  96.             if (!elem.classList.contains('active')) elem.classList.add('active');
  97.         } else {
  98.             if (elem.classList.contains('active')) elem.classList.remove('active');
  99.         }
  100.     }  
  101. }
  102.  
  103. function request_poll_answer(e, elem, name) {
  104.     let answerElems = document.getElementsByName('answer') || undefined;
  105.        
  106.     if (typeof answerElems !== 'undefined') {
  107.         answerElems.forEach(function(elem) {
  108.             if (elem.checked) {
  109.                 let id = elem.value;
  110.                 xhr_post('/act', { act: 'vote_poll', poll: name, id: id }, function(response) {
  111.                     let pollsContainer = document.getElementById('polls_container-' + name) || undefined;
  112.                    
  113.                     if (typeof pollsContainer !== 'undefined') pollsContainer.innerHTML = response;
  114.                 });
  115.             }
  116.         });
  117.     }  
  118. }
  119.  
  120.  
  121.  
  122. function getServices(city) {
  123.     let servicesContainer = document.getElementById('services') || undefined;
  124.     if (typeof servicesContainer !== 'undefined') {
  125.         xhr_post('/act', { act: 'get_services_html', city: city }, function(response) {
  126.             servicesContainer.innerHTML = response;
  127.         });
  128.     }  
  129. }
  130.  
  131. function getStreets(city) {
  132.     let streetsSelect = document.getElementById('streets') || undefined;
  133.     if (typeof streetsSelect !== 'undefined') {
  134.         streetsSelect.setAttribute('disabled', '');
  135.         xhr_post('/act', { act: 'get_streets_html', city: city }, function(response) {
  136.             streetsSelect.innerHTML = response;
  137.             streetsSelect.removeAttribute('disabled');
  138.         });
  139.     }  
  140. }
  141.  
  142. function selectCity(e, elem) {
  143.     getStreets(elem.value);
  144.     getServices(elem.value);
  145. }
  146.  
  147. function checkbox_process() {
  148.     let checkUI = document.querySelectorAll('.check_label') || undefined;
  149.     if (typeof checkUI !== 'undefined') {
  150.         for (var i = 0; i < checkUI.length; i++) {
  151.             let chUI = checkUI[i] || undefined;
  152.             if (typeof chUI !== 'undefined') {
  153.                
  154.                 chUI.addEventListener('mouseenter', function(e) {
  155.                     if (!chUI.classList.contains('hover')) {
  156.                         chUI.classList.add('hover');
  157.                     }
  158.                 });
  159.                
  160.                 chUI.addEventListener('mouseleave', function(e) {
  161.                     if (chUI.classList.contains('hover')) {
  162.                         chUI.classList.remove('hover');
  163.                     }
  164.                 });
  165.                
  166.                 chUI.querySelector('input').addEventListener('change', function(e) {
  167.                     this.checked ? chUI.classList.add('checked') : chUI.classList.remove('checked');
  168.                 });
  169.                
  170.             }
  171.         }
  172.     }  
  173. }
  174.  
  175. function radio_process() {
  176.     let radioUI = document.querySelectorAll('.radio_label') || undefined;
  177.     if (typeof radioUI !== 'undefined') {
  178.         for (var i = 0; i < radioUI.length; i++) {
  179.             let UI = radioUI[i] || undefined;
  180.             if (typeof UI !== 'undefined') {
  181.                
  182.                 UI.addEventListener('mouseenter', function(e) {
  183.                     if (!UI.classList.contains('hover')) {
  184.                         UI.classList.add('hover');
  185.                     }
  186.                 });
  187.                
  188.                 UI.addEventListener('mouseleave', function(e) {
  189.                     if (UI.classList.contains('hover')) {
  190.                         UI.classList.remove('hover');
  191.                     }
  192.                 });
  193.                
  194.                 UI.addEventListener('click', function(e) {
  195.                     removeClassFromAll(radioUI, 'checked');
  196.                     if (!UI.classList.contains('checked')) UI.classList.add('checked');
  197.                 });
  198.                
  199.             }
  200.         }
  201.     }
  202. }
  203.  
  204. function tariffs_process() {
  205.     let tariffRadioUI = document.querySelectorAll('.tariff') || undefined;
  206.     if (typeof tariffRadioUI !== 'undefined') {
  207.         tariffRadioUI.forEach(function(elem) {
  208.             elem.addEventListener('click', function(e) {
  209.                 removeClassFromAllByGroupAttr(tariffRadioUI, 'checked', elem.getAttribute('data-group'));
  210.                 elem.classList.add('checked');
  211.             });
  212.         });
  213.     }
  214. }
  215.  
  216. window.addEventListener('DOMNodeInserted', function(e) {
  217.     checkbox_process();
  218.     radio_process();
  219.     tariffs_process();
  220. });
  221.  
  222. window.onload = function(event) {
  223.     let head = document.getElementById('test') || undefined;
  224.     let shape = document.querySelector('.shape') || undefined;
  225.    
  226.     shape_resize(shape);
  227.     checkbox_process();
  228.     radio_process();
  229.     resizeContainer();
  230.    
  231.     window.addEventListener('scroll', function(e) {
  232.         shape_resize(shape);
  233.     });
  234.    
  235.     window.onresize = function(e) {
  236.         resizeContainer();
  237.     }
  238.    
  239.     if (typeof head !== 'undefined') {
  240.         let rect = head.getBoundingClientRect();
  241.         head.style.width = rect.width + 'px';
  242.         head.style.left = rect.x + 14 + 'px';
  243.         head.style.top = '76px';
  244.         head.style.position = 'fixed';
  245.         head.style.visibility = 'hidden';
  246.         head.style.zIndex = '999';
  247.        
  248.         window.addEventListener('scroll', function(event) {
  249.             let firstElemY = document.querySelector('.row.first').offsetTop;
  250.             let lastElemY = document.querySelector('.row.last').offsetTop;
  251.  
  252.             if (window.pageYOffset >= firstElemY && window.pageYOffset <= lastElemY) {
  253.                 head.style.visibility = 'visible';         
  254.             } else if (window.pageYOffset >= lastElemY || pageYOffset <= firstElemY) {
  255.                 head.style.visibility = 'hidden';  
  256.             }
  257.         });
  258.     }
  259.     document.querySelectorAll('[data-select="select"]').forEach(elem =>
  260.         elem.addEventListener('click', function(event) {
  261.             document.querySelectorAll('.trader').forEach(elem =>
  262.                 elem.classList.remove('active')
  263.             )
  264.             elem.classList.add('active');
  265.             document.getElementById(elem.getAttribute('data-select-input')).value = elem.getAttribute('data-trader-id');
  266.         })
  267.     );
  268.     /*
  269.     document.querySelector('.darkBG_wrap').addEventListener('click', function(event) {
  270.         document.querySelectorAll('.offcanvas-collapse')[0].classList.remove('open');
  271.         offcanvasCloseElements();
  272.     });
  273.     */
  274.     window.addEventListener('touchstart', function(e) {
  275.         touchStartX = e.touches[0].clientX;
  276.         touchStartY = e.touches[0].clientY;
  277.         touchStartTime = e.timeStamp;
  278.     });
  279.    
  280.     window.addEventListener('touchend', function(e) {
  281.         let windowWidth = window.innerWidth;
  282.         let touchYConfirm = false;
  283.         let touchTConfirm = false;
  284.         let touchYDiff = 0;
  285.         let touchBeginOffsetStart = windowWidth;
  286.         let touchBeginOffsetEnd = windowWidth - (windowWidth / 2);
  287.         let touchEndOffsetX = windowWidth - (windowWidth / 2);
  288.         let touchBeginOffsetStartRev = (windowWidth / 2);
  289.         let touchEndOffsetXEndRev = (windowWidth);
  290.        
  291.         touchEndX = e.changedTouches[0].clientX;
  292.         touchEndY = e.changedTouches[0].clientY;
  293.         touchEndTime = e.timeStamp;
  294.         touchWorkTime = touchEndTime - touchStartTime;
  295.        
  296.         if (touchStartY > touchEndY) touchYDiff = touchStartY - touchEndY;
  297.         if (touchStartY < touchEndY) touchYDiff = touchEndY - touchStartY;
  298.         if (touchYDiff >= 0 && touchYDiff <= 160) touchYConfirm = true;
  299.         if (touchWorkTime >= TOUCH_WORK_TIME_MIN && touchWorkTime <= TOUCH_WORK_TIME_MAX) touchTConfirm = true;
  300.        
  301.         if ((touchStartX <= touchBeginOffsetStart && touchStartX >= touchBeginOffsetEnd) && (touchEndX <= touchEndOffsetX) &&
  302.             touchTConfirm && touchYConfirm) {
  303.             document.querySelectorAll('.offcanvas-collapse')[0].classList.add('open');
  304.             offcanvasOpenElements();
  305.         }
  306.        
  307.         if ((touchStartX >= 0 && touchStartX <= touchBeginOffsetStartRev) && (touchEndX <= touchEndOffsetXEndRev) && touchYConfirm && touchTConfirm) {
  308.             document.querySelectorAll('.offcanvas-collapse')[0].classList.remove('open');
  309.             offcanvasCloseElements();
  310.         }
  311.        
  312.         touchStartX = 0;
  313.         touchEndX = 0;
  314.         touchYDiff = 0;
  315.         touchYConfirm = false;
  316.         touchTConfirm = false;
  317.     });
  318.    
  319.    
  320.     document.querySelectorAll('[data-toggle="offcanvas"]').forEach(function(elem) {
  321.         elem.addEventListener('click', function(event) {
  322.            
  323.         document.querySelectorAll('.offcanvas-collapse').forEach(function(elem) {
  324.             elem.classList.toggle('open');
  325.            
  326.             if (elem.classList.contains('open')) {
  327.                 offcanvasOpenElements();
  328.             } else {
  329.                 offcanvasCloseElements();
  330.             }
  331.            
  332.         });
  333.            
  334.         event.preventDefault();
  335.         event.stopPropagation();
  336.            
  337.            
  338.         return false;
  339.         });
  340.        
  341.         elem.addEventListener('blur', function(event) {
  342.             if (elem.classList.contains('open')) {
  343.                 offcanvasOpenElements();
  344.             } else {
  345.                 offcanvasCloseElements();
  346.             }          
  347.         });
  348.     });
  349.    
  350.     document.querySelectorAll('[data-toggle="focus"]').forEach(elem =>
  351.         elem.addEventListener('focus', function(event) {
  352.             this.previousElementSibling.classList.add('focused');
  353.         })
  354.     );
  355.  
  356.     document.querySelectorAll('[data-toggle="focus"]').forEach(elem =>
  357.         elem.addEventListener('blur', function(event) {
  358.             this.previousElementSibling.classList.remove('focused');
  359.         })
  360.     );
  361.    
  362.     document.querySelectorAll('[data-toggle="card"]').forEach(elem =>
  363.         elem.addEventListener('click', function(event) {
  364.             elem.classList.toggle('open');
  365.             document.getElementById(elem.getAttribute('data-card')).classList.toggle('closed');
  366.            
  367.             event.stopPropagation();
  368.             event.preventDefault();
  369.         })
  370.     );
  371.    
  372. }
Advertisement
Add Comment
Please, Sign In to add comment