summaryrefslogtreecommitdiff
path: root/underlays/javascript/relativedate.js
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2010-04-24 00:54:59 -0400
committerJoey Hess <joey@kitenet.net>2010-04-24 00:54:59 -0400
commite90d67d3c9a93862657563e17e24054087f205d1 (patch)
treed1bfb530411c4ae2b9bb95737608ee3090a20c0a /underlays/javascript/relativedate.js
parentb28323e76a98d56fa4af813338a134dea0106626 (diff)
Moved javascript files under the ikiwiki/ directory, to avoid cluttering the top of the web root. This is another things that requires a wiki rebuild on upgrade to this version.
Diffstat (limited to 'underlays/javascript/relativedate.js')
-rw-r--r--underlays/javascript/relativedate.js76
1 files changed, 0 insertions, 76 deletions
diff --git a/underlays/javascript/relativedate.js b/underlays/javascript/relativedate.js
deleted file mode 100644
index 5142332f1..000000000
--- a/underlays/javascript/relativedate.js
+++ /dev/null
@@ -1,76 +0,0 @@
-// Causes html elements in the 'relativedate' class to be displayed
-// as relative dates. The date is parsed from the title attribute, or from
-// the element content.
-
-var dateElements;
-
-hook("onload", getDates);
-
-function getDates() {
- dateElements = getElementsByClass('relativedate');
- for (var i = 0; i < dateElements.length; i++) {
- var elt = dateElements[i];
- var title = elt.attributes.title;
- var d = new Date(title ? title.value : elt.innerHTML);
- if (! isNaN(d)) {
- dateElements[i].date=d;
- elt.title=elt.innerHTML;
- }
- }
-
- showDates();
-}
-
-function showDates() {
- for (var i = 0; i < dateElements.length; i++) {
- var elt = dateElements[i];
- var d = elt.date;
- if (! isNaN(d)) {
- elt.innerHTML=relativeDate(d);
- }
- }
- setTimeout(showDates,30000); // keep updating every 30s
-}
-
-var timeUnits = new Array;
-timeUnits['minute'] = 60;
-timeUnits['hour'] = timeUnits['minute'] * 60;
-timeUnits['day'] = timeUnits['hour'] * 24;
-timeUnits['month'] = timeUnits['day'] * 30;
-timeUnits['year'] = timeUnits['day'] * 364;
-var timeUnitOrder = ['year', 'month', 'day', 'hour', 'minute'];
-
-function relativeDate(date) {
- var now = new Date();
- var offset = date.getTime() - now.getTime();
- var seconds = Math.round(Math.abs(offset) / 1000);
-
- // hack to avoid reading just in the future if there is a minor
- // amount of clock slip
- if (offset >= 0 && seconds < 30 * timeUnits['minute']) {
- return "just now";
- }
-
- var ret = "";
- var shown = 0;
- for (i = 0; i < timeUnitOrder.length; i++) {
- var unit = timeUnitOrder[i];
- if (seconds >= timeUnits[unit]) {
- var num = Math.floor(seconds / timeUnits[unit]);
- seconds -= num * timeUnits[unit];
- if (ret)
- ret += "and ";
- ret += num + " " + unit + (num > 1 ? "s" : "") + " ";
-
- if (++shown == 2)
- break;
- }
- else if (shown)
- break;
- }
-
- if (! ret)
- ret = "less than a minute "
-
- return ret + (offset < 0 ? "ago" : "from now");
-}