
/* Form value calculation */	 
	 
	// Fmt numbers with commas - http://www.netlobo.com/number_format_javascript.html
	function numberFormat(nStr,prefix) {
		var prefix = prefix || '';
		nStr += '';
		x = nStr.split('.');
		x1 = x[0];
		x2 = x.length > 1 ? '.' + x[1] : '';
		var rgx = /(\d+)(\d{3})/;
		while (rgx.test(x1))
			x1 = x1.replace(rgx, '$1' + ',' + '$2');
		return prefix + x1 + x2;
	}
	
	// http://www.willmaster.com/library/tutorials/currency-formatting-and-putting-commas-in-numbers-with-javascript-and-perl.php
	function CurrencyFormatted(amount,prefix) {
		var prefix = prefix || '';
		var i = parseFloat(amount);
		if(isNaN(i)) { i = 0.00; }
		var minus = '';
		if(i < 0) { minus = '-'; }
		i = Math.abs(i);
		i = parseInt((i + .005) * 100);
		i = i / 100;
		s = new String(i);
		if(s.indexOf('.') < 0) { s += '.00'; }
		if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
		s = minus + s;
		return s;
	}
	
	 function calculateValues(theForm) {
		var totalCost = 0;
	
	 	// number of each kind of ticket
		var single = parseInt(theForm.single[theForm.single.selectedIndex].text);
		var young = parseInt(theForm.young[theForm.young.selectedIndex].text);
		var founder = parseInt(theForm.founder[theForm.founder.selectedIndex].text);
		var president = parseInt(theForm.president[theForm.president.selectedIndex].text);
		var benefactor = parseInt(theForm.benefactor[theForm.benefactor.selectedIndex].text);
		var supporter = parseInt(theForm.supporter[theForm.supporter.selectedIndex].text);
		
		if(single) {totalCost += single * 150;	}
		if(young) {totalCost += young * 99;	}
		if(founder) {totalCost += founder * 25000;}
		if(president) {totalCost += president * 10000;}
		if(benefactor) {totalCost += benefactor * 5000;}
		if(supporter) {totalCost += supporter * 1500;}
		
		theForm.AMOUNT.value = totalCost;
		
		return totalCost;
	 }
	 
	 function getGuests(theForm) {	
	 	var guests = "Guests: ";
		var elem;
		var i;
		
		for (i=1; i<=10; i++) {
			elem = document.getElementById('guest' + i);
			guests += " (" + i + ") ";
			guests += filterSpecial(elem.value);
		}
		alert(guests);
		theForm.COMMENT2.value = guests;
		
		return true;
	 }
	 
	 function filterSpecial(str) {
          re = /\$|,|@|#|~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\-|\_|\]|\[|\}|\{|\;|\:|\'|\"|\<|\>|\?|\||\\|\!|\$|\./g;
          // remove special characters like "$" and "," etc...
          return str.replace(re, "");
     }

	 
	 function checkPurchase(theForm) {
		var error = "";
		if(!calculateValues(theForm)) {
			error = "Please select a ticket type.\n";
		}
		return error;
	 }
	
	/* Form field validation - http://developer.apple.com/internet/webcontent/validation.html */
	// email
	function checkEmail (strng) {
	var error="";
	if (strng == "") {
	   error = "You didn't enter an email address.\n";
	}
	
		var emailFilter=/^.+@.+\..{2,3}$/;
		if (!(emailFilter.test(strng))) { 
		   error = "Please enter a valid email address.\n";
		}
		else {
	//test email for illegal characters
		   var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/
			 if (strng.match(illegalChars)) {
			  error = "The email address contains illegal characters.\n";
		   }
		}
	return error;    
	}
	
	
	// phone number - strip out delimiters and check for 10 digits
	function checkPhone (strng) {
	var error = "";
	if (strng == "") {
	   error = "You didn't enter a phone number.\n";
	}
	
	var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters
		if (isNaN(parseInt(stripped))) {
		   error = "The phone number contains illegal characters.";
	  
		}
		if (!(stripped.length == 10)) {
		error = "Please enter a phone number of the form: xxx-xxx-xxxx.\n";
		} 
	return error;
	}

	// non-empty textbox
	function isEmpty(strng, field) {
	var error = "";
	  if (strng.length == 0) {
	  	error = field;
		error += " has not been filled in.\n"
	  }
	return error;	  
	}
	
	function checkDropdown(choice, field) {
    var error = "";
    if (choice == 0) {
       error = "Please select an option from the "
	   error += field;
	   error += " dropdown menu.\n";
    }    
	return error;
	}  
		
	function checkWholeForm(theForm) {
		var why = "";
		why += checkPurchase(theForm);
		why += isEmpty(theForm.ZIP.value, "Your zipcode");
		why += isEmpty(theForm.NAME.value, "Your full name");
		why += checkEmail(theForm.EMAIL.value);
		why += checkPhone(theForm.PHONE.value);
		why += isEmpty(theForm.ADDRESS.value, "Your address");
		why += isEmpty(theForm.CITY.value, "Your city");
		why += checkDropdown(theForm.STATE.selectedIndex, "state");
		if (why != "") {
		   alert(why);
		   return false;
		}
		else {
			return true;
		}
	}



















//MPSCBWelch@aol.com

//mpsc@aol.com

//http://www.mpsc.org/return_from_verisign.html

	
	function trim(st) 
	{
		return (st.replace(/^\W+/,'')).replace(/\W+$/,'');
	}
	
	function trim(st) 
	{
		while (st.substring(0, 1) == ' ') 
			st = st.substring(1);
		while (st.substring(st.length - 1, st.length) == ' ') 
			st = st.substring(0, st.length - 1);
		return st;
	}
	


/* MONEY FORMAT
 * JavaScript Unleashed, Third Edition by Richard Wagner and R. Allen Wyke  ISBN: 067231763X Publisher Sams CopyRight 2000
 *
 */

function check_contribution_amount() {
   var textObj = document.ContributionForm.USER_SELECTED_AMOUNT;
   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;
      textObj.value = dolAmount + "." + decAmount;
   }
   return true;
}
/* end */




















	function check_number_of_boxes()	
	{
		if ( isNaN(document.ContributionForm.NUMBER_OF_BOXES.value) )
		{
			alert ("Please enter a valid number for the number of boxes.");
			document.ContributionForm.NUMBER_OF_BOXES.focus();
			document.ContributionForm.NUMBER_OF_BOXES.select();
			return false; 
		}
		else
		{
			if ( document.ContributionForm.NUMBER_OF_BOXES.value < 0 )
			{
				alert ("Please enter a valid number for the number of boxes.");
				document.ContributionForm.NUMBER_OF_BOXES.focus();
				document.ContributionForm.NUMBER_OF_BOXES.select();
				return false; 
			}
			else if ( parseInt(document.ContributionForm.NUMBER_OF_BOXES.value) != document.ContributionForm.NUMBER_OF_BOXES.value )
			{
				alert ("Please enter a valid number for the number of boxes.");
				document.ContributionForm.NUMBER_OF_BOXES.focus();
				document.ContributionForm.NUMBER_OF_BOXES.select();
				return false; 
			}
			else
			{
				return true;
			}
		}
	}	
	
	function ProcessContributionForm()
	{
		if ( trim(document.ContributionForm.NAME.value) == "" )
		{
			alert ("Your name is required and must not be left blank.");
			document.ContributionForm.NAME.focus();
			return false; 
		}
		if ( trim(document.ContributionForm.ADDRESS.value) == "" )
		{
			alert ("Your address is required and must not be left blank.");
			document.ContributionForm.ADDRESS.focus();
			return false; 
		}
		if ( trim(document.ContributionForm.CITY.value) == "" )
		{
			alert ("Your city is required and must not be left blank.");
			document.ContributionForm.CITY.focus();
			return false; 
		}
		if ( trim(document.ContributionForm.STATE.value) == "" )
		{
			alert ("Your state is required and must not be left blank.");
			document.ContributionForm.STATE.focus();
			return false; 
		}
		if ( trim(document.ContributionForm.COUNTRY.value) == "" )
		{
			alert ("Your country is required and must not be left blank.");
			document.ContributionForm.COUNTRY.focus();
			return false; 
		}
		if ( trim(document.ContributionForm.ZIP.value) == "" )
		{
			alert ("Your zip code is required and must not be left blank.");
			document.ContributionForm.ZIP.focus();
			return false; 
		}
		if ( trim(document.ContributionForm.EMAIL.value) == "" )
		{
			alert ("Your e-mail is required and must not be left blank.");
			document.ContributionForm.EMAIL.focus();
			return false; 
		}
		
		if ( trim(document.ContributionForm.AREACODE.value).length != 3 )
		{
			alert ("Please enter your phone number's area code.");
			document.ContributionForm.AREACODE.focus();
			document.ContributionForm.AREACODE.select();
			return false; 
		}
		
		if ( trim(document.ContributionForm.PHONE_PREFIX.value).length != 3 )
		{
			alert ("Please enter the first three characters of your phone number.");
			document.ContributionForm.PHONE_PREFIX.focus();
			document.ContributionForm.PHONE_PREFIX.select();
			return false; 
		}
		
		if ( trim(document.ContributionForm.PHONE_EXTENSION.value).length != 4 )
		{
			alert ("Please enter the last four characters of your phone number.");
			document.ContributionForm.PHONE_EXTENSION.focus();
			document.ContributionForm.PHONE_EXTENSION.select();
			return false; 
		}
		
		// concatonate the phone number 
		document.ContributionForm.PHONE.value = document.ContributionForm.AREACODE.value + document.ContributionForm.PHONE_PREFIX.value + document.ContributionForm.PHONE_EXTENSION.value ;
		
		document.ContributionForm.FAX.value = document.ContributionForm.FAX_AREACODE.value + document.ContributionForm.FAX_PREFIX.value + document.ContributionForm.FAX_EXTENSION.value ;
		
		if ( check_contribution_amount() == false )
		{
			return false; 
		}	
		
		var amount;
		amount = document.ContributionForm.TOTAL_AMOUNT.value;
		
		if ( DollarAmountIsValid( amount ) )
		{	
			document.ContributionForm.AMOUNT.value = amount;
		}
		else
		{
			alert ("Your total dollar amount is incorrect.  Please check your values.");
			document.ContributionForm.USER_SELECTED_AMOUNT.focus();
			document.ContributionForm.USER_SELECTED_AMOUNT.select();
			return false; 
		}
		
		return true;
	}
	
	function Set_PRE_SELECTED_AMOUNT_RadioButton()
	{
		var i;
		for ( i = 0 ; i < document.ContributionForm.PRESELECTED_AMOUNT.length; i++ )
		{
			if ( document.ContributionForm.PRESELECTED_AMOUNT[i].value == "other" )
			{
				document.ContributionForm.PRESELECTED_AMOUNT[i].click();
				break;
			}
		}
	}
	
	function recalculate()
	{
		if (  check_contribution_amount() == true )
		{ 
			// *****************************************************************
			if ( document.getElementById('Radio6').checked ) {
				document.ContributionForm.contribution_amount.value = document.ContributionForm.USER_SELECTED_AMOUNT.value;
			}
			document.ContributionForm.TOTAL_AMOUNT.value = document.ContributionForm.contribution_amount.value; 
			
		}
	}

	function DollarAmountIsValid( amount )
	{
		var i = 0;
		var len = amount.length;
		if (len == 0 )
		{
			return false;
		}
		else
		{	
			if ( amount.charAt(0) == "$" )
			{
				amount = amount.substr(1);
			}
			
			len = amount.length;
			if (len == 0 )
			{
				return false;
			}
			
			// strip leading zeros
			i = 0;
			while ( i < len - 1 && (amount.charAt(i) == "0") )
			{
				i++;
			}		
			amount = amount.substr(i, len);
			
			len = amount.length;
			if (len == 0 )
			{
				return false;
			}
			
			// is the decimal point in the right place and is there only one?
			for ( i = 0 ; i < len; i++ )
			{
				if (amount.charAt(i) == "."  && i != len - 3)
				{
					return false;
				}
			} 
			
			if ( isNaN(amount) )
			{
				return false;
			}
			
			if ( amount < 0 )
			{
				return false;
			}
			
			return true;
		}
	}