//<script>
//permet de verifier les extensions des fichiers
//les extensions sont separé par des , Ex: "jpg,jpeg"
function checkFile(champ,extensions,message) {
  var nArgs = checkFile.arguments.length;
  var necessaire = (nArgs>3)?checkFile.arguments[3]:false;

  if (champ.value=='') {
  	if (necessaire) return erreurCheck(champ,message); else return true;
  }
		
  tabsplit = extensions.split(",");
  for(var i=0;i<(tabsplit.length);i++) {
    var xt 	= "."+ tabsplit[i];
    var lg	= xt.length;	
    if (champ.value.substr(champ.value.length-lg,champ.value.length-1).toLowerCase()==xt) return true;
  }
  return erreurCheck(champ,message);

}
function erreurCheck(champ, message) {
    if (message) {                              // Si on ne donne pas de message, on reste silencieux...
        alert(message);
        if ( champ.type && champ.type != "[object]") champ.focus();     // Les boutons radios sont multiples : on ne peut pas leur apporter le focus globalenent
    }
    return false;
}
function checkText(champ, message) {
    var nArgs = checkText.arguments.length;
    if (nArgs<=2) {
		if (champ.value=='') {
			return erreurCheck(champ, message);
		}
	} else {
		if (champ.value==checkText.arguments[2]) {
			return erreurCheck(champ, message);
		}
		var necessaire = (nArgs>3)?checkText.arguments[3]:false;
		if (necessaire && champ.value=='') {
			return erreurCheck(champ, message);
		}
	}
	
	return true;
}
function checkTextLen(champ,message,minLen) {
	if (champ.value.length<minLen) return erreurCheck(champ, message);
	return true;
}
function checkPassword(champ, message) {
    var checkStr = String(champ.value);
    var nArgs = checkPassword.arguments.length;
	var necessaire = (nArgs>2)?checkPassword.arguments[2]:false;
	if (checkStr=='' && necessaire) {
		return erreurCheck(champ, message);
	}
	if (checkStr=='' && !necessaire) return true;
	if (checkStr.length<6) return erreurCheck(champ, 'Le mot de passe doit avoir au moins 6 caractères');
	if (nArgs>3 && champ.value!=checkPassword.arguments[3].value) return erreurCheck(checkPassword.arguments[3], 'Vous devez entrer 2 fois le même mot de passe.');
	return true;
}
function checkNumber(champ, message, decimales) {
    var nArgs = checkNumber.arguments.length;
    var checkStr = champ.value;
    var pos;
	var necessaire = (nArgs>3)?checkNumber.arguments[3]:false;
	var val_min = (nArgs>4)?checkNumber.arguments[4]:NaN;
	var val_max = (nArgs>5)?checkNumber.arguments[5]:NaN;

	if (checkStr=='') {
		if (necessaire) return erreurCheck(champ, message);
		else return true;
	}

    // Remplace les ',' par des '.', de maniere a utiliser parseFloat
    while ((pos = checkStr.indexOf(',')) > -1) {
        checkStr = checkStr.substring(0, pos) + '.' + checkStr.substring(pos + 1);
    }

    // Supprime les 0 de fin apres le point decimal, afin de ne pas perturber la comparaison
    while ((checkStr.length > 1) && (checkStr.indexOf('.') > -1) && (checkStr.charAt(checkStr.length - 1) == '0')) {
        checkStr = checkStr.substring(0, checkStr.length - 1);
    }
    // Supprime le point decimal s'il se retrouve tout seul a la fin
    if ((checkStr.length > 1) && (checkStr.charAt(checkStr.length - 1) == '.')) checkStr = checkStr.substring(0, checkStr.length - 1);

    // Supprime les 0 de tete, afin de ne pas perturber la comparaison
    while ((checkStr.length > 1) && (checkStr.charAt(0) == '0')) {
        checkStr = checkStr.substring(1);
    }
    // Remet un 0 si le caractere suivant est un point decimal
    if (checkStr.charAt(0) == '.') checkStr = '0' + checkStr;
    
    // Convertis le champ en flottant, puis conversion retour : on pourra comparer les deux
    var checkFloat = parseFloat(checkStr);
    var reCheckStr = String(checkFloat);

    // Mesure le nombre de decimales effectif du nombre convertis en flottant
    pos = reCheckStr.indexOf('.');
    var nbDec = (pos > -1 ? reCheckStr.length - pos - 1 : 0);

    champ.value = checkStr;
    if (!isNaN(val_min)) {
		if (checkStr<=val_min) return erreurCheck(champ, message+'\n(Nombre supérieur à '+val_min+')');
	}
    if (!isNaN(val_max)) {
		if (checkStr>=val_max) return erreurCheck(champ, message+'\n(Nombre inférieur à '+val_max+')');
	}
    if ((reCheckStr == checkStr) && ((nArgs < 3) || (nbDec <= decimales))) {
        return true;
    } else {
        return erreurCheck(champ, message);
    }
}
function checkPrix(champ, message) {
	return checkNumber(champ, message, 2, true, 0.01)
}
// checkEmail : verifie si le champ donne est une adresse e-mail
function checkEmail(champ, message) {
    var checkStr = champ.value.toLowerCase();
    var checkOK = "0123456789abcdefghijklmnopqrstuvwxyz-_/.@";
    var pos, car, valide = true, posAt = -1, posDot = -1;
	var necessaire = (checkEmail.arguments.length>2)?checkEmail.arguments[2]:false;

	if (checkStr=='') {
		if (necessaire) return erreurCheck(champ, message);
		else return true;
	}

    for (pos = 0; pos < checkStr.length; pos++) {
        if (checkStr.charAt(pos) == '@') {
            posAt = pos;
            continue;
        }
        if (checkStr.charAt(pos) == '.') {
            posDot = pos;
            continue;
        }
        if (checkOK.indexOf(checkStr.charAt(pos)) == -1) {
            valide = false;
            break;
        }
    }

    if (valide && (posAt > -1) && (posDot > posAt + 1) && (posDot < checkStr.length - 1)) {
        return true;
    } else {
        return erreurCheck(champ, message);
    }

}
// checkCP : verifie si le champ donne est un code postal: 5 chiffres
function checkCP(champ,message) {
    var nArgs = checkCP.arguments.length;
	var necessaire = (nArgs>2)?checkCP.arguments[2]:false;
    var checkStr = new String(champ.value);
    var i;
	if (checkStr.length!=5 && necessaire) return erreurCheck(champ, message);
	for (i=0;i<checkStr.length;i++) if (isNaN(checkStr.charAt(i))) return erreurCheck(champ, message);
	return true;
}
// check2Text : verifie si au moins un des 2 champs texte est rempli
function check2Text(champ1,champ2,message) {
	if (champ1.value=='' && champ2.value=='') {
		return erreurCheck(champ1, message);
	}
	return true;
}
function checkSelect(champ, message) {
    var nArgs = checkSelect.arguments.length;
	var firstCheckElement = 1;
	if (nArgs>2) {
		forbidenValue = checkSelect.arguments[2];
		if (champ.value==forbidenValue) return erreurCheck(champ, message);
	} else if (champ.selectedIndex < firstCheckElement) return erreurCheck(champ, message);
	return true;
}
function checkPays(champ, message, champ_libre) {
	if (champ.value!='0') return true;
	return checkText(champ_libre,message);
}
function checkRadio(champ, message) {
	for (var i=0; i<champ.length; i++) {
		if (champ[i].checked) return true;
	}
	return erreurCheck(champ, message);
}
function checkUpload(champ, message, extensions) {
    var checkOK = 'abcdefghijklmnopqrstuvwxyz0123456789_-.';
    var checkStr = String(champ.value);
    var nArgs = checkUpload.arguments.length;
	var necessaire = (nArgs>3)?checkUpload.arguments[3]:false;
	if (checkStr=='' && necessaire) {
		return erreurCheck(champ, message);
	}
	if (checkStr=='' && !necessaire) return true;

	checkStr = checkStr.toLowerCase();

    for (pos = checkStr.lastIndexOf('\\')+1; pos < checkStr.length; pos++) {
        if (checkOK.indexOf(checkStr.charAt(pos)) == -1) {
			return erreurCheck(champ, 'Vous ne pouvez utiliser de caractères spéciaux (espace, accents...) dans les noms de fichiers. Veuillez renommer ce fichier.');
        }
    }

	var ext = String(extensions);
	ext = ext.toLowerCase();
	var splitExt = ext.split(",");
	for (var i=0; i<splitExt.length; i++) {
		if (checkStr.indexOf(splitExt[i])>-1) return true;
	}
	return erreurCheck(champ, message);
}
function checkDate(jour, mois, annee, message) {
    var nArgs = checkDate.arguments.length;
	var necessaire = (nArgs>4)?checkDate.arguments[4]:false;
	if (!necessaire && jour.value=='' && mois.value=='' && annee.value=='') {
		if (nArgs>5) affecteDate(jour, mois, annee, arguments[5]);
		return true;
	}
	var dateJ = new Date(annee.value, mois.value-1, jour.value);
	if (dateJ.getDate()!=jour.value || dateJ.getMonth()+1!=mois.value || dateJ.getFullYear()!=annee.value) {
		return erreurCheck(annee, message);
	}
	if (nArgs>5) affecteDate(jour, mois, annee, arguments[5]);
	return true;
	
}
function checkDateBlock(date_francaise, message) {
    var nArgs = checkDateBlock.arguments.length;
	var necessaire = (nArgs>2)?checkDateBlock.arguments[2]:false;
	if (!necessaire && date_francaise.value=='') return true;

	var strDate = new String(date_francaise.value)
	var tabDate = strDate.split('/');
	if (tabDate.length!=3) return erreurCheck(date_francaise, message);
	if (isNaN(tabDate[0]) || isNaN(tabDate[1]) || isNaN(tabDate[2])) return erreurCheck(date_francaise, message);

	var dateJ = new Date(tabDate[2], tabDate[1]-1, tabDate[0]);
	if (dateJ.getDate()!=tabDate[0] || dateJ.getMonth()+1!=tabDate[1] || dateJ.getFullYear()!=tabDate[2]) {
		return erreurCheck(date_francaise, message);
	}
	return true;
}
function checkDateOrdre(date1,date2,message) {
	var tabdateVal1=date1.value.split("/");
	var tabdateVal2=date2.value.split("/");
	var date1MS=Date.UTC(tabdateVal1[2],tabdateVal1[1]-1,tabdateVal1[0]);
	var date2MS=Date.UTC(tabdateVal2[2],tabdateVal2[1]-1,tabdateVal2[0]);
	if(date1MS>date2MS) {
		date2.focus();
		alert(message);
		return false;
	}
	return true;
}
function checkFullDate(cdate, message) {
    var nArgs = checkFullDate.arguments.length;
	var necessaire = (nArgs>2)?checkFullDate.arguments[2]:false;
	if (!necessaire && cdate.value=='') {
		return true;
	}

	var sdate = cdate.value.split('/');
	var dateJ = new Date(parseInt(sdate[2]), parseInt(sdate[1])-1, parseInt(sdate[0]));
/*	
	if (dateJ.getDate()!=sdate[0]) alert("1");
	if (dateJ.getMonth()+1!=parseInt(sdate[1])) { 
		alert("dateJ.getMonth()+1 = "+ dateJ.getMonth()+1 +"\n");
		alert("parseInt(sdate[1]) = "+ parseInt(sdate[1]) +"\n");
	}
	if (dateJ.getFullYear()!=sdate[2]) {
		alert("dateJ.getFullYear() = "+ dateJ.getFullYear() +"\n");
		alert("sdate[2] = "+ sdate[2] +"\n");
	}		
	
*/	
	if (dateJ.getDate()!=sdate[0] || dateJ.getMonth()+1!=parseInt(sdate[1]) || dateJ.getFullYear()!=sdate[2]) {
		return erreurCheck(cdate, message);
	}
	return true;
}
function affecteDate(jour, mois, annee, D_daten) {
	if (jour.value.length>0)
		D_daten.value = jour.value + '/' + mois.value + '/' + annee.value;
	else
		D_daten.value = '';
	return true;
}
function retourneExtension(image) {
    var checkStr = new String(image.value);
	checkStr.toLowerCase();
	var ret = checkStr.lastIndexOf('.');
	if (ret>-1 && ret<checkStr.length) {
		return checkStr.substr(ret+1);
	} else return '';
}
function retourneNomFichier(image) {
    var checkStr = new String(image.value);
	checkStr.toLowerCase();
	var ret = checkStr.lastIndexOf('/');
	if (ret>-1 && ret<checkStr.length) {
		return checkStr.substr(ret+1);
	} else {
		var ret = checkStr.lastIndexOf('\\');
		if (ret>-1 && ret<checkStr.length) {
			return checkStr.substr(ret+1);
		} else return '';
	}
}
// Specifique Iframe editeur
function recupContenu(champ_contenu, message) {
	var strTemp1, strTemp2, strTemp3, temp, rExp;
	if (!isHTMLMode) strTemp1 = new String(idContent.document.body.innerHTML);
	else strTemp1 = new String(idContent.document.body.innerText);
	if (strTemp1.length==0) { alert(message); idContent.focus(); return false; }
	rExp = new RegExp('http://'+document.domain, 'gi');
	temp = strTemp1.replace(rExp, '');
	strTemp2 = new String(temp)
	rExp.compile('<script.*<'+'/script>', 'gi');
	temp = strTemp2.replace(rExp, '');
	strTemp3 = new String(temp)
	rExp.compile('<form.*<'+'/form>', 'gi');
	temp = strTemp3.replace(rExp, '')
	champ_contenu.value = temp;
}
// Spécifique téléphone à 10 chiffres pour callback
function checkTel(champ_contenu,message) {
	var numTel = champ_contenu.value;
	if (numTel.length!=10 || isNaN(numTel)) { alert(message); champ_contenu.focus(); return false; }
	return true;
}	
// Spécifiques aux URLs
function checkUrl(champ_contenu,message) {
	var v	= champ_contenu.value;
	if (v=='' || v=='http://') { alert(message); champ_contenu.focus(); return false; }
	return true;
}