
//*********************//
// ***  DOCUMENT   *** //
//*********************//

/**
 * Retourne l'élément dont l'id est passé en paramètre
 * @param String
 * @return Object
 */
function $(param) {
	return document.getElementById(param);
}

/**
 * Ajout d'événement dans le onLoad de la page (sans écraser les précédents)
 * @param Function : nom de la fonction a exécuter ou déclaration d'une fontion
 *		addLoadEvent(maFonction);
 *		addLoadEvent(function(){...});
 */
function addLoadEvent(func) {
   var oldOnLoad = window.onload;
   if (typeof window.onload != "function") { // Si aucun élément dans le onLoad, ajout de la fonction
      window.onload = func;
   }
   else { // Sinon, création d'une fonction reprenant les éléments précédents et ajoutant le nouveau
      window.onload = function() {
         if (oldOnLoad)
            oldOnLoad();
         func();
      };
   }
}

/**
 * ouvre une popup
 * @param String : url de la page à ouvrir
 * @param int : largeur
 * @param int : hauteur
 * @param boolean : scroller
 */
var win = null;
function popup(url, width, height, scroll) {
	if (win && !win.closed) {
		win.close();
		win = null;
	}
	var topPosition = (screen.height - height) / 2;
	var leftPosition = (screen.width - width) / 2;
	scroll = (scroll) ? scroll : 1;
	win = window.open(url, "popup", "top="+topPosition+",left="+leftPosition+",width="+width+",height="+height+",menu=0,scrollbars="+scroll);
	win.focus();
}


//*********************//
// ***   STRINGS   *** //
//*********************//

/**
 * Complète la chaine str à droite par nbre fois le caractère char
 * @param : String la chaine à compléter
 * @param : nbre la taille de la chaine
 * @param : le caractère de complétion
 * @return : String
 */
function padR(str, nbre, car) {
	if(str.length > nbre)
		return str.substring(0, nbre);

	while (str.length < nbre) {
		str += car;
	}
	return str;
}
/**
 * Complète la chaine str à gauche par nbre fois le caractère char
 * @param : String la chaine à compléter
 * @param : nbre la taille de la chaine
 * @param : le caractère de complétion
 * @return : String
 */
function padL(str, nbre, car) {
	if(str.length > nbre)
		return str.substring(str.length-nbre, str.length);

	while (str.length < nbre) {
		str = car + str;
	}
	return str;
}


/**
 * supprime les espaces à la fin de la chaine
 *	param1 > String chaine à modifier
 *	return > String chaine modifiée
 */
function rtrim(s) {
	if (s!=null) {
		//return s.replace(/(\s*$)/g,''); // Inéfficace sous NS !
		while (s.substring(s.length - 1, s.length) == " ") {
			s = s.substring(0, s.length - 1);
		}
	} else {	s = "" }
	return s;
}
/**
 * supprime les espaces au début de la chaine
 *	param1 > String chaine à modifier
 *	return > String chaine modifiée
 */
function ltrim(s) {
	if (s!=null) {
		//	return s.replace( /^\s*/g, '');
		while (s.substring(0, 1) == " ") {
			s = s.substring(1, s.length);
		}
	} else {	s = "" }
	return s;
}
/**
 * Supprime les espaces au début et à la fin de la chaine
 *	param1 > String chaine à modifier
 *	return > String chaine modifiée
 */
function trim(s) {
  return rtrim(ltrim(s));
}
/**********************************************/
// Changement d'images
/**********************************************/

/*
 onMouseOver="swapImage('nom','','image.gif',1);" onMouseOut="swapImgRestore();"
*/
function swapImgRestore() { //v3.0
  var i,x,a=document.sr;
  for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function findObj(n, d) { //v3.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=findObj(n,d.layers[i].document);
  return x;
}

function swapImage() { //v3.0
  var i,j=0,x,a=swapImage.arguments;
  document.sr=new Array;
  for(i=0;i<(a.length-2);i+=3)
  //alert("i : "+i+" / a : " + a[i])
   if ((x=findObj(a[i]))!=null)
   {
   	document.sr[j++]=x;
   	if(!x.oSrc) x.oSrc=x.src;
   	x.src=a[i+2];
   }
}
