220 lines
7.0 KiB
JavaScript
220 lines
7.0 KiB
JavaScript
/*
|
|
* jQuery jclock - Clock plugin - v 2.3.0
|
|
* http://plugins.jquery.com/project/jclock
|
|
*
|
|
* Copyright (c) 2007-2009 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 = '2.3.0';
|
|
|
|
// 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.getTime(el);
|
|
el.html(time);
|
|
el.timerID = setTimeout(function(){$.fn.jclock.displayTime(el)},el.timeout);
|
|
}
|
|
|
|
$.fn.jclock.getTime = 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);
|
|
now = new Date(utcTime);
|
|
}
|
|
|
|
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(now, 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 "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);
|
|
$(document).ready(function(){
|
|
$('.jclock').jclock(); //l'horloge
|
|
var tmp;
|
|
|
|
/* A helper function for converting a set of elements to draggables: */
|
|
make_draggable($('.jclock'));
|
|
|
|
});
|