//--------------------------------------------------------------
//--- validate the Email a Friend form
//--------------------------------------------------------------

function valFrmEmailFriend() {

if (!requiredCheck(document.frmEmailFriend.sname, "Your Name")) return false;
if (!requiredCheck(document.frmEmailFriend.smail, "Your E-mail Address")) return false;
if (!emailCheck(document.frmEmailFriend.smail, "Your E-mail Address")) return false;
if (!requiredCheck(document.frmEmailFriend.rmail, "Recipient's E-mail Address")) return false;
if (!emailCheck(document.frmEmailFriend.rmail, "Recipient's E-mail Address")) return false;
	
	document.frmEmailFriend.submit();
	return true;

}



//--------------------------------------------------------------
//--- validate the Country QA form
//--------------------------------------------------------------

function valFrmCountryQA() {

if (!requiredCheck(document.frmCountryQA.name, "Your Name")) return false;
if (!requiredCheck(document.frmCountryQA.email, "Your E-mail Address")) return false;
if (!emailCheck(document.frmCountryQA.email, "Your E-mail Address")) return false;
if (!requiredCheck(document.frmCountryQA.question, "Your Question")) return false;
if (!requiredCheck(document.frmCountryQA.city, "City")) return false;
if (!requiredCheck(document.frmCountryQA.state, "State")) return false;
	
	document.frmCountryQA.submit();
	return true;

}



//--------------------------------------------------------------
//--- validate the Legends QA form
//--------------------------------------------------------------

function valFrmLegendsQA() {

if (!requiredCheck(document.frmLegendsQA.name, "Your Name")) return false;
if (!requiredCheck(document.frmLegendsQA.email, "Your E-mail Address")) return false;
if (!emailCheck(document.frmLegendsQA.email, "Your E-mail Address")) return false;
if (!requiredCheck(document.frmLegendsQA.question, "Your Question")) return false;
if (!requiredCheck(document.frmLegendsQA.city, "City")) return false;
if (!requiredCheck(document.frmLegendsQA.state, "State")) return false;
	
	document.frmLegendsQA.submit();
	return true;

}



//--------------------------------------------------------------
//--- validate the newsletter subscribe form
//--------------------------------------------------------------

function valFrmNewsletterSubscribe() {

if (!requiredCheck(document.frmNewsletterSubscribe.email, "E-mail Address")) return false;
if (!emailCheck(document.frmNewsletterSubscribe.email, "E-mail Address")) return false;
if (!requiredCheck(document.frmNewsletterSubscribe.email_confirm, "Confirm E-mail Address")) return false;
if (!emailCheck(document.frmNewsletterSubscribe.email_confirm, "Confirm E-mail Address")) return false;

if (document.frmNewsletterSubscribe.email.value != document.frmNewsletterSubscribe.email_confirm.value) {
	alert("Confirm E-mail Address must match the corresponding Email Address.");
	document.frmNewsletterSubscribe.email_confirm.select(); return false;
}

if (!requiredCheck(document.frmNewsletterSubscribe.FIRST_NAME_, "First Name")) return false;
if (!requiredCheck(document.frmNewsletterSubscribe.LAST_NAME_, "Last Name")) return false;

if (!requiredCheck(document.frmNewsletterSubscribe.CITY_, "City")) return false;
if (!requiredCheck(document.frmNewsletterSubscribe.STATE_PROVINCE_, "State/Country")) return false;
if (!requiredCheck(document.frmNewsletterSubscribe.POSTAL_CODE_, "Zip/Postal Code")) return false;
if (!requiredCheck(document.frmNewsletterSubscribe.BIRTH_YEAR_, "Birth Year")) return false;

if (!(document.frmNewsletterSubscribe.GENDER_[0].checked) && !(document.frmNewsletterSubscribe.GENDER_[1].checked) ){
	alert("Gender is a required field."); return false;
}

if (document.frmNewsletterSubscribe.PHONE_HOME_.value == "") {
	document.frmNewsletterSubscribe.PHONE_HOME_.value = "."
}

	document.frmNewsletterSubscribe.submit();
	return true;

}



//--------------------------------------------------------------
//--- validate the newsletter change email form
//--------------------------------------------------------------

function valFrmNewsletterChangeEmail() {

if (!requiredCheck(document.frmNewsletterChangeEmail.email, "E-mail Address")) return false;
if (!emailCheck(document.frmNewsletterChangeEmail.email, "E-mail Address")) return false;
if (!requiredCheck(document.frmNewsletterChangeEmail.email_confirm, "Confirm E-mail Address")) return false;
if (!emailCheck(document.frmNewsletterChangeEmail.email_confirm, "Confirm E-mail Address")) return false;

if (document.frmNewsletterChangeEmail.email.value != document.frmNewsletterChangeEmail.email_confirm.value) {
	alert("Confirm Old E-mail Address must match the corresponding Old Email Address.");
	document.frmNewsletterChangeEmail.email_confirm.select(); return false;
}

if (!requiredCheck(document.frmNewsletterChangeEmail.emailnew, "New E-mail Address")) return false;
if (!emailCheck(document.frmNewsletterChangeEmail.emailnew, "New E-mail Address")) return false;
if (!requiredCheck(document.frmNewsletterChangeEmail.emailnew_confirm, "Confirm New E-mail Address")) return false;
if (!emailCheck(document.frmNewsletterChangeEmail.emailnew_confirm, "Confirm New E-mail Address")) return false;

if (document.frmNewsletterChangeEmail.emailnew.value != document.frmNewsletterChangeEmail.emailnew_confirm.value) {
	alert("Confirm Old E-mail Address must match the corresponding New Email Address.");
	document.frmNewsletterChangeEmail.emailnew_confirm.select(); return false;
}

	document.frmNewsletterChangeEmail.submit();
	return true;

}



//--------------------------------------------------------------
//--- validate the newsletter change email form
//--------------------------------------------------------------

function valFrmNewsletterUnsubscribe() {

if (!requiredCheck(document.frmNewsletterUnsubscribe.email, "E-mail Address")) return false;
if (!emailCheck(document.frmNewsletterUnsubscribe.email, "E-mail Address")) return false;
if (!requiredCheck(document.frmNewsletterUnsubscribe.email_confirm, "Confirm E-mail Address")) return false;
if (!emailCheck(document.frmNewsletterUnsubscribe.email_confirm, "Confirm E-mail Address")) return false;

if (document.frmNewsletterUnsubscribe.email.value != document.frmNewsletterUnsubscribe.email_confirm.value) {
	alert("Confirm E-mail Address must match the corresponding Email Address.");
	document.frmNewsletterUnsubscribe.email_confirm.select(); return false;
}

	document.frmNewsletterUnsubscribe.submit();
	return true;

}



//--------------------------------------------------------------
//--- validate the questions form
//--------------------------------------------------------------

function valFrmQuestions() {

if (!requiredCheck(document.frmQuestions.fvEmail, "E-mail Address")) return false;
if (!emailCheck(document.frmQuestions.fvEmail, "E-mail Address")) return false;
if (!requiredCheck(document.frmQuestions.fvEmail_Confirm, "Confirm E-mail Address")) return false;
if (!emailCheck(document.frmQuestions.fvEmail_Confirm, "Confirm E-mail Address")) return false;

if (document.frmQuestions.fvEmail.value != document.frmQuestions.fvEmail_Confirm.value) {
	alert("Confirm E-mail Address must match the corresponding Email Address.");
	document.frmQuestions.fvEmail_Confirm.select(); return false;
}

if (!requiredCheck(document.frmQuestions.fvFirstName, "First Name")) return false;
if (!requiredCheck(document.frmQuestions.fvLastName, "Last Name")) return false;

if (!requiredCheck(document.frmQuestions.fvCity, "City")) return false;
if (!requiredCheck(document.frmQuestions.fvState, "State/Country")) return false;
if (!requiredCheck(document.frmQuestions.fvZip, "Zip/Postal Code")) return false;
if (!requiredCheck(document.frmQuestions.fvAge, "Birth Year")) return false;

if (!(document.frmQuestions.fvGender[0].checked) && !(document.frmQuestions.fvGender[1].checked) ){
	alert("Gender is a required field."); return false;
}

if (!requiredCheck(document.frmQuestions.fvQuestionType, "Is this a Question or a Comment")) return false;
if (!requiredCheck(document.frmQuestions.fvQuestions, "Your Message")) return false;

	document.frmQuestions.submit();
	return true;

}



//--------------------------------------------------------------
//--- validate the updated questions form (instant service)
//--------------------------------------------------------------

function valISFrmQuestions() {

if (!requiredCheck(document.frmQuestions.email, "E-mail Address")) return false;
if (!emailCheck(document.frmQuestions.email, "E-mail Address")) return false;
if (!requiredCheck(document.frmQuestions.confirm, "Confirm E-mail Address")) return false;
if (!emailCheck(document.frmQuestions.confirm, "Confirm E-mail Address")) return false;

if (document.frmQuestions.email.value != document.frmQuestions.confirm.value) {
	alert("Confirm E-mail Address must match the corresponding Email Address.");
	document.frmQuestions.confirm.select(); return false;
}

if (!requiredCheck(document.frmQuestions.fname, "First Name")) return false;
if (!requiredCheck(document.frmQuestions.lname, "Last Name")) return false;

if (!requiredCheck(document.frmQuestions.optionaldata2, "City")) return false;
if (!requiredCheck(document.frmQuestions.optionaldata3, "State/Country")) return false;
if (!requiredCheck(document.frmQuestions.optionaldata4, "Zip/Postal Code")) return false;
if (!requiredCheck(document.frmQuestions.optionaldata8, "Cable Company")) return false;
if (!requiredCheck(document.frmQuestions.optionaldata9, "Last Watched")) return false;
if (!requiredCheck(document.frmQuestions.optionaldata10, "Time Viewed")) return false;

if (!requiredCheck(document.frmQuestions.optionaldata6, "GAC Show")) return false;
if (!requiredCheck(document.frmQuestions.optionaldata5, "Is this a Question or a Comment")) return false;
if (!requiredCheck(document.frmQuestions.optionaldata7, "Your Message")) return false;

	document.frmQuestions.submit();
	return true;

}



//--------------------------------------------------------------
//--- validate required fields
//--------------------------------------------------------------

function requiredCheck(field, strLabel){
strField=field.value
if (strField == "" || strField == null){
alert(strLabel + " is a required field");
field.focus();
return false;
}
return true;
}


//--------------------------------------------------------------
//--- validate email 
//--------------------------------------------------------------

function emailCheck (emailCtrl, strLabel) {
var emailStr = emailCtrl.value
var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
var validChars="\[^\\s" + specialChars + "\]"
var firstChars=validChars
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
var atom="(" + firstChars + validChars + "*" + ")"
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

var matchArray=emailStr.match(emailPat)

if (emailStr=="") return true;

if (matchArray==null) {
	alert("Please enter a valid E-mail Address (name@domain.com)");
	emailCtrl.select();
	return false;
}
var user=matchArray[1]
var domain=matchArray[2]

if (user.match(userPat)==null) {
    alert("Please enter a valid E-mail Address (name@domain.com)");
	emailCtrl.select();
    return false;
}

var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	    alert("Destination IP address for " + strLabel + " is invalid!");
		emailCtrl.select();
		return false;
	    }
    }
    return true;
}

var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("Please enter a valid E-mail Address (name@domain.com)");
	emailCtrl.select();
    return false;
}

var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>3) {
   alert("Please enter a valid E-mail Address (name@domain.com)");
	emailCtrl.select();
   return false;
}

if (domArr[domArr.length-1].length==2 && len<3) {
   var errStr="Please enter a valid e-mail address (name@domain.com) - This address ends in two characters, which is a country"
   errStr+=" code.  Country codes must be preceded by "
   errStr+="a hostname and category (like com, co, pub, pu, etc.)";
   alert(errStr);
	emailCtrl.select();
   return false;
}

if (domArr[domArr.length-1].length==3 && len<2) {
   var errStr="Please enter a valid E-mail Address (name@domain.com)"
   alert(errStr);
	emailCtrl.select();
   return false;
}

return true;
}