$( function() {
	$("form").submit(
			function() {
				var retorno = true;
				$(this).find(".obrigatorio").each(
						function() {
							if ($(this).hasClass("uf")) {
								if ($(this).val() == ""
										|| $(this).val().length < 2) {
									$(this).css(TARGET_ERRO, BORDA_ERRO);
									retorno = false;
								}
							} else if ($(this).hasClass("codigo")) {
								if ($(this).val() == ""
									|| $(this).val().length != 7) {
									$(this).css(TARGET_ERRO, BORDA_ERRO);
									retorno = false;
								}
							} else if ($(this).hasClass("telefone")) {
								if ($(this).val() == ""
										|| $(this).val().length < 13) {
									$(this).css(TARGET_ERRO, BORDA_ERRO);
									retorno = false;
								}
							} else if ($(this).hasClass("cep")) {
								if ($(this).val() == ""
										|| $(this).val().length < 10) {
									$(this).css(TARGET_ERRO, BORDA_ERRO);
									retorno = false;
								}
							} else if ($(this).hasClass("cpf")) {
								if ($(this).val() == ""
										|| $(this).val().length < 14
										|| !validarCPF($(this).val())) {
									$(this).css(TARGET_ERRO, BORDA_ERRO);
									retorno = false;
								}
							} else if ($(this).val() == ""
									|| $(this).val() == "0" || $(this).val() == $(this).attr("ref")) {
								$(this).css(TARGET_ERRO, BORDA_ERRO);
								retorno = false;
							}
						});
				return retorno;
			});

	$("input[type=text]").keypress( function() {
		if($(this).css(TARGET_ERRO) == BORDA_ERRO)
			$(this).css(TARGET_ERRO, BORDA_INPUT);
	});
	
	$("textarea").keypress( function() {
		if($(this).css(TARGET_ERRO) == BORDA_ERRO)
			$(this).css(TARGET_ERRO, BORDA_INPUT);
	});

	$(".numero").keydown( function(event) {
		return somenteNumero(event);
	});

	$(".mascarar").keypress( function(event) {
		mascarar($(this), $(this).attr("rel"), event);
	});

	$(".cpf").ready( function() {
		$(".cpf").attr("maxlength", 14);
		$(".cpf").bind("keydown", function(event) {
			return somenteNumero(event);
		});
		$(".cpf").bind("keypress", function(event) {
			mascarar($(this), "###.###.###-##", event);
		});
	});

	$(".telefone").ready( function() {
		$(".telefone").attr("maxlength", 13);
		$(".telefone").bind("keydown", function(event) {
			return somenteNumero(event);
		});
		$(".telefone").bind("keypress", function(event) {
			mascarar($(this), "(##)####-####", event);
		});
	});

	$(".cep").ready( function() {
		$(".cep").attr("maxlength", 10);
		$(".cep").bind("keydown", function(event) {
			return somenteNumero(event);
		});
		$(".cep").bind("keypress", function(event) {
			mascarar($(this), "##.###-###", event);
		});
	});

	$(".dataNascimento").ready( function() {
		$(".dataNascimento").attr("maxlength", 10);
		$(".dataNascimento").bind("keydown", function(event) {
			return somenteNumero(event);
		});
		$(".dataNascimento").bind("keypress", function(event) {
			mascarar($(this), "##/##/####", event);
		});
	});
});

function mascarar(campo, mascara, event) {
	var posicao = campo.val().length;
	var mascara = mascara;
	var usarMascara = true;
	var code = event.which;
	if (code == 8 || code == 9 || code == 46 || (code >= 33 && code <= 46))
		usarMascara = false;
	if (usarMascara) {
		if (mascara.substring(posicao, posicao + 1) != "#") {
			campo.val(campo.val() + mascara.substring(posicao, posicao + 1));
		}
	}
}

function somenteNumero(event) {
	var code = event.which;
	if (code == 8 || code == 9 || code == 46 || (code >= 33 && code <= 46)
			|| (code >= 48 && code <= 57) || (code >= 96 && code <= 105))
		return true;
	else
		return false;
}

function validarCPF(cpf) {
	cpf = cpf.replace(".", "").replace(".", "").replace("-", "");
	erro = new String;
	if (cpf.length < 11)
		return false;
	var nonNumbers = /\D/;
	if (nonNumbers.test(cpf))
		erro += "A verificacao de CPF suporta apenas numeros! \n\n";
	if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222"
			|| cpf == "33333333333" || cpf == "44444444444"
			|| cpf == "55555555555" || cpf == "66666666666"
			|| cpf == "77777777777" || cpf == "88888888888"
			|| cpf == "99999999999") {
		return false;
	}
	var a = [];
	var b = new Number;
	var c = 11;
	for (i = 0; i < 11; i++) {
		a[i] = cpf.charAt(i);
		if (i < 9)
			b += (a[i] * --c);
	}
	if ((x = b % 11) < 2) {
		a[9] = 0
	} else {
		a[9] = 11 - x
	}
	b = 0;
	c = 11;
	for (y = 0; y < 10; y++)
		b += (a[y] * c--);
	if ((x = b % 11) < 2) {
		a[10] = 0;
	} else {
		a[10] = 11 - x;
	}
	if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])) {
		return false;
	}
	return true;
}

function checkMail(mail) {
	var er = new RegExp(
			/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
	if (typeof (mail) == "string") {
		if (er.test(mail)) {
			return true;
		}
	} else if (typeof (mail) == "object") {
		if (er.test(mail.value)) {
			return true;
		}
	} else {
		return false;
	}
}

function limparCampo(campo, valor) {
	if(campo.value == valor)
		campo.value = "";
}

function preencherCampo(campo, valor) {
	if(campo.value == "")
		campo.value = valor;
}

function limitarCampo(campo, tamanho, event) {
	var code = event.which;
	if (code == 8 || code == 9 || code == 46 || (code >= 33 && code <= 46))
		return true;
	if(campo.value.length >= tamanho)
		return false;
	return true;
}

function definirContador(campo, tamanho) {
	var divContador = document.getElementById("contador");
	divContador.innerHTML = tamanho - campo.value.length;
}

var TARGET_ERRO = "border";

var COR_ERRO = "#5e0003";
var COR_INPUT = "#000000";

var BORDA_INPUT = "1px solid rgb(44, 44, 44)";
var BORDA_ERRO = "1px solid rgb(94, 0, 3)";
