function myOpen(theURL,winName,features) {
  w=window.open(theURL,winName,features);
}

function estPresent(obj, nom, taille, type) {
	return maFonction(obj, nom, taille, type, true);
}

function estValide(obj, nom, taille, type) {
	return maFonction(obj, nom, taille, type, false);
}

function maFonction(obj, nom, taille, type, presence) {
	if (presence && obj.value == "") {
		alert(nom);
		obj.focus();
		return false;
	}
	if (taille != -1 && obj.value.length > taille) {
		alert("Le champ '" + nom + "' est trop long.\nMaximum " + taille + " caractères.");
		obj.focus();
		obj.select();
		return false;		
	}
	if (obj.value != "" && type == "int") {
		temp = parseInt(obj.value);
		if (isNaN(temp)) {
			alert("Le champ '" + nom + "' n'est pas un nombre entier.");
			obj.focus();
			obj.select();
			return false;
		}
		obj.value = temp
	}
   else if (obj.value != "" && type == "intPositif") {
		temp = parseInt(obj.value);
		if (isNaN(temp)) {
			alert("Le champ '" + nom + "' n'est pas un nombre entier.");
			obj.focus();
			obj.select();
			return false;
		}
		else if (temp < 0) {
			alert("Le champ '" + nom + "' n'est pas un nombre entier POSITIF.");
			obj.focus();
			obj.select();
			return false;
		}
		obj.value = temp
	}
	else if (obj.value != "" && type == "float") {
		var reg = RegExp(" ","gi");
		var temp = obj.value.replace(reg,"");
		temp = Remplace(temp,",",".");
		temp = parseFloat(temp);
		if (isNaN(temp)) {
			alert("Le champ '" + nom + "' n'est pas un nombre décimal.");
			obj.focus();
			obj.select();
			return false;
		}
		obj.value = temp			
	}
	else if (obj.value != "" && type == "floatPositif") {
		var temp = replaceString(",", ".", obj.value);
		temp = parseFloat(temp);
		if (isNaN(temp)) {
			alert("Le champ '" + nom + "' n'est pas un nombre décimal.");
			obj.focus();
			obj.select();
			return false;
		}
		else if (temp < 0) {
			alert("Le champ '" + nom + "' n'est pas un nombre décimal POSITIF.");
			obj.focus();
			obj.select();
			return false;
		}
		obj.value = temp
	}
	else if (obj.value != "" && type == "email") {
		var i = obj.value.indexOf("@",2);
		var j = obj.value.indexOf(".", i + 3);
		if ((i == -1) || (j == -1) || (j + 3 > obj.value.length)) {
			alert("Le champ '" + nom + "' n'est pas un email valide.");
			obj.focus();
			obj.select();
			return false;			
		}		
	}
	else if (obj.value != "" && type == "url") {
		var i = obj.value.indexOf("www.",0);
		
		if (i == -1) {
			alert("Le champ '" + nom + "' n'est pas une url valide.");
			obj.focus();
			obj.select();
			return false;			
		}		
	}
	else if (obj.value != "" && type == "date") {
		var ok = true;
		if ((obj.value.length != 10) || (obj.value.substring(2,3) != "/") || (obj.value.substring(5,6) != "/")) ok = false;
		var i = obj.value.substring(0,2);
		if ((i < 1) || (i >31)) ok = false;
		i = obj.value.substring(3,5);
		if ((i < 1) || (i >12)) ok = false;	
		i = obj.value.substring(6,10);
		if ((i < 1900) || (i >2100)) ok = false;		
		if (!ok) {
			alert("Le champ '" + nom + "' n'est pas une date valide.\nFormat : jj/mm/aaaa.");
			obj.focus();
			obj.select();
			return false;			
		}
	}	
	else if (obj.value != "" && type == "ip") {
		var ipReg = new RegExp("[0-9]{3}[\.][0-9]{3}[\.][0-9]{1,3}[\.][0-9]{1,3}");
		if (!ipReg.test(obj.value)) {
			alert("Le champ '" + nom + "' n'est pas une adresse ip valide.");
			obj.focus();
			obj.select();
			return false;
		}
	}
	
	return true;
}

function IsEmail(is) {
	if (is.value.length != 0 && (is.value.indexOf('\@') == -1 || is.value.indexOf('.') == -1)) {
		alert('Vous devez donner un email valide\nex : votreNom@votreDomaine.com');
		return false;	
	}
	return true;
}

function IsNumber(is) {
	for (var i=0;i<is.value.length;i++) {
		var c = is.value.substring(i,i+1);
		if (c < "0" || c > "9") {
   			alert("Vous devez donner un nombre entier\nex : 69");
			return false;  
		}
	}
	return true;
}

function IsPositifFloat(is) {
	var cpt = 0;	
	for (var i=0;i<is.value.length;i++) {
		var c = is.value.substring(i,i+1);
		if (c == ".") {
			cpt++;
		}
		else if (c < "0" || c > "9") {
   			alert("Vous devez donner un décimal\nex : 37.2");
			return false;  
		}
	}
	if (cpt > 1) {
   		alert("Vous devez donner un décimal\nex : 37.2");
		return false;  
	}
	return true;
}

function IsFloat(is) {
	var cpt = 0;	
	for (var i=0;i<is.value.length;i++) {
		var c = is.value.substring(i,i+1);
		if (c == ".") {
			cpt++;
		}
		else if (i == 0 && c != "-" && (c < "0" || c > "9")) {
   			alert("Vous devez donner un décimal\nex : -37.2");
			return false; 		
		}		
		else if (i != 0 && (c < "0" || c > "9")) {
   			alert("Vous devez donner un décimal\nex : -37.2");
			return false;  
		}
	}
	if (cpt > 1) {
   		alert("Vous devez donner un décimal\nex : -37.2");
		return false;  
	}
	return true;
}

function IsMotcle(str) {
	nb = 0;
	exReg = /\r/;
	while (exReg.test(str)) {
		str = str.replace(exReg, "");
		nb++;
	}
	
	if (nb>50) {
	result = nb -50;
		alert("Vous ne pouvez pas saisir plus de 50 mots clés par commerce ! veuillez en enlever " + result + " ");
		return false;
	}
	return true;
}

function IsAdresseIP(is) {
	if (is.value.length > 15 ) {
		alert('Vous avez saisi trop de paramètres pour avoir une adresse IP valide');
		return false;	
	}

	var ipReg = new RegExp("[0-9]+[\.][0-9]+[\.][0-9-*]+[\.][0-9-*]+");
	if (!ipReg.test(is.value)) {
		alert("Vous devez saisir une adresse IP valide du type : xxx.xxx.xxx.xxx");
		return false;
	}
	return true;
}

function IsDate(is) {
	if (is.value.length == 0) { 
		return true;
	}
	if ((is.value.length != 10) || (is.value.substring(2,3) != "/") || (is.value.substring(5,6) != "/")) {
		alert("Vous devez donner une date valide\njj/mm/aaaa");
		return false;
	}
	var d = is.value.substring(0,2);
	if ((d < 1) || (d >31)) {
		alert("Le jour ne semble pas correct.\nVous devez donner une date valide\njj/mm/aaaa");
		return false;
	}
	var m = is.value.substring(3,5);
	if ((m < 1) || (m >12)) {
		alert("Le mois ne semble pas correct.\nVous devez donner une date valide\njj/mm/aaaa");
		return false;
	}
	var y = is.value.substring(6,10);
	if ((y < 1900) || (y >2100)) {
		alert("L'année ne semble pas correcte.\nVous devez donner une date valide\njj/mm/aaaa");
		return false;
	}
	return true; 
}

function DeplaceCritere(from, to) {
	index=0;
	while (index<from.options.length) {
		if (from.options[index].selected) {
			var newElem = new Option(from.options[index].text, from.options[index].value);
			to.options[to.length]=newElem;
			from.options[index]=null;
		}
		else {
			index++;
		}
	}
	Trie(to);
}

function Trie(obj) {
	modif = true;
	while (modif) {
		modif = false;
  		for (var i=0; i<(obj.options.length-1); i++) {
			if (obj.options[i].text > obj.options[i+1].text) {
				tempTxt = obj.options[i].text;
        		tempVal = obj.options[i].value;
        		obj.options[i].text=obj.options[i+1].text;
        		obj.options[i].value=obj.options[i+1].value;
        		obj.options[i+1].text=tempTxt;
        		obj.options[i+1].value=tempVal;
		    	modif=true;
			}
		}
	}
}

function EstDateValide(d1S, d2S, txt1S, txt2S) {
 // Indique si la date d1S qui correspond au champ txt1S
 // est inférieure à la date d2S qui correspond au champ txt2S
 // Tout ces champs sont des objets JavaScripts !

   // alert((d1S.value).substring(0,2) + "/" +  (d1S.value).substring(3,5) + "/" + (d1S.value).substring(6,10));

   var d1 = new Date((d1S.value).substring(6,10), (d1S.value).substring(3,5), (d1S.value).substring(0,2));
   var d2 = new Date((d2S.value).substring(6,10), (d2S.value).substring(3,5), (d2S.value).substring(0,2));

   if (d1>=d2) {
      alert(txt1S + " (" + d1S.value + ")" + " doit etre inferieure a " + txt2S + " (" + d2S.value + ")");
      return false;
   }
   else {
      // alert(txt1S + " (" + d1S.value + ")" + " est OK vis a vis de " + txt2S + " (" + d2S.value + ")");
      return true;
   }
}

function replaceString(oldS, newS, fullS) {
 // Remplace oldS avec newS dans la chaine fullS
    for (var i=0; i<fullS.length; i++) {
       if (fullS.substring(i,i+oldS.length) == oldS) {
          fullS = fullS.substring(0,i)+newS+fullS.substring(i+oldS.length,fullS.length)
       }
    }
    return fullS
}

//Affiche une image (img) dans un popup
function PopupImage(img) {
	titre="Image agrandie";
	w=open("",'image','top=0,left=200,width=400,height=400,toolbar=no,scrollbars=no,resizable=yes');	
	w.document.write("<HTML><HEAD><TITLE>"+titre+"</TITLE></HEAD>");
	w.document.write("<SCRIPT language=javascript>function checksize()  { if (document.images[0].complete) {  window.resizeTo(document.images[0].width+12,document.images[0].height+40); window.focus();} else { setTimeout('check()',250) } }</"+"SCRIPT>");
	w.document.write("<BODY onload='checksize()' leftMargin=0 topMargin=0 marginwidth=0 marginheight=0><IMG src='"+img+"' border=0>");
	w.document.write("");
	w.document.write("</BODY></HTML>");
	w.document.close();
}

//Verifie un champ prix
function Verifprix(obj,txt){
var reg = RegExp(",","gi");
obj.value = obj.value.replace(reg,".");
if(!isNaN(obj.value)){
	if(obj.value!=""){
	obj.value = parseFloat(obj.value);
	}
	return true;
}
else{
alert(txt);
return false;
}
}

//Verifie une promotion
function Verifpromo(obj){
if(obj.promo.checked==true){
if(!Verifprix(obj.prixpromo,"Prix promotionnel")){ return false; }
}
return true;
}

//Verifie si l'élément (elem) se trouve dans le tableau (tab)
function existin_tab(elem,tab){
for(i in tab){
	if(tab[i]==elem) { return true;}
}
return false;
}

function Remplace(expr,a,b) {
      var i=0
      while (i!=-1) {
         i=expr.indexOf(a,i);
         if (i>=0) {
            expr=expr.substring(0,i)+b+expr.substring(i+a.length);
            i+=b.length;
         }
      }
      return expr
}

//Popup pour afficher les détails
function Affiche_detail(page){
window.open(page,'win1','top=0,left=200,width=490,height=350,toolbar=no,scrollbars=yes,resizable=yes,status=no');	
}

function estIdentique(obj, nom, obj2, nom2) {
	if(obj.value==obj2.value){ return true; }
	else{ alert("Les champs '"+nom+"' et '"+nom2+"' ne correspondent pas !");
	return false; }
}

function estSelectionner(obj, nom, val) {
	if(obj.options[obj.selectedIndex].value!=val){ return true; }
	else{ alert(nom);
	return false; }
}

function DateCorrecte(obj, obj2, obj3, lage, obj4){
	var nbJourMax=31;
	var jNaissance=obj.options[obj.selectedIndex].value*1;
	var mNaissance=obj2.options[obj2.selectedIndex].value*1;
	var aNaissance=obj3.options[obj3.selectedIndex].value*1;

	if (jNaissance>0 && mNaissance>0)
	{
		if (mNaissance==2)
		{
			if (aNaissance%4==0)
				nbJourMax=29;
			else
				nbJourMax=28;
		}	
		else if (mNaissance==4 || mNaissance==6 || mNaissance==9 || mNaissance==11)
		{
			nbJourMax=30;
		}

		var todayMonth=10;
		var todayDay  =19;
		var todayYear =2005;

		var age=todayYear-aNaissance;
		if(lage){ obj4.value=age; }
		if (age>=18)
		{
			if (todayMonth<mNaissance || (todayMonth==mNaissance && todayDay<jNaissance))
				age=age-1;
		}

		if (age<18)
		{
			alert("Nous sommes désolés mais A Tout Coeur est réservé aux personnes âgées de plus de 18 ans.");
			return false;
		}
		else if (jNaissance>nbJourMax)
		{
			
			alert("Veuillez saisir une date valide !");
			return false;
		}
		else	
		{
			return true;
		}
	}
	else
	{
		alert("Veuillez saisir une date valide !");
		return false;
	}
}

function estCocher(obj,nom){
	if(obj.checked==true){ return true; }
	else{ alert(nom);
	return false; }
}

function ValidePasse(obj,nom){
	ctl = /^[A-Za-z0-9]{6,255}$/;
    if (obj.value.search(ctl) != -1) return true;
    else { alert(nom);
	return false; }
}

function controlerCP(obj,nom) {
    ctl = /^([A-Z]+\-)?[\d]{5}$/;
    if (obj.value.search(ctl) != -1) return true;
    else { alert(nom);
	return false; }
}


function estSelectionnerM(obj, nom, val) {
	var taille = obj.options.length;
	var i=0;
	for(i;i<taille;i++){
	if((obj.options[i].selected==true) && (obj.options[i].value!=-1)){ return true; }
	}
    alert(nom);
	return false;
}

function MemoListeM(liste1,obj){
	var taille = liste1.options.length;
	var val ="";
	var i=0;
	for(i;i<taille;i++){
		if((liste1.options[i].selected==true) && (liste1.options[i].value!=-1)){
			val += liste1.options[i].value+";";
		}
	}
	obj.value = val;
}