var error_dialog_rendered = false;
function showErrorsDialog( title, errors ) {
	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],
			show: "puff", /* puff, scale */
			hide: "scale", /* blind, explode, scale */
			title: title
		} );
		error_dialog_rendered = true;
	}
}

function makeAjaxForm( form, before_submit ) {
	var ajax_form = $( form ).ajaxForm( {
		dataType: "json",
		beforeSubmit: function( data ) {
			$( "input[type=image],input[type=submit]", ajax_form ).attr( "disabled", "disabled" );
			if( before_submit ) { before_submit( data ); }
		},
		success: function( data ) {
			if( data.errors ) {
				showErrorsDialog( ajax_form.attr( "title" ) + " Error", data.errors );
			} else if( data == "refresh" ) {
				document.location.href = document.location.href;
			} else {
				document.location.href = data;
			}
		},
		complete: function( XMLHttpRequest, textStatus ) {
			//alert( XMLHttpRequest.responseText );
			$( "input[type=image],input[type=submit]", ajax_form ).removeAttr( "disabled" );
		}
	} );
}

$( function() {
	// Handle login inputs
	var username = $.cookie( "username" );
	var password_trigger = $.cookie( "password_trigger" );
	var password = $.cookie( "password" );
			
	var username_cleared = ( username && !password ) ? true : false;
	var password_inserted = false;
	var password_cleared = false;
	if( username_cleared ) { $( ".username" ).val( username ); }
	$( ".username" ).focus( function() {
		if( !username_cleared ) { $( this ).val( "" ); username_cleared = true; }
	} ).blur( function() {
		if( !$( this ).val() ) { $( this ).val( "USERNAME" ); username_cleared = false; }
	} ).keyup( function() {
		if( password && $( this ).val() == password_trigger ) {
			$( ".password", $( this ).parent() ).val( password );
			if( !password_cleared ) { $( ".password-placeholder", $( this ).parent() ).hide(); $( ".password", $( this ).parent() ).show(); password_cleared = true; }
			password_inserted = true;
		} else if( password_inserted ) {
			$( ".password", $( this ).parent() ).val( "" ).hide();
			$( ".password-placeholder", $( this ).parent() ).show();
			password_cleared = false;
			password_inserted = false;
		}
	} );
	
	
	$( ".password-placeholder" ).focus( function() {
		if( !password_cleared ) { $( this ).hide(); $( ".password", $( this ).parent() ).show().focus(); password_cleared = true; }
	} )
	
	$( ".password" ).blur( function() {
		if( !$( this ).val() ) { $( this ).hide(); $( ".password-placeholder", $( this ).parent() ).show(); password_cleared = false; }
	} );
	
	// Handle mouse events for any button
	$( "input[type=image][src$=-button.gif],input[type=image][src$=-button.png]" ).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; } );
	} );
	
	$( "button" ).each( function() {
		$( this )
		.mouseover( function() { this.className = 'over'; } )
		.mousedown( function() { this.className = 'down'; } )
		.mouseup( function() { this.className = ''; } )
		.mouseout( function() { this.className = ''; } );
	} );
	
	// Make login form ajax
	makeAjaxForm( ".login-form", function( data ) {
		if( !username_cleared ) { data[0].value = ""; }
	} );
	
	// Display message if defined
	$( "#page-message" ).slideToggle( "slow", function() { setTimeout( function() { $( "#page-message" ).slideToggle( "slow" ); }, 6000 ); } );
} );