Caymland.showSMSList = function () {
  if (mQuery("#infobip_sms_smsType_1").prop('checked')) {
    mQuery("#leadList").removeClass('hide');
    mQuery("#sms-scheduling").removeClass('hide');
    setTimeout(function () {
      if (!mQuery("#infobip_sms_lists").val()) {
        mQuery("#infobip_sms_lists_chosen").addClass("active-list")
      }
    }, 200);

    setTimeout(function () {
      mQuery("#infobip_sms_lists_chosen").removeClass("active-list")
    }, 3000);
  } else {
    mQuery("#leadList").addClass("hide")
    mQuery("#sms-scheduling").addClass("hide")
  }
}

Caymland.smsOnLoad = function (container, response) {
  if (mQuery('#infobip_sms_message').length) {
    let textarea = mQuery('#infobip_sms_message');

    mQuery(textarea).on('froalaEditor.contentChanged', function (e, editor) {
      var content = mQuery(this).froalaEditor('html.get');
      countMessagesToSend(content)
    });

    countMessagesToSend(textarea.val());
  }
}

countMessagesToSend = function (content) {
  let messageCharacters = 160;
  let contentLength = content.replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').replace(/&nbsp;/g, ' ').length;
  let i = Math.ceil(contentLength / messageCharacters);

  let charactersIntoCurrentMessage = contentLength % messageCharacters;

  // If exactly 0, it means the last message was exactly 160 characters, so 160 characters left for a new message
  let left_characters = charactersIntoCurrentMessage === 0 ? i !== 0 ? 0 : messageCharacters : messageCharacters - charactersIntoCurrentMessage;

  let span = Caymland.translate('caymland.sms.message.counter', {
    'sms_to_send': i, 'left_characters': left_characters
  });
  mQuery('#calculate-message-to-send').html(span);
}

Caymland.smsSendOnLoad = function (container, response) {

  if (mQuery('.sms-send-progress').length) {
    if (!mQuery('#smsSendProgress').length) {
      Caymland.clearModeratedInterval('smsSendProgress');
    } else {
      Caymland.setModeratedInterval('smsSendProgress', 'sendSmsBatch', 5000);
    }
  }
};

Caymland.smsSendOnUnload = function () {
  if (mQuery('.sms-send-progress').length) {
    Caymland.clearModeratedInterval('smsSendProgress');
    if (typeof Caymland.sendSmsBatchXhr != 'undefined') {
      Caymland.sendSmsBatchXhr.abort();
      delete Caymland.sendSmsBatchXhr;
    }
  }
};

Caymland.sendSmsBatch = function () {
  var data = 'id=' + mQuery('.progress-bar-send').data('sms') + '&pending=' + mQuery('.progress-bar-send').attr('aria-valuemax') + '&batchlimit=' + mQuery('.progress-bar-send').data('batchlimit');
  Caymland.sendSmsBatchXhr = Caymland.ajaxActionRequest('plugin:InfoBip:sendSms', data, function (response) {
    if (response.success === 0) {
      mQuery("#smsSendProgress").addClass('hide');
      mQuery("#sms-send-error").removeClass('hide');
      return;
    }

    if (response.progress) {
      if (response.progress[0] > 0) {
        mQuery('.imported-count').html(response.progress[0]);
        mQuery('.progress-bar-send').attr('aria-valuenow', response.progress[0]).css('width', response.percent + '%');
        mQuery('.progress-bar-send span.sr-only').html(response.percent + '%');
      }

      if (response.progress[0] >= response.progress[1]) {
        Caymland.clearModeratedInterval('smsSendProgress');

        setTimeout(function () {
          mQuery.ajax({
            type: 'POST',
            showLoadingBar: false,
            url: window.location,
            data: 'complete=1',
            success: function (response) {
              console.log(response);
              if (response.newContent) {
                // It's done so pass to process page
                Caymland.processPageContent(response);
              }
            }
          });
        }, 1000);
      }
    }

    Caymland.moderatedIntervalCallbackIsComplete('smsSendProgress');
  });
};

Caymland.campaignInfoBipToggleTimeframes = function () {
  var immediateChecked = mQuery('#campaignevent_properties_triggerMode_0').prop('checked');
  immediateChecked ? mQuery('#smsTriggerInterval').addClass('hide') : mQuery('#smsTriggerInterval').removeClass('hide');
}
