(function($) {
    var opts = {};
    var monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
    var timePassed = 0;
    var dOrg = null;

    $.fn.ServerTime = function(options) {
        opts = $.extend({}, $.fn.ServerTime.defaults, options);
        dOrg = opts.initialDate;
        timePassed = dOrg.getTime();

        return this.each(function() {
            var $this = $(this);
            updateTime($this);
            setInterval(function() { updateTime($this); }, opts.interval);
        });
    };

    function Test(s) {
        $(".test").html(s);
    }

    function padLeft(s) {
        if (s.length == 1)
            return "0" + s;
        else
            return s;
    }

    function formatTime(hour) {
        return (hour < 12) ? "am" : "pm";
    }

    function updateTime($obj) {
        dOrg.setTime(timePassed);
        var y = dOrg.getFullYear();
        var m = dOrg.getMonth();
        var d = dOrg.getDate();
        var h = dOrg.getHours();
        var min = dOrg.getMinutes();
        var sec = dOrg.getSeconds();
        var msec = dOrg.getMilliseconds();
        $obj.html(padLeft(d.toString()) + " " + monthNames[m] + " " + y + " - " + padLeft(((h > 12)?(h - 12) : h).toString()) + ":" + padLeft(min.toString()) + ":" + padLeft(sec.toString()) + formatTime(h) + " (Sydney Time)");
        timePassed += opts.interval;
    }

    //
    // plugin defaults
    //
    $.fn.ServerTime.defaults = {
        initialDate: new Date(),
        interval: 1000
    };

})(jQuery);

