/***************************/
//@Author: Adrian "yEnS" Mato Gondelle & Ivan Guardado Castro
//@website: www.yensdesign.com
//@email: yensamg@gmail.com
//@license: Feel free to use it, but keep this credits please!					
/***************************/

$(document).ready(function(){
	//global vars
	var form = $("#new_user");
	var nome = $("#nome");
	var nomeInfo = $("#nomeInfo");
	var email = $("#email");
	var emailInfo = $("#emailInfo");
	var password = $("#password");
	var password_c = $("#password_c");
	var passwordInfo = $("#passwordInfo");
	var cpf = $("#cpf");
	var data = $("#data");
	var cep = $("#cep");
	var endereco = $("#endereco");
	var numero = $("#numero");
	var uf = $("#uf");
	var id_cidade = $("#id_cidade");
	var confirma = $("#confirma");
	var confirmaInfo = $("#confirmaInfo");
	
	//On blur
	nome.blur(validateNome);
	email.blur(validateEmail);
	password_c.blur(validatePassword);
	cep.blur(validateCep);
	endereco.blur(validateEndereco);
	numero.blur(validateNumero);
	uf.blur(validateUf);
	id_cidade.blur(validateCidade);
	cpf.blur(validateCPF);
	data.blur(validateData);
	//On key press
	nome.keyup(validateNome);
	email.keyup(validateEmail);
	password.keyup(validatePasswordM);
	cep.keyup(validateCep);
	endereco.keyup(validateEndereco);
	numero.keyup(validateNumero);
	confirma.click(validateConfirma);
	//On Submitting
	form.submit(function(){
		if(validateNome() & validateEmail() & validatePassword() & validateCPF() & validateData() & validateCep() & validateEndereco() & validateNumero() & validateUf() & validateCidade() & validateConfirma() )
			return true
		else
			return false;
	});
	
	//validation functions
	function validateNome(){
		//if it's NOT valid
		if(nome.val().length < 3){
			nome.addClass("error");
			nomeInfo.text("Nome incompleto, informe seu nome");
			nomeInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			nome.removeClass("error");
			nomeInfo.text("OK");
			nomeInfo.removeClass("error");
			return true;
		}
	}
	function validateEmail(){
		//testing regular expression
		var a = $("#email").val();
		var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
		//if it's valid email
		if(filter.test(a)){
			email.removeClass("error");
			emailInfo.text("OK");
			emailInfo.removeClass("error");
			return true;
		}
		//if it's NOT valid
		else{
			email.addClass("error");
			emailInfo.text("Por favor, digite um email válido");
			emailInfo.addClass("error");
			return false;
		}
	}
	function validatePasswordM(){
		if(password.val().length > 4){
			password.removeClass("error");
			passwordInfo.text("Confirme a senha agora");
			passwordInfo.removeClass("error");
			return true;
		}
		//if it's NOT valid
		else{
			password.addClass("error");
			passwordInfo.text("A senha deve ter no mínimo 4 caracteres");
			passwordInfo.addClass("error");
			return false;
		}
	}
	function validatePassword(){
		//testing regular expression
		var a = $("#password").val();
		var c = $("#password_c").val();
		//if it's valid email
		if(a == c & password.val().length > 3){
			password.removeClass("error");
			passwordInfo.text("OK");
			passwordInfo.removeClass("error");
			return true;
		}
		//if it's NOT valid
		else{
			password.addClass("error");
			passwordInfo.text("Esta senha não é igual a confirmação.");
			passwordInfo.addClass("error");
			return false;
		}
	}
	function validateCPF(){
		//it's NOT valid
		if(cpf.val().length < 9){
			cpf.addClass("error");
			return false;
		}
		//it's valid
		else{			
			cpf.removeClass("error");
			return true;
		}
	}
	function validateData(){
		//it's NOT valid
		if(data.val().length < 8){
			data.addClass("error");
			return false;
		}
		//it's valid
		else{			
			data.removeClass("error");
			return true;
		}
	}
	function validateCep(){
		//it's NOT valid
		if(cep.val().length < 8){
			cep.addClass("error");
			return false;
		}
		//it's valid
		else{			
			cep.removeClass("error");
			return true;
		}
	}
	function validateEndereco(){
		//it's NOT valid
		if(endereco.val().length < 2){
			endereco.addClass("error");
			return false;
		}
		//it's valid
		else{			
			endereco.removeClass("error");
			return true;
		}
	}
	function validateNumero(){
		//it's NOT valid
		if(numero.val().length < 1){
			numero.addClass("error");
			return false;
		}
		//it's valid
		else{			
			numero.removeClass("error");
			return true;
		}
	}
	function validateUf(){
		if(uf.val().length == 0){
			uf.addClass("error");
			return false;
		}
		else{			
			uf.removeClass("error");
			return true;
		}
	}
	function validateCidade(){
		//it's NOT valid
		if(id_cidade.val().length == 0){
			id_cidade.addClass("error");
			return false;
		}
		else{			
			id_cidade.removeClass("error");
			return true;
		}
	}
	function validateConfirma(){
		//it's NOT valid
		if(confirma.attr('checked') ){
			confirma.removeClass("error");
			confirmaInfo.text(" ");
			confirmaInfo.removeClass("error");
			return true;
		}
		else{			
			confirma.addClass("error");
			confirmaInfo.text("Você aceita o contrato?");
			confirmaInfo.addClass("error");
			return false;
		}
	}
});