/*
 * Fonction Javascripts pour l'application Scola
 *
 * Version 1.0
 */ 
var MaxWords=12;
var a_Mot_tropDeMots = "Le nombre de mots dans le champ \"Mot-Cl\u00E9\" doit \u00EAtre inf\u00E9rieur \u00E0 " + MaxWords ;
var a_date_texte_posterieur = "La date que vous avez renseign\u00E9e est post\u00E9rieure \u00E0 la date du jour";
var a_date_texte_nonRens = "Pour acc\u00E9der par une date de texte, vous devez pr\u00E9ciser l'ann\u00E9e ou le mois et l'ann\u00E9e ou le jour, le mois et l'ann\u00E9e";
var a_date_texte_inexistant = "La date que vous avez renseign\u00E9 n'existe pas"
var a_BONUM_notAllSelect = "Pour acc\u00E9der par un N\u00B0 de BO, vous devez pr\u00E9ciser le type de BO ET le N\u00B0 ET l'ann\u00E9e du BO";
var a_BONUM_notInt = "Vous avez mal renseign\u00E9 le n\u00B0 de BO";
var a_periode = "Pour une p\u00E9riode personnalis\u00E9e, tous les champs de date doivent \u00EAtre remplis";
var a_date_periode_1post2 = "La date de fin doit \u00EAtre post\u00E9rieure \u00E0 la date de d\u00E9but";


function f_giveAlert(textField, msg)
{
  textField.focus();
  textField.select();
  alert(msg);
  textField.focus();
  textField.select();

}

function f_giveAlertSelect(textField, msg)
{
  textField.focus();
  alert(msg);
  textField.focus();
}


function f_isEmpty(str)
{
  if( str == null)
    return true;
  for(i=0; i<str.length; i++)
    if( str.charAt(i) !=' ' )
      return false;
  return true;
}

function f_count_words(str)
{
  nbWords = 0;
  // on passe les espaces du début.
  for( i=0; i<str.length && str.charAt(i)==' '; i++)
    ;
  wasSpace = true;
  while( i < str.length )
  {
    if( str.charAt(i) != ' ' && wasSpace )
    {
      nbWords++;
      wasSpace = false;
    }
    else if( str.charAt(i) == ' ')
      wasSpace = true;
    i++;
  }
  return nbWords;
}

function f_check_Mot(form)
{
  // Vérifie que le nb de mot du champ texte M_MOT de form est <= MaxWords
  if ( f_count_words(form.M_Mot.value ) <= MaxWords )
    return true;
  // else
  f_giveAlert(form.M_Mot, a_Mot_tropDeMots);
  
  return false;
}


function f_check_BONUM(form)
{
  // Vérifie que le champ texte M_BONUM est une chaine numérique.
/*  if( f_isEmpty(form.M_BONUM.value) && form.M_BOTYPE.selectedIndex == 0 && form.M_BOAA.selectedIndex == 0 )
 *    return true;
 *  if( f_isEmpty(form.M_BONUM.value) || form.M_BOTYPE.selectedIndex == 0 || form.M_BOAA.selectedIndex == 0 )
 *  {
 *    f_giveAlert(form.M_BONUM, a_BONUM_notAllSelect);
 *    return false;
 *  }
 */
  if( ! f_isEmpty(form.M_BONUM.value) && ! f_isNumber(form.M_BONUM.value) )
  {
    f_giveAlert(form.M_BONUM, a_BONUM_notInt);
    return false;
  }
  return true;
}

function f_isAlphaNum(str)
{
  // vérifie que la string str ne contient que les caract. [a-z][A-Z][0-9]
  for(i=0; i < str.length; i++)
  {
    c = str.charAt(i);
    if( ! ( (c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') ) )
      return false;
  }
  return true;
}

function f_isNumber(str)
{
  // vérifie que la string str est une chaine numérique
  for( i=0; i< str.length; i++ )
  {
    c= str.charAt(i);
    if ( ! (c>='0' && c<='9') )
      return false;
  }
  return true;
}

function f_is_integer (js_val)
{
  var js_return = true
  
  for (var i=0; ((i<js_val.length) && (js_return)); i++)
  {
    var js_caract=js_val.charAt(i);
    /* An integer can be composed by :
     *  - numbers
     *  - a  minus sign (-) in first place 
     */
    if ((js_caract<"0" || js_caract>"9") && ((js_caract=="-" && i!=0) || js_caract!="-"))
      js_return = false
  }
  return js_return
}

function f_is_date (js_day ,js_month ,js_year)
{
    /* Fields must be integers */
    if (!f_is_integer(js_day))
      return false
    if (!f_is_integer(js_month))
      return false
    if (!f_is_integer(js_year))
      return false
    /* month must be between  1 and 12
     * Error : month does not exist 
     */
    if ((js_month<1) || (js_month>12))
      return false
    if (js_day<1)
      return false
    /* february */
    if(js_month == 2)
    {
      /* leap year */
      if (((js_year%400)==0) || (((js_year%100)!=0) && ((js_year%4)==0)))
      {
        /* Error : day does not exist */
        if (js_day>29)
          return false
      }
      /* year is non leap year */
      else
      {
        /* Error : year is not a leap year */
        if (js_day==29)
          return false
        /* Error : day does not exist */
        if(js_day>28)
          return false
      }
    }
    /* months with 30 days */
    if ((js_month==4) || (js_month==6) || (js_month==9) || (js_month==11))
    {
      /* Error : day does not exist */
      if (js_day>30)
        return false
    }
    /* months with 31 days */
    if ((js_month==1) || (js_month==3) || (js_month==5) || (js_month==7) || (js_month==8) || (js_month==10) || (js_month==12))
    {
      /* Error : day does not exist */
      if (js_day>31)
        return false
    }
    return true;
}

function f_check_date_texte(form)
{
  current_day = form.P_day.value;
  current_month = form.P_month.value;
  current_year = form.P_year.value;
  
  // index des menus déroulants
  i_month = form.M_TMM.selectedIndex;
  i_year = form.M_TAA.selectedIndex;

  day = form.M_TJJ.value;
  month = form.M_TMM[i_month].value;
  year = form.M_TAA[i_year].value;
  
  // bug javascript sous netscape : parseInt("07") -> 7 OK mais parseInt("08") -> 0 !!!!! (idem pour 09)
  if( day.length == 2 && day[0] == '0' )
    day=day[1];
  if( month.length == 2 && month[0] == '0' )
    month=month[1];
  

  if( f_isEmpty(day) && i_month == 0 && i_year == 0 )
    return true;
    
  if( i_year == 0 )
  { 
    if( i_month == 0 )
    {
      if( f_isEmpty(day)) 
        return true;
      if(! f_isEmpty(day))  
      {
      f_giveAlert(form.M_TMM, a_date_texte_nonRens);
    return false;
      }
    }  
    if( i_month != 0 )     
    {
    f_giveAlert(form.M_TAA, a_date_texte_nonRens);
    return false;   
    }     
  }
  if( i_year != 0 && i_month == 0 && (! f_isEmpty(day)))
  { 
    f_giveAlert(form.M_TMM, a_date_texte_nonRens);
    return false;
  } 
        if( i_month == 0 && year > current_year)
        {
          f_giveAlert(form.M_TAA, a_date_texte_posterieur);
    return false;
        } 
  if( i_month != 0 && f_isEmpty(day) && ( ( year > current_year) || (year == current_year && parseInt(month) > parseInt(current_month)) ))
  {
    f_giveAlert(form.M_TMM, a_date_texte_posterieur);
    return false;
  }
  if( ! f_isEmpty(day) && !f_is_date(day, month, year) )
  {
    f_giveAlert(form.M_TJJ, a_date_texte_inexistant);
    return false;
  }
  if( ! f_isEmpty(day) && 
        (  (year > current_year) 
        || (year == current_year && parseInt(month) > parseInt(current_month)) 
        || (year == current_year && parseInt(month) == current_month && parseInt(day) > parseInt(current_day)) ) )
  {
    f_giveAlert(form.M_TJJ, a_date_texte_posterieur);
    return false;
  }
  return true;
}


function f_checkForm_rechTexte(form)
{
  if( ! ( f_check_Mot(form)
       && f_check_BONUM(form)
       && f_check_date_texte(form)
       && f_check_periode(form) 
        ) 
    )
    return false;
  
  return true;
}

function f_clear_periode()
{
  form = document.rechTexte;

  form.M_P1JJ.value = "";
  form.M_P1MM.selectedIndex = 0;
  form.M_P1AA.selectedIndex = 0;
  form.M_P2JJ.value = "";
  form.M_P2MM.selectedIndex = 0;
  form.M_P2AA.selectedIndex = 0;

}

function f_submit_rechTexte()
{
  form = document.rechTexte;
  if( f_checkForm_rechTexte(form) )
    form.submit();
  return false; // Pour ne pas aller vers le HREF...
}

/***************************************************************************
* APPLICATION SCOLA - R. POEZEVARA
* fonctions javascript pour verifier la cohérence sur les dates
* et pour verifier la saisie des champs obligatoires lors de la création
* d'un établissement. cf page ecre2_etab.php
*****************************************************************************/

var a_date_texte_inexistante = "La date que vous avez renseign\u00E9e n'existe pas";
var a_date_texte_incomplete = "La date que vous avez renseign\u00E9e est incompl\u00E8te";
var a_nom_etab_vide = "Vous devez saisir le nom de l'\u00E9tablissement \u00E0 cr\u00E9er";
var a_nom_etab_modif_vide = "Vous devez saisir le nom de l'\u00E9tablissement \u00E0 modifier";
var a_nom_ville_vide = "Vous devez s\u00E9lectionner une ville";
var a_uai_vide = "Vous devez saisir un code UAI";


function f_check_date_creation(form)
{
  // index des menus déroulants
  i_month = form.p_mois.selectedIndex;
  
  day = form.p_jour.value;
  month = form.p_mois[i_month].value;
  year = form.p_annee.value;

  
  // bug javascript sous netscape : parseInt("07") -> 7 OK mais parseInt("08") -> 0 !!!!! (idem pour 09)
  if( day.length == 2 && day[0] == '0' )
    day=day[1];
  if( month.length == 2 && month[0] == '0' )
    month=month[1];
  

  if( (f_isEmpty(day) == false) && (i_month != 0) && (f_isEmpty(year) == false))
  {
    if (f_is_date(day, month, year))
    {
      if (parseInt(day) < 10)
        form.p_jour.value = '0'+parseInt(day); 
       return true;
    }  
    else
    {
      f_giveAlert(form.p_jour, a_date_texte_inexistante);
      return false;
    }  
  }
  else
  {
    f_giveAlert(form.p_jour, a_date_texte_incomplete);
    return false;
  }  
}

function f_check_etab(form)
{
  if (f_isEmpty(form.p_nom_etab.value))
  {
    f_giveAlert(form.p_nom_etab, a_nom_etab_vide);
    return false;
  } 
  else
    return true;
}

function f_check_ville(form)
{
  if (form.p_ville[form.p_ville.selectedIndex].value == 0)
  {
    f_giveAlertSelect(form.p_ville, a_nom_ville_vide);
    return false;
  } 
  else
    return true;
}


function f_checkForm_creation_etab(form)
{
  if (f_check_etab(form)
      && 
      f_check_ville(form)
      &&
      f_check_date_creation(form)
     ) 
    return true;
  else  
    return false;
}

function f_submit_creation_etab()
{
  form = document.creation_etab;
  if( f_checkForm_creation_etab(form) )
    form.submit();
  return false; // Pour ne pas aller vers le HREF...
}  

/*********************************************************
 * Fonctions pour la page de modification emod_etab.php *
 *********************************************************/


function f_check_date_modif(form)
{
  // index des menus déroulants
  i_month = form.p_mois_modif.selectedIndex;

  day = form.p_jour_modif.value;
  month = form.p_mois_modif[i_month].value;
  year = form.p_annee_modif.value;
  
  // bug javascript sous netscape : parseInt("07") -> 7 OK mais parseInt("08") -> 0 !!!!! (idem pour 09)
  if( day.length == 2 && day[0] == '0' )
    day=day[1];
  if( month.length == 2 && month[0] == '0' )
    month=month[1];
  

  if( (f_isEmpty(day) == false) && (i_month != 0) && (f_isEmpty(year) == false))
  {
    if (f_is_date(day, month, year))
    {
      if (parseInt(day) < 10)
        form.p_jour_modif.value = '0'+parseInt(day); 
       return true;
    }  
    else
    {
      f_giveAlert(form.p_jour_modif, a_date_texte_inexistante);
      return false;
    }  
  }
  else
  {
    f_giveAlert(form.p_jour_modif, a_date_texte_incomplete);
    return false;
  }  
}


function f_check_etab_modif(form)
{
  if (f_isEmpty(form.p_nom_etab_modif.value))
  {
    f_giveAlert(form.p_nom_etab_modif, a_nom_etab_modif_vide);
    return false;
  } 
  else
    return true;
}

function f_check_ville_modif(form)
{
  if (form.p_ville_modif[form.p_ville_modif.selectedIndex].value == 0)
  {
    f_giveAlertSelect(form.p_ville_modif, a_nom_ville_vide);
    return false;
  } 
  else
    return true;
}

function f_check_uai_modif(form)
{
  if (f_isEmpty(form.p_uai_modif.value))
  {
    f_giveAlert(form.p_uai_modif, a_uai_vide);
    return false;
  } 
  else
    return true;
}


function f_checkForm_modif_etab(form)
{
  if (f_check_uai_modif(form)
      && 
      f_check_etab_modif(form)
      && 
      f_check_ville_modif(form)
      &&
      f_check_date_modif(form)
     ) 
    return true;
  else  
    return false;
}


function f_submit_modif_etab()
{
  form = document.modif_etab;
  if( f_checkForm_modif_etab(form) )
    form.submit();
  return false; // Pour ne pas aller vers le HREF...
}  

