// JavaScript Document
function isEmailAddr(email) {
  var filterEmail  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  if (!filterEmail.test(email)) {
	return false;  
  }
  return true;
}

function validEmail(formField,fieldLabel,required) {
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		alert("Please enter a complete email address in the form: yourname@yourdomain.com");
		formField.focus();
		result = false;
	}
   
  return result;
}

function validRequired(formField,fieldLabel) {
	var result = true;
	if (formField.value == "") {
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	return result;
}

function validateCheckoutForm(form) {
	/* validate shipping/billing info */
	if (!validRequired(form.firstname,"First Name")) { return false; }
	if (!validRequired(form.lastname,"Last Name")) { return false; }
	if (!validRequired(form.streetaddress,"Street Address")) { return false; }
	if (!validRequired(form.city,"City")) { return false; }
	if (!validRequired(form.state,"State")) { return false; }
	if (!validRequired(form.postalcode,"Postal Code")) { return false; }
	if (form.postalcode.value.length != 5) {
		alert("Please enter a valid postal code (5 digits).");
		return false;
	}
	
	if (!validRequired(form.telephone,"Telephone")) { return false; }
	if (!validEmail(form.email,"Email Address",true)) { return false; }
	
	
	/* validate cc info */
	if (!form.payment_option || (form.payment_option && form.payment_option.options[form.payment_option.selectedIndex].value == 'Credit Card') ) {
		
		if (!validRequired(form.billing_cardnumber,"Credit Card Number")) { return false; }
		
		/* check credit card length
		if (form.billing_cardtype[form.billing_cardtype.selectedIndex].value == "Visa" || form.billing_cardtype[form.billing_cardtype.selectedIndex].value == "Mastercard" || form.billing_cardtype[form.billing_cardtype.selectedIndex].value == "Discover") {
			if (form.billing_cardnumber.value.length != 16) {
				alert("Please enter a valid credit card number (16 digits long)");
				form.billing_cardnumber.focus();
				return false;
			}
			if (form.billing_cvv2.value.length != 3) {
				alert("Please enter a valid credit card security code (3 digits long)");
				form.billing_cvv2.focus();
				return false;
			}			
		}
		else if (form.billing_cardtype[form.billing_cardtype.selectedIndex].value == "American Express") {
			if (form.billing_cardnumber.value.length != 15) {
				alert("Please enter a valid credit card number (15 digits long)");	
				form.billing_cardnumber.focus();
				return false;
			}
			if (form.billing_cvv2.value.length != 4) {
				alert("Please enter a valid credit card security code (4 digits long)");
				form.billing_cvv2.focus();
				return false;
			}	
		}
		*/
		
		if (!validRequired(form.billing_cvv2,"Credit Card Verification # (CVV2)")) { return false; }
		if (form.billing_month.selectedIndex == 0 || form.billing_year.selectedIndex == 0) { alert("Please select a valid card expiration"); return false; }
	}

	return true;
}
function checkState(obj) {
	if (obj.options[obj.selectedIndex].value == "other") {
		// show state box
		var string = new Array();
		string.push("Other State:&nbsp;<input type=\"text\" name=\"state_other\" value=\"\">");
		var writestring = string.join('');
		document.getElementById('state_additional').innerHTML = writestring;
	}
	else {
		document.getElementById('state_additional').innerHTML = '';
	}
}
function checkShippingState(obj) {
	if (obj.options[obj.selectedIndex].value == "other") {
		// show state box
		var string = new Array();
		string.push("Other State:&nbsp;<input type=\"text\" name=\"shipping_state_other\" value=\"\">");
		var writestring = string.join('');
		document.getElementById('shipping_state_additional').innerHTML = writestring;
	}
	else {
		document.getElementById('shipping_state_additional').innerHTML = '';
	}
}