jQuery.validator.addMethod("lettersonly", function(value, element) {
	return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Letters only please");

jQuery.validator.addMethod("alphanumeric", function(value, element) {
	return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, spaces or underscores only please");

jQuery.validator.addMethod(
	"CodFisITA",
	function(value, element) {
		var check = false;
		var re = /^\w{6}\d{2}\w\d{2}\w\d{3}\w$/
		if( re.test(value))
			check = true;
		else
			check = false;
		return this.optional(element) || check;
	}, 
	"Inserisci il codice fiscale"
);

jQuery.validator.addMethod(
	"mobileITA",
	function(value, element) {
		var check = false;
		var re = /^([+]39)?\s*3\d{2}\s*\d{6,7}$/
		if( re.test(value))
			check = true;
		else
			check = false;
		return this.optional(element) || check;
	}, 
	"Inserisci un numero di cellulare valido"
);

jQuery.validator.addMethod(
	"phoneITA",
	function(value, element) {
		var check = false;
		var re = /^([+]39)?\s*0\d{8,11}$/
		if( re.test(value))
			check = true;
		else
			check = false;
		return this.optional(element) || check;
	}, 
	"Inserisci un numero di telefono valido"
);

jQuery.validator.addMethod(
	"partita_iva_check",
	function(value, element) {
		var check = false;
		if (value == '')
			check = true
		else {
			if ($("#ragione_sociale").val() == '')
				check = false;
			else 
				check = true;
		}
		return this.optional(element) || check;
	}, 
	"Inserisci anche la ragione sociale"
);

jQuery.validator.addMethod(
	"ragione_sociale_check",
	function(value, element) {
		var check = false;
		if (value == '')
			check = true
		else {
			if ($("#partita_iva").val() == '')
				check = false;
			else 
				check = true;
		}
		return this.optional(element) || check;
	}, 
	"Inserisci anche la partita iva"
);

$("#cliente_form").validate({
  rules: {
    nome: {
    	required: true,
    	minLength: 2
    },
    cognome: {
    	required: true,
		minLength: 2
    },
    codice_fiscale: {
		CodFisITA:true
    },
    partita_iva: {
      	number: true,
	  	rangelength: [11, 11],
		partita_iva_check: true
    },
    ragione_sociale: {
      	minlength: 2,
		ragione_sociale_check: true
    },
    indirizzo: {
      required: true,
	  minLength: 5
    },
    numero_civico: {
      required: true
    },
    citta: {
      required: true
    },
    provincia: {
      required: true,
	  lettersonly: true,
  	  rangelength: [2, 2]
    },
    cap: {
      required: true,
	  number: true,
  	  rangelength: [5, 5]
    },
	email: {
		email: true,
		required: true
	}, 
	nocache_username: {
		minlength: 6,
		alphanumeric: true,
		required: true
	},
	nocache_password: {
		minlength: 6,
		alphanumeric: true,
		required: true
	},
	ripeti_password: {
		equalTo: "#nocache_password"
	},
	telefono: {
		phoneITA: true
	},
	cellulare: {
		mobileITA: true
	}
  },
  messages: {
    nome: {
      required: "Inserisci un nome",
      minlength: jQuery.format("Inserisci almeno {0} caratteri")
    },
    cognome: {
      required: "Inserisci un cognome",
	  minlength: jQuery.format("Inserisci almeno {0} caratteri")
    },
    codice_fiscale: {
      rangelength: jQuery.format("Il codice fiscale deve essere lungo {0} caratteri")
    },
    partita_iva: {
	  number: "La partita iva deve contenere solo numeri",
      rangelength: jQuery.format("La partita iva deve essere lunga {0} caratteri")
    },
    indirizzo: {
      required: "Inserisci un indirizzo",
      minlength: jQuery.format("Inserisci almeno {0} caratteri")
    },
    numero_civico: {
      required: "Inserisci un numero civico"
    },
    citta: {
      required: "Inserisci una citta"
    },
   	cap: {
      required: "Inserisci il CAP",
	  number: "Il CAP deve essere un numero",
      rangelength: jQuery.format("Il CAP deve essere lungo {0} caratteri")
    },
   	provincia: {
      required: "Inserisci la provincia",
	  lettersonly: "La provincia deve contenere solo lettere",
      rangelength: jQuery.format("La provincia deve essere lunga {0} caratteri")
    }, 
	email: {
		required: "Inserisci una email",
		email: "Formato email non valido"
	}, 
	nocache_username: {
		required: "Inserisci uno username",
		alphanumeric: "Lo username deve contenere solo lettere, numeri, spazi o underscore",
		minlength: jQuery.format("Inserisci almeno {0} caratteri")
	},
	nocache_password: {
		required: "Inserisci una password",
		alphanumeric: "La password deve contenere solo lettere, numeri, spazi o underscore",
		minlength: jQuery.format("Inserisci almeno {0} caratteri")
	},
	ripeti_password: {
		equalTo: "Le due password non coincidono"
	}
  }
});