var hashtable = undefined;

function AgendaWidget(divID, maxResultPerPage) {
    this.divID = divID;
    this.TextIfNoData = 'Pas d\'événement programmé';
    this.RootUrl = "http://" + window.location.hostname;
    if(window.location.port != "") {
		this.RootUrl += ":" + window.location.port;
    }
    this.AshxDir = this.RootUrl + "/ashx/";
    this.PageAgenda = this.RootUrl + "/agenda.htm";
    this.PageAdmin = this.RootUrl + "/admin.htm";   
    this.AlwaysMoreLink = true;
    this.lastPage = 0;
    this.limit = (maxResultPerPage ? maxResultPerPage : 3);
    this.maxPage = 0;
    this.xml = '';
    if (hashtable == undefined) {
        hashtable = new Hashtable();
    }   
    hashtable_put(divID, this);
}

GetDataAgendaWidget = function(agendaWidget) {

    new Ajax.Request(agendaWidget.AshxDir + "AgendaWidget.ashx",
        {
            method: 'get',
            onSuccess: function(transport) {
                agendaWidget.OnGetDataAgendaWidget(transport);
            },
            onFailure: function() {               
                agendaWidget.OnGetDataAgendaWidgetFailed();
            },
            parameters:
            {
                'ms': new Date().getTime()
            }
        });
}

AgendaWidget.prototype.OnGetDataAgendaWidgetFailed = function() {
    this.xml = undefined;
    this.BuildWidgetAgendaHTML();
}

AgendaWidget.prototype.OnGetDataAgendaWidget = function(transport) {
    if (transport && transport.responseXML) {
        this.xml = transport.responseXML;
        this.BuildWidgetAgendaHTML();
    }
}

AgendaWidget.prototype.BuildWidgetAgendaHTML = function() {

    if (document.getElementById(this.divID).hasChildNodes()) {
        while (document.getElementById(this.divID).childNodes.length >= 1) {
            document.getElementById(this.divID).removeChild(document.getElementById(this.divID).firstChild);
        }
    }

    if (this.xml) {
        if (this.xml.getElementsByTagName("AgendaElements") && this.xml.getElementsByTagName("AgendaElements").length > 0)
            var agendaNode = this.xml.getElementsByTagName("AgendaElements")[0];
        if (agendaNode) {
            nbDays = agendaNode.getElementsByTagName("AgendaDays").length;
            this.maxPage = ((this.limit > 0) ? Math.round((nbDays / this.limit) + 0.49999999999) : 0);

            countNode = 0;
            imax = 0;
            imax = (this.lastPage * this.limit) + this.limit;
            if (imax > nbDays) {
                imax = nbDays;
            }
            if (nbDays > 0) {
                for (i = (this.lastPage * this.limit); i < imax; i++) {
                    agendaDaysNode = agendaNode.getElementsByTagName("AgendaDays")[i];
                    var eventYear;
                    var eventMonth;
                    var eventDay;
                    if (agendaDaysNode.attributes.getNamedItem("EventYear")) {
                        eventYear = parseInt(agendaDaysNode.attributes.getNamedItem("EventYear").nodeValue);
                    }
                    if (agendaDaysNode.attributes.getNamedItem("EventMonth")) {
                        eventMonth = parseInt(agendaDaysNode.attributes.getNamedItem("EventMonth").nodeValue) - 1;
                    }
                    if (agendaDaysNode.attributes.getNamedItem("EventDay")) {
                        eventDay = parseInt(agendaDaysNode.attributes.getNamedItem("EventDay").nodeValue);
                    }

                    for (j = 0; j < agendaDaysNode.childNodes.length; j++) {
                        agendaElement = agendaDaysNode.childNodes[j];
                        if (agendaElement) {
                            var elementID = undefined;
                            var title1 = undefined;
                            var title2 = undefined;
                            var eventLink = undefined;
                            var eventDate;
                            var eventDuration = 0;
                            var imageLink = undefined;
                            var eventDetail = undefined;

                            if (agendaElement.attributes.getNamedItem("ID")) {
                                elementID = agendaElement.attributes.getNamedItem("ID").nodeValue;
                            }
                            if (agendaElement.attributes.getNamedItem("Title1")) {
                                title1 = agendaElement.attributes.getNamedItem("Title1").nodeValue;
                            }
                            if (agendaElement.attributes.getNamedItem("Title2")) {
                                title2 = agendaElement.attributes.getNamedItem("Title2").nodeValue;
                            }
                            if (agendaElement.attributes.getNamedItem("EventLink")) {
                                eventLink = agendaElement.attributes.getNamedItem("EventLink").nodeValue;
                            }
                            if (agendaElement.attributes.getNamedItem("Duration")) {
                                eventDuration = parseInt(agendaElement.attributes.getNamedItem("Duration").nodeValue);
                            }
                            if (agendaElement.attributes.getNamedItem("ImageLink")) {
                                imageLink = agendaElement.attributes.getNamedItem("ImageLink").nodeValue;
                            }
                            if (agendaElement.attributes.getNamedItem("EventDetail")) {
                                eventDetail = agendaElement.attributes.getNamedItem("EventDetail").nodeValue;
                            }
                            if ((eventYear != undefined) && (eventMonth != undefined) && (eventDay != undefined) && agendaElement.attributes.getNamedItem("EventHour") &&
                                     agendaElement.attributes.getNamedItem("EventMinute")) {
                                eventDate = new Date(eventYear,
                                                eventMonth,
                                                eventDay,
                                                agendaElement.attributes.getNamedItem("EventHour").nodeValue,
                                                agendaElement.attributes.getNamedItem("EventMinute").nodeValue, 0
                                        );
                            }

                            now = new Date();

                            divElement = document.createElement('div');
                            divElement.width = '100%';

                            document.getElementById(this.divID).appendChild(divElement);

                            if (eventDate.getFullYear() == now.getFullYear() && eventDate.getMonth() == now.getMonth() && eventDate.getDate() == now.getDate()) {
                                divElement.className = 'AgendaWidgetNow';
                            }
                            else {
                                divElement.className = 'AgendaWidget';
                            }

                            tableElement = document.createElement('table');
                            tableElement.width = '95%';
                            divElement.appendChild(tableElement);

                            tbody = document.createElement('tbody');
                            tableElement.appendChild(tbody);

                            trHeader = document.createElement('tr');
                            tbody.appendChild(trHeader);

                            tdHeader = document.createElement('td');
                            tdHeader.colSpan = 2;
                            var eventDateStr = '';
                            if (eventDate.getFullYear() == now.getFullYear() && eventDate.getMonth() == now.getMonth() && eventDate.getDate() == now.getDate()) {
                                tdHeader.className = 'AgendaWidgetDateNow';
                                eventDateStr = 'Aujourd\'hui ' + eventDate.format("HH:MM");

                            }
                            else {
                                tdHeader.className = 'AgendaWidgetDate';
                                eventDateStr = eventDate.format("dddd d mmmm yyyy") + " " + eventDate.format("HH:MM");
                            }
                            tdHeader.setAttribute('colspan', '2');
                            trHeader.appendChild(tdHeader);

                            tdHeader.appendChild(document.createTextNode(eventDateStr));

                            trTitle1 = document.createElement('tr');
                            tbody.appendChild(trTitle1);
                            tdTitle1 = document.createElement('td');
                            if (eventDate.getFullYear() == now.getFullYear() && eventDate.getMonth() == now.getMonth() && eventDate.getDate() == now.getDate()) {
                                tdTitle1.className = 'AgendaWidgetTitle1Now';
                            }
                            else {
                                tdTitle1.className = 'AgendaWidgetTitle1';
                            }

                            aTitle = document.createElement('a');
                            aTitle.className = 'snap_shot';
                            aTitle.setAttribute('href', this.PageAgenda + '?ID=' + elementID);
                            aTitle.setAttribute('target', '_self');
                            aTitle.innerHTML = title1;

                            tdTitle1.appendChild(aTitle);
                            trTitle1.appendChild(tdTitle1);

                            tdImage = document.createElement('td');
                            tdImage.rowSpan = 4;
                            tdImage.setAttribute('rowspan', 4);
                            tdImage.className = 'AgendaWidgetImage';
                            trTitle1.appendChild(tdImage);

                            if (imageLink) {
                                aImg = document.createElement('a');
                                aImg.setAttribute('href', this.PageAgenda + '?ID=' + elementID);
                                aImg.setAttribute('target', '_self');
                                img = document.createElement('img');
                                img.src = imageLink;
                                img.style.borderStyle = 'none';
                                aImg.appendChild(img);
                                tdImage.appendChild(aImg);
                            }

                            trTitle2 = document.createElement('tr');
                            tbody.appendChild(trTitle2);
                            tdTitle2 = document.createElement('td');
                            if (eventDate.getFullYear() == now.getFullYear() && eventDate.getMonth() == now.getMonth() && eventDate.getDate() == now.getDate()) {
                                tdTitle2.className = 'AgendaWidgetTitle2Now';
                            }
                            else {
                                tdTitle2.className = 'AgendaWidgetTitle2';
                            }
                            if (title2) {
                                tdTitle2.innerHTML = title2;
                            }
                            else {
                                tdTitle2.appendChild(document.createTextNode(''));
                            }
                            trTitle2.appendChild(tdTitle2);


                            trDetail = document.createElement('tr');
                            tbody.appendChild(trDetail);
                            tdDetail = document.createElement('td');
                            if (eventDate.getFullYear() == now.getFullYear() && eventDate.getMonth() == now.getMonth() && eventDate.getDate() == now.getDate()) {
                                tdDetail.className = 'AgendaWidgetDetailNow';
                            }
                            else {
                                tdDetail.className = 'AgendaWidgetDetail';
                            }
                            if (eventDetail) {
                                tdDetail.innerHTML = eventDetail;
                            }
                            trDetail.appendChild(tdDetail);

                            trMore = document.createElement('tr');
                            tbody.appendChild(trMore);
                            tdMore = document.createElement('td');
                            if (eventDate.getFullYear() == now.getFullYear() && eventDate.getMonth() == now.getMonth() && eventDate.getDate() == now.getDate()) {
                                tdMore.className = 'AgendaWidgetMoreNow';
                            }
                            else {
                                tdMore.className = 'AgendaWidgetMore';
                            }
                            if (this.AlwaysMoreLink == true) {
                                link = document.createElement('a');
                                link.setAttribute('href', this.PageAgenda + "?ID=" + elementID);
                                link.setAttribute('target', '_self');
                                link.appendChild(document.createTextNode("[En savoir plus]"));
                                tdMore.appendChild(link);
                            }
                            else {

                                if (eventLink) {
                                    link = document.createElement('a');
                                    link.setAttribute('href', eventLink);
                                    link.setAttribute('target', '_blank');
                                    link.appendChild(document.createTextNode("[En savoir plus]"));
                                    tdMore.appendChild(link);
                                }
                            }
                            trMore.appendChild(tdMore);
                        }
                    }
                }
                if (nbDays > 0) {
                    var trPager = document.createElement('tr');
                    var tdPager = document.createElement('td');
                    tdPager.colSpan = 2;
                    trPager.appendChild(tdPager);
                    var divList = document.createElement('div');
                    tdPager.appendChild(divList);
                    divList.className = 'Pager';
                    tbody.appendChild(trPager);
                    divList.setAttribute("style", "vertical-align:center;");
                    var tmpDivID = this.divID
                    aPreviousAgendaWidget = document.createElement('a');
                    aPreviousAgendaWidget.className = 'Previous';
                    aPreviousAgendaWidget.setAttribute('href', '#PreviousAgendaWidget' + this.divID);
                    aPreviousAgendaWidget.style.visibility = ((this.lastPage != 0) ? "" : "hidden");
                    aPreviousAgendaWidget.setAttribute("onclick", "javascript:PreviousAgendaWidget('" + this.divID + "');");
                    aPreviousAgendaWidget.onclick = function() { PreviousAgendaWidget(tmpDivID); };
                    //aPrevious.appendChild(document.createTextNode("Previous"));
                    aPreviousAgendaWidget.innerHTML = "Précédent";
                    divList.appendChild(aPreviousAgendaWidget);
                    divList.appendChild(document.createTextNode(""));
                    aNextAgendaWidget = document.createElement('a');
                    aNextAgendaWidget.className = 'Next';
                    aNextAgendaWidget.setAttribute('href', '#NextAgendaWidget' + this.divID);
                    aNextAgendaWidget.style.visibility = ((imax != nbDays) ? "" : "hidden");
                    aNextAgendaWidget.setAttribute("onclick", "javascript:NextAgendaWidget('" + this.divID + "');");
                    aNextAgendaWidget.onclick = function() { NextAgendaWidget(tmpDivID); };
                    //aNext.appendChild(document.createTextNode("Next"));
                    aNextAgendaWidget.innerHTML = "Suivant";
                    divList.appendChild(aNextAgendaWidget);
                }
            }
            addSnap();
        }
        else {
            divElement = document.createElement('div');
            divElement.width = '100%';

            document.getElementById(this.divID).appendChild(divElement);

            divElement.appendChild(document.createTextNode(this.TextIfNoData));
        }
    }
    else {
        divElement = document.createElement('div');
        divElement.width = '100%';

        document.getElementById(this.divID).appendChild(divElement);

        divElement.appendChild(document.createTextNode(this.TextIfNoData));
    }
}

NextAgendaWidget = function(divId) {
    var agendawidget = hashtable_get(divId);
    //var offset = widget.getScrollXY();
    if (agendawidget) {
        if (agendawidget.lastPage + 1 < agendawidget.maxPage) {
            agendawidget.lastPage = agendawidget.lastPage + 1;
            agendawidget.BuildWidgetAgendaHTML();
        }
    }
}

PreviousAgendaWidget = function(divId) {
    var agendawidget = hashtable_get(divId);
    if (agendawidget) {
        if (agendawidget.lastPage - 1 >= 0) {
            agendawidget.lastPage = agendawidget.lastPage - 1;
            agendawidget.BuildWidgetAgendaHTML();
        }
    }
}

function Agenda(divTitleID, divContentID, viewMode, language, changeMode) {
    this.RootUrl = "http://" + window.location.hostname;
    if(window.location.port != 1) {
		this.RootUrl += ":" + window.location.port;
    }
    this.AshxDir = this.RootUrl + "/ashx/";
    this.PageAgenda = this.RootUrl + "/agenda.htm";
    this.DivTitleID = divTitleID;
    this.DivContentID = divContentID;
    //this.salt = Math.floor(Math.random() * 999999999); ;
    this.isIE = ((navigator.userAgent.indexOf('MSIE') >= 0 && navigator.userAgent.indexOf('opera') == -1 && document.all) ? true : false);
    // 1 : Month
    // 2 : Week
    // 3 : Day
    this.ViewMode = viewMode;
    this.ViewDay = false;
    this.LanguageCode = language;
    this.CurrentDate = new Date();
    this.MaxElementByDays = 2;
    this.SelectedID = -1;
    this.LoadFromUrl = ((!changeMode) ? true : false);
    this.FirstLoad = true;
    this.AdminValue = 1;
    switch (this.LanguageCode) {
        case "en": /* English */
            this.monthArray = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
            this.dayArray = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
            this.weekString = 'Week';
            this.startWeek = 'From';
            this.endWeek = 'To';
            this.startHour = 'From';
            this.endHour = 'To';
            this.AgendaTitle = 'Agenda';
            this.ViewMonthMode = 'Month';
            this.ViewWeekMode = 'Week';
            this.ViewDayMode = 'Day';
            this.MoreEvents = 'More events';
            break;
        case "nl": /* Dutch */
            this.monthArray = ['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'];
            this.dayArray = ['Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag', 'Zondag'];
            this.weekString = 'Week';
            this.startWeek = 'From';
            this.endWeek = 'To';
            this.startHour = 'From';
            this.endHour = 'To';
            this.AgendaTitle = 'Agenda';
            this.ViewMonthMode = 'Month';
            this.ViewWeekMode = 'Week';
            this.ViewDayMode = 'Day';
            this.MoreEvents = 'More events';
            break;
        case "fr":      /* French */
            this.monthArray = ['Janvier', 'F&eacute;vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'D&eacute;cembre'];
            this.dayArray = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'];
            this.weekString = 'Semaine';
            this.startWeek = 'Du';
            this.endWeek = 'au';
            this.startHour = 'De';
            this.endHour = '&agrave;';
            this.AgendaTitle = 'Agenda';
            this.ViewMonthMode = 'Mensuel';
            this.ViewWeekMode = 'Hebdomadaire';
            this.ViewDayMode = 'Quotidien';
            this.MoreEvents = 'Plus d\'événements';
            break;
        default:
            this.monthArray = ['Janvier', 'F&eacute;vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'D&eacute;cembre'];
            this.dayArray = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'];
            this.weekString = 'Semaine';
            this.startWeek = 'Du';
            this.endWeek = 'au';
            this.startHour = 'De';
            this.endHour = '&agrave;';
            this.AgendaTitle = 'Agenda';
            this.ViewMonthMode = 'Mensuel';
            this.ViewWeekMode = 'Hebdomadaire';
            this.ViewDayMode = 'Quotidien';
            this.MoreEvents = 'Plus d\'événements';
            break;
    }
}

Agenda.prototype.Init = function() {
    var agenda = this;
    if (agenda.LoadFromUrl && GetParam('id')) {
        agenda.SelectedID = GetParam('id');
    }
    if (agenda.SelectedID != -1 && agenda.FirstLoad) {
        this.ViewMode = 3;
        agenda.FirstLoad = false;
        agenda.GetEventDate();
    }
    else {
        texte = "";
        nextText = "";
        previousText = "";
        var nextTextDate = new Date(agenda.CurrentDate.getFullYear(), agenda.CurrentDate.getMonth(), agenda.CurrentDate.getDate(), 0, 0, 0);
        var previousTextDate = new Date(agenda.CurrentDate.getFullYear(), agenda.CurrentDate.getMonth(), agenda.CurrentDate.getDate(), 0, 0, 0); ;

        switch (this.ViewMode) {
            case 1:

                if (nextTextDate.getMonth() == 11) {
                    nextTextDate.setMonth(0);
                    nextTextDate.setFullYear(nextTextDate.getFullYear() + 1);
                }
                else {
                    nextTextDate.setMonth(nextTextDate.getMonth() + 1);
                }

                if (previousTextDate.getMonth() == 0) {
                    previousTextDate.setMonth(11);
                    previousTextDate.setFullYear(previousTextDate.getFullYear() - 1);
                }
                else {
                    previousTextDate.setMonth(previousTextDate.getMonth() - 1);
                }

                texte = agenda.monthArray[agenda.CurrentDate.getMonth()] + " " + agenda.CurrentDate.getFullYear();

                nextText = agenda.monthArray[nextTextDate.getMonth()] + " " + nextTextDate.getFullYear();
                previousText = agenda.monthArray[previousTextDate.getMonth()] + " " + previousTextDate.getFullYear();


                break;
            case 2:
                startDate = agenda.WeekStart(agenda.CurrentDate.getFullYear(), agenda.CurrentDate.getMonth(), 1, agenda.CurrentDate.getWeek());
                endDate = agenda.WeekEnd(startDate);
                texte = agenda.monthArray[agenda.CurrentDate.getMonth()] + " " + agenda.CurrentDate.getFullYear() + " - " + agenda.weekString + " " + agenda.CurrentDate.getWeek() + " - " + agenda.startWeek + " " + startDate.format("dddd d mmmm yyyy") + " " + agenda.endWeek + " " + endDate.format("dddd d mmmm yyyy");

                previousTextDate = new Date(previousTextDate.getFullYear(), previousTextDate.getMonth(), previousTextDate.getDate() - 7);
                nextTextDate = new Date(nextTextDate.getFullYear(), nextTextDate.getMonth(), nextTextDate.getDate() + 7);

                var testdate = agenda.WeekStart(nextTextDate.getFullYear(), nextTextDate.getMonth(), 1, nextTextDate.getWeek());
                nextText = agenda.monthArray[nextTextDate.getMonth()] + " " + nextTextDate.getFullYear() + " - " + agenda.weekString + " " + nextTextDate.getWeek() + " - " + agenda.startWeek + " " + agenda.WeekStart(nextTextDate.getFullYear(), nextTextDate.getMonth(), 1, nextTextDate.getWeek()).format("dddd d mmmm yyyy") + " " + agenda.endWeek + " " + agenda.WeekEnd(nextTextDate).format("dddd d mmmm yyyy");
                previousText = agenda.monthArray[previousTextDate.getMonth()] + " " + previousTextDate.getFullYear() + " - " + agenda.weekString + " " + previousTextDate.getWeek() + " - " + agenda.startWeek + " " + agenda.WeekStart(previousTextDate.getFullYear(), previousTextDate.getMonth(), 1, previousTextDate.getWeek()).format("dddd d mmmm yyyy") + " " + agenda.endWeek + " " + agenda.WeekEnd(previousTextDate).format("dddd d mmmm yyyy");

                break;
            case 3:
                texte = agenda.CurrentDate.format("dddd d mmmm yyyy");

                previousTextDate = new Date(previousTextDate.getFullYear(), previousTextDate.getMonth(), previousTextDate.getDate() - 1);
                nextTextDate = new Date(nextTextDate.getFullYear(), nextTextDate.getMonth(), nextTextDate.getDate() + 1);

                nextText = nextTextDate.format("dddd d mmmm yyyy");
                previousText = previousTextDate.format("dddd d mmmm yyyy");
                break;
        }
        if (document.getElementById(this.DivTitleID).hasChildNodes()) {
            while (document.getElementById(this.DivTitleID).childNodes.length >= 1) {
                document.getElementById(this.DivTitleID).removeChild(document.getElementById(this.DivTitleID).firstChild);
            }
        }

        divTitle = document.createElement('div');
        divTitle.className = "AgendaTitle";
        document.getElementById(agenda.DivTitleID).appendChild(divTitle);

        tableTitle = document.createElement('table');
        tableTitle.height = '100%';
        divTitle.appendChild(tableTitle);

        tbodyTitle = document.createElement('tbody');
        tableTitle.appendChild(tbodyTitle);

        trTitle = document.createElement('tr');
        tbodyTitle.appendChild(trTitle);

        tdTitle = document.createElement('td');
        tdTitle.width = "100%";
        tdTitle.appendChild(document.createTextNode(agenda.AgendaTitle));
        trTitle.appendChild(tdTitle);

        tdViewMode = document.createElement('td');
        trTitle.appendChild(tdViewMode);

        var divActions = document.createElement('div');
        //        var html = "<a href='#' onclick='ChangeMode(\"" + this.DivTitleID + "\",\"" + this.DivContentID + "\",1,\"" + this.LanguageCode + "\");'>" + this.ViewMonthMode + "</a> ";
        //        html += "<a href='#' onclick='ChangeMode(\"" + this.DivTitleID + "\",\"" + this.DivContentID + "\",2,\"" + this.LanguageCode + "\");'>" + this.ViewWeekMode + "</a> ";
        //        html += "<a href='#' onclick='ChangeMode(\"" + this.DivTitleID + "\",\"" + this.DivContentID + "\",3,\"" + this.LanguageCode + "\");'>" + this.ViewDayMode + "</a> ";
        //        divActions.innerHTML = html;
        var aMonth = document.createElement('a');
        aMonth.href = '#';
        aMonth.id = "View_1";
        aMonth.appendChild(document.createTextNode(this.ViewMonthMode));
        aMonth.onclick = function(event) { agenda.ChangeViewMode(event);};
        divActions.appendChild(aMonth);
        
        var aWeek = document.createElement('a');
        aWeek.href = '#';
        aWeek.id = "View_2";
        aWeek.appendChild(document.createTextNode(this.ViewWeekMode));
        aWeek.onclick = function(event) { agenda.ChangeViewMode(event); };
        divActions.appendChild(aWeek);
        
        var aDay = document.createElement('a');
        aDay.href = '#';
        aDay.id = "View_3";
        aDay.appendChild(document.createTextNode(this.ViewDayMode));
        aDay.onclick = function(event) { agenda.ChangeViewMode(event); };
        divActions.appendChild(aDay);
        
        tdTitle.appendChild(divActions);

        table = document.createElement('table');
        table.className = "AgendaWeek";
        table.cellPadding = '0px';
        table.cellSpacing = '0px';
        table.border = '0px';
        table.width = '100%';

        tbody = document.createElement('tbody');
        table.appendChild(tbody);

        tr = document.createElement('tr');
        tbody.appendChild(tr);

        tdPrevious = document.createElement('td');
        //tdPrevious.width = '20px';
        tr.appendChild(tdPrevious);

        tdText = document.createElement('td');
        tdText.align = 'center';
        tdText.setAttribute("style", "vertical-align:center;");
        tdText.width = '100%';

        tr.appendChild(tdText);

        tdNext = document.createElement('td');
        //tdNext.width = '20px';
        tr.appendChild(tdNext);


        aPrevious = document.createElement('a');
        aPrevious.className = 'PreviousMonth';
        aPrevious.setAttribute('href', '#PreviousMonth');
        aPrevious.setAttribute("title", previousText);
        aPrevious.onclick = function() { agenda.GetPrevious(); };

        img = document.createElement('img');
        img.src = this.RootUrl + '/image/Previous.gif';
        img.style.borderStyle = 'none';
        aPrevious.appendChild(img);

        tdPrevious.appendChild(aPrevious);

        //tdText.appendChild(document.createTextNode(texte));
		tdText.innerHTML = texte;

        aNext = document.createElement('a');
        aNext.className = 'NextMonth';
        aNext.setAttribute('href', '#NextMonth');
        aNext.setAttribute("title", nextText);
        aNext.onclick = function() { agenda.GetNext(); };
        img = document.createElement('img');
        img.src = this.RootUrl + '/image/next.gif';
        img.style.borderStyle = 'none';
        aNext.appendChild(img);

        tdNext.appendChild(aNext);

        document.getElementById(agenda.DivTitleID).appendChild(table);

        this.GetContent();
    }
}

Agenda.prototype.WeekStart = function(Year, Month, StartOfWeekDay, weekNumber) {
    _Date = new Date(Year, Month, 1);
    _LastDate = new Date();
    _LastDate = new Date(_Date);
    _LastDate.setMonth(_Date.getMonth() + 1);
    _LastDate.setHours(_LastDate.getHours() - 24);
    _Date = new Date(Year, Month, _Date.getDate() - _Date.getDay());
    _Returns = new Array();
    if (StartOfWeekDay == null) {
        StartOfWeekDay = 0;
    }
    var I = 1
    while (_Date <= _LastDate) {//_LastDate.getDate()) {
        _Date.setHours(_Date.getHours() + 24);
        if (_Date.getDay() == StartOfWeekDay) {
            if (_Date.getWeek() == weekNumber) {
                return new Date(_Date);
                //_Returns[_Returns.length] = new Date(_Date)
                //I += 6
            }
        }
        I++;
    }
    //return (_Returns)
}

Agenda.prototype.WeekEnd = function(WeekStart) {
    return new Date(WeekStart.getFullYear(), WeekStart.getMonth(), WeekStart.getDate() + 6);
}

Agenda.prototype.GetPrevious = function() {
    this.SelectedID = -1;
    this.LoadFromUrl = false;
    switch (this.ViewMode) {
        case 1:
            this.GetPreviousMonth();
            break;
        case 2:
            this.GetPreviousWeek();
            break;
        case 3:
            this.GetPreviousDay();
            break;
    }
}

Agenda.prototype.GetNext = function() {
    this.SelectedID = -1;
    this.LoadFromUrl = false;
    switch (this.ViewMode) {
        case 1:
            this.GetNextMonth();
            break;
        case 2:
            this.GetNextWeek();
            break;
        case 3:
            this.GetNextDay();
            break;
    }
}

Agenda.prototype.GetPreviousWeek = function() {
    this.CurrentDate = new Date(this.CurrentDate.getFullYear(), this.CurrentDate.getMonth(), this.CurrentDate.getDate() - 7);
    this.Init();
}

Agenda.prototype.GetNextWeek = function() {
    this.CurrentDate = new Date(this.CurrentDate.getFullYear(), this.CurrentDate.getMonth(), this.CurrentDate.getDate() + 7);
    this.Init();
}

Agenda.prototype.GetPreviousDay = function() {
    this.CurrentDate = new Date(this.CurrentDate.getFullYear(), this.CurrentDate.getMonth(), this.CurrentDate.getDate() - 1);
    this.Init();
}

Agenda.prototype.GetNextDay = function() {
    this.CurrentDate = new Date(this.CurrentDate.getFullYear(), this.CurrentDate.getMonth(), this.CurrentDate.getDate() + 1);
    this.Init();
}


Agenda.prototype.GetNextMonth = function() {
    if (this.CurrentDate.getMonth() == 11) {
        this.CurrentDate.setMonth(0);
        this.CurrentDate.setFullYear(this.CurrentDate.getFullYear() + 1);
    }
    else {
        this.CurrentDate.setMonth(this.CurrentDate.getMonth() + 1);
    }
    this.Init();
}

Agenda.prototype.GetPreviousMonth = function() {
    if (this.CurrentDate.getMonth() == 0) {
        this.CurrentDate.setMonth(11);
        this.CurrentDate.setFullYear(this.CurrentDate.getFullYear() - 1);
    }
    else {
        this.CurrentDate.setMonth(this.CurrentDate.getMonth() - 1);
    }
    this.Init();
}

Agenda.prototype.GetContent = function() {
    var agendaTmp = this;

    if (document.getElementById(this.DivContentID).hasChildNodes()) {
        while (document.getElementById(this.DivContentID).childNodes.length >= 1) {
            document.getElementById(this.DivContentID).removeChild(document.getElementById(this.DivContentID).firstChild);
        }
    }

    document.getElementById(this.DivContentID).setAttribute('style', 'height:100%');
    document.getElementById(this.DivContentID).height = '100%';
    tableContent = document.createElement('table');
    //tableContent.width = '100%'
    tableContent.width = '680px'
    tableContent.style.width = '680px'

    tableContent.cellSpacing = '2px';
    tableContent.className = 'Agenda';

    ajaxStartDay = new Date();
    ajaxEndDay = new Date();

    tbody = document.createElement('tbody');
    tableContent.appendChild(tbody);
    var nowDate = new Date();
    switch (this.ViewMode) {
        case 1:
            tableContent.height = '100%';
            tableContent.setAttribute('style', 'height:100%');
            isHeaderDrawn = false;
            trHeader = document.createElement('tr');
            trHeader.className = "AgendaHeader";
            tbody.appendChild(trHeader);

            startMonthDay = new Date(this.CurrentDate.getFullYear(), this.CurrentDate.getMonth(), 1);

            if (startMonthDay.getDay() == 0)
                startDate = new Date(startMonthDay.getFullYear(), startMonthDay.getMonth(), startMonthDay.getDate() - 6);
            else
                startDate = new Date(startMonthDay.getFullYear(), startMonthDay.getMonth(), 1 - startMonthDay.getDay() + 1);

            trBody = document.createElement('tr');

            startWeek = new Date(startMonthDay.getFullYear(), startMonthDay.getMonth(), 1).getWeek();

            nextMonthFirstDay = new Date(this.CurrentDate.getFullYear(), this.CurrentDate.getMonth() + 1, 1);
            if (nextMonthFirstDay.getDay() == 1)
                nextMonthFirstDay = new Date(nextMonthFirstDay.getFullYear(), nextMonthFirstDay.getMonth(), nextMonthFirstDay.getDate() -1);

            endWeek = nextMonthFirstDay.getWeek();

            nbWeek = 0;

            if (endWeek < startWeek) {
                newDate = new Date(startMonthDay.getFullYear(), startMonthDay.getMonth(), startMonthDay.getDate());
                while (newDate.getMonth() == this.CurrentDate.getMonth()) {
                    nbWeek++;
                    newDate = new Date(newDate.getFullYear(), newDate.getMonth(), newDate.getDate() + 7);
                }
            }
            else {
                nbWeek = endWeek - startWeek + 1;
            }


            endDate = startDate;
            if (nextMonthFirstDay.getMonth() != startMonthDay.getMonth()) {
                endMonthDay = new Date(nextMonthFirstDay.getFullYear(), nextMonthFirstDay.getMonth(), nextMonthFirstDay.getDate() - 1);
            }
            else {
                endMonthDay = new Date(nextMonthFirstDay.getFullYear(), nextMonthFirstDay.getMonth(), nextMonthFirstDay.getDate());
            }
            for (i = 0; i < nbWeek * 7; i++) {

                if (i < 7) {
                    tdHeader = document.createElement('td');
                    //tdHeader.className = "AgendaHeader";
                    tdHeader.appendChild(document.createTextNode(this.dayArray[i]));
                    trHeader.appendChild(tdHeader);
                }
                dateToDraw = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i);

                if (dateToDraw.getDay() == 1) {
                    trBody = document.createElement('tr');
                    //trBody.height = (100 / nbWeek) + "%";
                    //trBody.setAttribute("style", "height:" + (100 / nbWeek) + "%");
                    tbody.appendChild(trBody);
                }
                tdContent = document.createElement('td');
				tdContent.width = '90px';//'14.2%';
				tdContent.style.width = '90px';
                if (dateToDraw.getMonth() == this.CurrentDate.getMonth()) {
                    divHeader = document.createElement('div');
                    divHeader.appendChild(document.createTextNode(dateToDraw.getDate()));
                    tdContent.appendChild(divHeader);
                    tdContent.id = 'td' + dateToDraw.format("yyyymmdd");
                    divHeader.onclick = function(event) { agendaTmp.OnClickDate(event); };
                    divHeader.id = 'div' + dateToDraw.format("yyyymmdd");
                    divHeader.onmouseover = function() { this.style.cursor = 'pointer'; };

                    if (dateToDraw.getFullYear() == nowDate.getFullYear() && dateToDraw.getMonth() == nowDate.getMonth() && dateToDraw.getDate() == nowDate.getDate()) {
                        divHeader.className = 'AgendaHeaderToday';
                        tdContent.className = "AgendaMonthToday";
                    }
                    else {
                        divHeader.className = 'AgendaTDHeader';
                        tdContent.className = "AgendaTDOK";
                    }

                }
                else {
                    divHeader = document.createElement('div');
                    divHeader.className = 'AgendaTDHeaderNone';
					divHeader.width = '90px';
                    divHeader.style.width = '90px';
                    divHeader.appendChild(document.createTextNode('\u00a0'));
                    tdContent.appendChild(divHeader);
                    tdContent.className = "AgendaTDNone";
                }
				
				var divEmptyContent = document.createElement('div');
                divEmptyContent.id = 'divEmpty' + dateToDraw.format("yyyymmdd");
                divEmptyContent.style.width = '90px';
                divEmptyContent.appendChild(document.createTextNode('\u00a0'));
                tdContent.appendChild(divEmptyContent);
				
                trBody.appendChild(tdContent);
            }
            ajaxEndDay = endMonthDay;
            ajaxStartDay = startMonthDay;

            break;
        case 2:
            startDate = this.WeekStart(this.CurrentDate.getFullYear(), this.CurrentDate.getMonth(), 1, this.CurrentDate.getWeek());
            endDate = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + 6);
            for (i = 0; i < 7; i++) {
                var dateToDraw = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i);
                tr = document.createElement('tr');
                //tr.height = "14%";
                tbody.appendChild(tr);

                td = document.createElement('td');
                td.id = 'td' + new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i).format("yyyymmdd");
                //td.appendChild(document.createTextNode(new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i).format("dddd dd mmmm yyyy")));
                divHeader = document.createElement('div');
                divHeader.appendChild(document.createTextNode(new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i).format("dddd d mmmm yyyy")));
                divHeader.onclick = function(event) { agendaTmp.OnClickDate(event); };
                divHeader.id = 'div' + new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i).format("yyyymmdd");
                divHeader.onmouseover = function() { this.style.cursor = 'pointer'; };
                if (dateToDraw.getFullYear() == nowDate.getFullYear() && dateToDraw.getMonth() == nowDate.getMonth() && dateToDraw.getDate() == nowDate.getDate()) {
                    divHeader.className = 'AgendaHeaderToday';
                    td.className = "AgendaWeekToday";
                }
                else {
                    divHeader.className = 'AgendaTDHeader';
                    td.className = "AgendaTDWeek";
                }
                td.appendChild(divHeader);
                tr.appendChild(td);
            }
            ajaxEndDay = endDate;
            ajaxStartDay = startDate;
            break;
        case 3:
            startDate = new Date(this.CurrentDate.getFullYear(), this.CurrentDate.getMonth(), this.CurrentDate.getDate());
            endDate = new Date(this.CurrentDate.getFullYear(), this.CurrentDate.getMonth(), this.CurrentDate.getDate());

            tr = document.createElement('tr');
            //tr.height = "14%";
            tbody.appendChild(tr);

            td = document.createElement('td');
            td.id = 'td' + this.CurrentDate.format("yyyymmdd");
            if (this.CurrentDate.getFullYear() == nowDate.getFullYear() && this.CurrentDate.getMonth() == nowDate.getMonth() && this.CurrentDate.getDate() == nowDate.getDate()) {
                td.className = "AgendaToday";
            }
            else {
                td.className = "AgendaTDDay";
            }
            //td.appendChild(document.createTextNode(new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate() + i).format("dddd dd mmmm yyyy")));

            tr.appendChild(td);
            ajaxEndDay = endDate;
            ajaxStartDay = startDate;
            break;
    }

    document.getElementById(this.DivContentID).appendChild(tableContent);
    GetAgendaData(this, ajaxStartDay, ajaxEndDay);
}

Agenda.prototype.ChangeViewMode = function(e) {
    if (!e) { e = window.event; }
    var elt = undefined;
    if (e && e.srcElement) {
        elt = e.srcElement;
    }
    else {
        elt = e.target;
    }

    if (elt != undefined) {
        if (elt.id != '') {
            var viewMode = parseInt(elt.id.substr(5, elt.id.length - 5));
            this.ViewMode = viewMode;
            this.Init();
        }
    }
}

//ChangeMode = function(divTitleID, divContentID, isWeek, language) {

//    var agenda = new Agenda(divTitleID, divContentID, isWeek, language, true);
//    agenda.SelectedID = -1;
//    agenda.Init();
//}

ChangeToDate = function(divTitleID, divContentID, year, month, day, hour, minutes, language) {
    var agenda = new Agenda(divTitleID, divContentID, 3, language, true);
    agenda.SelectedID = -1;
    agenda.CurrentDate = new Date(year, month, day, hour, minutes, 0);
    agenda.Init();
}

Agenda.prototype.OnClickDate = function(e) {
    if (!e) { e = window.event; }
    var elt = undefined;
    if (e && e.srcElement) {
        elt = e.srcElement;
    }
    else {
        elt = e.target;
    }

    if (elt != undefined) {
        if (elt.id != '') {
            year = elt.id.substr(3, 4);
            month = elt.id.substr(7, 2);
            if (month.indexOf('0') == '0')
                month = month.substr(1, 1);
            day = elt.id.substr(9, 2);
            if (day.indexOf('0') == '0')
                day = day.substr(1, 1);

            ChangeToDate(this.DivTitleID, this.DivContentID, year, parseInt(month) - 1, parseInt(day), 0, 0, this.LanguageCode);
        }
    }
}

Agenda.prototype.OnClickEvent = function(e) {
    var agendaTmp = this;
    if (!e) { e = window.event; }
    var elt = undefined;
    if (e && e.srcElement) {
        elt = e.srcElement;
    }
    else {
        elt = e.target;
    }

    if (elt != undefined) {
        if (elt.id != '') {
            var id = elt.id.substr(6, elt.id.length - 6);

            var agenda = new Agenda(agendaTmp.DivTitleID, agendaTmp.DivContentID, 3, agendaTmp.LanguageCode, true);
            agenda.SelectedID = id;
            agenda.Init();
        }
    }
}

Agenda.prototype.GetEventDate = function() {

    var agendaTmp = this;
    new Ajax.Request(this.AshxDir + 'AgendaDate.ashx',
            {
                method: 'get',
                onSuccess: function(transport) { agendaTmp.OnGetDate(transport); },
                onFailure: function() {
                    alert('2 : Error during ajax request');
                },
                parameters: {
                    'ID': ((agendaTmp.SelectedID != -1 && agendaTmp.ViewMode == 3) ? agendaTmp.SelectedID : ""),
                    'ms': new Date().getTime()
                }
            });
}

Agenda.prototype.OnGetDate = function(transport) {
    if (transport && transport.responseText) {
        year = transport.responseText.substr(0, 4);
        month = transport.responseText.substr(5, 2);
        if (month.indexOf('0') == '0')
            month = month.substr(1, 1);
        day = transport.responseText.substr(8, 2);
        if (day.indexOf('0') == '0')
            day = day.substr(1, 1);

        var date = new Date(parseInt(year), parseInt(month) - 1, parseInt(day), 0, 0, 0, 0);
        this.CurrentDate = date;
        this.Init();
    }
}


GetAgendaData = function(agenda, startDate, endDate) {

    startDate = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate(), 0, 0, 0);
    startDateString = startDate.format("yyyy/mm/dd HH:MM");

    endDate = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), 23, 59, 59);
    endDateString = endDate.format("yyyy/mm/dd HH:MM");

    new Ajax.Request(agenda.AshxDir + 'Agenda.ashx',
            {
                method: 'get',
                onSuccess: function(transport) { agenda.OnGetData(transport); },
                onFailure: function(e) {
                    alert('1 : Error during ajax request');
                },
                parameters: {
                    'StartDate': startDateString,
                    'EndDate': endDateString,
                    'ID': ((agenda.SelectedID != -1 && agenda.ViewMode == 3) ? agenda.SelectedID : ""),
                    'ms': new Date().getTime()
                }
            });
}

Agenda.prototype.OnGetData = function(transport) {
    var agendaTmp = this;
    if (transport && transport.responseXML) {
        if (transport.responseXML.getElementsByTagName("AgendaElements") && transport.responseXML.getElementsByTagName("AgendaElements").length > 0)
            var agendaNode = transport.responseXML.getElementsByTagName("AgendaElements")[0];
        if (agendaNode) {
            nbDays = agendaNode.getElementsByTagName("AgendaDays").length;
            if (nbDays > 0) {
                for (i = 0; i < nbDays; i++) {
                    agendaDaysNode = agendaNode.getElementsByTagName("AgendaDays")[i];
                    var eventYear;
                    var eventMonth;
                    var eventDay;
                    if (agendaDaysNode.attributes.getNamedItem("EventYear")) {
                        eventYear = parseInt(agendaDaysNode.attributes.getNamedItem("EventYear").nodeValue);
                    }
                    if (agendaDaysNode.attributes.getNamedItem("EventMonth")) {
                        eventMonth = parseInt(agendaDaysNode.attributes.getNamedItem("EventMonth").nodeValue) - 1;
                    }
                    if (agendaDaysNode.attributes.getNamedItem("EventDay")) {
                        eventDay = parseInt(agendaDaysNode.attributes.getNamedItem("EventDay").nodeValue);
                    }

                    iNbMaxEvents = this.MaxElementByDays;
                    bMoreEvent = (this.MaxElementByDays < agendaDaysNode.childNodes.length);
                    if (agendaDaysNode.childNodes.length < this.MaxElementByDays || this.ViewMode == 3)
                        iNbMaxEvents = agendaDaysNode.childNodes.length;
                    for (j = 0; j < iNbMaxEvents; j++) {
                        agendaElement = agendaDaysNode.childNodes[j];
                        if (agendaElement) {
                            var elementID;
                            var title1 = undefined;
                            var title2 = undefined;
                            var eventLink = undefined;
                            var eventDate;
                            var eventDuration = 0;
                            var eventDetail = '';
                            var longEventDetail;
                            var imageLink = '';
                            var location = '';

                            if (agendaElement.attributes.getNamedItem("ID")) {
                                elementID = agendaElement.attributes.getNamedItem("ID").nodeValue;
                            }
                            if (agendaElement.attributes.getNamedItem("Title1")) {
                                title1 = agendaElement.attributes.getNamedItem("Title1").nodeValue;
                            }
                            if (agendaElement.attributes.getNamedItem("Title2")) {
                                title2 = agendaElement.attributes.getNamedItem("Title2").nodeValue;
                            }
                            if (agendaElement.attributes.getNamedItem("EventLink")) {
                                eventLink = agendaElement.attributes.getNamedItem("EventLink").nodeValue;
                            }
                            if (agendaElement.attributes.getNamedItem("Duration")) {
                                eventDuration = parseInt(agendaElement.attributes.getNamedItem("Duration").nodeValue);
                            }
                            if (agendaElement.attributes.getNamedItem("EventDetail")) {
                                eventDetail = agendaElement.attributes.getNamedItem("EventDetail").nodeValue;
                            }
                            if (agendaElement.attributes.getNamedItem("LongEventDetail")) {
                                longEventDetail = agendaElement.attributes.getNamedItem("LongEventDetail").nodeValue;
                            }
                            if (agendaElement.attributes.getNamedItem("ImageLink")) {
                                imageLink = agendaElement.attributes.getNamedItem("ImageLink").nodeValue;
                            }
                            if ((eventYear != undefined) && (eventMonth != undefined) && (eventDay != undefined) && agendaElement.attributes.getNamedItem("EventHour") &&
                                     agendaElement.attributes.getNamedItem("EventMinute")) {
                                eventDate = new Date(eventYear,
                                                eventMonth,
                                                eventDay,
                                                agendaElement.attributes.getNamedItem("EventHour").nodeValue,
                                                agendaElement.attributes.getNamedItem("EventMinute").nodeValue, 0
                                        );
                            }
                            if (agendaElement.attributes.getNamedItem("Location")) {
                                location = agendaElement.attributes.getNamedItem("Location").nodeValue;
                            }
                            if (document.getElementById('td' + eventDate.format("yyyymmdd"))) {
                                divAgendaElement = document.createElement('div');
                                divAgendaElement.className = 'AgendaEvent';
								
								
								if (document.getElementById('divEmpty' + eventDate.format("yyyymmdd"))) {
                                    document.getElementById('divEmpty' + eventDate.format("yyyymmdd")).style.display = 'none';
                                }
								
                                switch (this.ViewMode) {
                                    case 1:
                                        divAgendaElement.style.width = '90px';
                                        
                                        realLink = document.createElement('a');
                                        
                                        realLink.id = 'realLink_' + elementID;
                                        realLink.className = 'snap_preview';
                                        realLink.href = this.PageAgenda + '?ID=' + elementID;
                                        realLink.innerHTML = '&nbsp;';
                                        realLink.style.width = '60px';
                                        realLink.style.textDecoration = 'none';
                                        divAgendaElement.appendChild(realLink);
										
                                        //if (eventLink) {
                                        link = document.createElement('a');
                                        link.id = 'event_' + elementID;
                                        link.setAttribute('href', '#');
                                        link.onclick = function(event) { agendaTmp.OnClickEvent(event) };
                                        link.innerHTML = title1;
										link.style.width = '80px'
                                        divAgendaElement.appendChild(link);

                                        
                                        //                                            }
                                        //                                            else {
                                        //                                                divAgendaElement.appendChild(document.createTextNode(title1));
                                        //                                            }
                                        break;
                                    case 2:
                                        endEventDate = new Date(eventDate.getFullYear(), eventDate.getMonth(), eventDate.getDate(), eventDate.getHours(), eventDate.getMinutes(), 0);
                                        var minutes = endEventDate.getMinutes();
                                        minutes += eventDuration;
                                        endEventDate.setMinutes(minutes);

                                        linkTitle = document.createElement('a');
                                        linkTitle.id = 'event_' + elementID;
                                        linkTitle.setAttribute('href', '#');
                                        linkTitle.onclick = function(event) { agendaTmp.OnClickEvent(event) };
                                        linkTitle.innerHTML = this.startHour + " " + eventDate.format("HH:MM") + " " + this.endHour + " " + endEventDate.format("HH:MM") + " : " + title1 + (title2 ? ", " + title2 + " " : "");
                                        divAgendaElement.appendChild(linkTitle);

                                        if (eventLink) {
                                            link = document.createElement('a');
                                            link.setAttribute('href', eventLink);
                                            link.setAttribute('target', '_blank');
                                            link.appendChild(document.createTextNode("[En savoir plus]"));
                                            divAgendaElement.appendChild(link);
                                        }

                                        addToCalendar = document.createElement('a');
                                        addToCalendar.setAttribute('href', this.AshxDir + 'AddToCalendar.ashx?event=' + elementID);
                                        addToCalendar.setAttribute('title', 'Ajouter &agrave; votre calendrier');
                                        img = document.createElement('img');
                                        img.src = this.RootUrl + '/image/vcalendar.png';
                                        img.style.borderStyle = 'none';
                                        addToCalendar.appendChild(img);
                                        divAgendaElement.appendChild(addToCalendar);
                                        break;
                                    case 3:
                                        endEventDate = new Date(eventDate.getFullYear(), eventDate.getMonth(), eventDate.getDate(), eventDate.getHours(), eventDate.getMinutes(), 0);
                                        var minutes = endEventDate.getMinutes();
                                        minutes += eventDuration;
                                        endEventDate.setMinutes(minutes);

                                        divTitle = document.createElement('div');
                                        divTitle.className = 'AgendaTDHeader';
                                        //divTitle.appendChild(document.createTextNode(this.startHour + " " + eventDate.format("HH:MM") + " " + this.endHour + " " + endEventDate.format("HH:MM")));
										divTitle.innerHTML = this.startHour + " " + eventDate.format("HH:MM") + " " + this.endHour + " " + endEventDate.format("HH:MM");
                                        addToCalendar = document.createElement('a');
                                        addToCalendar.setAttribute('href', this.AshxDir + 'AddToCalendar.ashx?event=' + elementID);
                                        addToCalendar.setAttribute('title', 'Ajouter &agrave; votre calendrier');
                                        img = document.createElement('img');
                                        img.src = this.RootUrl + '/image/vcalendar.png';
                                        img.style.borderStyle = 'none';
                                        addToCalendar.appendChild(img);
                                        //addToCalendar.appendChild(document.createTextNode("Ajouter ŕ mon calendrier"));
                                        addToCalendar.innerHTML = "Ajouter &agrave; mon calendrier";
                                        divTitle.appendChild(addToCalendar);

                                        divAgendaElement.appendChild(divTitle);

                                        divTitleAuthor = document.createElement('div');

                                        divTitleAuthorText = document.createElement('div');
                                        divTitleAuthorText.innerHTML = title1 + (title2 ? ", " + title2 : "");
                                        divTitleAuthor.appendChild(divTitleAuthorText);


                                        divAgendaElement.appendChild(divTitleAuthor);

                                        divContent = document.createElement('div');
                                        divContent.className = 'EventDetail';
                                        if (longEventDetail) {
                                            divText = document.createElement('div');
                                            divContent.appendChild(divText);
                                            divText.innerHTML = longEventDetail;
                                        }

                                        if (imageLink) {
                                            var divImage = document.createElement('div');
                                            divImage.className = "ImageEventDiv";
                                            divContent.appendChild(divImage);
                                            img = document.createElement('img');
                                            img.className = 'ImageEventDetail';
                                            img.src = imageLink;
                                            img.style.borderStyle = 'none';
                                            divImage.appendChild(img);
                                        }
                                        if (location) {
                                            var divLocation = document.createElement('div');
                                            divLocation.className = "LocationEventDiv";
                                            var spanLocation = document.createElement('span');
                                            spanLocation.appendChild(document.createTextNode('Lieu : '));
                                            divLocation.appendChild(spanLocation);
                                            divLocation.innerHTML = location;
                                            divContent.appendChild(divLocation);
                                        }

                                        if (eventLink) {
                                            var divLink = document.createElement('div');
                                            divLink.className = "LinkEventDiv";
                                            var link = document.createElement('a');
                                            divLink.appendChild(link);
                                            link.setAttribute('href', eventLink);
                                            link.setAttribute('target', '_blank');
                                            link.appendChild(document.createTextNode("[En savoir plus]"));
                                            divContent.appendChild(divLink);
                                        }



                                        var title = title1 + " " + this.startHour + " " + eventDate.format("HH:MM") + " " + this.endHour + " " + endEventDate.format("HH:MM");
                                        var url = this.PageAgenda + '?ID=' + elementID;

                                        divAgendaElement.appendChild(divContent);

                                        var agendaTmp = this;
                                        break;
                                }

                                document.getElementById('td' + eventDate.format("yyyymmdd")).appendChild(divAgendaElement);
                            }
                        }
                        if (bMoreEvent && (eventDate != undefined) && (j == iNbMaxEvents - 1) && this.ViewMode != 3) {

                            tmpDivTitle = this.DivTitleID;
                            tmpDivContent = this.DivContentID;
                            tmpLanguageCode = this.LanguageCode;

                            link = '<a href="#" onclick="javascript:ChangeToDate(\'' + tmpDivTitle + '\',\'' + tmpDivContent + '\',' + eventDate.getFullYear() + ',' + eventDate.getMonth() + ',' + eventDate.getDate() + ',' + eventDate.getHours() + ',' + eventDate.getMinutes() + ',\'' + tmpLanguageCode + '\');">';
                            link = link + this.MoreEvents + '</a>';
                            document.getElementById('td' + eventDate.format("yyyymmdd")).innerHTML = document.getElementById('td' + eventDate.format("yyyymmdd")).innerHTML + link;
                        }
                    }
                }
            }
			if (this.ViewMode == 1) {
				addSnap();
			}
        }
    }
}
