/**** static params ****/ var getArrivalParam = $('#getArrivalParam').attr("data-param"); var getDepartureParam = $('#getDepartureParam').attr("data-param"); var getAdultParam = $('#getAdultParam').attr("data-param"); var getChildParam = $('#getChildParam').attr("data-param"); var getRoomParam = $('#getRoomParam').attr("data-param"); var getQryExtras = $('#getQryExtras').attr("data-param"); /**** date params ****/ var getArrivalMin = $('#getArrivalMin').attr("data-param"); var getArrivalMax = $('#getArrivalMax').attr("data-param"); var getDepartureMin = $('#getDepartureMin').attr("data-param"); var getDepartureMax = $('#getDepartureMax').attr("data-param"); var getDateFormat = $('#getDateFormat').attr("data-param"); /**** datepickers ****/ $(function() { var today = new Date(); $(".destination-widget #arrivalDate").datepicker({ onSelect: function(date) { var chosenDate = date; }, minDate: (getArrivalMin), maxDate: (getArrivalMax), dateFormat: getDateFormat, beforeShowDay: function(date) { var string = jQuery.datepicker.formatDate(getDateFormat, date); var isDisabled = (noDates.indexOf(string) == -1); // used to disable if its a closed date or weekend return [isDisabled]; } }); }); $(function() { var today = new Date(); $(".destination-widget #departureDate").datepicker({ onSelect: function(date) { var chosenDate = date }, minDate: (getDepartureMin), maxDate: (getDepartureMax), dateFormat: getDateFormat, beforeShowDay: function(date) { var string = jQuery.datepicker.formatDate(getDateFormat, date); var isDisabled = (noDates.indexOf(string) == -1); // used to disable if its a closed date or weekend return [isDisabled]; } }); }); function datepickerParkVals(d) { var newArriveMin = $(d).attr("data-arrive-min"); var newArriveMax = $(d).attr("data-arrive-max"); var newDepartMin = $(d).attr("data-depart-min"); var newDepartMax = $(d).attr("data-depart-max"); // departure update if (newDepartMin != "" && newDepartMin != undefined) { $(".destination-widget #departureDate").datepicker("option", "minDate", newDepartMin); } else { } // arrival update if (newArriveMin != "" && newArriveMin != undefined) { $(".destination-widget #arrivalDate").datepicker("option", "minDate", newArriveMin); } else { } } /***** determine url ******/ function destWidgetTarget() { /**** dynamic params ****/ var promo = $('.destination-widget #dest-rates').attr("data-offer-param"); /**** dynamic vals ****/ var arriveDate = $('.destination-widget #arrivalDate').val(); var departDate = $('.destination-widget #departureDate').val(); var adults = $('.destination-widget #numAdults').val(); var children = $('.destination-widget #numChildren').val(); var rooms = $('.destination-widget #numRooms').val(); var code = $('.destination-widget #dest-rates').attr("data-offer-value"); var hotelId = $(".destination-widget #dest-property").attr("data-hotel"); var chainId = $(".destination-widget #dest-property").attr("data-chain"); var baseUrl = $(".destination-widget #dest-property").attr("data-base"); /**** construct url ****/ if (baseUrl.includes("?")) { var finalUrl = baseUrl + "&" + "chain=" + chainId + "&hotel=" + hotelId + "&" + getArrivalParam + "=" + arriveDate + "&" + getDepartureParam + "=" + departDate + "&" + getAdultParam + "=" + adults + "&" + getChildParam + "=" + children + "&" + getRoomParam + "=" + rooms + "&" + promo + "=" + code + "&" + getQryExtras; } else { var finalUrl = baseUrl + "?" + "chain=" + chainId + "&hotel=" + hotelId + "&" + getArrivalParam + "=" + arriveDate + "&" + getDepartureParam + "=" + departDate + "&" + getAdultParam + "=" + adults + "&" + getChildParam + "=" + children + "&" + getRoomParam + "=" + rooms + "&" + promo + "=" + code + "&" + getQryExtras; } $('.destination-widget #destwidget_cta').attr("href", finalUrl); } /**** inputs-values fx ****/ $('.widget-field-wrapper').click(function() { var showFields = $(this).attr('data-fields'); if ($('.' + showFields).is(':visible')) { $('.' + showFields).hide(); } else { $('.data-fields').hide(); $('.' + showFields).show(); } }); function hideWidgetDataFields() { $('.destination-widget .data-fields').hide(); } function setPartySize() { let adultNum = document.getElementById('numAdults'); let childrenNum = document.getElementById('numChildren'); var partySize = parseInt(adultNum.value) + parseInt(childrenNum.value); $('#partySize').html(partySize); // now recalc url destWidgetTarget(); } function incAdult() { let partyAdults = document.getElementById('numAdults'); partyAdults.value = parseInt(partyAdults.value) + 1; setPartySize(); } function decAdult() { let partyAdults = document.getElementById('numAdults'); if (parseInt(partyAdults.value) > 0) { partyAdults.value = parseInt(partyAdults.value) - 1; } setPartySize(); } function incChild() { let partyChildren = document.getElementById('numChildren'); partyChildren.value = parseInt(partyChildren.value) + 1; setPartySize(); } function decChild() { let partyChildren = document.getElementById('numChildren'); if (parseInt(partyChildren.value) > 0) { partyChildren.value = parseInt(partyChildren.value) - 1; } setPartySize(); } function setRoomSize() { let roomNum = document.getElementById('numRooms'); var roomSize = parseInt(roomNum.value); $('#numRoomsSize').html(roomSize); // now recalc url destWidgetTarget(); } function incRoom() { let partyRooms = document.getElementById('numRooms'); partyRooms.value = parseInt(partyRooms.value) + 1; setRoomSize(); } function decRoom() { let partyRooms = document.getElementById('numRooms'); if (parseInt(partyRooms.value) > 0) { partyRooms.value = parseInt(partyRooms.value) - 1; } setRoomSize(); } function propertyWidgetSet(p) { var setProperty = $(".destination-widget #dest-property"); var hotelId = $(p).attr("data-hotel"); var chainId = $(p).attr("data-chain"); var urlBase = $(p).attr("data-base"); var propName = $(p).attr("data-property"); var arrMin = $(p).attr("data-arrive-min"); var arrMax = $(p).attr("data-arrive-max"); var depMin = $(p).attr("data-depart-min"); var depMax = $(p).attr("data-depart-max"); $(setProperty).attr("data-hotel", hotelId).attr("data-chain", chainId).attr("data-property", propName).attr("data-base", urlBase).attr("data-arrive-min", arrMin).attr("data-arrive-max", arrMax).attr("data-depart-min", depMin).attr("data-depart-max", depMax); $(".destination-widget #selectProperty").html(propName); // now recalc destWidgetTarget(); hideWidgetDataFields(); } function rateSet(r) { var setRates = $(".destination-widget #dest-rates"); var rateParam = $(r).attr("data-offer-param"); var rateVal = $(r).attr("data-offer-value"); var rateLabel = $(r).attr("data-label"); $(setRates).attr("data-offer-param", rateParam).attr("data-offer-value", rateVal); if (rateParam != "" && rateParam != undefined) { $(".destination-widget #selectPromos").html('' + rateLabel.toUpperCase() + ''); } // now recalc url destWidgetTarget(); hideWidgetDataFields(); } function customRateSet() { var setRates = $(".destination-widget #dest-rates"); var rateParam = setRates.attr("data-offer-param"); var rateVal = setRates.attr("data-offer-value"); if (rateParam != "" && rateParam != undefined) { $(".destination-widget #selectPromos").html('' + rateVal.toUpperCase() + ''); } } function clearRateSet(c) { var rateLabel = $(c).attr("section-label"); $(".destination-widget #selectPromos").html(rateLabel); } function stayRangeSet() { var arriveDate = $('.destination-widget #arrivalDate').val(); var departDate = $('.destination-widget #departureDate').val(); var stayStart = new Date(arriveDate); var stayEnd = new Date(departDate); if (getDateFormat == "yy-mm-dd") { var stayStartFormat = moment(stayStart).add(1, 'day').format("MMMM Do"); var stayEndFormat = moment(stayEnd).add(1, 'day').format("MMMM Do"); } else { var stayStartFormat = moment(stayStart).format("MMMM Do"); var stayEndFormat = moment(stayEnd).format("MMMM Do"); } $("#selectVisitDates").html(stayStartFormat + " - " + stayEndFormat); } /**** event triggers ****/ $(".destination-widget .form-control").change(function () { destWidgetTarget(); }); $(".destination-widget .select-property").click(function () { destWidgetTarget(); }); $(".destination-widget .widget-field-wrapper").click(function () { destWidgetTarget(); }); $(".destination-widget .widget-advance").click(function () { destWidgetTarget(); }); $('.destination-widget .show-offer-code').click(function() { var offerParam = $(this).attr("data-param"); var offerLabel = $(this).attr("data-label"); $('.destination-widget #special-rates-listing').hide(); $('.destination-widget .offer-code').show(); $('.destination-widget .offer-code .widget-label').html(offerLabel); $('.destination-widget .offer-code input#addTextCode').attr("data-param", offerParam); $('.destination-widget #dest-rates').attr("data-offer-param", offerParam); }); $('.destination-widget .offer-code input#addTextCode').blur(function() { var userValue = $('.destination-widget .offer-code input#addTextCode').val(); $('.destination-widget #dest-rates').attr("data-offer-value", userValue); customRateSet(); }); $('.destination-widget .close-special-rate-input').click(function() { $('.destination-widget #special-rates-listing').show(); $('.destination-widget .offer-code').hide(); $('.destination-widget .offer-code').val(""); }); $('.destination-widget .close-section-input').click(function() { hideWidgetDataFields(); }); $('.destination-widget .party-size-input').change(function() { setPartySize(); }); $('.destination-widget .room-size-input').change(function() { setRoomSize(); }); $('.destination-widget .set-stay-dates').click(function() { stayRangeSet(); }) $('.destination-widget .select-property').click(function() { propertyWidgetSet(this); datepickerParkVals(this); }) $('.destination-widget .select-rate').click(function() { rateSet(this); }) $('.destination-widget .select-rate-custom').click(function() { customRateSet(); }) $('.destination-widget .select-rate-none').click(function() { clearRateSet(this); }) /**** widget display states ****/ $(document).ready(function() { $('.destination-widget-icon').click(function() { if ($('.destination-widget-container').is(':visible')) { $('.destination-widget-container').fadeOut(); } else { $('.destination-widget-container').fadeIn(); $('.destination-widget .body-row').removeClass('desktop-only d-none'); $('.destination-widget .form-open').hide(); $('.destination-widget .form-close').show(); } }); $('.destination-widget-close').click(function() { if ($('.destination-widget-container').is(':visible')) { $('.destination-widget-container').fadeOut(); } else { $('.destination-widget-container').fadeIn(); $('.destination-widget .body-row').removeClass('desktop-only d-none'); $('.destination-widget .form-open').hide(); $('.destination-widget .form-close').show(); } }); $('.destination-widget .form-open').click(function() { $('.destination-widget .body-row').removeClass('desktop-only d-none'); $('.destination-widget .form-open').hide(); $('.destination-widget .form-close').show(); }); $('.destination-widget .form-close').click(function() { $('.destination-widget .body-row').addClass('desktop-only d-none'); $('.destination-widget .form-open').show(); $('.destination-widget .form-close').hide(); }); });