	  $.validator.addMethod(
      "telefone",
      function(value, element){
        if((($('#ass_tel_ddd').val().length)&&($('#ass_tel_num').val().length))||(($('#ass_cel_ddd').val().length)&&($('#ass_cel_num').val().length))){
          return true;
        }else{
          return false;
        }
      },
      "Informe pelo menos um número de telefone"
    );

    $.validator.addMethod(
      "logradouro",
      function(value, element){
       
        if(((($('#ass_tlograd_princ').val().length))&&($('#ass_tlograd_princ').val()!='outro'))||($('#ass_tlograd_outros').val().length)){
          return true;
        }else{
          return false;
        }
      },
      "Escreva o tipo de logradouro"
    );

    $.validator.addMethod(
      "logradouroEnt",
      function(value, element){
       
        if(($('#ass_entrega_mesmo:checked').length)||(((($('#ent_tlograd_princ').val().length))&&($('#ent_tlograd_princ').val()!='outro'))||($('#ent_tlograd_outros').val().length))){
          return true;
        }else{
          return false;
        }
      },
      "Escreva o tipo de logradouro"
    );	
	
    $.validator.addMethod(
      "requiredEnt",
      function(value, element){
        if(($('#ass_entrega_mesmo:checked').length)||($(element).val().length)){ return true;}
        else{ return false;}
      }
    );
	
    $(document).ready(function(){
      $('fieldset#areaMangas div#div_produtos input.colecao').click(function(){
        updColecao($(this).attr('id').replace('ass_colecao_' ,''));
      })
      $('fieldset.formaPgto input').click(updDataBoleto);
      $('#ass_cep').blur(function(){
        searchEndereco("ass");
      });
      $('#ent_cep').blur(function(){
        searchEndereco("ent");
      });
      $('input.isNumeric').keyup(function(){ formatNumeric($(this)); });
      $('input.isCep').blur(function(){ formatCep($(this)); });
      $('input.isDate').keyup(function(){ formatDate($(this)); });
      $('#ass_tlograd_princ').click(updTLograd);
  	
      $("#form_ass").validate({
        onkeyup: false,
        groups:{
          tel: "ass_tel_ddd ass_tel_num ass_cel_ddd ass_cel_num",
          lograd: "ass_tlograd_princ ass_tlograd_outros",
          logradEnt: "ent_tlograd_princ ent_tlograd_outros"
        },
        errorPlacement: function(error, element){
          var elemName=element.attr('name');
          if((elemName=='ass_tel_ddd')||(elemName=='ass_tel_num')||(elemName=='ass_cel_ddd')||(elemName=='ass_cel_num')){
            error.insertAfter($("#lab_ass_telefone"));
          }else if((elemName=='ass_tlograd_princ')||(elemName=='ass_tlograd_outros')){
            error.insertAfter($("#lab_ass_logradouro"));
          }else if((elemName=='ent_tlograd_princ')||(elemName=='ent_tlograd_outros')){
            error.insertAfter($("#lab_ent_logradouro"));
          }else{
            error.insertAfter($("label[for='"+element.attr('id')+"']"));
          }
        },
        rules:{
          ass_nome: { required: true},
          ass_email: {
            required: true,
            email: true
          },
          ass_nasc: {
            required: true,
            dateBR: true
          },
          ass_cpf: {
            required: true,
            cpf: true
          },
          ass_tel_ddd: { telefone: true},
          ass_tel_num: {telefone: true},
          ass_cel_ddd: {telefone: true},
          ass_cel_num: {telefone: true},
          ass_cep: {required: true},
          ass_tlograd_princ: {logradouro: true},
          ass_tlograd_outros: {logradouro: true},
          ass_endereco: {required: true},
          ass_numero: {required: true},
          ass_cidade: {required: true},
          ent_nome: { requiredEnt: true},
          ent_cep: {requiredEnt: true},
          ent_tlograd_princ: {logradouroEnt: true},
          ent_tlograd_outros: {logradouroEnt: true},
          ent_endereco: {requiredEnt: true},
          ent_numero: {requiredEnt: true},
          ent_cidade: {requiredEnt: true},
          ent_captcha: {requiredEnt: true},
          cont_colecoes: {min: 1}
        },
        messages: {
          ass_nome: {required: "escreva seu nome"},
          ass_email: {
            required: "escreva seu e-mail",
            email: "e-mail inválido"
          },
          ass_nasc: {
            required: "escreva sua data de nascimento",
            dateBR: "data inválida"
          },
          ass_cpf: {required: "escreve seu nº de CPF"},
          ass_tel_ddd: {telefone: "informe ao menos um telefone"},
          ass_tel_num: {telefone: "informe ao menos um telefone"},
          ass_cel_ddd: {telefone: "informe ao menos um telefone"},
          ass_cel_num: {telefone: "informe ao menos um telefone"},
          ass_cep: {required: "escreva seu CEP"},
          ass_tlograd_princ: {logradouro: "informe o tipo de logradouro"},
          ass_tlograd_outros: {logradouro: "informe o tipo de logradouro"},
          ass_endereco: {required: "escreva seu endereço"},
          ass_numero: {required: "escreva o número"},
          ass_cidade: {required: "escreva sua cidade"},
          ent_nome: {requiredEnt: "escreva o nome"},
          ent_cep: {requiredEnt: "escreva o CEP"},
          ent_tlograd_princ: {logradouroEnt: "informe o tipo de logradouro"},
          ent_tlograd_outros: {logradouroEnt: "informe o tipo de logradouro"},
          ent_endereco: {requiredEnt: "escreva o endereço"},
          ent_numero: {requiredEnt: "escreva o número"},
          ent_cidade: {requiredEnt: "escreva o cidade"},
          ass_captcha: {required: "escreva o código de segurança"},
          cont_colecoes: {min: 'selecione pelo menos uma assinatura'}
        }
      });

    });
    
    function updTLograd(){
      if($('#ass_tlograd_princ').val()=='outro'){
        $('#div_tlograd_outros').show('fast');
      }else{
        $('#div_tlograd_outros').hide('fast');
      }
    }
    
    function searchEndereco(prefixId){
      $.ajax({
        type: 'GET',
        dataType: 'xml',
        url: 'assinatura/busca_cep.php',
        data: "cep="+$('#'+prefixId+'_cep').val(),
        beforeSend: function(){
          $('#cepLoading').show('fast');
        },
        success: function(xml){
          var result=$(xml).find('result').text();
          if(result==1){
            $('#'+prefixId+'_estado').val($(xml).find('uf').text());
            $('#'+prefixId+'_cidade').val($(xml).find('cidade').text());
            $('#'+prefixId+'_bairro').val($(xml).find('bairro').text());
            $('#'+prefixId+'_endereco').val($(xml).find('logradouro').text());
            var tipo_logradouro=$(xml).find('tipo_logradouro').text();
            
            if($('#'+prefixId+'_tlograd_princ option[value="'+tipo_logradouro+'"]').length){
              $('#'+prefixId+'_tlograd_princ').val(tipo_logradouro);
              $('#div_'+prefixId+'_tlograd_outros').hide('fast');
            }else{
              $('#'+prefixId+'_tlograd_princ').val('outro');
              $('#'+prefixId+'_tlograd_outros').val(tipo_logradouro);
              $('#div_'+prefixId+'_tlograd_outros').show('fast');
            }
            $('#'+prefixId+'_numero').focus();
          }else if(result==2){
            $('#'+prefixId+'_estado').val($(xml).find('uf').text());
            $('#'+prefixId+'_cidade').val($(xml).find('cidade').text());
            $('#'+prefixId+'_bairro').val('');
            $('#'+prefixId+'_endereco').val('');
            $('#'+prefixId+'_tlograd_princ').val('');
            $('#'+prefixId+'_tlograd_outros').val('');
            $('#'+prefixId+'_tlograd_princ').focus(); 
          }else{
            $('#'+prefixId+'_estado').val('');
            $('#'+prefixId+'_cidade').val('');
            $('#'+prefixId+'_bairro').val('');
            $('#'+prefixId+'_endereco').val('');
            $('#'+prefixId+'_tlograd_princ').val('');
            $('#'+prefixId+'_tlograd_outros').val('');
            $('#'+prefixId+'_tlograd_princ').focus();
          }
          $('#'+prefixId+'_cepLoading').hide('fast');
        }
      })
    }
    
    function updColecao(colecao){
      $("#cont_colecoes").val($('#ass_colecao_'+colecao+':checked').length);
      if($('#ass_colecao_'+colecao+':checked').length){
        $('#pgto_'+colecao).show('fast');
        $('label.error[for="cont_colecoes"]').remove();
      }else{
        $('#pgto_'+colecao).hide('fast');
      }
      updDataBoleto();
    }
    
    function updDataBoleto(){
      var showDataBoleto=false;
      $('input.colecao:checked').each(function(){
        var colecao=$(this).attr('id').replace('ass_colecao_' ,'');
        if($('fieldset#pgto_'+colecao+' input.pgto_'+colecao+':checked').hasClass('boleto')){
          showDataBoleto=true;
        }
      });
      if(showDataBoleto){
        $("#areaBoletoVcto").show('fast');
      }else{
        $("#areaBoletoVcto").hide('fast');
      }
    }
    
    
    function formatNumeric(elem){
      $(elem).val($(elem).val().replace(/\D/g, '')); 
    }
    
    function formatCep(elem){
      var cep_corrigido=$(elem).val().replace(/\D/g, '');
      if(cep_corrigido.length==7){
        cep_corrigido='0'+cep_corrigido;
      }else if(cep_corrigido.length==5){
        cep_corrigido=cep_corrigido+'000';
      }else if(cep_corrigido.length==4){
        cep_corrigido='0'+cep_corrigido+'000';
      }
      $(elem).val(cep_corrigido);
    }
    
    function formatDate(elem){
      var valor=$(elem).val();
      valor=valor.replace('-','/'); //substitui - para /
      valor=valor.replace(/(\/+)$/,'/'); //substitui // para /
      valor=valor.replace(/[^0-9\/]+/,''); //apaga nao numero e nao /
      valor=valor.replace(/^(\/)$/,'');
      if(valor.match(/^(\d{2})$/)){
        valor=valor+'/';
      }
      if(valor.match(/^(\d{1,2}\/\d{2})$/)){
        valor=valor+'/';
      }
      $(elem).val(valor);
    }