text: /* ------------------------------------------------------------------------------
   *
   *  # Steps wizard
   *
   *  Demo JS code for form_wizard.html page
   *
   * ---------------------------------------------------------------------------- */
  
  
  // Setup module
  // ------------------------------
  
  var FormWizard = function() {
  
  
      //
      // Setup module components
      //
  
      // Wizard
      var _componentWizard = function() {
          if (!$().steps) {
              console.warn('Warning - steps.min.js is not loaded.');
              return;
          }
  
  
          // Basic wizard setup
          $('.steps-basic').steps({
              headerTag: 'h6',
              bodyTag: 'fieldset',
              transitionEffect: 'fade',
              titleTemplate: '<span class="number">#index#</span> #title#',
              labels: {
                  previous: '<i class="icon-arrow-left13 mr-2" /> Previous',
                  next: 'Next <i class="icon-arrow-right14 ml-2" />',
                  finish: 'Submit form <i class="icon-arrow-right14 ml-2" />'
              },
              onFinished: function (event, currentIndex) {
                  alert('Form submitted.');
              }
          });
  
          // Async content loading
          $('.steps-async').steps({
              headerTag: 'h6',
              bodyTag: 'fieldset',
              transitionEffect: 'fade',
              titleTemplate: '<span class="number">#index#</span> #title#',
              loadingTemplate: '<div class="card-body text-center"><i class="icon-spinner2 spinner mr-2"></i>  #text#</div>',
              labels: {
                  previous: '<i class="icon-arrow-left13 mr-2" /> Previous',
                  next: 'Next <i class="icon-arrow-right14 ml-2" />',
                  finish: 'Submit form <i class="icon-arrow-right14 ml-2" />'
              },
              onContentLoaded: function (event, currentIndex) {
                  $(this).find('.card-body').addClass('hide');
  
                  // Re-initialize components
                  _componentSelect2();
                  _componentUniform();
              },
              onFinished: function (event, currentIndex) {
                  alert('Form submitted.');
              }
          });
  
          // Saving wizard state
          $('.steps-state-saving').steps({
              headerTag: 'h6',
              bodyTag: 'fieldset',
              titleTemplate: '<span class="number">#index#</span> #title#',
              labels: {
                  previous: '<i class="icon-arrow-left13 mr-2" /> Previous',
                  next: 'Next <i class="icon-arrow-right14 ml-2" />',
                  finish: 'Submit form <i class="icon-arrow-right14 ml-2" />'
              },
              transitionEffect: 'fade',
              saveState: true,
              autoFocus: true,
              onFinished: function (event, currentIndex) {
                  alert('Form submitted.');
              }
          });
  
          // Specify custom starting step
          $('.steps-starting-step').steps({
              headerTag: 'h6',
              bodyTag: 'fieldset',
              titleTemplate: '<span class="number">#index#</span> #title#',
              labels: {
                  previous: '<i class="icon-arrow-left13 mr-2" /> Previous',
                  next: 'Next <i class="icon-arrow-right14 ml-2" />',
                  finish: 'Submit form <i class="icon-arrow-right14 ml-2" />'
              },
              transitionEffect: 'fade',
              startIndex: 2,
              autoFocus: true,
              onFinished: function (event, currentIndex) {
                  alert('Form submitted.');
              }
          });
  
          // Enable all steps and make them clickable
          $('.steps-enable-all').steps({
              headerTag: 'h6',
              bodyTag: 'fieldset',
              transitionEffect: 'fade',
              enableAllSteps: true,
              titleTemplate: '<span class="number">#index#</span> #title#',
              labels: {
                  previous: '<i class="icon-arrow-left13 mr-2" /> Previous',
                  next: 'Next <i class="icon-arrow-right14 ml-2" />',
                  finish: 'Submit form <i class="icon-arrow-right14 ml-2" />'
              },
              onFinished: function (event, currentIndex) {
                  alert('Form submitted.');
              }
          });
  
  
          //
          // Wizard with validation
          //
  
          // Stop function if validation is missing
          if (!$().validate) {
              console.warn('Warning - validate.min.js is not loaded.');
              return;
          }
  
          // Show form
          var form = $('.steps-validation').show();
  
  
          // Initialize wizard
          $('.steps-validation').steps({
              headerTag: 'h6',
              bodyTag: 'fieldset',
              titleTemplate: '<span class="number">#index#</span> #title#',
              labels: {
                  previous: '<i class="icon-arrow-left13 mr-2" /> Previous',
                  next: 'Next <i class="icon-arrow-right14 ml-2" />',
                  finish: 'Submit form <i class="icon-arrow-right14 ml-2" />'
              },
              transitionEffect: 'fade',
              autoFocus: true,
              onStepChanging: function (event, currentIndex, newIndex) {
  
                  // Allways allow previous action even if the current form is not valid!
                  if (currentIndex > newIndex) {
                      return true;
                  }
  
                  // Needed in some cases if the user went back (clean up)
                  if (currentIndex < newIndex) {
  
                      // To remove error styles
                      form.find('.body:eq(' + newIndex + ') label.error').remove();
                      form.find('.body:eq(' + newIndex + ') .error').removeClass('error');
                  }
  
                  form.validate().settings.ignore = ':disabled,:hidden';
                  return form.valid();
              },
              onFinishing: function (event, currentIndex) {
                  form.validate().settings.ignore = ':disabled';
                  return form.valid();
              },
              onFinished: function (event, currentIndex) {
  				add_new_caregiver();
                  
              }
          });
  
  
          // Initialize validation
          $('.steps-validation').validate({
              ignore: 'input[type=hidden], .select2-search__field', // ignore hidden fields
              errorClass: 'validation-invalid-label',
              highlight: function(element, errorClass) {
                  $(element).removeClass(errorClass);
              },
              unhighlight: function(element, errorClass) {
                  $(element).removeClass(errorClass);
              },
  
              // Different components require proper error label placement
              errorPlacement: function(error, element) {
  
                  // Unstyled checkboxes, radios
                  if (element.parents().hasClass('form-check')) {
                      error.appendTo( element.parents('.form-check').parent() );
                  }
  
                  // Input with icons and Select2
                  else if (element.parents().hasClass('form-group-feedback') || element.hasClass('select2-hidden-accessible')) {
                      error.appendTo( element.parent() );
                  }
  
                  // Input group, styled file input
                  else if (element.parent().is('.uniform-uploader, .uniform-select') || element.parents().hasClass('input-group')) {
                      error.appendTo( element.parent().parent() );
                  }
  
                  // Other elements
                  else {
                      error.insertAfter(element);
                  }
              },
              rules: {
                  email: {
                      email: true
                  }
              }
          });
      };
  
      // Uniform
      var _componentUniform = function() {
          if (!$().uniform) {
              console.warn('Warning - uniform.min.js is not loaded.');
              return;
          }
  
          // Initialize
          $('.form-input-styled').uniform({
              fileButtonClass: 'action btn bg-blue'
          });
      };
  
      // Select2 select
      var _componentSelect2 = function() {
          if (!$('.form-control-select2').select2) {
              console.warn('Warning - select2.min.js is not loaded.');
              return;
          }
  
          $('.select-search').select2();
          $('.select-search-basic').select2();
  
          // Initialize
          var $select = $('.select-search-basic').select2({
              minimumResultsForSearch: Infinity,
              width: '100%'
          });
      };
  
  
      //
      // Return objects assigned to module
      //
  
      return {
          init: function() {
              _componentWizard();
              _componentUniform();
              _componentSelect2();
          }
      }
  }();
  
  
  // Initialize module
  // ------------------------------
  
  document.addEventListener('DOMContentLoaded', function() {
      FormWizard.init();
  });
  