diff options
author | Joey Hess <joey@kitenet.net> | 2010-04-24 00:54:59 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2010-04-24 00:54:59 -0400 |
commit | e90d67d3c9a93862657563e17e24054087f205d1 (patch) | |
tree | d1bfb530411c4ae2b9bb95737608ee3090a20c0a /underlays/javascript/relativedate.js | |
parent | b28323e76a98d56fa4af813338a134dea0106626 (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.js | 76 |
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"); -} |