// inclusion librairie DHTML
libDir="dhtml";
OBJLIB=1;
document.write('<script language="javascript" src="dhtml/launcher.js"></script>');

// validation formulaire de recherche
// force affichage valeur par défaut si champ vide
function checkRecherche(obj, def) {
  if( obj.recherche.value == def )
    obj.recherche.value = '';
  setTimeout('finSaisie(document.forms[1].recherche,"'+def+'")', 500);
  return true;
}

// début de saisie de la recherche
// efface valeur par défaut
function debutSaisie(obj, def) {
  if( obj.name == 'recherche' ) {
    if( obj.value == def )
      obj.value = '';
  }
}

// fin de saisie de la recherche
// force affichage valeur par défaut si champ vide
function finSaisie(obj, def) {
  if( obj.name == 'recherche' ) {
    if( obj.value == '' )
      obj.value = def;
  }
}

// affichage bordure sur lien image
function imageOver(obj) {
  if( obj._clic )
  {
    obj.style.borderLeft='1px solid #666666';
    obj.style.borderTop='1px solid #666666';
    obj.style.borderRight='1px solid #DDDDDD';
    obj.style.borderBottom='1px solid #DDDDDD';
  }
  else
  {
    obj.style.borderLeft='1px solid #DDDDDD';
    obj.style.borderTop='1px solid #DDDDDD';
    obj.style.borderRight='1px solid #666666';
    obj.style.borderBottom='1px solid #666666';
  }
}

// masquage bordure sur lien image
function imageOut(obj) {
  obj.style.border='1px solid white';
}

// simulation bouton enfoncé sur lien image
function imageClickDown(obj) {
  obj._clic = true;
  imageOver(obj);
  obj._cto = setTimeout("imageClickUp(document.images['"+obj.name+"'])", 5000);
}

// simulation bouton relaché sur lien image
function imageClickUp(obj) {
  if( obj._cto ) clearTimeout(obj._cto);
  obj._cto = null;
  obj._clic = false;
  imageOver(obj);
}

// renvoie "true" si la variable "val" est vide ou nulle
function empty(val, empty0) {
  empty0 = empty0 ? true : false;
  return (val == null) || (val == '') || ((val == 0) && empty0);
}

// validation sur un champ obligatoire (s'il existe !)
function validChamp(champ) {
  if( typeof(champ) == 'undefined' ) return true;
  champ.focus();
  if( champ.type.substr(0,6) == "select" )
  {
    if( champ.selectedIndex < 0 ) return false;
    return !empty(champ.options[ champ.selectedIndex ].value);
  }
  else if(typeof(champ.value) != 'undefined' )
    return !empty(champ.value);
  return true;
}

// bascule du libelle d'un champ de liste vers un champ texte
function copierLibelle(champSelect, champTexte) {
  if( champSelect.selectedIndex < 0 ) return;
  champTexte.value = champSelect.options[ champSelect.selectedIndex ].text;
}

// bascule de la valeur interne d'un champ de liste vers un champ texte
function copierValeur(champSelect, champTexte) {
  if( champSelect.selectedIndex < 0 ) return;
  champTexte.value = champSelect.options[ champSelect.selectedIndex ].value;
}

// bascule de la valeur interne d'un champ de liste vers un élément
function copierValeurElement(champSelect, elem) {
  if( champSelect.selectedIndex < 0 ) return;
  if( elem )
  {
    var ref = new RefElementObj(elem);
    writeLayer(ref, champSelect.options[ champSelect.selectedIndex ].value);
  }
}

// vérifie la saisie en temps réél
// s'assure que l'on ne saisit bien que des chiffres
// doit remplacer le gestionnaire d'événement du champ de saisie
function saisieNumerique(e) {
  var k = '';
  if( e.charCode ) k = e.charCode;
  else k = e.keyCode;
  if( (k==8) ||                 // touche ret. arr.
      (k==9) ||                 // touche tab.
      (k==13) ||                // touche entrée
      (k==27) ||                // touche echap
      (k==45) ||                // touche insert
      (k==46) ||                // touche suppr.
      ((k>=35) && (k<=40)) ||   // touches déplacement
      ((k>=48) && (k<=57)) )    // touche 0..9
      return true;
  return false;
}

// complète une URL de manière à avoir une URL absolue si possible
function fullURL(url) {
  if( url.substr(0, 4).toLowerCase() != 'http' ) {
    var base = location.href;
    var pos = base.lastIndexOf('/');
    if( pos > -1 ) base = base.substr(0, pos);
    if( url.charAt(0) != '/' ) base += '/';
    url = base + url;
  }
  return url;
}

// ajoute les paramètres de la page en cours a l'url cliquée
function completeURL(lnk) {
  if( typeof(lnk) == 'undefined' ) return;
  var base = location.href;
  var pos = base.indexOf('?');
  if( pos > -1 ) var param = base.substr(pos + 1);
  if( lnk.href.indexOf('?') > -1 )  lnk.href += '&' + param;
  else lnk.href += '?' + param;
}

// tente l'ouverture d'une popup
// en cas d'échec, affiche un message
function windowOpen(url, wname, param)
{
  var win = window.open(url,wname,param);
  if( !win ) alert("Pour son bon fonctionnement, cette page a tenté d'ouvrir une nouvelle fenêtre. Cependant votre navigateur est configuré pour refuser cette action.\nMerci d'autoriser l'ouverture de fenêtres pour ce site.");
  return win;
}

// ouverture d'une fenêtre surgissante à la taille souhaitée
// la fenêtre est centrée sur l'écran
function ouvrirPopup(url,w,h,wname,scroll) {
  var width = w;
  var height = h;
  var left = (screen.availWidth - width) / 2;
  var top = (screen.availHeight - height) / 2;
  param="width="+width+",height="+height+",left="+left+",top="+top+","+(scroll?"scrollbars=yes":"scrollbars=no")+",resizable=yes";
  return windowOpen(url,wname,param);
}

// ouverture d'une fenêtre surgissante à la taille souhaitée
// la fenêtre est positionnée à l'emplacement souhaité sur l'écran
function ouvrirPopupPos(url,x,y,w,h,wname,scroll) {
  var width = w;
  var height = h;
  var left = x!=null ? x : (screen.availWidth - width) / 2;
  var top = y!=null ? y : (screen.availHeight - height) / 2;
  param="width="+width+",height="+height+",left="+left+",top="+top+","+(scroll?"scrollbars=yes":"scrollbars=no")+",resizable=yes";
  return windowOpen(url,wname,param);
}

// ouvre une url en popup à partir d'une saisie dans un champ texte
// la fenêtre est centrée sur l'écran
function testUrl(champ,w,h,wname,scroll) {
  if( typeof(champ) == 'undefined' ) return;
  var width = w;
  var height = h;
  var left = (screen.availWidth - width) / 2;
  var top = (screen.availHeight - height) / 2;
  param="width="+width+",height="+height+",left="+left+",top="+top+","+(scroll?"scrollbars=auto":"scrollbars=no")+",resizable=yes";
  return windowOpen(champ.value,wname,param);
}

// définit la classe d'un élément
function setClass(id, css) {
  var el = typeof(id) == 'string' ? document.getElementById(id) : id;
  if( el )
  {
    el.className = css;
  }
}

// ajoute une classe sur un élément
function addClass(id, css) {
  var el = typeof(id) == 'string' ? document.getElementById(id) : id;
  if( el )
  {
    if( el.className.indexOf(css) < 0 )
      el.className += ' ' + css;
  }
}

// retire une classe sur un élément
function removeClass(id, css) {
  var el = typeof(id) == 'string' ? document.getElementById(id) : id;
  if( el )
  {
    reg = new RegExp('/\s*' + css + '\s*/');
    el.className = el.className.replace(reg, "");
  }
}

// remplace une classe sur un élément
function replaceClass(id, oldCss, newCss) {
  var el = typeof(id) == 'string' ? document.getElementById(id) : id;
  if( el )
  {
    reg = new RegExp('/\s*' + oldCss + '\s*/');
    el.className = el.className.replace(reg, newCss);
  }
}

// teste la présence d'une classe sur un élément
function hasClass(id, css) {
  var el = typeof(id) == 'string' ? document.getElementById(id) : id;
  if( el )
    return el.className.indexOf('invisible') >= 0 ? true : false;
  return false;
}

newFenetreSize = function (url,w,h,msg) { return ouvrirPopup( url, w, h, '', true, msg ) ; } ;
newFenetreScreenSize = function (url,msg) { return ouvrirPopup( url, null, null, '', true, msg ) ; } ;
newFenetreFull = function (url,msg) { return ouvrirPopup( url, (screen.availWidth-130), (screen.availHeight-100), '', true, msg ) ; } ;

ouvrirPopup = function (url,w,h,wname,scroll,msg,params)
{
  var param = '' ;
  if( ( typeof(msg) == 'undefined' ) || ( msg == '' ) ) {
    msg = gettext("Les fenêtres ne peuvent pas s'ouvrir. Il est possible que vous ayez activé la fonction de blocage des fenêtres surgissantes ?") ;
  }

  // if( ( typeof(w) == 'undefined' ) || ( typeof(w) == 'undefined' ) param+= 'fullsize=yes' ;
  if ( typeof(scroll) == 'undefined' ) { scroll = true ; }
  if ( typeof(w) == 'undefined' ) { w = screen.availWidth / 2 ; }
  if ( typeof(h) == 'undefined' ) { h = screen.availHeight / 2 ; }
  var width = w > screen.availWidth ? screen.availWidth - 50 : w;
  var height = h > screen.availHeight ? screen.availHeight - 50 : h;
  if( typeof(params) == 'undefined' ) var params = { left: ((screen.availWidth - width) / 2), top: ((screen.availHeight - height) / 2) };
  var left = ( typeof(params.left) == 'undefined' ) ? (screen.availWidth - width) / 2 : params.left ;
  var top = ( typeof(params.top) == 'undefined' ) ? (screen.availHeight - height) / 2 : params.top ;
  var now = new Date();

  if ( typeof(wname) == 'undefined' ) { wname = "popup_window_" + now.getTime() ; }

  param+="width="+width+",height="+height+",left="+left+",top="+top+","+(scroll?"scrollbars=yes":"scrollbars=no")+",resizable=yes";

  wname = window.open(url,wname,param);

  if( ! wname ) {
    alert( msg ) ;
  } else {
    if( ! eval("wname.opener") ) {
      wname.opener = self ;
    }
  }
  return wname ;
}

function gettext(str) {
    var s;
    if ((typeof(LocalizedStrings)=="object") && (s=LocalizedStrings[str])) return s;
    return str;
}

function UTIL_verifEmail( email )
{
  var reg = /^[A-z0-9][\w.-]*@[A-z0-9][\w\-\.]+\.[A-z0-9]{2,6}$/
  return (reg.exec(email)!=null)
}