1    function highlightRange(range) {
2         var newNode = document.createElement('mark2');
3         range.surroundContents(newNode);
4            }
5            // Function to get the Selected Text
6        function getSelectedText() {
7            var selectedText = '';
8            selectedText = window.getSelection();
9           console.log(selectedText);
10            // window.getSelection
11
12            if (window.getSelection) {
13                 selectedText = window.getSelection();
14                 for(var i = 0; i < selectedText.rangeCount; i++) {
15                        highlightRange(selectedText.getRangeAt(i));
16                                }
17                }
18            // document.getSelection
19            else if (document.getSelection) {
20                selectedText = document.getSelection();
21                 }
22            // document.selection
23            else if (document.selection) {
24                selectedText = document.selection.createRange().text;
25            } else return;
26            // To write the selected text into the textarea
27            if (document.getElementsByTagName("title")[1] !=null){
28	    var papertitle = document.getElementsByTagName("title")[1].textContent;
29		}else{
30	    var papertitle = url;
31		}
32           // document.testform.selectedtext.value += selectedText +"\n";
33           if (document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value == ""){
34           document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += "====== "+papertitle+" ====== \r\n [["+url+"|" + papertitle + "]]  [[?do=highlight2wiki&ur="+url+"|✍Highlight]]--"+timestamp+"\r\n\n";
35          document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += "{{tag> }}\r\n\n"; //add tag syntax
36                }
37
38           let selectedTextString = document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value;
39            document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += selectedTextString + selectedText + "\n\n";
40        }
41
42    function markjs(){
43			let selectedText = window.getSelection();
44            selectedTextString = selectedText.toString();
45			var instance = new Mark(document.getElementById("wanttext"));
46
47			var lines = selectedTextString.split('\n');    // lines is an array of strings
48			for (var j = 0; j < lines.length; j++) {
49			instance.mark(lines[j], {
50            "element": "mark2",
51            "acrossElements": true,
52            "separateWordSearch": false,
53            "diacritics": false});
54			document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += lines[j] + "\n\n";
55
56            }
57        }
58
59function loadmarkjs(){
60var textArea = document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value;
61
62var lines = textArea.split('\n\n');    // lines is an array of strings
63var instance2 = new Mark(document.getElementById("wanttext"));
64// Loop through all lines
65for (var j = 0; j < lines.length; j++) {
66  //  highlight(lines[j]);
67    console.log(lines[j]);
68
69    instance2.mark(lines[j], {
70	"element": "mark2",
71	"acrossElements": true,
72	"separateWordSearch": false,
73	"diacritics": false});
74
75}
76
77}
78
79function loadmarkjsfr(){
80var textArea = document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value;
81
82var lines = textArea.split('\n\n');    // lines is an array of strings
83var instance2 = new Mark(document.getElementById("wanttext"));
84// Loop through all lines
85for (var j = 0; j < lines.length; j++) {
86  //  highlight(lines[j]);
87    console.log(lines[j]);
88
89    instance2.mark(lines[j], {
90	"element": "markfr",
91	"acrossElements": true,
92	"separateWordSearch": false,
93	"diacritics": false});
94
95}
96
97}
98
99
100
101
102
103    function highlight_2(){
104            let selectedText = window.getSelection();
105            selectedText = selectedText.toString();
106
107	        console.log(selectedText);
108            highlight(selectedText);
109
110
111        }
112
113
114
115function highlight(text) {
116
117    //document.documentElement.innerHTML = document.documentElement.innerHTML.replace(new RegExp(text + '(?!([^<]+)?<)', 'gi'),'<mark2>$&</mark2>');;
118  var inputText = document.getElementById("wanttext");
119  var innerHTML = inputText.innerHTML;
120  var index = innerHTML.indexOf(text);
121  console.log(index);
122  if (index >= 0) {
123     innerHTML = innerHTML.substring(0,index) + "<mark2>" + innerHTML.substring(index,index+text.length) + "</mark2>" + innerHTML.substring(index + text.length);
124     inputText.innerHTML = innerHTML;
125  }
126}
127
128
129
130
131
132
133function loadhighlight(){ // load the hightlight text from dokuwiki textarea
134var textArea = document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value;
135
136var lines = textArea.split('\n\n');    // lines is an array of strings
137
138// Loop through all lines
139for (var j = 0; j < lines.length; j++) {
140    highlight(lines[j]);
141    console.log(lines[j]);
142 //document.testform.selectedtext.value += lines[j];
143}
144}
145
146
147function loadhighlightrevision(){
148var textArea = document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value;
149
150var lines = textArea.split('\n\n');    // lines is an array of strings
151
152// Loop through all lines
153for (var j = 0; j < lines.length; j++) {
154    highlight2(lines[j]);
155    console.log(lines[j]);
156 //document.testform.selectedtext.value += lines[j];
157}
158}
159
160
161function highlight2(text) {
162     // hightlight for revision
163    //document.documentElement.innerHTML = document.documentElement.innerHTML.replace(new RegExp(text + '(?!([^<]+)?<)', 'gi'),'<mark2>$&</mark2>');;
164  var inputText = document.getElementById("wanttext");
165  var innerHTML = inputText.innerHTML;
166  var index = innerHTML.indexOf(text);
167  console.log(index);
168  if (index >= 0) {
169     innerHTML = innerHTML.substring(0,index) + "<markfr>" + innerHTML.substring(index,index+text.length) + "</markfr>" + innerHTML.substring(index + text.length);
170     inputText.innerHTML = innerHTML;
171  }
172}
173
174
175
176
177function edittag(){
178      var newtagselection = window.getSelection();
179	  var newtagcomponent = newtagselection.toString();
180            newtagcomponent =newtagcomponent.trim();
181      if(newtagcomponent.match(/\s/)){
182        newtagcomponent = "\""+newtagcomponent+"\"";
183      }
184	  console.log(newtagcomponent.toString());
185	  var textArea = document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value;
186      var newtextArea;
187	  if(textArea.match(/\{{tag>(.+?)\}}/i)!=null){
188            console.log("not null");
189        	  var textareamatch = textArea.match(/\{{tag>(.+?)\}}/i);
190            console.log(textareamatch[1]+" "+ newtagcomponent.toString());
191	        newtextArea = textArea.replace(/\{{tag>(.*)\}}/i,"{{tag>"+textareamatch[1]+" "+ newtagcomponent.toString()+"}}");
192	         console.log(newtextArea);
193	         document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value = newtextArea;
194
195
196
197
198	  }else{
199	        console.log("null");
200	       document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += "{{tag>" +  newtagcomponent.toString() + "}}\r\n\n";
201	  }
202	}
203
204
205
206
207
208
209function loadH2WFunc(){
210            jQuery('#wanttext *').removeAttr('height width sizes style alt sizes');
211			jQuery('#wanttext *').removeClass();
212			jQuery('#wanttext link').remove();
213			jQuery('#wanttext textarea').remove();
214			jQuery('#wanttext input').remove();
215			jQuery('#wanttext button').remove();
216
217			//add host root to img src
218			url_hostns =stripTrailingSlash(url_host);
219			jQuery('#wanttext img').each(function(key,value) {
220			if(jQuery(this).attr('src')!=null){
221            if (jQuery(this).attr('src').includes('http')){
222			//console.log('completed url:'+jQuery(this).attr('src'));
223            }else{
224			//console.log('image src link broken:'+jQuery(this).attr('src'));
225			var scrurl= url_hostns + jQuery(this).attr('src');
226		    jQuery(this).attr('src', scrurl);
227		    //console.log('addedhostroot:'+jQuery(this).attr('src'));
228	        }
229
230            //convert data-src to src
231            if(jQuery(this).attr('data-src')!=null){
232				//console.log('datasrc:'+jQuery(this).attr('data-src'));
233				jQuery(this).attr('src', jQuery(this).attr('data-src'));
234				//console.log('src change to '+ jQuery(this).attr('src'));
235			}
236			}
237			});
238
239            jQuery('#wanttext *').each(function(key,value) {
240			if(jQuery(this).attr('href')!=null){
241            if (jQuery(this).attr('href').includes('http')){
242			//console.log('link complete url:'+jQuery(this).attr('href'));
243            }else{
244			//console.log('link broken:'+jQuery(this).attr('href'));
245			var scrurl= url_hostns + jQuery(this).attr('href');
246		    jQuery(this).attr('href', scrurl);
247		    //console.log('link hostroot added:'+jQuery(this).attr('href'));
248	        }
249			}
250			});
251
252
253
254
255
256
257
258
259
260        if (document.getElementsByTagName("title")[1] !=null){
261	    var papertitle = document.getElementsByTagName("title")[1].textContent;
262		}else{
263	    var papertitle = url;
264		   }
265           if (document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value == ""){
266           document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += "====== "+papertitle+" ====== \r\n [["+url+"|" + papertitle + "]]  [[?do=highlight2wiki&ur="+url+"|✍Highlight]]--"+timestamp+"\r\n\n";
267          document.getElementById("edtop").contentWindow.document.getElementsByTagName("textarea")[0].value += "{{tag> }}\r\n\n"; //add tag syntax
268           }
269
270
271jQuery('#wanttext').append('<input type="button" class="unibutton" value="Clean!"  onpointerdown="cleanorphantext()" > ');
272
273}
274
275function cleanorphantext(){
276jQuery('wanttext').contents().filter(function(){return this.nodeType != 1;}).remove();
277alert('orphan text cleared');
278}
279
280
281function HLdarkmode(){
282
283	jQuery('div').toggleClass("dark-mode");
284
285}
286
287
288function stripTrailingSlash(str){
289   if(str.charAt(str.length-1) == "/"){ str = str.substr(0, str.length - 1);}
290   return str
291}
292