diff -r 539c9bee5372 -r 7623f9af9272 src/js/utils.js --- 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, '', ''); } - + addToList(/(https?:\/\/)?[\w\d\-]+\.[\w\d\-]+\S+/gm, function(matches) { return ''; }, ''); @@ -65,19 +65,19 @@ }, ''); addToList(/\*[^*]+\*/gm, '', ''); addToList(/[\n\r]+/gm, '', '
'); - + 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 = '' + d.text + ''; + } 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") + || ""); +};