]> git.mxchange.org Git - friendica-addons.git/blobdiff - jappixmini/jappix/js/date.js
jappixmini: include jappix source
[friendica-addons.git] / jappixmini / jappix / js / date.js
diff --git a/jappixmini/jappix/js/date.js b/jappixmini/jappix/js/date.js
new file mode 100644 (file)
index 0000000..86731aa
--- /dev/null
@@ -0,0 +1,212 @@
+/*
+
+Jappix - An open social platform
+These are the date related JS scripts for Jappix
+
+-------------------------------------------------
+
+License: AGPL
+Author: Vanaryon
+Last revision: 17/08/11
+
+*/
+
+// Gets a stamp from a date
+function extractStamp(date) {
+       return Math.round(date.getTime() / 1000);
+}
+
+// Gets the time from a date
+function extractTime(date) {
+       return date.toLocaleTimeString();
+}
+
+// Gets the actual date stamp
+function getTimeStamp() {
+       return extractStamp(new Date());
+}
+
+// Gets the last user activity in seconds
+var LAST_ACTIVITY = 0;
+
+function getLastActivity() {
+       // Last activity not yet initialized?
+       if(LAST_ACTIVITY == 0)
+               return 0;
+       
+       return getTimeStamp() - LAST_ACTIVITY;
+}
+
+// Gets the last user available presence in seconds
+var PRESENCE_LAST_ACTIVITY = 0;
+
+function getPresenceLast() {
+       // Last presence stamp not yet initialized?
+       if(PRESENCE_LAST_ACTIVITY == 0)
+               return 0;
+       
+       return getTimeStamp() - PRESENCE_LAST_ACTIVITY;
+}
+
+// Generates the time for XMPP
+function getXMPPTime(location) {
+       /* FROM : http://trac.jwchat.org/jsjac/browser/branches/jsjac_1.0/jsextras.js?rev=221 */
+       
+       // Initialize
+       var jInit = new Date();
+       var year, month, day, hours, minutes, seconds;
+       
+       // Gets the UTC date
+       if(location == 'utc') {
+               year = jInit.getUTCFullYear();
+               month = jInit.getUTCMonth();
+               day = jInit.getUTCDate();
+               hours = jInit.getUTCHours();
+               minutes = jInit.getUTCMinutes();
+               seconds = jInit.getUTCSeconds();
+       }
+       
+       // Gets the local date
+       else {
+               year = jInit.getFullYear();
+               month = jInit.getMonth();
+               day = jInit.getDate();
+               hours = jInit.getHours();
+               minutes = jInit.getMinutes();
+               seconds = jInit.getSeconds();
+       }
+       
+       // Generates the date string
+       var jDate = year + '-';
+       jDate += padZero(month + 1) + '-';
+       jDate += padZero(day) + 'T';
+       jDate += padZero(hours) + ':';
+       jDate += padZero(minutes) + ':';
+       jDate += padZero(seconds) + 'Z';
+       
+       // Returns the date string
+       return jDate;
+}
+
+// Generates then human time
+function getCompleteTime() {
+       var init = new Date();
+       var time = padZero(init.getHours()) + ':';
+       time += padZero(init.getMinutes()) + ':';
+       time += padZero(init.getSeconds());
+       
+       return time;
+}
+
+// Gets the TZO of a date
+function getDateTZO() {
+       // Get the date
+       var date = new Date();
+       var offset = date.getTimezoneOffset();
+       
+       // Default vars
+       var sign = '';
+       var hours = 0;
+       var minutes = 0;
+       
+       // Process a neutral offset
+       if(offset < 0) {
+               offset = offset * -1;
+               sign = '+';
+       }
+       
+       // Get the values
+       var n_date = new Date(offset * 60 * 1000);
+       hours = n_date.getHours() - 1;
+       minutes = n_date.getMinutes();
+       
+       // Process the TZO
+       tzo = sign + padZero(hours) + ':' + padZero(minutes);
+       
+       // Return the processed value
+       return tzo;
+}
+
+// Parses a XMPP date (yyyy-mm-dd, hh-mm-ss) into an human-readable one
+function parseDate(to_parse) {
+       var date = Date.jab2date(to_parse);
+       var parsed = date.toLocaleDateString() + ' (' + date.toLocaleTimeString() + ')';
+       
+       return parsed; 
+}
+
+// Parses a XMPP date (yyyy-mm-dd) into an human-readable one
+function parseDay(to_parse) {
+       var date = Date.jab2date(to_parse);
+       var parsed = date.toLocaleDateString();
+       
+       return parsed; 
+}
+
+// Parses a XMPP date (hh-mm-ss) into an human-readable one
+function parseTime(to_parse) {
+       var date = Date.jab2date(to_parse);
+       var parsed = date.toLocaleTimeString();
+       
+       return parsed; 
+}
+
+// Parses a XMPP date stamp into a relative one
+function relativeDate(to_parse) {
+       // Get the current date
+       var current_date = Date.jab2date(getXMPPTime('utc'));
+       var current_day = current_date.getDate();
+       var current_stamp = current_date.getTime();
+       
+       // Parse the given date
+       var old_date = Date.jab2date(to_parse);
+       var old_day = old_date.getDate();
+       var old_stamp = old_date.getTime();
+       var old_time = old_date.toLocaleTimeString();
+       
+       // Get the day number between the two dates
+       var days = Math.round((current_stamp - old_stamp) / 86400000);
+       
+       // Invalid date?
+       if(isNaN(old_stamp) || isNaN(days))
+               return getCompleteTime();
+       
+       // Is it today?
+       if(current_day == old_day)
+               return old_time;
+       
+       // It is yesterday?
+       if(days <= 1)
+               return _e("Yesterday") + ' - ' + old_time;
+       
+       // Is it less than a week ago?
+       if(days <= 7)
+               return printf(_e("%s days ago"), days) + ' - ' + old_time;
+       
+       // Another longer period
+       return old_date.toLocaleDateString() + ' - ' + old_time;
+}
+
+// Reads a message delay
+function readMessageDelay(node) {
+       // Initialize
+       var delay, d_delay;
+       
+       // Read the delay
+       d_delay = jQuery(node).find('delay[xmlns=' + NS_URN_DELAY + ']:first').attr('stamp');
+       
+       // New delay (valid XEP)
+       if(d_delay)
+               delay = d_delay;
+       
+       // Old delay (obsolete XEP!)
+       else {
+               // Try to read the old-school delay
+               var x_delay = jQuery(node).find('x[xmlns=' + NS_DELAY + ']:first').attr('stamp');
+               
+               if(x_delay)
+                       delay = x_delay.replace(/^(\w{4})(\w{2})(\w{2})T(\w{2}):(\w{2}):(\w{2})Z?(\S+)?/, '$1-$2-$3T$4:$5:$6Z$7');
+       }
+       
+       return delay;
+}