// JavaScript Document
function fnValidateQuestion()
{
	var frm = document.question;
	
	if(frm.frmQuestion.value == "" || frm.frmQuestion.value == null)
	{
		frm.frmQuestion.focus();
		alert("Please enter a question.");
		return false;
	}
	if(frm.frmEmail.value == "" || frm.frmEmail.value == null)
	{
		frm.frmEmail.focus();
		alert("Please enter your email.");
		return false;
	}
	if(isEmail(frm.frmEmail.value)==false)
	{
		frm.frmEmail.focus();
		return false;
	}
}


function fnValidatePassword()
{
	var frm = document.loginA;
	if(isEmail(frm.frmEmail.value)==false)
	{
		frm.frmEmail.focus();
		return false;
	}
}


function fnValidatePasswordsExpire()
{
	var frm = document.changePassword;
	if(isEmail(frm.frmEmail.value)==false)
	{
		frm.frmEmail.focus();
		return false;
	}
	if(frm.frmOldPassword.value =="" || frm.frmOldPassword.value == null)
	{
		frm.frmOldPassword.focus();
		alert("Please enter your old password.");
		return false;
	}
	
	if(frm.frmPasswordA.value== "" || frm.frmPasswordA.value== null)
	{
		frm.frmPasswordA.focus();
		alert("Password field may not be left blank. Enter a password from 5 to 16 characters in length.");
		return false;
	}
	if(frm.frmPasswordA.value.length < 8)
	{
		frm.frmPasswordA.focus();
		alert("Your PASSWORD must be 8 characters or more.");
		return false;
	}
	if(frm.frmPasswordA.value.length > 16)
	{
		frm.frmPasswordA.focus();
		alert("Your PASSWORD must 16 characters or less.");
		return false;
	}
	if(frm.frmPasswordA.value != frm.frmPasswordB.value)
	{
		frm.frmPasswordA.focus();
		alert("Your PASSWORDs do not match. Make sure they match.");
		return false;
	}
}

function fnValidateProfile()
{
	var frm = document.profile;
	var re_three = /\d{3}/;
	var re_four = /\d{4}/;
	var re_any = /\d{1,}/;
	var count = 0;
	
	if(frm.frmFName.value == "")
	{
		frm.frmFName.focus();
		alert("Please enter a first name.");
		return false;
	}
	if(frm.frmLName.value == "")
	{
		frm.frmLName.focus();
		alert("Please enter a last name.");
		return false;
	}
	if(isEmail(frm.frmEmail.value)==false)
	{
		frm.frmEmail.focus();
		return false;
	}
	if(frm.frmAddress.value == "")
	{
		frm.frmAddress.focus();
		alert("Please enter your address.");
		return false;
	}
	if (frm.frmAddress.value.length >= 75) {
		frm.frmAddress.focus();
		alert("Unfortunately, the address you have entered is too long.  If possible, please abbreviate this address.");
		return false;
	}
	if(frm.frmCity.value == "")
	{
		frm.frmCity.focus();
		alert("Please enter a city.");
		return false;
	}
	if(frm.frmZip.value == "")
	{
		frm.frmZip.focus();
		alert("Please enter your zipcode.");
		return false;
	}
	
	if (frm.frmWorkPhone1.value != "") {
		if (!(re_three.test(frm.frmWorkPhone1.value) && 
			  re_three.test(frm.frmWorkPhone2.value) && 
			  re_four.test(frm.frmWorkPhone3.value))) {
			alert("The phone number you provide most contain a 3-digit area code, a 3-digit prefix, and a 4-digit suffix.");
			frm.frmWorkPhone1.focus();
			return false;
		}
		count++;
	}
	if (frm.frmHomePhone1.value != "") {
		if (!(re_three.test(frm.frmHomePhone1.value) && 
			  re_three.test(frm.frmHomePhone2.value) && 
			  re_four.test(frm.frmHomePhone3.value))) {
			alert("The phone number you provide most contain a 3-digit area code, a 3-digit prefix, and a 4-digit suffix.");
			frm.frmHomePhone1.focus();
			return false;
		}
		count++;
	}
	if (frm.frmMobilePhone1.value != "") {
		if (!(re_three.test(frm.frmMobilePhone1.value) && 
			  re_three.test(frm.frmMobilePhone2.value) && 
			  re_four.test(frm.frmMobilePhone3.value))) {
			alert("The phone number you provide most contain a 3-digit area code, a 3-digit prefix, and a 4-digit suffix.");
			frm.frmMobilePhone1.focus();
			return false;
		}
		count++;
	}
	if (frm.frmPager1.value != "") {
		if (!(re_three.test(frm.frmPager1.value) && 
			  re_three.test(frm.frmPager2.value) && 
			  re_four.test(frm.frmPager3.value))) {
			alert("The phone number you provide most contain a 3-digit area code, a 3-digit prefix, and a 4-digit suffix.");
			frm.frmPager1.focus();
			return false;
		}
		count++;
	}
	
	if (count < 2)
	{
		frm.frmWorkPhone1.focus();
		alert("Please make sure you provide us at least 2 numbers to contact you in case of last minute changes.");
		return false;
	}
	
	if(frm.frmEmployerName.value == "")
	{
		frm.frmEmployerName.focus();
		alert("Please make sure you enter your employer. If retired just enter retired in the field.");
		return false;
		
	}
	if (frm.frmHoursAvailable.value != "") {
		if (!(re_any.test(frm.frmHoursAvailable.value))) {
			alert("The hours you work must be a positive integer.");
			frm.frmHoursAvailable.focus();
			return false;
		}
	}
	if(frm.frmNotes.value.length >= 300)
	{
		frm.frmNotes.focus();
		alert("Please shorten your notes and comments.");
		return false;
	}
	
	var hasSelections = 0;
	for(var i = 0; i < frm.frmSchoolPref.options.length; i++)
	{
  		if(frm.frmSchoolPref.options[i].selected)
  		{
    		hasSelections++;
  		}
	}
	if(hasSelections >= 30)
	{
		frm.frmSchoolPref.focus();
		alert("An error was encountered with your school preferences.  It may be that the selection was too large to store.  Try deselecting one or more options and resubmitting the form.");
		return false;
	}
	if(frm.frmDistrictsPref.value.length >= 100)
	{
		frm.frmDistrictsPref.focus();
		alert("An error was encountered with your school district preferences.  It may be that the selection was too large to store.  Try deselecting one or more options and resubmitting the form.");
		return false;
	}
	if(frm.frmSubjectMatterPref.value.length >= 150)
	{
		frm.frmSubjectMatterPref.focus();
		alert("An error was encountered with your subject matter preferences.  It may be that the selection was too large to store.  Try deselecting one or more options and resubmitting the form.");
		return false;
	}
	if(frm.frmAudiencePref.value.length >= 100)
	{
		frm.frmAudiencePref.focus();
		alert("An error was encountered with your school district preferences.  It may be that the selection was too large to store.  Try deselecting one or more options and resubmitting the form.");
		return false;
	}
}


function fnValidateLogin()
{
	var frm = document.loginA;
	if(isEmail(document.loginA.frmEmail.value)==false)
	{
		frm.frmEmail.focus();
		return false;
	}
	if(frm.frmPassword.value == "")
	{
		frm.frmPassword.focus();
		alert("Please enter your password");
		return false;
	}
	
	
	if(document.loginA.rememberMe.checked){
		//document.cookie = "userEmail="+document.login.frmEmail.value;
		//document.cookie = "userPassword="+document.login.frmPassword.value;
		
		
		// create an instance of the Date object
	var now = new Date();
	// fix the bug in Navigator 2.0, Macintosh
	fixDate(now);
	/*
	cookie expires in one year (actually, 365 days)
	365 days in a year
	24 hours in a day
	60 minutes in an hour
	60 seconds in a minute
	1000 milliseconds in a second
	*/
	now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
	//var username = getCookie("username");
	setCookie("useremail", document.loginA.frmEmail.value, now);
	setCookie("userpassword",document.loginA.frmPassword.value, now);
	} else {
		deleteCookie('useremail');
		deleteCookie('userpassword');
	}
	
}


function fnValidateRegistration()
{
	var frm = document.registration;
	
	if(frm.frmFName.value== "" || frm.frmFName.value== null)
	{
		
		alert("First Name field may not be left empty.");
		frm.frmFName.focus();
		return false;
	}
	if(frm.frmLName.value== "" || frm.frmLName.value== null)
	{
		frm.frmLName.focus();
		alert("Last Name field may not be left empty.");
		return false;
	}
	if(frm.frmEmailA.value== "" || frm.frmEmailA.value== null)
	{
		frm.frmEmailA.focus();
		alert("Email field may not be left empty.");
		return false;
	}
	if(isEmail(frm.frmEmailA.value)==false)
	{
		frm.frmEmailA.focus();
		return false;
	}
	if(frm.frmEmailA.value != frm.frmEmailB.value)
	{
		frm.frmEmailA.focus();
		alert("Your email address's do not match. Make sure they are the same email.");
		return false;
	}
	
	if(frm.frmPhone1.value== "" || frm.frmPhone1.value== null)
	{
		frm.frmPhone1.focus();
		alert("Please provide us with your phone number. This can be the number where you can be reached at during the day.");
		return false;
	}
	if (frm.frmPhone1.value != "") {
		if (!(re_three.test(frm.frmWorkPhone1.value) && 
			  re_three.test(frm.frmWorkPhone2.value) && 
			  re_four.test(frm.frmWorkPhone3.value))) {
			alert("The phone number you provide most contain a 3-digit area code, a 3-digit prefix, and a 4-digit suffix.");
			frm.frmWorkPhone1.focus();
			return false;
		}
	}

	if(frm.frmEmployer.value == 0)
	{	
		frm.frmEmployer.focus();
		alert("Please select your employer from the drop down list.");
		return false;
	}
	
}

function fnValidatePasswords()
{
	var frm = document.changePassword;
	if(frm.frmOldPassword.value == "")
	{
		frm.frmOldPassword.focus();
		alert("Please enter your old password.");
		return false;
	}
	
	if(frm.frmPasswordA.value== "" || frm.frmPasswordA.value== null)
	{
		frm.frmPasswordA.focus();
		alert("Password field may not be left blank. Enter a password from 5 to 16 characters in length.");
		return false;
	}
	if(frm.frmPasswordA.value.length < 8)
	{
		frm.frmPasswordA.focus();
		alert("Your PASSWORD must be 8 characters or more.");
		return false;
	}
	if(frm.frmPasswordA.value.length > 16)
	{
		frm.frmPasswordA.focus();
		alert("Your PASSWORD must 16 characters or less.");
		return false;
	}
	if(frm.frmPasswordA.value != frm.frmPasswordB.value)
	{
		frm.frmPasswordA.focus();
		alert("Your PASSWORDs do not match. Make sure they match.");
		return false;
	}
}

function fnValidatePasswordExpire()
{
	var frm = document.changePassword;
	
	if(isEmail(frm.frmEmail.value)==false)
	{
		frm.frmEmail.focus();
		return false;
	}
	if(frm.frmOldPassword.value == "")
	{
		frm.frmOldPassword.focus();
		alert("Please enter your old password.");
		return false;
	}
	if(frm.frmOldPassword.value == frm.frmPasswordA.value)
	{
		frm.frmPasswordA.focus();
		alert("Your new password may not be the same. Please change it.");
		return false;
	}
	
	if(frm.frmPasswordA.value== "" || frm.frmPasswordA.value== null)
	{
		frm.frmPasswordA.focus();
		alert("Password field may not be left blank. Enter a password from 8 to 16 characters in length.");
		return false;
	}
	if(frm.frmPasswordA.value.length < 8)
	{
		frm.frmPasswordA.focus();
		alert("Your PASSWORD must be 8 characters or more.");
		return false;
	}
	if(frm.frmPasswordA.value.length > 16)
	{
		frm.frmPasswordA.focus();
		alert("Your PASSWORD must 16 characters or less.");
		return false;
	}
	if(frm.frmPasswordA.value != frm.frmPasswordB.value)
	{
		frm.frmPasswordA.focus();
		alert("Your PASSWORDs do not match. Make sure they match.");
		return false;
	}
}




/********************************************
*HELPER FUNCTIONS
********************************************/

//checks for the validity of email address provided by the user.
//this function checks whether the user has entered @ symbol at first or at last.
//whether the user has entered '.' symbol at the beggining or at last.
//whether the @ symbol and '.' is together.
function isEmail(str){
	str=fnStripSpace(str);
	if(str.charAt(0)=="@" || str.charAt(str.length-1)=="@" || str.charAt(0)=="." || str.charAt(str.length-1)=="." || str.indexOf('@')==-1 || str.indexOf('.')==-1 || str.indexOf('@')==(str.indexOf('.')-1) || str.indexOf('@')==(str.indexOf('.')+1))
	{
		alert("Please Enter Valid Email Address");
		return false
	}

}

//this function removes the empty spaces from the string passed to it.
//it slashes empty spaces on both sides of the string as well as in between the string also
function fnStripSpace(str){
	var strTemp="";
	for(intI=0;intI<str.length;intI++){
		if(str.charAt(intI)!=" "){
		strTemp=strTemp+str.substring(intI,intI+1)
		}
	}
	return strTemp
}

function commaTrim(s) 
{
  while (s.substring(0,1) == ' ') 
  {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ',') 
  {
    s = s.substring(0,s.length-1);
  }
  return s;
}

function validateZIP(field) {
	var valid = "0123456789-";
	var hyphencount = 0;
	
	if (field.length!=5 && field.length!=10) {
		alert("Please enter your 5 digit or 5 digit+4 zip code.");
		return false;
	}
	for (var i=0; i < field.length; i++) {
		temp = "" + field.substring(i, i+1);
		if (temp == "-") hyphencount++;
			if (valid.indexOf(temp) == "-1") {
			alert("Invalid characters in your zip code.  Please try again.");
			return false;
			}
			if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) {
			alert("The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'.   Please try again.");
			return false;
			  }
	}
	return true;
}

function fnValidateRequestor()
{
	var frm = document.requestor;
	
	if(frm.frmFName.value== "" || frm.frmFName.value== null)
	{
		
		alert("First Name field may not be left empty.");
		frm.frmFName.focus();
		return false;
	}
	if(frm.frmLName.value== "" || frm.frmLName.value== null)
	{
		frm.frmLName.focus();
		alert("Last Name field may not be left empty.");
		return false;
	}
	if(frm.frmEmailA.value== "" || frm.frmEmailA.value== null)
	{
		frm.frmEmailA.focus();
		alert("Email field may not be left empty.");
		return false;
	}
	if(isEmail(frm.frmEmailA.value)==false)
	{
		frm.frmEmailA.focus();
		return false;
	}
	if(frm.frmPhone.value== "" || frm.frmPhone.value== null)
	{
		frm.frmPhone.focus();
		alert("Please provide us with your phone number. This can be the number where you can be reached at during the day.");
		return false;
	}
	if(frm.frmPhone.value.length < 10)
	{
		frm.frmPhone.focus();
		alert("Please enter a complete phone number complete with area code\n123-252-8585 or 1232528585.");
		return false;
	}
	if(frm.frmPasswordA.value== "" || frm.frmPasswordA.value== null)
	{
		frm.frmPasswordA.focus();
		alert("Password field may not be left blank. Enter a password from 5 to 16 characters in length.");
		return false;
	}
	if(frm.frmPasswordA.value.length < 5)
	{
		frm.frmPasswordA.focus();
		alert("Your PASSWORD must be 5 characters or more.");
		return false;
	}
	if(frm.frmPasswordA.value.length > 16)
	{
		frm.frmPasswordA.focus();
		alert("Your PASSWORD must 16 characters or less.");
		return false;
	}
	if(frm.frmPasswordA.value != frm.frmPasswordB.value)
	{
		frm.frmPasswordA.focus();
		alert("Your PASSWORDs do not match. Make sure they match.");
		return false;
	}
	
	if(frm.frmOrganizations.value == 0)
	{
		//since no orga was selected make sure the org fields are field in
		if(frm.frmOrgName.value =="" || frm.frmOrgName.value ==null)
		{
			frm.frmOrgName.focus();
			alert("Please enter your schools/organizations name.");
			return false;
		}
		if(frm.frmOrgAddress.value =="" || frm.frmOrgAddress.value == null)
		{
			frm.frmOrgAddress.focus();
			alert("Please enter your schools/organizations name.");
			return false;
		}
		if(frm.frmOrgCity.value =="" || frm.frmOrgCity.value== null)
		{
			frm.frmOrgCity.focus();
			alert("Please enter your schools/organizations city.");
			return false;
		}
		if(frm.frmOrgZip.value =="" || frm.frmOrgZip.value == null)
		{
			frm.frmOrgZip.focus();
			alert("Please enter your schools/organizations zipcode.");
			return false;
		}
		if(validateZIP(frm.frmOrgZip.value) == false)
		{
			frm.frmOrgZip.focus();
			return false;
		}
	}
}
