



function validateRegistration(frm) {

	
	
	if(!checkItem(frm.TITLE.value, "a title", "Titles", "title")) {
		return false;
	}
	if(!checkItem(frm.FIRSTNAME.value, "a first name", "First names", "first name")) return false;
	if(!checkItem(frm.LOGIN.value, "a member name", "Member names", "member name")) return false;
	if(!checkItem(frm.LASTNAME.value, "a last name", "Last names", "last name")) return false;
	if(!checkItem(frm.PASSWORD.value, "a password", "Passwords", "password")) return false;
	if(!checkItem(frm.CONTENT_KEY.value, "a content key", "Content keys", "content key")) return false;
	
	
	if(frm.LOGIN.value.length < 6) {
		alert("Member names must contain at least six characters. Re-enter your member name.");
		return false;
	}

	if(hasSpecialCharacters(frm.MI.value)) {
		alert("Middle initials may not contain special characters (e.g., ?, #, *, &, “, <, >). Re-enter your middle initial.");
		return false;
	}
	
	
	if(!validateZip(frm.ZIP.value))
		return false;
		
	if(frm.SCHOOLNAME.value == "") {
		alert("You must enter a school name.");
		return false;
	}
	
	if(!validateEmail(frm.EMAIL.value, frm.EMAILREENTER.value))
		return false;
		
	if(!validatePassword(frm.PASSWORD.value, frm.PWREENTER.value))
		return false;
		
	if(frm.STATE.value == "") {
		alert("You must select a state.");
		return false;
	}
	
	if(frm.ID_QUESTION.selectedIndex == 0) {
		alert("You must select an identity question.");
		return false;
	}
	
	if(!validateIDAnswer(frm.ID_ANSWER.value, frm.ANSWERREENTER.value))
		return false;


	if(!frm.ACCEPTTERMS.checked) {
		alert("You must indicate that you agree to The McGraw-Hill Companies Terms of Use by clicking the check box.");
		return false;
	}


	return true;
}


function validateIDAnswer(answer, reanswer) {

	if(answer.length == 0 || reanswer.length == 0) {
		alert("You must enter and re-enter an answer to your identity question.");
		return false;
	}
	
	if(answer != reanswer) {
		alert("Answers to identity questions and re-entered answers must match. Re-enter your answer.");
		return false;
	}
	
	if(hasSpecialCharacters(answer)) {
		alert("Answers to identity questions may not contain special characters (e.g., ?, #, *, &, “, <, >). Re-enter your answer.");
		return false;
	}
	return true;
}


function validateTrialRegistration(frm) 
{
	if(!checkItem(frm.FIRSTNAME.value, "a first name", "First names", "first name")) 
      return false;
	if(!checkItem(frm.LASTNAME.value, "a last name", "Last names", "last name")) 
      return false;

	if(!validateEmail2(frm.EMAIL.value))
		return false;

	if(frm.SCHOOLNAME.value == "") {
		alert("You must enter a school name.");
		return false;
	}

	if(frm.SCHOOLDIST.value == "") {
		alert("You must enter a school district name.");
		return false;
	}

	//if (checkInternationalPhone(frm.PHONENUM.value)==false)
  //{
	//	alert("Please Enter a Valid Phone Number");
	//	return false
	//}


	if(frm.STATE.value == "") {
		alert("You must select a state.");
		return false;
	}

	if(!validateZip(frm.ZIP.value))
		return false;

	//if(!frm.ACCEPT_CONTACT.checked) {
	//	alert("You must indicate that you agree to be contacted by a representative of McGraw-Hill by clicking the check box.");
	//	return false;
	//}

	if(!frm.ACCEPTTERMS.checked) {
		alert("You must indicate that you agree to The McGraw-Hill Companies Terms of Use by clicking the check box.");
		return false;
	}


	return true;
}



function validatePassword(pw, repw) {
	var bNumber = false;
	var bLetter = false;
	
	
	
	if(pw != repw) {
		alert("Passwords and re-entered passwords must match. Re-enter your password information.");
		return false;
	}
	
	
	pw = pw.toUpperCase();
	
	
	
	for(i = 0; i < pw.length; i++) {
		if(pw.charCodeAt(i) >= "0".charCodeAt(0) && pw.charCodeAt(i) <= "9".charCodeAt(0))
			bNumber = true;
		if(pw.charCodeAt(i) >= "A".charCodeAt(0) && pw.charCodeAt(i) <= "Z".charCodeAt(0))
			bLetter = true;
	}
	
	
	
	if(!bNumber || !bLetter) {
		alert("Passwords must contain at least one letter and at least one number. Re-enter your password information.");
		return false;
	}
	
	if(pw.length < 6) {
		alert("Passwords must contain at least six characters. Re-enter your password information.");
		return false;
	}
	
	return true;


}


function validateEmail2(email) {

	if(email == "") {
		alert("You must enter an e-mail address.");
		return false;
	}


	if(!isValidEmail(email)) {
		alert("That e-mail address is not recognized. Re-enter your e-mail address.");
		return false;
	}
	
	
	return true;
}



function validateEmail(email, reemail) {

	if(email == "" || reemail == "" ) {
		alert("You must enter and re-enter an e-mail address.");
		return false;
	}


	if(email != reemail) {
		alert("You must enter and re-enter your e-mail address, and both entries must match. Re-enter your e-mail address.");
		return false;
	}
	
	if(!isValidEmail(email)) {
		alert("That e-mail address is not recognized. Re-enter your e-mail address.");
		return false;
	}
	
	
	return true;
}


function validateZip(zip) {
	if(zip == "") {
		alert("You must enter a zip code.");
		return false;
	}
	
	for(i = 0; i<5; i++) {
		if(zip.charAt(i) < '0' || zip.charAt(i) > '9') {
			alert("The zip code you entered does not contain 5 digits. Enter a 5-digit U.S. zip code.");
			return false;
		}
	}
	
	return true;
}


function checkItem(itm, name1, name2, name3) {



	if(itm == "") {
		alert("You must enter " + name1 + ".");
		return false;
	}
	if(hasSpecialCharacters(itm)) {
		alert(name2 + " may not contain spaces or special characters (e.g., ?, #, *, &, “, <, >). Re-enter your " + name3 + ".");
		return false;
	}
	return true;
}





function isValidEmail(str) {
	var index = str.indexOf("@");
	if(index < 1)
		return false;
		

	return str.substring(index + 1, str.length - 1).indexOf(".") > 1;
}


function hasSpecialCharacters(str) {
	var specs = ".,?#*&“<> "
	
	for(i = 0; i < str.length; i++)
		if(specs.indexOf(str.charAt(i)) >= 0)
			return true;
			
			
	return false;
}


function validateStudentProfile(frm, bReg) {

	if(!checkItem(frm.FIRSTNAME.value, "a first name", "First names", "first name")) return false;
	if(!checkItem(frm.LOGIN.value, "a member name", "Member names", "member name")) return false;
	if(!checkItem(frm.LASTNAME.value, "a last initail", "Last initails", "last initail")) return false;
	if(bReg && !checkItem(frm.PASSWORD.value, "a password", "Passwords", "password")) return false;
	if(bReg && !checkItem(frm.CLASS_KEY.value, "a class key", "Class keys", "class key")) return false;
	
	

	if(bReg || frm.PASSWORD.value.length > 0) {
	if(!validatePassword(frm.PASSWORD.value, frm.PWREENTER.value))
		return false;
	}


	if(frm.LOGIN.value.length < 6) {
		alert("Member names must contain at least six characters. Re-enter your member name.");
		return false;
	}

	if(hasSpecialCharacters(frm.MI.value)) {
		alert("Middle initials may not contain special characters (e.g., ?, #, *, &, “, <, >). Re-enter your middle initial.");
		return false;
	}


	if(frm.ID_QUESTION.value == "") {
		alert("You must select an identity question.");
		return false;
	}
	
	if(!validateIDAnswer(frm.ID_ANSWER.value, frm.ANSWERREENTER.value))
		return false;
		
		


	return true;


}



// Declaring required variables
digits = "0123456789";
// non-digit characters which are allowed in phone numbers
phoneNumberDelimiters = "()- ";
// characters which are allowed in international phonenumbers
// (a leading + is OK)
validWorldPhoneChars = phoneNumberDelimiters +"+";
// Minimum no of digits in an international phone no.
minDigitsInIPhoneNumber = 10;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone)
{
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

