function validatetop()
{
  // Reset all elements that started off invisible to their non-visible styles
  document.getElementById('uniterror').style.display = 'none';
  document.getElementById('permiterror').style.display = 'none';
  document.getElementById('dateerror').style.display = 'none';
  document.getElementById('harvestinfo').style.display = 'none';
  
  var error = false;
  
  // Make sure that a valid Unit Code has been selected
  if (document.deercheckinfo.unitcode.value == '') 
  { 
    document.getElementById('uniterror').style.display = 'block';
    error = true; 
  }
  
  // Make sure that a valid Permit Number has been entered
  if ( document.deercheckinfo.permit.value == '' || // Fail if no value entered
       document.deercheckinfo.permit.value.length != 7 || // Fail if value does not have length of 7
       !IsNumeric(document.deercheckinfo.permit.value) // Fail if value is not numeric 
     ) 
  { 
    document.getElementById('permiterror').style.display = 'block'; 
    error = true; 
  }
  
  // Make sure that a date has been entered for the Harvest Date field
  if (document.deercheckinfo.harvestdate.value == ''|| !isDate(document.deercheckinfo.harvestdate.value)) 
  { 
    document.getElementById('dateerror').style.display = 'block';
    error = true;
  }
  else 
  {
    // Validate the date entered against the season dates
    var hDate = new Date(document.deercheckinfo.harvestdate.value);
    var sDate1 = new Date('08/20/2011');
    var eDate1 = new Date('11/11/2011');
    var sDate2 = new Date('11/21/2011');
    var eDate2 = new Date('02/03/2012');
    if ( !(hDate>=sDate1 && hDate<=eDate1) && !(hDate>=sDate2 && hDate<=eDate2) ) 
    {
      document.getElementById('dateerror').style.display = 'block';
      error = true;
    }
  } 

  // If no errors occurred, disable the top controls and display the remainder of the form
  if (error==false) 
  {
    document.deercheckinfo.unitcode.disabled=true;
    document.deercheckinfo.permit.disabled=true;
    document.deercheckinfo.harvestdate.disabled=true;
    //document.deercheckinfo.storepermit.value = document.deercheckinfo.permit.value;
    //document.deercheckinfo.storeharvestdate.value = document.deercheckinfo.harvestdate.value;
    document.getElementById('submittop').style.display = 'none';
    document.getElementById('harvestinfo').style.display = 'block';
  }
}

function validatebottom()
{
  //alert(isAntFA);

  // Reset all elements that started off invisible to their non-visible styles
  document.getElementById('countyerror').style.display = 'none';
  document.getElementById('landerror').style.display = 'none';
  document.getElementById('weaponerror').style.display = 'none';
  document.getElementById('specieserror').style.display = 'none';
  document.getElementById('sexerror').style.display = 'none';
  document.getElementById('ageerror').style.display = 'none';
  document.getElementById('speciesuniterror').style.display = 'none';
  
  var error = false;
  
  // Make sure that a valid County has been selected
  if (document.deercheckinfo.killcounty.value == '') 
  { 
    document.getElementById('countyerror').style.display = 'block';
    error = true; 
  }

  // Make sure that a valid Land type has been selected
  if (document.deercheckinfo.killland[0].checked == false && document.deercheckinfo.killland[1].checked == false) 
  {
      document.getElementById('landerror').style.display = 'block';
      error = true;
  }

  // Make sure that a valid Weapon type has been selected
  if (document.deercheckinfo.killweapon[0].checked == false && document.deercheckinfo.killweapon[1].checked == false && document.deercheckinfo.killweapon[2].checked == false && document.deercheckinfo.killweapon[3].checked == false)
  {
      document.getElementById('weaponerror').style.display = 'block';
      error = true;
  }
    
  // Make sure that a Species has been selected
  if (document.deercheckinfo.killspecies[0].checked==false && document.deercheckinfo.killspecies[1].checked==false && document.deercheckinfo.killspecies[2].checked==false) 
  { 
    document.getElementById('specieserror').style.display = 'block';
    error = true; 
  }

  var antunits = "508 509 513 514 515 516 908 995"; 
  // Make sure that the Species selected is compatible with the Unit Code...
  if (document.deercheckinfo.killspecies[2].checked==true) 
  { 
    //...for antelope
    if (antunits.indexOf(document.deercheckinfo.unitcode.value) < 0)
    {
      document.getElementById('speciesuniterror').style.display = 'block';
      error = true; 
    }
  }
  else
  { 
    //...for deer
    if (antunits.indexOf(document.deercheckinfo.unitcode.value) >= 0)
    {
      document.getElementById('speciesuniterror').style.display = 'block';
      error = true; 
    }
  }
  
  
  // Make sure that a valid Sex has been selected
  if (document.deercheckinfo.killsex[0].checked==false && document.deercheckinfo.killsex[1].checked==false) 
  { 
    document.getElementById('sexerror').style.display = 'block';
    error = true; 
  }

  // Make sure that a valid Age has been selected
  if (document.deercheckinfo.killage[0].checked==false && document.deercheckinfo.killage[1].checked==false) 
  { 
    document.getElementById('ageerror').style.display = 'block';
    error = true; 
  } 

  // If no errors occurred, submit the form...
  if (error==false) {
  
    // ...unless the user has entered "male" and "adult", in which case display some supplemental questions
    document.getElementById('harvestinfo').style.display = 'none';
    document.getElementById('suplemental').style.display = 'block';
    if (document.deercheckinfo.killsex[0].checked==true && document.deercheckinfo.killage[0].checked==true)
    {
      if (document.deercheckinfo.killspecies[2].checked==true)
      {
        //Hunter has harvested an antelope buck
        document.getElementById('buckantelope').style.display = 'block';
      }
      else
      {
        //Hunter has harvested a deer buck
        document.getElementById('buckdeer').style.display = 'block';
      }
    }
    else
    {
      document.deercheckinfo.unitcode.disabled=false;
      document.deercheckinfo.permit.disabled=false;
      document.deercheckinfo.harvestdate.disabled=false;    
      document.deercheckinfo.submit();
    }
  }
}

function validatesuplemental()
{
    document.deercheckinfo.unitcode.disabled=false;
    document.deercheckinfo.permit.disabled=false;
    document.deercheckinfo.harvestdate.disabled=false;    
    document.deercheckinfo.submit();
}

// ******************************************************************
// This function accepts a string variable and verifies if it is a
// proper date or not. It validates format matching either
// mm-dd-yyyy or mm/dd/yyyy. Then it checks to make sure the month
// has the proper number of days, based on which month it is.

// The function returns true if a valid date, false if not.
// ******************************************************************
function isDate(dateStr) {

  var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
  var matchArray = dateStr.match(datePat); // is the format ok?
  
  if (matchArray == null) {
    alert("Please enter date as mm/dd/yyyy.");
    return false;
  }
  
  month = matchArray[1]; // p@rse date into variables
  day = matchArray[3];
  year = matchArray[5];
  
  if (month < 1 || month > 12) { // check month range
    alert("Month must be between 1 and 12.");
    return false;
  }
  
  if (day < 1 || day > 31) {
    alert("Day must be between 1 and 31.");
    return false;
  }
  
  if ((month==4 || month==6 || month==9 || month==11) && day==31) {
    alert("Month "+month+" doesn`t have 31 days!")
    return false;
  }
  
  if (month == 2) { // check for february 29th
    var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
    if (day > 29 || (day==29 && !isleap)) {
      alert("February " + year + " doesn`t have " + day + " days!");
      return false;
    }
  }
  return true; // date is valid
}

function IsNumeric(sText){

   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}


