1 /*jslint 2 browser: true, 3 nomen: false, 4 debug: true, 5 forin: true, 6 undef: true, 7 white: false, 8 onevar: false 9 */ 10 var sc; 11 12 /* 13 * makes relative time out of "Sun Jul 08 19:01:12 +0000 2007" type string 14 * Borrowed from Mike Demers (slightly altered) 15 * https://twitter.pbwiki.com/RelativeTimeScripts 16 * 17 * This requires date.js 18 * http://www.datejs.com/ 19 * @param {string} time_value a string to convert into relative time 20 * @param {object} [labels] labels for text portions of time descriptions 21 * @param {boolean} [use_dateparse] Whether or not to use the Date.parse method to parse the time_value. Default is FALSE 22 */ 23 sc.helpers.getRelativeTime = function(time_value, labels, use_dateparse) { 24 25 var default_labels = { 26 'now':'Just now', 27 'seconds':'sec ago', 28 'minute':'min ago', 29 'minutes':'min ago', 30 'hour':'hr ago', 31 'hours':'hr ago', 32 'day':'day ago', 33 'days':'days ago' 34 }; 35 36 labels = sch.defaults(default_labels, labels); 37 38 var parsed_date; 39 40 if (use_dateparse === true) { 41 parsed_date = new Date.parse(time_value); 42 } else { 43 parsed_date = new Date(time_value); 44 } 45 46 var now = new Date(); 47 var delta = parseInt( (now.getTime() - parsed_date.getTime()) / 1000, 10); 48 49 if (delta < 10) { 50 return labels.now; 51 } else if(delta < 60) { 52 return delta.toString() +' '+labels.seconds; 53 } else if(delta < 120) { 54 return '1 '+labels.minute; 55 } else if(delta < (45*60)) { 56 return Math.round(parseInt(delta / 60, 10)).toString() + ' ' +labels.minutes; 57 } else if(delta < (90*60)) { 58 return '1 ' +labels.hour; 59 } else if(delta < (24*60*60)) { 60 if (Math.round(delta / 3600) === 1) { 61 return '2 '+labels.hours; 62 } else { 63 return Math.round(delta / 3600).toString() + ' '+labels.hours; 64 } 65 } else if(delta < (48*60*60)) { 66 return '1 '+labels.day; 67 } else { 68 return Math.round(delta / 86400).toString() + ' '+labels.days; 69 } 70 }; 71 72 /** 73 * @member sc.helpers 74 */ 75 sc.helpers.httpTimeToInt = function(entry_date, use_dateparse) { 76 return sc.helpers.dateToInt(entry_date, use_dateparse); 77 }; 78 79 /** 80 * this returns milliseconds, not seconds! 81 * @member sc.helpers 82 */ 83 sc.helpers.dateToInt = function(entry_date, use_dateparse) { 84 var parsedDate = new Date(); 85 86 if (use_dateparse === true) { 87 entry_date = new Date.parse(entry_date); 88 } else { 89 entry_date = new Date(entry_date); 90 } 91 92 parsedDate.setTime(entry_date); 93 return parsedDate.getTime(); 94 }; 95 96 /** 97 * @member sc.helpers 98 */ 99 sc.helpers.getTimeAsInt = function() { 100 var now = new Date(); 101 return now.getTime(); 102 }; 103