1 | var $, gettext, _gettext, _ref, _t; |
---|
2 | |
---|
3 | gettext = null; |
---|
4 | |
---|
5 | if (typeof Gettext !== "undefined" && Gettext !== null) { |
---|
6 | _gettext = new Gettext({ |
---|
7 | domain: "annotator" |
---|
8 | }); |
---|
9 | gettext = function(msgid) { |
---|
10 | return _gettext.gettext(msgid); |
---|
11 | }; |
---|
12 | } else { |
---|
13 | gettext = function(msgid) { |
---|
14 | return msgid; |
---|
15 | }; |
---|
16 | } |
---|
17 | |
---|
18 | _t = function(msgid) { |
---|
19 | return gettext(msgid); |
---|
20 | }; |
---|
21 | |
---|
22 | if (!(typeof jQuery !== "undefined" && jQuery !== null ? (_ref = jQuery.fn) != null ? _ref.jquery : void 0 : void 0)) { |
---|
23 | console.error(_t("Annotator requires jQuery: have you included lib/vendor/jquery.js?")); |
---|
24 | } |
---|
25 | |
---|
26 | if (!(JSON && JSON.parse && JSON.stringify)) { |
---|
27 | console.error(_t("Annotator requires a JSON implementation: have you included lib/vendor/json2.js?")); |
---|
28 | } |
---|
29 | |
---|
30 | $ = jQuery.sub(); |
---|
31 | |
---|
32 | $.flatten = function(array) { |
---|
33 | var flatten; |
---|
34 | flatten = function(ary) { |
---|
35 | var el, flat, _i, _len; |
---|
36 | flat = []; |
---|
37 | for (_i = 0, _len = ary.length; _i < _len; _i++) { |
---|
38 | el = ary[_i]; |
---|
39 | flat = flat.concat(el && $.isArray(el) ? flatten(el) : el); |
---|
40 | } |
---|
41 | return flat; |
---|
42 | }; |
---|
43 | return flatten(array); |
---|
44 | }; |
---|
45 | |
---|
46 | $.plugin = function(name, object) { |
---|
47 | return jQuery.fn[name] = function(options) { |
---|
48 | var args; |
---|
49 | args = Array.prototype.slice.call(arguments, 1); |
---|
50 | return this.each(function() { |
---|
51 | var instance; |
---|
52 | instance = $.data(this, name); |
---|
53 | if (instance) { |
---|
54 | return options && instance[options].apply(instance, args); |
---|
55 | } else { |
---|
56 | instance = new object(this, options); |
---|
57 | return $.data(this, name, instance); |
---|
58 | } |
---|
59 | }); |
---|
60 | }; |
---|
61 | }; |
---|
62 | |
---|
63 | $.fn.textNodes = function() { |
---|
64 | var getTextNodes; |
---|
65 | getTextNodes = function(node) { |
---|
66 | var nodes; |
---|
67 | if (node && node.nodeType !== 3) { |
---|
68 | nodes = []; |
---|
69 | if (node.nodeType !== 8) { |
---|
70 | node = node.lastChild; |
---|
71 | while (node) { |
---|
72 | nodes.push(getTextNodes(node)); |
---|
73 | node = node.previousSibling; |
---|
74 | } |
---|
75 | } |
---|
76 | return nodes.reverse(); |
---|
77 | } else { |
---|
78 | return node; |
---|
79 | } |
---|
80 | }; |
---|
81 | return this.map(function() { |
---|
82 | return $.flatten(getTextNodes(this)); |
---|
83 | }); |
---|
84 | }; |
---|
85 | |
---|
86 | $.fn.xpath = function(relativeRoot) { |
---|
87 | var jq; |
---|
88 | jq = this.map(function() { |
---|
89 | var elem, idx, path; |
---|
90 | path = ''; |
---|
91 | elem = this; |
---|
92 | while (elem && elem.nodeType === 1 && elem !== relativeRoot) { |
---|
93 | idx = $(elem.parentNode).children(elem.tagName).index(elem) + 1; |
---|
94 | idx = idx > 1 ? "[" + idx + "]" : ""; |
---|
95 | path = "/" + elem.tagName.toLowerCase() + idx + path; |
---|
96 | elem = elem.parentNode; |
---|
97 | } |
---|
98 | return path; |
---|
99 | }); |
---|
100 | return jq.get(); |
---|
101 | }; |
---|
102 | |
---|
103 | $.escape = function(html) { |
---|
104 | return html.replace(/&(?!\w+;)/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"'); |
---|
105 | }; |
---|
106 | |
---|
107 | $.fn.escape = function(html) { |
---|
108 | if (arguments.length) return this.html($.escape(html)); |
---|
109 | return this.html(); |
---|
110 | }; |
---|