function update_attendance (response) {
    // Update conts and toggle columns
    var counts = response.get('counts');
    if (counts) {
        counts.each(function(count, decision) {
            var count_span = $('att' + decision + 'size');
            if (count_span) {
                var parent = count_span.up('div.attendees');
                count_span.update(count);
                switch('att' + decision) {
                case LFM.Page.attMAYBE:
                    count ? $('noMaybeMessage').hide() : $('noMaybeMessage').show();
                    break;
                case LFM.Page.attYES:
                    count ? $('noYesMessage').hide() : $('noYesMessage').show();
                    break;
                }
            }
        });
    }
    // Move the attendee to the new column
    var attendee = response.getResourceElement();
    var decision_string = 'att' + response.get('decision');
    var list = $(decision_string + 'List');
    if (attendee && list) {
        new Effect.Fade(attendee, {
            duration: 0.3,
            afterFinish: function (fade) {
                list.insert({ top: fade.element.remove() });
                fade.element.show();
                if (decision_string != LFM.Page.attNO) {
                    LFM.Page.switchAttendanceTabs($$('#attendanceTabs li.' + decision_string).reduce());
                }
                new Effect.Highlight(fade.element, { endcolor: '#e8f1f8' });
            }
        });
    }
}

LFM.set("Page", {
    switchAttendanceTabs: function (li) {
        $$('#attendanceTabs li').invoke('removeClassName', 'current');
        li.addClassName('current');
        if (li.hasClassName(LFM.Page.attYES)) {
            $(LFM.Page.attMAYBE).hide();
            $(LFM.Page.attYES).show();
        }
        if (li.hasClassName(LFM.Page.attMAYBE)) {
            $(LFM.Page.attYES).hide();
            $(LFM.Page.attMAYBE).show();
        }
    }
});

document.observe('dom:loaded', function (e) {
    // Attendance tags
    $('attendanceTabs').observe('click', function (e) {
        e.stop();
        var li = e.findElement('li');
        if (li.match('li')) {
            LFM.Page.switchAttendanceTabs(li);
        }
    });
    
    // Poster toggling
    $('poster').observe('click', function (e) {
        if (e.element().hasClassName('posterToggle') || e.findElement('.posterToggle')) {
            e.stop();
            $('smallPoster').setStyle({
                'visibility': ($('smallPoster').style.visibility == 'hidden') ? '' : 'hidden'
            });
            $('largePoster').toggle();
        }
    });
    
    // Poster uploads
    $('uploadPoster').observe('click', function (e) {
        e.stop();
        new LFM.ImageUpload(LFM.ParentResource, {
            action: LFM.ParentResource.url + '/setposter',
            onDone: function (response) {
                var resource = response.getResource();
                $A(['large', 'mega']).each(function (image_size) {
                    var image_id = 'poster-' + image_size;
                    image_id = image_id.camelize();
                    if ($(image_id).match('img')) {
                        $(image_id).src = resource.image[image_size];
                    } else {
                        $(image_id).replace(new Element('img', {
                            'id': image_id,
                            'class': 'posterToggle',
                            'src': resource.image[image_size]
                        }));
                    }
                });
            }
        });
    });
    
    // Video uploads
    if ($('uploadVideo')) {
        $('uploadVideo').observe('submit', function(e) {
            e.stop();
            new LFM.VideoUpload(LFM.ParentResource, {
                action: $('uploadVideo').action
            });
        });
    }
    
    // Attendance setting
    if (LFM.Session.loggedIn && $('attend')) {
        var status = new LFM.Ajax.StatusHolder('areYou', { position: 'before' });
        $('attendanceConfirm').observe('click', function (e) {
            e.stop();
            status.busy();
            if ($F('attendanceChoices') == 0) {
                LFM.Omniture.trackEvents('EventAttendance');
            }
            $('attend').writeAttribute('action', '/ajax/attendevent');
            $('attend').request({
                parameters: LFM.ParentResource,
                onSuccess: function (transport) {
                    var response = new LFM.Ajax.Response(transport);
                    if (response.isError()) {
                        status.failure();
                    } else {
                        update_attendance(response);
                        status.idle();
                    }
                }
            });
        });
    }
    
    // Auto select flickr machine tag
    $('photos').observe('click', function (e) {
        if (e.element().hasClassName('select')) {
            e.stop();
            $('machineTag').focus();
            $('machineTag').select();
        }
    });
    
    // Wiki toggle
    if ($('description') && $$('toggleDesc').size()) {
        $('description').observe('click', function (e) {
            if (e.element().match('.toggleDesc')) {
                e.stop();
                $('extractDesc').toggle();
                $('fullDesc').toggle();
            }
        });
    }
    
    // Flagging
    $('flagEvent').observe('click', function (e) {
        e.stop();
        LFM.Flag(LFM.ParentResource);
    });
});
