// formValidate v.1 - 2010
// cody by luca garbin aka ritz
// www.ritzwebmaster.com

/* funzionamento
jQuery(document).ready(function($){
	$('#contact').formValidate({
		campi : new Array(
					new Array('#name','Nome','Nome: campo obbligatorio','text'), // tipi campi: text, email, privacy
					new Array('#lastname','Cognome','Cognome: campo obbligatorio','text'),
					new Array('#email','Email','Email: campo obbligatorio','email'),
					new Array('#request','Richiesta','Richiesta: campo obbligatorio','text'),
					new Array('#privacy','Privacy','Autorizzare il trattamento dei dati','privacy')
				),
		textIn : false, // campi di testo con il nome dentro
		alertt: new Array(true,'') // new Array(false,'#idBoxPerTesto')
	})
})


*/

jQuery.fn.formValidate = function(options){
	var options = jQuery.extend({
		campi : new Array(),
		textIn : false,
		alertt: new Array(true,'') // alert o insert txt
	},options);

	this.each(function(){

		alertt = options.alertt
		campi = options.campi

		if(!alertt[0])
			$(alertt[1]).css('animate',0)
		
		// copio le variabili passate

		// funzione per controllo email
		function isValidEmailAddress(emailAddress)
		{
			var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
			return pattern.test(emailAddress);
		}
		
		if(options.textIn) {
			$(this).find('input, textarea').not('input[type=submit]').each(function(){
				$(this).focus(function(){
				if($(this).val()==this.defaultValue)
					$(this).val('')
				else if($(this).val()!=this.defaultValue)
					$(this).select()
				})
		
				$(this).blur(function() {
					if ($.trim(this.value) == ''){
						this.value = (this.defaultValue ? this.defaultValue : '');
					}
				})
			})
		}


		// azioni sui campi

		$(this).submit(function(){
			/******* controllo campi ******/
			for(i=0;i<campi.length; i++) {
				
				current = $(campi[i][0])
				currentVal = current.val()

				switch(campi[i][3]) {
					case 'email':
						if(currentVal=='' || (currentVal==campi[i][1] && options.textIn) || !isValidEmailAddress(currentVal)) {
							
							if(alertt[0])
								alert(campi[i][2])
							else
								$(alertt[1]).html(campi[i][2]).animate({'opacity':1})

							return false
						}
					break;
					
					case 'privacy':
						if(!$(campi[i][0]).attr('checked')) {
							if(alertt[0])
								alert(campi[i][2])
							else
								$(alertt[1]).html(campi[i][2]).animate({'opacity':1})

						return false
						}
					break;

					case 'text':
						if(currentVal=='' || (currentVal==campi[i][1] && options.textIn)) {
							if(alertt[0])
								alert(campi[i][2])
							else
								$(alertt[1]).html(campi[i][2]).animate({'opacity':1})

							return false
						}
					break;
				}
				
			}
			
			if(!alertt[0])
				$(alertt[1]).html('')
		
			return true
		})
	})
}
