var endLength =
  window.location.href.indexOf('#') != -1 ? window.location.href.indexOf('#') : window.location.href.length;
history.replaceState(
  {},
  document.title,
  window.location.href.substr(0, endLength) + '#' + $('#form-register .ftr-steps__step:first-of-type').attr('id')
);
$('#password').strength({ type: 'app' });

var info = $('#login-message-info').data('info');

if (info.success != '') {
  notificationMsg(info.success, 'success');
}
if (info.error != '') {
  notificationMsg(info.error, 'warning');
}

function datePickerInit(id) {
  var hideDatePicker = function() {
    $('#mddtp-picker__date').addClass('mddtp-picker--inactive');
    $('.ftr-main').removeClass('overlay');
  };

  datePicker.trigger = document.getElementById(id);
  document.getElementById(id).addEventListener('click', function() {
    datePicker.show();
    $('.ftr-main').addClass('overlay');
    // datePicker._switchToDateView(datePicker._sDialog.years, datePicker); // inicia com a escolha do ano
    onClickOut($('#mddtp-picker__date'), null, hideDatePicker, null, true, true);
  });
  document.getElementById(id).addEventListener('onOk', function() {
    $(this)
      .find('.ftr-js-field__entry')
      .val(datePicker.time.format('DD/MM/YYYY'))
      .addClass('on');
    $(this)
      .find('input[type=hidden]')
      .val(datePicker.time.format('DD/MM/YYYY'));
    $('.ftr-main').removeClass('overlay');
  });
}

if ($('#data_nascimento').length > 0) {
  var datePicker = new mdDateTimePicker.default({
    type: 'date',
    // init: moment('2016-03-3', 'YYYY-MM-DD'),
    init: moment().subtract(10, 'years'), // para data de nascimento
    orientation: 'PORTRAIT',
    future: moment(),
    past: moment().subtract(150, 'years'), // para data de nascimento
    autoClose: true,
  });
  datePickerInit('data_nascimento'); // parametro = id do elemento sem #
}

//=========================== Formulário de registro ===========================
if ($('#form-register .ftr-field__error, #form-register .ftr-check-label__error').length > 0) {
  var varLeft = $('#form-register .ftr-field__error, #form-register .ftr-check-label__error')
    .closest('.ftr-steps__step')
    .offset().left;
  $('#form-register').css({ left: '-' + varLeft + 'px' });
}

function exibeContent() {
  $(
    '.ftr-js-pessoa-' +
      $('#juridica, #fisica')
        .filter(':checked')
        .attr('id')
  )
    .prop('disable', false)
    .show();
  $(
    '.ftr-js-pessoa-' +
      $('#juridica, #fisica')
        .filter(':not(:checked)')
        .attr('id')
  )
    .hide()
    .find('#cpf, #rg, #cnpj, #razao_social, #inscricao_estadual')
    .prop('disable', true)
    .val('');
}

exibeContent();
$('#juridica, #fisica').on('change', function() {
  exibeContent();
});

$('#form-register').validate({
  ignore: ':hidden:not(.ftr-js-select__value, .ftr-check, .ftr-radio)',
  onkeyup: function(element) {
    if ($(element).valid()) {
      $(element)
        .closest('div[class|=ftr], label[class|=ftr]')
        .removeClass('error');
      $(element)
        .siblings('.ftr-field__error')
        .remove();
    }
  },
  onsubmit: true,
  showErrors: function(errorMap, errorList) {
    $.each(errorList, function() {
      var $fieldError = $($(this)[0].element);

      if ($fieldError.hasClass('ftr-check')) {
        $fieldError
          .next('.ftr-check-label')
          .find('.ftr-check-label__error')
          .remove();
        $fieldError.next('.ftr-check-label').append(
          $('<span>')
            .addClass('ftr-check-label__error')
            .text($(this)[0].message)
        );
        $fieldError.one('click', function() {
          $(this)
            .next('.ftr-check-label')
            .find('.ftr-check-label__error')
            .remove();
        });
      } else if ($fieldError.hasClass('ftr-radio')) {
        $fieldError
          .closest('div[class^=ftr], label[class^=ftr], div[class*=ftr], label[class*=ftr]')
          .find('.ftr-radio-label__error')
          .remove();
        $fieldError.closest('div[class^=ftr], label[class^=ftr], div[class*=ftr], label[class*=ftr]').prepend(
          $('<span>')
            .addClass('ftr-radio-label__error')
            .attr('style', 'position:relative;margin-top:0')
            .text($(this)[0].message)
        );
        $fieldError.one('click', function() {
          $(this)
            .closest('div[class^=ftr], label[class^=ftr], div[class*=ftr], label[class*=ftr]')
            .find('.ftr-radio-label__error')
            .remove();
        });
      } else {
        $fieldError
          .closest('div[class^=ftr], label[class^=ftr], div[class*=ftr], label[class*=ftr]')
          .addClass('error')
          .find('.ftr-field__error')
          .remove();
        $fieldError.closest('div[class^=ftr], label[class^=ftr], div[class*=ftr], label[class*=ftr]').append(
          $('<span>')
            .addClass('ftr-field__error')
            .text($(this)[0].message)
        );
      }
    });
  },
  rules: {
    celular: {
      celular: true,
    },
    cpf: {
      cpfBR: true,
    },
    cnpj: {
      cnpj: true,
    },
    postcode: {
      postalcodeBR: true,
    },
    confirm: {
      equalTo: '#password',
    },
    email: {
      checkemail: true,
    },
  },
  messages: {
    confirm: {
      equalTo: 'As senhas não conferem.',
    },
  },
});

$('#form-register .ftr-steps__step').each(function(index, el) {
  var p = $('<p>'),
    button = $('<button>'),
    container = $('<div>');

  p.text('Etapa ' + (index + 1) + ' de ' + $('#form-register .ftr-steps__step').length);
  p.addClass('ftr-text--grey ftr-text--xs ftr-text--center ftr-in-space--m');
  button.attr('type', 'button');
  button.addClass('ftr-steps__button ftr-btn ftr-background--primary ftr-js-ripple-effect ftr-h--full');
  button.text('Próxima etapa');
  container.append(p, button);

  $(this)
    .find('.ftr-steps__content')
    .append(container);
});

var prevLocation = window.location.href;
window.displayStep = function($step) {
  $('#form-register.ftr-steps').css({ left: '-' + $step.prevAll('.ftr-steps__step').length * 100 + 'vw' });
};

$('#form-register .ftr-steps__step:last-child .ftr-steps__button')
  .attr('type', 'submit')
  .text('Concluir');
$('#form-register .ftr-steps__button[type=button]').on('click', function() {
  $('.g-recaptcha-bubble-arrow')
    .parent()
    .css({
      transform: 'scale(.8)',
      '-webkit-transform': 'scale(.8)',
      'transform-origin': '0 0',
      '-webkit-transform-origin': '0 0',
    });

  if (
    $(this)
      .closest('.ftr-steps__step')
      .find('input')
      .valid()
  ) {
    var $step = $(this)
      .closest('.ftr-steps__step')
      .next('.ftr-steps__step');
    var endLength =
      window.location.href.indexOf('#') != -1 ? window.location.href.indexOf('#') : window.location.href.length;
    history.pushState({}, document.title, window.location.href.substr(0, endLength) + '#' + $step.attr('id'));
    displayStep($step);
  } else {
    var topValue = document.querySelector('.error').offsetTop - $(window).height() / 2 + 36;
    $('#form-register .ftr-steps__content').animate({ scrollTop: topValue }, 300);
    notificationMsg('Alguns campos não foram preenchidos de forma correta, corrija antes de prosseguir!', 'error');
  }
});

$('#form-register input').keypress(function(e) {
  var code = null;
  code = e.keyCode ? e.keyCode : e.which;
  return code == 13 ? false : true;
});

$('.ftr-js-privacy-policy').one('click', function(event) {
  event.preventDefault();
  $('.ftr-loading-bar').removeClass('ftr-none');
  $.ajax({
    url: $(this).attr('href'),
    dataType: 'html',
  })
    .done(function(data) {
      $('.ftr-js-privacy-policy-container').append(data);
    })
    .fail(function() {
      console.log('error');
    })
    .always(function() {
      $('.ftr-loading-bar').addClass('ftr-none');
    });
});
$('#address_1, #city').on('focus', function() {
  $('#error-postcode-search')
    .closest('.ftr-field')
    .removeClass('error');
  $('#error-postcode-search').remove();
});

const checkWhatsStatus = document.getElementById('feedback_whatsapp_status'),
  inputWhatsNumber = document.getElementById('feedback_whatsapp_number');

if (checkWhatsStatus && inputWhatsNumber) {
  checkWhatsStatus.addEventListener('change', function() {
    if (this.checked) {
      inputWhatsNumber.required = true;
    } else {
      inputWhatsNumber.required = false;
      inputWhatsNumber.dispatchEvent(new Event('keyup', { bubbles: true }));
    }
  });
}
