Knob - Timer Countdown #2

by bizamajig

HTML

<script src="https://raw.github.com/aterrien/jQuery-Knob/master/js/jquery.knob.js"></script>
<table style="display:inline;">
    <tr>
        <td>
            <input type="text" id="inp1-min" class="knob1" value="0" data-width="120" data-thickness="0.4" />
        </td>
    </tr>
    <tr>
        <td>
            <div id="inp1-min-label" style="position:relative;left:45px;top:-100px;font:bold 16px Arial;color: rgb(135, 206, 235);">MIN</div>
        </td>
    </tr>
</table>

<table style="display:inline;">
    <tr>
        <td>
            <input type="text" id="inp1-std" class="knob1" value="0" data-width="120" data-thickness="0.4" data-fgColor="green" />
        </td>
    </tr>
    <tr>
        <td>
            <div id="inp1-min-label" style="position:relative;left:45px;top:-100px;font:bold 16px Arial;color: green;">STD</div>
        </td>
    </tr>
</table>

<table style="display:inline;">
    <tr>
        <td>
            <input type="text" id="inp1-max" class="knob1" value="0" data-width="120" data-thickness="0.4" data-fgColor="red" />
        </td>
    </tr>
    <tr>
        <td>
            <div id="inp1-min-label" style="position:relative;left:45px;top:-100px;font:bold 16px Arial;color: red;">MAX</div>
        </td>
    </tr>
</table>

JavaScript

jQuery(document).ready(function ($) {

      var max1 = 45 * 60 * 1000;


      function pad(num, size) {
          return ('000000000' + num).substr(-size);
      }

      function hmsToSecondsOnly(str) {
          var p = str.split(':'),
              s = 0,
              m = 1;

          while (p.length > 0) {
              s += m * parseInt(p.pop(), 10);
              m *= 60;
          }
          return s;
      }

      function parseTime(v) {
          //should return back value parsed from string
          //in clock we do time parsing to seconds and multiply by 1000
          //console.log('parse input:' + v);
          if (v === 'OFF') return 0;
          if (typeof (v) === 'string') {
              var result = (hmsToSecondsOnly(v + '') + 0);
              return result * 1000;
          }
          if (typeof (v) === 'number') {
              return v;
          }
          return v;
      }

      function formatTime(v, prefix) {
          var text1 = '';
          if (v === 0) {
              text1 = 'OFF';
              return text1;
          }
          if (v == max1) {
              max1 = max1 + 60 * 1000;
              $('#' + prefix + '-min').trigger('configure', {
                  'max': max1
              });
              $('#' + prefix + '-std').trigger('configure', {
                  'max': max1
              });
              $('#' + prefix + '-max').trigger('configure', {
                  'max': max1
              });
          }
          var v1 = v / 1000;
          var h = Math.floor(v1 / 3600);
          var m = Math.floor((v1 - h * 3600) / 60);
          var s = v1 - m * 60 - h * 3600;
          text1 = pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2);
          return text1;
      }

      function updateMin(prefix) {
          var doc_min = document.getElementById(prefix + '-min');
          var doc_std = document.getElementById(prefix + '-std');
          var doc_max = document.getElementById(prefix + '-max');
          var...