//var w;
function popupOpen(page) {
   window.open(page,"pop1","width=600,height=400,resizable=yes,scrollbars=yes");
}

// Vérifie que le code postal est correct
function fnIsCodePostal(aValue, iNullAllowed) {
	//get length of string
	iLength = aValue.length;
	//check if null
	if (iLength == 0 && iNullAllowed == 1)
		return true;
	if (iLength != 5 && iNullAllowed != 1)
		return false;
	re = /^[0-9]*$/;
	iSearch = re.exec(aValue);
	if (iSearch == null)
		return false;
	return true;
}

// Vérifie que le format de la date est correct: jj/mm/aaaa
function fnIsDate(str){
	var filter=/^(0?[1-9]|[12]\d|3[01])\/(0?[1-9]|1[0-2])\/(\d{4})$/i
	if (!filter.test(str)){
		testresults=false
	}else{testresults=true}
	return (testresults)
}

// Vérifie que la chaine correspond bien à une adresse email
function fnIsEmail(aValue)
{
	re = /^[a-zA-Z0-9_.\-]+\@[a-zA-Z0-9_.\-]+\.[a-zA-Z0-9_\-]+$/;
	iSearch = re.exec(aValue);
	if (iSearch == null)
		return false;
	return true;
}

// Vérifie qu'une chaine est bien composée de caractères alphanumériques
function fnIsAlphaNumeric(field) {
	var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
	var ok = "yes";
	var temp;
	if (field.value.length == 0) {
		return false;
	}
	for (var i=0; i<field.value.length; i++) {
		temp = "" + field.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") ok = "no";
	}
	if (ok == "no") {
		return false;
   	}
   	return true;
}


//La fonction fnVerifDate vérifie la validité de la date entrée en paramètre
function fnVerifDate(dValue){
	var ok = true;
	var dateSaisie2 = "";

	if(dValue!=""){
		//Expression rationnelle ; la date peut avoir les formes : 01/01/2003, 1/1/2003
		re = /^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{2,4}$/;
		iSearch = re.exec(dValue);
		if (iSearch == null){
			ok = false;
		}else{
			/*
			Vérifications :
				- validité de la date
				- la date de fin est postérieure à la date de début
			*/

			//Décomposition
			mask_jour = /^[0-9]{1,2}/;
			mask_mois = /\/[0-9]{1,2}\//;
			mask_mois2 = /[0-9]{1,2}/;
			mask_annee = /[0-9]{2,4}$/;

			strJour = mask_jour.exec(dValue);
			strMois = mask_mois2.exec(mask_mois.exec(dValue));
			strAnnee = mask_annee.exec(dValue);


			// Test le nombre de jour du mois de Février selon l'année
			if ((strAnnee % 4 == 0) && (strAnnee % 100 != 0) || (strAnnee % 400 == 0)) {
				tab_mois = new Array (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
			} else {
				tab_mois = new Array (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
			}

			//Vérifications
			if(!(strMois>=1 && strMois<=12)){
				ok = false;
			}else{
				if(!(strJour>=1 && strJour<=tab_mois[(strMois-1)])){
					ok = false;
				}
			}

		}
	}
	return ok;
}

// Vérifie qu'une valeur est bien numérique
// si decimal égal 1: possible de virgule
function IsNumeric(sText,decimal)
{
	var ValidChars;
	if (decimal == 1) {ValidChars = "0123456789.,";}else{ValidChars = "0123456789";}
   var IsNumber=true;
   var Char;

   for (i = 0; i < sText.length && IsNumber == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsNumber = false;
         }
      }
   return IsNumber;

}

function getLaDate(strDate){	  
	
day = strDate.substring(0,2);
month = strDate.substring(3,5);
month = month-1;
year = strDate.substring(6,10);

d = new Date();
d.setMonth(month);
d.setDate(day);
d.setFullYear(year);

return d;  
}

function isDateValid(chaineDate) {

// Je regarde tout d'abord si la chaîne n'est pas vide, sinon pas la peine d'aller plus loin
   if (chaineDate.length < 10) return false

// J'utilise split pour créer un tableau dans lequel je récupère les jour mois année
// J'attends bien sûr une date formatée en JJ/MM/AAAA
   var ladate = (chaineDate).split("/")

// Si je n'ai pas récupéré trois éléments ou bien s'il ne s'agit pas d'entiers, pas la peine non plus d'aller plus loin
   if ((ladate.length != 3) || isNaN(parseInt(ladate[0])) || isNaN(parseInt(ladate[1])) || isNaN(parseInt(ladate[2]))) return false

// Sinon, c'est maintenant que je crée la date correspondante. Attention, les mois sont étalonnés de 0 à 11
   var unedate = new Date(eval(ladate[2]),eval(ladate[1])-1,eval(ladate[0]))

// Bug de l'an 2000 oblige, lorsque je récupère l'année, je n'ai pas toujours 4 chiffres selon les navigateurs, je rectifie donc ici le tir.
   var annee = unedate.getYear()
   if ((Math.abs(annee)+"").length < 4) annee = annee + 1900

//  Il ne reste plus qu'à vérifier si le jour, le mois et l'année obtenus sont les mêmes que ceux saisis par l'utilisateur.
   return ((unedate.getDate() == eval(ladate[0])) && (unedate.getMonth() == eval(ladate[1])-1) && (annee == eval(ladate[2])))
}

//Retorune:
//   0 si date_1=date_2
  //   1 si date_1>date_2
//  -1 si date_1<date_2	  
function compare(date_1, date_2){
	
	isDateValid(date_1);
	isDateValid(date_2);
	
	diff = getLaDate(date_1).getTime()-getLaDate(date_2).getTime();
	
  return (diff==0?diff:diff/Math.abs(diff));
}
//-->
