$().ready(function() {
	var formulario = '#form-cliente';
	var classeErro = 'Erro';
	var carregando = '<img src="./img/layout/carregando.gif" alt="carregando..." />';
	
	// AUTO-FOCUS NO PRIMEIRO CAMPO DO FORMULARIO
	$('#cad-nome').focus();
	
	// METODO PARTICULAR PARA VALIDACAO DOS TERMOS DE USO
	$.validator.addMethod('aceitoTermos', function(value,element) {
		return ($('#cad-termos:checked').length == '1');
	});

	// METODO PARTICULAR PARA VALIDACAO DOS TERMOS DE USO
	$.validator.addMethod('notEqualTo', function(value,element,params) {
		return (value != $(params).val());
	});

	// METODO PARA VALIDAR CPF
	$.validator.addMethod("verificaCPF", function(value, element) {
		value = value.replace('.','');
		value = value.replace('.','');
		cpf = value.replace('-','');
		while(cpf.length < 11) cpf = "0"+ cpf;
		var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
		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]) || cpf.match(expReg)) return false;
		return true;
	}, "CPF inválido.");

	$(formulario).validate({
		rules: {
			nome: {required:true, minlength:2},
			sobrenome: {required:true, minlength:2},
			email: {required:true, email:true, remote:{url:'ajax/email-disponivel', type:'post'}},
			confirmarEmail: {required:true, email:true, equalTo:'#cad-email'},
			emailSecundario: {email:true, remote:{url:'ajax/email-disponivel', type:'post'}, notEqualTo: '#cad-email'},
			confirmarEmailSecundario: {email:true, equalTo:'#cad-email-2'},
			telefoneResidencialDDD: {required:true, minlength:2, digits:true},
			telefoneResidencialNumero: {required:true, minlength:8, digits:true},
			telefoneComercialDDD: {minlength:2, digits:true},
			telefoneComercialNumero: {required:'#cad-ddd-2:filled', minlength:8, digits:true},
			telefoneCelularDDD: {required:'#cad-fone-3:filled', minlength:2, digits:true},
			telefoneCelularNumero: {required:'#cad-ddd-3:filled', minlength:8, digits:true},
			telefoneComercialNumero: {minlength:8, digits:true},
			telefoneCelularDDD: {minlength:2, digits:true},
			telefoneCelularNumero: {minlength:8, digits:true},
			cpf: {required:true, digits:true, minlength:11, verificaCPF: true, remote:{url:'ajax/valida-cpf', type:'post'}},
			nascimentoDia: {required:true},
			nascimentoMes: {required:true},
			nascimentoAno: {required:true},
			enderecoLogradouro: {required:true, minlength:3},
			enderecoNumero: 'required',
			enderecoBairro: {required:true, minlength:2},
			enderecoEstado: 'required',
			enderecoCidade: 'required',
			enderecoPais: 'required',
			enderecoCEP: {required:true, digits:true, minlength:8}
		},
		messages: {
			nome: 'Obrigatório',
			sobrenome: 'Obrigatório',
			email: {required: 'Informe seu email', email: 'Email inválido', remote: 'E-mail já cadastrado'},
			confirmarEmail: {required: 'Confirme', email: 'Email inválido', equalTo: 'Informe o mesmo email'},
			emailSecundario: {email: 'Email inválido', remote: 'Já cadastrado', notEqualTo: 'Informe outro e-mail'},
			confirmarEmailSecundario: {required: 'Confirme', email: 'Email inválido', equalTo: 'Novamente'},
			telefoneResidencialDDD: '',
			telefoneResidencialNumero: '',
			telefoneComercialDDD: '',
			telefoneComercialNumero: '',
			telefoneCelularDDD: '',
			telefoneCelularNumero: '',
			cpf: {required:'Obrigatório', digits:'Somente números', minlength:'CPF Inválido', verificaCPF:'CPF Inválido', remote:'CPF já cadastrado'},
			nascimentoDia: 'Data inválida',
			nascimentoMes: 'Data inválida',
			nascimentoAno: 'Date inválida',
			enderecoLogradouro: {required:'Informe seu endereço', minlength:'Endereço inválido'},
			enderecoNumero: '',
			enderecoBairro: {required:'Informe seu bairro', minlength:'Bairro inválido'},
			enderecoEstado: 'Selecione uma opção',
			enderecoCidade: 'Selecione uma opção',
			enderecoPais: 'Selecione seu País',
			enderecoCEP: {required:'Informe seu CEP', digits:'Apenas números', minlength:'CEP inválido'}
		},
		highlight: function(element, errorClass){
			if(element.name != 'aceitoTermos'){
				if(element.type != 'select-one'){
					$(element).addClass(classeErro);
				}
				$(element).prev('label').addClass(classeErro);
			}
		},
		unhighlight: function(element, errorClass){
			$(element).removeClass(classeErro);
			$(element).prev('label').removeClass(classeErro);
		},
		errorPlacement: function(error, element){
			if(element.attr('name') == 'aceitoTermos'){
				error.appendTo(element.next());
			}else{
				error.appendTo(element.prev('label'));
			}
		},
		errorElement: 'strong',
		submitHandler: function(form){
			// ADICIONA O LOADING
			$('#carregando').append(carregando);
			// DESABILITA O BOTAO
			$('#form-cliente button').attr('disabled', true);
			$('#box-aviso-lista-negra-login').hide();

			$(form).ajaxSubmit({
				dataType: 'json',
				success: function(data){
					$('#form-cliente button').attr('disabled', false);
					if(data.resposta == 'concluido'){
						// alert('finalizar-compra');
						window.location.href='./finalizar-compra';
					}else{
						// REMOVE O LOADING
						$('#carregando').empty();
						// HABILITA O BOTAO
						$('#form-cliente button').attr('disabled', false);
						$('#box-aviso-lista-negra-login').show();
					}
				}
			});
		}
			
	});
	
	// ADICIONA REGRAS CASO NAO ESTEJA LOGADO
	if(usuarioLogado != true){

		$.validator.addMethod('aceitoTermos', function(value,element) {
			return ($('#cad-termos:checked').length == '1') ? true : false;
		});

		$('#cad-senha').rules('add',{
			required: true,
			minlength: 6,
			messages: {
				required: 'Informe uma senha',
				minlength: jQuery.format('Mínimo de {0} caracteres')
			}
		});

		$('#cad-conf-senha').rules('add', {
			required: true,
			minlength: 6,
			equalTo:'#cad-senha',
			messages: {
				required: 'Repita a senha',
				minlength: 'Repita a senha',
				equalTo: 'Senha diferente'
			}
		});
		
		$('#cad-termos').rules('add',{
			aceitoTermos: true,
			messages: {
				aceitoTermos: 'Obrigatório'
			}
		});
	}
	$('#cad-uf').change(function(){
		var e_id = $(this).val();
		$.post('./ajax',{
				estado: e_id, acao:'cidades'
			},function(dados){
				$('#cad-cidade').html(dados);
		});
	});
	$(formulario).submit(function(e){
		e.preventDefault();
	});
});


