// complète à gauche une chaine de car. "chaine" par le caractère "car". La longueur de la chaîne retournée est "lg".
function lpad(chaine, lg, car) {
  var lg_chaine = chaine.length;

  for (i = 0; i < lg - lg_chaine; i++) {
    chaine = car + chaine;
  }

  return chaine;
}

// Positionne le curseur dans un champ donné
function focusElement(formName, elemName) {
  var elem = document.forms[formName].elements[elemName];
  elem.focus();
  elem.select();
}

/*
function supprimer(elt){
  var retour = true;
  frm = document.forms['form_rub'];
  retour = confirm("Confirmez-vous la suppression de la rubrique " + elt.value + " ?");
  if (retour) {
    frm.elements['suppression'].value = elt.value;
    frm.submit();
  }
}
*/

// Vérifie si un champ a bien été renseigné
function isNotEmpty(frm, elem) {
  var str = elem.value;
  var re = /.+/;
  if(!str.match(re)) {
    alert("Veuillez renseigner les champs obligatoires.");
    setTimeout("focusElement('" + frm.id + "', '" + elem.name + "')", 0);
    return false;
  } 
  else {
    return true;
  }
}

// Vérifie si un champ ne contient que des chiffres
function isNumber(frm, elem) {
  var str = elem.value;
  var re = /^[-]?\d*\.?\d*$/;
  str = str.toString();
  if (!str.match(re)) {
    alert("Veuillez ne saisir que des chiffres.");
    setTimeout("focusElement('" + frm.id + "', '" + elem.name + "')", 0);
    return false;
  }
  return true;
}

// Vérifie si l'adresse e-mail est valide
function isEMailAddr(frm, elem) {
  var str = elem.value;
  var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
  if (!str.match(re)) {
    alert("Veuillez vérifier le format de votre adresse e-mail.");
    setTimeout("focusElement('" + frm.id + "', '" + elem.name + "')", 0);
    return false;
  }
  return true;
}

function isDate(frm, elem, fmt) {
  var val = elem.value;
  if (val == '') return false;

  var dt = getDate(val, fmt);

  if (dt==null) {
    alert("Veuillez saisir une date valide.");
    setTimeout("focusElement('" + frm.id + "', '" + elem.name + "')", 0);
    return false;
  }
  elem.value = formatDate(dt, fmt);
  return true;
}

function getDate(val,fmt,cal)
{
var todaystr = "aujourd\'hui".toUpperCase();
if (val.length > 0 && todaystr.indexOf(val.toUpperCase()) == 0) 
  return new Date();

if(cal==null)
  cal="G";
 
var re = new  RegExp("^ *" + getDateRegExpStr(fmt) + " *$");
var parts= re.exec(val);
if (parts==null)
  return null;

var dmy = fmt.substring(0, 3);
var defyr;
if (fmt.length >=7)
  defyr = parseInt(fmt.substring(5), 10);
else
  defyr = 50;
var d, m, y;
if (dmy == "DMY")
{
  d = parseInt(parts[1],10);
  m = parseInt(parts[2],10);
  y = parseInt(parts[3],10);
}
else if  (dmy == "MDY")
{
  m = parseInt(parts[1],10);
  d = parseInt(parts[2],10);
  y = parseInt(parts[3],10);
}
else
{
  y = parseInt(parts[1],10);
  m = parseInt(parts[2],10);
  d = parseInt(parts[3],10);
}
if (y<100)
{
  
  if (y<=defyr)
    y += 2000;
  else
    y += 1900;
}
--m;

var dt = new Date(y,m,d);

if(cal=="G")
{
  if (dt.getFullYear()!=y||dt.getMonth()!=m||dt.getDate()!=d)
    return null;
}

return dt;
}

function getDateRegExpStr(fmt)
{
var dmy = fmt.substring(0, 3);
var sep = fmt.substring(3, 4);
var sepchars = "-/.";
var sepstr = "\\-\/\\.";
if (sepchars.indexOf(sep)==-1)
   sepstr += sep;     
var restr;

if (dmy == "DMY" || dmy == "MDY")
{
  restr = "(\\d{1,2})[";
  restr += sepstr;
  restr += "]?(\\d{1,2})[";
  restr += sepstr;
  restr += "]?(\\d{4}|\\d{2})";
}
else  // YMD
{
  restr = "(\\d{4}|\\d{2})[";
  restr += sepstr;
  restr += "]?(\\d{1,2})[";
  restr += sepstr;
  restr += "]?(\\d{1,2})";
}
return restr;
}

function formatDate(dt, dateFormat, calendarType)
{
var format = dateFormat.substring(0,3);
var separator = dateFormat.substring(3,4);

if(calendarType == "H")
{
  var day=Number(dt.day);
  var mnt=Number(dt.month) +1;
  var yr=Number(dt.year);
}
else
{
var day = dt.getDate();
var mnt = dt.getMonth() +1;
var yr = dt.getFullYear();
}
if (calendarType == null)
  calendarType = "G";

if (dateFormat.length>=7)
{
  if (dateFormat.substring(4,5) == "2")
  {
    var yrdef = parseInt(dateFormat.substring(5,7), 10);
    var yr2 = yr%100;
    if (yr2 < yrdef)
    {  
      if (yr2 + 2000 == yr)
        yr = yr2;
    }
    else
    {  
      if (yr2 + 1900 == yr)
        yr = yr2;
    }
  }
}

if (calendarType == "T")
  yr=yr+543;

var formattedDate;
if (format == 'MDY')
  formattedDate = '' + padout(mnt) + separator + padout(day) + separator + padout(yr);
else if (format == 'DMY')
  formattedDate = '' + padout(day) + separator +padout(mnt) + separator  + padout(yr);
else if (format == 'YMD')
  formattedDate = '' + padout(yr) + separator + padout(mnt) + separator + padout(day);

return formattedDate;
}

function padout(number)
{
return (number < 10) ? '0' + number : number;
}

