	// pass in a registration number
	//
	// returns if a match can be found in the set of validReg
	//
	function IsValidRegistration(regNum){
	
		var isValid = false;
		
		for (i = 0; i < validReg.length; i++)
		{
			// 2008.10.14 KJD: Make everything uppercase
			var thisNum	= regNum.toUpperCase();
			var thisReg	= validReg[i].toUpperCase();
		
			// if( regNum == validReg[i] )
			if( thisNum == thisReg )
			{
				return true;
			}
		}
		
		return false;
	}

	// 2006.01.12 KJD: Check if Registration number is in use
	function IsUsedRegistration(regNum){
	
		var isValid = false;
		
		for (i = 0; i < usedReg.length; i++) {
			if ( regNum == usedReg[i] ) {
				isValid = true;
				break;
			}
		}
		
		return isValid;
	}

	
	// pass in a select field
	//
	// returns value of selected
	// (used for compatability with Netscape)
	//
	function GetSelectedValue(a){
		var sIndex = a.selectedIndex;
		return a.options[sIndex].value;
	}

	function submitThis(){

		var error = false;
		var errorFields = ('');
		errormsg = ('Please do the following to complete the registration process:');
	
		 if (document.forms[0].firstName.value == '') { 
			 errormsg = errormsg + ('\n enter the First Name'); 
			 errorFields = errorFields + ('firstName,'); 
			 error = true; 
		 } 
	
		 if (document.forms[0].lastName.value == '') { 
			 errormsg = errormsg + ('\n enter the Last Name'); 
			 errorFields = errorFields + ('lastName,'); 
			 error = true; 
		 } 
		 
		 if (document.forms[0].email.value == '') { 
			 errormsg = errormsg + ('\n enter an email address'); 
			 errorFields = errorFields + ('email,'); 
			 error = true; 
		 } 
		 
		 if (document.forms[0].email.value.indexOf ('@',0)==-1) { 
			 errormsg = errormsg + ('\n enter a valid email address'); 
			 errorFields = errorFields + ('email,'); 
			 error = true; 
		 } 
		 
		 if (document.forms[0].address1.value == '') { 
			 errormsg = errormsg + ('\n enter an address'); 
			 errorFields = errorFields + ('address1,'); 
			 error = true; 
		 } 
		 
		 if (document.forms[0].city.value == '') { 
			 errormsg = errormsg + ('\n enter a city'); 
			 errorFields = errorFields + ('city,'); 
			 error = true; 
		 } 
		 
		 if (document.forms[0].state.value == '') { 
			 errormsg = errormsg + ('\n enter a state'); 
			 errorFields = errorFields + ('state,'); 
			 error = true; 
		 } 
		 
		 if (document.forms[0].zip.value == '') { 
			 errormsg = errormsg + ('\n enter a zip/postal code'); 
			 errorFields = errorFields + ('zip,'); 
			 error = true; 
		 } 
		 
		 if (document.forms[0].country.value == '') { 
			 errormsg = errormsg + ('\n enter a country'); 
			 errorFields = errorFields + ('country,'); 
			 error = true; 
		 } 
		 
		 if (document.forms[0].whereBought.value == '') { 
			 errormsg = errormsg + ('\n enter Where Purchased'); 
			 errorFields = errorFields + ('whereBought,'); 
			 error = true; 
		 } 

		// 2006.06.06 KJD: No longer needed
		// 2006.08.22 KJD: Re-added Registration Number
		// 2008.09.30 KJD: Check for v3
		var testRegNumber = document.forms[0].registration.value;
		testRegNumber	= testRegNumber.toUpperCase();
		
		// document.forms[0].registration.value = testRegNumber;
		
		if( 
			( ( testRegNumber.indexOf( '3PWC' ) > -1 ) || ( testRegNumber.indexOf( 'PWC3' ) > -1 ) )
			&& ( typeof versionNumber	== 'undefined' )
		)
		{
			errormsg 	= errormsg 		+ ('\n This page is for version 2.0 registration only. v3.0 users please register by launching your software and clicking "register."'); 
			errorFields = errorFields 	+ ('registration,'); 
			error	= true;
		}
		else if( IsUsedRegistration( document.forms[0].registration.value ) )
		{ 
			errormsg 	= errormsg 		+ ('\n This Registration Number already in use.'); 
			errorFields = errorFields 	+ ('registration,'); 
			error 		= true;
		}
		else if ( !( IsValidRegistration( document.forms[0].registration.value ) ) )
		{ 
			errormsg 	= errormsg 		+ ('\n enter a valid Registration Number'); 
			errorFields = errorFields 	+ ('registration,'); 
			error 		= true; 
		}

		// 2008.04.07 KJD: Check for v1 registration #
		if( IsValidRegistration( document.forms[0].registration.value ) )
		{
			var thisregnumber	= document.forms[0].registration.value.toUpperCase();

			if( thisregnumber.indexOf( "PWC1" ) == 0 )
			{
				errormsg 	= errormsg 		+ ('\n Please enter a version 2 Registration Number'); 
				errorFields = errorFields 	+ ('registration,'); 
				error 		= true;
			}
		}
		
		
		// 2006.06.02 KJD: Added Password validation
		 if ( document.forms[0].password.value.length < 6 )
		 { 
			 errormsg = errormsg + ('\n enter a Password greater than 6 characters'); 
			 errorFields = errorFields + ('password,'); 
			 error = true; 
		 } 

		 
		 if (GetSelectedValue(document.forms[0].question) == '') { 
			 errormsg = errormsg + ('\n select the Registration Question'); 
			 errorFields = errorFields + ('question,'); 
			 error = true; 
		 } 
		 
		 if (document.forms[0].answer.value == '') { 
			 errormsg = errormsg + ('\n enter the answer for lost reg. number'); 
			 errorFields = errorFields + ('answer,'); 
			 error = true; 
		 } 
	
		if ( error ) {
			alert( errormsg );
			// split errorFields string to get fields with errors and focus
			errorFieldsArray = errorFields.split( "," );
			if ( errorFieldsArray[0] != "NONE" ) {
				focusStr = 'document.forms[0].' + errorFieldsArray[0] +'.focus()';
				eval( focusStr );
			}
			return false;
		}
		// no errors, post form with psAction from submit
		// document.forms[0].submit();
	}
	
// 2008.08.06 KJD: Limit to alpha numeric characters
function AlphaNumeric( thisElement )
{
	var thisString	= thisElement.value;

	var NonValidChars = /[^a-zA-Z0-9]/gi;
	
	thisString = thisString.replace( NonValidChars, '' );
	
	thisElement.value	= thisString;
}