tinymce.PluginManager.add("autolink", function(a){function b(a){e(a, - 1, "(", !0)}function c(a){e(a, 0, "", !0)}function d(a){e(a, - 1, "", !1)}function e(a, b, c){function d(a, b){if (0 > b && (b = 0), 3 == a.nodeType){var c = a.data.length; b > c && (b = c)}return b}function e(a, b){1 != a.nodeType || a.hasChildNodes()?g.setStart(a, d(a, b)):g.setStartBefore(a)}function f(a, b){1 != a.nodeType || a.hasChildNodes()?g.setEnd(a, d(a, b)):g.setEndAfter(a)}var g, h, i, j, k, l, m, n, o, p; if ("A" != a.selection.getNode().tagName){if (g = a.selection.getRng(!0).cloneRange(), g.startOffset < 5){if (n = g.endContainer.previousSibling, !n){if (!g.endContainer.firstChild || !g.endContainer.firstChild.nextSibling)return; n = g.endContainer.firstChild.nextSibling}if (o = n.length, e(n, o), f(n, o), g.endOffset < 5)return; h = g.endOffset, j = n} else{if (j = g.endContainer, 3 != j.nodeType && j.firstChild){for (; 3 != j.nodeType && j.firstChild; )j = j.firstChild; 3 == j.nodeType && (e(j, 0), f(j, j.nodeValue.length))}h = 1 == g.endOffset?2:g.endOffset - 1 - b}i = h; do e(j, h >= 2?h - 2:0), f(j, h >= 1?h - 1:0), h -= 1, p = g.toString(); while (" " != p && "" !== p && 160 != p.charCodeAt(0) && h - 2 >= 0 && p != c); g.toString() == c || 160 == g.toString().charCodeAt(0)?(e(j, h), f(j, i), h += 1):0 === g.startOffset?(e(j, 0), f(j, i)):(e(j, h), f(j, i)), l = g.toString(), "." == l.charAt(l.length - 1) && f(j, i - 1), l = g.toString(), m = l.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i), m && ("www." == m[1]?m[1] = "http://www.":/@$/.test(m[1]) && !/^mailto:/.test(m[1]) && (m[1] = "mailto:" + m[1]), k = a.selection.getBookmark(), a.selection.setRng(g), a.execCommand("createlink", !1, m[1] + m[2]), a.selection.moveToBookmark(k), a.nodeChanged())}}var f; return a.on("keydown", function(b){return 13 == b.keyCode?d(a):void 0}), tinymce.Env.ie?void a.on("focus", function(){if (!f){f = !0; try{a.execCommand("AutoUrlDetect", !1, !0)} catch (b){}}}):(a.on("keypress", function(c){return 41 == c.keyCode?b(a):void 0}), void a.on("keyup", function(b){return 32 == b.keyCode?c(a):void 0}))}); |