//<script>
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.type != 'hidden') 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;
	myString = new String(champ.value);
	rExp = / /gi;
	newString = new String ("");
	ChampValue = myString.replace(rExp, newString);
	//alert("("+myString + ") / (" +ChampValue+")");
    
    if (nArgs<=2) {
		if (ChampValue=='') {
			return erreurCheck(champ, message);
		}
	} else {
		if (ChampValue==checkText.arguments[2]) {
			return erreurCheck(champ, message);
		}
	}
	//return false;
	return true;
}

function checkPassword(champ, message) {
    var checkStr = String(champ.value);
    var nArgs = checkPassword.arguments.length;
	var necessaire = (nArgs>2)?checkPassword.arguments[2]:false;
	var nbLettresMin = (nArgs>4)?checkPassword.arguments[4]:6;
	if (checkStr=='' && necessaire) {
		return erreurCheck(champ, message);
	}
	if (checkStr=='' && !necessaire) return true;
	if (checkStr.length<nbLettresMin) return erreurCheck(champ, 'Le mot de passe doit avoir au moins '+nbLettresMin+' 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 checkTextSimple(champ, message) {
    var checkStr = champ.value.toLowerCase();
    var checkOK = '0123456789abcdefghijklmnopqrstuvwxyz_';
    var pos, car, valide = true;
	var necessaire = (checkTextSimple.arguments.length>2)?checkTextSimple.arguments[2]:false;

	if (checkStr=='') {
		if (necessaire) return erreurCheck(champ, message);
		else return true;
	}

    for (pos = 0; pos < checkStr.length; pos++) {
        if (checkOK.indexOf(checkStr.charAt(pos)) == -1) {
            valide = false;
            break;
        }
    }

    if (valide) return true;
    else return erreurCheck(champ, message);
}

// 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);
    }

}

function checkSelect(champ, message) {
    var nArgs = checkSelect.arguments.length;
	var firstCheckElement = 1;
	if (nArgs>2) firstCheckElement = checkSelect.arguments[2];
	if (champ.selectedIndex < firstCheckElement) return erreurCheck(champ, message);
	else return true;
}

function checkRadio(champ, message) {
	if (champ.length) {
		for (var i=0; i<champ.length; i++) {
			if (champ[i].checked) return true;
		}
	} else if (champ.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 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 checkHeure(heure, minute, seconde, message) {
    var nArgs = checkHeure.arguments.length;
	var necessaire = (nArgs>4)?checkHeure.arguments[4]:false;
	if (!necessaire && heure.value=='' && minute.value=='' && seconde.value=='') {
		if (nArgs>5) affecteHeure(heure, minute, seconde, arguments[5]);
		return true;
	}
	var dateJ = new Date();
	dateJ.setHours(heure.value, minute.value, seconde.value);
	if (dateJ.getSeconds()!=seconde.value || dateJ.getMinutes()!=minute.value || dateJ.getHours()!=heure.value) {
		return erreurCheck(heure, message);
	}
	if (nArgs>5) affecteHeure(heure, minute, seconde, arguments[5]);
	return true;
	
}

function affecteHeure(heure, minute, seconde, H_heure) {
	if (heure.value.length>0)
		H_heure.value = heure.value + ':' + minute.value + ':' + seconde.value;
	else
		H_heure.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 '';
}

// 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;
}

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 '';
	}
}

