<!-- 

/*

	****************************************************************
	Generic functions to validate data.
	
	By JJ
	*****************************************************************
*/ 


/*
	Function to check if a field has a value
*/

function CompulsoryField(field,name){
	
	msg = new String("Il campo '[[field]]' è obbligatorio!");
	
	try{
		if ((field.value == "") || (field.value == "undefined")) {
		   alert ( msg.replace("[[field]]",name) );
		   field.focus();
		   return false;
		}
	}
	catch(e){
		alert("Field '" + name + "' not found");
		return false;	
	}
	return true;
	
}

/*
	Check if a string is a valid email address
*/
function CompulsoryMail(field,name){
	
	msg = new String("Il campo '[[field]]' deve contenere una mail correta!");
	var mail_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
	
	try{
		if (!mail_reg_exp.test(field.value) || (field.value == "") || (field.value == "undefined")) {				
		   alert ( msg.replace("[[field]]",name) );
		   field.focus();
		   return false;
		}
	}
	catch(e){
		alert("Field '" + name + "' not found");
		return false;	
	}
	return true;
	
}

/*
	Check if a string is a valid numeric field
*/
function Numeric(field,name){
	
	msg = new String("Il campo '[[field]]' ammette solo caratteri numerici!");
	
	try{
		if (isNaN(field.value)){
		   alert ( msg.replace("[[field]]",name) );
		   field.focus();
		   return false;
		}
	}
	catch(e){
		alert("Field '" + name + "' not found");
		return false;	
	}
	return true;
	
}


/*
	Check if a string is a valid positive integer field
*/
function Integer(field,name){
	var regExp = /^[0-9]+$/;
	msg = new String("Il campo '[[field]]' ammette solo caratteri numerici!");
	
	try{		
		var result = regExp.test(field.value);			
	
		if (!result){
		   alert ( msg.replace("[[field]]",name) );
		   field.focus();
		   return false;
		}
	}
	catch(e){
		alert("Field '" + name + "' not found");
		return false;	
	}
	return true;
	
}


/*
	Check if a string has a maximum number of characters
*/
function MaxChars(field,name,chars){
	
	msg = new String("La lunghezza massima per il campo '[[field]]' è "+chars+" caratteri!");
	
	try{		
		if (field.value.length > parseInt(chars)){
		   alert ( msg.replace("[[field]]",name) );
		   field.focus();
		   return false;
		}
	}
	catch(e){
		alert("Field '" + name + "' not found");
		return false;	
	}
	return true;
	
}

/*
	Check if a string has a maximum number of characters
*/
function MinValueInt(field,name,minimum){
	
	msg = new String("Il valore minimo per il campo '[[field]]' deve essere "+minimum+"!");
	
	try{		
		if (parseInt(field.value) < parseInt(minimum)){
		   alert ( msg.replace("[[field]]",name) );
		   field.focus();
		   return false;
		}
	}
	catch(e){
		alert("Field '" + name + "' not found");
		return false;	
	}
	return true;
	
}

/*
	Check if a string has a maximum number of characters
*/
function MaxValueInt(field,name,maximum){
	
	msg = new String("Il valore massimo per il campo '[[field]]' deve essere "+maximum+"!");
	
	try{		
		if ( parseInt(field.value) > parseInt(maximum)){
		   alert ( msg.replace("[[field]]",name) );
		   field.focus();
		   return false;
		}
	}
	catch(e){
		alert("Field '" + name + "' not found");
		return false;	
	}
	return true;
	
}

/*
	Check if a string could represent a price with decimals separated by coma
*/
function PriceWithComa(field,name){

	var regExp = /^[0-9]+(,[0-9]+)?$/;
	msg = new String("Il campo '[[field]]' non corrisponde ad un prezzo valido!");
	
	
	try{
		var result = regExp.test(field.value);
		
		if ( !result ){
		   alert ( msg.replace("[[field]]",name) );
		   field.focus();
		   return false;
		}
	}
	catch(e){
		alert("Field '" + name + "' not found");
		return false;	
	}
	return true;
	
}

/*
	Check if a string could represent a price with decimals separated by point
*/
function PriceWithPoint(field,name){

	var regExp = /^[0-9]+(\.[0-9]+)?$/;
	msg = new String("Il campo '[[field]]' non corrisponde ad un prezzo valido!");
	
	
	try{
		var result = regExp.test(field.value);
		
		if ( !result ){
		   alert ( msg.replace("[[field]]",name) );
		   field.focus();
		   return false;
		}
	}
	catch(e){
		alert("Field '" + name + "' not found");
		return false;	
	}
	return true;
	
}

/*
	Check if a string could represent a price with decimals separated by point or coma
*/
function Price(field,name){

	var regExp = /^[0-9]+([\.,][0-9]+)?$/;
	msg = new String("Il campo '[[field]]' non corrisponde ad un prezzo valido!");
	
	
	try{
		var result = regExp.test(field.value);
		
		if ( !result ){
		   alert ( msg.replace("[[field]]",name) );
		   field.focus();
		   return false;
		}
	}
	catch(e){
		alert("Field '" + name + "' not found");
		return false;	
	}
	return true;
	
}


function $Check_(field,name,type){
	try{
		if (field.value == "") 
			return true;
		else
			return $Check(field,name,type);
	}
	catch(e){
		alert("Field '" + name + "' not found");
		return false;	
	}
	return true;		
}

/*
	Function to check if a field is of a certain type
*/
function $Check(field,name,type){


	//Special checkings
	if( type.indexOf(":")>0 ){
		
		var special_type = type.substring(0,type.indexOf(":") );
		
		switch ( special_type ) {
			case "maxlen":
				var len = type.substring(type.indexOf(":")+1 );			
				return MaxChars(field,name,len);				
			break;
			case "minvalI":
				var minimum = type.substring(type.indexOf(":")+1 );			
				return MinValueInt(field,name,minimum);
			break;	
			case "maxvalI":
				var maximum = type.substring(type.indexOf(":")+1 );			
				return MaxValueInt(field,name,maximum);
			break;				
		}
		
		
	}


	switch(type){
		case "compulsory":
			return CompulsoryField(field,name);
		break;
		case "mail":
			return CompulsoryMail(field,name);
		break;		
		case "numeric":
			return Numeric(field,name);
		break;
		case "integer":
			return Integer(field,name);
		break;		
		case "priceComa":
			return PriceWithComa(field,name);
		break;	
		case "pricePoint":
			return PriceWithPoint(field,name);
		break;	
		case "price":
			return Price(field,name);
		break;			
		default:
			return CompulsoryField(field,name);
		break;
		
	}
}



/*
	Function to check if a string looks like a float number.
	
	Example of valid inputs: 
		1
		100
		1.4
		12.55
		-2
		-45.32
*/

function looksLikeFloat(number){
	var regExp = /^-?[0-9]+(\.[0-9]+)?$/;
	//var regExp = /^-?[0-9]*(\.[0-9]+)?$/;
	
	var result = regExp.test(number);
	
	return result;	
}

/*
	Function to check if a string looks like a float number but without the part on the left of the coma.
	
	Example:
		.87
*/
function floatOnlyWithDecimals(number){
	var regExp = /^-?(\.[0-9]+)?$/;
	var result = regExp.test(number);
	
	return result;		
}

//-->
