docs: function(time, ignoreWidget, noTrigger) {
        if (!time) {
          this.clear();
          return;
        }
  
        var timeArray,
            hour,
            minute,
            second,
            meridian;
  
        if (typeof time === 'object' && time.getMonth){
          // this is a date object
          hour    = time.getHours();
          minute  = time.getMinutes();
          second  = time.getSeconds();
  
          if (this.showMeridian){
            meridian = 'AM';
            if (hour > 12){
              meridian = 'PM';
              hour = hour % 12;
            }
  
            if (hour === 12){
              meridian = 'PM';
            }
          }
        } else {
          if (time.match(/p/i) !== null) {
            meridian = 'PM';
          } else {
            meridian = 'AM';
          }
  
          time = time.replace(/[^0-9\:]/g, '');
  
          timeArray = time.split(':');
  
          hour = timeArray[0] ? timeArray[0].toString() : timeArray.toString();
          minute = timeArray[1] ? timeArray[1].toString() : '';
          second = timeArray[2] ? timeArray[2].toString() : '';
  
          // idiot proofing
          if (hour.length > 4) {
            second = hour.substr(4, 2);
          }
          if (hour.length > 2) {
            minute = hour.substr(2, 2);
            hour = hour.substr(0, 2);
          }
          if (minute.length > 2) {
            second = minute.substr(2, 2);
            minute = minute.substr(0, 2);
          }
          if (second.length > 2) {
            second = second.substr(2, 2);
          }
  
          hour = parseInt(hour, 10);
          minute = parseInt(minute, 10);
          second = parseInt(second, 10);
  
          if (isNaN(hour)) {
            hour = 0;
          }
          if (isNaN(minute)) {
            minute = 0;
          }
          if (isNaN(second)) {
            second = 0;
          }
  
          if (this.showMeridian) {
            if (hour < 1) {
              hour = 1;
            } else if (hour > 12) {
              hour = 12;
            }
          } else {
            if (hour >= 24) {
              hour = 23;
            } else if (hour < 0) {
              hour = 0;
            }
            if (hour < 13 && meridian === 'PM') {
              hour = hour + 12;
            }
          }
  
          if (minute < 0) {
            minute = 0;
          } else if (minute >= 60) {
            minute = 59;
          }
  
          if (this.showSeconds) {
            if (isNaN(second)) {
              second = 0;
            } else if (second < 0) {
              second = 0;
            } else if (second >= 60) {
              second = 59;
            }
          }
        }
  
        this.hour = hour;
        this.minute = minute;
        this.second = second;
        this.meridian = meridian;
  
        // cozy-change: add noTrigger flag
        if (noTrigger) {
          this.updateElement();
          if (!ignoreWidget) {
            this.updateWidget();
          }
        } else {
          this.update(ignoreWidget); // cozy-change: base code
        }
        // END cozy-change
      }