/**
 * User: Conception Imagix
 * Date: 2011-02-01
 * Time: 09:08:18
 */
(function($) {

    // Fonction de calcul du nombre de jours dans le mois en cours
    function daysInMonth(iMonth, iYear) {
        return 32 - new Date(iYear, iMonth, 32).getDate();
    }

    $.fn.imagixcal = function(options) {

        var defaultDate = new Date();

        var defaults = {
            cLanguage: 'fr',
            cMonth: defaultDate.getMonth(),
            cYear: defaultDate.getFullYear(),
			cPosition: [0, 0],
            cMonths_name: { fr: {   0: 'Janvier',
                                    1: 'Février',
                                    2: 'Mars',
                                    3: 'Avril',
                                    4: 'Mai',
                                    5: 'Juin',
                                    6: 'Juillet',
                                    7: 'Août',
                                    8: 'Septembre',
                                    9: 'Octobre',
                                    10: 'Novembre',
                                    11: 'Décembre'},
                            en: {   0: 'January',
                                    1: 'February',
                                    2: 'March',
                                    3: 'April',
                                    4: 'May',
                                    5: 'June',
                                    6: 'July',
                                    7: 'August',
                                    8: 'September',
                                    9: 'October',
                                    10: 'November',
                                    11: 'December'}
            },
            cDays_name: {   fr: {   0: 'DI',
                                    1: 'LU',
                                    2: 'MA',
                                    3: 'ME',
                                    4: 'JE',
                                    5: 'VE',
                                    6: 'SA'},
                            en: {   0: 'SU',
                                    1: 'MO',
                                    2: 'TU',
                                    3: 'WE',
                                    4: 'TH',
                                    5: 'FR',
                                    6: 'SA'}
            }

        };

        var options = $.extend(defaults, options);

        // Calcul de la date en option
        var current_date = new Date();
        current_date.setDate(1);
        current_date.setMonth(options.cMonth);
        current_date.setFullYear(options.cYear);

        return this.each(function() {
            var obj = $(this);

            // Création du tableau (calendar-days)
            var nbr_day_in_month = daysInMonth(options.cMonth, options.cYear);
            var first_day_position = current_date.getDay();
            var calendar_html = '<tr>';
            var counter = 0;

            for(var i = 0; i < first_day_position; i++) {
                calendar_html = calendar_html+'<td>&nbsp;</td>';
                counter++;
            }

            var day = 1;
            for(var i = first_day_position; i < nbr_day_in_month+first_day_position; i++) {
                calendar_html = calendar_html+'<td>'+day+'</td>';
                day++;
                counter++;
                if(counter % 7 == 0 && counter != 0) {
                    calendar_html = calendar_html+'</tr>';
                    if(i != (nbr_day_in_month -1)) {
                        calendar_html = calendar_html+'<tr>';
                    }
                }
            }

            // On complète le tableau
            var reste = 7 - (counter % 7);
			if((7 - reste) > 0) {
				for(var i = 0; i < reste; i++) {
					 calendar_html =  calendar_html+'<td>&nbsp;</td>';
				}
				 calendar_html =  calendar_html+'</tr>';
			}

            // Insertion du tableau dans le conteneur
            $('#calendar-days table').html(calendar_html);

            //Affichage du mois et de l'année
            $('#calendar-month').html(options.cMonths_name[options.cLanguage][options.cMonth]+' '+options.cYear);

            //Affichage des titres des jours selon la langue
            var title = '';
            for(var i in options.cDays_name[options.cLanguage]) {
                title = title+'<td>'+options.cDays_name[options.cLanguage][i]+'</td>';
            }
            $('#calendar-week table tr').html(title);

            //Calcul des liens du calendrier // Flush event déjà établies
            $('#calendar-prev, #calendar-next').unbind();

            // Lien mois précédant
            $('#calendar-prev').click(function() {
                var back_date = current_date;
                back_date.setMonth(back_date.getMonth()-1);
                obj.imagixcal({cMonth: back_date.getMonth(), cYear: back_date.getFullYear(), cLanguage: options.cLanguage, cPosition: options.cPosition});
                return false;
            });

            // Lien mois suivant
            $('#calendar-next').click(function() {
                var next_date = current_date;
                next_date.setMonth(next_date.getMonth()+1);
                obj.imagixcal({cMonth: next_date.getMonth(), cYear: next_date.getFullYear(), cLanguage: options.cLanguage, cPosition: options.cPosition});
                return false;
            });

            //Lien pour infos supplémentaires
            $('.calendar-event, .calendar-event-1, .calendar-event-2, .calendar-event-3').unbind();
            $('.calendar-event, .calendar-event-1, .calendar-event-2, .calendar-event-3').click(function() {
                alert($(this).html());
            }) ;


            $.ajax({
                url: 'calendar/calendar.ajax.php',
                type: 'POST',
                data: {cLanguage: options.cLanguage, cMonth: options.cMonth, cYear: options.cYear},
                success: function(msg) {
                    var activities = eval(msg);
                    if (activities.length > 0) {
                        $('#calendar-days td').each(function() {
                            // $(this).unbind();
                            for (var i in activities) {
                                if ($(this).html() == activities[i][0]) {
                                    $(this).addClass('calendar-event-' + activities[i][4]);
                                    $(this).simpletip({
                                        fixed: true,
                                        //position: [-230, 70],
                                        position: options.cPosition,
                                        content: '<strong>'+activities[i][2]+'</strong><br/><span class="gold">'+$(this).html()+' '+options.cMonths_name[options.cLanguage][options.cMonth]+' '+options.cYear+'</span><br />'+activities[i][3]
                                    });
                                }
                            }
                        });
                    }
                }
            });
        });
    };
})(jQuery);

