// arry dei campi della form
var formFields = new Array();

// aggiunge un campo alla lista degli obbligatori
function setMandatoryField(fieldName)
	{
	for (var i = 0; i< formFields.length; i++)
		{
		if (formFields[i].name == fieldName)
			{
			formFields[i].mandatory = true;
			break;
			}
		}
	}

// toglie un campo dalla lista degli obbligatori
function unsetMandatoryField(fieldName)
	{
	for (var i = 0; i< formFields.length; i++)
		{
		if (formFields[i].name == fieldName)
			{
			formFields[i].mandatory = false;
			break;
			}
		}
	}

// modifica l'atributo di obbligarieta' di una label (cambia la classe)
function setMandatoryLabel(fieldName)
	{
	var span = document.getElementById(fieldName);
	if (span)
		span.className = 'waform_mdtlbl';
	var hlpLink = document.getElementById('hlplink_' + fieldName);
	if (hlpLink)
		hlpLink.className = 'waform_mdtlbl';
	}
// modifica l'atributo di obbligarieta' di una label (cambia la classe)
function unsetMandatoryLabel(fieldName)
	{
	var span = document.getElementById(fieldName);
	if (span)
		span.className = 'waform_nomdtlbl';
	var hlpLink = document.getElementById('hlplink_' + fieldName);
	if (hlpLink)
		hlpLink.className = 'waform_nomdtlbl';
	}
// modifica l'atributo di editabilita' di una label (cambia la classe)
// NON USARE!!! fa casino!
function setReadonlyLabel(fieldName)
	{
	var span = document.getElementById(fieldName);
	if (span)
		span.className = 'waform_lbl';
	var hlpLink = document.getElementById('hlplink_' + fieldName);
	if (hlpLink)
		hlpLink.className = 'waform_lbl';

	}

function DammiIndiceCampo(fieldName)
{
	var i = 0;
	for (i=0; i < formFields.length; i++)
		{
		if (formFields[i].name == fieldName)
			break;
		}
	if (i >= formFields.length)
		{
		alert('Campo ' + fieldName + ' non trovato');
		return -1;
		}
	return i;
}
	
	
// disabilita un campo
// (fieldIndex e' l'indice di un eventuale array di radio; se vale -1, allora
// tutti i radio con quel nome vengono disabilitati)
function disableField(fieldName, fieldIndex)
	{
	var i = DammiIndiceCampo(fieldName);
	if (i < 0)
		return false;

	var theForm = document.forms[formFields[i].formName];
	switch(formFields[i].type)
		{
		case	'button':
			theForm.elements[formFields[i].name].disabled = true;
			theForm.elements[formFields[i].name].className = 'waform_robutton';
			break;
		case	'checkbox':
			theForm.elements[formFields[i].name].disabled = true;
			theForm.elements[formFields[i].name].className = 'waform_frmrocheckbox';
			break;
		case	'date':
			theForm.elements['day' + formFields[i].name].disabled = true;
			theForm.elements['month' + formFields[i].name].disabled = true;
			theForm.elements['year' + formFields[i].name].disabled = true;
			theForm.elements['day' + formFields[i].name].className = 'waform_frmrofld';
			theForm.elements['month' + formFields[i].name].className = 'waform_frmrofld';
			theForm.elements['year' + formFields[i].name].className = 'waform_frmrofld';
			if (theForm.elements['monthcal_' + formFields[i].name])
				{
				theForm.elements['monthcal_' + formFields[i].name].disabled = true;
				theForm.elements['yearcal_' + formFields[i].name].disabled = true;
				theForm.elements['monthcal_' + formFields[i].name].className = 'waform_frmrobutton';
				theForm.elements['yearcal_' + formFields[i].name].className = 'waform_frmrobutton';
				}
			break;

		case	'time':
			theForm.elements['hour' + formFields[i].name].disabled = true;
			theForm.elements['min' + formFields[i].name].disabled = true;
			theForm.elements['hour' + formFields[i].name].className = 'waform_frmrofld';
			theForm.elements['min' + formFields[i].name].className = 'waform_frmrofld';
			if (theForm.elements['sec' + formFields[i].name])
				{
				theForm.elements['sec' + formFields[i].name].disabled = true;
				theForm.elements['sec' + formFields[i].name].className = 'waform_frmrofld';
				}
			break;

		case	'datetime':
			theForm.elements['day' + formFields[i].name].disabled = true;
			theForm.elements['month' + formFields[i].name].disabled = true;
			theForm.elements['year' + formFields[i].name].disabled = true;
			theForm.elements['day' + formFields[i].name].className = 'waform_frmrofld';
			theForm.elements['month' + formFields[i].name].className = 'waform_frmrofld';
			theForm.elements['year' + formFields[i].name].className = 'waform_frmrofld';
			if (theForm.elements['monthcal_' + formFields[i].name])
				{
				theForm.elements['monthcal_' + formFields[i].name].disabled = true;
				theForm.elements['yearcal_' + formFields[i].name].disabled = true;
				theForm.elements['monthcal_' + formFields[i].name].className = 'waform_robutton';
				theForm.elements['yearcal_' + formFields[i].name].className = 'waform_robutton';
				}
			theForm.elements['hour' + formFields[i].name].disabled = true;
			theForm.elements['min' + formFields[i].name].disabled = true;
			theForm.elements['hour' + formFields[i].name].className = 'waform_frmrofld';
			theForm.elements['min' + formFields[i].name].className = 'waform_frmrofld';
			if (theForm.elements['sec' + formFields[i].name])
				{
				theForm.elements['sec' + formFields[i].name].disabled = true;
				theForm.elements['sec' + formFields[i].name].className = 'waform_frmrofld';
				}
			break;

		case	'currency':
			theForm.elements['int_' + formFields[i].name].disabled = true;
			theForm.elements['int_' + formFields[i].name].className = 'waform_frmrofld_rel';
			if (theForm.elements['dec_' + formFields[i].name])
				{
				theForm.elements['dec_' + formFields[i].name].disabled = true;
				theForm.elements['dec_' + formFields[i].name].className = 'waform_frmrofld_rel';
				}
			break;

		case	'radio':
			if (fieldIndex > -1)
				{
				theForm.elements[formFields[i].name][fieldIndex].disabled = true;
				theForm.elements[formFields[i].name][fieldIndex].className = 'waform_frmrocheckbox';
				}
			else
				{
				for (var c = 0; c < theForm.elements[formFields[i].name].length; c++)
					{
					theForm.elements[formFields[i].name][c].disabled = true;
					theForm.elements[formFields[i].name][c].className = 'waform_frmrocheckbox';
					}
				}
			break;

		case	'upload':
			theForm.elements[formFields[i].name].disabled = true;
			theForm.elements[formFields[i].name].className = 'waform_frmrofld';
			if (theForm.elements['delfile_' + formFields[i].name])
				{
				theForm.elements['delfile_' + formFields[i].name].disabled = true;
				theForm.elements['delfile_' + formFields[i].name].className = 'waform_frmrofld';
				}
			break;

		case	'multiselect':
			var fldName = formFields[i].name + '[]';
			theForm.elements[fldName].disabled = true;
			theForm.elements[fldName].className = 'waform_frmrofld';
			break;

		case	'listbox':
			var fldName = formFields[i].name + '[]';
			theForm.elements[fldName].disabled = true;
			theForm.elements[fldName].className = 'waform_rolistbox';
			break;

		case	'select':
		case	'text':
		case	'integer':
		case	'blob':
		
			theForm.elements[formFields[i].name].disabled = true;
			theForm.elements[formFields[i].name].className = 'waform_frmrofld';
			break;
		default:
			alert( "Il tipo del campo " + formFields[i].name + " non e' stato riconosciuto");
			return false;
		}
	return true;
	}

// abilita un campo
// (fieldIndex e' l'indice di un eventuale array di radio; se vale -1, allora
// tutti i radio con quel nome vengono abilitati)
function enableField(fieldName, fieldIndex)
	{
	var i = DammiIndiceCampo(fieldName);
	if (i < 0)
		return false;

	var theForm = document.forms[formFields[i].formName];
	switch(formFields[i].type)
		{
		case	'button':
			theForm.elements[formFields[i].name].disabled = false;
			theForm.elements[formFields[i].name].className = 'waform_button';
			break;
		case	'date':
			theForm.elements['day' + formFields[i].name].disabled = false;
			theForm.elements['month' +formFields[i].name].disabled = false;
			theForm.elements['year' + formFields[i].name].disabled = false;
			theForm.elements['day' + formFields[i].name].className = 'waform_select';
			theForm.elements['month' +formFields[i].name].className = 'waform_select';
			theForm.elements['year' + formFields[i].name].className = 'waform_select';
			if (theForm.elements['monthcal_' + formFields[i].name])
				{
				theForm.elements['monthcal_' + formFields[i].name].disabled = false;
				theForm.elements['yearcal_' + formFields[i].name].disabled = false;
				theForm.elements['monthcal_' + formFields[i].name].className = 'waform_button';
				theForm.elements['yearcal_' + formFields[i].name].className = 'waform_button';
				}
			break;
		case	'time':
			theForm.elements['hour' + formFields[i].name].disabled = false;
			theForm.elements['min' + formFields[i].name].disabled = false;
			theForm.elements['hour' + formFields[i].name].className = 'waform_select';
			theForm.elements['min' + formFields[i].name].className = 'waform_select';
			if (theForm.elements['sec' + formFields[i].name])
				{
				theForm.elements['sec' + formFields[i].name].disabled = false;
				theForm.elements['sec' + formFields[i].name].className = 'waform_select';
				}
			break;

		case	'datetime':
			theForm.elements['day' + formFields[i].name].disabled = false;
			theForm.elements['month' +formFields[i].name].disabled = false;
			theForm.elements['year' + formFields[i].name].disabled = false;
			theForm.elements['day' + formFields[i].name].className = 'waform_select';
			theForm.elements['month' +formFields[i].name].className = 'waform_select';
			theForm.elements['year' + formFields[i].name].className = 'waform_select';
			if (theForm.elements['monthcal_' + formFields[i].name])
				{
				theForm.elements['monthcal_' + formFields[i].name].disabled = false;
				theForm.elements['yearcal_' + formFields[i].name].disabled = false;
				theForm.elements['monthcal_' + formFields[i].name].className = 'waform_button';
				theForm.elements['yearcal_' + formFields[i].name].className = 'waform_button';
				}
			theForm.elements['hour' + formFields[i].name].disabled = false;
			theForm.elements['min' + formFields[i].name].disabled = false;
			theForm.elements['hour' + formFields[i].name].className = 'waform_select';
			theForm.elements['min' + formFields[i].name].className = 'waform_select';
			if (theForm.elements['sec' + formFields[i].name])
				{
				theForm.elements['sec' + formFields[i].name].disabled = false;
				theForm.elements['sec' + formFields[i].name].className = 'waform_select';
				}
			break;

		case	'currency':
			theForm.elements['int_' + formFields[i].name].disabled = false;
			theForm.elements['int_' + formFields[i].name].className = 'waform_input_rel';
			if (theForm.elements['dec_' + formFields[i].name])
				{
				theForm.elements['dec_' + formFields[i].name].disabled = false;
				theForm.elements['dec_' + formFields[i].name].className = 'waform_input_rel';
				}
			break;



		case	'radio':
			if (fieldIndex > -1)
				{
				theForm.elements[formFields[i].name][fieldIndex].disabled = false;
				theForm.elements[formFields[i].name][fieldIndex].className = 'waform_input';
				}
			else
				{
				for (var c = 0; c < theForm.elements[formFields[i].name].length; c++)
					{
					theForm.elements[formFields[i].name][c].disabled = false;
					theForm.elements[formFields[i].name][c].className = 'waform_input';
					}
				}
			break;

		case	'multiselect':
			var fldName = formFields[i].name + '[]';
			theForm.elements[fldName].disabled = false;
			theForm.elements[fldName].className = 'waform_select';
			break;

		case	'listbox':
			var fldName = formFields[i].name + '[]';
			theForm.elements[fldName].disabled = false;
			theForm.elements[fldName].className = 'waform_listbox';
			break;

		case	'select':
			theForm.elements[formFields[i].name].disabled = false;
			theForm.elements[formFields[i].name].className = 'waform_select';
			break;

		case	'upload':
			theForm.elements[formFields[i].name].disabled = false;
			theForm.elements[formFields[i].name].className = 'waform_input';
			if (theForm.elements['delfile_' + formFields[i].name])
				{
				theForm.elements['delfile_' + formFields[i].name].disabled = false;
				theForm.elements['delfile_' + formFields[i].name].className = 'waform_input';
				}
			break;

			
		case	'checkbox':
		case	'text':
		case	'integer':
		case	'blob':
			theForm.elements[formFields[i].name].disabled = false;
			theForm.elements[formFields[i].name].className = 'waform_input';
			//alert(theForm.elements[formFields[i].name].readonly);
			break;
		default:
			alert( "Il tipo del campo " + formFields[i].name + " non e' stato riconosciuto");
			return false;
		}

	return true;

}

// verifica che un singolo campo obbligatorio di una form sia valorizzato
// formField contiene l'array delle informazioni applicative relative al campo
function checkMandatoryField(formField)
{
	if (!formField.mandatory)
		return "";

	var errMsg 	= '';
	var ctrls	= document.forms[formField.formName].elements;

	switch(formField.type)
		{
		case	'text':
		case	'integer':
		case	'blob':
		case	'upload':
			if (Trim(ctrls[formField.name].value) == '')
				errMsg = "Il campo " + formField.label + " e' obbligatorio e non e' stato valorizzato.\n";
			break;
		case	'select':
			fld = ctrls[formField.name];
			if (fld.options[fld.selectedIndex].value == '')
				errMsg = "Il campo " + formField.label + " e' obbligatorio e non e' stato valorizzato.\n";
			break;
			
		case	'multiselect':
		case	'listbox':
			fld = ctrls[formField.name + '[]'];
			var cntr = 0;
			for (cntr = 0; cntr < fld.options.length; cntr++)
				{
				if (fld.options[cntr].selected == true)
					break;
				}
			if (cntr == fld.options.length)
				errMsg = "Il campo " + formField.label + " e' obbligatorio e non e' stato valorizzato.\n";
			break;
			
		case	'date':
			gio = ctrls['day' + formField.name];
			mes = ctrls['month' + formField.name];
			ann = ctrls['year' + formField.name];
			if (gio.options[gio.selectedIndex].value == '' ||
				mes.options[mes.selectedIndex].value == '' ||
				ann.options[ann.selectedIndex].value == '')
				errMsg = "Il campo " + formField.label + " e' obbligatorio e non e' stato valorizzato.\n";
			break;

		case	'time':
			ora = ctrls['hour' + formField.name];
			min = ctrls['min' + formField.name];
			sec = ctrls['sec' + formField.name];
			if (sec)
				{
				if (ora.options[ora.selectedIndex].value == '' ||
					min.options[min.selectedIndex].value == '' ||
					sec.options[sec.selectedIndex].value == '')
					errMsg = "Il campo " + formField.label + " e' obbligatorio e non e' stato valorizzato.\n";
				}
			else
				{
				if (ora.options[ora.selectedIndex].value == '' ||
					min.options[min.selectedIndex].value == '')
					errMsg = "Il campo " + formField.label + " e' obbligatorio e non e' stato valorizzato.\n";
				}		
			break;

		case	'datetime':
			gio = ctrls['day' + formField.name];
			mes = ctrls['month' + formField.name];
			ann = ctrls['year' + formField.name];
			ora = ctrls['hour' + formField.name];
			min = ctrls['min' + formField.name];
			sec = ctrls['sec' + formField.name];
			if (sec)
				{
				if (gio.options[gio.selectedIndex].value == '' ||
						mes.options[mes.selectedIndex].value == '' ||
						ann.options[ann.selectedIndex].value == '' ||
						ora.options[ora.selectedIndex].value == '' ||
						min.options[min.selectedIndex].value == '' ||
						sec.options[sec.selectedIndex].value == '')
					errMsg = "Il campo " + formField.label + " e' obbligatorio e non e' stato valorizzato.\n";
					}
			else
				{
				if (gio.options[gio.selectedIndex].value == '' ||
						mes.options[mes.selectedIndex].value == '' ||
						ann.options[ann.selectedIndex].value == '' ||
						ora.options[ora.selectedIndex].value == '' ||
						min.options[min.selectedIndex].value == '')
					errMsg = "Il campo " + formField.label + " e' obbligatorio e non e' stato valorizzato.\n";
				}		
			break;

		case	'currency':
			if (ctrls['dec_' + formField.name])
				{
				if (ctrls['int_' + formField.name].value == '')
					errMsg = "Il campo " + formField.label + " e' obbligatorio e non e' stato valorizzato.\n";
				}
			else
				{
				if (ctrls['int_' + formField.name].value  == '')
					errMsg = "Il campo " + formField.label + " e' obbligatorio e non e' stato valorizzato.\n";
				}		
			break;

		case	'checkbox':
			if (!ctrls[formField.name].checked)
				errMsg = "Il campo " + formField.label + " e' obbligatorio e non e' stato valorizzato.\n";
			break;
			
		default:
			errMsg = "Il tipo del campo " + formField.label + " non e' stato riconosciuto.\n";
		}

	return errMsg;
}



// verifica che gli elementi obbligatori di una form siano valorizzati
function checkMandatoryFields(theForm)
{
	var errMsg = '';
	for (var i=0; i < formFields.length; i++)
		{
		if (formFields[i].formName == theForm.name && formFields[i].mandatory == true)
			errMsg += checkMandatoryField(formFields[i]);
		}

	if (errMsg != '')
		{
		alert(errMsg);
		return false;
		}

	return true;

}

// verifica che gli elementi di una form siano valorizzati correttamente
function formalCheck(theForm)
{
	var errMsg = '';
	for (var i=0; i < formFields.length; i++)
		{
		if (formFields[i].formName == theForm.name)
			{
			switch(formFields[i].type)
				{
				case	'currency':
					if (!checkInteger(theForm.elements['int_' + formFields[i].name]) || 
						!checkInteger(theForm.elements['dec_' + formFields[i].name]))
						errMsg += "Il campo " + formFields[i].label + " non e' stato valorizzato correttamente.\n";
					break;
				case	'integer':
					if (!checkInteger(theForm.elements[formFields[i].name]))
						errMsg += "Il campo " + formFields[i].label + " non e' stato valorizzato correttamente.\n";
					break;
				case	'date':
				case	'datetime':
					gio = theForm.elements['day' + formFields[i].name];
					mes = theForm.elements['month' + formFields[i].name];
					ann = theForm.elements['year' + formFields[i].name];
					if (gio.options[gio.selectedIndex].value != '' &&
						mes.options[mes.selectedIndex].value != '' &&
						ann.options[ann.selectedIndex].value != '')
						{
						mydate = new Date(ann.options[ann.selectedIndex].value,
												mes.options[mes.selectedIndex].value - 1,
												gio.options[gio.selectedIndex].value);
						if (gio.options[gio.selectedIndex].value != mydate.getDate() ||
							mes.options[mes.selectedIndex].value != (mydate.getMonth() + 1) ||
							ann.options[ann.selectedIndex].value != mydate.getFullYear())
							errMsg += "Il campo " + formFields[i].label + " non e' stato valorizzato correttamente.\n";
						}
					break;


				}
			}
		}
	if (errMsg != '')
		{
		alert(errMsg);
		return false;
		}

	return true;

}



function validateForm(theForm)
	{
	if (eval(theForm.name + 'Cancel == true'))
		return true;
	if (eval(theForm.name + 'Delete == true'))
		{
		eval(theForm.name + 'Delete = false');
		return confirm('Confermi cancellazione?');
		}
	if (formalCheck(theForm))
		{
		if(checkMandatoryFields(theForm))
			return confirm('Confermi operazione?');
		}
	return false;
	}

function checkInteger(ctrl)
	{
	if ((ctrl.value * 2 / 2) == (ctrl.value + ''))
		return true;
	return false;
//	for (var i=0; i < ctrl.value.length; i++)
//		{
//		if (ctrl.value.charCodeAt(i) < 0x30 || ctrl.value.charCodeAt(i) > 0x39)
//			return false;
//		}
//	return true;
			
	}

function toggleDeleteFileCheck(deleteCheck)
{
	var fileCtrlName = deleteCheck.name.substr(8);
	var i = DammiIndiceCampo(fileCtrlName);
	if (i < 0)
		return false;
	var theForm = document.forms[formFields[i].formName];

	if (deleteCheck.checked)
		{
		theForm.elements[formFields[i].name].disabled = true;
		theForm.elements[formFields[i].name].className = 'waform_frmrofld';
		}
	else
		{
		theForm.elements[formFields[i].name].disabled = false;
		theForm.elements[formFields[i].name].className = 'waform_input';
		}
	return true;
		
}

function Trim(TRIM_VALUE){
if(TRIM_VALUE.length < 1){
return"";
}
TRIM_VALUE = RTrim(TRIM_VALUE);
TRIM_VALUE = LTrim(TRIM_VALUE);
if(TRIM_VALUE==""){
return "";
}
else{
return TRIM_VALUE;
}
} //End Function

function RTrim(VALUE){
var w_space = String.fromCharCode(32);
var v_length = VALUE.length;
var strTemp = "";
if(v_length < 0){
return"";
}
var iTemp = v_length -1;

while(iTemp > -1){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(0,iTemp +1);
break;
}
iTemp = iTemp-1;

} //End While
return strTemp;

} //End Function

function LTrim(VALUE){
var w_space = String.fromCharCode(32);
if(v_length < 1){
return"";
}
var v_length = VALUE.length;
var strTemp = "";

var iTemp = 0;

while(iTemp < v_length){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(iTemp,v_length);
break;
}
iTemp = iTemp + 1;
} //End While
return strTemp;
} //End Function

function rPad(str, len, pad)
	{
	str = str + '';
    var result = str;
    for (var i=str.length; i<len; i++)
        result = result + pad;
    return result;
	}

