// create closure
(function($){
    // plugin definition
    flag = false;
    $.fn.validador = function(options){
        var opts = $.extend({}, $.fn.validador.defaults, options);
        return this.each(function(){
            var $this = $(this);
            var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
            
            if (this.nodeName != "FORM") {
                throw (this + " no es un formulario");
            }
            
            
            
            
            
            
            
            
            $this.find("[type=submit]").click(function(){
                var errores = [];
                for (x in o.rules) {
                
                    var aux = eval("o.rules." + x);
                    for (y in aux) {
                    
                        var regla = y;
                        
                        var valor = "";
                        if ($("#" + x).attr("type") == "checkbox" || $("#" + x).attr("type") == "radio") {
                            $("#" + x).attr("checked") ? valor = true : valor = "";
                            
                        }
                        else {
                            valor = $("#" + x).val();
                        }
                        var aux2 = eval("o.method." + regla + "('" + valor + "','"+eval("o.rules." + x + "." + y)+"')");
                        if (!aux2) {
                            error = []
                            error["id"] = x;
                            var aux3 = eval("o.messages." + x + "." + y)
                            error["messages"] = aux3;
                            errores.push(error);
                            break;
                        }
                    }
                    
                    
                    
                }
                
                
                if (errores.length > 0) {
                    mostrarErrores(errores, o.errorContainer, o.insertBefore, $this);
                    return false;
                    
                }
                {
                    return true
                }
                
            });
            
        })
        
        
    };
    // private function for debugging
    
    function mostrarErrores(errores, container, insertBefore, form){
    
        if (form.find("." + container).length > 0) {
        
            form.find("." + container).html("");
        }
        else {
            $(insertBefore, $(form)).before("<ul class='" + container + "'></ul>");
        }
        for (x in errores) {
            var item = $("<li>" + errores[x]["messages"] + "</li>");
            form.find("." + container).append(item);
        }
        
        //		alert(container);
    
    }
    
    
    $.fn.validador.defaults = {
        method: {
            email: function(value){
                return (/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value));
            },
            required: function(value){
                return $.trim(value).length > 0;
            },
			min: function(value,min){
				return $.trim(value).length>min;
			}
        },
        messages: {}
    };
    
    
    // end of closure
})(jQuery);


$(document).ready(function(){
    var comentario = $(".comentarioForm").validador({
        errorContainer: "msgError",
        insertBefore: "ul:first",
        rules: {
            titulo: {
                required: true
            },
            comentario: {
                required: true
            }
        },
        messages: {
            titulo: {
                required: literal["comentarioForm"][0]
            },
            comentario: {
                required: literal["comentarioForm"][1]
            }
        }
    });
    
    var profile = $("#profile").validador({
        errorContainer: "msgError",
        insertBefore: "ul:first",
        rules: {
            nombre: {
                required: true
            },
            apellidos: {
                required: true
            },
            email: {
                required: true,
                email: true
            },
            usuario: {
                required: true
            },
            password: {
                required: true,
				min: 6
            },
            alias: {
                required: true
            },
            condiciones: {
                required: true
            }
        },
        messages: {
            nombre: {
                required: literal["register"][0]
            },
            apellidos: {
                required: literal["register"][1]
            },
            email: {
                required: literal["register"][2],
                email: literal["register"][2]
            },
            usuario: {
                required: literal["register"][3]
            },
            password: {
                required: literal["register"][5],
				min: literal["register"][6]
            },
            alias: {
                required: literal["register"][7]
            },
            condiciones: {
                required: literal["register"][8]
            }
        }
    });
    
    var accesoForm = $("#accesoForm").validador({
        errorContainer: "msgError",
        insertBefore: "ul:first",
        rules: {
            usuario: {
                required: true
            },
            pass: {
                required: true
            }
        },
        messages: {
            usuario: {
                required: literal["accesoForm"][0]
            },
            pass: {
                required: literal["accesoForm"][1]
            }
        }
    });
    
    var nuevoTemaForm = $("#nuevoTemaForm").validador({
        errorContainer: "msgError",
        insertBefore: "ul:first",
        rules:{
			'grupo':{
				required: true
			},
			'titulo':{
				required:true
			},
			'texto':{
				required: true
			}				
		},
		messages:{
			'grupo':{
				required: literal["nuevoTemaForm"][2]
			},
			'titulo':{
				required: literal["nuevoTemaForm"][0]
			},
			'texto':{
				required: literal["nuevoTemaForm"][1]
			}
		}
    });
    
    var loginUser = $("#loginUser").validador({
        errorContainer: "msgError",
        insertBefore: "ul:first",
        rules: {
            user: {
                required: true
            },
            pass: {
                required: true
            }
        },
        messages: {
            user: {
                required: literal["loginUser"][0]
            },
            pass: {
                required: literal["loginUser"][1]
            }
        }
    });
	
	//validacion password
	
	var password = $("form#password").validador({
        errorContainer: "msgError",
        insertBefore: "ul:first",
        rules: {
            email: {
                required: true,
                email: true
            }
        },
        messages: {            
            email: {
                required: literal["password"][0],
                email: literal["password"][1]
            }
        }
	
    });
	//fin validacion password
    var register = $("form#register").validador({
        errorContainer: "msgError",
        insertBefore: "ul:first",
        rules: {
            nombre: {
                required: true
            },
            apellidos: {
                required: true
            },
            email: {
                required: true,
                email: true
            },
            usuario: {
                required: true
            },
            password: {
                required: true,
				min: 5
            },
            alias: {
                required: true
            },
            condiciones: {
                required: true
            },
			seguro:{
				required: true
			}
        },
        messages: {
            nombre: {
                required: literal["register"][0]
            },
            apellidos: {
                required: literal["register"][1]
            },
            email: {
                required: literal["register"][11],
                email: literal["register"][2]
            },
            usuario: {
                required: literal["register"][3]
            },
            password: {
                required: literal["register"][5],
				min: literal["register"][6]
            },
            alias: {
                required: literal["register"][7]
            },
            condiciones: {
                required: literal["register"][8]
            },
			seguro:{
				required: literal["register"][10]
			}	
        }
	
    });
    
    var newsletterForm = $("#newsletterForm").validador({
        errorContainer: "msgError",
        insertBefore: "ul:first",
        rules: {
            email: {
                required: true,
                email: true
            }
        },
        messages: {
            email: {
                required: literal["newsletterForm"][0],
                email: literal["newsletterForm"][1]
            }
        }
    });
	
	var contacte = $("#contacte").validador({
        errorContainer: "msgError",
        insertBefore: "ul:first",
		rules:{
			email:{
				required:true,
				email: true
			},
			comentarios:{
				required: true
			},
			aceptoCondiciones:{
				required: true
			}
		},
		messages:{
			email:{
				required:literal["contactenos"][0],
				email:literal["contactenos"][1]
			},
			comentarios:{
				required:literal["contactenos"][2]
			},
			aceptoCondiciones:{
				required: literal["contactenos"][3]
			}		
		}
		
		});
	
    
	var newsletter1 = $("#formNewsletter").validador({
        errorContainer: "msgError",
        insertBefore: "ul:first",
        rules: {
            mail1: {
                required: true,
				email: true
            },
            mail2: {
                required: true,
				email: true
            }
        },
        messages: {
            mail1: {
                required: literal["newsletter"][0],
				email: literal["newsletter"][2]
            },
            mail2: {
                required: literal["newsletter"][1],
				email: literal["newsletter"][3]
            }
        }
    });

	var newsletter2 = $("#formNewsletter2").validador({
        errorContainer: "msgError",
        insertBefore: "ul:first",
        rules: {
            mail1: {
                required: true,
				email:true
            }
        },
        messages: {
            mail1: {
                required: literal["newsletter2"][0],
				email: literal["newsletter2"][1]
            }
        }
    });

});



