//todas as acoes padroes do sistema
$(function(){
	$(this).FocusOnFirst();
	$("#form_validate").validate({
		rules: {
			nova_senha: {
				required: true,
				minlength: 5
			},
			confirmaSenha: {
				required: true,
				minlength: 5,
				equalTo: "#nova_senha"
			},
			"cliente.cnpj": {
				cnpj: true
			},
			"cliente.cpf": {
				cpf: true
			}
			
		},
		messages: {
			senha: {
				required: "Por favor, informe uma senha.",
				minlength: "Sua senha deve ter no mínimo 6 caracteres."
			},
			confirmaSenha: {
				required: "Por favor, confirme sua senha.",
				minlength: "Sua senha deve ter no mínimo 6 caracteres.",
				equalTo: "A confirmação de senha deve ser igual ao campo senha."
			},
			"cliente.politicaPrivacidade": {
				required: "Você precisa aceitar a Política de Privacidade para continuar."
			}
		}
	});
	
	$("#telefoneFixo").mask("(99) 9999-9999");
   	$("#telefoneCelular").mask("(99) 9999-9999");
   	$("#cep").mask("99999-999");
   	$("#cpf").mask("999.999.999-99");
   	$("#cnpj").mask("99.999.999/9999-99");
    $("#rgDataEmissao").mask("99/99/9999");
    $("#dataInicio").mask("99/99/9999");
   	$("#dataNascimento").mask("99/99/9999");
	$("#dataIni").mask("99/99/9999");
   	$("#dataFim").mask("99/99/9999");
   	
	$("input[name='cliente.tipoPessoa']").click(function(){
		var object = $("#form_validate :checked");

		if(object.val() == "F") {
			//exibe dados de PF
			$("#dadosPF").attr("style","");
			//adiciona campos requeridos de PF
			$("#nome").attr("class","required");
			$("#cpf").attr("class","required");
			$("#rg").attr("class","required");
			$("#rgDataEmissao").attr("class","required");
			$("#rgOrgaoEmissor").attr("class","required");
			$("#rgEstadoEmissor").attr("class","required");
			$("#sexo").attr("class","required");
			$("#dataNascimento").attr("class","required");
			//Adiciona os Names corretos no Cliente PF
			$("#nome").attr("name","cliente.nome");
			$("#cpf").attr("name","cliente.cpf");
			$("#rg").attr("name","cliente.rg");
			$("#rgDataEmissao").attr("name","cliente.rgDataEmissao");
			$("#rgOrgaoEmissor").attr("name","cliente.rgOrgaoEmissor");
			$("#rgEstadoEmissor").attr("name","cliente.rgEstadoEmissor");
			$("#sexo").attr("name","cliente.sexo");
			$("#dataNascimento").attr("name","cliente.dataNascimento");
			//remove os disabled
			$("#nome").attr("disabled","");
			$("#cpf").attr("disabled","");
			$("#rg").attr("disabled","");
			$("#rgDataEmissao").attr("disabled","");
			$("#rgOrgaoEmissor").attr("disabled","");
			$("#rgEstadoEmissor").attr("disabled","");
			$("#sexo").attr("disabled","");
			$("#dataNascimento").attr("disabled","");
			
			//Remove informacoes de PJ
			$("#dadosPJ").attr("style","display:none;");
			//Remove campos requeridos de PJ
			$("#razaoSocial").attr("class","");
			$("#cnpj").attr("class","");
			$("#nomeContato").attr("class","");
			$("#cargo").attr("class","");
			//remove os names do PJ
			$("#razaoSocial").attr("name","razaoSocial");
			$("#cnpj").attr("name","cnpj");
			$("#nomeContato").attr("name","nomeContato");
			$("#cargo").attr("name","cargo");
			//Adiciona os disabled
			$("#razaoSocial").attr("disabled","disabled");
			$("#cnpj").attr("disabled","disabled");
			$("#nomeContato").attr("disabled","disabled");
			$("#cargo").attr("disabled","disabled");			
		}
		if(object.val() == "J") {
			//exibe dados de PJ
			$("#dadosPJ").attr("style","");
			//Adiciona campos requeridos de PJ
			$("#razaoSocial").attr("class","required");
			$("#cnpj").attr("class","required");
			$("#nomeContato").attr("class","required");
			$("#cargo").attr("class","required");
			//Adiciona os names corretos
			$("#razaoSocial").attr("name","cliente.nome");
			$("#cnpj").attr("name","cliente.cnpj");
			$("#nomeContato").attr("name","cliente.nomeContato");
			$("#cargo").attr("name","cliente.cargo");
			//remove os disabled
			$("#razaoSocial").attr("disabled","");
			$("#cnpj").attr("disabled","");
			$("#nomeContato").attr("disabled","");
			$("#cargo").attr("disabled","");
			
			
			/*Remove informacoes de PF*/
			$("#dadosPF").attr("style","display:none;");
			//remove campos requeridos de PF
			$("#nome").attr("class","");
			$("#cpf").attr("class","");
			$("#rg").attr("class","");
			$("#rgDataEmissao").attr("class","");
			$("#rgOrgaoEmissor").attr("class","");
			$("#rgEstadoEmissor").attr("class","");
			$("#sexo").attr("class","");
			$("#dataNascimento").attr("class","");
			//remove o name nos campos de cliente PF
			$("#nome").attr("name","nome");
			$("#cpf").attr("name","cpf");
			$("#rg").attr("name","rg");
			$("#rgDataEmissao").attr("name","rgDataEmissao");
			$("#rgOrgaoEmissor").attr("name","rgOrgaoEmissor");
			$("#rgEstadoEmissor").attr("name","rgEstadoEmissor");
			$("#sexo").attr("name","sexo");
			$("#dataNascimento").attr("name","dataNascimento");
			//Adiciona os disabled
			$("#nome").attr("disabled","disabled");
			$("#cpf").attr("disabled","disabled");
			$("#rg").attr("disabled","disabled");
			$("#rgDataEmissao").attr("disabled","disabled");
			$("#rgOrgaoEmissor").attr("disabled","disabled");
			$("#rgEstadoEmissor").attr("disabled","disabled");
			$("#sexo").attr("disabled","disabled");
			$("#dataNascimento").attr("disabled","disabled");
		}
	});

	$("#login-content #email").click(function(){
		$("#login-content #email").val("");
	});
	
	$("#login-content #senha").click(function(){
		$("#login-content #senha").val("");
	});
	
	$("#search-content #palavrasChave").click(function(){
		$("#search-content #palavrasChave").val("");
	});
	
	$("#cep").blur(function(){
		// Se o campo CEP não estiver vazio
		if($.trim($("#cep").val()) != ""){
			/* 
				Para conectar no serviço e executar o json, precisamos usar a função
				getScript do jQuery, o getScript e o dataType:"json" conseguem fazer o cross-domain, os outros
				dataTypes não possibilitam esta interação entre domínios diferentes
				Estou chamando a url do serviço passando o parâmetro "formato=javascript" e o CEP digitado no formulário
				http://cep.republicavirtual.com.br/web_cep.php?formato=javascript&cep="+$("#cep").val()
			*/

			//$("body").css({"overflow":"hidden"});
	
			$(".result_cep").html('<img class="spinner" src="'+$contextPath+'/image/spinner.gif" /> Carregando');
			$(".result_cep").css('display','inline');
			// $("body").css({opacity:0.4});	
			//$(".result_cep").css({opacity:1.0});
			$.getScript("http://cep.republicavirtual.com.br/web_cep.php?formato=javascript&cep="+$("#cep").val(), function(){
				// o getScript dá um eval no script, então é só ler!
				//Se o resultado for igual a 1
				
		  		if(resultadoCEP["resultado"] == 1){
					// troca o valor dos elementos
					$("#endereco").val(unescape(resultadoCEP["tipo_logradouro"])+" "+unescape(resultadoCEP["logradouro"]));
					$("#bairro").val(unescape(resultadoCEP["bairro"]));
					$("#cidade").val(unescape(resultadoCEP["cidade"]));
					$("#uf").val(unescape(resultadoCEP["uf"]));
					$(".result_cep").css('display','none');
					$(".result_cep").html('');
				}else{
					$('.result_cep').html("Endereço não localizado, tente outra vez.");
				}
			});				
		}			
	});
	
	// Função única que fará a transação
    function getEndereco() {
                // Setamos os parâmetros que serão utilizados pelo Ajax
                var url ="http://cep.republicavirtual.com.br/web_cep.php"; // Nome do arquivo da execução
                var parameters ="cep="+$("#cep").val(); //Parâmetros que serão necessários,
                      parameters +="&data="+Date(); //Este data é Fake, só para forçar o IE a buscar sempre uma informação nova
                      // Aqui entra o Ajax
                      $.ajax({
                            type:"POST",
                            url: url,
                            data: parameters,
                            dataType:"script",
                            beforeSend:function(){
                                  //Estou dizendo para o ajax exibir a mensagem de "carregando" antes de executar a consulta
                                  $("#loadmsg").show();
                            },
                            complete:function(){
                                  //Estou dizendo para o ajax ocultar a mensagem de "carregando" quando o processo terminar
                                  $("#loadmsg").hide();
                               // troca o valor dos elementos
              					$("#endereco").val(unescape(resultadoCEP["tipo_logradouro"])+" "+unescape(resultadoCEP["logradouro"]));
              					$("#bairro").val(unescape(resultadoCEP["bairro"]));
              					$("#cidade").val(unescape(resultadoCEP["cidade"]));
              					$("#uf").val(unescape(resultadoCEP["uf"]));
                            },
                            error:function(){
                                  //Caso ocorra algum erro, estou dizendo para o ajax ocultar a mensagem de "carregando" e me alertar.
                                  $("#loadmsg").hide();
                                  alert("Não foi possível encontrar o endereço");
                            }
                      });
          }

	
	
    $("#rgEstadoEmissor").autocomplete($contextPath+"/utils/estados.json", {
		dataType: "json",
		parse: function(itens) {
			return $.map(itens.estados, function(estado){
				return {
					data: estado,
					value: estado.uf,
					result: estado.uf
				};
			});
		},
		formatItem: function(estado) {
			return estado.nome + " / " + estado.uf;
		}
	});
    
    $("#uf").autocomplete($contextPath+"/utils/estados.json", {
		dataType: "json",
		parse: function(itens) {
			return $.map(itens.estados, function(estado){
				return {
					data: estado,
					value: estado.uf,
					result: estado.uf
				};
			});
		},
		formatItem: function(estado) {
			return estado.nome + " / " + estado.uf;
		}
	});

	$("#uf").change(function(){
		$("#cidade").val('');
	});

	$("#cidade").autocomplete($contextPath+"/utils/cidades.json", {
		dataType: "json",
		extraParams: {
		       uf: function() { return $("#uf").val(); }
		},
		parse: function(itens) {
		return $.map(itens.cidades, function(cidade){
			return {
				data: cidade,
				value: cidade.nome,
				result: cidade.nome
			};
		});
	},
	formatItem: function(cidade) {
		return cidade.nome;
	}
	});
	
});

//funcoes diversas. obs: devem ser chamadas dentro do bloco $(function(){});
$.fn.FocusOnFirst = function(){
	var contador = 0;
    // Seleciona todos os INPUT do primeiro formulário
    // Executa para cada INPUT existente
    $('form:first input, textarea, select').each(function(){
	    if( $(this).is(':visible') && $(this).attr('disabled') == false && $(this).attr('readonly') == false ){
	      contador++;
	      if( contador == 1){
	        $(this).focus();
	      }
	    }
    });
}

function myFileBrowser (field_name, url, type, win) {
	// alert("Field_Name: " + field_name + "\nURL: " + url + "\nType: " + type + "\nWin: " + win); // debug/testing

	var cmsURL = $contextPath+"/javascripts/tiny_mce/plugins/fileupload/browser.jsp";    // script URL - use an absolute path!
    if (cmsURL.indexOf("?") < 0) {
        //add the type as the only query parameter
        cmsURL = cmsURL + "?type=" + type;
    }
    else {
        //add the type as an additional query parameter
        // (PHP session ID is now included if there is one at all)
        cmsURL = cmsURL + "&type=" + type;
    }
    
    tinyMCE.activeEditor.windowManager.open({
        file : cmsURL,
        title : 'Memes File Browser',
        width : 420,  // Your dimensions may differ - toy around with them!
        height : 400,
        resizable : "yes",
        inline : "yes",  // This parameter only has an effect if you use the inlinepopups plugin!
        close_previous : "no"
    }, {
        window : win,
        input : field_name
    });
    return false;
}

jQuery.validator.addMethod("cnpj", function(cnpj, element) {
   cnpj = jQuery.trim(cnpj);// retira espaços em branco
   // DEIXA APENAS OS NÚMEROS
   cnpj = cnpj.replace('/','');
   cnpj = cnpj.replace('.','');
   cnpj = cnpj.replace('.','');
   cnpj = cnpj.replace('-','');
 
   var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
   digitos_iguais = 1;
 
   if (cnpj.length < 14 && cnpj.length < 15){
      return false;
   }
   for (i = 0; i < cnpj.length - 1; i++){
      if (cnpj.charAt(i) != cnpj.charAt(i + 1)){
         digitos_iguais = 0;
         break;
      }
   }
 
   if (!digitos_iguais){
      tamanho = cnpj.length - 2
      numeros = cnpj.substring(0,tamanho);
      digitos = cnpj.substring(tamanho);
      soma = 0;
      pos = tamanho - 7;
 
      for (i = tamanho; i >= 1; i--){
         soma += numeros.charAt(tamanho - i) * pos--;
         if (pos < 2){
            pos = 9;
         }
      }
      resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
      if (resultado != digitos.charAt(0)){
         return false;
      }
      tamanho = tamanho + 1;
      numeros = cnpj.substring(0,tamanho);
      soma = 0;
      pos = tamanho - 7;
      for (i = tamanho; i >= 1; i--){
         soma += numeros.charAt(tamanho - i) * pos--;
         if (pos < 2){
            pos = 9;
         }
      }
      resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
      if (resultado != digitos.charAt(1)){
         return false;
      }
      return true;
   }else{
      return false;
   }
}, "Informe um CNPJ válido."); // Mensagem padrão


jQuery.validator.addMethod("cpf", 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;
}, "Informe um CPF válido."); // Mensagem padrão
