calendarChange = false;

$(function() {
    var todayDate = new Date();     
    
    $("#datepicker").datepicker({
		nextText: unescape('N%E4chster Monat'),
		prevText: 'Vorheriger Monat',
		dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
		monthNames: ['Januar', 'Februar', unescape('M%E4rz'), 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
		firstDay: 1,
        beforeShowDay: function (date){ 
            var events = calendarEvents.getEvents();

            //Each day in array
			if(events) {
	            for(i = 0; i < events.length; i++) {
	               if(date.getMonth()    == (events[i][0] - 1)
	               && date.getDate()     ==  events[i][1]
	               && date.getFullYear() ==  events[i][2]) {
	                 return[true, "ui-state-active day" + date.getDate(), "Termine vorhanden"]; 
	               }
	            }
			}
           
            //Today
            if(date.getMonth()    == todayDate.getMonth()
            && date.getDate()     == todayDate.getDate()
            && date.getFullYear() == todayDate.getFullYear()) {
              return[false, "ui-state-highlight day" + date.getDate(), "Keine Termine vorhanden; Heutige Tag"]; 
            }else{
              return[false, "day" + date.getDate(), "Keine Termine vorhanden"];
            }
        },
        onChangeMonthYear: function(year, month, inst) {
            if(calendarChange == true) {
                $.ajax({
                    type: "POST",
                    url: "/sportid/calendar/ajax/true/month/" + month + "/year/" + year + "/groupid/" + groupNid,
                    beforeSend: function(XMLHttpRequest){
                        $("#datepicker").datepicker('disable');                                            
                        $("#calendarStatus").html('<b>Termine werden geladen</b>');                                            
                    },
                    complete: function(msg){
                        $("#datepicker").datepicker('enable');
                        $("#calendarStatus").html('');
                    },
                    success: function(events){
                        if(events) {
                            //Convert date string to array/object
                            eventsObject = eval(events);
                            calendarEvents.setEvents(eventsObject);
                            
                            //Set new date                   
                            var newDate = new Date();
                            newDate.setMonth((month - 1));
                            newDate.setYear(year);
                            $("#datepicker").datepicker('setDate', newDate);  
                        }                                             
                    }
                });
            }
            
            calendarChange = true;
        },
        onSelect: function(dateText, inst) {
            var selectedDate     = dateText.split("/");
            var selectedDay      = selectedDate[1];
            var selectedDayInt   = eval(selectedDay);  //Convert day string to int
            var selectedMonth    = selectedDate[0];
            var selectedMonthInt = eval(selectedMonth);
            var selectedYear     = selectedDate[2];

            if($(".day" + selectedDayInt).hasClass("ui-state-active")) { 
                $("#eventsDialog").html('Termindaten werden geladen...');
            
                //Open dialog box
                $("#eventsDialog").dialog({
                    title: 'Termine vom ' + selectedDay + '.' + selectedMonth + '.' + selectedYear,
                    width: 600,
                    height: 500,
                    modal: true,
                    close: function(event, ui) {
                        $("#eventsDialog").dialog('destroy');
                    }
                });
                
                //Load the calendar events
                $.ajax({
                    type: "POST",
                    url: "/sportid/calendarEvents/month/" + selectedMonthInt + "/selectedYear/" + selectedYear + "/day/" + selectedDayInt + "/groupid/" + groupNid,
                    success: function(eventsOutput){
                        if(eventsOutput) {
                            $("#eventsDialog").html(eventsOutput);
                        }                                             
                    }
                });                    
            }else{
                alert('Fuer diesen Tag sind keine Termine vorhanden.')
            }  
        }
    });
});