
function check(form)
	{
	var doneYet = true;

	if (doneYet && form.essay) doneYet = doneYet && enterEssay(form.essay);
	if (doneYet && form.essay) doneYet = doneYet && essayTooLong(form.essay);

	if (doneYet && form.FirstName) doneYet = doneYet && textBox(form.FirstName, "Please let us know your first name.");
	if (doneYet && form.LastName) doneYet = doneYet && textBox(form.LastName, "Please let us know your last name.");
	if (doneYet && form.Street1) doneYet = doneYet && textBox(form.Street1, "Please enter your address.");
	if (doneYet && form.City) doneYet = doneYet && textBox(form.City, "Please enter your city.");
	if (doneYet && form.State) doneYet = doneYet && pulldown(form.State, "Please select your state.");
	if (doneYet && form.ZipCode) doneYet = doneYet && zipCode(form.ZipCode, "Please enter your zip.");
	if (doneYet && form.email) doneYet = doneYet && email(form.email, "Please enter your email address.");
	if (doneYet && form.DayPhone) doneYet = doneYet && phoneOneBox(form.DayPhone, "Please enter your phone number.");
	if (doneYet && form.age) doneYet = doneYet && iReadTheRules(form.age, "Please let us know if you are at least 21 years old and have read the Sweepstakes Rules.");


	if (doneYet && form.yourName) doneYet = doneYet && textBox(form.yourName, "Please let us know your name.");

	if (doneYet && form.yourFavoriteSongs) doneYet = doneYet && textBox(form.yourFavoriteSongs, "Please let us know your favorite songs.");

	return doneYet;
	}

// ----------------------------


// if user is an aveeno user, 
// this will toggle on or off the optional questions
// related specifically to the aveeno user.
function bonusQuestions(f, readyToSubmit)
	{
	for (s = 0; s < f.length; s++) { if (f[s].checked == 1)  { checked = f[s].value } }
	mode = ( checked == "yes" ) ?  "block" :  "none";
	document.getElementById("question3").style.display = mode;
	document.getElementById("question4").style.display = mode;
	
	if (checked=="no" && readyToSubmit==true) { clearQuestions(); }	
	}	

// if user at first checked yes, answered some questions, then changed mind and clicked no.
// this will clear out answers for the options questions
function clearQuestions()
	{
	whichQuestions = new Array ("howLong", "aveenoTypes");
	for (x=0;x<whichQuestions.length;x++)
		{
		e = eval("document.myForm."+whichQuestions[x]);
		for(y=0;y<e.length;y++) { e[y].checked = e[y].unchecked; }
		}
	}

// some questions with checkboxes have "none" as the last choice.
// can't have some choices chosen and "none"
// if user makes any choice but "none", this insures that "none" is unchecked.
// if user checks "none", this insures that all other checkboxes for this question are unchecked.
function uncheck(whichIDQ, w)
	{	
	// how many options in this reg
	var howmany = document.myForm[whichIDQ.name].length;
	for (s = 0; s < howmany; s++)
		{
		if	(
			// uncheck last selection because choice/s has/ve been selected
			(document.myForm[whichIDQ.name][s].value == document.myForm[whichIDQ.name][howmany-1].value) && (w==1) ||
			// uncheck all others becuase last selection has been selected
			(document.myForm[whichIDQ.name][s].value != document.myForm[whichIDQ.name][howmany-1].value) && (w==2) 
			)
				{
				var e = document.myForm[whichIDQ.name][s];
				e.checked = e.unchecked;
				}
		}
	}

function accessCode(field1, field2, message)
	{	
	var filter = /^[0-9]{5}$/;
	if ( !filter.test( field1.value ) )
		{ alert(message); field1.focus(); return false; }
	if ( !filter.test( field2.value )  )
		{ alert(message); field2.focus(); return false; }
	return true;
	}


var essayMaximumLength = 300;
var messageSuffix = " words or less, please enter your tip.";


// write an essay
function enterEssay(form)
	{
	if ( form.value.length == 0 )
		{
		alert("In " + essayMaximumLength + messageSuffix);
		form.focus();
		return false;
		}
	return true;
	}



function essayTooLong(form)
	{
	var formcontent=form.value; 
	var initial_whitespace_rExp = /^\s+/gi;
	var trail_whitespace_rExp = /\s+$/gi;
	var doubleSpace = /\  +/gi;
	formcontent = formcontent.replace(initial_whitespace_rExp, "");
	formcontent = formcontent.replace(trail_whitespace_rExp, "");
	formcontent = formcontent.replace(doubleSpace, " ");
	formcontent = formcontent.split(" ");
	var word_count=formcontent.length;
	
	if ( word_count > essayMaximumLength )
		{ 
		alert("Your essay was " + word_count + " words. In " + essayMaximumLength + messageSuffix);
		form.focus();
		return false;
		}
	return true;
	}


// straight text box
function textBox(form, message)
	{
	if ( form.value.length == 0 )
		{ alert(message); form.focus();  return false; }
	return true;
	}


// dimensions of room
function dimensions (form, message)
	{
	var filter = /[0-9]+|\./;
	if ( !filter.test( form.value ) || form.value.length == 0 )
		{ alert(message); form.focus(); return false; }
	return true;
	}


// email
function email(form, message)
	{
	var filter = /^[A-Za-z0-9][A-Za-z0-9\_\-\.]*\@[A-Za-z0-9][A-Za-z0-9\_\-\.]*\.[A-Za-z]{2,4}$/;
	var filter2 = /(\.\.+)|(\@\@+)|(\_\_+)|(\-\-+)/;
	if ( !filter.test(form.value) || filter2.test(form.value)  )
		{ alert(message); form.focus(); return false; }
	return true;
	}


// zip
function zipCode(form, message)
	{	
	// usa zip code format: ##### or #####-####
	var filterUS = /^[0-9]{5}(\-[0-9]{4})?$/;
	// canadian zip code format: X#X #X# or X#X#X# or X#X-#X#
	var filterCANADA = /^[A-z][0-9][A-z][ -]?[0-9][A-z][0-9]$/;       
	if( !filterUS.test( form.value )  && !filterCANADA.test( form.value ) )
		{ alert( message ); form.focus(); return false; }
	return true;
	}


// radio buttons
function radioButtons(form, message)
	{
	madeChoice=false;
	for (s = 0; s < form.length; s++)
		{ if (form[s].checked == 1) madeChoice=true; }
	if (!madeChoice)
		{ alert(message); form[0].focus(); return false;  }
	return true;
	}


// state
function pulldown(form, message)
	{
	//alert(form.value + ",  " + message);
	if ( form.options[form.options.selectedIndex].value == "--" || form.options[form.options.selectedIndex].value == "" )
		{ alert(message); form.focus(); return false; }
	return true;
	}


// read the rules confirmation
function iReadTheRules(form, message)
	{
	if (!form.checked)
		{ alert(message); form.focus(); return false; }
	return true;
	}


// phone
function isEmpty(field)
	{
	if ( (field && field.value && field.value.length == 0) || !field || !field.value) 
		{ return true; } 
	else { return false; }
	}


function isNumeric(field)
	{
	var rtn = false;
	if (field)
		{ var filter = /^[0-9]+$/; rtn = filter.test(field.value); }
	return rtn;
	}


function photo(form, message)
	{
	if (isEmpty(form) || !isNumeric(form))
		{ alert(message); form.focus(); return false; }
	return true;
	}


// phone
function phone(form1, form2, form3)
	{
	message1 =  "Please let us know your business area code.";
	message2 =  "Please let us know your business phone number.";
	if (isEmpty(form1) ||(form1.value.length != 3) || !isNumeric(form1))
		{ alert(message1); form1.focus(); return false; }
	else if (isEmpty(form2) ||(form2.value.length != 3) || !isNumeric(form2))
		{ alert(message2); form2.focus(); return false; }
	else if (isEmpty(form3) || (form3.value.length != 4) || !isNumeric(form3))
		{ alert(message2); form3.focus(); return false; }
	return true;
	}


function incorrectDates(form)
	{
	// check to make sure person didn't enter "31" for days with 30
	var monthChosen = form.BIRTHMONTH.options.selectedIndex;
	var day = form.BIRTHDAY.options[form.BIRTHDAY.options.selectedIndex].value;
	var year = form.BIRTHYEAR.options[form.BIRTHYEAR.options.selectedIndex].value;
		
	// must have beautiful output
	var month = "";
	if ( monthChosen == "4" ) { month = "April" }
	else if ( monthChosen == "6" ) { month = "June" }
	else if ( monthChosen == "9" ) { month = "September" }
	else if ( monthChosen == "11" ) { month = "November" }
	
	// determine if year input is a leap year
	var leapyear = false;
	if ( year % 100 == 0 ) { if (year % 400 == 0)  leapyear = true;  }
	else {if (year % 4 == 0)  leapyear = true;  }

	// if leap year and user input in day greater than 29
	if( ( day > 29) &&  leapyear  &&  monthChosen==2 )
		{ alert( year + " may be a leap year, but February still doesn\'t have more than 29 days."); form.BIRTHDAY.focus(); return false; }

	// on a non leap year, feb still has only 28 days
	if ( ( day > 28) &&  !leapyear  &&  monthChosen==2 )
		{ alert("In " + year + ", February has only 28 days."); form.BIRTHDAY.focus(); return false;}

	// if not a leap year and user input in day greater than 28
	//else if ( ( day > 28) && ( !leapyear ) &&  monthChosen==2  )
	//	{ alert(year + " is not a leap year."); form.BIRTHYEAR.focus(); return false; }

	// if user chose any month with 30 days and input day greater than 31
	if ( (day > 30) && ( monthChosen==4 || monthChosen==6 || monthChosen==9 || monthChosen==11 ) )
		{ alert( month + " has only 30 days."); form.BIRTHDAY.focus(); return false; }

	var checkUnderage=false;
	if (checkUnderage)
		{
		// check if person younger than thisOld
		var thisOld = 8;
		var d = new Date();
		// 3.0 compliant:
		var thisYear = d.getYear();
		var m = d.getMonth()+1;
		var t = d.getDate();
		// accounts for netscape bug about reading the date
		if (thisYear < 1900) { thisYear = thisYear + 1900 }
		// check age if at least 13
		var error = false;
		if ( ( (thisYear - year == thisOld) && (form.BIRTHMONTH.selectedIndex == m) && (day > t) ) ||
			( (thisYear - year == thisOld) && (form.BIRTHMONTH.selectedIndex > m ) ) ||
			(thisYear - year < thisOld) )
			{ error=true; }
		if (error)
			{
			//alert("Sorry, you must be at least " + thisOld +" years or older to register; but please check out other cool stuff on our site.");
			//document.location="http://www.???.com/";
			return false;
			}
		}

	var checkOverage=false;
	if (checkOverage)
		{
		var maxAge = 17
		var error = false;
		if ( ( (thisYear - year == maxAge) && (form.BIRTHMONTH.selectedIndex == m) && (day < t) ) ||
			( (thisYear - year == maxAge) && (form.BIRTHMONTH.selectedIndex < m ) ) ||
			(thisYear - year > maxAge) )
			{ error=true; }
		if (error)
			{
			//alert("Sorry, too old");
			//document.location="http://www.???.com/";
			return false;
			}
		}

	return true;
	}


// phone number; checks for serveral formats:
// (###) ###-####
// ###-###-####
// ###.###.####
function phoneOneBox(form, message)
	{
	var objRegExp  = /^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$/;
	var objRegExp2  = /^(\d{3})[.| |]?(\d{3})[.| ]?(\d{4})$/;
	if ( !objRegExp.test(form.value)   &&   !objRegExp2.test(form.value)  )
		{ alert(message); form.focus(); return false; }
	return true;
	}


function checkMultiSelect(form, message, maxSelect)
	{
	var selectedArray = new Array();
	var selObj = form;
	var i;
	var count = 0;
	for (i=0; i<selObj.options.length; i++)
		{
		if (selObj.options[i].selected)
			{
			selectedArray[count] = selObj.options[i].value;
			count++;
			}
		}
	//alert(count);
	if ( count == 0 ) { alert("Please choose at least one prize"); return false; }	
	if ( count > maxSelect ) { alert(message); return false; }
	return true;
	}

