﻿
//classe aidant aux appels ajax
var CalendarManagement = Base.extend({

    //Appelle les méthods du WS
    callWSEvents: function(methodName, myData, mySuccess) {

        jQuery.callWS({
            url: sitedns + '/WebServices/wsEvents.asmx/' + methodName,
            data: myData,
            success: mySuccess,
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                //alert(XMLHttpRequest.responseText);
            }
        });
    },
    getData: function(addCurrentDay, type) {
        var dataBuilder = new DataBuilder();

        dataBuilder.clear();
        dataBuilder.add('currentMonth', currentMonth);
        dataBuilder.add('currentYear', currentYear);
        if (addCurrentDay)
            dataBuilder.add('currentDay', -1);
        dataBuilder.add('type', type);
        dataBuilder.add('lang', curLang);
        return dataBuilder;
    },
    getData: function(addCurrentDay, type, champIntervention, clientele, pointService, typeRange) {
        var dataBuilder = new DataBuilder();

        dataBuilder.clear();
        dataBuilder.add('currentMonth', currentMonth);
        dataBuilder.add('currentYear', currentYear);
        if (addCurrentDay)
            dataBuilder.add('currentDay', -1);
        dataBuilder.add('type', type);
        dataBuilder.add('typeRange', typeRange);
        dataBuilder.add('champIntervention', champIntervention);
        dataBuilder.add('clientele', clientele);
        dataBuilder.add('pointService', pointService);
        dataBuilder.add('lang', curLang);
        return dataBuilder;
    },
    showNextMonth: function(type, champIntervention, clientele, pointService) {

        var dataBuilder = this.getData(true, type, champIntervention, clientele, pointService);

        var context = this;
        this.callWSEvents('GetEventsInNextMonth', dataBuilder.toJSONString(), function(data, textStatus) {
            if (typeof (data.d.html) != "undefined") {
                currentMonth = data.d.month;
                currentYear = data.d.year;
                currentDay = -1;
                context.showMonthBar();
                jQuery("#Calendar").html(data.d.html);
                context.showCalendar();
            }
        });
        IsCookieEnabled();
    },
    showPreviousMonth: function(type, champIntervention, clientele, pointService) {

        var dataBuilder = this.getData(true, type, champIntervention, clientele, pointService);

        var context = this;
        this.callWSEvents('GetEventsInPreviousMonth', dataBuilder.toJSONString(), function(data, textStatus) {
            if (data != null) {
                currentMonth = data.d.month;
                currentYear = data.d.year;
                currentDay = -1;
                context.showMonthBar();
                jQuery("#Calendar").html(data.d.html);
                context.showCalendar();

            }
        });
        IsCookieEnabled();
    },
    showDay: function(pDay, type, champIntervention, clientele, pointService) {
        var dataBuilder = new DataBuilder();
        dataBuilder.clear();

        dataBuilder.add('currentDay', pDay);
        dataBuilder.add('currentMonth', currentMonth);
        dataBuilder.add('currentYear', currentYear);
        dataBuilder.add('lang', curLang);
        dataBuilder.add('type', type);
        dataBuilder.add('typeRange', 0);
        dataBuilder.add('champIntervention', champIntervention);
        dataBuilder.add('clientele', clientele);
        dataBuilder.add('pointService', pointService);
        var context = this;
        this.callWSEvents('GetEventsInDay', dataBuilder.toJSONString(), function(data, textStatus) {
            jQuery("#Calendar").html(data.d.html);
            currentMonth = data.d.month;
            currentYear = data.d.year;
            currentDay = pDay;
            context.showCalendar();
        });
        IsCookieEnabled();
        return false;
    },
    filtrerCalendrier: function(type, typeRange, champIntervention, clientele, pointService) {
        var dataBuilder = this.getData(false, type, champIntervention, clientele, pointService, typeRange);

        var context = this;
        this.callWSEvents('FiltrerCalendrier', dataBuilder.toJSONString(), function(data, textStatus) {

            jQuery("#Calendar").html(data.d.html);
            bindCalendarEvents();
        });
        IsCookieEnabled();
    },
    showCalendar: function() {

        var dataBuilder = this.getData();

        var context = this;
        this.callWSEvents('GetEventsInCalendar', dataBuilder.toJSONString(), function(data, textStatus) {

            jQuery("#CalendarContent").html(data.d.html);
            currentMonth = data.d.month;
            currentYear = data.d.year;
            bindCalendarEvents();
        });
        IsCookieEnabled();
        return false;
    },
    showCalendarNextMonth: function() {

        var dataBuilder = this.getData();

        var context = this;
        this.callWSEvents('GetEventsInCalendarNextMonth', dataBuilder.toJSONString(), function(data, textStatus) {

            jQuery("#CalendarContent").html(data.d.html);
            currentMonth = data.d.month;
            currentYear = data.d.year;
            bindMasterCalendarEvents();
        });
        IsCookieEnabled();
        return false;
    },
    showCalendarPreviousMonth: function() {

        var dataBuilder = this.getData();

        var context = this;
        this.callWSEvents('GetEventsInCalendarPreviousMonth', dataBuilder.toJSONString(), function(data, textStatus) {

            jQuery("#CalendarContent").html(data.d.html);
            currentMonth = data.d.month;
            currentYear = data.d.year;
            bindMasterCalendarEvents();
        });
        IsCookieEnabled();
        return false;
    },
    showMonthBar: function() {

        var dataBuilder = this.getData();

        var context = this;
        this.callWSEvents('GetMonthBar', dataBuilder.toJSONString(), function(data, textStatus) {

            jQuery("#MonthBar").html(data.d.html);
            currentMonth = data.d.month;
            currentYear = data.d.year;
            bindCalendarEvents();
        });
        IsCookieEnabled();
        return false;
    }


});
