


$(function() {
    var bookingResourcesTranslations = {
        room: "Cottage",
        found: "found",
        moreInfo: "Learn more",
        lessInfo: "Less info",
        };



setTimeout(function(){
    var baseAvailabilityCalendarUrl = $("#availabilityCalendarTarget").attr("href");

    if (typeof(availabilityCalendarOccupancyData) == "function"){

        if (window.location.href.toLowerCase().indexOf("startdate") > 0)
        {
            delayedAvailabilityCalendarInit([]);
        }
        else
        {
            // call ajax to return initial availability summaries
            $.ajax({
                type: "GET",
                url: baseAvailabilityCalendarUrl + "?shortname=CrrgHsAccmmdtns99587&start=2025-04-12&end=2025-07-31&referer=MyWeb",
                dataType: "json",
                success: function(response) {
                    delayedAvailabilityCalendarInit(response);
                },
                error: function(response) {
                    console.error(response);
                }
            });
        }
    }
    else{
        console.error("AC is enabled but availabilityCalendarOccupancyData is undefined!");
    }
}, 500);

function delayedAvailabilityCalendarInit(initialAvailabilitySummary){
    var occupancyData = availabilityCalendarOccupancyData();

    var availabilityData = {
        initialEarliestDate: "2025-04-12",
        initialFurthestDate: "2025-07-31",
        initialData: eviivo.availabilityCalendar.prodData.postProcessData(initialAvailabilitySummary)
    };

    var initialData = eviivo.availabilityCalendar.data(availabilityData, occupancyData);
    initialData.hasInitialAvailabilityData = initialAvailabilitySummary != null && initialAvailabilitySummary.length > 0;
    var baseAvailabilityCalendarUrl = $("#availabilityCalendarTarget").attr("href");
    var ajaxRequestUrl = baseAvailabilityCalendarUrl + "?shortname=CrrgHsAccmmdtns99587&referer=MyWeb";

    var availabilityCalendarAjaxRequest = eviivo.availabilityCalendar.ajax(initialData, ajaxRequestUrl, "2027-04-30");

    var availabilityCalendarLogic = eviivo.availabilityCalendar.logic(initialData);




var resources = {
    dateDisplayFormat: "M d, yy",
    limitOfData: "If you wish to book this far in advance, please contact us directly on {PhoneNumber}",
    dataLoading: "We're checking availability for you...",
    forcedMinLos: "{LengthOfStay} night minimum stay required",
    selectDatesError: "Use the calendar | to select dates for your stay",
    checkInIncompatible: "Please select new stay dates",
    checkOutIncompatible: "Please select a new check-out date",
    roomFilter: {
        summaryFormat: "{SelectedRooms} / {TotalRooms} Cottage",
        summaryFormatPlural: "{SelectedRooms} / {TotalRooms} Cottages",
        requirementsSummary: "{AvailableRooms} Cottage matches your occupancy",
        requirementsSummaryPlural: "{AvailableRooms} Cottages match your occupancy"
    },
    occupancySelector: {
        summaryFormatNoChildren: "{adults} Adult(s), {rooms} Cottage",
        summaryFormatNoChildrenPlural: "{adults} Adult(s), {rooms} Cottages",
        summaryFormat: "{adults} Adult(s) {children} Children {rooms} Cottage",
        summaryFormatPlural: "{adults} Adult(s) {children} Children {rooms}Cottages",
        adults: "{NumAdults} Adult(s)",
        children: "{NumChildren} Children",
        roomTitle: "Cottage {roomNum}",
        roomCountOption: "{roomNum} Cottage",
        roomCountOptionPlural: "{roomNum} Cottages"
    },
    tooltips: {
        "arrival": {
            ".arr-past":"",
            ".arr-available":"",
            ".arr-cannotArrive":"No check in",
            ".arr-cannotArrive.arr-minLos":"No check in",
            ".arr-forcedDeparture":"Unavailable",
            ".arr-closed":"Unavailable",
            ".arr-afterClosed":"Unavailable",
            ".arr-unknown":"Unavailable",
        },
        "departure": {
            ".dep-past":"",
            ".dep-beforeCheckInDate.arr-available":"New check-in date ?",
            ".dep-beforeCheckInDate.arr-cannotArrive":"No check in",
            ".dep-beforeCheckInDate.arr-cannotArrive.arr-minLos":"Unavailable",
            ".dep-beforeCheckInDate.arr-forcedDeparture":"Unavailable",
            ".dep-beforeCheckInDate.arr-closed":"Unavailable",
            ".dep-beforeCheckInDate.arr-afterClosed":"Unavailable",
            ".dep-beforeCheckInDate.arr-unknown":"Unavailable",
            ".dep-checkInDate":" ", 
            ".dep-cannotDepart.dep-minLos":"No check in",
            ".dep-available":"Check out",
            ".dep-cannotDepart.dep-ctd":"No checkout",
            ".dep-forcedDeparture.dep-maxLos":"Check out",
            ".dep-forcedDeparture":"Check out",
            ".dep-closed":"Unavailable",
            ".dep-afterClosed.arr-available":"New check-in date ?",
            ".dep-afterClosed.arr-cannotArrive":"No check in",
            ".dep-afterClosed.arr-cannotArrive.arr-minLos":"Unavailable",
            ".dep-afterClosed.arr-forcedDeparture":"Unavailable",
            ".dep-afterClosed.arr-closed":"Unavailable",
            ".dep-afterClosed.arr-afterClosed":"Unavailable",
            ".dep-afterClosed.arr-unknown":"Unavailable",
            ".dep-unknown":"Unavailable",
        },
        "selected": {
            ".selected-past":"",
            ".selected-beforeCheckInDate.arr-available":"New Check-in date ?",
            ".selected-beforeCheckInDate.arr-cannotArrive":"No check in",
            ".selected-beforeCheckInDate.arr-cannotArrive.arr-minLos":"Unavailable",
            ".selected-beforeCheckInDate.arr-forcedDeparture":"Unavailable",
            ".selected-beforeCheckInDate.arr-closed":"Unavailable",
            ".selected-beforeCheckInDate.arr-afterClosed":"Unavailable",
            ".selected-beforeCheckInDate.arr-unknown":"Unavailable",
            ".selected-checkInDate":" ", 
            ".selected-checkInDate.selected-lastNight":"Minimum {LengthOfStay} night stay",
            ".selected-interim":"Minimum {LengthOfStay} night stay",
            ".selected-interim.selected-lastNight":"Minimum {LengthOfStay} night stay",
            ".selected-checkOutDate.dep-available":"Your check-out",
            ".selected-checkOutDate.dep-cannotDepart.dep-ctd":"Your check-out",
            ".selected-checkOutDate.dep-forcedDeparture.dep-maxLos":"Your check-out",
            ".selected-checkOutDate.dep-forcedDeparture":"Your check-out",
            ".selected-checkOutDate.dep-closed":"Your check-out",
            ".selected-checkOutDate.dep-afterClosed":"Unavailable",
            ".selected-afterCheckOutDate.dep-available":"New check-out date ?",
            ".selected-afterCheckOutDate.dep-cannotDepart.dep-ctd":"No checkout",
            ".selected-afterCheckOutDate.dep-cannotDepart.dep-minLos":"New check-out date ?",
            ".selected-afterCheckOutDate.dep-forcedDeparture.dep-maxLos":"New check-out date ?",
            ".selected-afterCheckOutDate.dep-forcedDeparture":"New check-out date ?",
            ".selected-afterCheckOutDate.dep-closed":"Unavailable",
            ".selected-afterCheckOutDate.dep-afterClosed.arr-available":"New check-in date ?",
            ".selected-afterCheckOutDate.dep-afterClosed.arr-cannotArrive":"No check in",
            ".selected-afterCheckOutDate.dep-afterClosed.arr-cannotArrive.arr-minLos":"Unavailable",
            ".selected-afterCheckOutDate.dep-afterClosed.arr-forcedDeparture":"Unavailable",
            ".selected-afterCheckOutDate.dep-afterClosed.arr-closed":"Unavailable",
            ".selected-afterCheckOutDate.dep-afterClosed.arr-afterClosed":"Unavailable",
            ".selected-afterCheckOutDate.dep-afterClosed.arr-unknown":"Unavailable",
            ".selected-unknown":"Unavailable",
        }
    }
};

resources.tooltips.searchDone = resources.tooltips.selected;

    var availabilityCalendarSettings = {
        roomsLimit: 8,
        cultureLanguageCode: "en-US",
        resources: resources,
        monthsToShow: 3,
        preloadMonths: 2, //NOTE: the preloadMonths needs to be 1 month greater then the buffer date
        property: { TelephoneNumber: " 19072501279" }
    };

    var availabilityCalendar = eviivo.availabilityCalendar.ui.main(availabilityCalendarLogic, availabilityCalendarAjaxRequest, availabilityCalendarSettings);
    availabilityCalendar.updateUi();

    delayedInitPromoFeature(availabilityCalendar.triggerSearch);
}
        eviivo.smoothScrolling.init();
        eviivo.popup.init();
        eviivo.combinedInventory.init({
            maxInventory: 8,
            resources: {
                soldout: "Sold Out",
                select: "Select",
            }
        });

        
        eviivo.imageMainGallery.init({
        initializeGalleryByDefault: true,
        initializeGalleryOnClick: false,
        initializeGalleryForRooms: true,
        });

        
        

    //enable jquery UI tooltip (only for specific targeted cp-tip items)
    $(".cp-tip").tooltip({
        position: {
            my: "center bottom-15",
            at: "center top",
            using: function (position, feedback) {
                $(this).css(position);
                $("<div>")
    .addClass("arrow")
    .addClass(feedback.vertical)
    .addClass(feedback.horizontal)
    .appendTo(this);
    }
    },
    content: function ()
    {
    return $(this).prop('title');
    }
    });

    $(".accordion-rooms a.accordion-rooms-toggle").on("click", function () {
    if ($('.intro-description').length) {
    $(this).parent().siblings(".intro-description").slideToggle("slow");
    }
    $(this).siblings(".accordion").slideToggle("slow");
    $(this).parent().toggleClass("expanded");
    var textDefault = bookingResourcesTranslations.moreInfo;
    var textExpanded = bookingResourcesTranslations.lessInfo;
    $(this).text(function (i, text) {
    return text === textExpanded ? textDefault : textExpanded;
    });


    });
    // Close error/notice box
    var $closeControl = $(".cp-close");
    $closeControl.on("click", function () {
    $(this).parent().parent().hide();

    });

    
    eviivo.stickyContainer.init({
    resources: {
    room: bookingResourcesTranslations.room,
    found: bookingResourcesTranslations.found
    }
    });

    $('#accept-cookies').on("click", function () {
    var currentCookieSession = window.eviivo.webcore.cookieManager.getCookie('userSettings');
    if (currentCookieSession)
    {
    window.eviivo.webcore.cookieManager.setCookie('userSettings', currentCookieSession.concat('&' + 'cookienotification' + '=accepted'), 30);
    }

    $('.cookiebar').remove();
    });

    $.widget("custom.iconselectmenu", $.ui.selectmenu, {
    _renderItem: function (ul, item) {
    var li = $("<li>", { text: item.label });
        if (item.disabled) {
        li.addClass("ui-state-disabled");
        }
        $("<span>", {
            style: item.element.attr("data-style"),
            "class": "ui-icon " + item.element.attr("data-class")
            })
            .appendTo(li);
            return li.appendTo(ul);
            }
            });

            //Let stry to disabled zooming for mobile screens
            if (/iphone|ipod|android|blackberry|opera mini|opera mobi|skyfire|maemo|windows phone|palm|iemobile|symbian|symbianos|fennec/i.test(navigator.userAgent.toLowerCase())) {
            $("meta[name='viewport']").attr("content", "width=device-width, initial-scale=1.0, maximum-scale=1.0");
            }
            


            
                eviivo.bookingFlow.init();
            
        function delayedInitPromoFeature(searchTrigger){
        eviivo.promos.init({
        resources: {
        apply: "Apply",
        unlockSpecials: "Click to unlock our exclusive deals",
        enterPromoCode: "Enter your code or member ID"
        },
        queryString: {
        promoCode: "pce",
        askForPromoInstantDeal: "peid"
        },
        cookie:
        {
        flags:{
        promotionCode: "pc_flags",
        instantDeal: "pid_flags"
        }
        },
        bannerTypes: {
        webExclusivePromoCode: "WXC",
        webExclusiveInstantDeal: "WXI",
        webExclusivePromoCodeFail: "WXCF",
        webExclusiveBannerWarning: "WXWARN",
        webExclusivePromoCodeUnlocked: "WXPU"
        },
        captcha: {
        siteKey: "6LdAbAoUAAAAAMuXWv2p3tnpik9AdCDyLRbpfeaB"
        },
        searchTrigger: searchTrigger
        });

        eviivo.promos.codeValidator.init({
        callback: eviivo.promos.onCodeValid,
        resources: {
        promoValidationMessage: "Your promo code is invalid or has expired!",
        promoValidationEmptyCode: "Promo code cannot be empty!"
        }
        });
        }

        eviivo.instantWebMenu.init();

            
                eviivo.roomImages.init();

                eviivo.instantWebMenu.initSearchBar();
            
                    
                eviivo.mapView.init({
                googleMapsApiUrl: "//maps.googleapis.com/maps/api/js?key=AIzaSyCtPYb_pV8h_-HxZJIEJ_pJBuPel7LUz5s&amp;v=3&amp;callback=",
                lat: "60.965421",
                lng: "-149.135837",
                resources: {
                switchToMap: "View Map",
                switchToImage: "View Images"
                },
                showMapByDefault: false
                });
            
        eviivo.bookingSystem.managePageLogin.init({
        popupHeaderTitle: "Manage a reservation",
        ajaxUrl: "/instantweb/manage/RetrieveOrderCancellationPermissions",
        referrerShortName: "MyWeb",
        propertyShortName: "CrrgHsAccmmdtns99587",
        requestVerificationToken: "LPhgWCPuZEU1WgsZhxLLN-MEGFnbcbPwmoSAgNSAEwuWHqGglHWxRKSRdSPM8sr6CEKQRHzCkAPk9GG4cTgixzEGZQY1:jj74guKXyuaK2MS5LKecHHjnRPrLA0lgOVRFhFb7c9HfXnoOb_wXtvJHUv4KCE8noVWY31veK9ApiqpoAnelJvW8njc1",
        ajaxLoaderResources: {
        loadingUpdateResults: "Validating booking reference and email address...",
        loadingSlowSystemWarning: "We&#39;re still trying to cancel your booking... thanks for your patience",
        loadingRefreshingIssueWarning: "Hmmmm.... something is not right. Please try to",
        ajaxFailText: "Something is not right, please try to",
        refreshPageText: "refresh the page"
        }
        });

        });

        
