jQuery(function ($) { $.fn.bravoAutocomplete = function (options) { return this.each(function () { var $this = $(this); var main = $(this).closest(".smart-search"); var textLoading = options.textLoading; main.append('
'+textLoading+'
'); $(document).on("click.Bst", function(event){ if (main.has(event.target).length === 0 && !main.is(event.target)) { main.find('.bravo-autocomplete').removeClass('show'); } else { main.find('.bravo-autocomplete').addClass('show'); } }); if (options.dataDefault.length > 0) { var items = ''; for (var index in options.dataDefault) { var item = options.dataDefault[index]; items += '
' + item.title + '
'; } main.find('.bravo-autocomplete .list-item').html(items); main.find('.bravo-autocomplete').removeClass("on-message"); } var requestTimeLimit; $this.keyup(function () { main.find('.bravo-autocomplete').addClass("on-message"); main.find('.bravo-autocomplete .message').html(textLoading); main.find('.child_id').val("").trigger("change"); var query = $(this).val(); clearTimeout(requestTimeLimit); if(query.length === 0){ if (options.dataDefault.length > 0) { var items = ''; for (var index in options.dataDefault) { var item = options.dataDefault[index]; items += '
' + item.title + '
'; } main.find('.bravo-autocomplete .list-item').html(items); main.find('.bravo-autocomplete').removeClass("on-message"); } return; } requestTimeLimit = setTimeout(function () { $.ajax({ url: options.url, data: { search: query, }, dataType: 'json', type: 'get', beforeSend: function() { }, success: function (res) { if(res.status === 1){ var items = ''; for (var ix in res.data) { var item = res.data[ix]; items += '
' + get_highlight(item.title,query) + '
'; } main.find('.bravo-autocomplete .list-item').html(items); main.find('.bravo-autocomplete').removeClass("on-message"); } if(res.message.length > 0){ main.find('.bravo-autocomplete').addClass("on-message"); main.find('.bravo-autocomplete .message').html(res.message); } } }) }, 700); function get_highlight(text, val) { return text.replace( new RegExp(val + '(?!([^<]+)?>)', 'gi'), '$&' ); } main.find('.bravo-autocomplete').addClass('show'); }); main.find('.bravo-autocomplete').on('click','.item',function () { console.log($(this).attr('data-id')); var id = $(this).attr('data-id'), text = $(this).attr('data-text'); if(id.length > 0 && text.length > 0){ text = text.replace(/-/g, ""); text = text.substring(1); main.find('.parent_text').val(text).trigger("change"); main.find('.child_id').val(id).trigger("change"); }else{ console.log("Cannot select!") } setTimeout(function () { main.find('.bravo-autocomplete').removeClass('show'); },100) }); }); }; }); jQuery(function ($) { function parseErrorMessage(e){ var html = ''; if(e.responseJSON){ if(e.responseJSON.errors){ return Object.values(e.responseJSON.errors).join('
'); } } return html; } $(".bravo-list-tour").each(function () { $(this).find(".owl-carousel").owlCarousel({ items: 4, loop: false, margin: 15, nav: true, responsive: { 0: { items: 1, }, 768: { items: 2, }, 1000: { items: 4, } } }) }); $(".bravo-list-space").each(function () { $(this).find(".owl-carousel").owlCarousel({ items: 3, loop: false, margin: 15, nav: true, responsive: { 0: { items: 1, }, 768: { items: 2, }, 1000: { items: 3, } } }) }); $(".bravo_fullHeight").each(function () { var height = $(document).height(); if ($(document).find(".bravo-admin-bar").length > 0) { height = height - $(".bravo-admin-bar").height(); } $(this).css('min-height', height); }); // Date Picker Range $('.form-date-search').each(function () { var parent = $(this), date_wrapper = $('.date-wrapper', parent), check_in_input = $('.check-in-input', parent), check_out_input = $('.check-out-input', parent), check_in_out = $('.check-in-out', parent), check_in_render = $('.check-in-render', parent), check_out_render = $('.check-out-render', parent); var options = { singleDatePicker: false, autoApply: true, disabledPast: true, dateFormat: bookingCore.date_format, customClass: '', widthSingle: 300, onlyShowCurrentMonth: true, }; if (typeof locale_daterangepicker == 'object') { options.locale = locale_daterangepicker; } check_in_out.daterangepicker(options, function (start, end, label) { check_in_input.val(start.format(bookingCore.date_format)); check_in_render.html(start.format(bookingCore.date_format)); check_out_input.val(end.format(bookingCore.date_format)); check_out_render.html(end.format(bookingCore.date_format)); check_in_out.trigger('daterangepicker_change', [start, end]); if (window.matchMedia('(max-width: 767px)').matches) { $('.render', parent).show(); $('.check-in-wrapper span', parent).show(); } }); date_wrapper.click(function (e) { check_in_out.trigger('click'); }); }); // Date Picker $('.date-picker').each(function () { $(this).daterangepicker({ "singleDatePicker": true, locale: { format: bookingCore.date_format } }); }); //Review $('.review-form .review-items .rates .fa').each(function () { var list = $(this).parent(), listItems = list.children(), itemIndex = $(this).index(), parentItem = list.parent(); $(this).hover(function () { for (var i = 0; i < listItems.length; i++) { if (i <= itemIndex) { $(listItems[i]).addClass('hovered'); } else { break; } } $(this).click(function () { for (var i = 0; i < listItems.length; i++) { if (i <= itemIndex) { $(listItems[i]).addClass('selected'); } else { $(listItems[i]).removeClass('selected'); } } parentItem.children('.review_stats').val(itemIndex + 1); }); }, function () { listItems.removeClass('hovered'); }); }); //Login $('.bravo-form-login [type=submit]').click(function (e) { e.preventDefault(); let form = $(this).closest('.bravo-form-login'); $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': form.find('meta[name="csrf-token"]').attr('content') } }); $.ajax({ 'url': bookingCore.routes.login, 'data': { 'email': form.find('input[name=email]').val(), 'password': form.find('input[name=password]').val(), 'remember': form.find('input[name=remember]').is(":checked") ? 1 : '', 'g-recaptcha-response': form.find('[name=g-recaptcha-response]').val(), }, 'type': 'POST', beforeSend: function () { form.find('.error').hide(); form.find('.icon-loading').css("display", 'inline-block'); }, success: function (data) { form.find('.icon-loading').hide(); if (data.error === true) { if (data.messages !== undefined) { for(var item in data.messages) { var msg = data.messages[item]; form.find('.error-'+item).show().text(msg[0]); } } if (data.messages.message_error !== undefined) { form.find('.message-error').show().html('
' + data.messages.message_error[0] + '
'); } } if (data.redirect !== undefined && data.redirect) { window.location.href = data.redirect } } }); }) $('.bravo-form-register [type=submit]').click(function (e) { e.preventDefault(); let form = $(this).closest('.bravo-form-register'); $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': form.find('meta[name="csrf-token"]').attr('content') } }); $.ajax({ 'url': bookingCore.routes.register, 'data': { 'email': form.find('input[name=email]').val(), 'password': form.find('input[name=password]').val(), 'first_name': form.find('input[name=first_name]').val(), 'last_name': form.find('input[name=last_name]').val(), 'term': form.find('input[name=term]').is(":checked") ? 1 : '', 'g-recaptcha-response': form.find('[name=g-recaptcha-response]').val(), }, 'type': 'POST', beforeSend: function () { form.find('.error').hide(); form.find('.icon-loading').css("display", 'inline-block'); }, success: function (data) { form.find('.icon-loading').hide(); if (data.error === true) { if (data.messages !== undefined) { for(var item in data.messages) { var msg = data.messages[item]; form.find('.error-'+item).show().text(msg[0]); } } if (data.messages.message_error !== undefined) { form.find('.message-error').show().html('
' + data.messages.message_error[0] + '
'); } } if (data.redirect !== undefined) { window.location.href = data.redirect } }, error:function (e) { form.find('.icon-loading').hide(); if(typeof e.responseJSON !== "undefined" && typeof e.responseJSON.message !='undefined'){ form.find('.message-error').show().html('
' + e.responseJSON.message + '
'); } } }); }) $('#register').on('show.bs.modal', function (event) { $('#login').modal('hide') }) $('#login').on('show.bs.modal', function (event) { $('#register').modal('hide') }); var onSubmitSubscribe = false; //Subscribe box $('.bravo-subscribe-form').submit(function (e) { e.preventDefault(); if (onSubmitSubscribe) return; $(this).addClass('loading'); var me = $(this); me.find('.form-mess').html(''); $.ajax({ url: me.attr('action'), type: 'post', data: $(this).serialize(), dataType: 'json', success: function (json) { onSubmitSubscribe = false; me.removeClass('loading'); if (json.message) { me.find('.form-mess').html('' + json.message + ''); } if (json.status) { me.find('input').val(''); } }, error: function (e) { console.log(e); onSubmitSubscribe = false; me.removeClass('loading'); if(parseErrorMessage(e)){ me.find('.form-mess').html('' + parseErrorMessage(e) + ''); }else if (e.responseText) { me.find('.form-mess').html('' + e.responseText + ''); } } }); return false; }); //Menu $(".bravo-more-menu").click(function () { $(this).trigger('bravo-trigger-menu-mobile'); }); $(".bravo-menu-mobile .b-close").click(function () { $(".bravo-more-menu").trigger('bravo-trigger-menu-mobile'); }); $(document).on("click",".bravo-effect-bg",function () { $(".bravo-more-menu").trigger('bravo-trigger-menu-mobile'); }) $(document).on("bravo-trigger-menu-mobile",".bravo-more-menu",function () { $(this).toggleClass('active'); if($(this).hasClass('active')){ $(".bravo-menu-mobile").addClass("active"); $('body').css('overflow','hidden').append("
"); }else{ $(".bravo-menu-mobile").removeClass("active"); $("body").css('overflow','initial').find(".bravo-effect-bg").remove(); } }); $(".bravo-menu-mobile .g-menu ul li .fa").click(function (e) { e.preventDefault(); $(this).closest('li').toggleClass('active'); }); $(".bravo-menu-mobile").each(function () { var h_profile = $(this).find(".user-profile").height(); var h1_main = $(window).height(); $(this).find(".g-menu").css("max-height", h1_main - h_profile - 15); }); $(".bravo-more-menu-user").click(function () { $(".bravo_user_profile > .container-fluid > .row > .col-md-3").addClass("active"); $("body").css('overflow','hidden').append("
"); }); $(document).on("click",".bravo-effect-user-bg,.bravo-close-menu-user",function () { $(".bravo_user_profile > .container-fluid > .row > .col-md-3").removeClass("active"); $('body').css('overflow','initial').find(".bravo-effect-user-bg").remove(); }) $('[data-toggle="tooltip"]').tooltip(); $('.dropdown-toggle').dropdown(); $('.select-guests-dropdown .btn-minus').click(function(e){ e.stopPropagation(); var parent = $(this).closest('.form-select-guests'); var input = parent.find('.select-guests-dropdown [name='+$(this).data('input')+']'); var min = parseInt(input.attr('min')); var old = parseInt(input.val()); if(old <= min){ return; } input.val(old-1); $(this).next().html(old-1); updateGuestCountText(parent); }); $('.select-guests-dropdown .btn-add').click(function(e){ e.stopPropagation(); var parent = $(this).closest('.form-select-guests'); var input = parent.find('.select-guests-dropdown [name='+$(this).data('input')+']'); var max = parseInt(input.attr('max')); var old = parseInt(input.val()); if(old >= max){ return; } input.val(old+1); $(this).prev().html(old+1); updateGuestCountText(parent); }); function updateGuestCountText(parent){ var adults = parseInt(parent.find('[name=adults]').val()); var children = parseInt(parent.find('[name=children]').val()); var adultsHtml = parent.find('.render .adults .multi').data('html'); console.log(parent,adultsHtml); parent.find('.render .adults .multi').html(adultsHtml.replace(':count',adults)); var childrenHtml = parent.find('.render .children .multi').data('html'); parent.find('.render .children .multi').html(childrenHtml.replace(':count',children)); if(adults > 1){ parent.find('.render .adults .multi').removeClass('d-none'); parent.find('.render .adults .one').addClass('d-none'); }else{ parent.find('.render .adults .multi').addClass('d-none'); parent.find('.render .adults .one').removeClass('d-none'); } if(children > 1){ parent.find('.render .children .multi').removeClass('d-none'); parent.find('.render .children .one').addClass('d-none'); }else{ parent.find('.render .children .multi').addClass('d-none'); parent.find('.render .children .one').removeClass('d-none').html(parent.find('.render .children .one').data('html').replace(':count',children)); } } $('.select-guests-dropdown .dropdown-item-row').click(function(e){ e.stopPropagation(); }); $(".smart-search .smart-search-location").each(function () { var $this = $(this); var string_list = $this.attr('data-default'); var default_list = []; if(string_list.length > 0){ default_list = JSON.parse(string_list); } var options = { url: bookingCore.url+'/location/search/searchForSelect2', dataDefault: default_list, textLoading: $this.attr("data-onLoad"), }; $this.bravoAutocomplete(options); }); $(document).on("click",".service-wishlist",function(){ var $this = $(this); $.ajax({ url: bookingCore.url+'/user/wishlist', data: { object_id: $this.attr("data-id"), object_model: $this.attr("data-type"), }, dataType: 'json', type: 'POST', beforeSend: function() { $this.addClass("loading"); }, success: function (res) { $this.attr('class',"service-wishlist "+res.class); }, error:function (e) { if(e.status === 401){ $('#login').modal('show'); } } }) }); });