function moneyFormat(textObj) {
   var newValue = textObj.value;
   var decAmount = "";
   var dolAmount = "";
   var decFlag = false;
   var aChar = "";
   
   // ignore all but digits and decimal points.
   for(i=0; i < newValue.length; i++) {
      aChar = newValue.substring(i,i+1);
      if(aChar >= "0" && aChar <= "9") {
         if(decFlag) {
            decAmount = "" + decAmount + aChar;
         }
         else {
            dolAmount = "" + dolAmount + aChar;
         }
      }
      if(aChar == ".") {
         if(decFlag) {
            dolAmount = "";
            break;
         }
         decFlag=true;
      }
   }
   
   // Ensure that at least a zero appears for the dollar amount.

   if(dolAmount == "") {
      dolAmount = "0";
   }
   // Strip leading zeros.
   if(dolAmount.length > 1) {
      while(dolAmount.length > 1 && dolAmount.substring(0,1) == "0") {
         dolAmount = dolAmount.substring(1,dolAmount.length);
      }
   }
   
   // Round the decimal amount.
   if(decAmount.length > 2) {
      if(decAmount.substring(2,3) > "4") {
         decAmount = parseInt(decAmount.substring(0,2)) + 1;
         if(decAmount < 10) {
            decAmount = "0" + decAmount;
         }
         else {
            decAmount = "" + decAmount;
         }
      }
      else {
         decAmount = decAmount.substring(0,2);
      }
      if (decAmount == 100) {
         decAmount = "00";
         dolAmount = parseInt(dolAmount) + 1;
      }
   }
   
   // Pad right side of decAmount
   if(decAmount.length == 1) {
      decAmount = decAmount + "0";
   }
   if(decAmount.length == 0) {
      decAmount = decAmount + "00";
   }
   
   // Check for negative values and reset textObj
   if(newValue.substring(0,1) != '-' ||
         (dolAmount == "0" && decAmount == "00")) {
      textObj.value = dolAmount + "." + decAmount;

   }
   else{
      textObj.value = '-' + dolAmount + "." + decAmount;
   }
}

function empty(x)
{
	return x == '';
}

function numeric(x)
{
   var ValidChars = "0123456789.";
   var numeric=true;
   var Char; 
   for (i = 0; i < x.length && numeric == true; i++) 
   { 
     Char = x.charAt(i); 
     if (ValidChars.indexOf(Char) == -1)	 
		 	numeric = false;		 
		}
   return numeric;   
}

function phone(x)
{
   var ValidChars = "0123456789()-";
   var numeric=true;
   var Char; 
   for (i = 0; i < x.length && numeric == true; i++) 
   { 
     Char = x.charAt(i); 
     if (ValidChars.indexOf(Char) == -1)	 
		 	numeric = false;		 
		}
   return numeric;   
}


function email(x)
{
  email_regx = /^[^@]+@[^@]+.[a-z]{2,}$/i;
	return !(x.search(email_regx) == -1); 
}

function validate_form()
{
	$error_count = 0;
	
	/* validation start */	
	
	if(empty(document.getElementById('first_name').value))
	{		
		document.getElementById('fname_label').className = 'label_error';
		$error_count++;		
	}
	else
	{		
		document.getElementById('fname_label').className = 'label';
	}	
	
	if(empty(document.getElementById('last_name').value))
	{		
		document.getElementById('lname_label').className = 'label_error';
		$error_count++;		
	}	
	else
	{		
		document.getElementById('lname_label').className = 'label';
	}	
	
	if(empty(document.getElementById('phone').value))
	{		
		document.getElementById('phone_label').className = 'label_error';
		$error_count++;		
	}	
	
	else if(!phone(document.getElementById('phone').value))
	{		
		document.getElementById('phone_label').className = 'label_error';
		$error_count++;		
	}		
	
	else
	{		
		document.getElementById('phone_label').className = 'label';
	}	
	
	if(empty(document.getElementById('email').value))
	{		
		document.getElementById('email_label').className = 'label_error';		
		$error_count++;		
	}	
	
	else if(!email(document.getElementById('email').value))
	{
		document.getElementById('email_label').className = 'label_error';
		$error_count++;
	}
	else
	{		
		document.getElementById('email_label').className = 'label';
	}		
	
	if(empty(document.getElementById('streetaddress').value))
	{		
		document.getElementById('streetaddress_label').className = 'label_error';
		$error_count++;		
	}	
	else
	{		
		document.getElementById('streetaddress_label').className = 'label';
	}		
	
	if(empty(document.getElementById('city').value))
	{		
		document.getElementById('city_label').className = 'label_error';
		$error_count++;		
	}	
	else
	{		
		document.getElementById('city_label').className = 'label';
	}		
	
	if(empty(document.getElementById('state').value))
	{		
		document.getElementById('state_label').className = 'label_error';
		$error_count++;		
	}	
	else
	{		
		document.getElementById('state_label').className = 'label';
	}			
	
	if(empty(document.getElementById('zip').value))
	{
		document.getElementById('zip_label').className = 'label_error';
		$error_count++;
	}
	else if(!numeric(document.getElementById('zip').value))
	{
		document.getElementById('zip_label').className = 'label_error';
		$error_count++;
	}	

	else if(document.getElementById('zip').value.length != 5)
	{
		document.getElementById('zip_label').className = 'label_error';
		$error_count++;
	}	
	
	else
	{		
		document.getElementById('zip_label').className = 'label';
	}	

	if(empty(document.getElementById('besttimetoreach').value))
	{
		document.getElementById('besttime_label').className = 'label_error';
		$error_count++;
	}
	else
	{		
		document.getElementById('besttime_label').className = 'label';
	}
	
	
	if(document.starthereForm.agree.checked != 1)
	{		
		document.getElementById('agree_label').className = 'label_error';
		$error_count++;		
	}	
	else
	{		
		document.getElementById('agree_label').className = 'label';
	}	
	
	
	
	
	if(empty(document.getElementById('amount_desired').value))
	{
		document.getElementById('amount_label').className = 'label_error';
		$error_count++;
	}
	
	else if(document.getElementById('amount_desired').value == '0.00')
	{
		document.getElementById('amount_label').className = 'label_error';
		$error_count++;
	}	
	
	else
	{		
		document.getElementById('amount_label').className = 'label';
	}		
	
	
	
	
	
	
	
	
	
	if($error_count > 0)
	{
		alert('You have either left one or more of the form fields blank, or have entered an incorrect value\n(ie: invalid Email address, zero dollar amount, non-numeric phone number and/or zip code, etc.).\nPlease make the necessary corrections before continuing.');

	}
	else
	{
		document.getElementById('starthereForm').submit();	
	}
	
}