//##################
// Masking Script
//##################
$(document).ready(function() {
	//Masking for Pessoa Fisica
	$("#nscPessoaFisica").mask("99-99-9999");
	$("#cpfPessoaFisica").mask("999.999.999-99");
	
	//Masking for Pessoa Juridica
	$("#cpjEnderecoPessoaJuridica").mask("99.999.999/9999-99");
	
	//Client Masking
	$("#tl1Cliente").mask("0xx99 9999-9999");
	$("#tl2Cliente").mask("0xx99 9999-9999");
	$("#celCliente").mask("0xx99 9999-9999");
	
	//Client Masking
	$("#cepEndereco").mask("99999-999");
	
	//Código Promocional
	$("#codPromocao").mask("SA-999999");
});
//##################
//##################


//##################
// Validation Script
//##################
$(document).ready(function() {
	// validate signup form on keyup and submit
	var validator = $("#frmCadastroCliente").validate({
			onkeyup: false,
			onfocusout: false,
			onfocus: false,
			
			rules: {
				//Rules for Pessoa Física
				nscPessoaFisica: { required: "#rdoPessoaFisica:checked" },
				sexPessoaFisica: { required: "#rdoPessoaFisica:checked" },
				cpfPessoaFisica: { required: "#rdoPessoaFisica:checked", minlength: 14 },
				
				//Rules for Pessoa Juridica
				rscPessoaJuridica: { required: "#rdoPessoaJuridica:checked" },
				cpjPessoaJuridica: { required: "#rdoPessoaJuridica:checked", minlength: 18 },
				
				//Rules for Clientes
				nomCliente: { required: true },
				emlCliente: { required: true, email: true },
				
				//Rules for Endereço
				ruaEndereco: { required: true },
				nroEndereco: { required: true },
				brrEndereco: { required: true },
				cepEndereco: { required: true, minlength: 9 },
				
				//Rules for login info
				pswCliente: {	required: true,	minlength: 8 },
				pswClienteConfirmacao: { required: true, equalTo: "#pswCliente" },
				codCaptcha: { required: true, remote: "../lib/captcha/securimage_validate.php?codCaptcha=" + $("#codCaptcha").val() }
			},
			
			//Error messages
			messages: {
				//Messages for Pessoa Física
				nscPessoaFisica: { required: "Informe a data do nascimento" },
				sexPessoaFisica: { required: "Escolha o sexo" },
				cpfPessoaFisica: { required: "Informe o CPF", minlength: jQuery.format("O CPF tem que ter {0} dígitos") },
				
				//Messages for Pessoa Juridica
				rscPessoaJuridica: { required: "Informe a razão social da empresa" },
				cpjPessoaJuridica: { required: "Informe o CNPJ", minlength: jQuery.format("O CNPJ tem que ter {0} dígitos") },
				
				//Messages for Clientes
				nomCliente: { required: "Informe o nome" },
				emlCliente: {	required: "Informe o e-mail", email: "Informe um e-mail válido" },
				
				//Messages for Endereço
				ruaEndereco: { required: "Informe a rua" },
				nroEndereco: { required: "Informe o número" },
				brrEndereco: { required: "Informe o bairro" },
				cepEndereco: { required: "Informe o CEP", minlength: jQuery.format("O CEP tem que ter no mínimo {0} dígitos") },
				
				//Messages for login info
				pswCliente: {	required: "Informe uma senha", minlength: jQuery.format("A senha tem que ter no mínimo {0} dígitos") },
				pswClienteConfirmacao: { required: "Confirme a sua senha", equalTo: "Senha inválida" },
				codCaptcha: { required: "Código inválido", remote: "Código inválido" }
			},
			
			//Where the errors are going to be placed
			//in the html
			errorPlacement: function(error, element) {
				
			},
			
			highlight: function(element, errorClass) {
				var aErrorMessage = validator.customMessage(element.name, "required");

				$(element).attr("title", aErrorMessage);
				setTooltip(element);
				
				$(element).addClass(errorClass);
			},
			
			unhighlight: function(element, errorClass) {
				$(element).attr("title", "");
				setTooltip(element);
				
				$(element).removeClass(errorClass);
			},

			
			//Before submiting, check the non-standard rules
			submitHandler: function(form) {
				//Verifica CPF e CNPJ
				if ($("#rdoPessoaFisica:checked").length > 0 && !$("#cpfPessoaFisica").val().isCPF()) {
					$("#cpfPessoaFisica").attr("title", "CPF inválido");
					setTooltip($("#cpfPessoaFisica"));
				
					$("#cpfPessoaFisica").addClass("error");
					$("#cpfPessoaFisica").focus();
					
					alert("Existem campos inválidos no formulário!");
					
					return false;
				}
				else if ($("#rdoPessoaJuridica:checked").length > 0 && !$("#cpjEnderecoPessoaJuridica").val().isCNPJ()) {
					$("#cpjEnderecoPessoaJuridica").attr("title", "CNPJ inválido");
					setTooltip($("#cpjEnderecoPessoaJuridica"));
				
					$("#cpjEnderecoPessoaJuridica").addClass("error");
					$("#cpjEnderecoPessoaJuridica").focus();
					
					alert("Existem campos inválidos no formulário!");
					
					return false;
				}

				//Verifica a aceitação dos termos
				var aAceitoChecked = $("#chkAceito").attr("checked");
				
				if (!aAceitoChecked) {
					alert("Você deve ler e aceitar os Termos de Uso para finalizar o cadastro!");
					$("#codCaptcha").val("");
				}
				else {
					//Pega as informações
					if (aPessoaEscolhida == "pf") {
						var nscPessoaFisica = $("#nscPessoaFisica").val();
						var sexPessoaFisica = ($("#sexPessoaFisicaMasculino:checked").length > 0) ? "m" : "f";
						var regPessoaFisica = $("#regPessoaFisica").val();
						var cpfPessoaFisica = $("#cpfPessoaFisica").val();
					}
					else if (aPessoaEscolhida == "pj") {
						var rscPessoaJuridica = $("#rscPessoaJuridica").val();
						var nftPessoaJuridica = $("#nftPessoaJuridica").val();
						var cpjEnderecoPessoaJuridica = $("#cpjEnderecoPessoaJuridica").val();
					}
					
					var nomCliente = $("#nomCliente").val();
					var tl1Cliente = $("#tl1Cliente").val();
					var tl2Cliente = $("#tl2Cliente").val();
					var celCliente = $("#celCliente").val();
					var emlCliente = $("#emlCliente").val();
					
					var ruaEndereco = $("#ruaEndereco").val();
					var nroEndereco = $("#nroEndereco").val();
					var cmpEndereco = $("#cmpEndereco").val();
					var brrEndereco = $("#brrEndereco").val();
					var codEstado = $("#codEstado").val();
					var codCidade = $("#codCidade").val();
					var cepEndereco = $("#cepEndereco").val();
					
					var pswCliente = $("#pswCliente").val();
					
					var codPromocao = $("#codPromocao").val();
					
					//Faz POST via Ajax
					var aVars = new Object();
					
					if (aPessoaEscolhida == "pf") {
						aVars.nscPessoaFisica = nscPessoaFisica;
						aVars.sexPessoaFisica = sexPessoaFisica;
						aVars.regPessoaFisica = regPessoaFisica;
						aVars.cpfPessoaFisica = cpfPessoaFisica;
					}
					else if (aPessoaEscolhida == "pj") {
						aVars.rscPessoaJuridica = rscPessoaJuridica;
						aVars.nftPessoaJuridica = nftPessoaJuridica;
						aVars.cpjEnderecoPessoaJuridica = cpjEnderecoPessoaJuridica;
					}
					
					aVars.nomCliente = nomCliente;
					aVars.tl1Cliente = tl1Cliente;
					aVars.tl2Cliente = tl2Cliente;
					aVars.celCliente = celCliente;
					aVars.emlCliente = emlCliente;
					
					aVars.ruaEndereco = ruaEndereco;
					aVars.nroEndereco = nroEndereco;
					aVars.cmpEndereco = cmpEndereco;
					aVars.brrEndereco = brrEndereco;
					aVars.codEstado = codEstado;
					aVars.codCidade = codCidade;
					aVars.cepEndereco = cepEndereco;
					
					aVars.pswCliente = pswCliente;
					
					aVars.codPromocao = codPromocao;
					
					aVars.tpoPessoa = aPessoaEscolhida;
					
					showQuickLoading("#btFinalizarCadastro", "efetuando cadastro");
					
					$.post(
						"../lib/ajax/action.gcl_clientes.adicionar.php",
						aVars,
						function(data) {
							switch (data["retorno"]) {
								case 0: alert("Ocorreu um erro desconhecido!");
												
												hideQuickLoading();
												break;
								
								case 1: window.location.href = "cliente.cadastrar.php?a=1";
												break;
								
								case 2: alert("O CPF informado já está cadastrado!");
												$("#cpfPessoaFisica").attr("title", "CPF já cadastrado");
												setTooltip($("#cpfPessoaFisica"));
											
												$("#cpfPessoaFisica").addClass("error");
												$("#cpfPessoaFisica").focus();
												
												hideQuickLoading();
												break;
												
								case 3: alert("O CNPJ informado já está cadastrado!");
												$("#cpjEnderecoPessoaJuridica").attr("title", "CNPJ já cadastrado");
												setTooltip($("#cpjEnderecoPessoaJuridica"));
											
												$("#cpjEnderecoPessoaJuridica").addClass("error");
												$("#cpjEnderecoPessoaJuridica").focus();
												
												hideQuickLoading();
												break;
								
								case 4: alert("O E-mail informado já está cadastrado!");
												setTooltip($("#emlCliente"));
											
												$("#emlCliente").addClass("error");
												$("#emlCliente").focus();
												
												hideQuickLoading();
												break;
							}
						},
						"json"
					);
				}
				
				return false;
			}
	});
	
	$("#frmCadastroCliente").bind("invalid-form.validate", function() {
		$("#imageCaptcha").attr("src", "../lib/captcha/securimage_show.php?sid=" + Math.random());
		$("#codCaptcha").val("");
		alert("Existem campos inválidos no formulário!");
	});
	
});
//##################
//##################

var aPessoaEscolhida = "pf";

function trocaPessoa() {
	var speed = 150;
	var aNewPessoa = ($("[name=rdoPessoa]:checked").attr("id") == "rdoPessoaFisica") ? "pf" : "pj";
	
	aPessoaEscolhida = aNewPessoa;
	
	if (aNewPessoa == "pf" && $("#boxPessoaJuridica:visible").length > 0) {
		$("#boxPessoaJuridica").hide();
		
		$("#nscPessoaFisica").val("");
		$("#sexPessoaFisicaMasculino").attr("checked", true);
		$("#regPessoaFisica").val("");
		$("#cpfPessoaFisica").val("");
		
		$("#boxPessoaFisica").show();
	}
	else if (aNewPessoa == "pj" && $("#boxPessoaFisica:visible").length > 0) {
		$("#boxPessoaFisica").hide();
		$("#rscPessoaJuridica").val("");
		
		$("#nftPessoaJuridica").val("");
		$("#cpjPessoaJuridica").val("");
		
		$("#boxPessoaJuridica").show()
	}
}
