main_footer.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <section id="footer" class="section footer">
  2. <div class="container">
  3. <div class="footer-wrap">
  4. <p class="heading-jumbo white">Get in Touch</p>
  5. <div class="footer-infromation-wrapper">
  6. <h4 class="footer-heading">Contact information</h4>
  7. <div class="footer-links-and-icon"><img src="/images/Vector.png" loading="lazy" alt="" class="image">
  8. <a href="tel:<?=admin_utils::getSystemParam('PHONE')?>" class="footer-links"><?=admin_utils::getSystemParam('PHONE')?></a>
  9. </div>
  10. <div class="footer-links-and-icon"><img src="/images/Mail.png" loading="lazy" alt="" class="image">
  11. <a href="mailto:<?=admin_utils::getSystemParam('EMAIL')?>" class="footer-links"><?=admin_utils::getSystemParam('EMAIL')?></a>
  12. </div>
  13. <div class="footer-links-and-icon"><img src="/images/Map_Pin.png" loading="lazy" alt="" class="image">
  14. <a href="https://www.google.com/maps/place//data=!4m2!3m1!1s0x4741ddcf68df7d8b:0x84c42aec97a2c21a?sa=X&amp;ved=1t:8290&amp;ictx=111" target="_blank" class="footer-links">Budapest, Jane Haining rkp., 1051</a>
  15. </div>
  16. </div>
  17. <div class="footer-infromation-wrapper">
  18. <h4 class="footer-heading">Office Hours</h4>
  19. <div class="footer-links-and-icon">
  20. <div class="footer-links-copy"><?=admin_utils::getSystemParam('OPEN_WEEKDAYS')?></div>
  21. </div>
  22. <div class="footer-links-and-icon">
  23. <div class="footer-links-copy"><?=admin_utils::getSystemParam('OPEN_SATURDAY')?></div>
  24. </div>
  25. <div class="footer-links-and-icon">
  26. <div class="footer-links-copy"><?=admin_utils::getSystemParam('OPEN_SUNDAY')?></div>
  27. </div>
  28. </div>
  29. <div class="footer-infromation-wrapper">
  30. <h4 class="footer-heading">Follow us</h4>
  31. <div class="footer-links-and-icon">
  32. <a href="<?=admin_utils::getSystemParam('FACEBOOK')?>" target="_blank" class="w-inline-block"><img src="/images/fb684ca660ce4f30cb6b726204-2025-06-14-002918-1.PNG" loading="lazy" alt="" class="image-2"></a>
  33. <a href="<?=admin_utils::getSystemParam('INSTAGRAM')?>" target="_blank" class="w-inline-block"><img src="/images/instafb684ca660ce4f30cb6b726204-2025-06-14-002918-1.PNG" loading="lazy" alt="" class="image-2"></a>
  34. <a href="<?=admin_utils::getSystemParam('TIKTOK')?>" target="_blank" class="w-inline-block"><img src="/images/signal-2025-07-31-212542.png" loading="lazy" alt="" class="image-2"></a>
  35. </div>
  36. </div>
  37. <div class="footer-infromation-wrapper">
  38. <a href="/terms-and-conditions" class="footer-subpage">Terms and conditions</a>
  39. <a href="/privacy-policy" class="footer-subpage">Privacy Policy</a>
  40. <a href="/refund-policy" class="footer-subpage">Refund Policy</a>
  41. <a href="/data-management-information" class="footer-subpage">Data management information</a>
  42. </div>
  43. </div>
  44. </div>
  45. </section>
  46. <script>
  47. window.alert = function() {};
  48. </script>
  49. <script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=684c8b6bb3bcc579a89cb451" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
  50. <script src="https://code.jquery.com/ui/1.14.0/jquery-ui.min.js" integrity="sha256-Fb0zP4jE3JHqu+IBB9YktLcSjI1Zc6J2b6gTjB0LpoM=" crossorigin="anonymous"></script>
  51. <script src="/js/webflow.js" type="text/javascript"></script><!-- 🟢 SHOW/HIDE PASSWORD CODE 🟢 -->
  52. <script src="/js/events.js" type="text/javascript"></script>
  53. <script>
  54. //attach a click handler to the button to make it transform when clicked, via our transform() function below. Add right before your closing body tag.
  55. document.querySelector("[data-transform]").addEventListener("click", transform);
  56. //flag of whether or not it is a password field or text field
  57. var isPassword = true;
  58. //this function will toggle the input between being a password or a text input
  59. function transform() {
  60. //copy the element itself, its html source, and value text to a variable
  61. var myInput = document.querySelector("[data-show]");
  62. var oldHtml = myInput.outerHTML;
  63. var text = myInput.value;
  64. if (isPassword) {
  65. //replace "password" with "text" in the html if it is a password field
  66. var newHtml = oldHtml.replace(/password/g, "text");
  67. } else {
  68. //replace "text" with "password" if it is a text field
  69. newHtml = oldHtml.replace(/text/g, "password");
  70. }
  71. //update the html
  72. myInput.outerHTML = newHtml;
  73. //restore the text value
  74. myInput = document.querySelector("[data-show]");
  75. myInput.value = text;
  76. //toggle the isPassword flag
  77. isPassword = !isPassword;
  78. }
  79. </script>
  80. <!-- 🟢 COLOR PICKER CODE 🟢 -->
  81. <script src="https://cdn.jsdelivr.net/npm/@jaames/iro/dist/iro.min.js"></script>
  82. <script>
  83. // Create a new color picker instance
  84. // https://iro.js.org/guide.html#getting-started
  85. var colorPicker = new iro.ColorPicker(".ms-colorpicker", {
  86. // color picker options
  87. // Option guide: https://iro.js.org/guide.html#color-picker-options
  88. width: 180,
  89. color: "rgb(255, 0, 0)",
  90. borderWidth: 5,
  91. borderColor: "#f5f5f5",
  92. });
  93. var values = document.getElementById("values");
  94. var hexInput = document.getElementById("hexInput");
  95. var swatch = document.getElementById("colorSwatch");
  96. // https://iro.js.org/guide.html#color-picker-events
  97. colorPicker.on(["color:init", "color:change"], function(color){
  98. // Show the current color in different formats
  99. // Using the selected color: https://iro.js.org/guide.html#selected-color-api
  100. values.innerHTML = [
  101. "hex: " + color.hexString,
  102. "rgb: " + color.rgbString,
  103. "hsl: " + color.hslString,
  104. ].join("<br>");
  105. hexInput.value = color.hexString;
  106. swatch.style.backgroundColor = color.hexString;
  107. });
  108. hexInput.addEventListener('change', function() {
  109. colorPicker.color.hexString = this.value;
  110. swatch.style.backgroundColor = this.value;
  111. });
  112. </script>
  113. <!-- 🟢 CUSTOM SELECT CODE 🟢 -->
  114. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-nice-select/1.1.0/js/jquery.nice-select.min.js"></script>
  115. <script>
  116. $(document).ready(function() {
  117. $('.nice-select').niceSelect();
  118. });
  119. </script>
  120. <!-- 🟢 COPY BUTTON CODE 🟢 -->
  121. <script>
  122. const copyBtns = document.querySelectorAll('[data-copy-button]');
  123. copyBtns.forEach(copyBtn => {
  124. const inputId = copyBtn.getAttribute('data-copy-button');
  125. const input = document.querySelector(`[data-input="${inputId}"]`);
  126. copyBtn.addEventListener('click', async () => {
  127. try {
  128. await navigator.clipboard.writeText(input.value);
  129. console.log('Text copied to clipboard');
  130. // Change button text to "Copied" and add class "success" for 3 seconds
  131. const originalBtnText = copyBtn.innerHTML;
  132. copyBtn.innerHTML = 'Copied';
  133. copyBtn.classList.add('success');
  134. setTimeout(() => {
  135. copyBtn.innerHTML = originalBtnText;
  136. copyBtn.classList.remove('success');
  137. }, 3000);
  138. } catch (err) {
  139. console.error('Failed to copy text: ', err);
  140. }
  141. });
  142. });
  143. </script>
  144. <!-- 🟢 SEARCH MULTISELECT CODE 🟢 -->
  145. <script>
  146. $('[data-search="multi-select"]').on("keyup", function() {
  147. var v = $(this).val();
  148. $(".results").removeClass("results");
  149. $(".noresults").removeClass("noresults");
  150. $(".search-result").each(function() {
  151. if (v != "" && $(this).text().search(new RegExp(v, 'gi')) != -1) {
  152. $(this).addClass("results");
  153. } else if (v != "" && $(this).text().search(v) != 1) {
  154. $(this).addClass("noresults");
  155. }
  156. });
  157. });
  158. </script>
  159. <!-- 🟢 DRAG N DROP 🟢 -->
  160. <script>
  161. document.addEventListener('DOMContentLoaded', (event) => {
  162. var dragSrcEl = null;
  163. function handleDragStart(e) {
  164. this.style.opacity = '0.4';
  165. dragSrcEl = this;
  166. e.dataTransfer.effectAllowed = 'move';
  167. e.dataTransfer.setData('text/html', this.innerHTML);
  168. }
  169. function handleDragOver(e) {
  170. if (e.preventDefault) {
  171. e.preventDefault();
  172. }
  173. e.dataTransfer.dropEffect = 'move';
  174. return false;
  175. }
  176. function handleDragEnter(e) {
  177. this.classList.add('over');
  178. }
  179. function handleDragLeave(e) {
  180. this.classList.remove('over');
  181. }
  182. function handleDrop(e) {
  183. if (e.stopPropagation) {
  184. e.stopPropagation(); // stops the browser from redirecting.
  185. }
  186. if (dragSrcEl != this) {
  187. dragSrcEl.innerHTML = this.innerHTML;
  188. this.innerHTML = e.dataTransfer.getData('text/html');
  189. }
  190. let orderedBoxes = document.querySelectorAll('.ms-box div[data-value="true"]');
  191. let orderList = Array.from(orderedBoxes).map(function(box) {
  192. return box.innerHTML;
  193. }).join(',');
  194. let input = document.querySelector('input[data-input="drag-order"]');
  195. input.value = orderList;
  196. return false;
  197. }
  198. function handleDragEnd(e) {
  199. this.style.opacity = '1';
  200. items.forEach(function (item) {
  201. item.classList.remove('over');
  202. });
  203. }
  204. let items = document.querySelectorAll('.ms-boxes .ms-box');
  205. items.forEach(function(item) {
  206. item.addEventListener('dragstart', handleDragStart, false);
  207. item.addEventListener('dragenter', handleDragEnter, false);
  208. item.addEventListener('dragover', handleDragOver, false);
  209. item.addEventListener('dragleave', handleDragLeave, false);
  210. item.addEventListener('drop', handleDrop, false);
  211. item.addEventListener('dragend', handleDragEnd, false);
  212. });
  213. // Set initial value of the input field
  214. let orderedBoxes = document.querySelectorAll('.ms-box div[data-value="true"]');
  215. let orderList = Array.from(orderedBoxes).map(function(box) {
  216. return box.innerHTML;
  217. }).join(',');
  218. let input = document.querySelector('input[data-input="drag-order"]');
  219. input.value = orderList;
  220. });
  221. </script>
  222. <!-- 🟢 RANGE SLIDERS 🟢 -->
  223. <script>
  224. function rangeSlider() {
  225. var sliders = document.querySelectorAll('.ms-range-slider');
  226. sliders.forEach(function(slider) {
  227. var range = slider.querySelector('.ms-range-slider-bar'),
  228. value = slider.querySelector('.ms-range-slider-value');
  229. value.innerHTML = range.value;
  230. range.addEventListener('input', function() {
  231. value.innerHTML = this.value;
  232. });
  233. });
  234. }
  235. rangeSlider();
  236. </script>
  237. </body>
  238. </html>