
//////////////////////////////////////////////////////////////////////////////////
// Verifica Form - Origine script: Generic Form Validation
//////////////////////////////////////////////////////////////////////////////////

var checkObjects	= new Array();
var errors		= ""; 
var returnVal		= false; 
var Val			= new Array(); 

// 
	Val.header	= "Non è possibile procedere:"
	Val.start	= "!!! ";
	Val.field	= " Il campo ";
	Val.require	= " è necessario";
	Val.min		= " - Inserire almeno ";
	Val.max		= " - Non può contenere più ";
	Val.minmax	= " e non più di ";
	Val.chars	= " caratteri";
	Val.num		= " - Deve contenere un numero";
	Val.email	= " deve avere valore valido";
	Val.password	= " deve avere valore valido";

// 
function define(n,type,HTMLname,min,max,d){
	var p;
	var i;
	var x;
	if(!d) d=document;
	if((p=n.indexOf("?"))>0&&parent.frames.length){
    	d=parent.frames[n.substring(p+1)].document;
    	n=n.substring(0,p);
    }
	if(!(x=d[n])&&d.all) x=d.all[n];
	
  	for (i=0;!x&&i<d.forms.length;i++){
  		x=d.forms[i][n];
  	}
	for(i=0;!x&&d.layers&&i<d.layers.length;i++){
		x=define(n,type,HTMLname,min,max,d.layers[i].document);
		return x;		
	}
	
	// 
	eval("V_"+n+" = new formResult(x,type,HTMLname,min,max);");
	checkObjects[eval(checkObjects.length)] = eval("V_"+n);
}

//
function formResult(form,type,HTMLname,min,max){
	this.form = form;
	this.type = type;
	this.HTMLname = HTMLname;
	this.min  = min;
	this.max  = max;
}

// 
function validate(){
	if(checkObjects.length>0){
		errorObject = "";
	
		for(i=0;i<checkObjects.length;i++){
			validateObject 		= new Object();
			validateObject.form 	= checkObjects[i].form;
			validateObject.HTMLname = checkObjects[i].HTMLname;
			validateObject.val 	= checkObjects[i].form.value;
			validateObject.len 	= checkObjects[i].form.value.length;
			validateObject.min 	= checkObjects[i].min;
			validateObject.max 	= checkObjects[i].max;
			validateObject.type 	= checkObjects[i].type;
			
			//
			if(validateObject.type == "num" || validateObject.type == "string"){
				if((validateObject.type == "num" && validateObject.len <= 0) || (validateObject.type == "num" && isNaN(validateObject.val))){errors+=Val.start+Val.field+validateObject.HTMLname+Val.require+Val.num+"\n";
				} else if (validateObject.min && validateObject.max && (validateObject.len < validateObject.min || validateObject.len > validateObject.max)){errors+=Val.start+Val.field+validateObject.HTMLname+Val.require+Val.min+validateObject.min+Val.minmax+validateObject.max+Val.chars+"\n";
				} else if (validateObject.min && !validateObject.max && (validateObject.len < validateObject.min)){errors+=Val.start+Val.field+validateObject.HTMLname+Val.require+Val.min+validateObject.min+Val.chars+"\n";
				} else if (validateObject.max && !validateObject.min &&(validateObject.len > validateObject.max)){errors+=Val.start+Val.field+validateObject.HTMLname+Val.require+Val.max+validateObject.max+Val.chars+"\n";
				} else if (!validateObject.min && !validateObject.max && validateObject.len <= 0){errors+=Val.start+Val.field+validateObject.HTMLname+Val.require+"\n";
				}
			} else if(validateObject.type == "email"){
				// 
				if((validateObject.val.indexOf("@") == -1) || (validateObject.val.charAt(0) == ".") || (validateObject.val.charAt(0) == "@") ||(validateObject.len < 6) || (validateObject.val.indexOf(".") == -1) || (validateObject.val.charAt(validateObject.val.indexOf("@")+1) == ".") || (validateObject.val.charAt(validateObject.val.indexOf("@")-1) == ".")){errors+=Val.start+Val.field+validateObject.HTMLname+Val.email+"\n";}
			}
		}
	}
	//
	if(errors){
		alert(Val.header.concat("\n"+errors));
		errors = "";
		returnVal = false;
	} else {
		returnVal = true;
	}
}
//////////////////////////////////////////////////////////////////////////////////
