// BEGIN FORM HANDLING
	
	function is_email(str) {
	  // are regular expressions supported?
	  var supported = 0;
	  if (window.RegExp) {
	    var tempStr = "a";
	    var tempReg = new RegExp(tempStr);
	    if (tempReg.test(tempStr)) supported = 1;
	  }
	  if (!supported) 
	    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
	    
	  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	  return (!r1.test(str) && r2.test(str));
	}
	
	function is_float(value)
	{
		var r1 = new RegExp("^-?[0-9\.]+$");
		
		return (r1.test(value));
	}
	
	function is_int(value)
	{
		var r1 = new RegExp("^-?[0-9]+$");
		
		return (r1.test(value));
		
	}
	
	
	function checked_radio( radio_object )
	{
		for( var i = 0; i < radio_object.length; i++) 
		{
			if ( radio_object[i].checked )
				return true;
		}
		
		return false;
		
	}	

	
	// Check all the form fields of a given form
	// Return false if its not filled in (or not filled in properly)
	
	function checkFormFields(form) 
	{
		var i;
		var elements = form.elements;
		
		//alert ( "Checking " + elements.length + " elements" );
	
		for ( i = 0; i < elements.length; i++ ) 
		{
			if ( elements[i].type == 'hidden' )
				continue;
				
			var datatype = elements[i].attributes['datatype'];
			
			if ( datatype )
				datatype = datatype.value;
			
			if ( datatype && datatype == 'not_required' )
				continue;
		  else if ( datatype && datatype == "cc" && !is_credit_card( elements[i].value, form.payment_cc_type.value ) )
		  		alert("Please enter a valid Credit Card Number");
		  else if ( datatype && datatype == "captcha" )
		  {
			  	captcha = true;
				captchaKey = elements[i].value;
				continue;
		  }
		  else if ( elements[i].value == "" )
		  		alert ("Please fill in all required form fields" );
		  else if ( datatype && datatype == "email" && !is_email(elements[i].value ) )
		  		alert("Please input an e-mail in the correct format");
		  else if ( datatype && datatype == 'double' && !is_float(elements[i].value) )
		  		alert("Please input a number, without characters");
		  else if ( datatype && datatype == 'integer' && !is_int(elements[i].value) )
		  		alert("Please input an integer, without characters or decimals");
		  else if ( datatype && datatype == 'required_select' && elements[i].value == -1 )
		  		alert("Please choose an item from the drop down list");
			else if ( datatype && datatype == 'required_select_multiple' && elements[i].value == -1 )
		  		alert("Please select strategies from the list");
			else if ( datatype && datatype == 'required_radio' && !checked_radio(elements[elements[i].name]) )
			{
		  		alert("Please fill in all Yes/No questions" );
		  }
		  else if ( datatype && datatype == 'confirm_email'  && elements[i].value != elements['email'].value )
					alert( "Please verify that your confirmation email (" + elements[i].value + ") matches your email (" + elements['email'].value + ")" );
		  else if ( datatype && datatype == 'confirm_password'  && elements[i].value != elements['password'].value )
					alert( "Please verify that your confirmation password matches your password" );
		  else
		  	continue;		  
		  		
		  elements[i].focus();
		  return false;
		}
		
		if ( captcha )
		{
			var myAjax = new Ajax.Request( '/captcha/check.php', { method:'post', parameters: "captchaKey=" + captchaKey, asynchronous:false } );
			
			if ( myAjax.transport.responseText != "" ) 
				return true;
			else
			{
				alert("Sorry, this code does not match.  Please try again with the new code"); 
				$("captchaImg").src = "/captcha/captcha.php?" + (++imgNum); 
				return false;
			}
		}
		else		
			return true;
	}	
	
	// END FORM HANDLING