zzActivities = {
    events:[],
    selectedDate:[],
    
    init:function ( selectedDate ) {
        if ( !selectedDate ) {
            selectedDate = new Date();
        }
        zzActivities.selectedDate = selectedDate;
    },
    
    loadCalendar:function ( targetElementId ) {
        Calendar.setup ( {
            flat            : targetElementId,
            flatCallback    : zzActivities.dateChanged,
            firstDay        : 1,
            weekNumbers     : false,
            dateStatusFunc  : zzActivities.dateStatus
        } );
    },
    
    reduce:function ( date ) {
        return new Date(date.getYear(), date.getMonth(), date.getDate());
    },
    
    dateCompare:function ( date1, date2 ) {
        return
            zzActivities.reduce(date1) == zzActivities(date2); 
             
    },
    
    isSelectedDate:function (date) {
        return zzActivities.dateCompare ( zzActivities.selectedDate, date ); 
    },

    addEvent:function ( start, end ) {
        zzActivities.events.push({
            start:start,
            end:end
        });
    },
    
    
    dateChanged:function ( calendar ) {
        if ( calendar.dateClicked && zzActivities.hasEvent(calendar.date) ) {
            alert('w00t');
        } 
    },
    
    
    getEvents:function ( date ) {
        var found = [];
        $A(zzActivities.events).each ( function ( event ) {
            if ( event.start <= date && event.end >= date ) {
                alert('Found! ' + event);
                found.push ( event );
            }
        } );
        return found;
    },
    
    
    hasEvent:function ( date ) {
        return zzActivities.getEvents(date).length > 0;
    },
    
    
    dateStatus:function ( date ) {
        if ( zzActivities.isSelectedDate ( date ) ) { 
            return 'selected';
        } else if ( zzActivities.getEvents(date).length == 0 ) {
            return 'disabled';
        } else {
            return 'active';
        }
    }
}