text: //== Class definition
  var WizardDemo = function () {
      //== Base elements
      var wizardEl = $('#m_wizard');
      var formEl = $('#m_form');
      var validator;
      var wizard;
  
      //== Private functions
      var initWizard = function () {
          //== Initialize form wizard
          wizard = wizardEl.mWizard({
              startStep: 1
          });
  
          //== Validation before going to next page
          wizard.on('beforeNext', function (wizard) {
              if (validator.form() !== true) {
                  return false;  // don't go to the next step
              }
          });
  
          //== Change event
          wizard.on('change', function (wizard) {
              mApp.scrollTop();
          });
      };
  
      var initValidation = function () {
          validator = formEl.validate({
              //== Validate only visible fields
              ignore: ":hidden",
  
              //== Validation rules
              rules: {
                  //=== Client Information(step 1)
                  //== Client details
                  name: {
                      required: true
                  },
                  email: {
                      required: true,
                      email: true
                  },
                  phone: {
                      required: true,
                      phoneUS: true
                  },
  
                  //== Mailing address
                  address1: {
                      required: true
                  },
                  city: {
                      required: true
                  },
                  state: {
                      required: true
                  },
                  city: {
                      required: true
                  },
                  country: {
                      required: true
                  },
  
                  //=== Client Information(step 2)
                  //== Account Details
                  account_url: {
                      required: true,
                      url: true
                  },
                  account_username: {
                      required: true,
                      minlength: 4
                  },
                  account_password: {
                      required: true,
                      minlength: 6
                  },
  
                  //== Client Settings
                  account_group: {
                      required: true
                  },
                  'account_communication[]': {
                      required: true
                  },
  
                  //=== Client Information(step 3)
                  //== Billing Information
                  billing_card_name: {
                      required: true
                  },
                  billing_card_number: {
                      required: true,
                      creditcard: true
                  },
                  billing_card_exp_month: {
                      required: true
                  },
                  billing_card_exp_year: {
                      required: true
                  },
                  billing_card_cvv: {
                      required: true,
                      minlength: 2,
                      maxlength: 3
                  },
  
                  //== Billing Address
                  billing_address_1: {
                      required: true
                  },
                  billing_address_2: {},
                  billing_city: {
                      required: true
                  },
                  billing_state: {
                      required: true
                  },
                  billing_zip: {
                      required: true,
                      number: true
                  },
                  billing_delivery: {
                      required: true
                  },
  
                  //=== Confirmation(step 4)
                  accept: {
                      required: true
                  }
              },
  
              //== Validation messages
              messages: {
                  'account_communication[]': {
                      required: 'You must select at least one communication option'
                  },
                  accept: {
                      required: "You must accept the Terms and Conditions agreement!"
                  }
              },
  
              //== Display error  
              invalidHandler: function (event, validator) {
                  mApp.scrollTop();
  
                  swal({
                      "title": "",
                      "text": "There are some errors in your submission. Please correct them.",
                      "type": "error",
                      "confirmButtonClass": "btn btn-secondary m-btn m-btn--wide"
                  });
              },
  
              //== Submit valid form
              submitHandler: function (form) {
  
              }
          });
      };
  
      var initSubmit = function () {
          var btn = formEl.find('[data-wizard-action="submit"]');
  
          btn.on('click', function (e) {
              e.preventDefault();
  
              if (validator.form()) {
                  //== See: src\js\framework\base\app.js
                  mApp.progress(btn);
                  //mApp.block(formEl); 
  
                  //== See: http://malsup.com/jquery/form/#ajaxSubmit
                  formEl.ajaxSubmit({
                      success: function () {
                          mApp.unprogress(btn);
                          //mApp.unblock(formEl);
  
                          swal({
                              "title": "",
                              "text": "The application has been successfully submitted!",
                              "type": "success",
                              "confirmButtonClass": "btn btn-secondary m-btn m-btn--wide"
                          });
                      }
                  });
              }
          });
      };
  
      return {
          // public functions
          init: function () {
              wizardEl = $('#m_wizard');
              formEl = $('#m_form');
  
              initWizard();
              initValidation();
              initSubmit();
          }
      };
  }();
  
  jQuery(document).ready(function () {
      WizardDemo.init();
  });