/*
	Purpose:	Javascript functions for /membership/signup.php
	Created:	2007.01.25 by Nathan Markey
	Modified:	2007.02.16 by Nathan Markey - removed double border on submit message.
	
*/


function inputFocus() {
	highlightInput( this );
	showInputInfo( this.name );
}

function inputBlur() {
	dehighlightInput( this );
}

function highlightInput( input ) {
	input.style.border = "solid 2px #ffcc33";
	input.style.backgroundColor = "beige";
	input.style.margin = "1px 0";
}

function dehighlightInput( input ) {
	input.style.border = "solid 1px #cccccc";
	input.style.backgroundColor = "#ffffff";
	input.style.margin = "2px 0";
}

function showInputInfo( input_name ) {
	
	switch ( input_name ) {
	
		case "username": info_text = "<b>Username</b>: must be 20 characters or less, and use the characters A-Z, a-z, 0-9, _ (underscore), - (dash), or . (period) only."; break;
		case "password": info_text = "<b>Password</b>: must be 5-40 characters. It is recommended to use both letters and numbers for a strong password."; break;
		case "confirm_password": info_text = "<b>Confirm Password</b>: please enter your password again."; break;
		case "first_name": info_text = "<b>First Name</b>: must be 2-20 characters."; break;
		case "last_name": info_text = "<b>Last Name</b>: must be 2-30 characters."; break;
		case "email": info_text = "<b>Email</b>: to complete your registration, you must be able to access this email."; break;
		case "confirm_email": info_text = "<b>Confirm Email</b>: please confirm your email address."; break;
	
		default: info_text = "";
				
	}
	
	setItemText( "input_info", info_text );

}

function focusFieldFromResponse( response ) {
	// retrieve the field num from the response and set focus to it
	field_num = parseInt( response.match( /^\d/ ) );
	if ( field_num >= 0 ) {
		document.signup_form[field_num].focus();
	}
}

function isSignupSuccessful( response ) {
	if ( response.match( /^\s*success/ ) != null ) return true;
	else return false;
}

function retrieveMessageFromResponse( response ) {
	// retrieve the message from the response and return it
	var regex = /^(\d\s)|(\s*success\s*)/; // replaces the digit code or the success message
	var message = response.replace( regex, "" );
	return ( message != "" ) ? message : response;

}

function highlightConfInput() {
	input = document.getElementById( "confirmation_code_input" );
	input.style.border = "solid 2px #ffcc33";
	input.style.backgroundColor = "beige";
	input.style.margin = "1px 0";
}

function dehighlightConfInput() {
	input = document.getElementById( "confirmation_code_input" );
	input.style.border = "solid 1px #cccccc";
	input.style.backgroundColor = "#ffffff";
	input.style.margin = "2px 0";
}


function RequestSignup( data_form ) {

	var request = new AsyncRequest();
	
	// assign form data information		
	var data_content = "";
	for ( i = 0; i < data_form.length; i++ ) {
		if ( data_form[i].name != "" ) {
			data_content += data_form[i].name + "=" + data_form[i].value + "&";
		}
	}
	
	request.url = data_form.action;
	request.method = data_form.method;
	
	// toggle status
	showItem( "submit_message" );
	setItemText( "submit_message", "<span style='color: #333333'>Checking fields...</span>" );

	request.callback = function( responseText ) {
		if ( isSignupSuccessful( responseText ) === true ) {
			hideItem( "input_info" );
			hideItem( "signup_form_div" );
			setItemText( "submit_message", retrieveMessageFromResponse( responseText ) );
			if ( document.getElementById( "confirmation_code_input" ) != null ) {
				document.getElementById( "confirmation_code_input" ).focus();
			}
		} else {
			focusFieldFromResponse( responseText );
			setItemText( "submit_message", retrieveMessageFromResponse( responseText ) );
		}
	}
	
	request.onError = function( responseText ) {			
		setItemText( "submit_message", "Check failed, please try again" );
	}
	
	request.data = data_content;
	request.send();
}

function ConfirmUser( data_form ) {

	var request = new AsyncRequest();
	
	// assign form data information		
	var data_content = "";
	for ( i = 0; i < data_form.length; i++ ) {
		if ( data_form[i].name != "" ) {
			data_content += data_form[i].name + "=" + data_form[i].value + "&";
		}
	}

	request.url = data_form.action;
	request.method = data_form.method;
	
	// inform user of submission
	showItem( "submit_message" );
	setItemText( "submit_message", "<span style='color: #333333'>Sending...</span>" );

	request.callback = function( responseText ) {
		if ( responseText == "Success" ) {
			window.location = "/membership/signup_confirmation.php";
			setItemText( "submit_message", "<div style='text-align: center; color: #333333; font-weight: bold;'>Confirmation successful. Please wait...</div>" );
		} else {
			setItemText( "submit_message", responseText );
			if ( document.getElementById( "confirmation_code_input" ) != null ) {
				document.getElementById( "confirmation_code_input" ).focus();
			}
			if ( document.change_password_form != null ) {
				addFormFocusAndBlur( document.change_password_form );
				document.change_password_form[0].focus();
			}
		}
	}
	
	request.onError = function( responseText ) {			
		setItemText( "submit_message", "Check failed, please try again" );
	}
	
	request.data = data_content;
	request.send();
}

function CheckUsernameAvailability( data_form ) {

	var request = new AsyncRequest();
	
	// assign form data information		
	var data_content = "";
	for ( i = 0; i < data_form.length; i++ ) {
		if ( data_form[i].name != "" ) {
			data_content += data_form[i].name + "=" + data_form[i].value + "&";
		}
	}
	
	request.url = "/membership/check_username_availability.php";
	request.method = data_form.method;
	
	showItem( "submit_message" );
	setItemText( "submit_message", "<span style='color: #333333'>Checking...</span>" );
	
	request.callback = function( responseText ) {
		if ( responseText == "success" ) {
			setItemText( "submit_message", "<span style='color: #333333'>Username is available</span>" );
			document.signup_form[0].focus();
		} else {
			focusFieldFromResponse( responseText );
			setItemText( "submit_message", retrieveMessageFromResponse( responseText ) );
		}
	}
	
	request.onError = function( responseText ) {			
		setItemText( "submit_message", "Check failed, please try again" );
	}
	
	request.data = data_content;
	request.send();
}
