// JavaScript Document
// Copyright ? 2001 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.

// email
function setColor(e1, bg) {
if (e1.style) e1.style.backgroundColor = bg;
}

function setColorGood(e1) {
	if (e1.style) e1.style.backgroundColor = "white";
}

function setColorBad(e1) {
	if (e1.style) e1.style.backgroundColor = "#cccc99";
}

function checkEmail (strng, fieldName) {
var error="";
if (strng == "") {
   error = "You didn't enter an email address.\n";
   setColorBad(fieldName);
}

    var emailFilter=/^.+@.+\..{2,3}$/;
    if (!(emailFilter.test(strng))) { 
       error = "Please enter a valid email address.\n";
	   setColorBad(fieldName);
}
    else {
//test email for illegal characters
       var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/
         if (strng.match(illegalChars)) {
          error = "The email address contains illegal characters.\n";
		  setColorBad(fieldName);
		}
    }
	if (error == "") {
		setColorGood(fieldName);
	}
return error;    
}

function checkUsername (strng, fieldName) {
var error="";
if (strng == "") {
   error = "You didn't enter your e-mail address in the Username field.\n";
   setColorBad(fieldName);
}

    var emailFilter=/^.+@.+\..{2,3}$/;
    if (!(emailFilter.test(strng))) { 
       error = "Please enter a valid email address in the Username field.\n";
       setColorBad(fieldName);
	}
    else {
//test email for illegal characters
       var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/
         if (strng.match(illegalChars)) {
          error = "The email address contains illegal characters.\n";
          setColorBad(fieldName);
	   }
    }
	if (error == "") {
		setColorGood(fieldName);
	}
return error;    
}

// phone number - strip out delimiters and check for 10 digits

function checkPhone (strng, fieldName) {
var error = "";
if (strng == "") {
   error = "You didn't enter a phone number.\n";
   setColorBad(fieldName);
}

var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters
    if (isNaN(parseInt(stripped))) {
       error = "The phone number contains illegal characters.";
  		setColorBad(fieldName);
    }
    if (!(stripped.length == 10)) {
	error = "The phone number is the wrong length. Make sure you included an area code.\n";
   	setColorBad(fieldName);
   } 
	if (error == "") {
		setColorGood(fieldName);
	}
return error;
}


// password - between 6-8 chars, uppercase, lowercase, and numeral

function checkPassword (strng, fieldName) {
var error = "";
if (strng == "") {
   error = "You didn't enter a password.\n";
   setColorBad(fieldName);
}

    var illegalChars = /[\W_]/; // allow only letters and numbers
    
    if ((strng.length < 6) || (strng.length > 8)) {
       error = "The password is the wrong length.  It should be between 6 and 8 characters.\n";
	   setColorBad(fieldName);
    }
    else if (illegalChars.test(strng)) {
      error = "The password contains illegal characters.\n";
	  setColorBad(fieldName);
    } 
    else if (!((strng.search(/(a-z)+/)) && (strng.search(/(A-Z)+/)) && (strng.search(/(0-9)+/)))) {
       error = "The password must contain at least one uppercase letter, one lowercase letter, and one numeral.\n";
	   setColorBad(fieldName);
    }  
	if (error == "") {
		setColorGood(fieldName);
	}
return error;    
}    


// username - 4-10 chars, uc, lc, and underscore only.
/*
function checkUsername (strng) {
var error = "";
if (strng == "") {
   error = "You didn't enter a username.\n";
}


    var illegalChars = /\W/; // allow letters, numbers, and underscores
    if ((strng.length < 4) || (strng.length > 10)) {
       error = "The username is the wrong length.\n";
    }
    else if (illegalChars.test(strng)) {
    error = "The username contains illegal characters.\n";
    } 
return error;
}       

*/
// non-empty textbox

function isEmpty(strng, message, fieldName) {
	
var error = "";
  if (strng.length == 0) {
     error = message +"\n";
	 setColorBad(fieldName);
  }
  else setColorGood(fieldName);
return error;	  
}

// was textbox altered

function isDifferent(strng) {
var error = ""; 
  if (strng != "Can\'t touch this!") {
     error = "You altered the inviolate text area.\n";
  }
return error;
}

function isEqual(strng1, strng2) {
var error = ""; 
  if (strng1 != strng2) {
     error = "The Username and E-Mail don't match.\n";
  }
return error;
}

// exactly one radio button is chosen

function checkRadio(checkvalue) {
var error = "";
   if (!(checkvalue)) {
       error = "Please check a radio button.\n";
    }
return error;
}

function checkAge(checkvalue, message, fieldName) {
var error = "";
   if (checkvalue == "Under 13") {
       error = message + "\n";
	   setColorBad(fieldName);
    }
	else setColorGood(fieldName);
return error;
}

// valid selector from dropdown list

function checkDropdown(choice) {
var error = "";
    if (choice == 0) {
    error = "You didn't choose an option from the drop-down list.\n";
    }    
return error;
}    

function checkWholeForm(theForm) {
   var bgBad = "#cccc99";
   var bgGood = "white";

   var why = "";
    why += checkEmail(theForm.Email.value, theForm.Email);
	why += checkUsername(theForm.Username.value, theForm.Username);
    why += checkPhone(theForm.Phone.value, theForm.Phone);
    why += checkPassword(theForm.Password.value, theForm.Password);
    //why += checkUsername(theForm.Username.value);
    why += isEmpty(theForm.FirstName.value, "Please enter your First Name", theForm.FirstName);
	why += isEmpty(theForm.LastName.value, "Please enter your Last Name", theForm.LastName);
	why += isEmpty(theForm.Zip.value, "Please enter your Zip code", theForm.Zip);
   // why += isEmpty(theForm.Birthday.value, "Please enter your Birthday", theForm.Birthday);
    why += isEmpty(theForm.SecurityAnswer.value, "Please enter your Security Answer", theForm.SecurityAnswer);
	why += isEmpty(theForm.OneLiner.value, "Please enter your One Line summary quote", theForm.OneLiner);

	why += isEqual(theForm.Username.value, theForm.Email.value);
   // why += isDifferent(theForm.different.value);
  
   for (i=0, n=theForm.Age.length; i<n; i++) {
        if (theForm.Age[i].checked) {
            var checkvalue = theForm.Age[i].value;
            break;
        } 
    }
	why += checkAge(checkvalue, "\n\nIntotheBest does not collect information from children under the age of 13.  Therefore, you will not be able to apply for the scholarship, and your information will not be stored.  Please have your parent submit your scholarship application, by entering their contact information and your essay.  Please contact us if you or your parents have any questions.", theForm.Age);
  //  why += checkDropdown(theForm.choose.selectedIndex);
	
    if (why != "") {
       alert(why);
       return false;
    }
	
return true;
}

