﻿
//classe aidant aux appels ajax
var CalendarManagement = Base.extend({

    //Constructor
    constructor: function(minMonth, minYear, maxMonth, maxYear) {
        this.minMonth = minMonth;
        this.minYear = minYear;
        this.maxMonth = maxMonth;
        this.maxYear = maxYear;
    },

    //members
    //    currentMonth: null,
    //    currentYear: null,
    //    currentDay: null,
    //    currentType: null,
    minMonth: null,
    minYear: null,
    maxMonth: null,
    maxYear: null,

    //Appelle les méthods du WS
    callWSEvents: function(methodName, myData, mySuccess) {

        jQuery.callWS({
            url: '/WS/wsEvents.asmx/' + methodName,
            data: myData,
            success: mySuccess,
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert(XMLHttpRequest.responseText);
            }
        });
    },
    showNextMonth: function() {
        if (currentYear < this.maxYear || (currentYear == this.maxYear && currentMonth < this.maxMonth)) {
            var dataBuilder = new DataBuilder();
            dataBuilder.clear();
            dataBuilder.add('currentMonth', currentMonth);
            dataBuilder.add('currentYear', currentYear);
            dataBuilder.add('currentDay', -1);

            var context = this;

            this.callWSEvents('GetEventsInNextMonth', dataBuilder.toJSONString(), function(data, textStatus) {
                //console.log(data);
                jQuery("#Contenu").html(data.d.html);
                currentMonth = data.d.month;
                currentYear = data.d.year;
                currentDay = -1;
                context.showCalendrier();

                setHistory(currentMonth, currentYear, -1, -1);
            });
        }
        return false;
    },
    showPreviousMonth: function() {
        if (currentYear > this.minYear || (currentYear == this.minYear && currentMonth > this.minMonth)) {
            var dataBuilder = new DataBuilder();
            dataBuilder.clear();
            dataBuilder.add('currentMonth', currentMonth);
            dataBuilder.add('currentYear', currentYear);
            dataBuilder.add('currentDay', -1);

            var context = this;
            this.callWSEvents('GetEventsInPreviousMonth', dataBuilder.toJSONString(), function(data, textStatus) {

                jQuery("#Contenu").html(data.d.html);
                currentMonth = data.d.month;
                currentYear = data.d.year;
                currentDay = -1;
                context.showCalendrier();

                setHistory(currentMonth, currentYear, -1, -1);
            });
        }
        return false;
    },
    showDay: function(pDay, pMonth, pYear) {
        var dataBuilder = new DataBuilder();
        dataBuilder.clear();

        dataBuilder.add('currentDay', pDay);
        dataBuilder.add('currentMonth', pMonth);
        dataBuilder.add('currentYear', pYear);

        var context = this;
        this.callWSEvents('GetEventsInDay', dataBuilder.toJSONString(), function(data, textStatus) {

            jQuery("#Contenu").html(data.d.html);
            currentMonth = data.d.month;
            currentYear = data.d.year;
            currentDay = data.d.day;
            context.showCalendrier();

            setHistory(currentMonth, currentYear, currentDay, -1);
        });

        return false;
    },
    showMonth: function(month, year) {

        monthYear = jQuery("#ddlDates").val();
        if (month == null)
            month = monthYear.split('-')[0];
        if (year == null)
            year = monthYear.split('-')[1];

        var dataBuilder = new DataBuilder();
        dataBuilder.clear();

        dataBuilder.add('currentMonth', month);
        dataBuilder.add('currentYear', year);
        dataBuilder.add('currentDay', -1);

        var context = this;
        this.callWSEvents('GetEventsInMonth', dataBuilder.toJSONString(), function(data, textStatus) {

            jQuery("#Contenu").html(data.d.html);
            currentMonth = data.d.month;
            currentYear = data.d.year;
            currentDay = -1;
            context.showCalendrier();
        });

        return false;
    },
    showEventsByTypeAndMonth: function() {
        var dataBuilder = new DataBuilder();
        dataBuilder.clear();

        monthYear = jQuery("#ddlMonths").val();
        dataBuilder.add('currentMonth', monthYear.split('|')[0]);
        dataBuilder.add('currentYear', monthYear.split('|')[1]);
        dataBuilder.add('typeId', currentType);

        var context = this;
        this.callWSEvents('GetEventsByTypeAndMonth', dataBuilder.toJSONString(), function(data, textStatus) {

            jQuery("#Contenu").html(data['html']);
            currentMonth = data.d.month;
            currentYear = data.d.year;
            currentDay = -1;
            //context.showCalendrier();
        });

        return false;
    },
    showCalendrier: function() {
        var dataBuilder = new DataBuilder();
        dataBuilder.clear();
        dataBuilder.add('currentMonth', currentMonth);
        dataBuilder.add('currentYear', currentYear);

        var context = this;
        this.callWSEvents('GetEventsInCalendar', dataBuilder.toJSONString(), function(data, textStatus) {

            jQuery("#InfoActivites").html(data.d.html);
            currentMonth = data.d.month;
            currentYear = data.d.year;
            refreshLayout();
        });

        return false;
    },
    showEventsByType: function(typeId) {
        var dataBuilder = new DataBuilder();
        dataBuilder.clear();
        dataBuilder.add('typeId', typeId);
        currentType = typeId;

        this.callWSEvents('GetEventsByType', dataBuilder.toJSONString(), function(data, textStatus) {
            jQuery("#Contenu").html(data.d.html);
        });

        return false;
    }

});