function validRequired(formField,fieldLabel,errMsgID)
{
	var result = true;
	document.getElementById(errMsgID).innerHTML = "";

	var str = formField.value;

	str = str.replace(/\s+$/,""); //rtrim
	
	if (str == "")
	{
		document.getElementById(errMsgID).innerHTML = "Please enter your " + fieldLabel +".";
		formField.focus();
		result = false;
	}
	
	return result;
}

function validChoiceRequired(formField,fieldLabel,errMsgID)
{
	var result = true;
	document.getElementById(errMsgID).innerHTML = "";

	var str = formField.value;

	str = str.replace(/\s+$/,""); //rtrim
	
	if (str == "")
	{
		document.getElementById(errMsgID).innerHTML = "Please choose your " + fieldLabel +".";
		formField.focus();
		result = false;
	}
	
	return result;
}


function validateIsbnForm(theForm)
{
	//TODO: this is called from index.php and index.htm
	if (!validRequired(theForm.isbn, "ISBN", "errisbn"))
		return false;

	return true;
}

function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validEmail(formField,fieldLabel,required,errMsgID)
{
	var result = true;
	document.getElementById(errMsgID).innerHTML = "";
	
	if (required && !validRequired(formField,fieldLabel,errMsgID))
		result = false;

	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		document.getElementById(errMsgID).innerHTML = "Please enter an email address in the form: yourname@yourdomain.com";
		formField.focus();
		result = false;
	}
   
  return result;

}

function validPhone (formField,fieldLabel,required,errMsgID) {
	
	document.getElementById(errMsgID).innerHTML = "";
	var strng = formField.value;
	
	if (required && !validRequired(formField,fieldLabel,errMsgID)) 
	   return false;
	
	var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters
		if (isNaN(parseInt(stripped))) {
		    document.getElementById(errMsgID).innerHTML = "The phone number contains illegal characters.";
	  		formField.focus();
	   		return false;
		}
		if (!(stripped.length >= 10)) {
			document.getElementById(errMsgID).innerHTML = "The phone number is the wrong length. Make sure you included an area code.";
			formField.focus();
			return false;
		} 
	return true;
}


function passwordsMatch(pwd1, pwd2, errMsgID)
{
	document.getElementById(errMsgID).innerHTML = "";
	if(pwd1.value != pwd2.value) 
	{	
		document.getElementById(errMsgID).innerHTML = "Please retype the passwords. They do not match.";
		pwd1.focus();		
		return false;
	}


	return true;
}

function validateEmailForm(theForm)
{
	// called from password_reminder.php
	if (!validEmail(theForm.email,"Email Address",true,"erremail"))
		return false;

	return true;
}

function validateRegistrationForm(theForm)
{
	// called from register.php

	var result = true;
	var validPwd = true;
	var validVerifyPwd = true;

	if (!validEmail(theForm.email, "Email Address", true, "erremail"))
		result = false;
		
	if (!validRequired(theForm.pwd,"Password", "errpassword"))
	{
		result = false;
		validPwd = false;
	}
		
	if (!validRequired(theForm.verifypwd,"Password", "errverifypassword"))
	{
		result = false;
		validVerifyPwd = false;
	}
		
	if (validPwd && validVerifyPwd && !passwordsMatch(theForm.pwd, theForm.verifypwd, "errverifypassword"))
		result = false;
		
	if (!validRequired(theForm.firstname,"First Name", "errfirstname"))
		result = false;
		
	if (!validRequired(theForm.lastname,"Last Name", "errlastname"))
		result = false;
		
	if (!validRequired(theForm.add1,"Address Line 1", "erraddresslineone"))
		result = false;
		
	if (!validRequired(theForm.city,"City", "errcity"))
		result = false;
		
	if (!validRequired(theForm.state,"State", "errstate"))
		result = false;
		
	if (!validRequired(theForm.zip,"Zip-Code", "errzip"))
		result = false;
				
	if (!validRequired(theForm.area_code,"Phone Number", "errphone"))
		result = false;
		
	if (!validRequired(theForm.prefix,"Phone Number", "errphone"))
		result = false;
		
	if (!validRequired(theForm.suffix,"Phone Number", "errphone"))
		result = false;
		
	if(result==false)
	{
		document.getElementById("errsubmit").innerHTML = "Please correct the errors above, then click Submit again.";
	}

	return result;
}


function validateUpdateAccountForm(theForm)
{
	// called from update_account.php
	var result = true;
	var validPwd = true;
	var validVerifyPwd = true;
	
	
	if (!validEmail(theForm.newemail, "Email Address", true, "erremail"))
		result = false;
	
	if (!validRequired(theForm.pwd,"Password", "errpassword"))
	{
		result = false;
		validPwd = false;
	}
		
	if (!validRequired(theForm.verifypwd,"Password", "errverifypassword"))
	{
		result = false;
		validVerifyPwd = false;
	}
		
	if (validPwd && validVerifyPwd && !passwordsMatch(theForm.pwd, theForm.verifypwd, "errverifypassword"))
		result = false;
		
	 if (!validRequired(theForm.fullname,"Full Name", "errfullname"))
		result = false;
		
	 if (!validRequired(theForm.add1,"Address Line 1", "erraddresslineone"))
		result = false;
		
	 if (!validRequired(theForm.city,"City", "errcity"))
		result = false;
		
	 if (!validRequired(theForm.state,"State", "errstate"))
		result = false;
		
	 if (!validRequired(theForm.zip,"Zip-Code", "errzip"))
		result = false;

	if (!validRequired(theForm.area_code,"Phone Number", "errphone"))
		result = false;
		
	if (!validRequired(theForm.prefix,"Phone Number", "errphone"))
		result = false;
		
	if (!validRequired(theForm.suffix,"Phone Number", "errphone"))
		result = false;

	if(result==false)
	{
		document.getElementById("errsubmit").innerHTML = "Please correct the errors above, then click Submit again.";
	}

	return result;
}
function validateShippingStep1(theForm)
{
	// called from includes/print_and_ship_util.php
	var result = true;
	if (!validChoiceRequired(theForm.orderid,"order","errorderid"))
		result = false;

	if (!validChoiceRequired(theForm.num_boxes,"number of boxes","errnumboxes"))
		result = false;
		
	return result;
}