function isWhitespace( charToCheck ) {
	var whitespaceChars = ' ';
							
	return ( whitespaceChars.indexOf( charToCheck ) != -1 );
}

function ltrim( str ) { 
	for ( var k = 0; k < str.length; k++ ) {
		if ( !isWhitespace( str.charAt( k ) ) )
			return str.substr( k, str.length );
	}
	return str;
}
						
function rtrim( str ) {
	for ( var j = str.length-1; j >= 0; j-- ) {
		if ( !isWhitespace( str.charAt( j ) ) )
			return str.substr( 0, j + 1 );
	}
	return str;
}
						
function trim( str ) {
	return ltrim( rtrim( str ) );
}
						
function echeck(str) {
	var at = '@';
	var dot = '.';
	var lat = str.indexOf( at);
	var lstr = str.length;
	var ldot = str.indexOf( dot );

	if ( str.indexOf( at ) == -1 )
		return false;

	if ( str.indexOf( at ) == -1 || str.indexOf( at )== 0 || str.indexOf( at ) == lstr )
		return false;							

	if ( str.indexOf( dot ) == -1 || str.indexOf( dot ) == 0 || str.indexOf( dot ) == lstr )
		return false;

	if ( str.indexOf( at,( lat+1 ) )!=-1)
		return false;

	if ( str.substr( lat-1, lat )==dot || str.substr( lat+1, lat+2 ) == dot )
		return false;

	if ( str.indexOf( dot,( lat+2 ) ) == -1 )
		return false;

	if ( str.indexOf( ' ' ) != -1 )
		return false;

	return true;
}

function pwcheck(str, fname, lname) {
	var pstr = str.toLowerCase();
	var fstr = fname.toLowerCase();
	var lstr = lname.toLowerCase();
	
	var patt1 = new RegExp("[A-Z]");
	var patt2 = new RegExp("[a-z]");
	var patt3 = /\d/g;
	var patt4 = /\W/g;
	var patt5 = /\s/g;
	
	if ( str.length < 6 )
		return false;
	
	if ( pstr.match( fstr ) != null || pstr.match( lstr ) != null )
		return false;
	
	if ( patt1.test( str ) == false || patt2.test( str ) == false )
		return false;
	
	if ( str.match( patt3 ) == null)
		return false;
	
	if ( str.match( patt4 ) != null)
		return false;
	
	if ( str.match( patt5 ) != null)
		return false;
	
	return true;
}

// changes the entry screen to login
function changeForm() {
	var formtype = document.getElementById('formtype').value;

	// remember we are getting the div objects here, not form elements
	var firstname = document.getElementById('firstname');
	var lastname = document.getElementById('lastname');
	var phone = document.getElementById('phone');
	var password2 = document.getElementById('password2');
	var forgotpw = document.getElementById('forgotpw');
	var email = document.getElementById('fm-email').value;

	var regtext = document.getElementById('regtext');

	// formtype is current state							
	if ( formtype == 'full' ) {
		firstname.style.display = 'none';
		lastname.style.display = 'none';
		phone.style.display = 'none';	
		password2.style.display = 'none';
		forgotpw.style.display = 'inline';	
		regtext.firstChild.nodeValue = 'Never';

		document.getElementById('fm-email').focus();
		if (email.length != 0 && document.getElementById('userfounderror'))
			document.getElementById('userfounderror').style.display = 'none';
		formtype = 'partial';
	} else {
		document.getElementById('error').style.display = 'none';

		firstname.style.display = 'inline';
		lastname.style.display = 'inline';	
		phone.style.display = 'inline';	
		password2.style.display = 'inline';	
		forgotpw.style.display = 'none';
		regtext.firstChild.nodeValue = 'Already';

		document.getElementById('fm-firstname').focus();
		formtype = 'full';
	}
	document.getElementById('formtype').value = formtype;
}

//
function checkForm() {
	var formtype = trim( document.getElementById('formtype').value );	
	var email = trim( document.getElementById('fm-email').value );
	var password = trim( document.getElementById('fm-password').value );
	var forgotpw = document.getElementById('fm-forgotpw');

	if ( email.length == 0 || echeck( email ) == false ) {
		alert( 'Please enter an email address (required field)' );
		document.getElementById('fm-email').focus();
		return false;
	} else if ( forgotpw.checked ) {
		document.forms[0].action ='index_sendpassword.php';						
		return true;
	} else if ( password.length == 0 ) {
		alert( 'Please enter a password (required field)' );
		document.getElementById('fm-password').focus();
		return false;
	}

	if ( formtype == 'full' ) {
		var firstname = trim( document.getElementById('fm-firstname').value );
		var lastname = trim( document.getElementById('fm-lastname').value );
		var phone = trim( document.getElementById('fm-phone').value );
		var vpassword = trim( document.getElementById('fm-password2').value );

		if ( firstname.length == 0 ) {
			alert( 'Please enter your first name (required field)' );
			document.getElementById('fm-firstname').focus();
			return false;
		} else if ( lastname.length == 0 ) {
			alert( 'Please enter your last name (required field)' );
			document.getElementById('fm-lastname').focus();
			return false;
		} else if ( phone.length == 0 ) {
			alert( 'Please enter your phone number (required field)' );
			document.getElementById('fm-phone').focus();
			return false;
		} else if ( pwcheck(password, firstname, lastname) == false ) {
			alert( "Passwords must\ncontain at least 6 characters\nnot contain your name\nat least one Capital Letter (A-Z)\nat least one Lowercase Letter (a-z)\nat least one Numeric Character (0-9)\nnot contain any non alphanumeric characters" );
			document.getElementById('fm-password').focus();
			return false;
		} else if ( password != vpassword ) {
			alert( 'Passwords do not match. Please re-enter the passwords' );
			document.getElementById('fm-password').focus();
			return false;
		}
	}	
	// set the form action dynamically
	if ( formtype == 'full' )
		document.forms[0].action ='index_save.php';
	else
		document.forms[0].action ='index_ckpassword.php';						
	return true;
}

window.onload = function() {
	if ( document.getElementById('formtype').value == 'partial' ) {
		document.getElementById('formtype').value = 'full';
		changeForm();
		
		document.getElementById('error').style.display = 'inline';
	}
		
	document.getElementById('fm-firstname').focus();
}	
