/*
#
#	Vars
#
*/
var user_previous;
var email_error = false;
var email_previous;
var password_previous;
var password2_previous;

var username_good
var email_good;
var password_good;
var password2_good;

var username;
var email;

var object;

function disableSubmit ()
{
	document.getElementById('submit').disabled = true;
}


/*
#
#	Callback function for username checking
#
*/
function handleUsernameInfo()
{
	object = document.getElementById('register-form').username
	
	if(http.readyState == 1)
	{
		object.value = "....Loading....";
	}
	
	if(http.readyState == 4)
	{

		var response = http.responseText;

		object.value = username;
		
		if ( response == 0 )
		{
			toggle_input ( "username", "good" );
			username_good = true;

		}
		else if ( response == 1 )
		{
			toggle_input ( "username", "bad" )
			username_good = false;
		}
		
	}
}

/*
#
#	Callback function for email checking
#
*/
function handleEmailInfo()
{
	email_object = document.getElementById('register-form').email
	
	if(http.readyState == 1)
	{
		email_object.value = "....Loading....";
	}
	
	if(http.readyState == 4)
	{

		var email_response = http.responseText;

		email_object.value = email;
		
		if ( email_response == 0 )
		{
			toggle_input ( "email", "good" );
			email_good = true;

		}
		else if ( email_response == 1 )
		{
			alert ( 'Sorry, that e-mail address is already in use. Please choose another e-mail address.' );
			toggle_input ( "email", "bad" )
			email_good = false;
		}
		
	}
}


function submitted ()
{
	document.getElementById('reset').disabled = true;
	document.getElementById('submit').disabled = true;
	
	return true;
}

function reset_form ()
{
	/*
	#
	#	Reset the results box to '?' and enable submit button
	#
	*/
	document.getElementById('submit').disabled = true;
	
	toggle_input ( "username", "reset" );
	toggle_input ( "email", "reset" );
	toggle_input ( "site-password", "reset" );
	toggle_input ( "site-password2", "reset" );
}


function check_good ()
{
	
	if ( username_good == true && email_good == true && password_good == true && password2_good == true )
	{
		//document.getElementById('submit').disabled = false;
	}
	else
	{
		//document.getElementById('submit').disabled = true;
	}
	
}


/*
#
#
#
#	**** BEGIN ONBLUR EVENT HANDLERS ****
#
#
#
*/

/*
#	Called when the username field loses focus
*/
function user_onblur ()
{
	var object = document.getElementById('register-form').username;

	/*
	#	If the username field is not empty, check availability.
	*/
	if ( object.value != '' )
	{
		if ( object.value != user_previous )
		{
			user_previous = object.value;
			
			/*
			#	Client side pattern matching.
			#	Value must be alphanumeric or an underscore or hyphen, else error.
			*/
			var regex = /^[a-z\d_-]+$/i;

			if ( !regex.test ( object.value ) )
			{
				alert ( 'Please use the correct characters.\nOnly letters, numbers, -\'s and _\'s are allowed.' );
			}
			else
			{
				/*
				#	Date is send in the request so that a new request is made each time
				#	and the browser does not use cached results.
				*/
				d = new Date(); now = d.getTime();
				username = object.value;
				url = '/backend/ajax/check_user_availability.php?r=' + now + '&username=' + username;
	
				ajax ( 'get', url, handleUsernameInfo, true );
			}
		}
	}
	else
	{
		/*
		#	Else If the field is empty, reset everything
		*/
		toggle_input ( "username", "reset");
		user_previous = "";
		user_good = "reset";
	}
}


/*
#	Called when the email field loses focus
*/
function email_onblur ()
{
	var email_object = document.getElementById('register-form').email;
	
	var email_regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	
	if ( email_object.value != email_previous )
	{
		email_error = false;
		email_previous = email_object.value;
	}
	
	
	if ( email_object.value != '' )
	{
		if ( !email_regex.test ( email_object.value ) )
		{
			if ( email_error == false )
			{
				var part1 = 'E-mail address format invalid. Please note that we do not currently support TLD\'s longer than 4 characters.\n';
				var part2 = 'Believe this is wrong? Contact us at admin@zymic.com';
			
				var msg = part1 + part2;
				alert ( msg );
				
				toggle_input ( "email", "bad")
				email_good = false;
				
				email_error = true;
			}
		}
		else
		{
			/*
			#	Date is send in the request so that a new request is made each time
			#	and the browser does not use cached results.
			*/
			d = new Date(); now = d.getTime();
			email = email_object.value;
			url = '/backend/ajax/check_email_availability.php?r=' + now + '&email=' + email_object.value;
	
			ajax ( 'get', url, handleEmailInfo, true );
			/*toggle_input ( "email", "good" );
			email_good = true;*/
		}
	}
	else
	{
		toggle_input ( "email", "reset")
		email_previous = "";
		email_good = "reset";
	}
}


/*
#	Invoked when the password field loses focus
*/
function password_onblur ()
{
	var object = document.getElementById('register-form').password;
	
	if ( object.value != '' )
	{
		if ( object.value != password_previous )
		{
			password_previous = object.value;			
		}
		
		if ( document.getElementById('register-form').password2.value != '' )
		{
			if ( object.value != document.getElementById('register-form').password2.value )
			{
				toggle_input ( "site-password", "bad" );
				toggle_input ( "site-password2", "bad" );
				password_good = false;
				password2_good = false;
			}
			else
			{
				toggle_input ( "site-password", "good" );
				toggle_input ( "site-password2", "good" );
				password_good = true;
				password2_good = true;
			}
		}
	}
	else
	{
		toggle_input ( "site-password", "reset" );
		toggle_input ( "site-password2", "reset" );
		password_previous = "";
		document.getElementById('register-form').password2.value = '';
		password_good = "reset";
	}
	check_good()
}


function password2_onblur ()
{
	var object = document.getElementById('register-form').password2;
	
	if ( object.value != '' )
	{
		if ( object.value != password2_previous )
		{
			password2_previous = object.value;			
		}
		
		if ( document.getElementById('register-form').password.value != '' )
		{
			if ( object.value != document.getElementById('register-form').password.value )
			{
				toggle_input ( "site-password", "bad" );
				toggle_input ( "site-password2", "bad" );
				password_good = false;
				password2_good = false;
			}
			else
			{
				toggle_input ( "site-password", "good" );
				toggle_input ( "site-password2", "good" );
				password_good = true;
				password2_good = true;
			}
		}
	}
	else
	{
		toggle_input ( "site-password", "reset" );
		toggle_input ( "site-password2", "reset" );
		password2_previous = "";
		document.getElementById('register-form').password.value = '';
		password2_good = "reset";
	}
	check_good()
}

/*
#
#
#
#	**** END OF ONBLUR EVENT HANDLERS ****
#
#
#
*/
