// form.js : formulaire helpers 

// codé le 15/06/2011
function formatFieldText(refForm,funcName){ //
	for(i=0;i<refForm.elements.length;i++){  // foreach fields (input,select, and other ...)
		curElem=refForm.elements[i]
		if(curElem.type=="text"){
      //alert("curElem.value="+funcName+"(curElem.value)")
      eval("curElem.value="+funcName+"(curElem.value)")
		}
	}
}

// codé le 15/06/2011
function reformatFieldText(refForm){ //
	for(i=0;i<refForm.elements.length;i++){  // foreach fields (input,select, and other ...)
		curElem=refForm.elements[i]
		if(curElem.type=="text"){
      curElem.value=curElem.value.replace(" ","")
      curElem.value=curElem.value.replace(",",".")
		}
	}
}
function convMoneyToFloat(fv){
	var temoin=fv
	try{
	  fv=new Number(fv.replace(",","."))
	  return fv.toFixed(2)
	}catch(err){
		return temoin
	}  
}


// convertie en monétaire
function convToMoney(fieldValue){ // nbv=texte avec nombre à virgule (ou point) codé 15 juin 2011
	var valDebut=fieldValue
	var signe="";
	try{
	  var str=fieldValue
	  if(str.search("-")!=-1){
	    signe="-"
	    str=str.substring(1,str.length) // vire le signe
	  }
	  if(str.search(".")!=-1){
	    str=str.replace(".",",")
	  }
	  var c=0
	  var str2=str
	  while(str2.search(",")!=-1){
	    str2=str2.substring(str2.search(",")+1,str2.length)
	    c=c+1
	  }
	  
	  if(c>1){
	    alert("le nombre "+fieldValue+" n'est pas un nombre à virgule veuillez le ressaisir.")
	    return valDebut
	  }
	  if(c==0){
	    str=str+","
	  }
	  var partieDecimale=str.substring(str.search(",")+1,str.length)
	  partieDecimale=partieDecimale.replace(" ","")
	  var partieEntiere=str.substring(0,str.search(","))
	  partieEntiere=partieEntiere.replace(" ","")
	  while(partieDecimale.length<2){
	    partieDecimale=partieDecimale+"0" // rajoute jusqu'à deux zéro en déciale
	  }
	  //partieEntiere=convInteger(partieEntiere)
	  return signe+partieEntiere+","+partieDecimale
	}catch(err){
		return valDebut
	}
}

// renvoye true pour "1 230","1230" mais pas pour "12z" ou "12 20" codé le 16 mars 2011
function isInteger(fieldValue){
	//alert("["+fieldValue+"]")
	var res=false
	var curChar=''
	var lastPos=fieldValue.length-1
	var i=lastPos
	while(i>0){
		curChar=fieldValue.charAt(i)
		switch(curChar){
			case '0': res=true;break;
			case '1': res=true;break;
			case '2': res=true;break;
			case '3': res=true;break;
			case '4': res=true;break;
			case '5': res=true;break;
			case '6': res=true;break;
			case '7': res=true;break;
			case '8': res=true;break;
			case '9': res=true;break;
			case ' ': res=true;break;//if(((lastPos-i+1)%4)==0){ res=true;	}else{ return false;}	break; 
			case '-': res=true;break;
			case '+': res=true;break;
			default: return false;
		}
		i=i-1
	}	        
	return true;
}

// renvoye true pour "1 230","1230" mais pas pour "12z" ou "12 20" codé le 13 juin 2011
function isFloat(fieldValue){
	//alert("["+fieldValue+"]")
	var res=false
	var curChar=''
	var lastPos=fieldValue.length-1
	var i=lastPos
	while(i>0){
		curChar=fieldValue.charAt(i)
		switch(curChar){
			case '0': res=true;break;
			case '1': res=true;break;
			case '2': res=true;break;
			case '3': res=true;break;
			case '4': res=true;break;
			case '5': res=true;break;
			case '6': res=true;break;
			case '7': res=true;break;
			case '8': res=true;break;
			case '9': res=true;break;
			case ' ': res=true;break;//if(((lastPos-i+1)%4)==0){ res=true;	}else{ return false;}	break;
			case '-': res=true;break;
			case '+': res=true;break;
			default: return false;
		}
		i=i-1
	}
	return true;
}

// codé le 16 mars 2011 (revu le 18 mars 2011 pour pb espace à droite)
function convInteger(fieldValue){
	var res=0;
	if(isInteger(fieldValue)){
		fieldValue=fieldValue.replace(/ /g,'') // delete space
		res=new Number(fieldValue)
	}else{
		alert("Vous avez entrée autre chose qu'un entier. Veuillez resaisir")
	}
	return res
}

// codé le 16 mars 2011   traduit l'entier 2342340 en '2 342 340'
function formInteger(integer){
	var signe=''   // recup signe pour espace entre le signe et la valeur
	if(integer>=0){
	  signe=''     // signe='+'
	}else{
	  signe='-'
	  integer=integer*(-1)
	}
	var intStr=integer.toString()
	var res=""
	var offset=0
	while(intStr.length>offset){
		var slice=intStr.substring(intStr.length-3-offset, intStr.length-offset)
		if(offset!=0){
			res=slice+' '+res
		}else{
			res=slice+''+res
		}
		offset=offset+3
	}
	if(signe!=""){
		res=signe+' '+res
	}
	return res
}

// codé le 16 mars 2011   traduit l'entier 2342340 en '2 342 340'
function isMoneyFr(fieldValue){ // mots avec que des chiffres à virgule ou à point, à max 2 décimal ou   
	// isInteger devant la virgule puis vigule ou point puis isInteger derrière la virgule 
	return res;
}

// ne sert plus :( codé le 16 mars 2011
function lTrimNb(txt){
	var res="";
	var curChar=""
	for(var i=0;i<txt.length;i++){
		curChar=txt.charAt(i)
		if(curChar.search(/[0-9]/)==0){  // find a digit
		 	res=txt.substring(i,txt.length)
		 	i=txt.length
		}
	}
	return res;
}

// ne sert plus :( codé le 16 mars 2011 remplacé par cleanField
function rTrimNb(txt){
	var res="";
	var curChar=""
	for(var i=txt.length;i>0;i--){
		curChar=txt.charAt(i)
		if(curChar.search(/[0-9]/)==0){ // find a digit
		  res=txt.substring(0,i+1)
		  i=0
		}
	}
	return res;
}


