// Remplace une chaine de caractère par une autre chaîne dans une chaîne de caractères
function replaceChars(entry, out, add) {
	temp = "" + entry; // temporary holder

	while (temp.indexOf(out)>-1) {
		pos= temp.indexOf(out);
		temp = "" + (temp.substring(0, pos) + add + 
		temp.substring((pos + out.length), temp.length));
	}
	return temp;
}

// Delete first characters of "char" type in begin of data field
function deleteFirstChar(data,mChar)
{
	var pos = data.indexOf(mChar);
	if ( pos == 0) 
		data = deleteFirstChar(data.substring(pos+1,data.length),mChar);
	return data;
}

// Delete all characters of "char" type in of data field
function deleteAllChars(data,mChar)
{
	var pos = data.indexOf(mChar);
	if ( pos > -1) 
		data = data.substring(0,pos) + deleteAllChars(data.substring(pos+1,data.length),mChar);
	return data;
}

// Delete string "str" type in data field
function deleteString(data,str)
{
	var pos = -1;
	while ( (pos = data.indexOf(str)) > -1) 
		data=data.substring(0,pos) + data.substring(pos+str.length,data.length);

	return data;
}






/*********************************************************************************/
/*** Contrôle la validité d'une chaîne de caractères pour en faire une valeur ****/
/*** numérique décimale ou non suivant la longueur maximale de la chaîne *********/
/*** (maxlength), le nombre de décimales (nbDec), le séparateur pour les nombres */
/*** décimaux (sepDec).							  								 */
/*** Utilisation : onchange="this.value=numberCtrlFormat(this.value,5,2,'.');"> ********/
/*********************************************************************************/
function numberCtrlFormat(kod, maxlength, nbDec, sepDec) {

    var deg="1234567890";
	var strOk="";
	var str="";
	var uneFoisSep=0;
	var indiceSepDec=-1;

	if(nbDec<=0) // Si pas de décimales alors pas de possibilité de tapper le séparateur
		sepDec = "";
	else{
		sepDec = sepDec.Trim();
		deg = deg + sepDec;
	}

	// On enlève les premiers "0"
	strOk = kod;
	for (var i=0;i<kod.length;i++){
		str = kod.substr(i,1);
		if(str == "0"){
			strOk = kod.substr(i+1);
		}else{
			break;
		}
	}
	kod = strOk;
	strOk = "";

	// Contrôle de la validité des caractères entrés
	for (var i=0;i<kod.length;i++){
		str = kod.substr(i,1);
		if (deg.indexOf (str,0) != -1){
			if(str == sepDec){  // Caractère séparateur
				if(uneFoisSep == 0){ // Séparateur pas encore tappé
					uneFoisSep=1;
					strOk = strOk + str;
				}
			}else{ // Nombre -> ajout
				strOk = strOk + str;
			}
		}
	}

	// Contrôles de la validité du nombre de décimales
	if(nbDec>0){
		indiceSepDec = strOk.indexOf (sepDec,0);
		if (indiceSepDec == 0){ // le séparateur est le premier caractère
			strOk = "0" + strOk;
			// on avance l'indice du séparateur
			indiceSepDec++;
		}else if (indiceSepDec == strOk.length-1){ // le séparateur est le dernier caractère
			strOk = strOk + "0";
			// on recule l'indice du séparateur
			indiceSepDec--;
		}

		if (indiceSepDec != -1){ // Séparateur de décimal est tappé

			// Formatage du nombre selon le nbre de décimales
//			var str1 = strOk.substr(0,indiceSepDec+1); // Partie entière + séparateur
//			var str2 = strOk.substr(indiceSepDec+1); // Partie décimale
//			if(nbDec>1) str2 = str2.substr(0,nbDec);
//			strOk = str1 + str2;
			//Formatage du nombre selon le nbre de décimales avec ARRONDI
			var strOkValue = parseFloat(strOk);
			strOk = strOkValue.toFixed(nbDec);

			// Contrôle de la longueur
			if(strOk.length>maxlength){
				// On 'emputte' sur le début de la chaîne
				var deb = strOk.length- maxlength;
				strOk = strOk.substr(deb,strOk.length);
			}
		}
	}
	else{ // Pas de séparateur
		// Contrôle de la longueur
		strOk = strOk.substr(0,maxlength);
	}

	// On enlève les "000" placés devant le sepDec
	str = '';

	if((strOk.Trim() == "")			// Si rien on met "0"
	||(strOk.Trim() == sepDec)) 	// Si "." ou "," on met "0"
		strOk = "0";

	// Renvoi la valeur formatée
	return strOk;
}




// Return true if Data is a valid amount
function isValidAmount(data, lang)
{
	// Set the optional parameter if needed
	if ( lang === undefined ) {
		lang='fr'
	}

	var formatAmount = /^[0-9]+\.\d{2}$/ ;

	var result = formatAmount.test(data);

	if (result == false)
	{
		if(lang='fr')
			alert("S'il vous plaît, vous devez taper les montants/chiffres sous la forme 1.00.");
		else
			alert("Please, you must type digit number like 1.00.");
		return false;
	}

	return result;
}

// Return true if Data is a valid float
function isValidRealNumber(data, lang)
{
	// Set the optional parameter if needed
	if ( lang === undefined ) {
		lang='fr'
	}
	
	var formatFloat = /^[0-9]+(\.\d{1,2})?$/ ;

	var resultFloat = formatFloat.test(data);

	if (!resultFloat)
	{
		if(lang='fr')
			alert("S'il vous plaît, vous devez taper les nombres sous la forme 1 ou 1.5 ou 1.50.");
		else
			alert("Please, you must type a number like 1 or 1.5 or 1.50.");
	
		return false;
	}

	return resultFloat;
}



// Return true if is a correct email address
function isValidEmailAddress(data, lang)
{
	// Set the optional parameter if needed
	if ( lang === undefined ) {
		lang='fr'
	}
	
	var formatEmailAddress = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/ ;

	var result = formatEmailAddress.test(data);

	if (result == false)
	{
		if(lang='fr')
			alert("S'il vous plaît, vous devez taper une email correcte (vous@domaine.tdl).");
		else
			alert("Please, you must type a correct email address.");
		return false;
	}

	return result;
}


function displayAmount(data)
{
	var tmp = data.toString();
	var pos = tmp.indexOf(".");

	// Add decimal if not exist
	if (pos < 0) 
		tmp = tmp + ".00";
	else
	{
		var end = tmp.length - pos;
	
		if (end == 2)	tmp = tmp + "0";
	}

	// Display with blank separator
	var pos = tmp.indexOf(".");
	var dec = tmp.substring(pos,pos+3);
	tmp = addBlank(tmp.substring(0,pos)) + dec ;

	return tmp;
}


function isEmpty(str){
	if(str=='' || str==null || typeof(str)=='undefined'){
		return false;
	} 
	return true;
}

