templates/reusable/baseJs.html.twig line 1

Open in your IDE?
  1. <!-- font awesome -->
  2. <script src="{{ asset('js/all.min.js') }}"></script>
  3. <!-- jquery 3.4 -->
  4. <script src="{{ asset('js/vendor-all.min.js') }}"></script>
  5. {# histogram slider uses jquery ui #}
  6. <script src="{{ asset('js/plugins/jquery-ui.min.js') }}"></script>
  7. <script src="{{ asset('js/plugins/please-wait.min.js') }}"></script>
  8. <script src="{{ asset('js/plugins/bootstrap.min.js') }}"></script>
  9. <script src="{{ asset('js/plugins/slick.min.js') }}"></script>
  10. <!-- polyfill for position sticky to work on ie9 + -->
  11. <script src="{{ asset('js/plugins/stickyfill.min.js') }}"></script>
  12. <script src="{{ asset('js/plugins/moment.min.js') }}"></script>
  13. <script src="{{ asset('js/pages/ox-alerts.js') }}"></script>
  14. <script src="{{ asset('js/jquery.toast.js') }}"></script>
  15. <script src="{{ asset('js/plugins/sweetalert.min.js') }}"></script>
  16. <script src="{{ asset('js/plugins/jquery.dataTables.min.js') }}"></script>
  17. <script src="{{ asset('js/plugins/dataTables.bootstrap4.min.js') }}"></script>
  18. <script src="{{ asset('js/plugins/dataTables.responsive.min.js') }}"></script>
  19. {# Rating (used for Guest and room Numbers) #}
  20. <script src="{{ asset('js/plugins/jquery.barrating.js') }}"></script>
  21. <script src="{{ asset('js/pages/ox-rating.js') }}"></script>
  22. <script src="{{ asset('js/plugins/daterangepicker.js') }}"></script>
  23. <script src="{{ asset('js/plugins/fab-histogram.slider.js') }}"></script>
  24. <script src="{{ asset('js/star-rating.js') }}"></script>
  25. <script src="{{ asset('js/plugins/isotope.pkgd.min.js') }}"></script>
  26. <script src="{{ asset('js/jquery.fix.clone.js') }}"></script>
  27. {#- CHILD Management in SEARCH BAR -#}
  28. {% include "appParts/childFormJs.html.twig" %}
  29. <script src="{{ asset('js/custom.js') }}"></script>
  30. {#- MODAL UPDATE for TRIP RENAME  -#}
  31. <script>
  32.     $('#ModalQuoteName').on('show.bs.modal', function (event) {
  33.         var button = $(event.relatedTarget);
  34.         console.log(event.relatedTarget);
  35.         var quoteName = button.data('quoteName');
  36.         var idQuote = button.data('idQuote');
  37.         var modal = $(this);
  38.         modal.find('#current_name').text(quoteName);
  39.         modal.find('#idQuoteRenameForm').val(idQuote);
  40.         modal.find('#quoteName').val(quoteName);
  41.     });
  42.     $(document).on('click', '#renameQuoteAction', function () {
  43.         $.ajaxSetup({
  44.             headers: {
  45.                 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  46.             }
  47.         });
  48.         $.ajax({
  49.             type: 'POST',
  50.             url: '{{ path('trip_rename') }}', /*trip.item_delete*/
  51.             dataType: 'json',
  52.             data: {quote: $('#idQuoteRenameForm').val(), quoteName: $('#quoteName').val()},
  53.         })
  54.             .done(function (data) {
  55.                 let quoteNameLabel = $('#quote-name');
  56.                 quoteNameLabel.text(data.quote.title);
  57.                 quoteNameLabel.data('quoteName', data.quote.title);
  58.                 quoteNameLabel.data('idQuote', data.quote.id);
  59.                 $.toast({
  60.                     heading: '{% trans %}Trip has been renamed{% endtrans %}',
  61.                     text: '{% trans %} {% endtrans %}',
  62.                     position: 'top-center',
  63.                     loaderBg: '#77aa3b',
  64.                     icon: 'success',
  65.                     hideAfter: 5000,
  66.                     stack: 6
  67.                 });
  68.             })
  69.             .fail(function () {
  70.                 $.toast({
  71.                     heading: '{% trans %}CONNECTION ISSUE{% endtrans %}',
  72.                     text: '{% trans %}Please check your internet connection and try later{% endtrans %}',
  73.                     position: 'top-center',
  74.                     loaderBg: '#ff6849',
  75.                     icon: 'warning',
  76.                     hideAfter: 4000,
  77.                     stack: 6
  78.                 });
  79.             });
  80.     });
  81.     $(document).on('click', '.hotel__name--favorite', function () {
  82.         $(this).toggleClass('pressed');
  83.     });
  84. </script>
  85. {#- AJAX: ADD TO FAVORITE -#}
  86. <script>
  87.     $(document).ready(function () {
  88.         $(document).on('click', '.hotel__name--favorite', function () {
  89.             $.ajax({
  90.                 type: 'POST',
  91.                 url: '{{ path('hotel_add_to_favorite') }}', /*trip.item_delete*/
  92.                 dataType: 'json',
  93.                 data: $(this).data(),
  94.             }).done(function (data) {
  95.                 if (data === "removed") {
  96.                     $(this).removeClass('pressed');
  97.                     console.log('pressed')
  98.                 } else {
  99.                     $(this).addClass('pressed');
  100.                 }
  101.             }).fail(function (data) {
  102.                 $.toast({
  103.                     heading: '{% trans %}CONNECTION ISSUE{% endtrans %}',
  104.                     text: '{% trans %}Please check your internet connection and try later{% endtrans %}',
  105.                     position: 'top-center',
  106.                     loaderBg: '#ff6849',
  107.                     icon: 'warning',
  108.                     hideAfter: 4000,
  109.                     stack: 6
  110.                 });
  111.             });
  112.         })
  113.     });
  114. </script>
  115. {#- AJAX: REFRESH PRICES -#}
  116. <script>
  117.     $(document).ready(function () {
  118.         $('#refresh-button').on('click', function () {
  119.             $.ajaxSetup({
  120.                 headers: {
  121.                     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  122.                 }
  123.             });
  124.             $.ajax({
  125.                 type: 'GET',
  126.                 {# url: '{{ path('home') }}', trip.refresh_prices #}
  127.                 dataType: 'json',
  128.                 data: $(this).data(),
  129.             })
  130.                 .done(function (data) {
  131.                     var quoteTotal = 0;
  132.                     data.itemInCart.forEach(function (item) {
  133.                         priceLine = '<p class="m-b-0 text-nowrap"><span class="text-muted f-12">{% trans %}Taxes{% endtrans %}: </span><span class="f-14 text-dark">$' + Math.round(item.newTotalTax * 100) / 100 + '</span>';
  134.                         priceLine += ' - <span class="text-muted f-12">{% trans %}Fees{% endtrans %}: </span><span class="f-14 text-nowrap text-dark">$' + Math.round(item.newFee * 100) / 100 + '</span></p>';
  135.                         priceLine += '<p class="m-b-0 text-primary"><span class="text-muted f-12">{% trans %}Total{% endtrans %}: </span>';
  136.                         priceLine += '<span class="f-w-900 f-14 text-primary">$<span class="sub-total">' + (Math.round(item.newPrice * 100) / 100).toLocaleString('en-GB', {minimumFractionDigits: 2}) + '</span></span></p>';
  137.                         quoteTotal += Number(item.newPrice);
  138.                         if (item.newPrice == 0) {
  139.                             $('#' + item.itemId).find('#not-available').slideDown('slow');
  140.                         } else {
  141.                             $('#' + item.itemId).find('.prices').html(priceLine).slideDown('slow');
  142.                         }
  143.                     })
  144.                     $('#quote-total').text((Math.round(quoteTotal * 100) / 100).toLocaleString('en-GB', {minimumFractionDigits: 2}));
  145.                     $('.refresh').slideUp('slow');
  146.                     $('.progress').slideDown('slow');
  147.                     $('#hr-total-price').slideDown('slow');
  148.                     $('#total-price').slideDown('slow');
  149.                     start = new Date();
  150.                     timerRun();
  151.                 })
  152.                 .fail(function () {
  153.                     console.log(this.url);
  154.                     $.toast({
  155.                         heading: '{% trans %}CONNECTION ISSUE{% endtrans %}',
  156.                         text: '{% trans %}Please check your internet connection and try later{% endtrans %}',
  157.                         position: 'top-center',
  158.                         loaderBg: '#ff6849',
  159.                         icon: 'warning',
  160.                         hideAfter: 4000,
  161.                         stack: 6
  162.                     });
  163.                 });
  164.         });
  165.         // =========== TIMER ===========
  166.         maxTime = 60000;
  167.         timeoutVal = Math.floor(maxTime / 100);
  168.         function updateProgress(percentage) {
  169.             $('.progress-bar').css("width", 100 - percentage + "%");
  170.         }
  171.         function timerRun() {
  172.             var now = new Date();
  173.             var timeDiff = now.getTime() - start.getTime();
  174.             var perc = Math.round((timeDiff / maxTime) * 100);
  175.             if (perc <= 100) {
  176.                 updateProgress(perc);
  177.                 setTimeout(timerRun, timeoutVal);
  178.             } else {
  179.                 $('.progress').slideUp('slow', function () {
  180.                     $('.prices').slideUp(1000);
  181.                     $('#total-price').slideUp(1000, function () {
  182.                         $('#hr-total-price').hide();
  183.                     });
  184.                     $('.refresh').slideDown(1000);
  185.                 });
  186.             }
  187.         }
  188.         {# $(document).on('click', '.btn-disable-customer_account', function (e) { #}
  189.         {#    var btnDisable = $(this); #}
  190.         {#    swal({ #}
  191.         {#        title: btnDisable.hasClass('btn-danger') ? "Disable Customer Account" : "Enable Customer Account", #}
  192.         {#        text: "Are you sure you want to " + (btnDisable.hasClass('btn-danger') ? "disable" : "enable") + " \"" + btnDisable.data('customerAccount-name') + "\" customerAccount?", #}
  193.         {#        icon: "warning", #}
  194.         {#        buttons: ['Cancel', 'Yes'], #}
  195.         {#        dangerMode: true, #}
  196.         {#    }) #}
  197.         {#        .then(function (isConfirm) { #}
  198.         {#            if (isConfirm) { #}
  199.         {#                $.ajaxSetup({ #}
  200.         {#                    headers: { #}
  201.         {#                        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') #}
  202.         {#                    } #}
  203.         {#                }); #}
  204.         {#                $.ajax({ #}
  205.         {#                    type: 'POST', #}
  206.         {#                    url: '{{ path('deactivate_customer_account') }}/' + btnDisable.data('customerAccount-id'), #}
  207.         {#                    dataType: 'json' #}
  208.         {#                }) #}
  209.         {#                    .done(function (data) { #}
  210.         {#                        if (data.status == "activated") { #}
  211.         {#                            btnDisable.html("Disable"); #}
  212.         {#                            btnDisable.removeClass("btn-success"); #}
  213.         {#                            btnDisable.addClass("btn-danger"); #}
  214.         {#                        } else { #}
  215.         {#                            btnDisable.html("Enable"); #}
  216.         {#                            btnDisable.removeClass("btn-danger"); #}
  217.         {#                            btnDisable.addClass("btn-success"); #}
  218.         {#                        } #}
  219.         {#                    }) #}
  220.         {#                    .fail(function (data) { #}
  221.         {#                        console.log(data); #}
  222.         {#                        $.toast({ #}
  223.         {#                            heading: '{% trans %}CONNECTION ISSUE{% endtrans %}', #}
  224.         {#                            text: '{% trans %}Please check your internet connection and try later{% endtrans %}', #}
  225.         {#                            position: 'top-center', #}
  226.         {#                            loaderBg: '#ff6849', #}
  227.         {#                            icon: 'warning', #}
  228.         {#                            hideAfter: 4000, #}
  229.         {#                            stack: 6 #}
  230.         {#                        }); #}
  231.         {#                    }); #}
  232.         {#            } #}
  233.         {#        }); #}
  234.         {# }); #}
  235.         {# $(document).on('click', '.btn-disable-agent', function (e) { #}
  236.         {#    var btnDisable = $(this); #}
  237.         {#    swal({ #}
  238.         {#        title: btnDisable.hasClass('btn-danger') ? "Disable Agent" : "Enable Agent", #}
  239.         {#        text: "Are you sure you want to " + (btnDisable.hasClass('btn-danger') ? "disable" : "enable") + " \"" + btnDisable.data('agent-name') + "\" agent?", #}
  240.         {#        icon: "warning", #}
  241.         {#        buttons: ['Cancel', 'Yes'], #}
  242.         {#        dangerMode: true, #}
  243.         {#    }) #}
  244.         {#        .then(function (isConfirm) { #}
  245.         {#            if (isConfirm) { #}
  246.         {#                $.ajaxSetup({ #}
  247.         {#                    headers: { #}
  248.         {#                        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') #}
  249.         {#                    } #}
  250.         {#                }); #}
  251.         {#                $.ajax({ #}
  252.         {#                    type: 'POST', #}
  253.         {#                    url: '{{ path('deactivate_user') }}/' + btnDisable.data('agent-id'), #}
  254.         {#                    dataType: 'json' #}
  255.         {#                }) #}
  256.         {#                    .done(function (data) { #}
  257.         {#                        if (data.status == "activated") { #}
  258.         {#                            btnDisable.html("Disable"); #}
  259.         {#                            btnDisable.removeClass("btn-success"); #}
  260.         {#                            btnDisable.addClass("btn-danger"); #}
  261.         {#                        } else { #}
  262.         {#                            btnDisable.html("Enable"); #}
  263.         {#                            btnDisable.removeClass("btn-danger"); #}
  264.         {#                            btnDisable.addClass("btn-success"); #}
  265.         {#                        } #}
  266.         {#                    }) #}
  267.         {#                    .fail(function (data) { #}
  268.         {#                        console.log(data); #}
  269.         {#                        $.toast({ #}
  270.         {#                            heading: '{% trans %}CONNECTION ISSUE{% endtrans %}', #}
  271.         {#                            text: '{% trans %}Please check your internet connection and try later{% endtrans %}', #}
  272.         {#                            position: 'top-center', #}
  273.         {#                            loaderBg: '#ff6849', #}
  274.         {#                            icon: 'warning', #}
  275.         {#                            hideAfter: 4000, #}
  276.         {#                            stack: 6 #}
  277.         {#                        }); #}
  278.         {#                    }); #}
  279.         {#            } #}
  280.         {#        }); #}
  281.         {# }); #}
  282.         $('.custom-file-input').on('change', function (event) {
  283.             var inputFile = event.currentTarget;
  284.             $(inputFile).parent()
  285.                 .find('.custom-file-label')
  286.                 .html(inputFile.files[0].name);
  287.             $('.logo-preview').hide();
  288.         });
  289.     });
  290. </script>
  291. {#- AJAX: SAVE FOR LATER -#}
  292. <script>
  293.     $(document).ready(function () {
  294.         $(document).on('click', '#save-for-later', function () {
  295.             let idQuote = $('#quote-name div').data('idQuote');
  296.             console.log(idQuote);
  297.             $.ajaxSetup({
  298.                 headers: {
  299.                     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  300.                 }
  301.             });
  302.             $.ajax({
  303.                 type: 'GET',
  304.                 url: '{{ path('home') }}',/*trip.save_for_later*/
  305.                 dataType: 'json',
  306.                 data: {idQuote: idQuote},
  307.             })
  308.                 .done(function (data) {
  309.                     console.log(data);
  310.                     $('#quote-name').html("{% trans %}empty{% endtrans %}");
  311.                     $('#cart-content').html("");
  312.                     $('#badge-cart-count').text("0");
  313.                     $.toast({
  314.                         heading: '{% trans %}Trip has been saved{% endtrans %}',
  315.                         text: '{% trans %}It can be accessed in the Trip Folder{% endtrans %}',
  316.                         position: 'top-center',
  317.                         loaderBg: '#77aa3b',
  318.                         icon: 'success',
  319.                         hideAfter: 5000,
  320.                         stack: 6,
  321.                         afterShown: function () {
  322.                             location.reload();
  323.                         }
  324.                     });
  325.                 })
  326.                 .fail(function () {
  327.                     console.log(this.url);
  328.                     $.toast({
  329.                         heading: '{% trans %}CONNECTION ISSUE{% endtrans %}',
  330.                         text: '{% trans %}Please check your internet connection and try later{% endtrans %}',
  331.                         position: 'top-center',
  332.                         loaderBg: '#ff6849',
  333.                         icon: 'warning',
  334.                         hideAfter: 4000,
  335.                         stack: 6
  336.                     });
  337.                 });
  338.         });
  339.     });
  340.     var displayingMessage = -1;
  341.     function getLoadingMessage() {
  342.         loadingMsgs = [{
  343.             'time': 8000,
  344.             'msg': 'There are 61,000 people in the air over the US at any given moment of any given day.'
  345.         },
  346.             {'time': 8000, 'msg': 'Honolulu is the only place in the U.S. that has a royal palace.'},
  347.             {'time': 8000, 'msg': 'With more than 3 million lakes, Canada has the most lakes in the world.'},
  348.             {
  349.                 'time': 10000,
  350.                 'msg': 'The longest flight in the world is from Sydney to Dallas. It lasts around 16 hours and covers approximately 8,500 miles.'
  351.             },
  352.             {
  353.                 'time': 9000,
  354.                 'msg': 'Traveling is good reason to meet new people and establish friendly relations with foreigners.'
  355.             },
  356.             {
  357.                 'time': 10000,
  358.                 'msg': 'If you want to spend a night in all of Las Vegas’ hotels, it would take you almost three hundred years to do it.'
  359.             },
  360.             {
  361.                 'time': 10000,
  362.                 'msg': 'The Finger Lakes area in New York is the largest wine producing region in the United States, besides California.'
  363.             },
  364.             {'time': 10000, 'msg': 'Deer in the Florida Keys are about the size of collie dogs.'},
  365.             {'time': 9000, 'msg': 'Key West is closer to Havana than to Miami.'},
  366.             {'time': 10000, 'msg': 'New York City is actually further south than Rome is.'},
  367.             {'time': 10000, 'msg': 'The city of Monaco is smaller in size than Central Park in New York City'},
  368.             {
  369.                 'time': 12000,
  370.                 'msg': 'The largest human migration in America occurs annually at Thanksgiving, with nearly 51 million traveling home for the holidays.'
  371.             },
  372.             {'time': 9000, 'msg': 'California has more people than all of Canada.'},
  373.             {
  374.                 'time': 12000,
  375.                 'msg': 'St. Augustine was the first city in America. Therefore making it the oldest city in the United States, founded by the Spanish in 1565.'
  376.             },
  377.             {
  378.                 'time': 10000,
  379.                 'msg': 'Australia is wider than the moon.'
  380.             },
  381.             {
  382.                 'time': 10000,
  383.                 'msg': 'The Florida Everglades are the only place on the planet where crocodiles and alligators live together.'
  384.             },
  385.             {
  386.                 'time': 10000,
  387.                 'msg': 'Panama is the only place in the world where you can see the sun rise on the Pacific and set on the Atlantic.'
  388.             },
  389.             {
  390.                 'time': 10000,
  391.                 'msg': 'The entire world\'s population could fit inside Los Angeles if everyone stood shoulder to shoulder.'
  392.             },
  393.             {
  394.                 'time': 10000,
  395.                 'msg': 'Surfing was introduced to the U.S. mainland in 1885, when three visiting Hawaiian princes paddled into the waves off Santa Cruz\'s Main Beach.'
  396.             },
  397.             {
  398.                 'time': 10000,
  399.                 'msg': 'No spot in Central America is further than 125 miles (200 kilometers) from the ocean.'
  400.             },
  401.             {
  402.                 'time': 10000,
  403.                 'msg': 'The whole of China operates on Beijing time, even though the country covers five time zones.'
  404.             },
  405.             {
  406.                 'time': 10000,
  407.                 'msg': 'The shortest international commercial flight is a 15 minute trip from Sint Maarten to Anguilla.'
  408.             },
  409.             {
  410.                 'time': 10000,
  411.                 'msg': 'Continents shift at about the same rate as your fingernails grow.'
  412.             },
  413.             {
  414.                 'time': 10000,
  415.                 'msg': 'Gravity in the Hudson Bay area of Canada is lower than in the rest of the world.'
  416.             },
  417.             {
  418.                 'time': 10000,
  419.                 'msg': 'The UK has almost three times the population of Australia.'
  420.             },
  421.             {
  422.                 'time': 10000,
  423.                 'msg': 'The northern hemisphere is home to 90% of the world’s population.'
  424.             },
  425.             {
  426.                 'time': 10000,
  427.                 'msg': 'The Spanish national anthem has no words.'
  428.             },
  429.             {
  430.                 'time': 10000,
  431.                 'msg': 'In Drachten, a town in Holland, there are 50,000 residents and zero traffic lights.'
  432.             },
  433.             {
  434.                 'time': 10000,
  435.                 'msg': 'Every sixty seconds, more than thirty thousand tons of water will go over the Niagara Falls.'
  436.             },
  437.             {
  438.                 'time': 10000,
  439.                 'msg': 'Japan has the world\'s oldest hotel that\'s been in operations for 1,300 years, which has stayed in the same family for 52 generations.'
  440.             },
  441.             {
  442.                 'time': 10000,
  443.                 'msg': 'Michigan has over 300 waterfalls and more coastline than California, thanks to the great lakes.'
  444.             },
  445.             {
  446.                 'time': 10000,
  447.                 'msg': 'La Paz, Bolivia is the highest capital city in the world.'
  448.             },
  449.             {
  450.                 'time': 10000,
  451.                 'msg': 'More than one-third of the world’s airports are in the United States of America.'
  452.             },
  453.             {
  454.                 'time': 10000,
  455.                 'msg': 'Angel Falls in Venezuela is the world\'s highest uninterrupted waterfall.'
  456.             },
  457.             {
  458.                 'time': 10000,
  459.                 'msg': 'Australia has over 10,000 beaches.'
  460.             },
  461.             {
  462.                 'time': 10000,
  463.                 'msg': 'Bulgaria is the only country in Europe that hasn\'t changed it\'s name since it was first created.'
  464.             },
  465.             {
  466.                 'time': 10000,
  467.                 'msg': 'In a nation known for its winter, Calgary, Alberta averages 333 sunny days a year.'
  468.             },
  469.             {
  470.                 'time': 10000,
  471.                 'msg': 'Sweden has over 220,000 islands (more than anywhere else in the world).'
  472.             },
  473.             {
  474.                 'time': 10000,
  475.                 'msg': 'Many sections of the Great Wall Of China are held together by a paste of sticky rice flour and slaked lime.'
  476.             },
  477.             {
  478.                 'time': 10000,
  479.                 'msg': 'The country with the most time zones is France, thanks to its overseas territories. France uses 12 time zones.'
  480.             },
  481.             {
  482.                 'time': 10000,
  483.                 'msg': 'Russia shares a border with 14 countries, No other country has as many borders.'
  484.             },
  485.             {
  486.                 'time': 10000,
  487.                 'msg': 'Dubai’s artificial Palm Islands use enough sand to fill 2.5 Empire State buildings.'
  488.             },
  489.             {
  490.                 'time': 10000,
  491.                 'msg': 'Everyday, 3,000 euros worth of coins are thrown into the Trevi Fountain in Rome - and then donated to charity.'
  492.             },
  493.             {
  494.                 'time': 10000,
  495.                 'msg': 'Two-thirds of the world’s eggplant is grown in New Jersey.'
  496.             },
  497.             {
  498.                 'time': 10000,
  499.                 'msg': 'The Grand Canyon creates its own weather due to its elevation.'
  500.             },
  501.             {
  502.                 'time': 10000,
  503.                 'msg': 'In the Caribbean, there are oysters that can climb trees.'
  504.             },
  505.             {
  506.                 'time': 10000,
  507.                 'msg': 'The city of Portland, Oregon was named after a coin toss. Heads for Portland and tails for Boston.'
  508.             },
  509.             {
  510.                 'time': 10000,
  511.                 'msg': 'There is enough fuel in a full tank of a jumbo jet to drive an average car around the world four times.'
  512.             },
  513.             {
  514.                 'time': 10000,
  515.                 'msg': 'Peru has more pyramids than Egypt.'
  516.             },
  517.             {
  518.                 'time': 10000,
  519.                 'msg': 'Holland\'s famous tulips originated in Turkey.'
  520.             },
  521.             {
  522.                 'time': 10000,
  523.                 'msg': 'There\'s a city called Rome on each of the five continents.'
  524.             },
  525.             {
  526.                 'time': 10000,
  527.                 'msg': 'Estonia has the cleanest air in the world.'
  528.             },
  529.             {
  530.                 'time': 10000,
  531.                 'msg': 'Istanbul, Turkey is the only city built on two continents.'
  532.             },
  533.             {
  534.                 'time': 10000,
  535.                 'msg': 'Only 5% of the world’s population has ever been on an airplane.'
  536.             },
  537.             {
  538.                 'time': 10000,
  539.                 'msg': 'Greek is the oldest written language still in existence.'
  540.             },
  541.             {
  542.                 'time': 10000,
  543.                 'msg': 'The largest cave in the world is in Han Son Doong, Vietnam and has its own climate, jungle, and river. It is so massive that clouds form inside.'
  544.             },
  545.             {
  546.                 'time': 10000,
  547.                 'msg': 'There\'s a giant limestone wall in Bolivia that has over 5,000 dinosaur footprints on it.'
  548.             },
  549.             {
  550.                 'time': 10000,
  551.                 'msg': 'Indonesia\'s volcano, Kawah Ijen, spews blue lava.'
  552.             },
  553.             {
  554.                 'time': 10000,
  555.                 'msg': 'The oldest living organism in the world is "Pando” in Utah. It looks like a forest, but it\'s actually one tree spread across 100 acres.'
  556.             },
  557.             {
  558.                 'time': 10000,
  559.                 'msg': 'New York City is built on an ancient mountain range so old that it has eroded away entirely. Skyscrapers stand where the mountains once stood.'
  560.             },
  561.             {
  562.                 'time': 10000,
  563.                 'msg': 'There are secret poems written on Boston\'s sidewalks that are only visible when it rains.'
  564.             },
  565.             {
  566.                 'time': 10000,
  567.                 'msg': 'There are enough restaurants in New York City for one person to eat out every night for 54 years and never visit the same place twice.'
  568.             },
  569.             {
  570.                 'time': 10000,
  571.                 'msg': 'The soft soil that causes the Leaning Tower of Pisa to tilt has protected it from at least 4 strong earthquakes.'
  572.             },
  573.             {
  574.                 'time': 10000,
  575.                 'msg': 'The pink cherry blossom trees in Washington D.C were a gift from Japan in 1912, as a symbol of friendship.'
  576.             },
  577.             {
  578.                 'time': 10000,
  579.                 'msg': 'The tallest tree and the oldest tree in the world are located in California.'
  580.             },
  581.             {
  582.                 'time': 10000,
  583.                 'msg': 'An Egyptian city named Thonis was discovered underwater in 2013 after being lost for 1,200 years in the Mediterranean sea.'
  584.             },
  585.             {
  586.                 'time': 10000,
  587.                 'msg': 'The Pacific ocean is larger than all of the land on Earth.'
  588.             },
  589.             {
  590.                 'time': 10000,
  591.                 'msg': 'Every day, people in the UK drink 164 million cups of tea.'
  592.             },
  593.             {
  594.                 'time': 10000,
  595.                 'msg': 'There are more chickens than humans in the UK.'
  596.             },
  597.             {
  598.                 'time': 10000,
  599.                 'msg': 'About one fourth of the Netherlands lies below sea level.'
  600.             },
  601.             {
  602.                 'time': 10000,
  603.                 'msg': 'Moisture from the Amazon falls as far away as Texas.'
  604.             },
  605.             {
  606.                 'time': 10000,
  607.                 'msg': 'If you drive south from Detroit, Michigan, you\'ll reach Canada.'
  608.             },
  609.             {
  610.                 'time': 10000,
  611.                 'msg': 'Brazil is home to the largest Japanese population outside Japan.'
  612.             },
  613.             {
  614.                 'time': 10000,
  615.                 'msg': 'DFW Airport is larger than Manhattan.'
  616.             },
  617.             {
  618.                 'time': 10000,
  619.                 'msg': 'The West Edmonton Mall in Canada has the largest parking spot in the world (20,000 spaces).'
  620.             },
  621.             {
  622.                 'time': 10000,
  623.                 'msg': 'Walt Disney World\'s property is the same size as San Francisco.'
  624.             },
  625.             {
  626.                 'time': 10000,
  627.                 'msg': 'Due to the bulge at the equator, the peak of Mount Chimborazo in Ecuador is the closest point on earth to the moon (not Mount Everest).'
  628.             },
  629.             {
  630.                 'time': 10000,
  631.                 'msg': 'The population of Texas is larger than the entire population of Australia.'
  632.             },
  633.             {
  634.                 'time': 10000,
  635.                 'msg': 'There are 45 million motorcycles in Vietnam (almost as many as the entire population of Canada).'
  636.             },
  637.             {
  638.                 'time': 10000,
  639.                 'msg': '“Traveling – it leaves you speechless, then turns you into a storyteller.” — Ibn Battuta'
  640.             },
  641.             {
  642.                 'time': 10000,
  643.                 'msg': '“The journey of a thousand miles begins with a single step.”—Lao Tzu'
  644.             }
  645.         ];
  646.         position = Math.floor(Math.random() * loadingMsgs.length);
  647.         if (displayingMessage != position) {
  648.             displayingMessage = position;
  649.         } else {
  650.             displayingMessage = position < loadingMsgs.length ? position + 1 : 0;
  651.         }
  652.         loadingMsgs[displayingMessage].msg = "<p class='loading-message'>" + loadingMsgs[displayingMessage].msg + "</p><div class='sk-spinner sk-spinner-double-bounce'><div class='sk-double-bounce1'></div><div class='sk-double-bounce2'></div></div>";
  653.         return loadingMsgs[displayingMessage];
  654.     }
  655.     function hidePreloader() {
  656.         var preloader = $('.pg-loading-screen');
  657.         preloader.fadeOut(100);
  658.     }
  659.     $(document).on('submit', '#searchbar form', function () {
  660.         loadingScreenFunction();
  661.     });
  662.     let pleaseWaitLoadingScreen
  663.     const loadingScreenFunction = async () => {
  664.         let loadingMessage = getLoadingMessage();
  665.         {% set websiteLogo = 'img/logo/overseas-xpress-logo-horizontal.png' %}
  666.         {% if app.session.get("customerAccountDomain") %}
  667.             {% set customerAccountDomain = app.session.get("customerAccountDomain") %}
  668.             {% set websiteLogo = 'uploads/customerAccountLogo/logoWebsite/' ~ customerAccountDomain.getWebsiteLogo() %}
  669.         {% endif %}
  670.         pleaseWaitLoadingScreen = pleaseWait({
  671.             logo: "{{ asset(websiteLogo) }}",
  672.             backgroundColor: 'rgb(255, 255, 255, 1)',
  673.             loadingHtml: loadingMessage.msg,
  674.         });
  675.         let i = 0;
  676.         while (i < 10) {
  677.             await delay(loadingMessage.time);
  678.             loadingMessage = getLoadingMessage();
  679.             pleaseWaitLoadingScreen.updateLoadingHtml(loadingMessage.msg);
  680.             i++;
  681.         }
  682.     };
  683.     const delay = ms => new Promise(res => setTimeout(res, ms));
  684.     $('body').on('click', '.booknow', function () {
  685.         loadingScreenFunction();
  686.     });
  687.     $(document).on('submit', '#searchbar .hotel__results .refinements__search form', function () {
  688.         loadingScreenFunction();
  689.     });
  690.     $(document).on('submit', '#searchHotelModal', function () {
  691.         loadingScreenFunction();
  692.     });
  693.     $(document).ready(function () {
  694.         $(document).on('submit', '#carRentalForm', function () {
  695.             loadingScreenFunction();
  696.         });
  697.     })
  698. </script>
  699. {#- DATE Picker -#}
  700. <script>
  701.     let checkIn = {% if checkIn is defined and checkIn %} new Date("{{ checkIn }}T00:12:00") {% else %} moment().add(7, 'days') {% endif %} ;
  702.     let checkOut = {% if checkOut is defined and checkOut %} new Date("{{ checkOut }}T00:12:00") {% else %} moment().add(10, 'days'){% endif %} ;
  703. </script>
  704. <script src="{{ asset('js/pages/ox-datepicker.js') }}"></script>
  705. <script>
  706.     $(window).ready(function () {
  707.         // HOTEL AUTOCOMPLETE
  708.         let hotelAutocomplete = $("#hotel_destination");
  709.         if (hotelAutocomplete.length) {
  710.             hotelAutocomplete.keydown(function (event) {
  711.                 //Prevent enter
  712.                 if (event.keyCode == 13) {
  713.                     event.preventDefault();
  714.                     return false;
  715.                 }
  716.             });
  717.             hotelAutocomplete.autocomplete({
  718.                 // autoFocus: true,
  719.                 source: function (request, response) {
  720.                     $.ajax({
  721.                         url: "{{ path('autocomplete_hotel') }}",
  722.                         dataType: "json",
  723.                         data: {
  724.                             searchTerm: request.term
  725.                         },
  726.                         success: function (data) {
  727.                             response(data);
  728.                         }, error: function (d) {
  729.                             console.log(2);
  730.                             console.log(d);
  731.                         }
  732.                     });
  733.                 },
  734.                 minLength: 3,
  735.                 focus: function (event, ui) {
  736.                     $("#hotel_destination").val(ui.item.label);
  737.                     $("#hidden_hotel_id").val(ui.item.itemId);
  738.                     return false;
  739.                 },
  740.                 change: function (event, ui) {
  741.                     // console.log('ui');
  742.                     // console.log(ui);
  743.                     if (ui === null || ui.item === null) {
  744.                         let autocompleteItem = $('.autocompleteItem');
  745.                         $("#hotel_destination").val(autocompleteItem.first().data('label'));
  746.                         $("#hidden_hotel_id").val(autocompleteItem.first().data('item_id'));
  747.                     }
  748.                     return false;
  749.                 },
  750.             }).autocomplete("instance")._renderItem = function (ul, item) {
  751.                 return $("<li class='autocompleteItem " + item.class + "' data-label='" + item.label + "'  data-item_id='" + item.itemId + "' >")
  752.                     .append("<div> <i class='autocompleteItemIcon fas fa-bed'></i> <i class='autocompleteItemIcon far fa-map'></i>" + item.label + " </div>")
  753.                     .appendTo(ul);
  754.             };
  755.         }
  756.         // ACTIVITY AUTOCOMPLETE
  757.         let activityAutocomplete = $("#experience_destination");
  758.         if (activityAutocomplete.length) {
  759.             activityAutocomplete.autocomplete({
  760.                 source: function (request, response) {
  761.                     $.ajax({
  762.                         url: "{{ path('autocomplete_activity') }}",
  763.                         dataType: "json",
  764.                         data: {
  765.                             searchTerm: request.term
  766.                         },
  767.                         success: function (data) {
  768.                             console.log(123);
  769.                             response(data);
  770.                         }, error: function (d) {
  771.                             console.log(2);
  772.                             console.log(d);
  773.                         }
  774.                     });
  775.                 },
  776.                 minLength: 3,
  777.                 focus: function (event, ui) {
  778.                     $("#experience_destination").val(ui.item.label);
  779.                     return false;
  780.                 },
  781.                 change: function (event, ui) {
  782.                     console.log(ui);
  783.                     if (ui.item === null) {
  784.                         let autocompleteItem = $('.autocompleteItem');
  785.                         $("#experience_destination").val(autocompleteItem.first().data('label'));
  786.                     }
  787.                     return false;
  788.                 },
  789.             }).autocomplete("instance")._renderItem = function (ul, item) {
  790.                 return $("<li class='autocompleteItem " + item.class + "' data-label='" + item.label + "'  data-item_id='" + item.itemId + "' >")
  791.                     .append("<div> <i class='autocompleteItemIcon fas fa-hiking'></i> <i class='autocompleteItemIcon far fa-map'></i>" + item.label + " </div>")
  792.                     .appendTo(ul);
  793.             };
  794.         }
  795.         // TRANSFER AUTOCOMPLETE
  796.         let transferAutocomplete = $("#transfer_destination");
  797.         if (transferAutocomplete.length) {
  798.             transferAutocomplete.autocomplete({
  799.                 source: function (request, response) {
  800.                     $.ajax({
  801.                         url: "{{ path('autocomplete_transfer') }}",
  802.                         dataType: "json",
  803.                         data: {
  804.                             searchTerm: request.term
  805.                         },
  806.                         success: function (data) {
  807.                             response(data);
  808.                         }, error: function (d) {
  809.                             console.log(2);
  810.                             console.log(d);
  811.                         }
  812.                     });
  813.                 },
  814.                 minLength: 3,
  815.                 focus: function (event, ui) {
  816.                     $("#transfer_destination").val(ui.item.label);
  817.                     return false;
  818.                 },
  819.                 change: function (event, ui) {
  820.                     console.log(ui);
  821.                     if (ui.item === null) {
  822.                         let autocompleteItem = $('.autocompleteItem');
  823.                         $("#transfer_destination").val(autocompleteItem.first().data('label'));
  824.                     }
  825.                     return false;
  826.                 },
  827.             }).autocomplete("instance")._renderItem = function (ul, item) {
  828.                 return $("<li class='autocompleteItem " + item.class + "' data-label='" + item.label + "'  data-item_id='" + item.itemId + "' >")
  829.                     .append("<div> <i class='autocompleteItemIcon fas fa-plane'></i> <i class='autocompleteItemIcon far fa-map'></i>" + item.label + " </div>")
  830.                     .appendTo(ul);
  831.             };
  832.         }
  833.     });
  834. </script>
  835. {#- GOOGLE ANALYTICS -#}
  836. <!-- Global site tag (gtag.js) - Google Analytics -->
  837. <script async src="https://www.googletagmanager.com/gtag/js?id=UA-117506295-7"></script>
  838. <script>
  839.     window.dataLayer = window.dataLayer || [];
  840.     function gtag() {
  841.         dataLayer.push(arguments);
  842.     }
  843.     gtag('js', new Date());
  844.     gtag('config', 'UA-117506295-7');
  845. </script>
  846. <!-- Start of HubSpot Embed Code -->
  847. <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/7009910.js"></script>
  848. <!-- End of HubSpot Embed Code -->