var backImage = new Array();
backImage[0] = "images/spacer.gif";
backImage[1] = "images/spacer_green.gif";
charString = "1234567890";
var message = new String();
message = '';

function alertTest(form){
	alert(form.indName);
	return false
}

function switchImage(x,y){
	//alert(x.id);
	if(y==1){
		document.getElementById(x).style.backgroundImage="url(images/spacer_white.gif)";
		//="#7F881B"
		}
	if(y==0)
		document.getElementById(x).style.backgroundImage="url(images/spacer_green.gif)";
}

function validateUserID(form) {
	if (form.indLoginPassword.value.length < 6 || form.indLoginPassword.value.length > 20){
		alert("The password you entered was not of the required length.\nLength must be 6 to 20 characters.")
		return false;
	}
	if (form.indLoginPassword.value != form.indLoginPasswordConf.value) {
		alert("The passwords you entered did not match. Please try again.");
		return false;
	}
	if (form.indLoginUsername.value.length < 6 || form.indLoginUsername.value.length > 20){
		alert("The user name you entered was not of the required length.\nLength must be 6 to 20 characters.")
		return false;
	}
	if (form.indLoginUsername.value == "") {
		alert("You left your user name blank.");
		return false;
		}
	return true;
	}
 
function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		alert('Please enter a valid ' + fieldLabel);
		formField.focus();
		result = false;
	}
	
	return result;
}
function validRequiredSelect(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		alert('Please select a valid ' + fieldLabel);
		formField.focus();
		result = false;
	}
	
	return result;
}

function validateZip(formField,fieldLabel) 
{
 
     // Check for correct zip code
     var reZip = /(^\d{5}$)|(^\d{5}-\d{4}$)/;

     if (!reZip.test(formField.value)) {
		alert('Please enter a valid ' + fieldLabel);
          return false;
     }
 
return true;
}

function validateEmail(formField)
{
	str = formField.value;
 	var alertText ="The email address you entered does not appear to be valid."
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   alert(alertText)
	   return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   alert(alertText);
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		alert(alertText);
		return false;
	}

	 if (str.indexOf(at,(lat+1))!=-1){
		alert(alertText);
		return false;
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		alert(alertText);
		return false;
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
		alert(alertText);
		return false;
	 }
	
	 if (str.indexOf(" ")!=-1){
		 alert(alertText);
		 return false;
		 }
	return true
}

function validateEmailOnly(form){
	return validateEmail(form.indEmail);
	}
function validatePhoneArea(formField,fieldLabel)
{
 
     // Check for correct area code
     var reArea = /(^\d{3}$)/;

     if (!reArea.test(formField.value)) {
		alert('Please enter a valid ' + fieldLabel + ' in the format xxx');
          return false;
     }
 
return true;
}
function validatePhoneNum(formField,fieldLabel)
{
     // Check for correct phone number
     var reNum = /(^\d{3}-\d{4}$)/;

     if (!reNum.test(formField.value)) {
		alert('Please enter a valid ' + fieldLabel + ' in the format xxx-xxxx');
          return false;
     }
 
return true;
}
function validatePhoneOnly(form){
	if(validatePhoneArea(form.indPhoneArea, 'Area Code') != false
	&& validatePhoneNum(form.indPhoneNumber, 'Phone Number') != false)
		return true;
	else
		return false;
		}
function validateDonation(form){
	data = form.dntnAmount.value;
	
	if (parseInt(data) != data || data < 0) {
    alert("Please enter a positive numeric value (no '$' sign).")
    return false
  } 
  else { return true }
}

function validateIndividual(form){
	if(validRequired(form.indFirst, 'First Name') != false
	&& validRequired(form.indLast, 'Last Name') != false
	&& validateZip(form.indZip, 'Zip Code') != false)
		return true;
		
	else 
		return false;
	}
function validateBilling(form){
 	if( 
	  validRequired(form.indFirst, 'First Name') != false
	&& validRequired(form.indLast, 'Last Name') != false
	&& validRequired(form.indAddress1, 'Billing Address') != false
	&& validRequired(form.indCity, 'Billing City') != false
	&& validRequired(form.indState, 'Billing State') != false
	&& validateZip(form.indZip, 'Billing Zip Code') != false
	&& validateEmail(form.indEmail) != false
	&& validatePhoneArea(form.indPhoneArea, 'Billing Area Code') != false
	&& validatePhoneNum(form.indPhoneNumber, 'Shipping Phone Number') != false
	)
		return true;
		
	else 
 		return false;
	}
function testValidate(form){
	alert( validRequired(form.indAddress1, 'First Name'))
	return false;
	}
function validateBillingAndShipping(form){
	if( 
	  validRequired(form.indFirst, 'First Name') != false
	&& validRequired(form.indLast, 'Last Name') != false
	&& validRequired(form.indAddress1, 'Billing Address') != false
	&& validRequired(form.indCity, 'Billing City') != false
	&& validRequired(form.indState, 'Billing State') != false
	&& validateZip(form.indZip, 'Billing Zip Code') != false
	&& validateEmail(form.indEmail) != false
	&& validatePhoneArea(form.indPhoneArea, 'Billing Area Code') != false
	&& validatePhoneNum(form.indPhoneNumber, 'Billing Phone Number') != false
	
	&& validRequired(form.indShipFirst, 'First Name') != false
	&& validRequired(form.indShipLast, 'Last Name') != false
	&& validRequired(form.indShipAddress1, 'Shipping Address') != false
	&& validRequired(form.indShipCity, 'Shipping City') != false
	&& validRequired(form.indShipState, 'Shipping State') != false
	&& validateZip(form.indShipZip, 'Shipping Zip Code') != false
	&& validatePhoneArea(form.indShipPhoneArea, 'Shipping Phone Area Code') != false
	&& validatePhoneNum(form.indShipPhoneNumber, 'Shipping Phone Number') != false
	)
		return true;
		
	else
		return false;
	}
function validateDonorBillingAndShipping(form){
	if( 
	  validRequired(form.indFirst, 'Billing Information First Name') != false
	&& validRequired(form.indLast, 'Billing Information Last Name') != false
	&& validRequired(form.indAddress1, 'Billing Information Address Line 1') != false
	&& validRequired(form.indCity, 'Billing Information City') != false
	&& validRequired(form.indState, 'Billing Information State') != false
	&& validateZip(form.indZip, 'Billing Information Zip') != false
	&& validateEmail(form.indEmail) != false

	&& validRequired(form.indShipFirst, 'Acknowledgement First Name') != false
	&& validRequired(form.indShipLast, 'Acknowledgement Last Name') != false
	&& validRequired(form.indShipAddress1, 'Acknowledgement Address Line 1') != false
	&& validRequired(form.indShipCity, 'Acknowledgement Address City') != false
	&& validRequired(form.indShipState, 'Acknowledgement Address State') != false
	&& validateZip(form.indShipZip, 'Acknowledgement Address Zip') != false
	)
		return true;
		
	else
		return false;
	}
function validateCCInfo(form){
	if( 
	  validRequiredSelect(form.cardType, 'Card Type') != false
	&& validRequiredSelect(form.expmo, 'Card Exp Mo.') != false
	&& validRequiredSelect(form.expyr, 'Card Exp Yr.') != false
	)
		return true;
		
	else 
		return false;
	}
	
function show(id){
		el = document.getElementById(id);
		if (el.style.display == 'none')
		{
			el.style.display = 'inline';
			el.style.visible = 'visible';
		} else {
			el.style.display = 'none';
			el.style.visible = 'collapse';
		}
	}

function MM_jumpMenu(targ,selObj,restore){ //v3.0 
		eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); 
		if (restore) selObj.selectedIndex=0; 
		}
		
function setShipping(form) {
	if(form.useBilling.checked) {
		form.indShipSalutation.value = form.indSalutation.value;
		form.indShipFirst.value = form.indFirst.value;
		form.indShipMid.value = form.indMid.value;
		form.indShipLast.value = form.indLast.value;
		form.indShipSuffix.value = form.indSuffix.value;
		form.indShipAddress1.value = form.indAddress1.value;
		form.indShipAddress2.value = form.indAddress2.value;
		form.indShipCity.value = form.indCity.value;
		form.indShipState.value = form.indState.value;
		form.indShipZip.value = form.indZip.value;
		form.indShipPhoneType.value = form.indPhoneType.value;
		form.indShipPhoneArea.value = form.indPhoneArea.value;
		form.indShipPhoneNumber.value = form.indPhoneNumber.value;
		form.indShipPhoneExt.value = form.indPhoneExt.value;
	}
	else {
		form.indShipSalutation.value = "";
		form.indShipFirst.value = "";
		form.indShipMid.value = "";
		form.indShipLast.value = "";
		form.indShipSuffix.value = "";
		form.indShipAddress1.value = "";
		form.indShipAddress2.value = "";
		form.indShipCity.value = "";
		form.indShipState.value = "";
		form.indShipZip.value = "";
		form.indShipPhoneType.value = "";
		form.indShipPhoneArea.value = "";
		form.indShipPhoneNumber.value = "";
		form.indShipPhoneExt.value = "";
	}
}
function setShipping2(form) {
	if(form.useBilling.checked) {
		form.indShipSalutation.value = form.indSalutation.value;
		form.indShipFirst.value = form.indFirst.value;
		form.indShipMid.value = form.indMid.value;
		form.indShipLast.value = form.indLast.value;
		form.indShipSuffix.value = form.indSuffix.value;
		form.indShipAddress1.value = form.indAddress1.value;
		form.indShipAddress2.value = form.indAddress2.value;
		form.indShipCity.value = form.indCity.value;
		form.indShipState.value = form.indState.value;
		form.indShipZip.value = form.indZip.value;
	}
	else {
		form.indShipSalutation.value = "";
		form.indShipFirst.value = "";
		form.indShipMid.value = "";
		form.indShipLast.value = "";
		form.indShipSuffix.value = "";
		form.indShipAddress1.value = "";
		form.indShipAddress2.value = "";
		form.indShipCity.value = "";
		form.indShipState.value = "";
		form.indShipZip.value = "";
	}
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset)
{
	var result = true;
	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function isValidCreditCardNumber(formField,ccType,fieldLabel,required)
{
	var result = true;
 	var ccNum = formField.value;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
 
  	if (result && (formField.value.length>0))
 	{ 
 		if (!allDigits(ccNum))
 		{
 			alert('Please enter only numbers (no dashes or spaces) for the "' + fieldLabel +'" field.');
			formField.focus();
			result = false;
		}	

		if (result)
 		{ 
 			
 			if (!LuhnCheck(ccNum) || !validateCCNum(ccType,ccNum))
 			{
 				alert('Please enter a valid ' + ccType + ' number in the ' + fieldLabel + ' field.\nIf the number appears correct, confirm that the\ncorrect card type has been selected.');
				formField.focus();
				result = false;
			}	
		} 

	} 
	
	return result;
}


function LuhnCheck(str) 
{
  var result = true;

  var sum = 0; 
  var mul = 1; 
  var strLen = str.length;
  
  for (i = 0; i < strLen; i++) 
  {
    var digit = str.substring(strLen-i-1,strLen-i);
    var tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10)
      sum += (tproduct % 10) + 1;
    else
      sum += tproduct;
    if (mul == 1)
      mul++;
    else
      mul--;
  }
  if ((sum % 10) != 0)
    result = false;
    
  return result;
}

function validateCCNum(cardType,cardNum)
{
	var result = false;
	cardType = cardType.toUpperCase();
	
	var cardLen = cardNum.length;
	var firstdig = cardNum.substring(0,1);
	var seconddig = cardNum.substring(1,2);
	var first2digs = cardNum.substring(0,2);
	var first4digs = cardNum.substring(0,4);

	switch (cardType)
	{
		case "VISA":
			result = ((cardLen == 16) || (cardLen == 13)) && (firstdig == "4");
			break;
		case "MASTERCARD":
			var validNums = "12345";
			result = (cardLen == 16) && (firstdig == "5") && (validNums.indexOf(seconddig)>=0);
			break;
		case "MC":
			var validNums = "12345";
			result = (cardLen == 16) && (firstdig == "5") && (validNums.indexOf(seconddig)>=0);
			break;
		case "DISCOVER":
			result = (cardLen == 16) && (first4digs == "6011");
			break;
		case "AMEX":
			result = (cardLen == 15) && ((first2digs == "34") || (first2digs == "37"));
			break;
	}
	return result;
}
var submitted = false;

function validCCForm(ccTypeField,ccNumField,ccExpMo, ccExpYr,ccCVVNum)
{
	var result = false;
	//first check to see if the form has already beed submited once, if so disable button and disable the button
	if(submitted){
		document.getElementById('orderSubmitButton').disabled=true;
		return false;
		}
	if(isValidCreditCardNumber(ccNumField,ccTypeField.value,"card number",true) && isValidExpDate(ccExpMo, ccExpYr) && isValidCVVNum(ccCVVNum)){
		result = true;
		}
	else
		result = false;
	if(!submitted && result){
		submitted = true;
		return result;
		}
	else
		return false;
}
function isValidCVVNum(ccCVVNum){
     var reCVV = /(^\d{3}$)|(^\d{4}$)/;
	
     if (!reCVV.test(ccCVVNum.value) || ccCVVNum.value.length == 0) {
		alert('Please enter a valid CVV number');
          return false;
     }
 
return true;
	}
function isValidExpDate(ccExpMo, ccExpYr){
	var curDate = new Date();
	var currMo = curDate.getMonth() + 1;
	var currYr = curDate.getYear();
	var result = true;

	if (ccExpYr.value < currYr ){
		result = false;
		alert('Please enter a valid credit card expiration date.');
		}
	else if (ccExpYr.value == currYr && ccExpMo.value < currMo){
		result = false;
		alert('Please enter a valid credit card expiration date.');
		}
	return result;
	
}

// Added for checking valid ticket amount for Stiletto Stroll
function validateTickets(form)
{
	message = '';
	with(form)
	{
		if (tickets.value == '' || tickets.value < 1)
		{
			message += 'Please enter a valid number of tickets.\n';
		}
		if(tickets.value - adultS.value - adultM.value - adultL.value - adultXL.value - youthS.value - youthM.value > 0)
		{
			message += 'You must choose a shirt for each attendee.\n';
		}
	}
	
	if(message.length > 0)
	{
		alert(message);
		return false;
	}
	else
		return true;
	
} // end of validateTickets()

function hideShowDiv(divID, numAttendees, theForm)
{
	continueProcess = true;
	
	//Make sure only numbers are in the field
	for(i=0; i<numAttendees.length; i++)
	{
		if(charString.search(numAttendees.charAt(i)) == -1)
			continueProcess = false;
	}
	
	if(continueProcess)
	{
		//Get the div element
		div = document.getElementById(divID);
		
		//If there are attendees, show the t-shirt registration div
		if(numAttendees == '' || numAttendees == 0)
			div.style.display = 'none';
		else
		{
			div.style.display = 'block';
//			shirtSpan = document.getElementById('tShirtLeft');
//			with(theForm)
//			{
//				shirtSpan.innerHTML = numAttendees - adultS.value - adultM.value - adultL.value - adultXL.value - youthS.value - youthM.value;
//			}
		}
	}
	else
	{
		alert('The value of the registration field has to be numerical');
		theForm.tickets.value = '';
		//Get the div element
		div = document.getElementById(divID);
		div.style.display = 'none';
	}
}

function applyTShirts(theForm, formField)
{
	for(i=0; i<formField.value.length; i++)
	{
		if(charString.search(formField.value.charAt(i)) == -1)
		{
			alert('Only numbers may be used in the fields.');
			formField.value = 0;
			return;
		}
	}
	
	if(formField.value == '')
		formField.value = 0;
	
	shirtSpan = document.getElementById('tShirtLeft');
	
	oldVal = shirtSpan.innerHTML;
	
	//Find out how many shirts are left
	with(theForm)
	{
		newVal = tickets.value - adultS.value - adultM.value - adultL.value - adultXL.value - youthS.value - youthM.value;
	}
	
	//They tried to add too many shirts
	if(newVal < 0)
	{
		alert('You don\'t have that many shirts left.');
		tShirtLeft.innerHTML = oldVal;
		formField.value = 0;
	}
	//They're good, set the new val in
	else
		tShirtLeft.innerHTML = newVal;
}

function changeRegistrants(theForm)
{
	with(theForm)
	{	
		shirtTotal = getValue(adultS) + getValue(adultM) + getValue(adultL) + getValue(adultXL) + getValue(youthS) + getValue(youthM);
		shirtText = document.getElementById('tShirtLeft');
		
		//They reduced their tickets, reset the shirt fields since we don't know which ones they will want
		if(shirtTotal > tickets.value)
		{
			adultS.value = 0;
			adultM.value = 0;
			adultL.value = 0;
			adultXL.value = 0;
			youthS.value = 0;
			youthM.value = 0;
			
			shirtText.innerHTML = tickets.value;
		}
		else
		{
			shirtText.innerHTML = tickets.value - shirtTotal;
		}
	}
}

function getValue(theField)
{
	//Returns the value of a field if it's not empty, if it's empty returns 0
	if(theField.value == '')
		return Number(0);
	else
		return Number(theField.value);
}