Actualización
This commit is contained in:
705
main/inc/lib/javascript/epiclock/javascript/jquery.dateformat.js
Normal file
705
main/inc/lib/javascript/epiclock/javascript/jquery.dateformat.js
Normal file
@@ -0,0 +1,705 @@
|
||||
/*!
|
||||
* Date formatting plugin
|
||||
*
|
||||
* Copyright (c) Eric Garside
|
||||
* Dual licensed under:
|
||||
* MIT: http://www.opensource.org/licenses/mit-license.php
|
||||
* GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
/*global jQuery */
|
||||
|
||||
/*jslint white: true, browser: true, onevar: true, undef: true, eqeqeq: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true, maxerr: 50, indent: 4 */
|
||||
|
||||
(function ($) {
|
||||
|
||||
//------------------------------
|
||||
//
|
||||
// Property Declaration
|
||||
//
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* String formatting for each month, with January at index "0" and December at "11".
|
||||
*/
|
||||
var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
|
||||
|
||||
/**
|
||||
* String formatting for each day, with Sunday at index "0" and Saturday at index "6"
|
||||
*/
|
||||
days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
|
||||
|
||||
/**
|
||||
* The number of days in each month.
|
||||
*/
|
||||
counts = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
|
||||
|
||||
/**
|
||||
* English ordinal suffix for corresponding days of the week.
|
||||
*/
|
||||
suffix = [null, 'st', 'nd', 'rd'],
|
||||
|
||||
/**
|
||||
* Define the object which will hold reference to the actual formatting functions. By not directly prototyping these
|
||||
* into the date function, we vastly reduce the amount of bloat adding these options causes.
|
||||
*/
|
||||
_;
|
||||
|
||||
//------------------------------
|
||||
//
|
||||
// Internal Methods
|
||||
//
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* Left-pad the string with the provided string up to the provided length.
|
||||
*
|
||||
* @param format The string to pad.
|
||||
*
|
||||
* @param string The string to pad with.
|
||||
*
|
||||
* @param length The length to make the string (default is "0" if undefined).
|
||||
*
|
||||
* @return The padded string.
|
||||
*/
|
||||
function pad(format, string, length)
|
||||
{
|
||||
format = format + '';
|
||||
length = length || 2;
|
||||
|
||||
return format.length < length ? new Array(1 + length - format.length).join(string) + format : format;
|
||||
}
|
||||
|
||||
/**
|
||||
* Right-pad the string with the provided string up to the provided length.
|
||||
*
|
||||
* @param format The string to pad.
|
||||
*
|
||||
* @param string The string to pad with.
|
||||
*
|
||||
* @param length The length to make the string (default is "0" if undefined).
|
||||
*
|
||||
* @return The padded string.
|
||||
*/
|
||||
function rpad(format, string, length)
|
||||
{
|
||||
format = format + '';
|
||||
length = length || 2;
|
||||
|
||||
return format.length < length ? format + new Array(1 + length - format.length).join(string) : format;
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform a modulus calculation on a date object to extract the desired value.
|
||||
*
|
||||
* @param date The date object to perform the calculation on.
|
||||
*
|
||||
* @param mod1 The value to divide the date value seconds by.
|
||||
*
|
||||
* @param mod2 The modulus value.
|
||||
*
|
||||
* @return The computed value.
|
||||
*/
|
||||
function modCalc(date, mod1, mod2)
|
||||
{
|
||||
return (Math.floor(Math.floor(date.valueOf() / 1e3) / mod1) % mod2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a string, return a properly formatted date string.
|
||||
*
|
||||
* @param date The date object being formatted.
|
||||
*
|
||||
* @param format The formatting string.
|
||||
*
|
||||
* @return The formatted date string
|
||||
*/
|
||||
function formatDate(date, format)
|
||||
{
|
||||
format = format.split('');
|
||||
|
||||
var output = '',
|
||||
|
||||
/**
|
||||
* The characters '{' and '}' are the start and end characters of an escape. Anything between these
|
||||
* characters will not be treated as a formatting commands, and will merely be appended to the output
|
||||
* string. When the buffering property here is true, we are in the midst of appending escaped characters
|
||||
* to the output, and the formatting check should therefore be skipped.
|
||||
*/
|
||||
buffering = false,
|
||||
|
||||
char = '',
|
||||
|
||||
index = 0;
|
||||
|
||||
for (; index < format.length; index++)
|
||||
{
|
||||
char = format[index] + '';
|
||||
|
||||
switch (char)
|
||||
{
|
||||
|
||||
case ' ':
|
||||
output += char;
|
||||
break;
|
||||
|
||||
case '{':
|
||||
case '}':
|
||||
buffering = char === '{';
|
||||
break;
|
||||
|
||||
default:
|
||||
if (!buffering && _[char])
|
||||
{
|
||||
output += _[char].apply(date);
|
||||
}
|
||||
else
|
||||
{
|
||||
output += char;
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
//------------------------------
|
||||
//
|
||||
// Class Definition
|
||||
//
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* The formatting object holds all the actual formatting commands which should be accessible
|
||||
* for date formatting.
|
||||
*
|
||||
* Each method should reference the date function via its "this" context, which will be set
|
||||
* by the formatter.
|
||||
*
|
||||
* This function makes heavy use of the exponent notation for large numbers, to save space. In
|
||||
* javascript, any number with a set of trailing zeros can be expressed in exponent notation.
|
||||
*
|
||||
* Ex. 15,000,000,000 === 15e9, where the number after "e" represents the number of zeros.
|
||||
*/
|
||||
_ =
|
||||
{
|
||||
//------------------------------
|
||||
// Timer Formatting
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* This is intended to be used for delta computation when subtracting one date object from another.
|
||||
*
|
||||
* @return The number of days since the epoch.
|
||||
*/
|
||||
V: function ()
|
||||
{
|
||||
return modCalc(this, 864e2, 1e5);
|
||||
},
|
||||
|
||||
/**
|
||||
* This is intended to be used for delta computation when subtracting one date object from another.
|
||||
*
|
||||
* @return The number of days since the epoch, padded to 2 digits.
|
||||
*/
|
||||
v: function ()
|
||||
{
|
||||
return pad(_.V.apply(this), 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* This is intended to be used for delta computation when subtracting one date object from another.
|
||||
*
|
||||
* @return The number of days since the epoch, offset for years.
|
||||
*/
|
||||
K: function ()
|
||||
{
|
||||
return _.V.apply(this) % 365;
|
||||
},
|
||||
|
||||
/**
|
||||
* This is intended to be used for delta computation when subtracting one date object from another.
|
||||
*
|
||||
* @return The number of days since the epoch, offset for years, padded to 2 digits.
|
||||
*/
|
||||
k: function ()
|
||||
{
|
||||
return pad(_.K.apply(this), 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* This is intended to be used for delta computation when subtracting one date object from another.
|
||||
*
|
||||
* @return The number of hours since the epoch.
|
||||
*/
|
||||
X: function ()
|
||||
{
|
||||
return modCalc(this, 36e2, 24);
|
||||
},
|
||||
|
||||
/**
|
||||
* This is intended to be used for delta computation when subtracting one date object from another.
|
||||
*
|
||||
* @return The number of hours since the epoch, padded to two digits.
|
||||
*/
|
||||
x: function ()
|
||||
{
|
||||
return pad(_.X.apply(this), 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* This is intended to be used for delta computation when subtracting one date object from another.
|
||||
*
|
||||
* @return The number of minutes since the epoch.
|
||||
*/
|
||||
p: function ()
|
||||
{
|
||||
return modCalc(this, 60, 60);
|
||||
},
|
||||
|
||||
/**
|
||||
* This is intended to be used for delta computation when subtracting one date object from another.
|
||||
*
|
||||
* @return The number of minutes since the epoch, padded to two digits.
|
||||
*/
|
||||
C: function ()
|
||||
{
|
||||
return pad(_.p.apply(this), 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* This is intended to be used for delta computation when subtracting one date object from another.
|
||||
*
|
||||
* @return The number of minutes since the epoch, uncapped. (1min 30seconds would be 90s)
|
||||
*/
|
||||
E: function ()
|
||||
{
|
||||
return (_.X.apply(this) * 60) + _.p.apply(this);
|
||||
},
|
||||
|
||||
/**
|
||||
* This is intended to be used for delta computation when subtracting one date object from another.
|
||||
*
|
||||
* @return The number of minutes since the epoch, uncapped and padded to two digits. (1min 30seconds would be 90s)
|
||||
*/
|
||||
e: function ()
|
||||
{
|
||||
return pad(_.e.apply(this), 0);
|
||||
},
|
||||
|
||||
//------------------------------
|
||||
// Day Formatting
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* @return The day of the month, padded to two digits.
|
||||
*/
|
||||
d: function ()
|
||||
{
|
||||
return pad(this.getDate(), 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return A textual representation of the day, three letters.
|
||||
*/
|
||||
D: function ()
|
||||
{
|
||||
return days[this.getDay()].substring(0, 3);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return Day of the month without leading zeros.
|
||||
*/
|
||||
j: function ()
|
||||
{
|
||||
return this.getDate();
|
||||
},
|
||||
|
||||
/**
|
||||
* @return A full textual representation of the day of the week.
|
||||
*/
|
||||
l: function ()
|
||||
{
|
||||
return days[this.getDay()];
|
||||
},
|
||||
|
||||
/**
|
||||
* @return ISO-8601 numeric representation of the day of the week.
|
||||
*/
|
||||
N: function ()
|
||||
{
|
||||
return this.getDay() + 1;
|
||||
},
|
||||
|
||||
/**
|
||||
* @return English ordinal suffix for the day of the month, two characters.
|
||||
*/
|
||||
S: function ()
|
||||
{
|
||||
return suffix[this.getDate()] || 'th';
|
||||
},
|
||||
|
||||
/**
|
||||
* @return Numeric representation of the day of the week.
|
||||
*/
|
||||
w: function ()
|
||||
{
|
||||
return this.getDay();
|
||||
},
|
||||
|
||||
/**
|
||||
* @return The day of the year (starting from 0).
|
||||
*/
|
||||
z: function ()
|
||||
{
|
||||
return Math.round((this - _.f.apply(this)) / 864e5);
|
||||
},
|
||||
|
||||
//------------------------------
|
||||
// Week
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* @return ISO-8601 week number of year, weeks starting on Monday
|
||||
*/
|
||||
W: function ()
|
||||
{
|
||||
return Math.ceil(((((this - _.f.apply(this)) / 864e5) + _.w.apply(_.f.apply(this))) / 7));
|
||||
},
|
||||
|
||||
//------------------------------
|
||||
// Month
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* @return A full textual representation of a month, such as January.
|
||||
*/
|
||||
F: function ()
|
||||
{
|
||||
return months[this.getMonth()];
|
||||
},
|
||||
|
||||
/**
|
||||
* @return Numeric representation of a month, padded to two digits.
|
||||
*/
|
||||
m: function ()
|
||||
{
|
||||
return pad((this.getMonth() + 1), 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return A short textual representation of a month, three letters.
|
||||
*/
|
||||
M: function ()
|
||||
{
|
||||
return months[this.getMonth()].substring(0, 3);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return Numeric representation of a month, without leading zeros.
|
||||
*/
|
||||
n: function ()
|
||||
{
|
||||
return this.getMonth() + 1;
|
||||
},
|
||||
|
||||
/**
|
||||
* @return Number of days in the given month.
|
||||
*/
|
||||
t: function ()
|
||||
{
|
||||
// For February on leap years, we must return 29.
|
||||
if (this.getMonth() === 1 && _.L.apply(this) === 1)
|
||||
{
|
||||
return 29;
|
||||
}
|
||||
|
||||
return counts[this.getMonth()];
|
||||
},
|
||||
|
||||
|
||||
//------------------------------
|
||||
// Year
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* @return Whether it's a leap year. 1 if it is a leap year, 0 otherwise.
|
||||
*/
|
||||
L: function ()
|
||||
{
|
||||
var Y = _.Y.apply(this);
|
||||
|
||||
return Y % 4 ? 0 : Y % 100 ? 1 : Y % 400 ? 0 : 1;
|
||||
},
|
||||
|
||||
/**
|
||||
* @return A Date object representing the first day of the current year.
|
||||
*/
|
||||
f: function ()
|
||||
{
|
||||
return new Date(this.getFullYear(), 0, 1);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return A full numeric representation of the year, 4 digits.
|
||||
*/
|
||||
Y: function ()
|
||||
{
|
||||
return this.getFullYear();
|
||||
},
|
||||
|
||||
/**
|
||||
* @return A two digit representation of the year.
|
||||
*/
|
||||
y: function ()
|
||||
{
|
||||
return ('' + this.getFullYear()).substr(2);
|
||||
},
|
||||
|
||||
//------------------------------
|
||||
// Time
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* @return Lowercase Ante/Post Meridiem values.
|
||||
*/
|
||||
a: function ()
|
||||
{
|
||||
return this.getHours() < 12 ? 'am' : 'pm';
|
||||
},
|
||||
|
||||
/**
|
||||
* @return Uppercase Ante/Post Meridiem values.
|
||||
*/
|
||||
A: function ()
|
||||
{
|
||||
return _.a.apply(this).toUpperCase();
|
||||
},
|
||||
|
||||
/**
|
||||
* If you ever use this for anything, email <eric@knewton.com>, cause he'd like to know how you found this nonsense useful.
|
||||
*
|
||||
* @return Swatch internet time.
|
||||
*/
|
||||
B: function ()
|
||||
{
|
||||
return pad(Math.floor((((this.getHours()) * 36e5) + (this.getMinutes() * 6e4) + (this.getSeconds() * 1e3)) / 864e2), 0, 3);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return 12-hour format of an hour.
|
||||
*/
|
||||
g: function ()
|
||||
{
|
||||
return this.getHours() % 12 || 12;
|
||||
},
|
||||
|
||||
/**
|
||||
* @return 24-hour format of an hour.
|
||||
*/
|
||||
G: function ()
|
||||
{
|
||||
return this.getHours();
|
||||
},
|
||||
|
||||
/**
|
||||
* @return 12-hour format of an hour, padded to two digits.
|
||||
*/
|
||||
h: function ()
|
||||
{
|
||||
return pad(_.g.apply(this), 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return 24-hour format of an hour, padded to two digits.
|
||||
*/
|
||||
H: function ()
|
||||
{
|
||||
return pad(this.getHours(), 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return Minutes, padded to two digits.
|
||||
*/
|
||||
i: function ()
|
||||
{
|
||||
return pad(this.getMinutes(), 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return Seconds, padded to two digits.
|
||||
*/
|
||||
s: function ()
|
||||
{
|
||||
return pad(this.getSeconds(), 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return Microseconds
|
||||
*/
|
||||
u: function ()
|
||||
{
|
||||
return this.getTime() % 1e3;
|
||||
},
|
||||
|
||||
//------------------------------
|
||||
// Timezone
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* @return Difference to GMT in hours.
|
||||
*/
|
||||
O: function ()
|
||||
{
|
||||
var t = this.getTimezoneOffset() / 60;
|
||||
|
||||
return rpad(pad((t >= 0 ? '+' : '-') + Math.abs(t), 0), 0, 4);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return Difference to GMT in hours, with colon between hours and minutes
|
||||
*/
|
||||
P: function ()
|
||||
{
|
||||
var t = _.O.apply(this);
|
||||
|
||||
return t.subst(0, 3) + ':' + t.substr(3);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return Timezone offset in seconds.
|
||||
*/
|
||||
Z: function ()
|
||||
{
|
||||
return this.getTimezoneOffset() * 60;
|
||||
},
|
||||
|
||||
//------------------------------
|
||||
// Full Date/Time
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* @return ISO 8601 date
|
||||
*/
|
||||
c: function ()
|
||||
{
|
||||
return _.Y.apply(this) + '-' + _.m.apply(this) + '-' + _.d.apply(this) + 'T' + _.H.apply(this) + ':' + _.i.apply(this) + ':' + _.s.apply(this) + _.P.apply(this);
|
||||
},
|
||||
|
||||
/**
|
||||
* @return RFC 2822 formatted date
|
||||
*/
|
||||
r: function ()
|
||||
{
|
||||
return this.toString();
|
||||
},
|
||||
|
||||
/**
|
||||
* @return The number of seconds since the epoch.
|
||||
*/
|
||||
U: function ()
|
||||
{
|
||||
return this.getTime() / 1e3;
|
||||
}
|
||||
};
|
||||
|
||||
//------------------------------
|
||||
//
|
||||
// Native Prototype
|
||||
//
|
||||
//------------------------------
|
||||
|
||||
$.extend(Date.prototype, {
|
||||
|
||||
/**
|
||||
* Given a string of formatting commands, return the date object as a formatted string.
|
||||
*
|
||||
* @param format The formatting string.
|
||||
*
|
||||
* @return The formatted date string
|
||||
*/
|
||||
format: function (format)
|
||||
{
|
||||
return formatDate(this, format);
|
||||
}
|
||||
});
|
||||
|
||||
//------------------------------
|
||||
//
|
||||
// Expose to jQuery
|
||||
//
|
||||
//------------------------------
|
||||
|
||||
$.dateformat =
|
||||
{
|
||||
/**
|
||||
* Get a reference to the formatting rules, or set custom rules.
|
||||
*
|
||||
* @param custom The custom rules to set for formatting.
|
||||
*
|
||||
* @return The formatting rules.
|
||||
*/
|
||||
rules: function (custom)
|
||||
{
|
||||
if (custom !== undefined)
|
||||
{
|
||||
_ = $.extend(_, custom);
|
||||
}
|
||||
|
||||
return _;
|
||||
},
|
||||
|
||||
/**
|
||||
* Determine if the dateformat plugin has the requested formatting rule.
|
||||
*
|
||||
* @param rule The formatting rule to check.
|
||||
*
|
||||
* @return True if the rule exists, false otherwise.
|
||||
*/
|
||||
hasRule: function (rule)
|
||||
{
|
||||
return _[rule] !== undefined;
|
||||
},
|
||||
|
||||
/**
|
||||
* Get a formatting value for a given date.
|
||||
*
|
||||
* @param type The formatting character type to get the value of.
|
||||
*
|
||||
* @param date The date to extract the value from. Defaults to current.
|
||||
*/
|
||||
get: function (type, date)
|
||||
{
|
||||
return _[type].apply(date || new Date());
|
||||
},
|
||||
|
||||
/**
|
||||
* Given a string of formatting commands, return the date object as a formatted string.
|
||||
*
|
||||
* @param format The formatting string.
|
||||
*
|
||||
* @param date The date to extract the value from. Defaults to current.
|
||||
*
|
||||
* @return The formatted date string
|
||||
*/
|
||||
format: function (format, date)
|
||||
{
|
||||
return formatDate(date || new Date(), format);
|
||||
},
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
pad: pad,
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
rpad: rpad
|
||||
};
|
||||
|
||||
}(jQuery));
|
||||
76
main/inc/lib/javascript/epiclock/javascript/jquery.dateformat.min.js
vendored
Normal file
76
main/inc/lib/javascript/epiclock/javascript/jquery.dateformat.min.js
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
/*!
|
||||
Date formatting plugin
|
||||
|
||||
Copyright (c) Eric Garside
|
||||
Dual licensed under:
|
||||
MIT: http://www.opensource.org/licenses/mit-license.php
|
||||
GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
|
||||
*/"use strict";(function($){var months=['January','February','March','April','May','June','July','August','September','October','November','December'],days=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],counts=[31,28,31,30,31,30,31,31,30,31,30,31],suffix=[null,'st','nd','rd'],_;function pad(format,string,length)
|
||||
{format=format+'';length=length||2;return format.length<length?new Array(1+length-format.length).join(string)+format:format;}
|
||||
function rpad(format,string,length)
|
||||
{format=format+'';length=length||2;return format.length<length?format+new Array(1+length-format.length).join(string):format;}
|
||||
function modCalc(date,mod1,mod2)
|
||||
{return(Math.floor(Math.floor(date.valueOf()/1e3)/mod1)%mod2);}
|
||||
function formatDate(date,format)
|
||||
{format=format.split('');var output='',buffering=false,char='',index=0;for(;index<format.length;index++)
|
||||
{char=format[index]+'';switch(char)
|
||||
{case' ':output+=char;break;case'{':case'}':buffering=char==='{';break;default:if(!buffering&&_[char])
|
||||
{output+=_[char].apply(date);}
|
||||
else
|
||||
{output+=char;}
|
||||
break;}}
|
||||
return output;}
|
||||
_={V:function()
|
||||
{return modCalc(this,864e2,1e5);},v:function()
|
||||
{return pad(_.V.apply(this),0);},K:function()
|
||||
{return _.V.apply(this)%365;},k:function()
|
||||
{return pad(_.K.apply(this),0);},X:function()
|
||||
{return modCalc(this,36e2,24);},x:function()
|
||||
{return pad(_.X.apply(this),0);},p:function()
|
||||
{return modCalc(this,60,60);},C:function()
|
||||
{return pad(_.p.apply(this),0);},E:function()
|
||||
{return(_.X.apply(this)*60)+_.p.apply(this);},e:function()
|
||||
{return pad(_.e.apply(this),0);},d:function()
|
||||
{return pad(this.getDate(),0);},D:function()
|
||||
{return days[this.getDay()].substring(0,3);},j:function()
|
||||
{return this.getDate();},l:function()
|
||||
{return days[this.getDay()];},N:function()
|
||||
{return this.getDay()+1;},S:function()
|
||||
{return suffix[this.getDate()]||'th';},w:function()
|
||||
{return this.getDay();},z:function()
|
||||
{return Math.round((this-_.f.apply(this))/864e5);},W:function()
|
||||
{return Math.ceil(((((this-_.f.apply(this))/864e5)+_.w.apply(_.f.apply(this)))/7));},F:function()
|
||||
{return months[this.getMonth()];},m:function()
|
||||
{return pad((this.getMonth()+1),0);},M:function()
|
||||
{return months[this.getMonth()].substring(0,3);},n:function()
|
||||
{return this.getMonth()+1;},t:function()
|
||||
{if(this.getMonth()===1&&_.L.apply(this)===1)
|
||||
{return 29;}
|
||||
return counts[this.getMonth()];},L:function()
|
||||
{var Y=_.Y.apply(this);return Y%4?0:Y%100?1:Y%400?0:1;},f:function()
|
||||
{return new Date(this.getFullYear(),0,1);},Y:function()
|
||||
{return this.getFullYear();},y:function()
|
||||
{return(''+this.getFullYear()).substr(2);},a:function()
|
||||
{return this.getHours()<12?'am':'pm';},A:function()
|
||||
{return _.a.apply(this).toUpperCase();},B:function()
|
||||
{return pad(Math.floor((((this.getHours())*36e5)+(this.getMinutes()*6e4)+(this.getSeconds()*1e3))/864e2),0,3);},g:function()
|
||||
{return this.getHours()%12||12;},G:function()
|
||||
{return this.getHours();},h:function()
|
||||
{return pad(_.g.apply(this),0);},H:function()
|
||||
{return pad(this.getHours(),0);},i:function()
|
||||
{return pad(this.getMinutes(),0);},s:function()
|
||||
{return pad(this.getSeconds(),0);},u:function()
|
||||
{return this.getTime()%1e3;},O:function()
|
||||
{var t=this.getTimezoneOffset()/60;return rpad(pad((t>=0?'+':'-')+Math.abs(t),0),0,4);},P:function()
|
||||
{var t=_.O.apply(this);return t.subst(0,3)+':'+t.substr(3);},Z:function()
|
||||
{return this.getTimezoneOffset()*60;},c:function()
|
||||
{return _.Y.apply(this)+'-'+_.m.apply(this)+'-'+_.d.apply(this)+'T'+_.H.apply(this)+':'+_.i.apply(this)+':'+_.s.apply(this)+_.P.apply(this);},r:function()
|
||||
{return this.toString();},U:function()
|
||||
{return this.getTime()/1e3;}};$.extend(Date.prototype,{format:function(format)
|
||||
{return formatDate(this,format);}});$.dateformat={rules:function(custom)
|
||||
{if(custom!==undefined)
|
||||
{_=$.extend(_,custom);}
|
||||
return _;},hasRule:function(rule)
|
||||
{return _[rule]!==undefined;},get:function(type,date)
|
||||
{return _[type].apply(date||new Date());},format:function(format,date)
|
||||
{return formatDate(date||new Date(),format);},pad:pad,rpad:rpad};}(jQuery));
|
||||
1137
main/inc/lib/javascript/epiclock/javascript/jquery.epiclock.js
Normal file
1137
main/inc/lib/javascript/epiclock/javascript/jquery.epiclock.js
Normal file
File diff suppressed because it is too large
Load Diff
210
main/inc/lib/javascript/epiclock/javascript/jquery.epiclock.min.js
vendored
Normal file
210
main/inc/lib/javascript/epiclock/javascript/jquery.epiclock.min.js
vendored
Normal file
@@ -0,0 +1,210 @@
|
||||
/*!
|
||||
* epiClock 3.0
|
||||
*
|
||||
* Copyright (c) 2008 Eric Garside (http://eric.garside.name)
|
||||
* Dual licensed under:
|
||||
* MIT: http://www.opensource.org/licenses/mit-license.php
|
||||
* GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
|
||||
*/
|
||||
"use strict";(function($){var months=['January','February','March','April','May','June','July','August','September','October','November','December'],days=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],counts=[31,28,31,30,31,30,31,31,30,31,30,31],suffix=[null,'st','nd','rd'],_;function pad(format,string,length)
|
||||
{format=format+'';length=length||2;return format.length<length?new Array(1+length-format.length).join(string)+format:format;}
|
||||
function rpad(format,string,length)
|
||||
{format=format+'';length=length||2;return format.length<length?format+new Array(1+length-format.length).join(string):format;}
|
||||
function modCalc(date,mod1,mod2)
|
||||
{return(Math.floor(Math.floor(date.valueOf()/1e3)/mod1)%mod2);}
|
||||
function formatDate(date,format)
|
||||
{format=format.split('');var output='',buffering=false,char='',index=0;for(;index<format.length;index++)
|
||||
{char=format[index]+'';switch(char)
|
||||
{case' ':output+=char;break;case'{':case'}':buffering=char==='{';break;default:if(!buffering&&_[char])
|
||||
{output+=_[char].apply(date);}
|
||||
else
|
||||
{output+=char;}
|
||||
break;}}
|
||||
return output;}
|
||||
_={V:function()
|
||||
{return modCalc(this,864e2,1e5);},v:function()
|
||||
{return pad(_.V.apply(this),0);},K:function()
|
||||
{return _.V.apply(this)%365;},k:function()
|
||||
{return pad(_.K.apply(this),0);},X:function()
|
||||
{return modCalc(this,36e2,24);},x:function()
|
||||
{return pad(_.X.apply(this),0);},p:function()
|
||||
{return modCalc(this,60,60);},C:function()
|
||||
{return pad(_.p.apply(this),0);},e:function()
|
||||
{return(_.X.apply(this)*60)+_.p.apply(this);},E:function()
|
||||
{return pad(_.e.apply(this),0);},d:function()
|
||||
{return pad(this.getDate(),0);},D:function()
|
||||
{return days[this.getDay()].substring(0,3);},j:function()
|
||||
{return this.getDate();},l:function()
|
||||
{return days[this.getDay()];},N:function()
|
||||
{return this.getDay()+1;},S:function()
|
||||
{return suffix[this.getDate()]||'th';},w:function()
|
||||
{return this.getDay();},z:function()
|
||||
{return Math.round((this-_.f.apply(this))/864e5);},W:function()
|
||||
{return Math.ceil(((((this-_.f.apply(this))/864e5)+_.w.apply(_.f.apply(this)))/7));},F:function()
|
||||
{return months[this.getMonth()];},m:function()
|
||||
{return pad((this.getMonth()+1),0);},M:function()
|
||||
{return months[this.getMonth()].substring(0,3);},n:function()
|
||||
{return this.getMonth()+1;},t:function()
|
||||
{if(this.getMonth()===1&&_.L.apply(this)===1)
|
||||
{return 29;}
|
||||
return counts[this.getMonth()];},L:function()
|
||||
{var Y=_.Y.apply(this);return Y%4?0:Y%100?1:Y%400?0:1;},f:function()
|
||||
{return new Date(this.getFullYear(),0,1);},Y:function()
|
||||
{return this.getFullYear();},y:function()
|
||||
{return(''+this.getFullYear()).substr(2);},a:function()
|
||||
{return this.getHours()<12?'am':'pm';},A:function()
|
||||
{return _.a.apply(this).toUpperCase();},B:function()
|
||||
{return pad(Math.floor((((this.getHours())*36e5)+(this.getMinutes()*6e4)+(this.getSeconds()*1e3))/864e2),0,3);},g:function()
|
||||
{return this.getHours()%12||12;},G:function()
|
||||
{return this.getHours();},h:function()
|
||||
{return pad(_.g.apply(this),0);},H:function()
|
||||
{return pad(this.getHours(),0);},i:function()
|
||||
{return pad(this.getMinutes(),0);},s:function()
|
||||
{return pad(this.getSeconds(),0);},u:function()
|
||||
{return this.getTime()%1e3;},O:function()
|
||||
{var t=this.getTimezoneOffset()/60;return rpad(pad((t>=0?'+':'-')+Math.abs(t),0),0,4);},P:function()
|
||||
{var t=_.O.apply(this);return t.subst(0,3)+':'+t.substr(3);},Z:function()
|
||||
{return this.getTimezoneOffset()*60;},c:function()
|
||||
{return _.Y.apply(this)+'-'+_.m.apply(this)+'-'+_.d.apply(this)+'T'+_.H.apply(this)+':'+_.i.apply(this)+':'+_.s.apply(this)+_.P.apply(this);},r:function()
|
||||
{return this.toString();},U:function()
|
||||
{return this.getTime()/1e3;}};$.extend(Date.prototype,{format:function(format)
|
||||
{return formatDate(this,format);}});$.dateformat={rules:function(custom)
|
||||
{if(custom!==undefined)
|
||||
{_=$.extend(_,custom);}
|
||||
return _;},hasRule:function(rule)
|
||||
{return _[rule]!==undefined;},get:function(type,date)
|
||||
{return _[type].apply(date||new Date());},format:function(format,date)
|
||||
{return formatDate(date||new Date(),format);},pad:pad,rpad:rpad};}(jQuery));"use strict";(function($){var mode={clock:'clock',explicit:'explicit',countdown:'countdown',countup:'countup',rollover:'rollover',expire:'expire',loop:'loop',stopwatch:'stopwatch',holdup:'holdup',timer:'timer'},_=function(selector)
|
||||
{return $(selector).data('epiclock');},events={},instances={},uid=0,now,zero=new Date(0),intervalID,Clock=function()
|
||||
{this.__uid=uid++;instances[this.__uid]={clock:this,frame:{}};};function triggerEvent(uid,event,params)
|
||||
{instances[uid].clock.container.triggerHandler(event,params);if(events[uid]===undefined||events[uid][event]===undefined)
|
||||
{return;}
|
||||
$.each(events[uid][event],function(index,value)
|
||||
{if($.isFunction(value))
|
||||
{value.apply(instances[uid].clock,params||[]);}});}
|
||||
function terminate(clock,current)
|
||||
{triggerEvent(clock.__uid,'timer');switch(clock.mode)
|
||||
{case mode.holdup:case mode.rollover:clock.mode=mode.countup;clock.restart(0);return zero;case mode.expire:case mode.countdown:case mode.timer:clock.destroy();return zero;case mode.loop:clock.restart();return zero;}}
|
||||
function tick(clock)
|
||||
{if(clock.__paused!==undefined&&clock.mode)
|
||||
{return false;}
|
||||
var current=now+clock.__displacement,days;switch(clock.mode)
|
||||
{case mode.holdup:current-=clock.time;if(current>0||current>-1e3)
|
||||
{return terminate(clock,current);}
|
||||
return zero;case mode.countup:case mode.stopwatch:current-=clock.time;break;case mode.explicit:current+=clock.time;break;case mode.rollover:case mode.loop:case mode.expire:case mode.countdown:case mode.timer:current=clock.time-current;if(current<1e3)
|
||||
{return terminate(clock,current);}
|
||||
break;}
|
||||
if(clock.displayOffset!==undefined)
|
||||
{days=parseInt($.dateformat.get('V',current),10);if(days>clock.__days_added)
|
||||
{clock.__days_added=days;clock.displayOffset.days+=days;if(clock.displayOffset.days>=365)
|
||||
{clock.displayOffset.years+=Math.floor(clock.displayOffset.days/365.4%365.4);clock.displayOffset.days=Math.floor(clock.displayOffset.days%365.4);}}}
|
||||
return new Date(current);}
|
||||
function evaluate(clock,symbol,current)
|
||||
{switch(symbol)
|
||||
{case'Q':return clock.displayOffset.years;case'E':return clock.displayOffset.days;case'e':return $.dateformat.pad(clock.displayOffset.days,0);default:return $.dateformat.get(symbol,current);}}
|
||||
function defaultRenderer(frame,value)
|
||||
{frame.text(value);}
|
||||
function render(clock)
|
||||
{var time=tick(clock);if(time===false)
|
||||
{return false;}
|
||||
$.each(instances[clock.__uid].frame,function(symbol,frame)
|
||||
{var value=evaluate(clock,symbol,time)+'';if(frame.data('epiclock-last')!==value)
|
||||
{(clock.__render||defaultRenderer)(frame,value);}
|
||||
frame.data('epiclock-last',value);});triggerEvent(clock.__uid,'rendered');if(clock.container.hasClass('epiclock-wait-for-render'))
|
||||
{clock.container.removeClass('epiclock-wait-for-render');}}
|
||||
function cycleClocks()
|
||||
{now=new Date().valueOf();$.each(instances,function()
|
||||
{render(this.clock);if(this.clock.__destroy)
|
||||
{this.clock.container.removeData('epiclock');delete instances[this.clock.__uid];}});}
|
||||
function startManager()
|
||||
{if(intervalID!==undefined)
|
||||
{return;}
|
||||
$.each(instances,function()
|
||||
{this.clock.resume();});intervalID=setInterval(cycleClocks,_.precision);}
|
||||
function haltManager()
|
||||
{clearInterval(intervalID);intervalID=undefined;$.each(instances,function()
|
||||
{this.clock.pause();});}
|
||||
function defaultFormat(format)
|
||||
{switch(format)
|
||||
{case mode.clock:case mode.explicit:return'F j, Y g:i:s a';case mode.countdown:return'V{d} x{h} i{m} s{s}';case mode.countup:return'Q{y} K{d} x{h} i{m} s{s}';case mode.rollover:return'V{d} x{h} i{m} s{s}';case mode.expire:case mode.timer:return'x{h} i{m} s{s}';case mode.loop:return'i{m} s{s}';case mode.stopwatch:return'x{h} C{m} s{s}';case mode.holdup:return'Q{y} K{d} x{h} i{m} s{s}';}}
|
||||
function configureInstance(properties)
|
||||
{var clock=new Clock(),modifier=1;clock.mode=properties.mode||mode.clock;if(properties.offset!==undefined)
|
||||
{clock.__offset=((properties.offset.years||0)*3157056e4+
|
||||
(properties.offset.days||0)*864e5+
|
||||
(properties.offset.hours||0)*36e5+
|
||||
(properties.offset.minutes||0)*6e4+
|
||||
(properties.offset.seconds||0)*1e3);}
|
||||
if(properties.startpaused)
|
||||
{clock.__paused=new Date().valueOf();}
|
||||
clock.__displacement=properties.utc===true||properties.gmt===true?new Date().getTimezoneOffset()*6e4:0;clock.__render=$.isFunction(properties.renderer)?properties.renderer:_.renderers[properties.renderer];clock.__days_added=0;clock.__tare=properties.tare||false;clock.format=properties.format||defaultFormat(clock.mode);clock.time=(properties.time||properties.target?new Date(properties.time||properties.target):new Date()).valueOf();clock.displayOffset=$.extend({years:0,days:0},properties.displayOffset);switch(clock.mode)
|
||||
{case mode.clock:case mode.countup:break;case mode.explicit:clock.__displacement-=new Date().valueOf();break;case mode.timer:case mode.loop:modifier=-1;clock.__tare=true;clock.__displacement-=1e3;break;case mode.expire:case mode.countdown:case mode.rollover:modifier=-1;clock.__displacement-=1e3;break;case mode.holdup:if(clock.time<new Date().valueOf())
|
||||
{clock.mode=mode.countup;}
|
||||
else
|
||||
{clock.__displacement-=1e3;}
|
||||
break;case mode.stopwatch:clock.__tare=true;break;default:throw'EPICLOCK_INVALID_MODE';}
|
||||
clock.__displacement+=modifier*clock.__offset;return clock;}
|
||||
function printTick(clock)
|
||||
{now=new Date().valueOf();return tick(clock);}
|
||||
$.extend(_,{precision:500,modes:mode,renderers:{},addRenderer:function(key,renderer,setup)
|
||||
{_.renderers[key]=renderer;if($.isFunction(setup))
|
||||
{_.renderers[key].setup=setup;}
|
||||
return _;},make:function(properties,container,template)
|
||||
{var clock=configureInstance(properties),output='',buffering=false,char='',index=0,format=clock.format.split(''),containerClass=typeof properties.renderer==="string"?' epiclock-'+properties.renderer:'';container=$(container).data('epiclock',clock).addClass('epiclock-container epiclock-wait-for-render'+containerClass);template=$(template||'<span></span>');for(;index<format.length;index++)
|
||||
{char=format[index]+'';switch(char)
|
||||
{case' ':if(buffering)
|
||||
{output+=char;}
|
||||
else
|
||||
{template.clone(true).addClass('epiclock epiclock-spacer').appendTo(container);}
|
||||
break;case'{':case'}':buffering=char==='{';if(!buffering)
|
||||
{template.clone(true).addClass('epiclock').html(output).appendTo(container);output='';}
|
||||
break;default:if(!buffering&&$.dateformat.hasRule(char))
|
||||
{instances[clock.__uid].frame[char]=template.clone(true).addClass('epiclock epiclock-digit').data('epiclock-encoding',char).appendTo(container);}
|
||||
else if(!buffering)
|
||||
{template.clone(true).addClass('epiclock epiclock-separator').html(char).appendTo(container);}
|
||||
else
|
||||
{output+=char;}
|
||||
break;}}
|
||||
clock.container=container;if(clock.__render!==undefined&&$.isFunction(clock.__render.setup))
|
||||
{clock.__render.setup.apply(clock,[container]);}
|
||||
startManager();return clock;},pause:function()
|
||||
{haltManager();},resume:function()
|
||||
{startManager();},destroy:function()
|
||||
{clearInterval(intervalID);$.each(instances,function()
|
||||
{this.clock.destroy();});},restart:function()
|
||||
{$.each(instances,function()
|
||||
{this.clock.restart();});}});$.dateformat.rules({Q:function()
|
||||
{return'%displayOffset-years%';},E:function()
|
||||
{return'%displayOffset-days%';},e:function()
|
||||
{return'%displayOffset-days-pad%';}});$.extend(Clock.prototype,{__uid:undefined,__render:undefined,__displacement:undefined,__days_added:undefined,__paused:undefined,__offset:0,__tare:false,__destroy:false,displayOffset:undefined,time:undefined,format:undefined,mode:undefined,container:undefined,bind:function(event,listener)
|
||||
{if(events[this.__uid]===undefined)
|
||||
{events[this.__uid]={};}
|
||||
if(events[this.__uid][event]===undefined)
|
||||
{events[this.__uid][event]=[listener];}
|
||||
else
|
||||
{events[this.__uid][event].push(listener);}
|
||||
return this;},pause:function()
|
||||
{if(this.__paused===undefined)
|
||||
{this.__paused=new Date().valueOf();}
|
||||
triggerEvent(this.__uid,'pause');},resume:function()
|
||||
{if(this.__paused===undefined)
|
||||
{return;}
|
||||
triggerEvent(this.__uid,'resume');if(this.__tare)
|
||||
{this.__displacement+=(this.__paused-new Date().valueOf());}
|
||||
this.__paused=undefined;},toggle:function()
|
||||
{if(this.__paused===undefined)
|
||||
{this.pause();}
|
||||
else
|
||||
{this.resume();}},destroy:function()
|
||||
{this.__destroy=true;triggerEvent(this.__uid,'destroy');},restart:function(displacement)
|
||||
{if(displacement!==undefined)
|
||||
{this.__displacement=displacement;}
|
||||
this.time=now.valueOf();},print:function(format)
|
||||
{var value=$.dateformat.format(this.format,printTick(this));if(this.displayOffset!==undefined)
|
||||
{return value.replace('%displayOffset-days%',this.displayOffset.years).replace('%displayOffset-days%',this.displayOffset.days).replace('%displayOffset-days-pad%',$.dateformat.pad(this.displayOffset.days,0));}
|
||||
return value;}});$.epiclock=_;$.fn.epiclock=function(properties)
|
||||
{return this.each(function()
|
||||
{var container=$(this),template;properties=properties||{};if(properties.template!==undefined)
|
||||
{template=properties.template;delete properties.template;}
|
||||
else if(container.children().length>0)
|
||||
{template=container.children().remove().eq(0);}
|
||||
$.epiclock.make(properties,container,template);});};}(jQuery));
|
||||
@@ -0,0 +1,21 @@
|
||||
/*!
|
||||
* Minute Style Countdown
|
||||
* Copyright (c) 2009 Eric Garside (http://eric.garside.name)
|
||||
* Copyright (c) 2012 Chamilo
|
||||
* Dual licensed under:
|
||||
* MIT: http://www.opensource.org/licenses/mit-license.php
|
||||
* GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
|
||||
*/
|
||||
|
||||
/* Near to 0 seconds should be red */
|
||||
.time_warning_one {
|
||||
background-color: #FB3A35;
|
||||
}
|
||||
|
||||
.time_warning_two {
|
||||
background-color: #FFD700;
|
||||
}
|
||||
|
||||
#exercise_clock_warning {
|
||||
z-index: 10000;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
/*!
|
||||
* minute countdown renderer for epiclock
|
||||
*
|
||||
* Copyright (c) Eric Garside
|
||||
* Copyright (c) Chamilo team
|
||||
* Dual licensed under:
|
||||
* MIT: http://www.opensource.org/licenses/mit-license.php
|
||||
* GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
|
||||
*/
|
||||
"use strict";
|
||||
|
||||
/*global window, jQuery */
|
||||
/*jslint white: true, browser: true, onevar: true, undef: true, eqeqeq: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true, maxerr: 50, indent: 4 */
|
||||
|
||||
(function ($) {
|
||||
//constants
|
||||
var epClock; // clock object
|
||||
|
||||
// Setup
|
||||
$.epiclock.addRenderer('minute', function (element, value)
|
||||
{
|
||||
var currentTime = new Date().valueOf();
|
||||
var dist = epClock.time+epClock.__offset - currentTime;
|
||||
|
||||
//Sets the value to the clock very important!
|
||||
element.text(value);
|
||||
|
||||
var div_clock = $('#exercise_clock_warning');
|
||||
|
||||
// 60000 = 60 seconds
|
||||
if (dist <= 300000) { //5min
|
||||
if (!(div_clock.hasClass('time_warning_two'))) {
|
||||
div_clock.addClass('time_warning_two');
|
||||
}
|
||||
}
|
||||
|
||||
if (dist <= 120000) { //2min
|
||||
div_clock.removeClass('time_warning_two');
|
||||
if (!(div_clock.hasClass('time_warning_one'))) {
|
||||
div_clock.addClass('time_warning_one');
|
||||
}
|
||||
}
|
||||
},
|
||||
function ()
|
||||
{
|
||||
epClock = this;
|
||||
});
|
||||
}(jQuery));
|
||||
@@ -0,0 +1,68 @@
|
||||
/*!
|
||||
* Retro Style Countdown
|
||||
* Copyright (c) 2009 Eric Garside (http://eric.garside.name)
|
||||
* Dual licensed under:
|
||||
* MIT: http://www.opensource.org/licenses/mit-license.php
|
||||
* GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
|
||||
*/
|
||||
|
||||
/* Master Style
|
||||
----------------------------------*/
|
||||
|
||||
.epiclock-retro .epiclock, .epiclock-retro .epiclock-img
|
||||
{ display: block; float: left; }
|
||||
|
||||
.epiclock-retro-countdown .epiclock-img .epiclock-animation,
|
||||
.epiclock-retro-countdown .epiclock-separator { display: block; float: left; background-image: url(epiclock.retro-countdown.png); background-repeat: no-repeat; height: 40px; }
|
||||
|
||||
/* Individual Styles
|
||||
----------------------------------*/
|
||||
.epiclock-retro-countdown .epiclock-spacer { display: block; float: left; width: 10px; height: 1px; margin: 0; }
|
||||
.epiclock-retro-countdown .epiclock-animation { width: 40px; }
|
||||
.epiclock-retro-countdown .epiclock-separator { width: 26px; text-indent: -999999px; background-position: -120px -360px; }
|
||||
|
||||
/* Container Clearfix
|
||||
----------------------------------*/
|
||||
.epiclock-retro-countdown:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
|
||||
.epiclock-retro-countdown { display: inline-block; }
|
||||
* html .epiclock-retro-countdown { height:1%; }
|
||||
.epiclock-retro-countdown { display:block; }
|
||||
|
||||
/* Static Positions
|
||||
----------------------------------*/
|
||||
.epiclock-retro-countdown .d0 .s { background-position: 0 -360px; }
|
||||
.epiclock-retro-countdown .d1 .s { background-position: 0 -320px; }
|
||||
.epiclock-retro-countdown .d2 .s { background-position: 0 -280px; }
|
||||
.epiclock-retro-countdown .d3 .s { background-position: 0 -240px; }
|
||||
.epiclock-retro-countdown .d4 .s { background-position: 0 -200px; }
|
||||
.epiclock-retro-countdown .d5 .s { background-position: 0 -160px; }
|
||||
.epiclock-retro-countdown .d6 .s { background-position: 0 -120px; }
|
||||
.epiclock-retro-countdown .d7 .s { background-position: 0 -80px; }
|
||||
.epiclock-retro-countdown .d8 .s { background-position: 0 -40px; }
|
||||
.epiclock-retro-countdown .d9 .s { background-position: 0 0; }
|
||||
|
||||
/* Animation Phase 1
|
||||
----------------------------------*/
|
||||
.epiclock-retro-countdown .d9 .a1 { background-position: -40px -360px; }
|
||||
.epiclock-retro-countdown .d0 .a1 { background-position: -40px -320px; }
|
||||
.epiclock-retro-countdown .d1 .a1 { background-position: -40px -280px; }
|
||||
.epiclock-retro-countdown .d2 .a1 { background-position: -40px -240px; }
|
||||
.epiclock-retro-countdown .d3 .a1 { background-position: -40px -200px; }
|
||||
.epiclock-retro-countdown .d4 .a1 { background-position: -40px -160px; }
|
||||
.epiclock-retro-countdown .d5 .a1 { background-position: -40px -120px; }
|
||||
.epiclock-retro-countdown .d6 .a1 { background-position: -40px -80px; }
|
||||
.epiclock-retro-countdown .d7 .a1 { background-position: -40px -40px; }
|
||||
.epiclock-retro-countdown .d8 .a1 { background-position: -40px 0; }
|
||||
|
||||
/* Animation Phase 2
|
||||
----------------------------------*/
|
||||
.epiclock-retro-countdown .d9 .a2 { background-position: -80px -360px; }
|
||||
.epiclock-retro-countdown .d0 .a2 { background-position: -80px -320px; }
|
||||
.epiclock-retro-countdown .d1 .a2 { background-position: -80px -280px; }
|
||||
.epiclock-retro-countdown .d2 .a2 { background-position: -80px -240px; }
|
||||
.epiclock-retro-countdown .d3 .a2 { background-position: -80px -200px; }
|
||||
.epiclock-retro-countdown .d4 .a2 { background-position: -80px -160px; }
|
||||
.epiclock-retro-countdown .d5 .a2 { background-position: -80px -120px; }
|
||||
.epiclock-retro-countdown .d6 .a2 { background-position: -80px -80px; }
|
||||
.epiclock-retro-countdown .d7 .a2 { background-position: -80px -40px; }
|
||||
.epiclock-retro-countdown .d8 .a2 { background-position: -80px 0; }
|
||||
@@ -0,0 +1,111 @@
|
||||
/*!
|
||||
* Retro countdown renderer for epiclock
|
||||
*
|
||||
* Copyright (c) Eric Garside
|
||||
* Dual licensed under:
|
||||
* MIT: http://www.opensource.org/licenses/mit-license.php
|
||||
* GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
/*global window, jQuery */
|
||||
|
||||
/*jslint white: true, browser: true, onevar: true, undef: true, eqeqeq: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true, maxerr: 50, indent: 4 */
|
||||
|
||||
(function ($) {
|
||||
|
||||
//------------------------------
|
||||
//
|
||||
// Constants
|
||||
//
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* Because epiclock returns values as 2 digits in one number, we need an "inner template" to contain
|
||||
* the actual image objects.
|
||||
*/
|
||||
var innerTemplate = '<span class="epiclock-img"><span class="epiclock-animation"></span></span>';
|
||||
|
||||
//------------------------------
|
||||
//
|
||||
// Animation
|
||||
//
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* Animate a given element. The animation for the retro clock has four stages:
|
||||
* :a1 - First stage of the animation
|
||||
* :a2 - Second stage of the animation
|
||||
* :a3 - Third stage of the animation
|
||||
* :s - Static image, end of animation.
|
||||
*
|
||||
* @param element The element being animated.
|
||||
*/
|
||||
function animate()
|
||||
{
|
||||
var clock = this;
|
||||
|
||||
setTimeout(function ()
|
||||
{
|
||||
$('.a1', clock.container).removeClass('a1').addClass('a2');
|
||||
|
||||
setTimeout(function ()
|
||||
{
|
||||
$('.a2', clock.container).removeClass('a2').addClass('s');
|
||||
}, 150);
|
||||
}, 150);
|
||||
}
|
||||
|
||||
//------------------------------
|
||||
//
|
||||
// Setup
|
||||
//
|
||||
//------------------------------
|
||||
|
||||
$.epiclock.addRenderer('retro-countdown', function (element, value)
|
||||
{
|
||||
/**
|
||||
* Determine if this is a collection of digits, or the am/pm string, and parser
|
||||
* the value accordingly.
|
||||
*/
|
||||
var digits = value.substring(1) === 'm' ? [value] : value.split('').reverse(),
|
||||
|
||||
/**
|
||||
* The last value of this element.
|
||||
*/
|
||||
last = element.data('epiclock-last'),
|
||||
|
||||
/**
|
||||
* Comparison values for the last array as compared to this one.
|
||||
*/
|
||||
compare = last ? last.split('').reverse() : [],
|
||||
|
||||
/**
|
||||
* The image instances for this block. If these don't yet exist, they will be created in the digit for...each callback.
|
||||
*/
|
||||
image = $.makeArray($('.epiclock-img', element)).reverse();
|
||||
|
||||
$.each(digits, function (index, digit)
|
||||
{
|
||||
/**
|
||||
* We don't want to change the image part if it hasn't been updated.
|
||||
*/
|
||||
if (digit === compare[index])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Animate the number after the clock has changed.
|
||||
*/
|
||||
$('.epiclock-animation', $(image[index] || $(innerTemplate).prependTo(element)).removeClass('d' + compare[index]).addClass('d' + digit)).removeClass('s').addClass('a1');
|
||||
});
|
||||
},
|
||||
|
||||
function ()
|
||||
{
|
||||
this.bind('rendered', animate);
|
||||
});
|
||||
|
||||
}(jQuery));
|
||||
18
main/inc/lib/javascript/epiclock/renderers/retro-countdown/epiclock.retro-countdown.min.js
vendored
Normal file
18
main/inc/lib/javascript/epiclock/renderers/retro-countdown/epiclock.retro-countdown.min.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
/*!
|
||||
* Retro countdown renderer for epiclock
|
||||
*
|
||||
* Copyright (c) Eric Garside
|
||||
* Dual licensed under:
|
||||
* MIT: http://www.opensource.org/licenses/mit-license.php
|
||||
* GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
|
||||
*/
|
||||
"use strict";(function($){var innerTemplate='<span class="epiclock-img"><span class="epiclock-animation"></span></span>';function animate()
|
||||
{var clock=this;setTimeout(function()
|
||||
{$('.a1',clock.container).removeClass('a1').addClass('a2');setTimeout(function()
|
||||
{$('.a2',clock.container).removeClass('a2').addClass('s');},150);},150);}
|
||||
$.epiclock.addRenderer('retro-countdown',function(element,value)
|
||||
{var digits=value.substring(1)==='m'?[value]:value.split('').reverse(),last=element.data('epiclock-last'),compare=last?last.split('').reverse():[],image=$.makeArray($('.epiclock-img',element)).reverse();$.each(digits,function(index,digit)
|
||||
{if(digit===compare[index])
|
||||
{return;}
|
||||
$('.epiclock-animation',$(image[index]||$(innerTemplate).prependTo(element)).removeClass('d'+compare[index]).addClass('d'+digit)).removeClass('s').addClass('a1');});},function()
|
||||
{this.bind('rendered',animate);});}(jQuery));
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
@@ -0,0 +1,75 @@
|
||||
/*!
|
||||
* Retro Style Flip Clock
|
||||
* Copyright (c) 2009 Eric Garside (http://eric.garside.name)
|
||||
* Dual licensed under:
|
||||
* MIT: http://www.opensource.org/licenses/mit-license.php
|
||||
* GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
|
||||
*/
|
||||
|
||||
/* Master Style
|
||||
----------------------------------*/
|
||||
|
||||
.epiclock-retro .epiclock, .epiclock-retro .epiclock-img
|
||||
{ display: block; float: left; }
|
||||
|
||||
.epiclock-retro .epiclock-img .epiclock-animation,
|
||||
.epiclock-retro .epiclock-meridian,
|
||||
.epiclock-retro .epiclock-separator { display: block; float: left; background-image: url(epiclock.retro.png); background-repeat: no-repeat; height: 40px; }
|
||||
|
||||
/* Individual Styles
|
||||
----------------------------------*/
|
||||
.epiclock-retro .epiclock-spacer { display: block; float: left; width: 10px; height: 1px; margin: 0; }
|
||||
.epiclock-retro .epiclock-animation { width: 40px; }
|
||||
.epiclock-retro .epiclock-separator { width: 26px; text-indent: -999999px; background-position: 0 -840px; }
|
||||
|
||||
/* Container Clearfix
|
||||
----------------------------------*/
|
||||
.epiclock-retro:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
|
||||
.epiclock-retro { display: inline-block; }
|
||||
* html .epiclock-retro { height:1%; }
|
||||
.epiclock-retro { display:block; }
|
||||
|
||||
/* Static Positions
|
||||
----------------------------------*/
|
||||
.epiclock-retro .d1 .s { background-position: 0 -40px; }
|
||||
.epiclock-retro .d2 .s { background-position: -40px -80px; }
|
||||
.epiclock-retro .d3 .s { background-position: 0 -160px; }
|
||||
.epiclock-retro .d4 .s { background-position: -40px -200px; }
|
||||
.epiclock-retro .d5 .s { background-position: 0 -280px; }
|
||||
.epiclock-retro .d6 .s { background-position: -40px -320px; }
|
||||
.epiclock-retro .d7 .s { background-position: 0 -400px; }
|
||||
.epiclock-retro .d8 .s { background-position: -40px -440px; }
|
||||
.epiclock-retro .d9 .s { background-position: 0 -520px; }
|
||||
.epiclock-retro .d0 .s { background-position: -40px -560px; }
|
||||
.epiclock-retro .dpm .s { background-position: 0 -680px; width: 80px; }
|
||||
.epiclock-retro .dam .s { background-position: 0 -800px; width: 80px; }
|
||||
|
||||
/* Animation Phase 1
|
||||
----------------------------------*/
|
||||
.epiclock-retro .d1 .a1 { background-position: 0 0; }
|
||||
.epiclock-retro .d2 .a1 { background-position: -40px -40px; }
|
||||
.epiclock-retro .d3 .a1 { background-position: 0 -120px; }
|
||||
.epiclock-retro .d4 .a1 { background-position: -40px -160px; }
|
||||
.epiclock-retro .d5 .a1 { background-position: 0 -240px; }
|
||||
.epiclock-retro .d6 .a1 { background-position: -40px -280px; }
|
||||
.epiclock-retro .d7 .a1 { background-position: 0 -360px; }
|
||||
.epiclock-retro .d8 .a1 { background-position: -40px -400px; }
|
||||
.epiclock-retro .d9 .a1 { background-position: 0 -480px; }
|
||||
.epiclock-retro .d0 .a1 { background-position: -40px -520px; }
|
||||
.epiclock-retro .dpm .a1 { background-position: 0 -720px; width: 80px; }
|
||||
.epiclock-retro .dam .a1 { background-position: 0 -600px; width: 80px; }
|
||||
|
||||
/* Animation Phase 2
|
||||
----------------------------------*/
|
||||
.epiclock-retro .d1 .a2 { background-position: -40px 0; }
|
||||
.epiclock-retro .d2 .a2 { background-position: 0 -80px; }
|
||||
.epiclock-retro .d3 .a2 { background-position: -40px -120px; }
|
||||
.epiclock-retro .d4 .a2 { background-position: 0 -200px; }
|
||||
.epiclock-retro .d5 .a2 { background-position: -40px -240px; }
|
||||
.epiclock-retro .d6 .a2 { background-position: 0 -320px; }
|
||||
.epiclock-retro .d7 .a2 { background-position: -40px -360px; }
|
||||
.epiclock-retro .d8 .a2 { background-position: 0 -440px; }
|
||||
.epiclock-retro .d9 .a2 { background-position: -40px -480px; }
|
||||
.epiclock-retro .d0 .a2 { background-position: 0 -560px; }
|
||||
.epiclock-retro .dpm .a2 { background-position: 0 -760px; width: 80px; }
|
||||
.epiclock-retro .dam .a2 { background-position: 0 -640px; width: 80px; }
|
||||
@@ -0,0 +1,111 @@
|
||||
/*!
|
||||
* Retro renderer for epiclock
|
||||
*
|
||||
* Copyright (c) Eric Garside
|
||||
* Dual licensed under:
|
||||
* MIT: http://www.opensource.org/licenses/mit-license.php
|
||||
* GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
/*global window, jQuery */
|
||||
|
||||
/*jslint white: true, browser: true, onevar: true, undef: true, eqeqeq: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true, maxerr: 50, indent: 4 */
|
||||
|
||||
(function ($) {
|
||||
|
||||
//------------------------------
|
||||
//
|
||||
// Constants
|
||||
//
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* Because epiclock returns values as 2 digits in one number, we need an "inner template" to contain
|
||||
* the actual image objects.
|
||||
*/
|
||||
var innerTemplate = '<span class="epiclock-img"><span class="epiclock-animation"></span></span>';
|
||||
|
||||
//------------------------------
|
||||
//
|
||||
// Animation
|
||||
//
|
||||
//------------------------------
|
||||
|
||||
/**
|
||||
* Animate a given element. The animation for the retro clock has four stages:
|
||||
* :a1 - First stage of the animation
|
||||
* :a2 - Second stage of the animation
|
||||
* :a3 - Third stage of the animation
|
||||
* :s - Static image, end of animation.
|
||||
*
|
||||
* @param element The element being animated.
|
||||
*/
|
||||
function animate()
|
||||
{
|
||||
var clock = this;
|
||||
|
||||
setTimeout(function ()
|
||||
{
|
||||
$('.a1', clock.container).removeClass('a1').addClass('a2');
|
||||
|
||||
setTimeout(function ()
|
||||
{
|
||||
$('.a2', clock.container).removeClass('a2').addClass('s');
|
||||
}, 150);
|
||||
}, 150);
|
||||
}
|
||||
|
||||
//------------------------------
|
||||
//
|
||||
// Setup
|
||||
//
|
||||
//------------------------------
|
||||
|
||||
$.epiclock.addRenderer('retro', function (element, value)
|
||||
{
|
||||
/**
|
||||
* Determine if this is a collection of digits, or the am/pm string, and parser
|
||||
* the value accordingly.
|
||||
*/
|
||||
var digits = value.substring(1) === 'm' ? [value] : value.split('').reverse(),
|
||||
|
||||
/**
|
||||
* The last value of this element.
|
||||
*/
|
||||
last = element.data('epiclock-last'),
|
||||
|
||||
/**
|
||||
* Comparison values for the last array as compared to this one.
|
||||
*/
|
||||
compare = last ? last.split('').reverse() : [],
|
||||
|
||||
/**
|
||||
* The image instances for this block. If these don't yet exist, they will be created in the digit for...each callback.
|
||||
*/
|
||||
image = $.makeArray($('.epiclock-img', element)).reverse();
|
||||
|
||||
$.each(digits, function (index, digit)
|
||||
{
|
||||
/**
|
||||
* We don't want to change the image part if it hasn't been updated.
|
||||
*/
|
||||
if (digit === compare[index])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Animate the number after the clock has changed.
|
||||
*/
|
||||
$('.epiclock-animation', $(image[index] || $(innerTemplate).prependTo(element)).removeClass('d' + compare[index]).addClass('d' + digit)).removeClass('s').addClass('a1');
|
||||
});
|
||||
},
|
||||
|
||||
function ()
|
||||
{
|
||||
this.bind('rendered', animate);
|
||||
});
|
||||
|
||||
}(jQuery));
|
||||
18
main/inc/lib/javascript/epiclock/renderers/retro/epiclock.retro.min.js
vendored
Normal file
18
main/inc/lib/javascript/epiclock/renderers/retro/epiclock.retro.min.js
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
/*!
|
||||
* Retro renderer for epiclock
|
||||
*
|
||||
* Copyright (c) Eric Garside
|
||||
* Dual licensed under:
|
||||
* MIT: http://www.opensource.org/licenses/mit-license.php
|
||||
* GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
|
||||
*/
|
||||
"use strict";(function($){var innerTemplate='<span class="epiclock-img"><span class="epiclock-animation"></span></span>';function animate()
|
||||
{var clock=this;setTimeout(function()
|
||||
{$('.a1',clock.container).removeClass('a1').addClass('a2');setTimeout(function()
|
||||
{$('.a2',clock.container).removeClass('a2').addClass('s');},150);},150);}
|
||||
$.epiclock.addRenderer('retro',function(element,value)
|
||||
{var digits=value.substring(1)==='m'?[value]:value.split('').reverse(),last=element.data('epiclock-last'),compare=last?last.split('').reverse():[],image=$.makeArray($('.epiclock-img',element)).reverse();$.each(digits,function(index,digit)
|
||||
{if(digit===compare[index])
|
||||
{return;}
|
||||
$('.epiclock-animation',$(image[index]||$(innerTemplate).prependTo(element)).removeClass('d'+compare[index]).addClass('d'+digit)).removeClass('s').addClass('a1');});},function()
|
||||
{this.bind('rendered',animate);});}(jQuery));
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
@@ -0,0 +1,17 @@
|
||||
/*!
|
||||
* Epiclock Styles
|
||||
*
|
||||
* Copyright (c) Eric Garside
|
||||
* Dual licensed under:
|
||||
* MIT: http://www.opensource.org/licenses/mit-license.php
|
||||
* GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
|
||||
*/
|
||||
|
||||
/* Generic Styles
|
||||
----------------------------------*/
|
||||
|
||||
.epiclock-wait-for-render
|
||||
{ visibility: hidden; }
|
||||
|
||||
.epiclock-spacer
|
||||
{ padding-right: 3px; }
|
||||
Reference in New Issue
Block a user