﻿/*
* jQuery jclock - Clock plugin - v 1.2.0
* http://plugins.jquery.com/project/jclock
*
* Copyright (c) 2007-2008 Doug Sparling <http://www.dougsparling.com>
* Licensed under the MIT License:
*   http://www.opensource.org/licenses/mit-license.php
*/
(function($) {

    $.fn.jclock = function(options) {
        var version = '1.2.0';

        // options
        var opts = $.extend({}, $.fn.jclock.defaults, options);

        return this.each(function() {
            $this = $(this);
            $this.timerID = null;
            $this.running = false;

            var o = $.meta ? $.extend({}, opts, $this.data()) : opts;

            $this.timeNotation = o.timeNotation;
            $this.am_pm = o.am_pm;
            $this.utc = o.utc;
            $this.utc_offset = o.utc_offset;

            $this.css({
                fontFamily: o.fontFamily,
                fontSize: o.fontSize,
                backgroundColor: o.background,
                color: o.foreground
            });

            $.fn.jclock.startClock($this);

        });
    };

    $.fn.jclock.startClock = function(el) {
        $.fn.jclock.stopClock(el);
        $.fn.jclock.displayTime(el);
    }
    $.fn.jclock.stopClock = function(el) {
        if (el.running) {
            clearTimeout(el.timerID);
        }
        el.running = false;
    }
    $.fn.jclock.displayTime = function(el) {
        var time = $.fn.jclock.getTime(el);
        el.html(time);
        el.timerID = setTimeout(function() { $.fn.jclock.displayTime(el) }, 1000);
    }
    $.fn.jclock.getTime = function(el) {
        var now = new Date();
        var hours, minutes, seconds;

        if (el.utc == true) {
            var localTime = now.getTime();
            var localOffset = now.getTimezoneOffset() * 60000;
            var utc = localTime + localOffset;
            var utcTime = utc + (3600000 * el.utc_offset);
            now = new Date(utcTime);
        }
        hours = now.getHours();
        minutes = now.getMinutes();
        seconds = now.getSeconds();

        var am_pm_text = '';
        (hours >= 12) ? am_pm_text = " PM" : am_pm_text = " AM";

        if (el.timeNotation == '12h') {
            hours = ((hours > 12) ? hours - 12 : hours);
        } else if (el.timeNotation == '12hh') {
            hours = ((hours > 12) ? hours - 12 : hours);
            hours = ((hours < 10) ? "0" : "") + hours;
        } else {
            hours = ((hours < 10) ? "0" : "") + hours;
        }

        minutes = ((minutes < 10) ? "0" : "") + minutes;
        seconds = ((seconds < 10) ? "0" : "") + seconds;

        var timeNow = hours + ":" + minutes + ":" + seconds;
        if ((el.timeNotation == '12h' || el.timeNotation == '12hh') && (el.am_pm == true)) {
            timeNow += am_pm_text;
        }

        return timeNow;
    };

    // plugin defaults
    $.fn.jclock.defaults = {
        timeNotation: '24h',
        am_pm: false,
        utc: false,
        fontFamily: '',
        fontSize: '',
        foreground: '',
        background: '',
        utc_offset: 0
    };

})(jQuery);

