(function() {
  var JsClock;

  JsClock = function() {
    function JsClock(options) {
      this.wday = ['日', '月', '火', '水', '木', '金', '土'];
      this.now  = options.startDate || new Date();

      this.debug = options.debug || false;

      var self = this;

      window.onload = function() {
        var elem = document.getElementById('debugClock');

        setInterval(function() {
          self.now.setSeconds(self.now.getSeconds() + 1);

          if (self.debug && elem !== undefined) elem.innerHTML = self._debugFormatDate();
          if (options.callback !== undefined) options.callback(self._getNowJson());
        }, 1000);
      };
    }

    JsClock.prototype._paddingZero = function(s, l) {
      if (s.length < l) for (var i = 0; i < l - s.length; i++) s = '0' + s;
      return s;
    };
    JsClock.prototype._getNowJson = function() {
      return { year: this.now.getFullYear().toString(),
               month: this._paddingZero((this.now.getMonth() + 1).toString(), 2),
               date: this._paddingZero(this.now.getDate().toString(), 2),
               wday: this.wday[this.now.getDay()],
               times: this.now.toLocaleString().split(' ')[1],
               hours: this._paddingZero(this.now.getHours().toString(), 2),
               minutes: this._paddingZero(this.now.getMinutes().toString(), 2),
               seconds: this._paddingZero(this.now.getSeconds().toString(), 2) };
    };
    JsClock.prototype._debugFormatDate = function() {
      var i = this._getNowJson();
      return i.year + '/' + i.month + '/' + i.date + '(' + i.wday + ') ' +
             i.hours + ':' + i.minutes + ':' + i.seconds;
    };

    return JsClock;
  }();

  this.JsClock = JsClock;
}).call(this);

@@ -189,179 +189,477 @@
 e();
-%0A%0A      this.debug = options.debug %7C%7C false;%0A%0A      var self = this;%0A%0A      window.onload = function() %7B%0A        var elem = document.getElementById('debugClock');%0A%0A       
+      %0A      this.callback = options.callback %7C%7C undefined;%0A%0A      this.debug = options.debug %7C%7C false;%0A      %0A      this.intervalId = null;%0A%0A      var self = this;%0A%0A      if (options.autodo === undefined %7C%7C !options.autodo) return;%0A      %0A      window.onload = function() %7B%0A        self.start();%0A      %7D;%0A    %7D%0A    %0A    JsClock.prototype.start = function() %7B%0A      var elem = document.getElementById('debugClock');%0A      var self = this;%0A      %0A      self.intervalId =
  set
@@ -684,26 +684,24 @@
 ) %7B%0A        
-  
 self.now.set
@@ -737,18 +737,16 @@
  + 1);%0A%0A
-  
         
@@ -833,29 +833,24 @@
         
-  
 if (
-options
+self
 .callbac
@@ -866,23 +866,20 @@
 efined) 
-options
+self
 .callbac
@@ -907,18 +907,16 @@
 ;%0A      
-  
 %7D, 1000)
@@ -921,26 +921,153 @@
 0);%0A    
-  %7D;%0A    %7D
+%7D;%0A    JsClock.prototype.stop = function() %7B%0A      if (this.intervalId !== null) %7B%0A        clearInterval(this.intervalId);%0A      %7D%0A    %7D;
 %0A%0A    Js
@@ -1258,24 +1258,182 @@
 unction() %7B%0A
+      var ampm = 'am';%0A      var ampmHours = this.now.getHours();%0A      if (this.now.getHours() %3E 12) %7B%0A        ampm = 'pm';%0A        ampmHours -= 12;%0A      %7D%0A
       return
@@ -1980,16 +1980,126 @@
 ng(), 2)
+,%0A               ampm: ampm,%0A               ampmHours: this._paddingZero(ampmHours.toString(), 2)%0A            
  %7D;%0A    

Update js_clock.js