



//### BEGIN CALENDAR ### //
(function(){
    var SuperClass = SW.widget.Calendar.AvailabilityCalendar.prototype,
        Calendar = SW.widget.Calendar.Calendar,
        CalUtils = SW.widget.Calendar.Utils,
        Url = SW.tools.Url,
        Html = SW.tools.Html,
        yuiDom = YAHOO.util.Dom,
        yuiEvent = YAHOO.util.Event,
        yuiAnim = YAHOO.util.Anim,
        maskManager;

    function CashPointsCalendar(settings){
        SuperClass.constructor.call(this, settings);
    }
    YAHOO.lang.extend(CashPointsCalendar,SW.widget.Calendar.AvailabilityCalendar,{
        initialize:function(){
            SuperClass.initialize.call(this);            
        },

        initHandlers:function(){
            SuperClass.initHandlers.call(this);
            this.submitEvent.subscribe(this._continue,this,true);
        },
        toggleHandler:function(e){
            if(this.isShowing()){
                this.hide();
            }else{
                this.show();
            }
            yuiEvent.preventDefault(e);
        },
        createHeader:function(container){
            var heading = document.createElement("h3");
            heading.innerHTML = "Disponibilité des récompenses Cash et Points";
            container.appendChild(heading);

            var closeButton = this.renderCloseButton(container);
            
            this.createLegend(container);
            Html.appendClearDiv(container);
        },
        animateIn:function(){
            if(this.settings._detailsLink && this.settings._detailsLink.config){
                highlight.hide(this.settings._detailsLink.config);
            }
            yuiDom.addClass(this.settings.trigger,"showing");
            if(this.settings._animConfig && this.settings.container){
                var calendar = this;
                var animIn = new yuiAnim(this.settings._animConfig.animElement,this.settings._animConfig.showAttributes,this.settings._animConfig.animTime,this.settings._animConfig.easingMethod);
                animIn.onStart.subscribe(function(){
                    yuiDom.setStyle(calendar.settings._animConfig.animElement,"height",0);
                    yuiDom.addClass(calendar.settings._animConfig.animElement,"show");
                });
                animIn.onComplete.subscribe(function(){
                    calendar.showMasks();
                });
                animIn.animate();
            }
            else{
                this.showMasks();
            }
            return true;
        },
        animateOut:function(){
            yuiDom.removeClass(this.settings.trigger,"showing");
            if(this.settings._animConfig && this.settings.container){
                var calendar = this;
                var animOut = new yuiAnim(this.settings._animConfig.animElement,this.settings._animConfig.hideAttributes,this.settings._animConfig.animTime,this.settings._animConfig.easingMethod);
                animOut.onComplete.subscribe(function(){
                    yuiDom.removeClass(calendar.settings._animConfig.animElement,"show");
                    calendar.hideMasks()
                });

                animOut.animate();
            }
            else{
                this.hideMasks();
            }
        },
        createMasks:function(){
            maskManager = new YAHOO.widget.OverlayManager();
            var masksToBuild = this.cleanArray(this.settings._pageMaskContainer);
            for(var i=0; i<masksToBuild.length; i++){
                var tempMask = new YAHOO.widget.Overlay(
                "pageMask_" + i,{
                    context:[masksToBuild[i],"tl","tl", ["beforeShow", "windowResize"]],
                    visible:false,
                    width:masksToBuild[i].offsetWidth + 'px',
                    height:masksToBuild[i].offsetHeight + 'px'
                } );
                tempMask.render(masksToBuild[i]);
                maskManager.register(tempMask);
            }
        },
        showMasks:function(){
            if(this.settings._pageMaskContainer){
                if(!maskManager){
                    this.createMasks();
                }
                maskManager.showAll();
            }
        },
        hideMasks:function(){
            if(this.settings._pageMaskContainer){
                maskManager.hideAll();
            }
        },
        cleanArray:function(arrayToClean){
            var cleanedArray = new Array();
            for(var i=0; i<arrayToClean.length; i++){
                if (arrayToClean[i]){
                    cleanedArray.push(arrayToClean[i]);
                }
            }
            return cleanedArray;
        },
        _continue:function(){
            var url = this.settings._baseHref;
            url = Url.setParameter(url,"arrivalDate",CalUtils.dateToSystemFormat(this.rangeStartDate));
            url = Url.setParameter(url,"departureDate",CalUtils.dateToSystemFormat(this.rangeEndDate));
            url = Url.setParameter(url,"lengthOfStay",CalUtils.getLengthOfStay(this.rangeStartDate,this.rangeEndDate));
            document.location.href = url;
        }
    });
    SW.widget.Calendar.CashPointsCalendar = CashPointsCalendar;

})();