
// -------------------------------------------------------------------------------
// Name: Controlli Form (controlli.js, default.css, JQuery, HTML)
// Author: Altea Software S.r.l.
// Version: 1.0.0
// Description: Funzioni di controllo campi dei formulari in Javascript
//              Evidenzia i campi errati o assenti e visualizza un messaggio riassuntivo degli errori
// Required: La corretta attivazione dei controlli richiede: Jquery 1.21, file CSS, Form HTML
//
// Devel Date: 03/12/2007
// Last Modify: 10/12/2007
// CacheLog:
//
// -------------------------------------------------------------------------------

// -------------------------------------------------------------------------------
// CONFIG

// Id del box che contiene il formulario
 var DIV_ID = 'formulario';
// -------------------------------------------------------------------------------



// Reimposto tutti i campi con lo stile standard. Elimina il messaggio riassuntivo.
function svuotaFacebox(form,divRis) {
	var sfEls_err = $('.body #'+form+' .red');
	for (var i=0; i<sfEls_err.length; i++) {
		$(sfEls_err[i]).removeClass("red");
	}
	$(".body #"+divRis+" p").remove();
	$(".body #"+divRis).css("display","none");
	document.getElementById(DIV_ID).scrollTop = 0;
}

// Reset della form
// testo - messaggio di richiesta conferma
function sure(testo) {
	if (window.confirm(testo)) {
		svuotaFacebox();	
	} else { return false; }
}

// Questo script verifica tutti i campi con class "required" all'interno di un ID "form".
// Per questi elementi tipo "text", "select" e "textarea" viene controllato se il campo è vuoto, 
// invece per gli elementi di "checkbox" viene controllato se il campo è checked.
// Viene fatto un ulteriore controllo nel caso i campi richiesti siano compilati.
// Il controllo avviene in maniera differente in base al class dell'elemento.
// - Caso class "email": viene verificato che il contenuto di tale campo sia in un indirizzo email correto.
// - Caso class "numeri": viene verificato che il contenuto di tale campo sia composto solo da numeri.
//
// La sub si aspetta in input una form HTML; nel caso in cui i controlli non dovessero rilevare errori restituisce TRUE,
// mentre nel caso in cui vengano rilevati degli errori aggiorna lo stile degli elementi e restituisce FALSE.

function controlliFacebox(form,divRis) {
	svuotaFacebox(form,divRis);
	var error = 0;
	var sfEls = $(".body #"+form+" .required");
	for (var i=0; i<sfEls.length; i++) {
		var label = ($(sfEls[i]).attr("title")).split("|");
		var tipo = $(sfEls[i]).attr("type");
		var classe = ($(sfEls[i]).attr("class")).split(" ");
		
		// ************************* controllo nel caso i campi siano vuoti ******************
		
		// controlla i campi text, select, textarea
		if (((sfEls[i].value)  == "") && ((tipo  == 'text') || (tipo  == 'select') || (tipo  == 'textarea'))) {
			$(sfEls[i]).addClass("red");
			if (error == 0) { 
				$(".body #"+divRis).css("display","block");
				error = 1;
			}
			$(".body #"+divRis).append("<p>&gt;&gt; " + label[0] + "</p>");
		}
		// controlla i campi checkbox
		if ((!sfEls[i].checked) && (tipo  == 'checkbox')) {
			$(sfEls[i]).addClass("red");
			if (error == 0) { 
				$(".body #"+divRis).css("display","block");
				error = 1;
			}
			$(".body #"+divRis).append("<p>&gt;&gt; " + label[0] + "</p>");
		}

		// ************************* controllo nel caso i campi siano compilati ******************
		if ((sfEls[i].value)  != "") {
			for (var a=0; a<classe.length; a++) {
				
				// controlla i campi con class email
				if (classe[a] == "email") {
					regEx = /(.*)\@(.*)\.(.*)/;
					if(!regEx.exec(sfEls[i].value)) {
						if (error == 0) { 
							$(".body #"+divRis).css("display","block");
							error = 1;
						}
						$(sfEls[i]).addClass("red");
						$(".body #"+divRis).append("<p>&gt;&gt; " + label[1] + "</p>");
					}
				}
				
				// controlla i campi con class numeri
				if (classe[a] == "numeri") {
					if (isNaN(sfEls[i].value)) {
						if (error == 0) { 
							$(".body #"+divRis).css("display","block");
							error = 1;
						}
						$(sfEls[i]).addClass("red");
						$(".body #"+divRis).append("<p>&gt;&gt; " + label[1] + "</p>");
					}
				}
			}
		}
	}
	
	if (error == 0) {
		//alert ('inviata'); return false;
		return true;
	} else {
		document.getElementById(DIV_ID).scrollTop = 0;	
		return false;
	}
}
