// Account update validation.
var email = false, givenname = false, password = false, password_confirm = false;
var submitOK = false;
$(document).ready(function () {
	$('#update').submit(function() {
		$('#message').empty();
		$('input.updatecheck').each( function() {
			var name = $(this).attr('id');
			var $vSpan = $('#v'+name);
			var len = $(this).val().length;
			window[name] = ( len > 0 );
			//alert( 'checking '+$(this).attr('name')+', status = '+window[name] );
			$vSpan.empty();
			if( len <= 0 )
				$vSpan.append('Cannot be empty');
		});
		if( $('#which').val() == 'settings' || ( email && givenname && password && password_confirm ) ) {
			var dataString;
			if( $('#which').val() == 'settings' ) {
				var settings ='';
				var settingsArray = new Array( 'Comments', 'Replies', 'Rates', 'Incategory', 'Updates', 'Offers' );
				for( i = 0; i < 6; ++i )
					settings = settings + ( $('#'+settingsArray[i]).attr('checked') ? '1' : '0' );
				dataString = "&Settings="+settings;
			} else
				dataString = "&Name="+$('#givenname').val()+"&Email="+$('#email').val()+"&Password="+$('#password').val();
			//alert('dataString = '+dataString );
			$.ajax({	// Can't use .post because we need asynch: false; i.e., synochronous results
				type: "POST",
				url: updateserver,
				data: "id=updatemember&member_id="+$('#member_id').val()+dataString,
				dataType: "json",
				async: false,
				success: function( resp ) {
					$('#message').empty().append(resp.message);
					if( resp.status == 'OK' ) {
						$('#message').removeClass('red').addClass('green');
					} else
						$('#message').removeClass('green').addClass('red');
				}
			 });
		}
		//alert( 'Returning '+submitOK );
		return false;
	});

	// When all input fields contain valid data, the Submit image can be changed and the input can be enabled.
	$('input.regcheck').not('input.password').blur(function() {
		var $vSpan = $('#v'+$(this).attr('name'));
		var name = $(this).attr('name');
		if( this.value != '' ) {
			if( this.value != this.lastValue ) {
				$vSpan.removeClass('red').removeClass('green').addClass('checking');
				$vSpan.removeClass('error').html('<img src="'+public_path+'/images/ajax-loader.gif" height="16" width="16" style="padding-left: 5px; vertical-align:middle;" /> checking...');
				$.post( loginserver, { field: $(this).attr('name'), value: this.value },
					function( resp ) {
						window[name] = resp.ok;
						$vSpan.empty();
						$vSpan.append(resp.msg);
						if( resp.ok == true )
							$vSpan.removeClass('red').addClass('green');
						else
							$vSpan.removeClass('green').addClass('red');
						}, 'json' );
			}
			this.lastValue = this.value;
			regSubmitOK();
		}
	});

	$('input.password').blur(function () {
		if( this.value != this.lastValue ) {
			var $vSpan = $('#v'+$(this).attr('name'));
			$vSpan.empty();
			var name = $(this).attr('name');
			var len = $(this).val().length;
			window[name] = false;
			if( !$(this).attr('alt') ) {
				if( len >= 0 && len < 4 )
					$vSpan.append( 'Too short (min 4 characters)' ).removeClass('green').addClass('red');
				else if( len > 15 )
					$vSpan.append( 'Too long (max 15 characters)' ).removeClass('green').addClass('red');
				else {
					window[name] = true;
					$vSpan.removeClass('red').removeClass('green');
				}
			} else if( len > 0 ) {
				if( $(this).val() == $('#'+$(this).attr('alt')).val() ) {
					window[name] = true;
					$vSpan.append( 'Nice job!' ).removeClass('red').addClass('green');
				} else {
					$vSpan.append( 'Passwords do not match' ).removeClass('green').addClass('red');
					this.value = this.lastValue;
				}
			}
			this.lastValue = this.value;
			regSubmitOK();
		}
	});
});

function regSubmitOK() {
	//alert( 'regSubmitOK: '+email+', '+username+', '+password+', '+password_confirm+', '+agreement );
	var submit = $('#regSubmit');
	if( email && username && password && password_confirm && agreement )
		submit.attr( 'src', public_path+'/images/submit.gif' ).removeAttr('disabled');
	else
		submit.attr( 'src', public_path+'/images/submitbtn.gif' ).attr( 'disabled', 'disabled' );
}
