/**
 * defaultDescription.jQuery
 * QUESTA PUO' TORNARE UTILE SEMPRE
 * Inserisco la descrizione di default prendendola dal title del campo di testo
 */

(function(a){var b="default_description";a.fn.defaultDescription=function(){return this.each(function(){a(this).data(b,a(this).attr("title"));a(this).val().length==0&&a(this).val(a(this).data(b))}).bind("focus."+b,function(){a(this).val()==a(this).data(b)&&a(this).val("")}).bind("blur."+b,function(){a(this).val().length==0&&a(this).val(a(this).data(b))})}})(jQuery);

/**
 * Aggiungo il metodo di validazione "notDefault"
 * che invalida se non è inserita la descrizione di default come valore del campo.
 */
jQuery.validator.addMethod("notDefault",function(value,element){
	return value != jQuery(element).data("default_description");
},jQuery.validator.format(""));


$(function(){


	$("#form input:text").defaultDescription();

	$("#form").validate({
		rules:{

			nome:{
				required:true,
				notDefault:true
			},
			phone:{
				required:true,
				notDefault:true,
				number: true
			},
			operate:{
				required:true,
				notDefault:true,
				email:true
			}
		},
		messages:{
			nome:{
				notDefault:$("#nome").data("default_description")
			},
			operate:{
				notDefault:$("#operate").data("default_description"), email:"Inserisci una mail valida"
			}
		},
		errorPlacement:function(error,element){
			
			if(element.is("input:text")){
				if(typeof element.data("swapped_value") == "undefined" && element.val() != element.data("default_description")){
					element.data("swapped_value",element.val()).one("focus.swap_values",function(){
						$(this).val($(this).data("swapped_value")).removeData("swapped_value");
					}).val(error.text());
				}else{
					element.val(error.text());
				}
			}

			else element.after(error);

		},

		submitHandler: function(form){
			$("input:text",form).each(function(){
				if($(this).val() == $(this).data("default_description")) $(this).val("");
			});
			form.submit();
		},
		onfocusout:false,
		onkeyup:false,
		onclick:false,
		focusInvalid:false
	});
});

