/* Fonctions utiles en javascript */

//=Décochage impossible d'une checkbox
//=========================================
function CheckAlways(element)
{
    element.checked = true;
    return true;
}

function Popup(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function PopupCentrer(page,largeur,hauteur,options) {
  var top=(screen.height-hauteur)/2;
  var left=(screen.width-largeur)/2;
  window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}
function popUp(theURL,winName,features) {
	window.open(theURL,winName,features);
}

function popUpCenter( fichier, nom, largeur, hauteur, options )
{
	var gauche = ( screen.width - largeur ) / 2;
	var haut = ( screen.height - hauteur ) / 2;
	if ( options )
		{
			options = 'width=' + largeur + 'px, height=' + hauteur + 'px,  top=' + haut + ', left=' + gauche + ', ' + options;
		}
	else
		{
			options = 'width=' + largeur + 'px, height=' + hauteur + 'px,  top=' + haut + ', left=' + gauche;
		}
	document.open( fichier, nom, options );
}



function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// fonctions d'affichage des calques
var vis = new Array();
function swap_couche(couche, rtl) {
	triangle = MM_findObj('triangle' + couche);
	if (!(layer = MM_findObj('Layer' + couche))) return;
	if (vis[couche] == 'hide'){
		if (triangle) 
		{
			triangle.src = 'themes/demo/picto/deplierbas' + rtl + '.gif';
		}
		layer.style.display = 'block';
		vis[couche] = 'show';
	} else {
		if (triangle)
		{
			triangle.src = 'themes/demo/picto/deplierhaut' + rtl + '.gif';
		} 
		layer.style.display = 'none';
		vis[couche] = 'hide';
	}
}

function SV_showHideLayers() { //v6.0
  var i,p,v,obj,args=SV_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?"block":(v=='hide')?"none":v; }
    obj.display=v; }
}

//fonction qui supprime les espaces inutiles (en fin et debut de chaine)
function trim (chaine) 
{
	chaine = unescape(chaine);
	return chaine.replace(/(^\s*)|(\s*$)/g, "");
}

//=========================================
// Affichage du calque d'erreur
//=========================================
function calqueErreur(docu, titre, chaine, idElement)
{
	var erreur = "<table border=0 width=\"100%\"><tr><td align=\"center\" class=\"dos_txt-s-erreur\">"+titre+"</td></tr><tr><td>";
	erreur += chaine;
	erreur +="</td></tr><tr align=center><td><input type=\"button\" id=\"boutCalqueErreurOk\" value=\"  OK  \" onClick=\"document.getElementById('"+idElement+"').style.display='none'\"></td></tr></table>";

	docu.getElementById(idElement).innerHTML = erreur;	
	docu.getElementById(idElement).style.display = 'block';	
	docu.getElementById('boutCalqueErreurOk').focus();
}

//=========================================
// Génération d'un mot de passe
//=========================================
function pwgen(pwl) {
  // On peut mettre d'autres caractères, y compris des lettres accentuées (encore faut-il que
  // le code ASCII soit le même sur les 3 systèmes codeur, client et serveur)
  // Mais on gagne nettement plus en augmentant la taille du mot de passe que le nombre de caractères.
  var source = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  var pw = '';
  for (var i = 1; i <= pwl; i++) {
	pw += source.substr(Math.floor(Math.random()*source.length),1);
  }
  return pw;
}


//=========================================
// Cochage d'un ensemble de checkbox
//=========================================
function setCheckboxes(the_form, tableau, do_check)
{
    var elts      = document.forms[the_form].elements[tableau];
    var elts_cnt  = (typeof(elts.length) != 'undefined')
                  ? elts.length
                  : 0;

    if (elts_cnt) {
        for (var i = 0; i < elts_cnt; i++) {
            elts[i].checked = do_check;
        } // end for
    } else {
        elts.checked        = do_check;
    } // end if... else

    return true;
}

//=========================================
// Vérification d'une adresse email
//=========================================
function VerificationEmail(email)
{
	var reg = /^[\w.-]+@[\w.-]+\.\w{1,4}$/
	var reg2 = /[.@]{2,}/
	return ((reg.exec(email)!=null) && (reg2.exec(email)==null))
}
