var whichButton;

// -----------------------------------------
//                  trim
// Trim leading/trailing whitespace off string
// -----------------------------------------

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '')
};

// -----------------------------------------
//            commonCheck
// Common code for all validation routines to:
// (a) check for older / less-equipped browsers
// (b) check if empty fields are required
// Returns true (validation passed), 
//         false (validation failed) or 
//         proceed (don't know yet)
// -----------------------------------------

function commonCheck    (vfld,   // element to be validated
                         low,	//min number of characters
						 high	//max number of characters
						 )   
{
  
  if(vfld == null)
  	return true;
  
  var emptyString = /^\s*$/;
  if (!document.getElementById) 
    return true;  // not available on this browser - leave validation to the server
  if (emptyString.test(vfld.value)){
	  return false;
  }
  if(vfld.value.length < low)
  	return false;
  if(vfld.value.length > high)
  	return false;
	
  return true;
}


// -----------------------------------------
//               validateEmail
// Validate if e-mail address
// Returns true if so (and also if could not be executed because of old browser)
// -----------------------------------------

function validateEmail  (vfld   // element to be validated
							)
{
  if(vfld == null)
	return true;	
  var stat = commonCheck (vfld);
  if (!stat) return false;

  var tfld = trim(vfld.value);  // value of field with whitespace trimmed off
  var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/
  if (!email.test(tfld)) {
    return false;
  }
  return true;
}

function validatePaymentForm() {
	var errs=0;
	var message="";
	
	if(whichButton != null)
		if(whichButton.value=="Cancel")
			return true;
			
	if (!commonCheck(document.forms.payment.cardtype, 3, 40)){
		errs += 1;
		message += "Choose a Card Type\n";
	}
	if (!commonCheck(document.forms.payment.cardnumber, 8, 40)){
		errs += 1;
		message += "Missing Card Number\n";
	}	
	if (!commonCheck(document.forms.payment.firstname, 1, 40)){
		errs += 1;
		message += "Missing First Name\n";
	}	
	if (!commonCheck(document.forms.payment.lastname, 1, 40)){
		errs += 1;
		message += "Missing Last Name\n";
	}	
	if (!commonCheck(document.forms.payment.address, 3, 200)){
		errs += 1;
		message += "Missing Billing Address\n";
	}	
	if (!commonCheck(document.forms.payment.city, 3, 100)){
		errs += 1;
		message += "Missing Billing City\n";
	}	
	if (!commonCheck(document.forms.payment.state, 1, 100)){
		errs += 1;
		message += "Missing Billing State/Province\n";
	}		
	if (!commonCheck(document.forms.payment.zip, 1, 20)){
		errs += 1;
		message += "Missing Billing Zip Code\n";
	}	
	if (!validateEmail(document.forms.payment.email)){
		errs += 1;
		message += "Invalid Email\n";
	}
	if (!commonCheck(document.forms.payment.phone, 7, 20)){
		errs += 1;
		message += "Missing Phone Number\n";
	}		
	if (errs>=1){
		alert("Please check your info:\n\n"+message);
	}
	else{
		$('#purchase').attr("disabled","true");
	}

	return (errs==0);	
}


function validateOnSubmitDownload() {
	var elem;
	var errs=0;
	var message="";

	if (!commonCheck(document.forms.info.name, 3, 40)){
		errs += 1;
		message += "Invalid Name\n";
	}
	if (!validateEmail(document.forms.info.from)){
		errs += 1;
		message += "Invalid Email\n";
	}


	if (errs>=1)  alert("Please check your info:\n\n"+message);

	return (errs==0);
}


function validateOnSubmit() {
	var elem;
	var errs=0;
	var message="";

	if (!commonCheck(document.forms.info.name, 3, 40)){
		errs += 1;
		message += "Invalid Name\n";
	}
	if (!validateEmail(document.forms.info.from)){
		errs += 1;
		message += "Invalid Email\n";
	}
	if(document.forms.info.from.value != document.forms.info.email2.value){
		errs += 1;
		message += "Email does not match Confirm Email.  Please retype.\n";
	}


	if (errs>=1)  alert("Please check your info:\n\n"+message);

	return (errs==0);
}

function validateOnSubmit2() {
	var elem;
	var errs=0;
	var message="";

	if (!commonCheck(document.forms.info.username, 6, 15)){
		errs += 1;
		message += "Invalid Username (Must be 6-15 characters)\n";
	}
	if (!commonCheck(document.forms.info.password, 6, 15)){
		errs += 1;
		message += "Invalid Password  (Must be 6-15 characters)\n";
	}
	if(document.forms.info.password.value != document.forms.info.password2.value){
		errs += 1;
		message += "Password does not match Confirm Password\n";
	}

	if (errs>=1)  alert("Please check your info:\n\n"+message);

	return (errs==0);
}

function validateTrial() {
	var elem;
	var errs=0;
	var message="";

	if (!commonCheck(document.forms.info.name, 3, 40)){
		errs += 1;
		message += "Invalid Name\n";
	}
	if (!validateEmail(document.forms.info.email)){
		errs += 1;
		message += "Invalid Email\n";
	}

	if (errs>=1)  alert("Please check your info:\n\n"+message);

	return (errs==0);
}

function validateContactForm() {
	var elem;
	var errs=0;
	var message="";

	if (!commonCheck(document.forms.contactform.name, 3, 40)){
		errs += 1;
		message += "Invalid Name\n";
	}
	if (!validateEmail(document.forms.contactform.email)){
		errs += 1;
		message += "Invalid Email\n";
	}
	if (!commonCheck(document.forms.contactform.subject, 1, 1000)){
		errs += 1;
		message += "Missing Subject\n";
	}	

	if (errs>=1)  alert("Please check your info:\n\n"+message);

	return (errs==0);
}

function validateOfferForm(form) {
	var elem;
	var errs=0;
	var message="";

	if (!commonCheck(form.name, 3, 40)){
		errs += 1;
		message += "Invalid Name\n";
	}
	if (!validateEmail(form.email)){
		errs += 1;
		message += "Invalid Email\n";
	}
	if (!commonCheck(form.username, 1, 100)){
		errs += 1;
		message += "Missing Username\n";
	}	

	if (errs>=1)  alert("Please check your info:\n\n"+message);

	return (errs==0);
}
