var capp = {

	'auth' : {

		'login' : function() {
			var form = $('login');
			var response = hex_hmac_md5( hex_md5( $F(form.password) ), $F(form.challenge) );
			var update = this.update;
			var updaters = this.updaters;
			new Ajax.Updater(
				'login_container',
				'/user/login/',
				{
					evalScripts: true,
					parameters: {
						name: form.name.value,
						response: response
					},
					onComplete: function( transport ) { update( updaters ) }
				}
			);
			return false;
		},
	
		'logout' : function() {
			var update = this.update;
			var updaters = this.updaters;
			new Ajax.Updater(
				'login_container',
				'/user/logout',
				{
					evalScripts: true,
					onComplete: function( transport ) { update( updaters ) }
				}
			);
		},
		
		'updaters' : Array( { 'container' : 'navmenu_container', 'url' : '/index/navmenu' } ),
		
		'register_updater' : function( container, url ) {
			this.updaters.push( { 'container' : container, 'url' : url } );
		},
		
		'update' : function( updaters ) {
			if ( updaters != undefined ) {
				for ( var i = 0; i < updaters.length; i++ ) {
					new Ajax.Updater( updaters[i].container, updaters[i].url );
				}
			}
		}
	
	},
	
	user: {
	
		invite: function( user_id ) {
			new Ajax.Request('/user/invite/id/' + user_id);
		}
	
	},
	
	'add_note' : function( form ) {
		new Ajax.Updater(
			'notes',
			'/show/addNote',
			{
				parameters: {
					show_id: $F(form.show_id),
					body: $F(form.body)
				}
			}
		);
	},

	'add_forum' : function( form ) {
		new Ajax.Updater(
			'forums',
			'/forum/addForum',
			{
				parameters: {
					name: $F( form.name ),
					description: $F( form.description )
				}
			}
		);
	}
}
