// JavaScript 1.2 Document
/*
	Libreria funzioni che operano su numeri:
		Versione 1.1
		Ultima modifica/revisione: 27/02/2004.
		Autore: Baket
	Vedi fnc_digit_inc.doc per una descrizione delle funzioni esportate.
*/
function isPhone(str) {
	var regExpr = /^[0-9 \-]*\d+$/;				
	return (str.length == 0) || regExpr.test(str);
} 

var msgIsPhone = 'Numero telefonico indicato in modo errato';

function fldIsPhone(fld, fldName) {
	if ( !isPhone(fld.value) ) {
		alert(fldName + ': ' + msgIsPhone);
		fld.focus();
		return false;	
	}
	return true;
} 

function isIntNum(str, minVal, maxVal) {
	if (str.length == 0) return 1;	
	
	var regExpr = /^[\+,-]?[0-9]+$/;
	if (!regExpr.test(str) || isNaN(str)) return 0;
	
	var val = parseInt(str, 10);  
	if (minVal!='') 
		if (val < minVal) return -1;
	if (maxVal!='')
		if (val > maxVal) return -1;
	
	return 1;
}

var msgIsIntNum    = 'Numero intero indicato in modo errato';
var msgIsIntNum_ol = 'Numero fuori dai limiti consentiti';

function fldIsIntNum(fld, fldName, minVal, maxVal) {
	var r = isIntNum(fld.value, minVal, maxVal);
	if (r==1) return true;	
	if ( r==0 ) 
		alert(fldName + ': ' + msgIsIntNum);
	else 
		alert(fldName + ': ' + msgIsIntNum_ol);
	fld.focus();
	return false;	
}

	// invSep=true ==> std italiano con la virgola come sep. decimale.
	// invSep=false  ==> std inglese con il punto.
function isCurr(str, invSep, acceptThSep, minVal, maxVal) {
	if (str.length == 0) return 1;
	var decSep = (invSep) ? ',' : '\\.';
	var thSep = (invSep) ? '\\.' : ',';
	var reTest1 = new RegExp("^[\\+\\-]?\\d+(" + decSep + "\\d+)?$");	
	var reTest2 = new RegExp("^[\\+\\-]?\\d{1,3}(" + thSep + "\\d{3})*(" + decSep + "\\d+)?$");
	if (!(reTest1.test(str) || acceptThSep && reTest2.test(str)) ) return 0;
	str = str.replace(new RegExp(thSep), '');
	if (invSep)
		str = str.replace(/,/, '.');
	if (isNaN(str)) return 0;
	var val = parseFloat(str); 	
	if (minVal!='') 
		if (val < minVal) return -1;	
	if (minVal!='') 
		if (val > maxVal) return -1;
		
	return 1; 
}

var msgIsCurr = 'Campo valuta indicato in modo errato';
var msgIsCurr_ol = 'Campo valuta fuori dai limiti consentiti';

function fldIsCurr(fld, fldName, invSep, acceptThSep, minVal, maxVal) {
	var r = isCurr(fld.value, invSep, acceptThSep, minVal, maxVal);
	if (r==1) return true;
	if ( r==0 ) 
		alert(fldName + ': ' + msgIsCurr);
	else 
		alert(fldName + ': ' + msgIsCurr_ol);
	fld.focus();
	return false;	
}

function isFloat(str, minVal, maxVal) {
	if (isNaN(str)) return 0;
	
	var v = parseFloat(str);
	if (minVal!='') 
		if (v < minVal) return -1;
	if (minVal!='') 
		if (v > maxVal) return -1;
	
	return 1;
}

var msgIsFloat = 'Numero indicato in modo errato';
var msgIsFloat_ol = 'Numero fuori dai limiti consentiti';

function fldIsFloat(fld, fldName, minVal, maxVal) {
	var r = isFloat(fld.value, minVal, maxVal);
	if (r==1) return true;
	if ( r==0 ) 
		alert(fldName + ': ' + msgIsFloat);
	else 
		alert(fldName + ': ' + msgIsFloat_ol);
	fld.focus();
	return false;	
}
