dateField - legacy

by Eric Miller

HTML

<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<div class="dateField form-group" id="field_cc4536db_form_group">
  <input id="field_cc4536db_ISO" name="reportEndDate_ISO" type="hidden" value="20160119" data-noseparator="true">
  <input class="form-control date size-10 hasDatepicker" id="field_cc4536db" name="reportEndDate" type="text" data-field="field_cc4536db_ISO" data-format="mm/dd/yyyy" value="01/22/2016" data-noseparator="true">
  <button type="button" class="ui-datepicker-trigger"><i class="fa fa-calendar"></i></button>
</div>

JavaScript

/**
 * DateField Web Control
 * @param {object} - Object to be evaluated as a datefield
 * @param {object} - Options to be evaluated as overrides for default behavior
 * @return {object}
 */
function DateField(obj, opt) {
    var $obj = $(obj),
      default_opt = {
          separator: '/',
          localFormat: 'mm/dd/yyyy'
      },
      opt = opt || default_opt,
      api = {

          /**
           * Get Local Date Separator from Options or Default Values
           */
          getLocalDateSeperator: function () {
              return opt.separator || default_opt.separator;
          },

          /**
           * Format Local Date String if does not contain seprator
           * @param {string} - Local Date string to be evaluated
           * @return {string}
           */
          formatLocalDateString: function (ldateString) {
              var seperator = api.getLocalDateSeperator();
              // if does not contain seperator define blocks
              if (ldateString.indexOf(seperator) === -1) {
                  ldateString = ldateString.substr(0, 2) + seperator +
                    ldateString.substr(2, 2) + seperator +
                    ldateString.substr(4, 4);
              }
              return ldateString;
          }
      },
      ui = {

          /**
           * On blur event to trigger format of date in input field
           * @param {object} - Elment to be evaluated
           */
          onBlur: function (elem) {
              var $input = $(elem),
                  ldate = $input.val(),
                  fldate = api.formatLocalDateString(ldate)
              ;
              $input.val(fldate);

              return;
          }
      }
    ;

    // [EVENTS]

    /**
     * On blur of input date, trigger format of date
     */
    $obj.on('blur', 'input.date', function () {
        ui.onBlur(this);
    });

    return $obj;
};

/**
 * JQuery wiring to create elements
 */
$.fn.DateField = function (opt) {
    return new...