
// Funcio per a corregir els camps dels formularis
	new function() {
		// $.fn.validate = validate() {};
	    $.fn.validate = {
	        init: function(o) {
				if (o.name == "frm_nombre") { return this.name(o) };
				//if (o.name == 'password') { this.password(o) };
				if (o.name == "frm_correo_emisor") { return this.email(o) };
				if (o.name == "frm_correo_receptor") { return this.email(o) };
				if (o.name == "frm_url") { return this.url(o) };
				if (o.name == "frm_comentarios") { return this.comments(o) };
				//if (o.name == 'date') { this.date(o) };
	        },
		// Camp Nom
	        name: function(o) {
			// Comprobem que el camp no tingui el valor per defecte
				if (o.value == "Nombre") { o.value = "" };
			
			// Comprobem si pot ser o no Null 
				if ( checkNull(o) ) {
				// Comprobem si el contigut del camp es correcte
					var user = /[(\*\(\)\[\]\+\.\,\/\?\:\;\'\"\`\~\\#\$\%\^\&\<\>)+]/;
					if ( !o.value.match(user) ) {
						doSuccess(o);
						return true;
					} else {
						doError(o, "no se permiten caracteres especiales");
						return false;
					};
				} else {
					return false;
				};
	        },
		// Camp Usuari
	        username: function(o) {
			// Comprobem que el camp no tingui el valor per defecte
				if (o.value == "Usuario") { o.value = "" };
			
			// Comprobem si pot ser o no Null 
				if ( checkNull(o) ) {
				// Comprobem si el contigut del camp es correcte
					var user = /[(\*\(\)\[\]\+\.\,\/\?\:\;\'\"\`\~\\#\$\%\^\&\<\>)+]/;
					if (!o.value.match(user)) {
						doValidate(o);
						return true;
					} else {
						doError(o, "no se permiten caracteres especiales");
						return false;
					};
				} else {
					return false;
				};
	        },
		// Camp Contrasenya
	        password: function(o) {
				var pass = /[(\*\(\)\[\]\+\.\,\/\?\:\;\'\"\`\~\\#\$\%\^\&\<\>)+]/;
				if (!o.value.match(pass)) {
					doValidate(o);
					return true;
				} else {
					doError(o, "no se permiten caracteres especiales");
					return false;
				};
	        },
		// Camp email
	        email: function(o) {
			// Comprobem que el camp no tingui el valor per defecte
				if (o.value == "direccion@correo.com") { o.value = "" };
				
			// Comprobem si pot ser o no Null 
				if ( checkNull(o) ) {
					// Comprobem si el contigut del camp es correcte
					var email  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
					if ( (o.value.match(email)) || (o.value.length == 0) ) {
						doSuccess(o);
						return true;
					} else {
						doError(o, "el email no es correcto");
						return false;
					};
				} else {
					return false;
				};
	        },
		// Camp Data
	        date: function(o) {
	          var date  = /(0[1-9]|[12][0-9]|3[01])+\/(0[1-9]|1[012])+\/(19|20)\d\d/;
				if (o.value.match(date)) {
					doSuccess(o);
					return true;
				} else {
					doError(o, "no es una fecha correcta: dd/mm/yyyy");
					return false;
				};
	        },
		// Camp Url
			url: function(o) {
			// Comprobem que el camp no tingui el valor per defecte
				if (o.value == "http://www.direccion.com") { o.value = "" };
				
			// Comprobem si pot ser o no Null 
				if ( checkNull(o) ) {
					// Comprobem si el contigut del camp es correcte
					var url = /^(http|https|ftp):\/\/(([a-z0-9][a-z0-9_-]*)(\.[a-z0-9][a-z0-9_-]*)+)(:(\d+))?\/?/;
					if ( (o.value.match(url)) || (o.value.length == 0) ) {
						doSuccess(o);
						return true;
					} else {
						doError(o, "no es una direccion web correcta");
						return false;
					};
				} else {
					return false;
				};
			},
		// Camp Comentaris
			comments: function(o) {
			// Comprobem que el camp no tingui el valor per defecte
				if (o.value == "Tus comentarios") { o.value = ""; };

			// Comprobem si pot ser o no Null 
				if ( checkNull(o) ) {
					doSuccess(o);
					return true;
				} else {
					return false;
				};
			}
	    };
	
	// Funcio a executar quan el camp es correcte
	    function doSuccess(o) {
			label = o.parentNode;
			$(label).children("img").remove();
			
			li = label.parentNode;
			
			$(li).addClass("correcto").removeClass("incorrecto");
			
			img = document.createElement("img");
			$(img).attr({ src: "/images/ok.gif", alt: "valido", title: "Correcto" });
			$(img).appendTo(label);
	    };

	// Funcio a executar quan el camp es incorrecte
	    function doError(o,m) {
			label = o.parentNode;
			$(label).children("img").remove();
			
			li = label.parentNode;
			
			$(li).addClass("incorrecto").removeClass("correcto");
			
			img = document.createElement("img");
			$(img).attr({ src: "/images/ko.gif", alt: "erroneo", title: m });
			$(img).appendTo(label);
	    };

	// Funcio que permet validar un camp contra el sevidor
	    function doValidate(o) {
			$('#' + o.id + '_img').html('<img src="/images/loading.gif" border="0" style="float:left;" />');
			$.post('ajax.php', { id: o.id, value: o.value }, function(json) {
				eval("var args = " + json);
				if (args.success == true) {
					doSuccess(args);
				} else {
					doError(args,args.msg);
				}
			});
		};

	// Funcio que comproba si un camp es obligatori i en aquet cas si esta buit
	    function checkNull(o) {
		// Si es un camp obligatori
			if (o.className.indexOf('required') != -1) {
			// Comprobem si esta buit i retornem KO
				if ( (o.value == null) || (o.value.length == 0) ) {
					doError(o, 'el campo es obligatorio');
					return false;
			// Si conte dades retornem OK
				} else {
					return true;
				};
		// Si no es obligatori retornem OK
			} else {
				return true;
			};
		};
	};

// Funcions que s'executa abans de sobmetre els Formularis
	// Noticia Enviar
		function showReqNotEnviar(formData, jqForm, optNotEnviar) {
			// Comproba un a un tots els camps
			var estat = true;
			$("input[@type=text], textarea").each(function() {
				if ( $(this).validate.init(this) == false ) {
					estat = false;
				}
			});
			
			// Si tots els camps són correctes proseguim retornant True
			if (estat) {
				$("#respuesta, #respuesta2").html("Se esta enviando el email a  su destinatario").removeClass("incorrecto").addClass("correcto");
				return true;
			// Si algun falla no proseguim amb el Submit del Form
			} else {
				$("#respuesta, #respuesta2").html("Los campos no son correctos").removeClass("correcto").addClass("incorrecto");
				return false;
			}
		};
	// Afegir Comentari
		function showReqNewComment(formData, jqForm, optNewComment) {
			// Comproba un a un tots els camps
			var estat = true;
			$("input[@type=text], textarea").each(function() {
				if ( $(this).validate.init(this) == false ) {
					estat = false;
				}
			});
			
			// Si tots els camps són correctes proseguim retornant True
			if (estat) {
				$("#respuesta, #respuesta2").html("Se esta comprobando su comentario").removeClass("incorrecto").addClass("correcto");
				return true;
			// Si algun falla no proseguim amb el Submit del Form
			} else {
				$("#respuesta, #respuesta2").html("Los campos no son correctos").removeClass("correcto").addClass("incorrecto");
				return false;
			}
		};
	// Contactar
		function showReqContact(formData, jqForm, optNewComment) {
			// Comproba un a un tots els camps
			var estat = true;
			$("input[@type=text], textarea").each(function() {
				if ( $(this).validate.init(this) == false ) {
					estat = false;
				}
			});
			
			// Si tots els camps són correctes proseguim retornant True
			if (estat) {
				$("#respuesta, #respuesta2").html("Perfecto. Se han recibido correctamente sus comentarios.").removeClass("incorrecto").addClass("correcto");
				return true;
			// Si algun falla no proseguim amb el Submit del Form
			} else {
				$("#respuesta, #respuesta2").html("Los campos no son correctos").removeClass("correcto").addClass("incorrecto");
				return false;
			}
		};
	 
// Funcions que s'executa despres de sobmetre els Formularis
	// Noticia Enviar
		function showResNotEnviar(responseText, statusText)  { 
			// Em carrego la clase dels li i les icones de correctes
			$("input[@type=text], textarea").parent("label").parent("li").removeClass("correcto").children("label").children("img").remove();
		}; 
	// Afegir Comentari
		function showResNewComment(responseText, statusText)  {
		//Si a la resposta trobem un "Perfecto" vol dir que el comentari ha estat introduit
			if ( responseText.match("Perfecto") ) {
				// Em carrego la clase dels li i les icones de correctes
				$("input[@type=text], textarea").parent("label").parent("li").removeClass("correcto").children("label").children("img").remove();
			} else {
				$("#respuesta, #respuesta2").html("Los campos no son correctos").removeClass("correcto").addClass("incorrecto");
			};
		}; 
	// Contactar
		function showResContact(responseText, statusText)  {
		//Si a la resposta trobem un "Perfecto" vol dir que el comentari ha estat introduit
			if ( responseText.match("Perfecto") ) {
				// Em carrego la clase dels li i les icones de correctes
				$("input[@type=text], textarea").parent("label").parent("li").removeClass("correcto").children("label").children("img").remove();
			} else {
				$("#respuesta, #respuesta2").html("Los campos no son correctos").removeClass("correcto").addClass("incorrecto");
			};
		}; 
		

	$(document).ready(function() {
		// Afegim un input al Formulari Enviar Noticia a un Amic i al Afegir Comentari per saber que el Javascript está habilitat i amb el Nom del Submit en un ocult
			// Noticia Enviar
				form = $("#noticia_enviar");
				input = document.createElement("input");
				$(input).attr({ type: "hidden", name: "frm_js", value: "1" });
				$(input).appendTo(form);

				input = document.createElement("input");
				$(input).attr({ type: "hidden", name: "frm_submit", value: "Enviar eMail" });
				$(input).appendTo(form);
			// Afegir Comentari
				form = $("#comentario_anadir");
				input = document.createElement("input");
				$(input).attr({ type: "hidden", name: "frm_js", value: "1" });
				$(input).appendTo(form);

				input = document.createElement("input");
				$(input).attr({ type: "hidden", name: "frm_submit", value: "Enviar Comentario" });
				$(input).appendTo(form);
			// Contactar
				form = $("#contact");
				input = document.createElement("input");
				$(input).attr({ type: "hidden", name: "frm_js", value: "1" });
				$(input).appendTo(form);

				input = document.createElement("input");
				$(input).attr({ type: "hidden", name: "frm_submit", value: "Contactar" });
				$(input).appendTo(form);
		//Buidem els camps
			$("input[@type=text], textarea").clearFields();
		// Validan tots els inputs de tipus text i els textarea
			$("input[@type=text], textarea").blur(function() {
				$(this).validate.init(this);
			});
		
		// Preparem les opcions dels Formularis
			// Noticia Enviar
				var optNotEnviar = { 
					target:			"#respuesta, #respuesta2",	// Element a actualitçar amb la resposta del servidor
					beforeSubmit:	showReqNotEnviar,			// Funció a executar abans del Submit
					success:		showResNotEnviar,				// Funció a executar després del Submit
					resetForm:		true						// Reseteja tots els camps del formulari despres de submetre el formulari correctament

				// Altre opcions: 
					//url: url			// Reemplaça l'atribut 'action' del Formulari
					//type: type		// 'get' o 'post', reemplaça l'atribut 'method' del Formulari
					//dateType:  null		// 'xml', 'script', o 'json' (tipus de resposta del servidor) 
					//clearForm: true		// Buida tots els camps del formulari despres d'enviar el formulari correctament
					 
				// Le opcions de $.ajax també poden ser utilitzades, per exemple: 
					//timeout:   3000 
				}; 
			// Afegir Comentari
				var optNewComment = { 
					target:			"#respuesta, #respuesta2",	// Element a actualitçar amb la resposta del servidor
					beforeSubmit:	showReqNewComment,			// Funció a executar abans del Submit
					success:		showResNewComment,			// Funció a executar després del Submit
					resetForm:		true						// Reseteja tots els camps del formulari despres de submetre el formulari correctament
				}; 
			// Contactar
				var optContact = { 
					target:			"#respuesta, #respuesta2",	// Element a actualitçar amb la resposta del servidor
					beforeSubmit:	showReqContact,				// Funció a executar abans del Submit
					success:		showResContact,				// Funció a executar després del Submit
					resetForm:		true						// Reseteja tots els camps del formulari despres de submetre el formulari correctament
				}; 
	 
	    // Recollint l'event Submit dels Formularis
			// Noticia Enviar
			    $('#noticia_enviar').submit(function() { 
			        $(this).ajaxSubmit(optNotEnviar); 
			        // Sempre retornem false per prevenir el submit per part del navegador
			        return false; 
			    }); 
			// Afegir Comentari
			    $('#comentario_anadir').submit(function() { 
			        $(this).ajaxSubmit(optNewComment); 
			        // Sempre retornem false per prevenir el submit per part del navegador
			        return false; 
			    }); 
			// Contactar
			    $('#contact').submit(function() { 
			        $(this).ajaxSubmit(optContact); 
			        // Sempre retornem false per prevenir el submit per part del navegador
			        return false; 
			    }); 
	});