src/js/utils.js
changeset 1068 7623f9af9272
parent 1014 96ea47146c66
child 1072 ac1eacb3aa33
--- a/src/js/utils.js	Fri Sep 25 14:45:38 2015 +0200
+++ b/src/js/utils.js	Fri Oct 02 11:27:17 2015 +0200
@@ -33,7 +33,7 @@
     var list = [],
         positions = [],
         text = _text.replace(/(^\s+|\s+$)/g,'');
-    
+
     function addToList(_rx, _startHtml, _endHtml) {
         while(true) {
             var result = _rx.exec(text);
@@ -52,11 +52,11 @@
             positions.push(end);
         }
     }
-    
+
     if (_regexp) {
         addToList(_regexp, '<span class="Ldt-Highlight">', '</span>');
     }
-    
+
     addToList(/(https?:\/\/)?[\w\d\-]+\.[\w\d\-]+\S+/gm, function(matches) {
         return '<a href="' + (matches[1] ? '' : 'http://') + matches[0] + '" target="_blank">';
     }, '</a>');
@@ -65,19 +65,19 @@
     }, '</a>');
     addToList(/\*[^*]+\*/gm, '<b>', '</b>');
     addToList(/[\n\r]+/gm, '', '<br />');
-    
+
     IriSP._(_extend).each(function(x) {
         addToList.apply(null, x);
     });
-    
+
     positions = IriSP._(positions)
         .chain()
         .uniq()
         .sortBy(function(p) { return parseInt(p); })
         .value();
-    
+
     var res = "", lastIndex = 0;
-    
+
     for (var i = 0; i < positions.length; i++) {
         var pos = positions[i];
         res += text.substring(lastIndex, pos);
@@ -95,11 +95,11 @@
         }
         lastIndex = pos;
     }
-    
+
     res += text.substring(lastIndex);
-    
+
     return res;
-    
+
 };
 
 IriSP.log = function() {
@@ -112,11 +112,27 @@
 	jqSel.attr("draggable", "true").on("dragstart", function(_event) {
 		var d = (typeof data === "function" ? data.call(this) : data);
 		try {
+            if (d.html === undefined && d.uri && d.text) {
+                d.html = '<a href="' + d.uri + '">' + d.text + '</a>';
+            }
 			IriSP._(d).each(function(v, k) {
-				if (v) {
+                if (v && k != 'text' && k != 'html') {
 					_event.originalEvent.dataTransfer.setData("text/x-iri-" + k, v);
 				}
 			});
+            if (d.uri && d.text) {
+                _event.originalEvent.dataTransfer.setData("text/x-moz-url", d.uri + "\n" + d.text.replace("\n", " "));
+                _event.originalEvent.dataTransfer.setData("text/plain", d.text + " " + d.uri);
+            }
+            // Define generic text/html and text/plain last (least
+            // specific types, see
+            // https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Drag_operations#Drag_Data)
+            if (d.html !== undefined) {
+                _event.originalEvent.dataTransfer.setData("text/html", d.html);
+            }
+            if (d.text !== undefined && ! d.uri) {
+                _event.originalEvent.dataTransfer.setData("text/plain", d.text);
+            }
 		} catch(err) {
 			_event.originalEvent.dataTransfer.setData("Text", JSON.stringify(d));
 		}
@@ -130,3 +146,59 @@
         _this[p] = noop;
     });
 };
+
+IriSP.timestamp2ms = function(t) {
+    // Convert timestamp to numeric value
+    // It accepts the following forms:
+    // [h:mm:ss] [mm:ss] [ss]
+    var s = t.split(":").reverse();
+    while (s.length < 3) {
+        s.push("0");
+    }
+    return 1000 * (3600 * parseInt(s[2], 10) + 60 * parseInt(s[1], 10) + parseInt(s[0], 10));
+};
+
+IriSP.setFullScreen= function(elem, value) {
+    // Set fullscreen on or off
+    if (value) {
+		if (elem.requestFullscreen) {
+			elem.requestFullscreen();
+		} else if (elem.mozRequestFullScreen) {
+			elem.mozRequestFullScreen();
+		} else if (elem.webkitRequestFullscreen) {
+			elem.webkitRequestFullscreen();
+		} else if (elem.msRequestFullscreen) {
+			elem.msRequestFullscreen();
+		}
+	} else {
+        if (document.exitFullscreen) {
+            document.exitFullscreen();
+        } else if (document.msExitFullscreen) {
+            document.msExitFullscreen();
+        } else if (document.mozCancelFullScreen) {
+            document.mozCancelFullScreen();
+        } else if (document.webkitExitFullscreen) {
+            document.webkitExitFullscreen();
+        }
+    }
+};
+
+IriSP.isFullscreen = function() {
+	return (document.fullscreenElement ||  document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement);
+};
+
+IriSP.getFullscreenElement = function () {
+    return (document.fullscreenElement
+            || document.webkitFullscreenElement
+            || document.mozFullScreenElement
+            || document.msFullscreenElement
+            || undefined);
+};
+
+IriSP.getFullscreenEventname = function () {
+    return ((document.exitFullscreen && "fullscreenchange")
+            || (document.webkitExitFullscreen && "webkitfullscreenchange")
+            || (document.mozExitFullScreen && "mozfullscreenchange")
+            || (document.msExitFullscreen && "msfullscreenchange")
+            || "");
+};