// File used by j_timestamp.xsl and tlx.tlx.timestamp/gem.xml // Date/time templates are made up of any mix of these tokens, // with optional interspersed text: var tokens = { y2: '', // 2 digits year y4: '', // 4 digits year m1: '', // 1 or 2 digits month ordinal m2: '', // 2 digits month ordinal m3: '', // 3 letters month name mn: '', // spelled out month name d1: '', // 1 or 2 digits day ordinal d2: '', // 2 digits day ordinal d3: '', // 3 letters day name dn: '', // spelled out day name h12: '', // hours from 01 to 12 h24: '', // hours from 00 to 23 mm: '', // minutes from 00 to 59 ampm: '', // AM or PM nodate: '', // no date notime: '' // no time }; function Stamp (msecs, stampTemplate, monthList, dayList) { // msecs: value of the instant in millisecs // stampTemplate: date/time template, such as "y4/m2/d2" or "dn d1 mn y4 h24:mm" // monthList: names of the months in a given language // dayList: names of the days in a given language var when = (msecs == null) ? new Date() : new Date(msecs); var template = (stampTemplate == null) ? "" : stampTemplate; var monthNames = (monthList == null) ? "" : monthList.split("|"); var dayNames = (dayList == null) ? "" : dayList.split("|"); tokens['y4'] = when.getFullYear(); // 1970..2xxx tokens['y2'] = new String(tokens['y4']).substr(2,2); tokens['m1'] = 1 + when.getMonth(); // 1..12 tokens['m2'] = (tokens['m1'] < 10) ? "0" + tokens['m1'] : tokens['m1']; tokens['mn'] = monthNames[tokens['m1'] - 1]; tokens['m3'] = new String(tokens['mn']).substr(0,3); tokens['d1'] = when.getDate(); // 1..31 tokens['d2'] = (tokens['d1'] < 10) ? "0" + tokens['d1'] : tokens['d1']; tokens['dn'] = dayNames[when.getDay()]; // [0..6] = Sun..Sat tokens['d3'] = new String(tokens['dn']).substr(0,3); tokens['nodate'] = ""; tokens['notime'] = ""; var minutes = when.getMinutes(); // 0..59 if (minutes < 10) { minutes = "0" + minutes; } tokens['mm'] = minutes; var hours24 = when.getHours(); // 0..23 // ampmBlock: { if (hours24 == 0) { tokens['h24'] = '00'; tokens['h12'] = '12'; tokens['ampm'] = 'AM'; break ampmBlock; } if (hours24 < 10) { tokens['h24'] = '0' + hours24; tokens['h12'] = '0' + hours24; tokens['ampm'] = 'AM'; break ampmBlock; } if (hours24 < 12) { tokens['h24'] = hours24; tokens['h12'] = hours24; tokens['ampm'] = 'AM'; break ampmBlock; } if (hours24 == 12) { tokens['h24'] = hours24; tokens['h12'] = hours24; tokens['ampm'] = 'PM'; break ampmBlock; } if (hours24 < 24) { tokens['h24'] = hours24; tokens['h12'] = hours24 - 12; tokens['ampm'] = 'PM'; break ampmBlock; } } // var mapped = ""; var x = 0; topLoop: while (x < template.length) { for (token in tokens) { if (template.substr(x, token.length) == token) { mapped += tokens[token]; x += token.length; continue topLoop; } } mapped += template.charAt(x); x++; } return mapped; }