/* ----------------------------------------- Ouverture de popup  ----------------------------------------------- */
// Si x et y ne sont pas mentionnés, la popup est automatiquement centrée
function openPopup (url,nomPopup,myScroll,l,h,x,y,myResizable){
var win;
if (x == null) {
	x = screen.width/2 - l/2;
}
if (y == null){
	y = screen.height/2 - h/2;
}
if (myScroll != 'no'){
	myScroll = 'yes';
}
if (myResizable != 'yes'){
	myResizable = 'no';
}
win=open(url,nomPopup,'width=' + l + ',height=' + h + ',status=no,toolbar=no,menubar=no,location=no,resizable=' + myResizable + ',titlebar=no,scrollbars=' + myScroll + ',fullscreen=no,left=' + x + ',top=' + y);
win.focus();
return win;
}


// Si x et y ne sont pas mentionnés, la popup est automatiquement centrée
function openModalPopup (url,args,myScroll,l,h,x,y,myResizable){

if (x == null) {
	x = screen.width/2 - l/2;
}
if (y == null){
	y = screen.height/2 - h/2;
}
if (myScroll != 'no'){
	myScroll = 'yes';
}
if (myResizable != 'yes'){
	myResizable = 'no';
}
var sSettings = "help:no;border:thin;status:no;toolbar:no;menubar:no;location:no;scrollbars:" + myScroll + ";resizable:" + myResizable + ";dialogHeight:" + h + "px;dialogWidth:" + l + "px;dialogTop:" + y + "px;dialogLeft:" + x + "px";
return window.showModalDialog(url,args,sSettings);
}

/*Pour retourner une valeur : 
	window.returnValue="toto";
Pour la récuperer : 
	maValeur = window.showModalDialog(url,args,sSettings);
	*/

function openLink(URI, NewWin){
	if(NewWin == null || NewWin == false)
	{
		document.location.href = URI;
	}
	else {
		win = window.open(URI,"secWin");
		win.focus;
	}
}

/* ----------------------------------------- Détection du navigateur  ----------------------------------------------- */
isNS4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) >= 4 && parseInt(navigator.appVersion) < 5) ? true : false;
isNS6 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) >= 5) ? true : false;
isIE4 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) >= 4 &&  parseInt(navigator.appVersion) < 6) ? true : false;
isIE6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion.substr(navigator.appVersion.indexOf('MSIE')+5,3)) >= 6) ? true : false;


// utiliser cette fonction pour récupérer un objet en fonction du navigateur
function getElem (nom) {
	
	var tmp = null;
	
	if (nom != ""){
		if (isNS4) {
			tmp = nav4FindLayer(document, nom);
		}
		else if (isNS6 || isIE6) {
			tmp = eval('document.getElementById("' + nom + '")');
		}
		else {
			tmp = eval('document.all.' + nom);
		}
	}

	return ((tmp!=null) ? tmp : false);
}

// utiliser cette fonction pour récupérer le style d'un objet en fonction du navigateur
function getElemStyle (nom) {
	var tmpElem = getElem (nom);
	
	return (isNS4) ? tmpElem : (tmpElem) ? tmpElem.style : false;
}


function nav4FindLayer(doc, id)
{
  var i;
  var subdoc;
  var obj;
  
  for (i = 0; i < doc.layers.length; ++i)
  {
    if (doc.layers[i].id && id == doc.layers[i].id)
      return doc.layers[i];
      
    subdoc = doc.layers[i].document;
    obj    = nav4FindLayer(subdoc, id);
    if (obj != null)
      return obj;
  }
  return null;
}


/* ----------------------------------------- Roll over sur les images  ----------------------------------------------- */
// les images de boutons qui possèdent un rollover doivent finir par
// --    "_on.ext" pour l'image affichée quand le pointeur se trouve sur le bouton
// --    "_off.ext" pour l'image affichée quand le pointeur sort du bouton
function rollOn (img){
var tmp;

tmp = img.src ;
img.src = tmp.replace("_off.","_on.");
}

function rollOff (img){
var tmp;

tmp = img.src ;
img.src = tmp.replace("_on.","_off.");
}

function classOn(obj, newClass)
{
	obj.LastClass = obj.className;
	obj.className = newClass;
}

function classOff(obj)
{
	obj.className = obj.LastClass;
}

/* --------------------------------------------- Validation ----------------------------------------------------------- */
	
function isInt(value) 
{
	if(isNaN(value) || parseInt(value).toString().length != Number(value).toString().length)
	{
		return false;
	}
	
	return true;
}

function isFloat(value) 
{
	if(isNaN(value) || parseFloat(value).toString().length != Number(value).toString().length)
	{
		return false;
	}
	
	return true;
}

function isMail (value) {
	var re_email = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]{2,4}){1}$/ ;
	return re_email.test(value);
}


function isEmpty(value){
	var re = new RegExp("\s","g");
	return (value.replace(/\s/g,"") == "");
}

function isDateFr(theDate)
{
	// Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa

	if (theDate == "") // si la variable est vide on retourne faux
		return false;

	e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$");

	if (!e.test(theDate)) // On teste l'expression régulière pour valider la forme de la date
	return false; // Si pas bon, retourne faux

	// On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
	j = parseInt(theDate.split("/")[0], 10); // jour
	m = parseInt(theDate.split("/")[1], 10); // mois
	a = parseInt(theDate.split("/")[2], 10); // année

	// Si l'année n'est composée que de 2 chiffres on complète automatiquement
	if (a < 1000) {
		if (a < 89)  a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
		else a+=1900;
	}

	// Définition du dernier jour de février
	// Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
	if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
	else fev = 28;

	// Nombre de jours pour chaque mois
	nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);
	
	// Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
	var DateOk = ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
	
	return DateOk;
}

function isDateTimeFr(d)
{
	// Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa

	if (d == "") // si la variable est vide on retourne faux
		return false;

	e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4} [0-9]{1,2}:[0-9]{1,2}$");

	if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
	return false; // Si pas bon, retourne faux

	var theDate = d.split(" ")[0];
	var theTime = d.split(" ")[1];

	// On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
	j = parseInt(theDate.split("/")[0], 10); // jour
	m = parseInt(theDate.split("/")[1], 10); // mois
	a = parseInt(theDate.split("/")[2], 10); // année

	// Si l'année n'est composée que de 2 chiffres on complète automatiquement
	if (a < 1000) {
		if (a < 89)  a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
		else a+=1900;
	}

	// Définition du dernier jour de février
	// Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
	if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
	else fev = 28;

	// Nombre de jours pour chaque mois
	nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);
	
	// Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
	var DateOk = ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
	
	h = parseInt(theTime.split(":")[0], 10); // Heure
	min = parseInt(theTime.split(":")[1], 10); // Minute
	
	var TimeOk = (h>=0 && h<24 && min>=0 && min<60);
	
	return DateOk && TimeOk;
}


function isDateTimeEn(d)
{
	// Cette fonction permet de vérifier la validité d'une date au format mm/jj/aa ou mm/jj/aaaa

	if (d == "") // si la variable est vide on retourne faux
		return false;

	e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4}) [0-9]{1,2}:[0,9]{1,2}$");

	if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
		return false; // Si pas bon, retourne faux

	var theDate = d.split(" ")[0];
	var theTime = d.split(" ")[1];

	// On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
	m = parseInt(theDate.split("/")[0], 10); // mois
	j = parseInt(theDate.split("/")[1], 10); // jour
	a = parseInt(theDate.split("/")[2], 10); // année

	// Si l'année n'est composée que de 2 chiffres on complète automatiquement
	if (a < 1000) {
		if (a < 89)  a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
		else a+=1900;
	}

	// Définition du dernier jour de février
	// Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
	if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
	else fev = 28;

	// Nombre de jours pour chaque mois
	nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);
	
	// Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
	var DateOk = ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );


	h = parseInt(theTime.split(":")[0], 10); // Heure
	min = parseInt(theTime.split(":")[1], 10); // Minute
	
	var TimeOk = (h>=0 && h<24 && min>=0 && min<60);
	
	return DateOk && TimeOk;
}