var error_dialog_rendered = false;
function showErrorsDialog( title, errors, after_error ) {
	var html = "";
	for( var i = 0; i < errors.length; i++ ) { html += "<li>" + errors[i] + "</li>"; }
	$( "#error-dialog" ).html( "<ul>" + html + "</ul>" );
	if( error_dialog_rendered ) {
		$( "#error-dialog" ).dialog( "open" );
	} else {
		$( "#error-dialog" ).dialog( {
			modal: true,
			draggable: false,
			resizable: false,
			position: ["center", 140],
			close: after_error,
			show: "puff", /* puff, scale */
			hide: "scale", /* blind, explode, scale */
			title: title
		} );
		error_dialog_rendered = true;
	}
}

function makeAjaxForm( form, title, before_submit, after_error, on_success ) {
	var ajax_form = $( form ).ajaxForm( {
		dataType: "json",
		beforeSubmit: function() {
			$( "input[type=image], input[type=submit]", ajax_form ).attr( "disabled", "disabled" );
			if( before_submit ) { before_submit(); }
		},
		success: function( data ) {
			if( data.errors ) {
				showErrorsDialog( title + " Error", data.errors, function() {
					$( "input[type=image], input[type=submit]", ajax_form ).removeAttr( "disabled" );
					if( after_error ) { after_error(); }
				} );
			} else if( on_success ) {
				on_success();
			} else {
				document.location.href = data;
			}
		}
	} );
}

$( function() {
	// Handle mouse events for any button
	$( "input[type=image][src$=-button.gif]" ).each( function() {
		var src = $( this ).attr( "src" );
		var dot = src.lastIndexOf( "." );
		var button_over = new Image();
		var before_dot = src.substr( 0, dot );
		var after_dot = src.substr( dot );
		button_over.src = before_dot + "-over" + after_dot;
		var button_down = new Image();
		button_down.src = before_dot + "-down" + after_dot;
		$( this )
		.mouseover( function() { this.src = button_over.src; } )
		.mousedown( function() { this.src = button_down.src; } )
		.mouseup( function() { this.src = button_over.src; } )
		.mouseout( function() { this.src = src; } );
		$( "form" )
		.submit( function() { $( "input[type=image][src$=-button.gif]", this ).mousedown(); } );
	} );
	
	// Display message if defined
	$( "#message" ).toggle( "slide", { easing: "easeOutQuint", direction: "down" }, 1000 );
	setTimeout( function() { $( "#message" ).toggle( "slide", { easing: "easeOutQuint", direction: "down" }, 1000 ); }, 6000 );
} );
