﻿
///////////////////////////////////////////
////////// PreDefined  Functions //////////
///////////////////////////////////////////

// Check email
function isEmail(element){ if(!/^(\w+\.)*(\w+)@(\w+\.)+([a-zA-Z]{2,4})$/.test(element.value)){ alertText += "Il campo '" + element.getAttribute('V_Label') + "' non è una email valida\r\n"; }; return; }

// Check integer numbers
function isDigit(element)
{ 
	if(!/^\d/.test(element.value)){ alertText += "Il campo '" + element.getAttribute('V_Label') + "' può contenere solo numeri\r\n"; return;};
	if(element.getAttribute('minlength') > element.value.length){ alertText += "Il campo '" + element.getAttribute('V_Label') + "' deve contenere almeno " + element.getAttribute('minlength') + " caratteri\r\n"; return;};
	if(element.getAttribute('minvalue') > element.value.length || element.getAttribute('maxvalue') < element.value.length){ alertText += "Il campo '" + element.getAttribute('V_Label') + "' deve essere compreso tra " + element.getAttribute('minvalue') + " e " + element.getAttribute('maxvalue') + "\r\n"; };
	return;
}

// Check date format: dd/mm/yyyy
function isDate(element){ if(!/^(((0[1-9]|[12][0-9]|3[01])([-./])(0[13578]|10|12)([-./])(\d{4}))|(([0][1-9]|[12][0-9]|30)([-./])(0[469]|11)([-./])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([-./])(02)([-./])(\d{4}))|((29)(\.|-|\/)(02)([-./])([02468][048]00))|((29)([-./])(02)([-./])([13579][26]00))|((29)([-./])(02)([-./])([0-9][0-9][0][48]))|((29)([-./])(02)([-./])([0-9][0-9][2468][048]))|((29)([-./])(02)([-./])([0-9][0-9][13579][26])))/.test(element.value)){ alertText += "Il campo '" + element.getAttribute('V_Label') + "' non è una data valida nel formato gg/mm/aaaa\r\n"; }; return; }



function validateString(szString){ return /^[a-zA-Z0-9.,\s-àèìòùé\']+$/.test(szString); }



// Check string
function isString(element){

	

	//if(!/^[a-zA-Z0-9.,\s-]+$/.test(element.value)){ alertText += "Il campo '" + element.getAttribute('V_Label') + "' può contenere solo lettere, numeri ed i seguenti caratteri: ,.- spazio\r\n"; return; };
	if(!/^[a-zA-Z0-9.,\s-àèìòùé\']+$/.test(element.value)){ alertText += "Il campo '" + element.getAttribute('V_Label') + "' può contenere solo lettere, numeri ed i seguenti caratteri: ,.- spazio\r\n"; return; };
	
	if(element.getAttribute('minlength') > element.value.length){ alertText += "Il campo '" + element.getAttribute('V_Label') + "' deve contenere almeno " + element.getAttribute('minlength') + " caratteri\r\n"; };
	
	
	return;
}
function isHtml(element){
    
    if(element.getAttribute('minlength') > element.value.length){
       alertText += "Il campo '" + element.getAttribute('V_Label') + "' deve contenere almeno " + element.getAttribute('minlength') + " caratteri\r\n"; 
    }
    return;
}

function isChecked(element){
    
    if(!(element.checked)){
       alertText += "Il campo '" + element.getAttribute('V_Label') + "' è obbligatorio"; 
    }
    return;
}




///////////////////////////////////////////
////////////// DO NOT MODIFY //////////////
///////////////////////////////////////////

// Get first form from document
var theForm = document.forms["theForm"];

// Init alert text
var alertText = '';

// Check obligatory for Text and TextArea element
function checkObligatoryText(element){ if(element.value == ''){ alertText += "Il campo '" + element.getAttribute('V_Label') + "' è obbligatorio\r\n"; return; } return; }

// Check obligatory for CheckBox element
function checkObligatoryCheckBox(element){ if(!element.checked){ alertText += "Il campo '" + element.getAttribute('V_Label') + "' è obbligatorio\r\n"; } return; }

// Check obligatory for ComboBox element
function checkObligatoryComboBox(element){ if(element.selectedIndex < 0){ alertText += "Il campo '" + element.getAttribute('V_Label') + "' è obbligatorio\r\n"; } return; }

// Check obligatory for ListBox element
function checkObligatoryListBox(element)
{ 
	var count = 0;
	for(var j = 0; j < element.options.length; j++){ if(element.options[j].selected){ count += 1; }; }
	if(count < element.getAttribute('minvalue') || count > element.getAttribute('maxvalue')){ alertText += "Nel campo '" + element.getAttribute('V_Label') + "' devono essere selezionati tra " + element.getAttribute('minvalue') + " e " + element.getAttribute('maxvalue') + " elementi\r\n"; }
	return; 
}

// Check obligatory for File Upload element
function checkObligatoryFile(element)
{ if(element.value == ''){ alertText += "Il campo '" + element.getAttribute('V_Label') + "' è obbligatorio\r\n"; } return; }

// Check coherence for Text and TextArea element
function checkCoherenceText(element){ if(element.value != ''){ eval(element.getAttribute('V_Type') + "(element);"); } ; 
return;	
}

// Check coherence for different element of Text and TextArea
function checkCoherenceAll(element){ eval(element.getAttribute('V_Type') + "(element);"); return; }

// Get all element from form and validate them
function checkForm()
{
	
	alertText = '';
    	
    
	for(i = 0; i < theForm.elements.length; i++)
	{
		switch(theForm.elements[i].getAttribute('V_Mode'))
		{
			case 'Obligatory' :
					switch(theForm.elements[i].type)
					{
						case 'text' : checkObligatoryText(theForm.elements[i]); checkCoherenceText(theForm.elements[i]); break;
						case 'textarea' : checkObligatoryText(theForm.elements[i]); checkCoherenceText(theForm.elements[i]); break;
						case 'checkbox' : checkObligatoryCheckBox(theForm.elements[i]); break;
						case 'select-one' : checkObligatoryComboBox(theForm.elements[i]); break;
						case 'select-multiple' : checkObligatoryListBox(theForm.elements[i]); break;
						case 'file' : checkObligatoryFile(theForm.elements[i]); break;
						case 'radio' : checkObligatoryCheckBox(theForm.elements[i]); break;
						case 'password' : checkObligatoryText(theForm.elements[i]); break;
					}
					break;
			case 'Coherence' : 
					switch(theForm.elements[i].type)
					{
					
						case 'text' : checkCoherenceText(theForm.elements[i]); break;
						case 'textarea' : checkCoherenceText(theForm.elements[i]); break;
						case 'checkbox' : checkCoherenceAll(theForm.elements[i]); break;
						case 'select-one' : checkCoherenceAll(theForm.elements[i]); break;
						case 'select-multiple' : checkCoherenceAll(theForm.elements[i]); break;
						case 'file' : checkCoherenceAll(theForm.elements[i]); break;
						case 'radio' : checkCoherenceAll(theForm.elements[i]); break;
						case 'password' : checkCoherenceText(theForm.elements[i]); break;
					}
					break;
		}
	}
	if (alertText != ''){ alert('ATTENZIONE\r\n\r\n' + alertText); }else{ prepareData(); theForm.submit(); }
}

// Prepare form data to send
function prepareData(){ 
for(i = 0; i < theForm.elements.length; i++){ 
   switch(theForm.elements[i].getAttribute("V_Type"))
   {
	case 'isHtml' :  theForm.elements[i].value = escape( theForm.elements[i].value ); break;
   }	
   theForm.elements[i].name = theForm.elements[i].id = theForm.elements[i].getAttribute('V_Label'); 
 } 
}
