/**
 * 
 * @version $Revision $
 * @cvs $id $
 */

/**
 *
 * @param integer iId
 * @return object
 */
function elem(iId){
	return document.getElementById(iId);
}//end function 
 
/**
 *
  * @param string sExt;
 * @param array aExt;
  * @return bool
 */
function in_array(sExt,aExt){
	for(i in aExt){
		if(sExt==aExt[i]){
			return true;
		}
	}
	return false;
} 
 
/**
 *
 * @param string sUrl
 * @param string sUrl
 * @return void
 */
function loadExternalUrl(sUrl, sName){
	if(sName == undefined){
		sName = '';
	}//end if
	var oWindow = window.open( sUrl, sName,'');
	oWindow.focus();
}//end function

/**
 * @param string sUrl
 * @param integer iWidth
 * @param integer iHeight
 * @param boolean bCache
 * @return void
 */
function popup(sUrl, iWidth, iHeight, sName){
	var iCoordX = (screen.width /2) - ( iWidth/2);
	var iCoordY = (screen.height /2) - ( iHeight/2);

	if(sName == undefined){
		sName = '';
	}//end if
	
	var oPopup = window.open( sUrl, sName,'status=0, left=' + iCoordX + ' ,top=' + iCoordY + ' ,height=' + iHeight + ' ,width=' + iWidth + ', toolbar=no, status=no, location=no, resizable=no, scrollbars=yes, copyhistory=0, menubar=no');
	oPopup .focus();
	return false;
	
}//end function

/**
 *
  * @param integer iIdConteneur;
 * @param integer iLargeur;
  * @return void
 */
 
function setTailleFenetre(iIdConteneur,iLargeur,bCentre){
	hauteur=elem(iIdConteneur).offsetHeight;
	if(hauteur>650){
		hauteur=650;
	}
	if(document.all){
		window.resizeTo(iLargeur,hauteur+300);	
	}
	else{
		window.outerHeight =hauteur+305;	
		window.outerWidth =iLargeur;	
	}
	if(bCentre == undefined || bCentre == true){
		centreFenetre();
	}//end if	
	
}
/*

// Fonction permettant de redimensionner la fenetre en fonction de la hauteur du body 
// on fixe uniquement la largeur
//la fenetre se rencentre automatiquement

selon le navigateur, on ajoute plus ou moins de pixels supplémentaires afin d'être sur que
la fenêtre contienne tout.

Avantage : si on affiche ou cache des div, en appelant cette fonction la fenêtre se redimensionne 
en prenant en compte ces changements

Bémol : IE 7.0 atteint une limite lorsque que l'on arrive à une hauteur trop importante

testé sous firefox, IE6.0 et 7.0,  safari Windows

*/

function autoResize(iLargeur) {
	iHauteur = document.body.offsetHeight;
	var NomNav = navigator.appName;
	
	// redimensionnement de la fenêtre différent selon IE ou autre
	if (NomNav == "Microsoft Internet Explorer") {
		iAjout = 90;
	}
	else {
		iAjout = 55;
	}
	iHauteur = iHauteur+iAjout;
	window.resizeTo(iLargeur,iHauteur) ;

	var largeur=screen.availWidth; //calcul auto de la largeur de l'ecran client 
	var hauteur=screen.availHeight; //calcul auto de la hauteur de l'ecran client 
	// je veux que ma fenetre soit centrée en hauteur et largeur 
	var demiL=((largeur-iLargeur)/2); 
	var demiH=((hauteur-iHauteur)/2); 
	window.moveTo(demiL,demiH); 
}

function centreFenetre(){
	if(document.all){
		var x = (screen.width - document.body.offsetWidth)/2;
		var y = (screen.height - document.body.offsetHeight)/2;
	}
	else{
		var px1 = opener.screenX;
		var px2 = opener.screenX + opener.outerWidth;
		var py1 = opener.screenY;
		var py2 = opener.screenY + opener.outerHeight;
		var x = (px2 - px1 - window.outerWidth) / 2;
		var y = (py2 - py1 - window.outerHeight) / 2;
	}
	window.moveTo(x, y);	
}

function checkMail(sEmail) {
	var Expression = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
	//var Expression = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|biz|info|name|aero|biz|info|jobs|museum)\b$/;
	return Expression.test(sEmail);
}//end function

function testDate(chaine,champ){
	var msg="";
	var exp1=new RegExp("[/]{1}","g");
	var tabDate=chaine.split(exp1);	
	
	if (tabDate==null || tabDate.length!=3)
		{msg+=champ+" incorrecte\n";}
	else {
		var t1=tabDate[0];
		var t2=tabDate[1];
		var t3=tabDate[2];
		if (!(t1>0 && t1<32)){msg+="Jour de "+champ+" incorrect\n";}
		if (!(t2>0 && t2<13)){msg+="Mois de "+champ+" incorrect\n";}
		if (!(t3>0 && t3.length==4)){msg+="Année de "+champ+" incorrecte\n";}		
		
	}
	return msg;
}

function changeClass(id,classname) {
	document.getElementById(id).className = classname;
}

// FONCTIONS UTILES POUR GESTION DES ROLLOVERS 

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.01
  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 && d.getElementById) x=d.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];}
}

// **** Verification du format des dates  **** //
function test_date(jj,mm,aa){
	if(jj.length!=2||jj<1||jj>31||mm.length!=2||mm<1||mm>12||aa.length!=4) return false;
	if(mm==2){
		if(jj==30||jj==31) return false;
		if(jj==29) return ((aa%4==0&&aa%100!=0)||aa%400==0);
	}
	if(jj==31) return !(mm==4||mm==6||mm==9||mm==11);return true;
}


function date_valide(valeur){
	var valeurDate=valeur, indSep1=valeurDate.indexOf("/"), indSep2=valeurDate.lastIndexOf("/"), jj=valeurDate.substring(0,indSep1), mm=valeurDate.substring(indSep1+1,indSep2), aa=valeurDate.substr(indSep2+1);
	if ((indSep1==-1) && (indSep1==indSep2)) return false;
	if (!test_date(jj,mm,aa)) return false;
	return true;
}
// **** Fin Verification du format des dates  **** //

/*
 Permet d'afficher ou de cacher un calque
*/

function Affiche(obj) {
	var el = document.getElementById(obj);
	el.style.display = "block";
}
function Cache(obj) {
	var el = document.getElementById(obj);
	el.style.display = "none";
}


/**
** Test si le parametre est de type integer
*/
function isInteger(sValue) {
	var Expr = /^[0-9]+$/;
	return Expr.test(sValue);
}//End function
