$(function(){
    $("#calendar-container").data("globalEvents", new Array());
    
    var dp = $("#calendar-container").datepicker({
        onChangeMonthYear: function(year, month, inst) { 
            getEvents(year, month, inst);
        },
        beforeShowDay: function(date){
            var date = combineDate(dateArray(date));
            var event = $("#calendar-container").data("globalEvents")[date];
            if(event){
                return new Array(true, "event" + event["eventID"] + " event", event["name"]);
            } else {
                return new Array(false, "", "");
            }
        },
        onSelect: function(dateText, inst) {
            update = dateText.split("/");
            
            var event = $("#calendar-container").data("globalEvents")[update[2] + "-" + update[0] + "-" + update[1]];
            if(event){
                window.location = "/What-s-On?eventID=" + event["eventID"];
            }

        }
    });
    function getEvents(year, month, inst) {
        $.ajax({
            url: "/ajax/event/month/",
            data: {'year': year, 'month': month},
            success: function(result){
                var events = new Array();
                for (var i = 0; i < result.length; i++) {
                    var event = result[i];
                    var start = event["start"].split(" ")[0];
                    events[start] = event;
                }
                $("#calendar-container").data("globalEvents", events);
                $("#calendar-container").datepicker("refresh");
            }
        });
    }    
    
    var calendarDate = new Date();
    getEvents(calendarDate.getFullYear(), calendarDate.getMonth() + 1, dp);
});

function combineDate(dateArray) {
    var month = dateArray[1];
    if (month < 10) {
        month = "0" + month;
    }
    var day = dateArray[2];
    if (day < 10) {
        day = "0" + day;
    }
    return dateArray[0] + "-" + month + "-" + day;
}

function dateArray(date) {
    var newdate = new Array(date.getFullYear(), date.getMonth() + 1, date.getDate());
    return newdate;
}
