Advertisements
Home > JQuery > JClock

JClock


jquery.jclock.js:

/*
* jQuery jclock – Clock plugin – v 2.3.2
* http://plugins.jquery.com/project/jclock
*
* Copyright (c) 2007-2011 Doug Sparling <http://www.dougsparling.com&gt;
* Licensed under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
*/
(function($) {

$.fn.jclock = function(options) {
var version = ’2.3.2′;

// options
var opts = $.extend({}, $.fn.jclock.defaults, options);

return this.each(function() {
$this = $(this);
$this.timerID = null;
$this.running = false;

// Record keeping for seeded clock
$this.increment = 0;
$this.lastCalled = new Date().getTime();

var o = $.meta ? $.extend({}, opts, $this.data()) : opts;

$this.format = o.format;
$this.utc = o.utc;
// deprecate utc_offset (v 2.2.0)
$this.utcOffset = (o.utc_offset != null) ? o.utc_offset : o.utcOffset;
$this.seedTime = o.seedTime;
$this.timeout = o.timeout;

$this.css({
fontFamily: o.fontFamily,
fontSize: o.fontSize,
backgroundColor: o.background,
color: o.foreground
});

// %a
$this.daysAbbrvNames = new Array(7);
$this.daysAbbrvNames[0] = “Sun”;
$this.daysAbbrvNames[1] = “Mon”;
$this.daysAbbrvNames[2] = “Tue”;
$this.daysAbbrvNames[3] = “Wed”;
$this.daysAbbrvNames[4] = “Thu”;
$this.daysAbbrvNames[5] = “Fri”;
$this.daysAbbrvNames[6] = “Sat”;

// %A
$this.daysFullNames = new Array(7);
$this.daysFullNames[0] = “Sunday”;
$this.daysFullNames[1] = “Monday”;
$this.daysFullNames[2] = “Tuesday”;
$this.daysFullNames[3] = “Wednesday”;
$this.daysFullNames[4] = “Thursday”;
$this.daysFullNames[5] = “Friday”;
$this.daysFullNames[6] = “Saturday”;

// %b
$this.monthsAbbrvNames = new Array(12);
$this.monthsAbbrvNames[0] = “Jan”;
$this.monthsAbbrvNames[1] = “Feb”;
$this.monthsAbbrvNames[2] = “Mar”;
$this.monthsAbbrvNames[3] = “Apr”;
$this.monthsAbbrvNames[4] = “May”;
$this.monthsAbbrvNames[5] = “Jun”;
$this.monthsAbbrvNames[6] = “Jul”;
$this.monthsAbbrvNames[7] = “Aug”;
$this.monthsAbbrvNames[8] = “Sep”;
$this.monthsAbbrvNames[9] = “Oct”;
$this.monthsAbbrvNames[10] = “Nov”;
$this.monthsAbbrvNames[11] = “Dec”;

// %B
$this.monthsFullNames = new Array(12);
$this.monthsFullNames[0] = “January”;
$this.monthsFullNames[1] = “February”;
$this.monthsFullNames[2] = “March”;
$this.monthsFullNames[3] = “April”;
$this.monthsFullNames[4] = “May”;
$this.monthsFullNames[5] = “June”;
$this.monthsFullNames[6] = “July”;
$this.monthsFullNames[7] = “August”;
$this.monthsFullNames[8] = “September”;
$this.monthsFullNames[9] = “October”;
$this.monthsFullNames[10] = “November”;
$this.monthsFullNames[11] = “December”;

$.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.currentTime(el);
var formatted_time = $.fn.jclock.formatTime(time, el);
el.attr(‘currentTime’, time.getTime())
el.html(formatted_time);
el.timerID = setTimeout(function(){$.fn.jclock.displayTime(el)},el.timeout);
}

$.fn.jclock.currentTime = function(el) {
if(typeof(el.seedTime) == ‘undefined’) {
// Seed time not being used, use current time
var now = new Date();
} else {
// Otherwise, use seed time with increment
el.increment += new Date().getTime() – el.lastCalled;
var now = new Date(el.seedTime + el.increment);
el.lastCalled = new Date().getTime();
}

if(el.utc == true) {
var localTime = now.getTime();
var localOffset = now.getTimezoneOffset() * 60000;
var utc = localTime + localOffset;
var utcTime = utc + (3600000 * el.utcOffset);
var now = new Date(utcTime);
}

return now
}

$.fn.jclock.formatTime = function(time, el) {

var timeNow = “”;
var i = 0;
var index = 0;
while ((index = el.format.indexOf(“%”, i)) != -1) {
timeNow += el.format.substring(i, index);
index++;

// modifier flag
//switch (el.format.charAt(index++)) {
//}

var property = $.fn.jclock.getProperty(time, el, el.format.charAt(index));
index++;

//switch (switchCase) {
//}

timeNow += property;
i = index
}

timeNow += el.format.substring(i);
return timeNow;
};

$.fn.jclock.getProperty = function(dateObject, el, property) {

switch (property) {
case “a”: // abbrv day names
return (el.daysAbbrvNames[dateObject.getDay()]);
case “A”: // full day names
return (el.daysFullNames[dateObject.getDay()]);
case “b”: // abbrv month names
return (el.monthsAbbrvNames[dateObject.getMonth()]);
case “B”: // full month names
return (el.monthsFullNames[dateObject.getMonth()]);
case “d”: // day 01-31
return ((dateObject.getDate() < 10) ? “0″ : “”) + dateObject.getDate();
case “H”: // hour as a decimal number using a 24-hour clock (range 00 to 23)
return ((dateObject.getHours() < 10) ? “0″ : “”) + dateObject.getHours();
case “I”: // hour as a decimal number using a 12-hour clock (range 01 to 12)
var hours = (dateObject.getHours() % 12 || 12);
return ((hours < 10) ? “0″ : “”) + hours;
case “l”: // hour as a decimal number using a 12-hour clock (range 1 to 12)
var hours = (dateObject.getHours() % 12 || 12);
//return ((hours < 10) ? “0″ : “”) + hours;
return hours;
case “m”: // month number
return (((dateObject.getMonth() + 1) < 10) ? “0″ : “”) + (dateObject.getMonth() + 1);
case “M”: // minute as a decimal number
return ((dateObject.getMinutes() < 10) ? “0″ : “”) + dateObject.getMinutes();
case “p”: // either `am’ or `pm’ according to the given time value,
// or the corresponding strings for the current locale
return (dateObject.getHours() < 12 ? “am” : “pm”);
case “P”: // either `AM’ or `PM’ according to the given time value,
return (dateObject.getHours() < 12 ? “AM” : “PM”);
case “S”: // second as a decimal number
return ((dateObject.getSeconds() < 10) ? “0″ : “”) + dateObject.getSeconds();
case “y”: // two-digit year
return dateObject.getFullYear().toString().substring(2);
case “Y”: // full year
return (dateObject.getFullYear());
case “%”:
return “%”;
}

}

// plugin defaults (24-hour)
$.fn.jclock.defaults = {
format: ‘%H:%M:%S’,
utcOffset: 0,
utc: false,
fontFamily: ”,
fontSize: ”,
foreground: ”,
background: ”,
seedTime: undefined,
timeout: 1000 // 1000 = one second, 60000 = one minute
};

})(jQuery);

HTML File :

<html>
<head>
<title>jclock – multiple clocks using different time zone offsets</title>

<script type=”text/javascript” src=”jquery-1.3.1.min.js”></script>
<script type=”text/javascript” src=”jquery.jclock.js”></script>

<script type=”text/javascript”>
$(function($) {
var optionsEST = {
format: ‘%A %B %d, %Y %I:%M:%S %p’, // 12-hour
utc: true,
utcOffset: -5
}
$(‘#jclock1′).jclock(optionsEST);

var optionsPST = {
format: ‘%A %B %d, %Y %I:%M:%S %p’, // 12-hour
utc: true,
utcOffset: -7
}
$(‘#jclock2′).jclock(optionsPST);

var optionsIndia = {
format: ‘%A %B %d, %Y %I:%M:%S %p’, // 12-hour
utc: true,
utcOffset: 5.5
}
$(‘#jclock3′).jclock(optionsIndia);

});
</script>

</head>

<body>

<p>EST: <span id=”jclock1″></span></p>

<p>PST: <span id=”jclock2″></span></p>

<p>India: <span id=”jclock3″></span></p>

</body>
</html>

Advertisements
Categories: JQuery
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: