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