//meta http-equiv content-type charset=iso-8859-1

function checkCases()
{
	var cases = document.getElementsByTagName('input');
	var j=0;
	var ini=0;
	for(var i=0; i<cases.length; i++)
		if(cases[i].type == 'checkbox')
		{			
			if (j == 0)
				ini = i;
			else if (!cases[i].checked)
			{
				cases[ini].checked = false;
				return;
			}
			j++;
		}
	
	cases[ini].checked = true;
}
 
function cocherTout(etat)
{
	var cases = document.getElementsByTagName('input');
	for(var i=0; i<cases.length; i++)
	{
		if(cases[i].type == 'checkbox')
		{
			cases[i].checked = etat;
		}
	}
}

function checkstr(pattern, field, error)
{
  
  var checkStr = field.value;
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < pattern.length;  j++)
      if (ch == pattern.charAt(j))
        break;
    if (j == pattern.length)
    {
      alert(error);
	  field.focus();
      return false;
      break;
    }
  }
  return true;
}

function isnum(chr)
{
  var check = "0123456789";
  for (i = 0; i<10;i++)
    if (chr == check.charAt(i))
	  break;
  if (i == 10)
    return false;
  
  return true;
}

function ishour(str)
{
  if (str.length != 5)
    return false;
  
  if (isnum(str.charAt(0)) && isnum(str.charAt(1)) && str.charAt(2) == ':' && isnum(str.charAt(3)) && isnum(str.charAt(4)))
  {
    if (str.substr(0, 2) > 23 || str.substr(3, 5) > 59)
	  return false;
	else
	  return true;
  }
  return false;
}

function isdate(str)
{
  var fev = 28;
  var annee = 0;
  var mois = 0;
  var jour = 0;
  var nbjours = 0;
  if (str.length != 10)
    return false;
	
  if (isnum(str.charAt(0)) && isnum(str.charAt(1)) && str.charAt(2) == '/' && isnum(str.charAt(3)) && isnum(str.charAt(4)) && str.charAt(5) == '/' && isnum(str.charAt(6)) && isnum(str.charAt(7)) && isnum(str.charAt(8)) && isnum(str.charAt(9)))
  {
    //on separe les elements
    annee = str.substring(6, 10);
	mois = str.substring(3, 5);
	jour = str.substring(0, 2);
	
	//verification de l'annee
    if (annee < 2005 || annee > 2050)
	  return false;
	
	//si l'annee est bissectile, on met 29 jours en fevrier, sinon on laisse 28.
	if (annee % 4 == 0)
      fev = 29;
	
	//verification du mois
    if (mois < 1 || mois > 12)
	{
	  return false;
	}
	
	//on choisit le nombre max de jours dans le mois en fonction de celui ci
	if (mois == 1 || mois == 3 || mois == 5 || mois == 7 || mois == 8 || mois == 10 || mois == 12)
	  nbjours = 31;	
	else if (mois == 2)
	  nbjours = fev;
	else
	  nbjours = 30;
	  
	//verification du jour
	if (jour < 1 || jour > nbjours)
	  return false;
	  
	//si tout va bien :
	return true;
  }
}

function validform(form)
{
  var pattern = "";
  var error = "";
  if (form.appareil.value.length < 2)
  {
    alert("Veuillez entrer au moins 2 caractères dans le champ \"Appareil\".");
    form.appareil.focus();
    return false;
  }

  if (form.appareil.value.length > 10)
  {
    alert("Vous ne pouvez entrer que 10 caractères au plus dans le champ \"Appareil\".");
    form.appareil.focus();
    return false;
  }
  
  pattern = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  error = "Veuillez n'entrer que des lettres et des chiffres dans le champ \"Appareil\".";
  if (!checkstr(pattern, form.appareil, error))
    return false;
  
  if (form.vitesse.value.length < 2)
  {
    alert("Veuillez entrer au moins 2 caractères dans le champ \"Vitesse\".");
    form.vitesse.focus();
    return false;
  }

  if (form.vitesse.value.length > 4)
  {
    alert("Vous ne pouvez entrer que 4 caractères au plus dans le champ \"Vitesse\".");
    form.vitesse.focus();
    return false;
  }

  pattern = "1234567890";  
  error = "Veuillez n'entrer que des chiffres dans le champ \"Vitesse\".";
  if (!checkstr(pattern, form.vitesse, error))
    return false;
	
  if (form.depart.value.length < 2)
  {
    alert("Veuillez entrer au moins 2 caractères dans le champ \"Départ\".");
    form.depart.focus();
    return false;
  }

  if (form.depart.value.length > 6)
  {
    alert("Vous ne pouvez entrer que 6 caractères au plus dans le champ \"Départ\".");
    form.depart.focus();
    return false;
  }

  pattern = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  error = "Veuillez n'entrer que des lettres non accentuées et des chiffres dans le champ \"Départ\".";
  if (!checkstr(pattern, form.depart, error))
    return false;
	
  if (form.altitude.value.length < 2)
  {
    alert("Veuillez entrer au moins 2 caractères dans le champ \"FL (ou alitutde)\".");
    form.altitude.focus();
    return false;
  }

  if (form.altitude.value.length > 5)
  {
    alert("Vous ne pouvez entrer que 5 caractères au plus dans le champ \"FL (ou altitude)\".");
    form.altitude.focus();
    return false;
  }

  pattern = "1234567890";  
  error = "Veuillez n'entrer que des chiffres dans le champ \"FL (ou altitude)\" ou alors indiquer seulement \"VFR\".";
  if (form.altitude.value != "VFR" && !checkstr(pattern, form.altitude, error))
    return false;
	
  if (form.route.value.length > 500)
  {
    alert("Vous pouvez entrer 500 caractères au plus dans le champ \"Route\".");
    form.route.focus();
    return false;
  }
  
  pattern = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890/ ";  
  error = "Veuillez n'entrer que des lettres, des chiffres, des espaces et le symbole \"/\" dans le champ \"Route\".\r\nSi vous devez indiquer autre chose, indiquez le dans le champ \"Remarques\" qui ne possède aucune limitation de type de caractères. ";
  if (!checkstr(pattern, form.route, error))
    return false;
	
  if (form.arrivee.value.length < 2)
  {
    alert("Veuillez entrer au moins 2 caractères dans le champ \"Arrivée\".");
    form.arrivee.focus();
    return false;
  }

  if (form.arrivee.value.length > 6)
  {
    alert("Vous ne pouvez entrer que 6 caractères au plus dans le champ \"Arrivée\".");
    form.arrivee.focus();
    return false;
  }
  
  pattern = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";  
  error = "Veuillez n'entrer que des lettres non accentuées et des chiffres dans le champ \"Arrivée\".";
  if (!checkstr(pattern, form.arrivee, error))
    return false;

  if (form.deroutement.value.length < 2)
  {
    alert("Veuillez entrer au moins 2 caractères dans le champ \"Dégagement\".");
    form.deroutement.focus();
    return false;
  }

  if (form.deroutement.value.length > 6)
  {
    alert("Vous ne pouvez entrer que 6 caractères au plus dans le champ \"Dégagement\".");
    form.deroutement.focus();
    return false;
  }
  
  pattern = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";  
  error = "Veuillez n'entrer que des lettres non accentuées et des chiffres dans le champ \"Dégagement\".";
  if (!checkstr(pattern, form.deroutement, error))
    return false;
	
  if (form.date.value.length != 10)
  {
    alert("Vous devez entrer 10 caractères dans le champ \"Date de décollage\".");
    form.date.focus();
    return false;
  }

  if (!isdate(form.date.value))
  {
    alert("La date de décollage indiquée n'est pas mathématiquement valide.\r\nUtilisez le format suivant : jj/mm/aaaa (exemple : 09/08/2011 pour le 9 aôut 2011).");
    form.date.focus();
    return false;
  }
  
  if (form.deptime.value.length != 5)
  {
    alert("Vous devez entrer 5 caractères dans le champ \"Heure de décollage\".");
    form.deptime.focus();
    return false;
  }

  if (!ishour(form.deptime.value))
  {
    alert("L'heure de décollage indiquée n'est pas valide.\r\nUtilisez un format 24h, de type hh:mm (exemple : 08:32 pour 8h32 du matin).");
	form.deptime.focus();
	return false;
  }
  
  if (form.arrtime.value.length != 5)
  {
    alert("Vous devez entrer 5 caractères dans le champ \"Heure d'atterrissage\".");
    form.arrtime.focus();
    return false;
  }

  if (!ishour(form.arrtime.value))
  {
    alert("L'heure d'atterrissage indiquée n'est pas valide.\r\nUtilisez un format 24h, de type hh:mm (exemple : 08:32 pour 8h32 du matin).");
    form.arrtime.focus();
    return false;
  }

  if (form.carburant.value.length < 1)
  {
    alert("Veuillez entrer au moins 1 caractère dans le champ \"Carburant consommé\".");
    form.carburant.focus();
    return false;
  }

  if (form.carburant.value.length > 8)
  {
    alert("Vous ne pouvez entrer que 8 caractères au plus dans le champ \"Carburant consommé\".");
    form.carburant.focus();
    return false;
  }
  
  pattern = "0123456789";
  error = "Veuillez n'entrer que des chiffres dans le champ \"Carburant consommé\".";
  if (!checkstr(pattern, form.carburant, error))
    return false;
  
  if (form.distance.value.length < 1)
  {
    alert("Veuillez entrer au moins 1 caractère dans le champ \"Distance parcourue\".");
    form.distance.focus();
    return false;
  }

  if (form.distance.value.length > 8)
  {
    alert("Vous ne pouvez entrer que 8 caractères au plus dans le champ \"Distance parcourue\".");
    form.distance.focus();
    return false;
  }

  pattern = "1234567890";  
  error = "Veuillez n'entrer que des chiffres dans le champ \"Distance parcourue\".";
  if (!checkstr(pattern, form.distance, error))
    return false;

  if (form.atterrissage.value.length < 2)
  {
    alert("Veuillez entrer au moins 2 caractères dans le champ \"Aéroport d'atterrissage\".");
    form.atterrissage.focus();
    return false;
  }

  if (form.atterrissage.value.length > 6)
  {
    alert("Vous ne pouvez entrer que 6 caractères au plus dans le champ \"Aéroport d'atterrissage\".");
    form.atterrissage.focus();
    return false;
  }
  
  pattern = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";  
  error = "Veuillez n'entrer que des lettres non accentuées et des chiffres dans le champ \"Aéroport d'atterrissage\".";
  if (!checkstr(pattern, form.atterrissage, error))
    return false;
	
  return true;
}

if (form.remarques.value.length > 500)
  {
    alert("Vous pouvez entrer 500 caractères au plus dans le champ \"Remarques\".");
    form.route.focus();
    return false;
  }
