function frm_validate(whichForm){

var themessage = "The required information is incomplete or contains errors:\t\t\t\t\t\n\n";
var themessage2 = "";

if(whichForm.username.value==""){
	themessage = themessage + "\tPlease enter your username.\n";
}

if(whichForm.password.value==""){
	themessage = themessage + "\tPlease enter your password.\n";
}

if (whichForm.password.value != whichForm.repassword.value) {
	themessage = themessage + "\tPlease re-enter your password.\n";
}


if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(whichForm.email_add.value))){
	themessage = themessage + "\tPlease enter a valid email address.\n";
}

if(whichForm.license_type.selectedIndex==0){
	themessage = themessage + "\tPlease select a license type.\n";
}

if(whichForm.fname.value==""){
	themessage = themessage + "\tPlease enter your first name.\n";
}

if(whichForm.lname.value==""){
	themessage = themessage + "\tPlease enter your last name.\n";
}

if(whichForm.library.value==""){
	themessage = themessage + "\tPlease enter company or school.\n";
}

if(whichForm.street.value==""){
	themessage = themessage + "\tPlease enter your street address.\n";
}

if(whichForm.city.value==""){
	themessage = themessage + "\tPlease enter your city.\n";
}

if(whichForm.zip.value==""){
	themessage = themessage + "\tPlease enter your zip/postal code.\n";
}

if(whichForm.ship_state.selectedIndex==0 && whichForm.state_other.value==""){
	themessage = themessage + "\tPlease select a state or province.\n";
}


if(whichForm.country.value==""){
	themessage = themessage + "\tPlease enter your country.\n";
}

if(whichForm.phone.value==""){
	themessage = themessage + "\tPlease enter your phone number.\n";
}


 //validate payment method
var choice = -1;
for (i=0; i<whichForm.payment.length; i++) {
if (whichForm.payment[i].checked) {
choice = i;
}
}
if (choice == -1) {
	themessage = themessage + "\tPlease select a payment method.\n";
}

if(whichForm.payment[0].checked && whichForm.ponum.value==""){
	themessage = themessage + "\tPlease enter a purchase number.\n";
}

 //validate billing address

if(whichForm.bill_address.checked == false){
	themessage2 = "\nThe required information for billing address is incomplete or contains errors:\t\t\t\t\t\n";
}

if((whichForm.fname_bill.value=="") && (whichForm.bill_address.checked == false)){
	themessage2 = themessage2 + "\tPlease enter your first name.\n";
}

if((whichForm.lname_bill.value=="") && (whichForm.bill_address.checked == false)){
	themessage2 = themessage2 + "\tPlease enter your last name.\n";
}

if(whichForm.library_bill.value=="" && whichForm.bill_address.checked == false){
	themessage2 = themessage2 + "\tPlease enter your company or school.\n";
}

if((whichForm.street_bill.value=="") && (whichForm.bill_address.checked == false)){
	themessage2 = themessage2 + "\tPlease enter your street address.\n";
}

if((whichForm.city_bill.value=="") && (whichForm.bill_address.checked == false)){
	themessage2 = themessage2 + "\tPlease enter your city.\n";
}

if((whichForm.zip_bill.value=="") && (whichForm.bill_address.checked == false)){
	themessage2 = themessage2 + "\tPlease enter your zip or postal code.\n";
}

if((whichForm.bill_state.selectedIndex==0) && (whichForm.state_other_bill.value=="") && (whichForm.bill_address.checked == false)){
	themessage2 = themessage2 + "\tPlease select your state or province.\n";
}

if((whichForm.country_bill.value=="") && (whichForm.bill_address.checked == false)){
	themessage2 = themessage2 + "\tPlease enter your country.\n";
}

if((whichForm.phone_bill.value=="") && (whichForm.bill_address.checked == false)){
	themessage2 = themessage2 + "\tPlease enter your phone number.\n";
}

//alert if fields are empty and cancel form submit
if ((themessage == "The required information is incomplete or contains errors:\t\t\t\t\t\n\n") && ((themessage2 == "\nThe required information for billing address is incomplete or contains errors:\t\t\t\t\t\n") || (themessage2 == ""))) {
return true;
}
else {
alert(themessage + themessage2);
return false;
	}
}