function update_cart(loyaltyType){var basket=$("#basket");var basket_room_name="";var total_quantity=0;var total_price=0;var different_room_types=0;var total_adults=0;var total_children=0;var showParcels=false;var not_partial_payments_rateplan=false;$.each($(".roomrateinfo"),function(){var nights=Number($(this).attr("data-nights"));var price;if(loyaltyType=="members"){price=Number($(this).attr("data-price"));$("#basket-send").attr("apply-automatic-loyalty",true);}else if(loyaltyType==null){$("#basket-send").attr("apply-automatic-loyalty",false);price=Number($(this).attr("data-price"));}else{$("#basket-send").attr("apply-automatic-loyalty",false);price=Number($(this).attr("data-price-public"));} var quantity=Number($(this).attr("data-quantity"));total_quantity=total_quantity+quantity;if(quantity>0){var payments=$(this).data("payments");if(payments!=undefined||payments!=null){for(i=0;i1){room_text=total_quantity+" "+$("#basket").data("lang-rooms");} $("#basket_room_name").text(room_text);$("#basket-adults").text(total_adults);$("#basket-children").text(total_children);if(total_adults>1){$("#basket-adults-translate").text($("#basket-adults-translate").data("translate_plu"));} else{$("#basket-adults-translate").text($("#basket-adults-translate").data("translate_sin"));} if(total_children==0){$("#basket-children-holder").hide();} else if(total_children>1){$("#basket-children-holder").show();$("#basket-children-translate").text($("#basket-children-translate").data("translate_plu"));} else{$("#basket-children-holder").show();$("#basket-children-translate").text($("#basket-children-translate").data("translate_sin"));} var parcels=Number($("#parcels").data("parcels"));if(parcels==null||parcels<=1){$(".parcels").html(" ");}else{parcel_price=total_price/parcels;$("#parcels").text(money(parcel_price));} if(resolution==1){$("#basket-price").text(money(total_price));}else{$("#basket-price").html(moneyV4(total_price));} basket.slideDown();$('.above-footer').css('height',98);if(total_quantity==0){basket.slideUp();$('.above-footer').css('height',0);} return false;};var currency=null;var commonPaymentMethods=[];var selectedRatesPaymentMethods={};var rateBtnClicked=null;function basket_add_to(){rateBtnClicked=$(this);let rateBtnHolder=rateBtnClicked.closest('.button-div');var info=$(this).closest(".roomrateinfo");var room=$(this).closest(".roomrate");var roomID=room.attr('data-roomid') var roomDateFrom=room.attr('data-date-from') var roomDateTo=room.attr('data-date-to') var selectedRatePaymentMethods=JSON.parse(info.attr('data-payments'));var selectedRateID=info.attr('data-rate-id');var selectedRoomID=info.attr('data-room-id');var selectedPaymentMethods=[];if(typeof selectedRatesPaymentMethods[selectedRoomID]==='undefined'){selectedRatesPaymentMethods[selectedRoomID]={};} var on_request=$(info).hasClass("on-request");var add,remove,minus,plus=false;if($(this).hasClass("room-btn-add")){add=true;} if($(this).hasClass("room-btn-minus")){minus=true;} if($(this).hasClass("room-btn-plus")){plus=true;} if(add||plus){selectedRatesPaymentMethods[selectedRoomID][selectedRateID]=selectedRatePaymentMethods;}else if(remove||minus){delete selectedRatesPaymentMethods[selectedRoomID][selectedRateID];if(!Object.keys(selectedRatesPaymentMethods[selectedRoomID]).length){delete selectedRatesPaymentMethods[selectedRoomID];}} for(var roomId in selectedRatesPaymentMethods){let roomData=selectedRatesPaymentMethods[roomId];for(var rateId in roomData){let ratePaymentMethods=roomData[rateId];selectedPaymentMethods.push(ratePaymentMethods);}} commonPaymentMethods=getCommonPaymentMethods(selectedPaymentMethods);var max_total=20;if(Number($(this).closest("#hotels_grid").attr("data-max-rooms"))>0){max_total=Number($(this).closest("#hotels_grid").attr("data-max-rooms"));} var max=10;if(Number(info.attr("data-max-quantity"))>0){max=Number(info.attr("data-max-quantity"));} if(max_totalmax){var limitRooms=max;} if(add){info.attr("data-quantity",1);rateBtnClicked.hide();rateBtnHolder.addClass('room-selected');rateBtnClicked.siblings(".room-btn-minus").css('display','flex');rateBtnClicked.siblings(".room-btn-value").css('display','flex');rateBtnClicked.siblings(".room-btn-plus").css('display','flex');rateBtnClicked.closest('.button-div').find('.text-number-of-rooms').show()}else if(plus){info.attr("data-quantity",Number(info.attr("data-quantity"))+1);}else if(minus){info.attr("data-quantity",Number(info.attr("data-quantity"))-1);} $.each($(".roomrateinfo"),function(){let roomRateInfo=$(this);if(roomRateInfo.attr("data-single")=="true"&&roomRateInfo.attr("data-room-id")!=info.attr("data-room-id")&&roomRateInfo.attr("data-rate-id")!=info.attr("data-rate-id")){roomRateInfo.attr("data-quantity",0);} roomRateInfo.find('.room-btn-value').text(roomRateInfo.attr('data-quantity'));if(roomRateInfo.attr('data-quantity')==0){roomRateInfo.find('.room-btn-add').css('display','inline-block');roomRateInfo.find('.button-div').removeClass('room-selected');roomRateInfo.find('.room-btn-minus').hide();roomRateInfo.find('.room-btn-value').hide();roomRateInfo.find('.room-btn-plus').hide();roomRateInfo.find('.text-number-of-rooms').hide();}});if(on_request==true){var limitRooms=1;} $(".room-btn-plus").prop("disable",false);var total_quantity=0;var total_req_quantity=0;var room_quantity=0;$.each($(".roomrateinfo"),function(){var quantity=Number($(this).attr("data-quantity"));total_quantity=total_quantity+quantity;});$.each($(room).find(".roomrateinfo"),function(){var quantity=Number($(this).attr("data-quantity"));room_quantity=room_quantity+quantity;});if(total_quantity>=max_total){$(".room-btn-plus").prop("disabled","disabled");$(".room-btn-add").prop("disabled","disabled");if(room_quantity>=max){room.addClass("maximum");}}else{$.each($(".roomrate"),function(){if($(this).hasClass("maximum")==false){$(this).find(".room-btn-plus").prop("disabled",false);$(this).find(".room-btn-add").prop("disabled",false);}});if(room_quantity>=max){if(!roomDateFrom||typeof roomDateFrom==="undefined"||!roomDateTo||typeof roomDateTo==="undefined"){updateRoomStatus($('.roomrate[data-roomid="'+roomID+'"]'),"maximum",true);}else{updateRoomStatus($('.roomrate[data-roomid="'+roomID+'"][data-date-from="'+roomDateFrom+'"][data-date-to="'+roomDateTo+'"]'),"maximum",true);}}else{updateRoomStatus($('.roomrate[data-roomid="'+roomID+'"]'),"maximum",false);}} if(on_request==true){$(".basket-send-book-now").hide();$(".basket-send-request-now").show();room.find(".room-btn-add").attr("disabled",true);$("#hotels_grid").find(".roomrateinfo").not(".on-request").find(".room-btn-add").attr("disabled",true);$.each($(".rate_plan"),function(){let rate=$(this);let ratePaymentMethods=JSON.parse(rate.attr('data-payments'));checkCommonPaymentMethods(rate,ratePaymentMethods,selectedPaymentMethods);});if(total_quantity==0){$("#hotels_grid").find(".roomrateinfo").not(".on-request").find(".room-btn-add").attr("disabled",false);room.find(".room-btn-add").attr("disabled",false);}else{$(".request-popup").show();};} if(on_request==false){$(".basket-send-request-now").hide();$(".basket-send-book-now").show();$.each($(".rate_plan"),function(){let rate=$(this);let ratePaymentMethods=JSON.parse(rate.attr('data-payments'));if(rate.hasClass("on-request")==true){rate.find(".room-btn-plus").prop("disabled","disabled");rate.find(".room-btn-add").prop("disabled","disabled");rate.find(".room-btn-add").css('display','inline-block');rate.find(".room-btn-minus").hide();rate.find(".room-btn-value").hide();rate.attr("data-quantity","0");rate.find(".room-btn-plus").hide();rate.find(".text-number-of-rooms").hide();};if(total_quantity==0){rate.find(".room-btn-add").prop("disabled",false);} checkCommonPaymentMethods(rate,ratePaymentMethods,selectedPaymentMethods);});} if(total_quantity>=1){currency=info.attr("data-currency");$(".roomrateinfo[data-currency!=\""+currency+"\"]").find(".room-btn-plus").prop("disabled","disabled");$(".roomrateinfo[data-currency!=\""+currency+"\"]").find(".room-btn-add").prop("disabled","disabled");$(".roomrateinfo[data-currency!=\""+currency+"\"]").find(".diff_currency").css('display','flex');} if(currency!=null&&total_quantity==0){currency=null;$(".room-btn-plus").prop("disabled",false);$(".room-btn-add").prop("disabled",false);$(".roomrateinfo").find(".diff_currency").hide();$(".roomrateinfo").find(".diff_payment_method ").hide();} $("[data-single=true]").find(".room-btn-add").prop("disabled",false);let loyaltyType=null;if(typeof(rateBtnClicked.parent().attr("data-loyalty-type"))!="undefined"){loyaltyType=rateBtnClicked.parent().attr("data-loyalty-type");} if(loyaltyType!=null){let typeToDisable="";if(loyaltyType=="members"){typeToDisable="public";}else if(loyaltyType=="public"){typeToDisable="members";} $(".button-div-holder[data-loyalty-type='"+typeToDisable+"']").children(".room-btn-add").attr("disabled",true);} if(total_quantity==0){$(".button-div-holder").children(".room-btn-add").attr("disabled",false);} sendGoogleAnalyticsEvent(info,add,plus,remove,minus);prepareAndSendMetaAddToCartEvent(info,add,plus,loyaltyType) update_cart(loyaltyType);return false;} if(typeof(as_set)!="undefined"){if(as_set==true){hotel_id=as_read.hotel_id;if(as_read.different_dates==true){date_from=null;date_to=null;nights=null;}else{date_from=as_read.start;date_to=as_read.end;nights=as_read.nights;} group_code=as_read.group_code;promo_code=as_read.promo_code;loyalty_code=as_read.loyalty_code;}else{let searchParams=new URLSearchParams(window.location.search);date_from=moment(searchParams.get('CheckIn'),'DDMMYYYY').format("YYYY-MM-DD");date_to=moment(searchParams.get('CheckOut'),'DDMMYYYY').format("YYYY-MM-DD");if(!moment(searchParams.get('CheckIn'),'DDMMYYYY').isValid()||!moment(searchParams.get('CheckOut'),'DDMMYYYY').isValid()||searchParams.get('CheckIn')==""||searchParams.get('CheckOut')==""){date_from=moment($("#date_from").val(),'DDMMYYYY').format("YYYY-MM-DD");date_to=moment($("#date_to").val(),'DDMMYYYY').format("YYYY-MM-DD");} hotel_id=Number(searchParams.get('q'));reserved_nights=Number($("#nights").val());group_code=$("#group_code").val();promo_code=$("#Code").val();loyalty_code=$("#loyalty_code").val();}} function basket_send(e){e.preventDefault();showNextStepLoader(e);var chain=$('#chain_home').attr("data-chain");var data={};data._token=$("#token").val();data.sid=(Math.random()+1).toString(36).substring(2,8);var reservation={};if(typeof(date_from)=='object'){date_from=moment($("#date_from").val(),'DDMMYYYY').format("YYYY-MM-DD");} if(typeof(date_to)=='object'){date_to=moment($("#date_to").val(),'DDMMYYYY').format("YYYY-MM-DD");} reservation.start=date_from;reservation.end=date_to;reservation.nights=Number($("#nights").val());reservation.chain=chain;if(typeof(hotel_id)=='object'){hotel_id=$(hotel_id).val();} if((hotel_id===''||hotel_id===null||typeof(hotel_id)=="undefined")&&$("#hotel_code").length>0){hotel_id=$("#hotel_code").val();} reservation.hotel_id=hotel_id;if(typeof(group_code)=='object'){group_code=$(group_code).val();} reservation.group_code=group_code;if(typeof(promo_code)=='object'){promo_code=$(promo_code).val();} reservation.promo_code=promo_code;if(typeof(loyalty_code)=='object'){loyalty_code=$(loyalty_code).val();} reservation.loyalty_code=loyalty_code;var hotel_code=hotel_id;var rooms=[];var occupancies=[];var occupancy_rph=0;var newCheckIn=[];var newCheckOut=[];var newAd=[];var newCh=[];var newAg=[];var room_id_single;var rateplan_id_single;$.each($(".roomrateinfo"),function(){quantity=Number($(this).attr("data-quantity"));for(i=0;i0;});if(hasExtras){$(".search-loading-message").text(extras_text);} else{$(".search-loading-message").text(bookdetails_text);} if(typeof(as_set)!="undefined"&&as_set==true){reservation.old_occupancies=as_read.occupancies;}else{reservation.old_occupancies=occupancies;} var ad=getUrlParam("ad");var ch=getUrlParam("ch");var ag=getUrlParam("ag");if(ad==null)ad="";if(ch==null)ch="";if(ag==null)ag="";adArr=ad.split(",");chArr=ch.split(",");agArr=ag.split(",");var old_occupancies=[];for(var i=0;i1){$(".quantity-input").val(parseInt($(".quantity-input").val())-1);$(this).next(".quantity-input").trigger("change");} else{closeBasket();}});function closeBasket(){setQuantitiesTo(1);defaultButtons();$('#basket').slideUp();} function showBasket(){$('#basket').slideDown();} function defaultButtons(){$('.select-btn').show();$('.quantity-input, .add-room, .remove-room').hide();} function setQuantitiesTo(quantity){$('.quantity-input').val(quantity);} function populateOcupation(){var searchParams=new URLSearchParams(window.location.search);$('#basket-adults').html(searchParams.get('ad'));$('#basket-children').html(searchParams.get('ch'));} $(document).on("click",".request-popup-close",function(){$(".request-popup").hide();});function prepareAndSendMetaAddToCartEvent(info,add,plus,loyaltyType){let roomId=info.attr('data-room-id');let roomName=info.attr('data-name');let rateId=info.attr('data-rate-id');let combinedItemID='ROOM_ID_'+roomId+'_RATE_ID_'+rateId;let ratePricePerNight=parseFloat(parseFloat(info.attr('data-price')).toFixed(2));if(loyaltyType==='public'){ratePricePerNight=parseFloat(parseFloat(info.attr('data-price-public')).toFixed(2));} let nightsNum=parseInt(info.attr('data-nights'));let eventName='';if(add||plus){eventName='AddToCart';} let newContentsObj={};newContentsObj.id=combinedItemID;newContentsObj.item_price=ratePricePerNight;newContentsObj.quantity=nightsNum;if(typeof metaIsEnabled!=='undefined'&&metaIsEnabled&&typeof metaEventData!=='undefined'&&typeof metaRequestParams!=='undefined'){let metaRequestData=prepareRequestData(metaRequestParams,metaEventData);let newContents=[newContentsObj];let newContentIDs=[combinedItemID];let newContentName=roomName;if(eventName==='AddToCart'){metaRequestData=modifyMetaEventName(metaRequestData,eventName) metaRequestData=modifyMetaEventContents(metaRequestData,newContents,newContentIDs,newContentName) if(metaRequestData){sendMetaEvent(metaRequestData);}}}} function sendGoogleAnalyticsEvent(info,add,plus,remove,minus){var ecommerceSearchBody=null;var googleAnalyticsAddToCartDataLayerObj={};var googleAnalyticsAddToCartEventObj={};let roomId=info.attr('data-room-id');let roomName=info.attr('data-name');let rateId=info.attr('data-rate-id');let rateName=info.attr('data-rate-name');let nightsNum=parseInt(info.attr('data-nights'));let ratePricePerNight=parseFloat(info.attr('data-price'));let totalRatePrice=ratePricePerNight*nightsNum;let rateDiscount=0;let eventName='';let dataLayerEventName='';if(typeof dataLayer!='undefined'){$.each(dataLayer,function(key,value){if(value.event=='ecommerceSearch'){ecommerceSearchBody=$.extend(true,{},value);}});} if(add||plus){eventName='add_to_cart';dataLayerEventName='ecommerceAddToCart';}else if(remove||minus){eventName='remove_from_cart';dataLayerEventName='ecommerceRemoveFromCart';} if(eventName!=''&&ecommerceSearchBody!=null){googleAnalyticsAddToCartDataLayerObj.event=dataLayerEventName;googleAnalyticsAddToCartDataLayerObj.chainId=ecommerceSearchBody.chainId;googleAnalyticsAddToCartDataLayerObj.chainName=ecommerceSearchBody.chainName;googleAnalyticsAddToCartDataLayerObj.hotelId=ecommerceSearchBody.hotelId;googleAnalyticsAddToCartDataLayerObj.hotelName=ecommerceSearchBody.hotelName;googleAnalyticsAddToCartDataLayerObj.versionBE=ecommerceSearchBody.versionBE;googleAnalyticsAddToCartDataLayerObj.isRemark=ecommerceSearchBody.isRemark;googleAnalyticsAddToCartDataLayerObj.ecommerce={};googleAnalyticsAddToCartDataLayerObj.ecommerce.currency=ecommerceSearchBody.ecommerce.currency;googleAnalyticsAddToCartDataLayerObj.ecommerce.currencyCode=ecommerceSearchBody.ecommerce.currencyCode;googleAnalyticsAddToCartDataLayerObj.ecommerce.value=parseFloat(totalRatePrice.toFixed(2));let item={};googleAnalyticsAddToCartDataLayerObj.ecommerce.items=[];item.item_id=roomId;item.item_name=roomName;item.item_variant=rateName;item.item_brand=ecommerceSearchBody.hotelName;item.item_category='Accommodation';item.affiliation='Omnibees';item.coupon=ecommerceSearchBody.coupon;ecommerceSearchBody.ecommerce.items.forEach(function(item){if(item.item_rate_id===rateId&&item.item_id===roomId){rateDiscount=item.discount;return false;}});item.price=ratePricePerNight+(rateDiscount/nightsNum);item.discount=rateDiscount/nightsNum;item.quantity=nightsNum;googleAnalyticsAddToCartDataLayerObj.ecommerce.items.push(item);dataLayer.push({ecommerce:null});dataLayer.push(googleAnalyticsAddToCartDataLayerObj);googleAnalyticsAddToCartEventObj.items=[];let googleAnalyticsItem={};googleAnalyticsItem.item_id=roomId;googleAnalyticsItem.item_name=roomName;googleAnalyticsItem.item_variant=rateName;googleAnalyticsItem.item_brand=ecommerceSearchBody.hotelName;googleAnalyticsItem.item_category='Accommodation';googleAnalyticsItem.quantity=nightsNum;googleAnalyticsItem.price=ratePricePerNight;googleAnalyticsAddToCartEventObj.items.push(googleAnalyticsItem);gtag('event',eventName,googleAnalyticsAddToCartEventObj);}} if(typeof gtag==='undefined'){function gtag(){window.dataLayer.push(arguments);}} function updateRoomStatus(roomSelector,addClass,disable){roomSelector.each(function(){let room=$(this);room.toggleClass(addClass,disable);room.find('.room-btn-plus, .room-btn-add').prop('disabled',disable);});}