// ### CalendarManager ### //
    CalendarManager = (function(){
        // private
        var initialized = false;
        var PropertyManager = SW.widget.SearchResults.PropertyManager;
        var Url = SW.tools.Url;
        var yuiDom = YAHOO.util.Dom;
        var yuiEvent = YAHOO.util.Event;
        function setupProperty(property){
            var cal,
                link = yuiDom.getElementsByClassName("cashPointsCalendarLink","a",property.container)[0],
                detailsLink = yuiDom.getElementsByClassName("moreDetails","div",property.container)[0];
            if(link){
                var arrivalDate = Url.getParameter(link.getAttribute("href"),"arrivalDate");
                var rangeStart = SW.widget.Calendar.Utils.dateFromString(arrivalDate);
                var params = {
                    _baseHref:link.getAttribute("href"),
                    _detailsLink:detailsLink,
                    trigger: link,
                    position: "centerLeft",
                    calStartDate:rangeStart,
                    ratePlan:Url.getParameter(link.getAttribute("href"),"rateCategory"),
                    propertyId:property.propertyId,
                    numberRooms:Url.getParameter(link.getAttribute("href"),"numberOfRooms"),
                    numberAdults:Url.getParameter(link.getAttribute("href"),"numberOfAdults")
                };
                cal = new SW.widget.Calendar.CashPointsCalendar(params);
                yuiEvent.addListener(cal.triggers.show,"click",cal.toggleHandler,cal,true);
                SW.domWidget.bodyClickHandler.add(cal.handleHide,[cal.triggers.show], cal); 
                /*
                hide listener is added internally since you can't always grab reference to
                the hide trigger until the calendar is actually rendered
                and if you're toggling, then you'd probably only use one trigger which is the show trigger
                */
//                yuiEvent.addListener(cal.triggers.hide,"click",cal.handleHide,cal,true);
            }
        }
        // public
        var self = {
            initialize:function(){
                if(initialized){ return false; }
                initialized = true;
//                console.log(PropertyManager.getAllProperties());
                PropertyManager.getAllProperties().forEach(setupProperty);
            }

        };
        return self;
    })();


    yuiEvent.onDOMReady(CalendarManager.initialize);