$(document).ready(function(){
        //ajax indicator
        
        $('#events_calendar').ajaxStart(function(){
                $("#dateEvents").html("<p>"+l10n_loadingInfo+"&nbsp;<img src='/img/ajax_loader.gif' /></p>");
        });
        
        //events array for beforeShowDay
        var events = Array();
        //array for dates that contain events
        var eventDates = Array();
        
        //function for beforeShowDay, checks if a day belongs to event
        
        function eventDays(date) {
                for (i = 0; i < events.length; i++) {
                        if(Date.parse(date)<=Date.parse(Date.parseString(events[i][1])) && Date.parse(date)>=Date.parse(Date.parseString(events[i][0]))) {
                                eventDates.push(date.format('y-MM-dd'));
                                return [true, 'event_day']; 
                        }
                }
                return [true, ''];
        };
        
        //parse events xml
        
        var parseMonthEvents = function(responseText) {
                events.length = 0;
                //loop through events
                $(responseText).find("event").each(function() {
                                var id = $("id",this).text();
                                var event = new Array($("start",this).text(), $("end",this).text());
                                events.push(event);
                        });
                eventDates.length = 0;
                $.datepicker.reconfigureFor('#events_calendar', {beforeShowDay: eventDays});
                
        };
        
        //get xml with events from server
        var getMonthEvents = function(month, year) {
                //this clears previous events
                events.length = 0;
                
                $.get("events/getMonthEvents/"+month+"/"+year,
                        function(data){
                              parseMonthEvents(data);
                              $("#dateEvents").html("<p>"+l10n_chooseADate+"</p>");
                          });
        };

        //create calendar
        $('#events_calendar').datepicker({
                changeFirstDay: false, 
                changeMonth: false,
                changeYear: false,
                onSelect: function(selDate, inst, td) {
                        //check if the date contains events
                        loadEvents = false;
                        for (i = 0; i < eventDates.length; i++) {
                                if(eventDates[i] == selDate) {
                                        loadEvents = true;
                                        break;
                                }
                        }
                        if(loadEvents) {
                                $("#dateEvents").load("events/getDateEvents/", {date: selDate}, function() {
                                        
                                        });
                        }
                },
                beforeShowDay: eventDays
        });

        //fill calendar with current month's events
        today = new Date;
        getMonthEvents(today.getMonth()+1,today.getFullYear());
        
        //add custom handlers for links
        $('.datepicker_links a') 
                .livequery('mousedown', function(event) {
                        
                        var selYear = $.datepicker._inst[0]._selectedYear;
                        
                        if($(this).parent().is(".datepicker_current")) {
                                var today = new Date();
                                var selMonth = today.getMonth()+1;
                                selYear = today.getFullYear();
                        } else if($(this).parent().is(".datepicker_prev")) {
                                var selMonth = $.datepicker._inst[0]._selectedMonth;
                        } else if($(this).parent().is(".datepicker_next")) {
                                var selMonth = $.datepicker._inst[0]._selectedMonth+2;
                        }
                        
                        getMonthEvents(selMonth, selYear);
                });
});

