function ageCheck(DateOfBirth, State)
{
  var dateOfBirth = Date.parse(DateOfBirth);
  
  if (isNaN(dateOfBirth))
  {
    alert("Please enter a valid date.");
    return false;
  }
  
  var today = new Date();
  var difference = today - dateOfBirth;
  var years = difference / (1000 * 60 * 60 * 24 * 365.4);
  
  if (years < 15)
  {
    alert("You must be at least 15 years old to work at Kerasotes Theaters.\nThank you for considering Kerasotes Theatres!");
    window.navigate("Home.aspx");
    return false;
  }
  
  return true;
}

function requiredField(field)
{
  if (field == undefined)
    return false;
    
  var validPattern = /\s/g;
  var newValue = new String(field.value);
  newValue = newValue.replace(validPattern, "")
  return (newValue.length > 0);
}

function validEMail(field)
{
  if (field == undefined)
    return false;

  var validPattern = new RegExp("^[A-Z0-9\-\_\.]+\@[A-Z0-9\-\_]+\.[A-Z0-9\-\_]{1,}", "i");
  return (validPattern.test(field.value));
}

function validZIPCode(field)
{
  if (field == undefined)
    return false;

  var validPattern = /\d{5}((-\d{4})?$)/;
  return (validPattern.test(field.value));
}

function validPhone(field)
{
  if (field == undefined)
    return false;
    
  var phoneNumber = new String(field.value);
  phoneNumber = phoneNumber.replace(/\D/g, "");
  return (phoneNumber.length == 10);  
}

function validTime(field)
{
  if (field == undefined)
    return false;

  var validPattern = /^([1-9]|1[0-2]):[0-5]\d\s(am|pm)/i;
  return (validPattern.test(field.value));
}

function validDate(field)
{
  if (field == undefined)
    return false;
    
  var validPattern = /^\d{1,2}\/\d{1,2}\/\d{4}/;
  
  if (!validPattern.test(field.value))
    return false;

  var arDate = field.value.split("/");
  var month = arDate[0];
  var day = arDate[1];
  var year = arDate[2];
  
  if ((month <= 0) || (month > 12))
    return false;
    
  if (year < 1900)
    return false;
        
  var days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  
  if (year % 4 == 0)
    days[1] = 29;
    
  return ((day >= 1) && (day <= days[month - 1]));
}

function validateApplicationForm(applicationForm)
{
  with (applicationForm.document)
  {
    getElementById("JavaScriptOn").value = 'true';
    
    if (getElementById("ButtonClicked").value != "Submit")
      return true;
      
    if (!requiredField(getElementById("FirstName")))
    {
      alert("Please enter your first name.");
      getElementById("FirstName").focus();
      return false;
    }
    else if (!requiredField(getElementById("LastName")))
    {
      alert("Please enter your last name.");
      getElementById("LastName").focus();
      return false;
    }
    else if (requiredField(getElementById("EMailAddress")) && (!validEMail(getElementById("EMailAddress"))))
    {
      alert("Please enter a valid e-mail address.");
      getElementById("EMailAddress").focus();
      return false;
    }
    else if (!requiredField(getElementById("Address")))
    {
      alert("Please enter your street address.");
      getElementById("Address").focus();
      return false;
    }
    else if (!requiredField(getElementById("City")))
    {
      alert("Please enter your city.");
      getElementById("City").focus();
      return false;
    }
    else if (!validZIPCode(getElementById("ZIPCode")))
    {
      alert("Please enter your ZIP Code.");
      getElementById("ZIPCode").focus();
      return false;
    }
    else if (!validPhone(getElementById("HomePhone")))
    {
      alert("Please enter a valid phone number, including the area code.");
      getElementById("HomePhone").focus();
      return false;
    }
    else if (requiredField(getElementById("BusinessPhone")) && (!validPhone(getElementById("BusinessPhone"))))
    {
      alert("Please enter a valid business phone number, including the area code.");
      getElementById("BusinessPhone").focus();
      return false;
    }
    else if (!validDate(getElementById("DateAvailable")))
    {
      alert("Please enter the date you will be available for this position.");
      getElementById("DateAvailable").focus();
      return false;
    }
    else if (!(requiredField(getElementById("TemporaryPosition")) || requiredField(getElementById("SummerPosition")) || requiredField(getElementById("PartTimePosition")) || requiredField(getElementById("FullTimePosition"))))
    {
      alert("Please the type(s) of position(s) you are interested in.");
      getElementById("TemporaryPosition").focus();
      return false;
    }
    else if (!validateTimes(applicationForm))
      return false
    else if (!requiredField(getElementById("Theater1")))
    {
      alert("Please select a theatre.");
      getElementById("Theater1").focus();
      return false;
    }
    else if ((getElementById("Over18").value == "False") && (!requiredField(getElementById("DateOfBirth"))))
    {
      alert("Please enter your date of birth.");
      getElementById("DateOfBirth").focus();
      return false;
    }
    else if (getElementById("EducationCount").value == "False")
    {
      alert("Please enter your education history.");
      window.navigate("#Education");
      return false;
    }
    else if (requiredField(getElementById("TypingSpeed")) && isNaN(getElementById("TypingSpeed").value))
    {
      alert("Please enter a number for your typing speed.");
      getElementById("TypingSpeed").focus();
      return false;
    }
    else if ((getElementById("DischargedYes").checked) && (!requiredField(getElementById("DischargedCompanies"))))
    {
      alert("Please enter the name of the companies you were discharged from.");
      DischargedCompanies.focus();
      return false;
    }
    else if ((getElementById("DischargedYes").checked) && (!requiredField(getElementById("DischargeReason"))))
    {
      alert("Please enter the reason for your discharge.");
      getElementById("DischargeReason").focus();
      return false;
    }
    else if ((getElementById("CrimeConvictionYes").checked) && (!requiredField(getElementById("ConvictionReason"))))
    {
      alert("Please enter the offense, conviction, and final outcome for your conviction.");
      getElementById("ConvictionReason").focus();
      return false;
    }
    else if (getElementById("PreviousKerasotesEmploymentYes").checked)
    {
      if (!requiredField(getElementById("PreviousName")))
      {
        alert("Please enter the name you used at the previous theatre.");
        getElementById("PreviousName").focus();
        return false;
      }
      else if (!requiredField(getElementById("PreviousSupervisor")))
      {
        alert("Please enter the name of your previous supervisor.");
        getElementById("PreviousSupervisor").focus();
        return false;
      }
      else if (!requiredField(getElementById("PreviousPosition")))
      {
        alert("Please enter the name of your previous position.");
        getElementById("PreviousPosition").focus();
        return false;
      }
      else if (!validDate(getElementById("PreviousStartDate")))
      {
        alert("Please enter the starting date of your previous position.");
        getElementById("PreviousStartDate").focus();
        return false;
      }
      else if (!validDate(getElementById("PreviousEndDate")))
      {
        alert("Please enter the ending date of your previous position.");
        getElementById("PreviousEndDate").focus();
        return false;
      }
      else if (!requiredField(getElementById("ReasonForLeaving")))
      {
        alert("Please enter your reason for leaving.");
        getElementById("ReasonForLeaving").focus();
        return false;
      }
      else if (Date.parse(getElementById("PreviousStartDate").value) > Date.parse(getElementById("PreviousEndDate").value))
      {
        alert("The Employed From date is after the Employed To date.");
        
        with (getElementById("PreviousStartDate"))
        {
          focus();
          select();
        }
        
        return false;
      }
    }
    else if (getElementById("ReferenceCount").value == "False")
    {
      alert("Please enter your references.");
      window.navigate("#References");
      return false;
    }
    else if (getElementById("AgreeWithTermsNo").checked)
    {
      alert('Please select "Yes" to submit your application.');
      getElementById("AgreeWithTermsYes").focus();
      return false;
    }
    else if (!requiredField(getElementById("Initials")))
    {
      alert("Please enter your initials.");
      getElementById("Initials").focus();
      return false;
    }
    else
    {
      alert("Thank you!");
      return true;
    }
  }
}

function validateTimeRange(startTime, endTime)
{
  if (!requiredField(startTime) && !requiredField(endTime))
    return true
  else if (!validTime(startTime))
  {
    alert("Please select your start time.");
    startTime.focus();
    return false;
  }
  else if (!validTime(endTime))
  {
    alert("Please select your end time.");
    endTime.focus();
    return false;
  }
  else
    return true;
}

function validateTimes(applicationForm)
{
  with (applicationForm.document)
  {
    if ((!requiredField(getElementById("MondayStart")))    && (!requiredField(getElementById("MondayEnd")))    &&
        (!requiredField(getElementById("TuesdayStart")))   && (!requiredField(getElementById("TuesdayEnd")))   &&
        (!requiredField(getElementById("WednesdayStart"))) && (!requiredField(getElementById("WednesdayEnd"))) &&
        (!requiredField(getElementById("ThursdayStart")))  && (!requiredField(getElementById("ThursdayEnd")))  &&
        (!requiredField(getElementById("FridayStart")))    && (!requiredField(getElementById("FridayEnd")))    &&
        (!requiredField(getElementById("SaturdayStart")))  && (!requiredField(getElementById("SaturdayEnd")))  &&
        (!requiredField(getElementById("SundayStart")))    && (!requiredField(getElementById("SundayEnd"))))
    {
      alert("You must enter the hours available for at least one day!");
      getElementById("MondayStart").focus();
      return false;
    }
    else if (!validateTimeRange(getElementById("MondayStart"), getElementById("MondayEnd")))
      return false
    else if (!validateTimeRange(getElementById("TuesdayStart"), getElementById("TuesdayEnd")))
      return false
    else if (!validateTimeRange(getElementById("WednesdayStart"), getElementById("WednesdayEnd")))
      return false
    else if (!validateTimeRange(getElementById("ThursdayStart"), getElementById("ThursdayEnd")))
      return false
    else if (!validateTimeRange(getElementById("FridayStart"), getElementById("FridayEnd")))
      return false
    else if (!validateTimeRange(getElementById("SaturdayStart"), getElementById("SaturdayEnd")))
      return false
    else if (!validateTimeRange(getElementById("SundayStart"), getElementById("SundayEnd")))
      return false
    else
      return true;
  }
}

function validateEducation(educationForm)
{
  with (educationForm.document)
  {
    for (var i = 1; i < 5; i++)
    {
      if (requiredField(getElementById(("SchoolName" + String(i)))))
      {
        if (!requiredField(getElementById("Address" + String(i))))
        {
          alert("Please enter the address of the school.");
          getElementById("Address" + String(i)).focus();
          return false;
        }
        else if (!requiredField(getElementById("City" + String(i))))
        {
          alert("Please enter the city of the school.");
          getElementById("City" + String(i)).focus();
          return false;
        }
        else if (!requiredField(getElementById("ZIPCode" + String(i))))
        {
          alert("Please enter the ZIP Code of the school.");
          getElementById("ZIPCode" + String(i)).focus();
          return false;
        }
        else if (!requiredField(getElementById("YearsAttended" + String(i))))
        {
          alert("Please enter the number of years you attended this school.");
          getElementById("YearsAttended" + String(i)).focus();
          return false;
        }
        else if (isNaN(requiredField(getElementById("YearsAttended" + String(i)))))
        {
          alert("Please enter the number of years you attended this school.");
          getElementById("YearsAttended" + String(i)).focus();
          return false;
        }
      }
      
      if ((getElementById("SchoolTypeDisplay" + String(i)).value == "High School") && (!getElementById("Graduated" + String(i)).checked) && (getElementById("PositionDesired").value == "Management"))
      {
        if (confirm("Management positions require a high school diploma. Do you wish to change your entry?"))
          getElementById("Graduated" + String(i)).focus
        else
          window.navigate('Home.aspx');
          
        return false;
      }
    }
  }
  return true;
}

function validateHistory(historyForm)
{
  badChars = /[,\$]/gi;

  with (historyForm.document)
  {
    for (var i = 1; i < 5; i++)
    {
      if (requiredField(getElementById("EmployerName" + String(i))))
      {
        if (!validDate(getElementById("FromDate" + String(i))))
        {
          alert("Please enter the starting date for this employment entry.");
          getElementById("FromDate" + String(i)).focus();
          return false;
        }
        else if (!validDate(getElementById("ToDate" + String(i))) && (getElementById("ToDate" + String(i)).value != "") && !(getElementById("ToDate" + String(i)).value.toLowerCase() == "present"))
        {
          alert('Please enter the ending date for this employment entry\nor "Present" to indicate that you are still employed at this company.');
          getElementById("ToDate" + String(i)).focus();
          return false;
        }
        else if (requiredField(getElementById("StartingSalary" + String(i))))
        {
          startingSalary = getElementById("StartingSalary" + String(i)).value;
          startingSalary = startingSalary.replace(badChars, "")

          if (isNaN(startingSalary))    
          {
            alert("Please enter a number for your starting salary/wage.");
            getElementById("StartingSalary" + String(i)).focus();
            return false;
          }
        }
        else if (requiredField(getElementById("EndingSalary" + String(i))))
        {
          endingSalary = getElementById("EndingSalary" + String(i)).value;
          endingSalary = endingSalary.replace(badChars, "")

          if (isNaN(endingSalary))    
          {
            alert("Please enter a number for your ending salary/wage.");
            getElementById("EndingSalary" + String(i)).focus();
            return false;
          }
        }
        else if (requiredField(getElementById("ZIPCode" + String(i))))
        {
          if (!validZIPCode(getElementById("ZIPCode" + String(i))))
          {
            alert("Please enter a valid ZIP Code.");
            getElementById("ZIPCode" + String(i)).focus();
            return false;
          }
        }
      }
    }
  }
  
  return true;
}

function validateReferences(referenceForm)
{
  with (referenceForm.document)
  {
    for (var i = 1; i < 3; i++)
    {
      if (!requiredField(getElementById("ReferenceName" + String(i))))
      {
        alert("Please enter the name of your reference.");
        getElementById("ReferenceName" + String(i)).focus();
        return false;
      }
      else if (!validPhone(getElementById("WorkPhone" + String(i))))
      {
        alert("Please enter the work phone of your reference, including the area code.");
        getElementById("WorkPhone" + String(i)).focus();
        return false;
      }
      else if ((!requiredField(getElementById("YearsKnown" + String(i)))) || isNaN(getElementById("YearsKnown" + String(i)).value))
      {
        alert("Please enter the number of years you have known this reference.");
        getElementById("YearsKnown" + String(i)).focus();
        return false;
      }
    }
    
    if (requiredField(getElementById("ReferenceName3")))
    {
      if (!validPhone(getElementById("WorkPhone3")))
      {
        alert("Please enter the work phone of your reference, including the area code.");
        getElementById("WorkPhone3").focus();
        return false;
      }
      else if (!requiredField(getElementById("YearsKnown3")) || isNaN(getElementById("YearsKnown3").value))
      {
        alert("Please enter the number of years you have known this reference.");
        getElementById("YearsKnown3").focus();
        return false;
      }
    }
  }
  
  return true;
}


