// Form Validation for Sweepstakes, Surveys, and Events

var sLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var sNumbers = "0123456789";
var styleIsAfter = 1;
var styleIsBefore = 2;
var styleEqualTo = 3;

function checkEmail( emailField )
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(emailField.value)) return true;
	return false;
}

function IsFieldEmpty( aField )
{
	if (aField) {
		return (aField.value.length < 1);
	}
	return true;
}

function IsSelectUnique( aSelectArray )
{
  var bPassed = true;
  for ( var i = 0; i < aSelectArray.length; i++ ) {
	for ( var x = 0; x < aSelectArray.length; x++ ) {
	  if ( x != i ) {
		if ( aSelectArray[i].selectedIndex != 0 ) {
		  if ( aSelectArray[i].selectedIndex == aSelectArray[x].selectedIndex ) {
			aSelectArray[x].selectedIndex = 0;
			bPassed = false;
		  }
		}
	  }
	}
  }
  return bPassed;
}
function isLetter( c )
{
  var bPassed = true;
  for (var i = 0;  i < sLetters.length;  i++) {
	if (c == sLetters.charAt(i)) break;
	if (i == (sLetters.length - 1)) {
	  bPassed = false;
	  break;
	}
  }
  return bPassed;
}
function isNumber( c )
{
  var bPassed = true;
  for (var i = 0;  i < sNumbers.length;  i++) {
	if (c == sNumbers.charAt(i)) break;
	if (i == (sNumbers.length - 1)) {
	  bPassed = false;
	  break;
	}
  }
  return bPassed;
}
function IsNumberBetween( iNumber, iMin, iMax )
{
  return (Number( iNumber ) >= iMin && Number( iNumber ) <= iMax);
}
function ValidateMask( sInput, sMask )
{
  var bReturn = true;
  for ( var i = 0; i < sMask.length; i++ ) {
	switch ( sMask.charAt(i) ) {
	  case "9":
		if (!isNumber(sInput.charAt(i)))
		  bReturn = false;
		break;
	  case "X":
		if (!isLetter(sInput.charAt(i)))
		  bReturn = false;
		break;
	  case "?":
		break;
	  default:
		if (sMask.charAt(i) != sInput.charAt(i)) bReturn = false;
	}
	if (bReturn == false)
	  break;
  }
  return bReturn;
}
function IsValidDate(dateStr)
{
  var datePat = /^(\d{4})(\-)(\d{1,2})(\-)(\d{1,2})$/;
  var matchArray = dateStr.match(datePat);
  if (dateStr.length != 10) return false;
  if (matchArray == null) return false;
  var year = Number( matchArray[1] );
  var month = Number( matchArray[3] - 1 );
  var day = Number( matchArray[5] );
  if (month < 0 || month > 11) return false;
  if (day < 1 || day > 31) return false;
  if ((month==3 || month==5 || month==8 || month==10) && day==31) return false;
  if (month == 1) {
	var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
	if (day>29 || (day==29 && !isleap)) return false;
  }
  return true;
}
function CompareDates( date1, style, date2 )
{
  var datePat = /^(\d{4})(\-)(\d{1,2})(\-)(\d{1,2})$/;
  var matchArray1 = date1.match(datePat);
  var matchArray2 = date2.match(datePat);
  var year1 = matchArray1[1];
  var month1 = matchArray1[3];
  var day1 = matchArray1[5];
  var year2 = matchArray2[1];
  var month2 = matchArray2[3];
  var day2 = matchArray2[5];
  var bResult = false;
  var now=new Date();
  var hh=now.getHours();
  var mm=now.getMinutes();
  var ss=now.getSeconds();
  // months are 0 (zero) based, subtract 1
  var newdate1 = new Date(year1,month1-1,day1,hh,mm,ss);
  var newdate2 = new Date(year2,month2-1,day2,hh,mm,ss);
  var d1 = newdate1.getTime();
  var d2 = newdate2.getTime();
  switch( style )
  {
   case 2:  //styleIsBefore
	 if(d1 < d2)
	   bResult = true;
	 break;
   case 1:  //styleIsAfter
	 if(d1 > d2)
	   bResult = true;
	 break;
   default:
	 if(d1 == d2)
	   bResult = true;
	 break;
  }
  return bResult;
}
function SubmitTheSurvey(aForm)
{
  // For Backwards Compatibility
  if (ValidateSurvey( aForm ))
	aForm.submit();
}


var iSkipValidation = 0;
var bAlreadySubmitted = false;
function GoPreviousPage(aForm)
{
  iSkipValidation=1;
  aForm.previouspagebtn.value="clicked";
  if (ValidateSurvey( aForm ))
	aForm.submit();
}
function ValidateSurvey(aForm)
{
  if (bAlreadySubmitted) return ( false );
  if (iSkipValidation == 1 ) {
	bAlreadySubmitted = true;
	return ( true );
  }
  var iCount;
  if ( "function" == typeof CustomPreValidation )
  {
	if (!CustomPreValidation( aForm ))
	  return (false);
  }

 if (IsFieldEmpty( aForm.FirstName ))
 {
  alert( "You must enter your first name." );
  aForm.FirstName.focus();
  return( false );
 }


 if (IsFieldEmpty( aForm.LastName ))
 {
  alert( "You must enter your last name." );
  aForm.LastName.focus();
  return( false );
 }


 if (IsFieldEmpty( aForm.Address1 ))
 {
  alert( "You must enter an address." );
  aForm.Address1.focus();
  return( false );
 }


 if (IsFieldEmpty( aForm.City ))
 {
  alert( "You must enter your city." );
  aForm.City.focus();
  return( false );
 }


 if (IsFieldEmpty( aForm.State ))
 {
  alert( "You must enter your state." );
  aForm.State.focus();
  return( false );
 }

 if (IsFieldEmpty( aForm.ZipCode ))
 {
  alert( "You must enter your zip code." );
  aForm.ZipCode.focus();
  return( false );
 }

 if (aForm.ZipCode.length >= 5 )
 {
	alert( "You must enter at least a 5 digit zip code." );
	aForm.ZipCode.focus();
	return( false );
 }

 if (IsFieldEmpty( aForm.Phone ))
 {
  alert( "You must enter your phone number." );
  aForm.Phone.focus();
  return( false );
 }


 if (IsFieldEmpty( aForm.EmailAddress ))
 {
  alert( "You must enter your email address." );
  aForm.EmailAddress.focus();
  return( false );
 }


 if (IsFieldEmpty( aForm.ConfirmEmail ))
 {
  alert( "You must enter your email address a second time." );
  aForm.ConfirmEmail.focus();
  return( false );
 }

 if (!checkEmail( aForm.EmailAddress ))
 {
    alert( "You must enter a valid email address." );
	aForm.EmailAddress.focus();
	return( false );
 }

 if (!checkEmail( aForm.ConfirmEmail ))
 {
    alert( "You must enter a valid email address." );
	aForm.ConfirmEmail.focus();
	return( false );
 }

 if (aForm.EmailAddress.value != aForm.ConfirmEmail.value ) {
	alert("Email addresses do not match.");
	aForm.EmailAddress.focus();
	return( false );
 }


 iCount = aForm.TermsConditions.checked;
 if (iCount != 1)
 {
  alert( "You must check that you accept the Terms and Conditions." );
  aForm.TermsConditions.focus();
  return( false );
 }



  if ( "function" == typeof CustomPostValidation )
  {
	if (!CustomPostValidation( aForm ))
	  return (false);
  }
  bAlreadySubmitted = true;
  return( true );
}
