/* var weekday = new Array(7) weekday[0] = "Sunday" weekday[1] = "Monday" weekday[2] = "Tuesday" weekday[3] = "Wednesday" weekday[4] = "Thursday" weekday[5] = "Friday" weekday[6] = "Saturday" var shortWeekday = new Array(7) shortWeekday[0] = 'Sun' shortWeekday[1] = 'Mon' shortWeekday[2] = 'Tue' shortWeekday[3] = 'Wed' shortWeekday[4] = 'Thu' shortWeekday[5] = 'Fri' shortWeekday[6] = 'Sat' */ var firstLanguage = (window.navigator.languages && window.navigator.languages[0]) || window.navigator.language || window.navigator.userLanguage || window.navigator.browserLanguage // 01/19/2017 (Thu) 14:55:06 function getDateFromString(str) { var m = str.match(/(\d+)\/(\d+)\/(\d+)\s+\([A-Za-z]+\)\s+(\d+):(\d+):?(\d+)?/) if (m) { //console.log('m', m) d = new Date() d.setUTCFullYear(+m[3]) d.setUTCMonth(+m[1]-1) d.setUTCDate(+m[2]) d.setUTCHours(+m[4]) d.setUTCMinutes(+m[5]) if (m[6]) { d.setUTCSeconds(+m[6]) } //return d.toLocaleString()+' ('+shortWeekday[d.getDay()]+')' return d // if you pass undefined as the first argument, // toLocaleString often choose environment languages instead of user's preferred languages. //return new Date(+m[3], +m[1] - 1, +m[2], +m[4], +m[5], +m[6] * 100) } else { // usually means it's already transformed if (!str.match(/ago/)) { console.log('cant parse', str) } } } function dateFromString(str) { var d = getDateFromString(str) if (d) { //return d.toLocaleString()+' ('+shortWeekday[d.getDay()]+')' return d.toLocaleString(firstLanguage) + ' ('+d.toLocaleString(firstLanguage, {weekday:"short"} )+')' // if you pass undefined as the first argument, // toLocaleString often choose environment languages instead of user's preferred languages. //return new Date(+m[3], +m[1] - 1, +m[2], +m[4], +m[5], +m[6] * 100) } } // by to_sha_ki // update single element function updateTimeNode(labelCreated, useLocalTime) { // labelCreated {Node} if (!labelCreated.origTime) { labelCreated.origTime = labelCreated.textContent } labelCreated.textContent=useLocalTime?dateFromString(labelCreated.origTime):labelCreated.origTime } function updateRelTimeNode(labelCreated, useRelTime) { // labelCreated {Node} if (!labelCreated.origTime) { labelCreated.origTime = labelCreated.textContent } if (useRelTime && typeof(jQuery) === 'undefined') { console.log('couldnt update', labelCreated, 'no jQuery yet...') return } var elem = labelCreated.origTime if (elem) { labelCreated.textContent = useRelTime ? jQuery.timeago(getDateFromString(elem)) : elem } } // by to_sha_ki // called from processPostCell // update single post function adjustPostTime( postCell ) { // postCell {Node} var nodeUseLocaltime = document.getElementById('useLocaltime') var nodeUseReltime = document.getElementById('useReltime') if (!nodeUseLocaltime && !nodeUseReltime) { return } var labelCreatedList = postCell.getElementsByClassName('labelCreated') // we only expect one //for( var idx = 0, len = labelCreatedList.length; idx < len ; ++idx ) { // FIXME updateTimeNode(labelCreatedList[0], nodeUseLocaltime.checked) updateRelTimeNode(labelCreatedList[0], nodeUseReltime.checked) //} } // we need a global variable for reading settings.. // batch update DOM function updateTimes() { var input=document.getElementById('useLocaltime') if (!input) { console.log('adjTimezones::updateTimes - no #useLocaltime found') return } //console.log('updating Times', input.checked) var elems=document.getElementsByClassName('labelCreated') //for(var i in elems) { var doLoop=function(i) { var elem=elems[i] if (!elem) { console.log(i, 'is not defined') return } //var dateObj=new Date(elem.textContent) /* if (!elem.origTime) { elem.origTime=elem.textContent } elem.textContent=input.checked?dateFromString(elem.origTime):elem.origTime */ updateTimeNode(elem, input.checked) } if (typeof(ioFor)!=='undefined') { ioFor(elems.length, function(i, next) { doLoop(i) // flushes all open timers before continuing setImmediate(next) }) } else { for(var i=0; i