var frm = null;

function FormVerify () {

var indErrore = 0;
var arrErr = new Array();
var intCap = 0;
 
    try
    {
        frm =  document.getElementById('Form1');
    }
    catch(e)
    {
        frm = document.getElementById('form1');
    } 

   
// Accettazione Form
if ( CheckIfAccepted(arrErr) ) // l'ho messo come if cosė blocca tutto se non č stato accettato.



for (var i = 0; i < frm.length; i++)
{ 
                        
    var e = frm.elements[i];
                         
// filtro i campi da validare
if ( e.NeedValidation != null && e.NeedValidation == "True" ) {

// Determino i valori minimi e massimi
arrVal = e.Range.split(',');
var minValue = arrVal[0];
var maxValue = arrVal[1];

switch (e.ValidationType){
// elenco dei moduli di controllo
case 'Numerico':
var pattern  = /^\d{1,}$/;
if ( ( e.value.length > 0 && e.Optional == "True" ) || ( e.Optional == "False" ) ) 
{
	if (!((pattern.test(e.value)) && ( e.value-0 >= minValue ) && ( e.value-0 <= maxValue) ) ) 
	{ 
		arrErr[indErrore] = e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc';
	};
}
break;

case 'alfanumerico':
var pattern  = /^[^\\]*$/;
if ( ( e.value.length > 0 && e.Optional == "True" ) || ( e.Optional == "False" ) ) 
{
	if (!((pattern.test(e.value)) && ( e.value.length >= minValue ) && ( e.value.length <= maxValue) ) ) 
	{ 
		arrErr[indErrore] =  e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc'; 
	};
}
break;

case 'Stringa':
var pattern  = /^[^\42]{1,}$/;
if ( ( e.value.length > 0 && e.Optional == "True" ) || ( e.Optional == "False" ) ) 
{
	if (!((pattern.test(e.value)) && ( e.value.length >= minValue ) && ( e.value.length <= maxValue) ) ) 
	{ 
		arrErr[indErrore] = e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc';
	};
}
break;

case 'DueStringhe':
var pattern  = /^\w*[\s]{1}\w*[^\?,"]*$/;
if ( ( e.value.length > 0 && e.Optional == "True" ) || ( e.Optional == "False" ) ) 
{
	if (!((pattern.test(e.value)) && ( e.value.length >= minValue ) && ( e.value.length <= maxValue) ) ) 
	{ 
		arrErr[indErrore] = e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc';
	};
}
break;

case 'Email':
var pattern = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
if ( ( e.value.length > 0 && e.Optional == "True" ) || ( e.Optional == "False") ) 
{
	if (!((pattern.test(e.value)) && ( e.value.length >= minValue ) && ( e.value.length <= maxValue) ) ) 
	{ 
		arrErr[indErrore] = e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc';
	};
}
break;

case 'Data':
var pattern  = /^\d{2}\/{1}\d{2}\/{1}\d{4}$/;
if ( ( e.value.length > 0 && e.Optional == "True" ) || ( e.Optional == "False" ) ) 
{
	if (!((pattern.test(e.value)) && ( e.value.length >= minValue ) && ( e.value.length <= maxValue) ) ) 
	{ 
		arrErr[indErrore] = e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc';
	};
}
break;

case 'Valuta':
var pattern  = /^(\d*|\d*[\,]{1}\d{1,2})$/;
if ( ( e.value.length > 0 && e.Optional == "True" ) || (e.Optional == "False" ) ) 
{
	if (!((pattern.test(e.value)) && ( e.value.length >= minValue ) && ( e.value.length <= maxValue) ) ) 
	{ 
		arrErr[indErrore] = e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc';
	 };
}
break;

case 'valuta2':
var pattern  = /^\d{1,},{0,1}\d{0,2}$/;
if ( ( e.value.length > 0 && e.Optional == "True" ) || ( e.Optional == "False" ) ) 
{
	if (!((pattern.test(e.value)) && ( e.value.length >= minValue ) && ( e.value.length <= maxValue) ) ) 
	{ 
		arrErr[indErrore] = e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc';
	};
}
break;

case 'valuta4':
var pattern  = /^\d{1,},{0,1}\d{0,4}$/;
if ( ( e.value.length > 0 && e.Optional == "True" ) || ( e.Optional == "False" ) ) 
{
	if (!((pattern.test(e.value)) && ( e.value.length >= minValue ) && ( e.value.length <= maxValue) ) ) 
	{ 
		arrErr[indErrore] = e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc';
	};
}
break;



case 'SoloNumeri':
var pattern  = /^\d{1,}$/;
if ( ( e.value.length > 0 && e.Optional == "True" ) || ( e.Optional == "False" ) ) 
{
	if (!((pattern.test(e.value)) && ( e.value.length >= minValue ) && ( e.value.length <= maxValue) ) ) 
	{ 
		arrErr[indErrore] = e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc';
	};
}
break;

case 'regexp':

	var _text = e.Options;
	var pattern  = new RegExp(_text,"g");	



	if ( _text == 'string' )
	{		
		pattern  = new RegExp('^[^\42]*$',"g");	
		
		if ( ( e.value.length > 0 && e.Optional == "True" ) || ( e.Optional == "False" ) ) 
		{	
			if (!((pattern.test(e.value)) && ( e.value.length >= minValue ) && ( e.value.length <= maxValue) ) ) 
			{ 
				arrErr[indErrore] =  e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc'; 
			};
		}  		
	}
	else if ( _text == 'number' )
	{ 		
		pattern  = new RegExp('^\d{1,}$',"g");	
		
		if ( ( e.value.length > 0 && e.Optional == "True" ) || ( e.Optional == "False" ) ) 
		{
			if (!((pattern.test(e.value)) && ( e.value-0 >= minValue ) && ( e.value-0 <= maxValue) ) ) 
			{ 
				arrErr[indErrore] = e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc';
			};
		}
		
	}  else if ( _text != '' )
	{
	   	if ( ! pattern.test(e.value) && e.Options != '' ) 
		{ 
			arrErr[indErrore] = e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc';
		}
	}
	else
	{
		alert('Attenzione una validazione non č compilata correttamente.');	
	}

break;

case 'StringaComparata':
if ( ( e.value.length > 0 && e.Optional == "True" ) || ( e.Optional == "False" ) ) 
{
	if (!(e.value == document.all[e.Options].value )) 
		{ 
			arrErr[indErrore] = e.ErrorMessage + '\r'; indErrore++ ; e.style.backgroundColor = '#ffffcc';
		};
}
break;

// fine elenco moduli di controllo
} 

}


// fine ciclo for
}

// Visualizzatore errori
if ( arrErr.length > 0 ) {
var msg = "";
for (i=0; i < arrErr.length; i++) {
msg += arrErr[i];
}

alert(msg);
return false;
} else { return true }

// fine funzione form Verify

}


function ripristina (obj) 
{
    obj.style.color = 'black';
}


function CheckIfAccepted(arrErrors)
{
	var _cb = GetControl('FormAcceptedControl');

	if (_cb != null && !_cb.checked)
	{
		arrErrors[0] = 'Attenzione! Per poter continuare accettare la form.';

		return false;
	}

	return true;
}


function GetControl(controlID)
{
	var _obj = frm.elements[controlID];

	if (_obj == null)
		for(i=0; i < frm.length; i++)
			if (frm.elements[i].id.indexOf(controlID) != -1)
				_obj = frm.elements[i];

	return _obj;
}