]> git.mxchange.org Git - friendica-addons.git/blobdiff - jappixmini/jappix/js/utilities.js
jappixmini: include jappix source
[friendica-addons.git] / jappixmini / jappix / js / utilities.js
diff --git a/jappixmini/jappix/js/utilities.js b/jappixmini/jappix/js/utilities.js
new file mode 100644 (file)
index 0000000..b28a6a7
--- /dev/null
@@ -0,0 +1,437 @@
+/*
+
+Jappix - An open social platform
+These are the utilities JS script for Jappix
+
+-------------------------------------------------
+
+License: AGPL
+Authors: Vanaryon, olivierm
+Last revision: 24/06/11
+
+*/
+
+// Checks if a function exists
+function functionExists(func) {
+       if(typeof func == 'function')
+               return true;
+       
+       return false;
+}
+
+// Returns whether using HTTPS or not
+function isHTTPS() {
+       if(window.location.href && (window.location.href).match(/^https/i))
+               return true;
+       
+       return false;
+}
+
+// Generates the good storage URL
+function generateURL(url) {
+       // HTTPS not allowed
+       if((HTTPS_STORAGE != 'on') && url.match(/^https(.+)/))
+               url = 'http' + RegExp.$1;
+       
+       return url;
+}
+
+// Disables an input if needed
+function disableInput(value, condition) {
+       if(value == condition)
+               return ' disabled=""';
+       
+       return '';
+}
+
+// Cuts a string
+function cut(string, limit) {
+       return string.substr(0, limit);
+}
+
+// Truncates a string
+function truncate(string, limit) {
+       // Must truncate the string
+       if(string.length > limit)
+               string = string.substr(0, limit) + '...';
+       
+       return string;
+}
+
+// Removes the new lines
+function noLines(string) {
+       return string.replace(/\n/g, ' ');
+}
+
+// Encodes a string for onclick attribute
+function encodeOnclick(str) {
+       return (encodeQuotes(str)).replace(/'/g, '\\$&');
+}
+
+// Checks if we are in the anonymous mode
+function isAnonymous() {
+       if(allowedAnonymous() && LINK_VARS['r'])
+               return true;
+       
+       return false;
+}
+
+// Checks if this is a private chat user
+function isPrivate(xid) {
+       if(exists('[data-xid=' + escape(xid) + '][data-type=groupchat]'))
+               return true;
+       
+       return false;
+}
+
+// Checks if the user browser is obsolete
+function isObsolete() {
+       // Get browser name & version
+       var browser_name = BrowserDetect.browser;
+       var browser_version = BrowserDetect.version;
+       
+       // No DOM storage
+       if(!hasDB() || !hasPersistent())
+               return true;
+       
+       // Obsolete IE
+       if((browser_name == 'Explorer') && (browser_version < 8))
+               return true;
+       
+       // Obsolete Chrome
+       if((browser_name == 'Chrome') && (browser_version < 7))
+               return true;
+       
+       // Obsolete Safari
+       if((browser_name == 'Safari') && (browser_version < 4))
+               return true;
+       
+       // Obsolete Firefox
+       if((browser_name == 'Firefox') && (browser_version < 3.5))
+               return true;
+       
+       // Obsolete Opera
+       if((browser_name == 'Opera') && (browser_version < 9))
+               return true;
+       
+       return false;
+}
+
+// Gets a MUC user XID
+function getMUCUserXID(room, nick) {
+       return $('div.chat[data-xid=' + escape(room) + '] div[data-nick=' + escape(nick) + ']').attr('data-xid');
+}
+
+// Gets a MUC user read XID
+function getMUCUserRealXID(room, nick) {
+       return $('div.chat[data-xid=' + escape(room) + '] div[data-nick=' + escape(nick) + ']').attr('data-realxid');
+}
+
+// Gets the server of the user
+function getServer() {
+       // Return the domain of the user
+       return con.domain;
+}
+
+// Gets the password of the user
+function getPassword() {
+       // Return the password of the user
+       return con.pass;
+}
+
+// Quotes the nick of an user
+function quoteMyNick(hash, nick) {
+       $(document).oneTime(10, function() {
+               $('#page-engine #' + hash + ' .message-area').val(nick + ', ').focus();
+       });
+}
+
+// Escapes a string for a regex usage
+function escapeRegex(query) {
+       return query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+}
+
+// Converts a XML document to a string
+function xmlToString(xmlData) {
+       try {
+               // For Mozilla, Firefox, Opera, etc.
+               if(window.XMLSerializer)
+                       return (new XMLSerializer()).serializeToString(xmlData);
+               
+               // For Internet Explorer
+               if(window.ActiveXObject)
+                       return xmlData.xml;
+               
+               return null;
+       }
+       
+       catch(e) {
+               return null;
+       }
+}
+
+// Converts a string to a XML document
+function XMLFromString(sXML) {
+       try {
+               // No data?
+               if(!sXML)
+                       return '';
+               
+               // Add the XML tag
+               if(!sXML.match(/^<\?xml/i))
+                       sXML = '<?xml version="1.0"?>' + sXML;
+               
+               // Parse it!
+               if(window.DOMParser)
+                       return (new DOMParser()).parseFromString(sXML, 'text/xml');
+               
+               if(window.ActiveXObject) {
+                       var oXML = new ActiveXObject('Microsoft.XMLDOM');
+                       oXML.loadXML(sXML);
+                       
+                       return oXML;
+               }
+       }
+       
+       catch(e) {
+               return '';
+       }
+}
+
+// Return the file category
+function fileCategory(ext) {
+       var cat;
+       
+       switch(ext) {
+               // Images
+               case 'jpg':
+               case 'jpeg':
+               case 'png':
+               case 'bmp':
+               case 'gif':
+               case 'tif':
+               case 'svg':
+               case 'psp':
+               case 'xcf':
+                       cat = 'image';
+                       
+                       break;
+               
+               // Videos
+               case 'ogv':
+               case 'ogg':
+               case 'mkv':
+               case 'avi':
+               case 'mov':
+               case 'mp4':
+               case 'm4v':
+               case 'wmv':
+               case 'asf':
+               case 'mpg':
+               case 'mpeg':
+               case 'ogm':
+               case 'rmvb':
+               case 'rmv':
+               case 'qt':
+               case 'flv':
+               case 'ram':
+               case '3gp':
+               case 'avc':
+                       cat = 'video';
+                       
+                       break;
+               
+               // Sounds
+               case 'oga':
+               case 'mka':
+               case 'flac':
+               case 'mp3':
+               case 'wav':
+               case 'm4a':
+               case 'wma':
+               case 'rmab':
+               case 'rma':
+               case 'bwf':
+               case 'aiff':
+               case 'caf':
+               case 'cda':
+               case 'atrac':
+               case 'vqf':
+               case 'au':
+               case 'aac':
+               case 'm3u':
+               case 'mid':
+               case 'mp2':
+               case 'snd':
+               case 'voc':
+                       cat = 'audio';
+                       
+                       break;
+               
+               // Documents
+               case 'pdf':
+               case 'odt':
+               case 'ott':
+               case 'sxw':
+               case 'stw':
+               case 'ots':
+               case 'sxc':
+               case 'stc':
+               case 'sxi':
+               case 'sti':
+               case 'pot':
+               case 'odp':
+               case 'ods':
+               case 'doc':
+               case 'docx':
+               case 'docm':
+               case 'xls':
+               case 'xlsx':
+               case 'xlsm':
+               case 'xlt':
+               case 'ppt':
+               case 'pptx':
+               case 'pptm':
+               case 'pps':
+               case 'odg':
+               case 'otp':
+               case 'sxd':
+               case 'std':
+               case 'std':
+               case 'rtf':
+               case 'txt':
+               case 'htm':
+               case 'html':
+               case 'shtml':
+               case 'dhtml':
+               case 'mshtml':
+                       cat = 'document';
+                       
+                       break;
+               
+               // Packages
+               case 'tgz':
+               case 'gz':
+               case 'tar':
+               case 'ar':
+               case 'cbz':
+               case 'jar':
+               case 'tar.7z':
+               case 'tar.bz2':
+               case 'tar.gz':
+               case 'tar.lzma':
+               case 'tar.xz':
+               case 'zip':
+               case 'xz':
+               case 'rar':
+               case 'bz':
+               case 'deb':
+               case 'rpm':
+               case '7z':
+               case 'ace':
+               case 'cab':
+               case 'arj':
+               case 'msi':
+                       cat = 'package';
+                       
+                       break;
+               
+               // Others
+               default:
+                       cat = 'other';
+                       
+                       break;
+       }
+       
+       return cat;
+}
+
+// Registers Jappix as the default XMPP links handler
+function xmppLinksHandler() {
+       try {
+               navigator.registerProtocolHandler('xmpp', JAPPIX_LOCATION + '?x=%s', SERVICE_NAME);
+               
+               return true;
+       }
+       
+       catch(e) {
+               return false;
+       }
+}
+
+// Checks if a value exists in an array
+function existArrayValue(array, value) {
+       try {
+               // Loop in the array
+               for(i in array) {
+                       if(array[i] == value)
+                               return true;
+               }
+               
+               return false;
+       }
+       
+       catch(e) {
+               return false;
+       }
+}
+
+// Removes a value from an array
+function removeArrayValue(array, value) {
+       for(i in array) {
+               // It matches, remove it!
+               if(array[i] == value) {
+                       array.splice(i, 1);
+                       
+                       return true;
+               }
+       }
+       
+       return false;
+}
+
+// Converts a string to an array
+function stringToArray(string) {
+       var array = [];
+       
+       // Any string to convert?
+       if(string) {
+               // More than one item
+               if(string.match(/,/gi)) {
+                       var string_split = string.split(',');
+                       
+                       for(i in string_split) {
+                               if(string_split[i])
+                                       array.push(string_split[i]);
+                               else
+                                       array.push('');
+                       }
+               }
+               
+               // Only one item
+               else
+                       array.push(string);
+       }
+       
+       return array;
+}
+
+// Get the index of an array value
+function indexArrayValue(array, value) {
+       // Nothing?
+       if(!array || !array.length)
+               return 0;
+       
+       // Read the index of the value
+       var index = 0;
+       
+       for(var i = 0; i < array.length; i++) {
+               if(array[i] == value) {
+                       index = i;
+                       
+                       break;
+               }
+       }
+       
+       return index;
+}