1 | // ==UserScript==
|
---|
2 | // @name Computer Says No
|
---|
3 | // @namespace org.greenstone.csn
|
---|
4 | // @include http://*
|
---|
5 | // ==/UserScript==
|
---|
6 |
|
---|
7 |
|
---|
8 |
|
---|
9 | var csnInitialized = false;
|
---|
10 |
|
---|
11 | var inspectorActive = false;
|
---|
12 | var inspectorDragging = false;
|
---|
13 | var inspectorIgnoreSingleClick = false;
|
---|
14 |
|
---|
15 | var inspectorSelectedElems = [];
|
---|
16 |
|
---|
17 | var csnFoldOrExpand = "fold";
|
---|
18 | var csnMode = null;
|
---|
19 | var csnFirstnameMode = "full";
|
---|
20 | var csnPunctMode = "with-spaces";
|
---|
21 | var csnMergeMode = "interactive";
|
---|
22 | var csnDeleteMode = "interactive";
|
---|
23 |
|
---|
24 |
|
---|
25 | var csnOnTop = false;
|
---|
26 |
|
---|
27 | var seaweedActivated = false;
|
---|
28 |
|
---|
29 | var zRange = {};
|
---|
30 |
|
---|
31 |
|
---|
32 | var ELEMENT_NODE = 1;
|
---|
33 | var ATTRIBUTE_NODE = 2;
|
---|
34 | var TEXT_NODE = 3;
|
---|
35 | var CDATA_SECTION_NODE = 4;
|
---|
36 | var ENTITY_REFERENCE_NODE = 5;
|
---|
37 | var ENTITY_NODE = 6;
|
---|
38 | var PROCESSING_INSTRUCTION_NODE = 7;
|
---|
39 | var COMMENT_NODE = 8;
|
---|
40 | var DOCUMENT_NODE = 9;
|
---|
41 | var DOCUMENT_TYPE_NODE = 10;
|
---|
42 | var DOCUMENT_FRAGMENT_NODE = 11;
|
---|
43 | var NOTATION_NODE = 12;
|
---|
44 |
|
---|
45 | function trim(str)
|
---|
46 | {
|
---|
47 | return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
|
---|
48 | }
|
---|
49 |
|
---|
50 | function whiteSpaceIndent(count)
|
---|
51 | {
|
---|
52 | var spaces_cache = [ "", " ", " ", " ", " ", " ", " " ];
|
---|
53 | if (count < spaces_cache.length) {
|
---|
54 | return spaces_cache[count];
|
---|
55 | }
|
---|
56 |
|
---|
57 | var spaces = "";
|
---|
58 |
|
---|
59 | for (var i=0; i<count; i++) {
|
---|
60 | spaces += " ";
|
---|
61 | spaces_cache[i] = spaces;
|
---|
62 | }
|
---|
63 |
|
---|
64 | return spaces;
|
---|
65 | }
|
---|
66 |
|
---|
67 | function traverseDOM(node,depth)
|
---|
68 | {
|
---|
69 | if (depth==null) {
|
---|
70 | depth = 0;
|
---|
71 | }
|
---|
72 |
|
---|
73 | if (node.nodeType == TEXT_NODE) {
|
---|
74 | var text = node.nodeValue;
|
---|
75 | if (!text.match(/^\s*$/)) {
|
---|
76 | // only print if not whitespace
|
---|
77 | var indent = whiteSpaceIndent(depth);
|
---|
78 | console.log(indent + node.nodeValue);
|
---|
79 | }
|
---|
80 | }
|
---|
81 | else if (node.nodeType == ELEMENT_NODE) {
|
---|
82 | var indent = whiteSpaceIndent(depth);
|
---|
83 | console.log(indent + "<"+node.nodeName.toLowerCase()+">");
|
---|
84 | for(var i=0; i<node.childNodes.length; i++) {
|
---|
85 | traverseDOM(node.childNodes[i],depth+1);
|
---|
86 | }
|
---|
87 | console.log(indent + "</"+node.nodeName.toLowerCase()+">");
|
---|
88 | }
|
---|
89 | else {
|
---|
90 | alert("Unexpectedly got : " + node.nodeType + "for : " + nodeType);
|
---|
91 | }
|
---|
92 | }
|
---|
93 |
|
---|
94 |
|
---|
95 |
|
---|
96 | function getChildText(node)
|
---|
97 | {
|
---|
98 | var text = "";
|
---|
99 |
|
---|
100 | if (node.nodeType == TEXT_NODE) {
|
---|
101 | text = node.nodeValue;
|
---|
102 | if (text.match(/^\s*$/)) {
|
---|
103 | text = "";
|
---|
104 | }
|
---|
105 | }
|
---|
106 | else if (node.nodeType == ELEMENT_NODE) {
|
---|
107 |
|
---|
108 | if (node.nodeName.toLowerCase() == "input") {
|
---|
109 | text = node.value;
|
---|
110 | if (text.match(/^\s*$/)) {
|
---|
111 | text = "";
|
---|
112 | }
|
---|
113 | }
|
---|
114 | else {
|
---|
115 | for(var i=0; i<node.childNodes.length; i++) {
|
---|
116 | text += getChildText(node.childNodes[i]);
|
---|
117 | }
|
---|
118 | }
|
---|
119 | }
|
---|
120 | else {
|
---|
121 | alert("getChildText(): Unexpectedly got : " + node.nodeType + "for : " + nodeType);
|
---|
122 | }
|
---|
123 |
|
---|
124 | text = trim(text);
|
---|
125 |
|
---|
126 | return text;
|
---|
127 | }
|
---|
128 |
|
---|
129 | function getChildHyperlinks(node,links)
|
---|
130 | {
|
---|
131 | if (node.nodeType == ELEMENT_NODE) {
|
---|
132 | if (node.nodeName.toLowerCase() == "a") {
|
---|
133 | links[links.length] = node;
|
---|
134 | }
|
---|
135 | else {
|
---|
136 | for(var i=0; i<node.childNodes.length; i++) {
|
---|
137 | var childNode = node.childNodes[i];
|
---|
138 | getChildHyperlinks(childNode,links);
|
---|
139 | }
|
---|
140 | }
|
---|
141 | }
|
---|
142 | }
|
---|
143 |
|
---|
144 |
|
---|
145 | function getFirstChildHyperlink(node)
|
---|
146 | {
|
---|
147 | var link = null;
|
---|
148 |
|
---|
149 | var links = new Array();
|
---|
150 | getChildHyperlinks(node,links);
|
---|
151 |
|
---|
152 | if (links.length>0) {
|
---|
153 | //hyperlink found
|
---|
154 | link = links[0];
|
---|
155 | }
|
---|
156 |
|
---|
157 | return link;
|
---|
158 | }
|
---|
159 |
|
---|
160 |
|
---|
161 |
|
---|
162 | function elementPartOfCsn(elem)
|
---|
163 | {
|
---|
164 | // ignore any elements that are within the CSN area
|
---|
165 |
|
---|
166 |
|
---|
167 | while (true) {
|
---|
168 | if ((elem==null) || (elem.nodeName.toLowerCase()=="body")) {
|
---|
169 | break;
|
---|
170 | }
|
---|
171 |
|
---|
172 | if (elem.nodeType != ELEMENT_NODE) {
|
---|
173 | // ignore events caused by clicking on the scroll bar, etc.
|
---|
174 | break;
|
---|
175 | }
|
---|
176 |
|
---|
177 | //console.log("elem = " + elem);
|
---|
178 |
|
---|
179 | var elemId = elem.getAttribute("id");
|
---|
180 |
|
---|
181 | if ((elemId != null) && (elemId=="ComputerSaysNo")) {
|
---|
182 | return true;
|
---|
183 | }
|
---|
184 |
|
---|
185 | var parent = elem.parentNode;
|
---|
186 |
|
---|
187 | if (parent==null) {
|
---|
188 | break;
|
---|
189 | }
|
---|
190 |
|
---|
191 | elem = parent;
|
---|
192 | }
|
---|
193 |
|
---|
194 | return false;
|
---|
195 | }
|
---|
196 |
|
---|
197 |
|
---|
198 |
|
---|
199 | function elementPartOfPreLookup(elem)
|
---|
200 | {
|
---|
201 | // ignore any elements that are within the CSN area
|
---|
202 |
|
---|
203 |
|
---|
204 | while (true) {
|
---|
205 | if ((elem==null) || (elem.nodeName.toLowerCase()=="body")) {
|
---|
206 | break;
|
---|
207 | }
|
---|
208 |
|
---|
209 | if (elem.nodeType != ELEMENT_NODE) {
|
---|
210 | // ignore events caused by clicking on the scroll bar, etc.
|
---|
211 | break;
|
---|
212 | }
|
---|
213 |
|
---|
214 | //console.log("elem = " + elem);
|
---|
215 |
|
---|
216 | var elemId = elem.getAttribute("id");
|
---|
217 |
|
---|
218 | if ((elemId != null) && (elemId=="preLookup")) {
|
---|
219 | return true;
|
---|
220 | }
|
---|
221 |
|
---|
222 | var parent = elem.parentNode;
|
---|
223 |
|
---|
224 | if (parent==null) {
|
---|
225 | break;
|
---|
226 | }
|
---|
227 |
|
---|
228 | elem = parent;
|
---|
229 | }
|
---|
230 |
|
---|
231 | return false;
|
---|
232 | }
|
---|
233 |
|
---|
234 |
|
---|
235 |
|
---|
236 | function appendIfUniq(elem)
|
---|
237 | {
|
---|
238 | var appendElem = true;
|
---|
239 | for (var i=0; i<inspectorSelectedElems.length; i++) {
|
---|
240 | if (inspectorSelectedElems[i] == elem) {
|
---|
241 | appendElem = false;
|
---|
242 | break;
|
---|
243 | }
|
---|
244 | }
|
---|
245 | if (appendElem) {
|
---|
246 | inspectorSelectedElems[inspectorSelectedElems.length] = elem;
|
---|
247 | }
|
---|
248 |
|
---|
249 | }
|
---|
250 |
|
---|
251 |
|
---|
252 | function getElemParents(elem,inclusive)
|
---|
253 | {
|
---|
254 | // setting inclusive to true means 'elem' is also put in the array of parents
|
---|
255 | // default is to exclude it
|
---|
256 | var parents = new Array();
|
---|
257 |
|
---|
258 | while (true) {
|
---|
259 | if ((elem==null) || (elem.nodeName.toLowerCase()=="body")) {
|
---|
260 | break;
|
---|
261 | }
|
---|
262 |
|
---|
263 | if ((inclusive!=null) && (inclusive)) {
|
---|
264 | parents[parents.length] = elem;
|
---|
265 | }
|
---|
266 |
|
---|
267 | var parent = elem.parentNode;
|
---|
268 |
|
---|
269 | if (parent==null) {
|
---|
270 | break;
|
---|
271 | }
|
---|
272 |
|
---|
273 | if ((inclusive==null) || (!inclusive)) {
|
---|
274 | parents[parents.length] = parent;
|
---|
275 | }
|
---|
276 |
|
---|
277 | elem = parent;
|
---|
278 | }
|
---|
279 |
|
---|
280 | return parents;
|
---|
281 | }
|
---|
282 |
|
---|
283 | function calcSharedElemParent(startElem,endElem)
|
---|
284 | {
|
---|
285 | if (startElem==null) { return null; };
|
---|
286 |
|
---|
287 | // This case shouldn't arise anymore
|
---|
288 | if (endElem==null) { return startElem.parentNode; }
|
---|
289 |
|
---|
290 | var startParents = getElemParents(startElem);
|
---|
291 | var endParents = getElemParents(endElem);
|
---|
292 |
|
---|
293 | var sharedParent = null;
|
---|
294 |
|
---|
295 | for (var s=0; s<startParents.length; s++) {
|
---|
296 | var currStartParent = startParents[s];
|
---|
297 | for (var e=0; e<endParents.length; e++) {
|
---|
298 | var currEndParent = endParents[e];
|
---|
299 | if (currEndParent==currStartParent) {
|
---|
300 | console.log("Got match at level: " + s + "=<"+startParents[s].nodeName+"> (start) "
|
---|
301 | + e + "=<" +endParents[e].nodeName + "> (end)");
|
---|
302 | sharedParent = currEndParent;
|
---|
303 | break;
|
---|
304 | }
|
---|
305 | }
|
---|
306 | if (sharedParent != null) {
|
---|
307 | break;
|
---|
308 | }
|
---|
309 | }
|
---|
310 |
|
---|
311 | return sharedParent;
|
---|
312 | }
|
---|
313 |
|
---|
314 | function getSiblingPosition(sharedSiblings,elem)
|
---|
315 | {
|
---|
316 | var elemParents = getElemParents(elem,true);
|
---|
317 |
|
---|
318 | var siblingPos = -1;
|
---|
319 |
|
---|
320 | for (var sb=0; sb<sharedSiblings.length; sb++) {
|
---|
321 | var currSibling = sharedSiblings[sb];
|
---|
322 | for (var el=0; el<elemParents.length; el++) {
|
---|
323 | var currElemParent = elemParents[el];
|
---|
324 | if (currElemParent==currSibling) {
|
---|
325 | siblingPos = sb;
|
---|
326 | break;
|
---|
327 | }
|
---|
328 | }
|
---|
329 | if (siblingPos>0) {
|
---|
330 | break;
|
---|
331 | }
|
---|
332 | }
|
---|
333 |
|
---|
334 | return siblingPos;
|
---|
335 | }
|
---|
336 |
|
---|
337 |
|
---|
338 | var rangedElemsHistory_ = new Array();
|
---|
339 | var sharedParentElemHistory_ = new Array();
|
---|
340 |
|
---|
341 |
|
---|
342 | function calcRangedElems(sharedParent,startElem,endElem)
|
---|
343 | {
|
---|
344 | var rangedElems = new Array();
|
---|
345 |
|
---|
346 | // if get to here, then there is a non-trivial range to work out
|
---|
347 | var sharedSiblings = sharedParent.childNodes;
|
---|
348 |
|
---|
349 | var startSiblingPos = getSiblingPosition(sharedSiblings,startElem);
|
---|
350 | var endSiblingPos = getSiblingPosition(sharedSiblings,endElem);
|
---|
351 |
|
---|
352 | for (var sb=startSiblingPos; sb<=endSiblingPos; sb++) {
|
---|
353 | rangedElems[rangedElems.length] = sharedSiblings[sb];
|
---|
354 | }
|
---|
355 |
|
---|
356 |
|
---|
357 | return rangedElems;
|
---|
358 | }
|
---|
359 |
|
---|
360 | function zIndexRange()
|
---|
361 | {
|
---|
362 | var minZ=null;
|
---|
363 | var maxZ=null;
|
---|
364 |
|
---|
365 | var elems = document.getElementsByTagName("*");
|
---|
366 |
|
---|
367 | for (var e = 0; e < elems.length; e++) {
|
---|
368 | var z = elems[e].style.zIndex;
|
---|
369 | if (z) {
|
---|
370 | if (minZ!=null) {
|
---|
371 | if (z < minZ) { minZ = z; }
|
---|
372 | }
|
---|
373 | else {
|
---|
374 | minZ = z;
|
---|
375 | }
|
---|
376 |
|
---|
377 | if (maxZ!=null) {
|
---|
378 | if (z > maxZ) { maxZ = z; }
|
---|
379 | }
|
---|
380 | else {
|
---|
381 | maxZ = z;
|
---|
382 | }
|
---|
383 | }
|
---|
384 |
|
---|
385 | }
|
---|
386 |
|
---|
387 | return { minZ: minZ, maxZ: maxZ };
|
---|
388 | }
|
---|
389 |
|
---|
390 |
|
---|
391 |
|
---|
392 | function csnInit()
|
---|
393 | {
|
---|
394 | //alert("The Inspector");
|
---|
395 |
|
---|
396 | if (csnInitialized) return;
|
---|
397 | if (window!=window.top) return; // child iFrame
|
---|
398 |
|
---|
399 | csnInitialized = true;
|
---|
400 |
|
---|
401 | var csnCheck = document.getElementById('ComputerSaysNo');
|
---|
402 | if (csnCheck!=null) return;
|
---|
403 |
|
---|
404 |
|
---|
405 | var body = document.body;
|
---|
406 |
|
---|
407 | zRange = zIndexRange();
|
---|
408 | var minZ = zRange['minZ'];
|
---|
409 | var maxZ = zRange['maxZ'];
|
---|
410 |
|
---|
411 | var inspectBaseZindex = (minZ==null) ? -1 : "inherit" ;
|
---|
412 | var inspectHighlightZindex = (maxZ==null) ? 1000 : parseInt(maxZ)+1000;
|
---|
413 |
|
---|
414 | //console.log("base zindex: " + inspectBaseZindex);
|
---|
415 | //console.log("highlight zindex: " + inspectHighlightZindex);
|
---|
416 |
|
---|
417 | // wrap original body content in a div tag so any
|
---|
418 | // absolute position the document uses will be relatative
|
---|
419 | // to its new position (once the CSN toolbar added in)
|
---|
420 |
|
---|
421 | var orig_child_len = body.childNodes.length;
|
---|
422 |
|
---|
423 | var beyondToolbarDiv = document.createElement('div');
|
---|
424 | var beyondToolbarDivStyle = "position: relative; left: 0px; top: 0px;";
|
---|
425 | beyondToolbarDiv.setAttribute('style',beyondToolbarDivStyle);
|
---|
426 | body.insertBefore(beyondToolbarDiv,body.firstChild);
|
---|
427 |
|
---|
428 | for (var i=0; i<orig_child_len; i++) {
|
---|
429 | // always position '1' as we then remove the item
|
---|
430 | var childNode = body.childNodes[1];
|
---|
431 | body.removeChild(childNode);
|
---|
432 | beyondToolbarDiv.appendChild(childNode);
|
---|
433 | }
|
---|
434 |
|
---|
435 |
|
---|
436 | // Build up and add in the CSN Tool Bar
|
---|
437 |
|
---|
438 | var csnDivStyle = "position: relative; left: 0px; top: 0px;";
|
---|
439 | csnDivStyle += " width: 100%;";
|
---|
440 |
|
---|
441 | var csnDiv = document.createElement('div');
|
---|
442 | csnDiv.setAttribute('id','ComputerSaysNo');
|
---|
443 | csnDiv.setAttribute('style',csnDivStyle);
|
---|
444 |
|
---|
445 | // Table for Logo
|
---|
446 | var csnBgImage = 'background="' + csnImage + '"';
|
---|
447 | var csmBgImage = 'background="' + csmImage + '"';
|
---|
448 | var csyBgImage = 'background="' + csyImage + '"';
|
---|
449 |
|
---|
450 | var bgImageStyle = 'style="background-position: center; background-repeat: no-repeat;" ';
|
---|
451 |
|
---|
452 | var csnTdImage = '<td width="33%" ' + bgImageStyle + csnBgImage + ' style="background-repeat: no-repeat;"></td>';
|
---|
453 | var csmTdImage = '<td width="33%" ' + bgImageStyle + csmBgImage + ' style="background-repeat: no-repeat;"></td>';
|
---|
454 | var csyTdImage = '<td width="33%" ' + bgImageStyle + csyBgImage + ' style="background-repeat: no-repeat;"></td>';
|
---|
455 |
|
---|
456 | var csnLogo = '<table bgcolor="black" width="100%" height="27"><tr>' + csnTdImage + csmTdImage + csyTdImage + '</tr></table>';
|
---|
457 |
|
---|
458 | // Table for actions
|
---|
459 | var csnContent = '<tr style="color: white;">';
|
---|
460 |
|
---|
461 | var tick = '<span style="visibility: hidden;">✓ </span>';
|
---|
462 |
|
---|
463 | var accentFoldOptions = '<ul id="accentFoldOptions" class="csnOption" style="display: none;">'
|
---|
464 | accentFoldOptions += ' <li><p class="csnOptionText"><i>[Click/drag region]</i></p></li>';
|
---|
465 | accentFoldOptions += ' <li><p id="accentFoldCancel" class="csnOption" href="#">Cancel</p></li>';
|
---|
466 | accentFoldOptions += '</ul>';
|
---|
467 |
|
---|
468 | var punctFoldOptions = '<ul id="punctFoldOptions" class="csnOption" style="display: none;">'
|
---|
469 | punctFoldOptions += ' <li><p class="csnOptionText"><i>[Click/drag region]</i></p></li>';
|
---|
470 | punctFoldOptions += ' <li><p id="punctFoldCancel" class="csnOption" href="#">Cancel</p></li>';
|
---|
471 | punctFoldOptions += '</ul>';
|
---|
472 |
|
---|
473 | var firstnameFoldOptions = '<ul id="firstnameFoldOptions" class="csnOption" style="display: none;">'
|
---|
474 | firstnameFoldOptions += ' <li><p class="csnOptionText"><i>[Click/drag region]</i></p></li>';
|
---|
475 | firstnameFoldOptions += ' <li><p id="firstnameFullFoldButton" class="csnOption">' +tick+'Firstname</p></li>';
|
---|
476 | firstnameFoldOptions += ' <li><p id="firstnameInitialFoldButton" class="csnOption">'+tick+'Only initial</p></li>';
|
---|
477 | firstnameFoldOptions += ' <li><p id="firstnameFoldCancel" class="csnOption">Cancel</p></li>';
|
---|
478 | firstnameFoldOptions += '</ul>';
|
---|
479 |
|
---|
480 | var NAOptions = '<ul id="NAOptions" class="csnOption" style="display: none;">'
|
---|
481 | NAOptions += ' <li><p class="csnOptionText"><i>[Click/drag region]</i></p></li>';
|
---|
482 | NAOptions += ' <li><p id="NACancel" class="csnOption" href="#">Cancel</p></li>';
|
---|
483 | NAOptions += '</ul>';
|
---|
484 |
|
---|
485 | var editOptions = '<ul id="editOptions" class="csnOption" style="display: none;">'
|
---|
486 | editOptions += ' <li><p class="csnOptionText"><i>[Click/drag region]</i></p></li>';
|
---|
487 | //editOptions += ' <li><p id="editInteractiveButton" class="csnOption">' +tick+'Interacitve click/drag</p></li>';
|
---|
488 | editOptions += ' <li><p id="editPreviousButton" class="csnOptionDisabled">Previous region</p></li>';
|
---|
489 | editOptions += ' <li><p id="editCancel" class="csnOption" href="#">Cancel</p></li>';
|
---|
490 | editOptions += '</ul>';
|
---|
491 |
|
---|
492 | var sortOptions = '<ul id="sortOptions" class="csnOption" style="display: none;">'
|
---|
493 | sortOptions += ' <li><p class="csnOptionText"><i>[Click/drag region]</i></p></li>';
|
---|
494 | //sortOptions += ' <li><p id="sortInteractiveButton" class="csnOption">' +tick+'Interacitve click/drag</p></li>';
|
---|
495 | sortOptions += ' <li><p id="sortPreviousButton" class="csnOptionDisabled">Previous region</p></li>';
|
---|
496 | sortOptions += ' <li><p id="sortCancel" class="csnOption" href="#">Cancel</p></li>';
|
---|
497 | sortOptions += '</ul>';
|
---|
498 |
|
---|
499 | var mergeOptions = '<ul id="mergeOptions" class="csnOption" style="display: none;">'
|
---|
500 | mergeOptions += ' <li><p class="csnOptionText"><i>[Click/drag region]</i></p></li>';
|
---|
501 | //mergeOptions += ' <li><p id="mergeInteractiveButton" class="csnOption">' +tick+'Interacitve click/drag</p></li>';
|
---|
502 | mergeOptions += ' <li><p id="mergePreviousButton" class="csnOptionDisabled">Previous region</p></li>';
|
---|
503 | mergeOptions += ' <li><p id="mergeCancel" class="csnOption" href="#">Cancel</p></li>';
|
---|
504 | mergeOptions += '</ul>';
|
---|
505 |
|
---|
506 | var deleteOptions = '<ul id="deleteOptions" class="csnOption" style="display: none;">'
|
---|
507 | deleteOptions += ' <li><p class="csnOptionText"><i>[Click/drag region]</i></p></li>';
|
---|
508 | deleteOptions += ' <li><p id="deletePreviousButton" class="csnOptionDisabled">Previous region</p></li>';
|
---|
509 | deleteOptions += ' <li><p id="deleteCancel" class="csnOption" href="#">Cancel</p></li>';
|
---|
510 | deleteOptions += '</ul>';
|
---|
511 |
|
---|
512 |
|
---|
513 | var csnContentStyle = "border: 2px inset white; background-color: rgb(25,25,25);";
|
---|
514 | //var csnContentStyle = "background-color: rgb(20,20,20);";
|
---|
515 |
|
---|
516 | csnContent += '<td valign="top"><table width="100%" style="'+csnContentStyle+'"><tr>';
|
---|
517 | csnContent += '<td width="85" valign="top"><p id="accentFoldButton" class="csnAction csnActionHighlight" href="#">Accent ...</p>'+accentFoldOptions+'</td>';
|
---|
518 | csnContent += '<td width="85" valign="top"><p id="punctFoldButton" class="csnAction csnActionHighlight" href="#">Punctuation ...</p>'+punctFoldOptions+'</td>';
|
---|
519 | csnContent += '<td width="85" valign="top"><p id="firstnameFoldButton" class="csnAction csnActionHighlight" href="#">Firstname ...</p>'+firstnameFoldOptions+'</td>';
|
---|
520 | csnContent += '<td width="85" valign="top"><p id="NAButton" class="csnAction csnActionHighlight" href="#">Name Authority ...</p>'+NAOptions+'</td>';
|
---|
521 | csnContent += '</tr></table></td>';
|
---|
522 |
|
---|
523 |
|
---|
524 | csnContent += '<td valign="top"><table width="100%" style="'+csnContentStyle+'"><tr>';
|
---|
525 | csnContent += '<td width="70" valign="top"><p id="editButton" class="csnAction csnActionHighlight" href="#">Edit ...</p>'+editOptions+'</td>';
|
---|
526 | csnContent += '<td width="70" valign="top"><p id="sortButton" class="csnAction csnActionHighlight" href="#">Sort same ...</p>'+sortOptions+'</td>';
|
---|
527 | csnContent += '<td width="70" valign="top"><p id="mergeButton" class="csnAction csnActionHighlight" href="#">Merge ...</p>'+mergeOptions+'</td>';
|
---|
528 |
|
---|
529 | // Delete and Undo
|
---|
530 | csnContent += '<td width="40" valign="top"><p id="deleteButton" class="csnAction csnActionHighlight">Delete ...</p>'+deleteOptions+'</td>';
|
---|
531 | csnContent += '<td width="40" valign="top"><p id="undoButton" class="csnAction csnActionHighlight">Undo</p></td>';
|
---|
532 |
|
---|
533 |
|
---|
534 | csnContent += '</tr></table></td>';
|
---|
535 |
|
---|
536 |
|
---|
537 |
|
---|
538 |
|
---|
539 |
|
---|
540 | // Fold or Expand radio buttons
|
---|
541 | csnContent += '<td valign="top" width="220">';
|
---|
542 | csnContent += '<table width="100%" style="'+csnContentStyle+'"><tr>';
|
---|
543 | csnContent += ' <td><p class="csnAction">Fold:</p></td>';
|
---|
544 | csnContent += ' <td><input id="foldRadioButton" type="radio" name="csnFoldOrExpand" value="fold" checked></td>';
|
---|
545 | csnContent += ' <td><p class="csnAction">Expand:</p></td>';
|
---|
546 | csnContent += ' <td><input id="expandRadioButton" type="radio" name="csnFoldOrExpand" value="expand"></td>';
|
---|
547 | csnContent += '</tr></table>';
|
---|
548 | csnContent += '</td>';
|
---|
549 |
|
---|
550 | //csnContent += '<td width="15%" valign="top"><p id="CsnOnTopButton" class="csnAction" href="#">Toolbar on top</p></td>';
|
---|
551 | csnContent += '</tr>';
|
---|
552 |
|
---|
553 | var csnDisplay = '<style>';
|
---|
554 | csnDisplay += 'p.csnAction,span.csnAction { text-decoration: none; color: white; ';
|
---|
555 | csnDisplay += ' margin: 2px; border: 0px; padding: 1px; ';
|
---|
556 | csnDisplay += ' font-family: arial; font-size: 11pt; font-weight: bold; }';
|
---|
557 | csnDisplay += 'p.csnActionHighlight:hover { color: green; }';
|
---|
558 | csnDisplay += 'p.csnOption,p.csnOptionText { text-decoration: none; color: white; ';
|
---|
559 | csnDisplay += ' margin: 2px; border: 0px; padding: 1px; ';
|
---|
560 | csnDisplay += ' font-family: arial; font-size: 10pt; }';
|
---|
561 | csnDisplay += 'p.csnOption:hover { color: green; }';
|
---|
562 | csnDisplay += 'ul.csnOption { list-style-type: square; line-height: 100%; margin: 0px 0px 0px 20px; padding: 0px 0px 2px 0px;}';
|
---|
563 | csnDisplay += 'p.csnOptionDisabled { text-decoration: none; color: gray; ';
|
---|
564 | csnDisplay += ' margin: 2px; border: 0px; padding: 1px; ';
|
---|
565 | csnDisplay += ' font-family: arial; font-size: 10pt; }';
|
---|
566 | csnDisplay += 'h3.csnPreLookup { background-color: black; color: white; ';
|
---|
567 | csnDisplay += ' padding: 4px; }';
|
---|
568 | csnDisplay += 'p.csnPreLookup { background-color: white; color: black; ';
|
---|
569 | csnDisplay += ' padding: 2px 4px 2px 4px; } ';
|
---|
570 | csnDisplay += '</style>';
|
---|
571 |
|
---|
572 | csnDisplay += '<table bgcolor="black" width="100%">' + csnContent + '</table>';
|
---|
573 |
|
---|
574 | var csnCode = '<script type="text/javascript">'+multiSearch + continueMultiSearch + resizeFrame+'</script>';
|
---|
575 |
|
---|
576 | // alert("setting multiSearch");
|
---|
577 |
|
---|
578 | //csnDiv.innerHTML = csnLogo + csnDisplay + csnCode;
|
---|
579 | //body.insertBefore(csnDiv,body.firstChild);
|
---|
580 |
|
---|
581 |
|
---|
582 | csnDiv.innerHTML = csnLogo + csnDisplay ;
|
---|
583 | body.insertBefore(csnDiv,body.firstChild);
|
---|
584 |
|
---|
585 | var csnScript = document.createElement('script');
|
---|
586 | csnScript.setAttribute('type', 'text/javascript');
|
---|
587 | csnScript.setAttribute('charset', 'UTF-8');
|
---|
588 | csnScript.innerHTML = multiSearch + continueMultiSearch + resizeFrame;
|
---|
589 | document.getElementsByTagName('head')[0].appendChild(csnScript);
|
---|
590 |
|
---|
591 |
|
---|
592 | var accentFoldButton = document.getElementById("accentFoldButton");
|
---|
593 | var accentFoldCancel = document.getElementById("accentFoldCancel");
|
---|
594 | accentFoldButton.addEventListener('click', activateAccentFold, true);
|
---|
595 | accentFoldCancel.addEventListener('click', cancelModeOption, true);
|
---|
596 |
|
---|
597 | var punctFoldButton = document.getElementById("punctFoldButton");
|
---|
598 | var punctFoldCancel = document.getElementById("punctFoldCancel");
|
---|
599 | punctFoldButton.addEventListener('click', activatePunctFold, true);
|
---|
600 | punctFoldCancel.addEventListener('click', cancelModeOption, true);
|
---|
601 |
|
---|
602 | var firstnameFoldButton = document.getElementById("firstnameFoldButton");
|
---|
603 | var firstnameFullFoldButton = document.getElementById("firstnameFullFoldButton");
|
---|
604 | var firstnameInitialFoldButton = document.getElementById("firstnameInitialFoldButton");
|
---|
605 | var firstnameFoldCancel = document.getElementById("firstnameFoldCancel");
|
---|
606 | firstnameFoldButton.addEventListener('click', activateFirstnameFold, true);
|
---|
607 | firstnameFullFoldButton.addEventListener('click', activateFirstnameFullFold, true);
|
---|
608 | firstnameInitialFoldButton.addEventListener('click', activateFirstnameInitialFold, true);
|
---|
609 | firstnameFoldCancel.addEventListener('click', cancelModeOption, true);
|
---|
610 | firstnameFullFoldButton.firstChild.style.visibility = "visible";
|
---|
611 | firstnameFullFoldButton.firstChild.style.color = "green";
|
---|
612 |
|
---|
613 | var NAButton = document.getElementById("NAButton");
|
---|
614 | var NACancel = document.getElementById("NACancel");
|
---|
615 | NAButton.addEventListener('click', activateNA, true);
|
---|
616 | NACancel.addEventListener('click', cancelModeOption, true);
|
---|
617 |
|
---|
618 | var editButton = document.getElementById("editButton");
|
---|
619 | var editCancel = document.getElementById("editCancel");
|
---|
620 | editButton.addEventListener('click', activateEdit, true);
|
---|
621 | editCancel.addEventListener('click', cancelModeOption, true);
|
---|
622 |
|
---|
623 | var sortButton = document.getElementById("sortButton");
|
---|
624 | var sortCancel = document.getElementById("sortCancel");
|
---|
625 | sortButton.addEventListener('click', activateSort, true);
|
---|
626 | sortCancel.addEventListener('click', cancelModeOption, true);
|
---|
627 |
|
---|
628 | var mergeButton = document.getElementById("mergeButton");
|
---|
629 | var mergeCancel = document.getElementById("mergeCancel");
|
---|
630 | mergeButton.addEventListener('click', activateMerge, true);
|
---|
631 | mergeCancel.addEventListener('click', cancelModeOption, true);
|
---|
632 |
|
---|
633 | var deleteButton = document.getElementById("deleteButton");
|
---|
634 | var deleteCancel = document.getElementById("deleteCancel");
|
---|
635 | deleteButton.addEventListener('click', activateDelete, true);
|
---|
636 | deleteCancel.addEventListener('click', cancelModeOption, true);
|
---|
637 |
|
---|
638 | var undoButton = document.getElementById("undoButton");
|
---|
639 | undoButton.addEventListener('click', performUndo, true);
|
---|
640 |
|
---|
641 |
|
---|
642 | var foldRadioButton = document.getElementById("foldRadioButton");
|
---|
643 | var expandRadioButton = document.getElementById("expandRadioButton");
|
---|
644 | foldRadioButton.addEventListener('click', setFoldMode, true);
|
---|
645 | expandRadioButton.addEventListener('click', setExpandMode, true);
|
---|
646 |
|
---|
647 | //var CsnOnTopButton = document.getElementById("CsnOnTopButton");
|
---|
648 | //CsnOnTopButton.addEventListener('click', putCsnToolbarOnTop, true);
|
---|
649 |
|
---|
650 | // ------------
|
---|
651 | // 4 div for rect-outline, for inspection highlighting
|
---|
652 | // ------------
|
---|
653 | var csnInspectDiv = document.createElement('div');
|
---|
654 | csnInspectDiv.setAttribute('id','InspectDiv');
|
---|
655 |
|
---|
656 | var csnOffScreenStyle = 'position: fixed; left: 0px; top: 0px;';
|
---|
657 | csnOffScreenStyle += ' visibility: visible;';
|
---|
658 |
|
---|
659 | var inspectBoxStyle = "width: 2px; height: 2px;";
|
---|
660 | inspectBoxStyle += "z-index: " + inspectHighlightZindex + "; ";
|
---|
661 | inspectBoxStyle += "background-color: rgba(0,128,0,1.0);";
|
---|
662 | inspectBoxStyle += "position: absolute;";
|
---|
663 |
|
---|
664 | var inspectBoxAttr = ' style="'+inspectBoxStyle+'"';
|
---|
665 |
|
---|
666 | var csnInspectRect = '<div style="'+csnOffScreenStyle+'">\n';
|
---|
667 | csnInspectRect += ' <div id="inspectBoxL" '+inspectBoxAttr+'></div>\n';
|
---|
668 | csnInspectRect += ' <div id="inspectBoxR" '+inspectBoxAttr+'></div>\n';
|
---|
669 | csnInspectRect += ' <div id="inspectBoxT" '+inspectBoxAttr+'></div>\n';
|
---|
670 | csnInspectRect += ' <div id="inspectBoxB" '+inspectBoxAttr+'></div>\n';
|
---|
671 |
|
---|
672 | var csnPreLookupStyle = "background-color: white; color: black;";
|
---|
673 | csnPreLookupStyle += " border: 2px solid black;";
|
---|
674 | csnPreLookupStyle += " min-width: 600px;";
|
---|
675 | csnPreLookupStyle += " z-index: " + inspectHighlightZindex + "; ";
|
---|
676 | csnPreLookupStyle += " position: absolute;";
|
---|
677 | csnPreLookupStyle += " visibility: hidden;";
|
---|
678 |
|
---|
679 | csnInspectRect += ' <div id="preLookup" class="csnPreLookup" style="'+csnPreLookupStyle+'">\n';
|
---|
680 | //csnInspectRect += ' dasf fad adsffdsa sfda\n';
|
---|
681 | csnInspectRect += ' </div>\n';
|
---|
682 |
|
---|
683 | csnInspectRect += '</div>\n';
|
---|
684 |
|
---|
685 | csnInspectDiv.innerHTML = csnInspectRect;
|
---|
686 |
|
---|
687 |
|
---|
688 | body.insertBefore(csnInspectDiv,body.firstChild);
|
---|
689 |
|
---|
690 | var preLookupDiv = document.getElementById("preLookup");
|
---|
691 | //preLookupDiv.addEventListener("mouseout",hidePreLookup,true);
|
---|
692 |
|
---|
693 | }
|
---|
694 |
|
---|
695 |
|
---|
696 |
|
---|
697 | var existingTimeoutId = null;
|
---|
698 |
|
---|
699 |
|
---|
700 | function showPreLookup(ev)
|
---|
701 | {
|
---|
702 | //console.log("*** supressing show prelookup");
|
---|
703 | //return;
|
---|
704 |
|
---|
705 | var targetElem = ev.target;
|
---|
706 | if (elementPartOfPreLookup(targetElem)) {
|
---|
707 | // no need to go any further
|
---|
708 | return;
|
---|
709 | }
|
---|
710 |
|
---|
711 | // get mouse cursor
|
---|
712 | var mx = ev.pageX - window.pageXOffset;
|
---|
713 | var my = ev.pageY - window.pageYOffset;
|
---|
714 |
|
---|
715 |
|
---|
716 | var author_pack = generateAuthorPack(targetElem);
|
---|
717 | var author_name = author_pack.name;
|
---|
718 |
|
---|
719 |
|
---|
720 | var fullMessage = "";
|
---|
721 | if (csnMode == "NA") {
|
---|
722 | var NAmessage ='<h3 class="csnPreLookup">Name Authority Lookup</h3>';
|
---|
723 | NAmessage += '<p id="prelookupNACount" class="csnPreLookup">Number of occurrences of "'
|
---|
724 | +author_name+'":\n';
|
---|
725 | NAmessage += '<div id="prelookupNAList">Pending ...</div>\n';
|
---|
726 |
|
---|
727 | fullMessage += NAmessage;
|
---|
728 | }
|
---|
729 |
|
---|
730 | // Crowd Sourcing
|
---|
731 | var CSmessage = '<h3 class="csnPreLookup">Crowdsourcing Lookup</h3>';
|
---|
732 | CSmessage += '<p id="prelookupCSCount" class="csnPreLookup">Number of remappings of "'
|
---|
733 | +author_name+'":\n';
|
---|
734 | CSmessage += '<div id="prelookupCSList">Pending ...</div>\n';
|
---|
735 |
|
---|
736 | fullMessage += CSmessage;
|
---|
737 |
|
---|
738 | var preLookupDiv = document.getElementById("preLookup");
|
---|
739 | preLookupDiv.style.left = (mx-30) + "px";
|
---|
740 | preLookupDiv.style.top = (my-30) + "px";
|
---|
741 | preLookupDiv.innerHTML = fullMessage;
|
---|
742 |
|
---|
743 | if (csnMode == "NA") {
|
---|
744 | var naTargetElem = ev.target;
|
---|
745 | var naElemClone = naTargetElem.cloneNode(true);
|
---|
746 |
|
---|
747 | async_named_authority_srw(naElemClone,count_named_authority_canonical);
|
---|
748 | }
|
---|
749 |
|
---|
750 | var csTargetElem = ev.target;
|
---|
751 | var csElemClone = csTargetElem.cloneNode(true);
|
---|
752 |
|
---|
753 | async_crowdsource_greenstone(csElemClone,count_crowdsource_canonical);
|
---|
754 |
|
---|
755 | // ensure rect-box is visibile
|
---|
756 | preLookupDiv.style.visibility = "visible";
|
---|
757 |
|
---|
758 | }
|
---|
759 |
|
---|
760 |
|
---|
761 | function hidePreLookup(ev)
|
---|
762 | {
|
---|
763 | var preLookupDiv = document.getElementById("preLookup");
|
---|
764 | preLookupDiv.style.visibility = "hidden";
|
---|
765 |
|
---|
766 | //console.log("Mouse out inhidPreLookup");
|
---|
767 |
|
---|
768 | if (existingTimeoutId!=null) {
|
---|
769 | clearTimeout(existingTimeoutId);
|
---|
770 | }
|
---|
771 |
|
---|
772 | existingTimeoutId = null;
|
---|
773 | }
|
---|
774 |
|
---|
775 |
|
---|
776 | function csnDeHighlight(ev)
|
---|
777 | {
|
---|
778 | if (!inspectorActive) return false;
|
---|
779 |
|
---|
780 | var targetElem = ev.target;
|
---|
781 |
|
---|
782 | // check to see if in preLookup popup
|
---|
783 | //var targetElemId = targetElem.getAttribute("id");
|
---|
784 | //if ((targetElemId) && (targetElemId == "preLookup")) {
|
---|
785 |
|
---|
786 | if (elementPartOfPreLookup(targetElem)) {
|
---|
787 | //console.log("Mouse out in DeHighlight: part of CSN, hiding");
|
---|
788 |
|
---|
789 | if (existingTimeoutId!=null) {
|
---|
790 | clearTimeout(existingTimeoutId);
|
---|
791 | }
|
---|
792 | // hide preLookup if no new mouse-over event *within* the
|
---|
793 | // div tag occurs in the next 200 ms
|
---|
794 | existingTimeoutId = setTimeout(hidePreLookup, 200, ev);
|
---|
795 |
|
---|
796 | return false;
|
---|
797 | }
|
---|
798 |
|
---|
799 | ev.preventDefault();
|
---|
800 | ev.stopPropagation();
|
---|
801 |
|
---|
802 | var elems;
|
---|
803 | if (inspectorDragging) {
|
---|
804 | var selected_elems_len = inspectorSelectedElems.length;
|
---|
805 | if (selected_elems_len>1) {
|
---|
806 | // Remove this elem
|
---|
807 | var targetElem = ev.target;
|
---|
808 | for (var i=0; i<selected_elems_len; i++) {
|
---|
809 | if (inspectorSelectedElems[i] == targetElem) {
|
---|
810 | // remove element from array
|
---|
811 | inspectorSelectedElems.splice(i,1);
|
---|
812 | break;
|
---|
813 | }
|
---|
814 | }
|
---|
815 | }
|
---|
816 | }
|
---|
817 | }
|
---|
818 |
|
---|
819 | function csnHighlight(ev)
|
---|
820 | {
|
---|
821 | if (!inspectorActive) {
|
---|
822 | // look to see if on-hover pre-lookup should be displayed
|
---|
823 | return false;
|
---|
824 | }
|
---|
825 |
|
---|
826 |
|
---|
827 | ev.preventDefault();
|
---|
828 | ev.stopPropagation();
|
---|
829 |
|
---|
830 | var targetElem = ev.target;
|
---|
831 | if (elementPartOfCsn(targetElem)) {
|
---|
832 | // consume this event if part of the CSN toolbar
|
---|
833 | // and hide any PreLookup popup is present or on timer
|
---|
834 |
|
---|
835 | hidePreLookup(ev);
|
---|
836 | return false;
|
---|
837 | }
|
---|
838 |
|
---|
839 | // Consider showing preLookup (if remain still for 2 further seconds)
|
---|
840 | var preLookupDiv = document.getElementById("preLookup");
|
---|
841 | if (preLookupDiv.style.visibility == "hidden") {
|
---|
842 | if (existingTimeoutId!=null) {
|
---|
843 | clearTimeout(existingTimeoutId);
|
---|
844 | }
|
---|
845 |
|
---|
846 | existingTimeoutId = setTimeout(showPreLookup, 2000, ev);
|
---|
847 | }
|
---|
848 | else {
|
---|
849 | // pop-up currently visible
|
---|
850 | if (elementPartOfPreLookup(targetElem)) {
|
---|
851 | // a hide event might be in the works, but it we've nearly
|
---|
852 | // instantaneously got a new mouse-in event that's in the
|
---|
853 | // same pop-up div tag, so cancel the hide event
|
---|
854 |
|
---|
855 | if (existingTimeoutId!=null) {
|
---|
856 | clearTimeout(existingTimeoutId);
|
---|
857 | existingTimeoutId = null;
|
---|
858 | }
|
---|
859 | }
|
---|
860 | return false;
|
---|
861 | }
|
---|
862 |
|
---|
863 | var elems;
|
---|
864 | if (inspectorDragging) {
|
---|
865 | // append this elem
|
---|
866 |
|
---|
867 | appendIfUniq(targetElem);
|
---|
868 |
|
---|
869 | elems = inspectorSelectedElems;
|
---|
870 | }
|
---|
871 | else {
|
---|
872 | elems = [ ev.target ];
|
---|
873 | }
|
---|
874 |
|
---|
875 | // work out union off all rects
|
---|
876 | var union_rect_xl;
|
---|
877 | var union_rect_xr;
|
---|
878 | var union_rect_yt;
|
---|
879 | var union_rect_yb;
|
---|
880 |
|
---|
881 | for (var i=0; i<elems.length; i++) {
|
---|
882 | var elem = elems[i];
|
---|
883 | var rect = elem.getBoundingClientRect();
|
---|
884 |
|
---|
885 | var rect_xl = rect.left;
|
---|
886 | var rect_xr = rect.right;
|
---|
887 | var rect_yt = rect.top;
|
---|
888 | var rect_yb = rect.bottom;
|
---|
889 |
|
---|
890 | var rect_width = rect_xr - rect_xl +1;
|
---|
891 | var rect_height = rect_yb - rect_yt +1;
|
---|
892 |
|
---|
893 | if ((rect_width<=3) || (rect_height<=3)) {
|
---|
894 | continue;
|
---|
895 | }
|
---|
896 |
|
---|
897 | if ((union_rect_xl==null) || (rect_xl<union_rect_xl)) {
|
---|
898 | union_rect_xl = rect_xl;
|
---|
899 | }
|
---|
900 | if ((union_rect_xr==null) || (rect_xr>union_rect_xr)) {
|
---|
901 | union_rect_xr = rect_xr;
|
---|
902 | }
|
---|
903 |
|
---|
904 | if ((union_rect_yt==null) || (rect_yt<union_rect_yt)) {
|
---|
905 | union_rect_yt = rect_yt;
|
---|
906 | }
|
---|
907 | if ((union_rect_yb==null) || (rect_yb>union_rect_yb)) {
|
---|
908 | union_rect_yb = rect_yb;
|
---|
909 | }
|
---|
910 | }
|
---|
911 |
|
---|
912 | var rect_pp = "(" + rect_xl + "," + rect_yt + ") ";
|
---|
913 | rect_pp += rect_width + " x " + rect_height;
|
---|
914 | //console.log("Mouseover event:" + rect_pp);
|
---|
915 |
|
---|
916 | if (!csnInitialized) {
|
---|
917 | console.log("... but Computer Says No not initialized");
|
---|
918 | return true;
|
---|
919 | }
|
---|
920 |
|
---|
921 | // Make sure we've got a valid rect
|
---|
922 | if ((union_rect_xl==null) || (union_rect_xr==null)
|
---|
923 | || (union_rect_yt==null) || (union_rect_yb==null)) {
|
---|
924 | return true;
|
---|
925 | }
|
---|
926 |
|
---|
927 | // Adjust values to ensure they fall out side where mouse
|
---|
928 | // focus is
|
---|
929 |
|
---|
930 | union_rect_xl -= 2;
|
---|
931 | union_rect_xr += 1;
|
---|
932 | union_rect_yt -= 2;
|
---|
933 | union_rect_yb += 1;
|
---|
934 |
|
---|
935 | var union_rect_width = union_rect_xr - union_rect_xl +2;
|
---|
936 | var union_rect_height = union_rect_yb - union_rect_yt +2;
|
---|
937 |
|
---|
938 |
|
---|
939 | var inspectboxL = document.getElementById("inspectBoxL");
|
---|
940 | inspectboxL.style.left = union_rect_xl + "px";
|
---|
941 | inspectboxL.style.top = union_rect_yt + "px";
|
---|
942 | inspectboxL.style.width = "2px";
|
---|
943 | inspectboxL.style.height = union_rect_height + "px";
|
---|
944 |
|
---|
945 | var inspectboxR = document.getElementById("inspectBoxR");
|
---|
946 | inspectboxR.style.left = union_rect_xr + "px";
|
---|
947 | inspectboxR.style.top = union_rect_yt + "px";
|
---|
948 | inspectboxR.style.width = "2px";
|
---|
949 | inspectboxR.style.height = union_rect_height + "px";
|
---|
950 |
|
---|
951 | var inspectboxT = document.getElementById("inspectBoxT");
|
---|
952 | inspectboxT.style.left = union_rect_xl + "px";
|
---|
953 | inspectboxT.style.top = union_rect_yt + "px";
|
---|
954 | inspectboxT.style.width = union_rect_width + "px";
|
---|
955 | inspectboxT.style.height = "2px";
|
---|
956 |
|
---|
957 | var inspectboxB = document.getElementById("inspectBoxB");
|
---|
958 | inspectboxB.style.left = union_rect_xl + "px";
|
---|
959 | inspectboxB.style.top = union_rect_yb + "px";
|
---|
960 | inspectboxB.style.width = union_rect_width + "px";
|
---|
961 | inspectboxB.style.height = "2px";
|
---|
962 |
|
---|
963 | // ensure rect-box is visibile
|
---|
964 | inspectboxL.style.visibility = "visible";
|
---|
965 | inspectboxR.style.visibility = "visible";
|
---|
966 | inspectboxT.style.visibility = "visible";
|
---|
967 | inspectboxB.style.visibility = "visible";
|
---|
968 |
|
---|
969 | return true;
|
---|
970 | }
|
---|
971 |
|
---|
972 |
|
---|
973 | function csnStartDragging(ev)
|
---|
974 | {
|
---|
975 | var targetElem = ev.target;
|
---|
976 |
|
---|
977 | if (elementPartOfCsn(targetElem)) {
|
---|
978 | // allow this event to propagate
|
---|
979 | return false;
|
---|
980 | }
|
---|
981 |
|
---|
982 | if (inspectorActive) {
|
---|
983 | ev.preventDefault();
|
---|
984 | ev.stopPropagation();
|
---|
985 |
|
---|
986 | if (!inspectorDragging) {
|
---|
987 | inspectorDragging = true;
|
---|
988 | inspectorSelectedElems = [ev.target];
|
---|
989 | }
|
---|
990 | else {
|
---|
991 | // append this elem
|
---|
992 | // can this situation actually occur?
|
---|
993 | inspectorSelectedElems[inspectorSelectedElems.length] = ev.target;
|
---|
994 | }
|
---|
995 |
|
---|
996 | return true;
|
---|
997 | }
|
---|
998 | else {
|
---|
999 | return false;
|
---|
1000 | }
|
---|
1001 | }
|
---|
1002 |
|
---|
1003 | function csnStopDragging(ev)
|
---|
1004 | {
|
---|
1005 | var targetElem = ev.target;
|
---|
1006 | if (elementPartOfCsn(targetElem)) {
|
---|
1007 | // allow this event to propagate
|
---|
1008 | return false;
|
---|
1009 | }
|
---|
1010 |
|
---|
1011 | //if (inspectorActive) {
|
---|
1012 | if ((inspectorActive) && (inspectorDragging)) {
|
---|
1013 | ev.preventDefault();
|
---|
1014 | ev.stopPropagation();
|
---|
1015 |
|
---|
1016 | appendIfUniq(ev.target);
|
---|
1017 |
|
---|
1018 | var ise_len = inspectorSelectedElems.length;
|
---|
1019 | var startElem = inspectorSelectedElems[0];
|
---|
1020 | var endElem = (ise_len==1) ? startElem : inspectorSelectedElems[1];
|
---|
1021 | var sharedParentElem = calcSharedElemParent(startElem,endElem);
|
---|
1022 |
|
---|
1023 | if (sharedParentElem!=null) {
|
---|
1024 |
|
---|
1025 | var rangedElems = calcRangedElems(sharedParentElem,startElem,endElem);
|
---|
1026 | if (rangedElemsHistory_.length==0) {
|
---|
1027 | // first time, establish as the base
|
---|
1028 | sharedParentElemHistory_[0] = sharedParentElem;
|
---|
1029 | rangedElemsHistory_[0] = rangedElems;
|
---|
1030 | }
|
---|
1031 |
|
---|
1032 | if (rangedElems.length>0) {
|
---|
1033 | // turn from grayed out deactive -> active
|
---|
1034 | var editPreviousButton = document.getElementById("editPreviousButton");
|
---|
1035 | editPreviousButton.className = "csnOption";
|
---|
1036 | editPreviousButton.addEventListener('click', performPreviousRangedElemsAction, true);
|
---|
1037 |
|
---|
1038 | var sortPreviousButton = document.getElementById("sortPreviousButton");
|
---|
1039 | sortPreviousButton.className = "csnOption";
|
---|
1040 | sortPreviousButton.addEventListener('click', performPreviousRangedElemsAction, true);
|
---|
1041 |
|
---|
1042 | var mergePreviousButton = document.getElementById("mergePreviousButton");
|
---|
1043 | mergePreviousButton.className = "csnOption";
|
---|
1044 | mergePreviousButton.addEventListener('click', performPreviousRangedElemsAction, true);
|
---|
1045 |
|
---|
1046 | var deletePreviousButton = document.getElementById("deletePreviousButton");
|
---|
1047 | deletePreviousButton.className = "csnOption";
|
---|
1048 | deletePreviousButton.addEventListener('click', performPreviousRangedElemsAction, true);
|
---|
1049 | }
|
---|
1050 |
|
---|
1051 | performModeAction(sharedParentElem,rangedElems);
|
---|
1052 | }
|
---|
1053 | else {
|
---|
1054 | alert("Invalid Selection");
|
---|
1055 | }
|
---|
1056 |
|
---|
1057 |
|
---|
1058 |
|
---|
1059 | var inspectboxL = document.getElementById("inspectBoxL");
|
---|
1060 | var inspectboxR = document.getElementById("inspectBoxR");
|
---|
1061 | var inspectboxT = document.getElementById("inspectBoxT");
|
---|
1062 | var inspectboxB = document.getElementById("inspectBoxB");
|
---|
1063 |
|
---|
1064 | inspectboxL.style.visibility = "hidden";
|
---|
1065 | inspectboxR.style.visibility = "hidden";
|
---|
1066 | inspectboxT.style.visibility = "hidden";
|
---|
1067 | inspectboxB.style.visibility = "hidden";
|
---|
1068 |
|
---|
1069 | inspectorActive = false;
|
---|
1070 | inspectorDragging = false;
|
---|
1071 | inspectorIgnoreSingleClick = true;
|
---|
1072 |
|
---|
1073 | cancelModeOption();
|
---|
1074 |
|
---|
1075 | return true;
|
---|
1076 | }
|
---|
1077 | else {
|
---|
1078 | return false;
|
---|
1079 | }
|
---|
1080 | }
|
---|
1081 |
|
---|
1082 | function csnSingleClick(ev)
|
---|
1083 | {
|
---|
1084 | var targetElem = ev.target;
|
---|
1085 | if (elementPartOfCsn(targetElem)) {
|
---|
1086 | // allow this event to propagate
|
---|
1087 | return false;
|
---|
1088 | }
|
---|
1089 |
|
---|
1090 | if (inspectorIgnoreSingleClick) {
|
---|
1091 | // Stop any further events from happening, such as a click through
|
---|
1092 | // on a hyperlink
|
---|
1093 | ev.preventDefault();
|
---|
1094 | ev.stopPropagation();
|
---|
1095 |
|
---|
1096 | inspectorActive = false;
|
---|
1097 | inspectorDragging = false;
|
---|
1098 | inspectorIgnoreSingleClick = false;
|
---|
1099 |
|
---|
1100 | return true;
|
---|
1101 | }
|
---|
1102 | else {
|
---|
1103 | return false;
|
---|
1104 | }
|
---|
1105 | }
|
---|
1106 |
|
---|
1107 |
|
---|
1108 |
|
---|
1109 | function csnKeyPress(ev)
|
---|
1110 | {
|
---|
1111 | var targetElem = ev.target;
|
---|
1112 |
|
---|
1113 | //console.log("*** in csnKeyPress");
|
---|
1114 |
|
---|
1115 | if (ev.ctrlKey) {
|
---|
1116 |
|
---|
1117 | var keyChar = ev.charCode;
|
---|
1118 | var keyStr = String.fromCharCode(keyChar);
|
---|
1119 |
|
---|
1120 | if (keyStr.toLowerCase() == "s") {
|
---|
1121 | ev.preventDefault();
|
---|
1122 | ev.stopPropagation();
|
---|
1123 |
|
---|
1124 | save_live_doc_html();
|
---|
1125 |
|
---|
1126 | return true;
|
---|
1127 | }
|
---|
1128 | }
|
---|
1129 |
|
---|
1130 | // get to here, return false so event can propagate
|
---|
1131 | return false;
|
---|
1132 |
|
---|
1133 | }
|
---|
1134 |
|
---|
1135 |
|
---|
1136 |
|
---|
1137 | function performModeAction(sharedParentElem,rangedElems)
|
---|
1138 | {
|
---|
1139 | if (csnFoldOrExpand == "fold") {
|
---|
1140 | if (csnMode == "merge") {
|
---|
1141 | mergeAuthors(sharedParentElem,rangedElems);
|
---|
1142 | }
|
---|
1143 | else if (csnMode == "delete") {
|
---|
1144 | deleteAuthors(sharedParentElem,rangedElems);
|
---|
1145 | }
|
---|
1146 | else if (csnMode == "edit") {
|
---|
1147 | editAuthors(sharedParentElem,rangedElems);
|
---|
1148 | }
|
---|
1149 | else if (csnMode == "NA") {
|
---|
1150 | naCanonicalAuthors(sharedParentElem,rangedElems);
|
---|
1151 | }
|
---|
1152 | else {
|
---|
1153 | analyzeAuthors(sharedParentElem,rangedElems);
|
---|
1154 | }
|
---|
1155 | }
|
---|
1156 | else {
|
---|
1157 | if (csnMode == "NA") {
|
---|
1158 | naAliasesAuthors(sharedParentElem,rangedElems);
|
---|
1159 | }
|
---|
1160 |
|
---|
1161 | }
|
---|
1162 | }
|
---|
1163 |
|
---|
1164 | function performPreviousRangedElemsAction()
|
---|
1165 | {
|
---|
1166 | var sharedParentElem = sharedParentElemHistory_[sharedParentElemHistory_.length-1];
|
---|
1167 | var rangedElems = rangedElemsHistory_[rangedElemsHistory_.length-1];
|
---|
1168 |
|
---|
1169 | //console.log("ranged elems length: " + rangedElems.length);
|
---|
1170 | //console.log("shared parent elem: " + sharedParentElem);
|
---|
1171 |
|
---|
1172 | performModeAction(sharedParentElem,rangedElems);
|
---|
1173 |
|
---|
1174 | inspectorActive = false;
|
---|
1175 | inspectorDragging = false;
|
---|
1176 |
|
---|
1177 | cancelModeOption();
|
---|
1178 |
|
---|
1179 | return true;
|
---|
1180 | }
|
---|
1181 |
|
---|
1182 |
|
---|
1183 | function _activateGeneral(id)
|
---|
1184 | {
|
---|
1185 | var options = document.getElementById(id);
|
---|
1186 | options.style.display = "block";
|
---|
1187 | }
|
---|
1188 |
|
---|
1189 | function _cancelGeneral(id)
|
---|
1190 | {
|
---|
1191 | var options = document.getElementById(id);
|
---|
1192 | options.style.display = "none";
|
---|
1193 |
|
---|
1194 | var inspectboxL = document.getElementById("inspectBoxL");
|
---|
1195 | var inspectboxR = document.getElementById("inspectBoxR");
|
---|
1196 | var inspectboxT = document.getElementById("inspectBoxT");
|
---|
1197 | var inspectboxB = document.getElementById("inspectBoxB");
|
---|
1198 |
|
---|
1199 | inspectboxL.style.visibility = "hidden";
|
---|
1200 | inspectboxR.style.visibility = "hidden";
|
---|
1201 | inspectboxT.style.visibility = "hidden";
|
---|
1202 | inspectboxB.style.visibility = "hidden";
|
---|
1203 |
|
---|
1204 | var preLookupDiv = document.getElementById("preLookup");
|
---|
1205 | hidePreLookup(null,preLookupDiv);
|
---|
1206 |
|
---|
1207 | inspectorIgnoreSingleClick = true;
|
---|
1208 | }
|
---|
1209 |
|
---|
1210 | function activateAccentFold()
|
---|
1211 | {
|
---|
1212 | if (csnMode !=null) { cancelModeOption(); }
|
---|
1213 |
|
---|
1214 | inspectorActive = true;
|
---|
1215 | csnMode = "accentFold";
|
---|
1216 |
|
---|
1217 | _activateGeneral("accentFoldOptions");
|
---|
1218 |
|
---|
1219 | return true;
|
---|
1220 | }
|
---|
1221 |
|
---|
1222 | function activatePunctFold()
|
---|
1223 | {
|
---|
1224 | if (csnMode !=null) { cancelModeOption(); }
|
---|
1225 |
|
---|
1226 | inspectorActive = true;
|
---|
1227 | csnMode = "punctFold";
|
---|
1228 |
|
---|
1229 | _activateGeneral("punctFoldOptions");
|
---|
1230 |
|
---|
1231 | return true;
|
---|
1232 | }
|
---|
1233 |
|
---|
1234 | function activateFirstnameFold()
|
---|
1235 | {
|
---|
1236 | if (csnMode !=null) { cancelModeOption(); }
|
---|
1237 |
|
---|
1238 | inspectorActive = true;
|
---|
1239 | csnMode = "firstnameFold";
|
---|
1240 | // let csnFirstnameMode remain whatever it is currently selected as
|
---|
1241 |
|
---|
1242 | _activateGeneral("firstnameFoldOptions");
|
---|
1243 |
|
---|
1244 | return true;
|
---|
1245 | }
|
---|
1246 |
|
---|
1247 | function activateFirstnameFullFold()
|
---|
1248 | {
|
---|
1249 | csnFirstnameMode = "full";
|
---|
1250 |
|
---|
1251 | var firstnameFullFoldButton = document.getElementById("firstnameFullFoldButton");
|
---|
1252 | firstnameFullFoldButton.firstChild.style.visibility = "visible";
|
---|
1253 | firstnameFullFoldButton.firstChild.style.color = "green";
|
---|
1254 | var firstnameInitialFoldButton = document.getElementById("firstnameInitialFoldButton");
|
---|
1255 | firstnameInitialFoldButton.firstChild.style.visibility = "hidden";
|
---|
1256 | firstnameInitialFoldButton.firstChild.style.color = "white";
|
---|
1257 |
|
---|
1258 | return activateFirstnameFold();
|
---|
1259 | }
|
---|
1260 |
|
---|
1261 | function activateFirstnameInitialFold()
|
---|
1262 | {
|
---|
1263 | csnFirstnameMode = "initial";
|
---|
1264 |
|
---|
1265 | var firstnameFullFoldButton = document.getElementById("firstnameFullFoldButton");
|
---|
1266 | firstnameFullFoldButton.firstChild.style.visibility = "hidden";
|
---|
1267 | firstnameFullFoldButton.firstChild.style.color = "white";
|
---|
1268 | var firstnameInitialFoldButton = document.getElementById("firstnameInitialFoldButton");
|
---|
1269 | firstnameInitialFoldButton.firstChild.style.visibility = "visible";
|
---|
1270 | firstnameInitialFoldButton.firstChild.style.color = "green";
|
---|
1271 |
|
---|
1272 | return activateFirstnameFold();
|
---|
1273 | }
|
---|
1274 |
|
---|
1275 |
|
---|
1276 | function activateNA()
|
---|
1277 | {
|
---|
1278 | if (csnMode !=null) { cancelModeOption(); }
|
---|
1279 |
|
---|
1280 | inspectorActive = true;
|
---|
1281 | csnMode = "NA";
|
---|
1282 |
|
---|
1283 | _activateGeneral("NAOptions");
|
---|
1284 |
|
---|
1285 | return true;
|
---|
1286 | }
|
---|
1287 |
|
---|
1288 |
|
---|
1289 | function activateEdit()
|
---|
1290 | {
|
---|
1291 | if (csnMode !=null) { cancelModeOption(); }
|
---|
1292 |
|
---|
1293 | inspectorActive = true;
|
---|
1294 | csnMode = "edit";
|
---|
1295 | // let csnEditMode remain whatever it is currently selected as
|
---|
1296 |
|
---|
1297 | _activateGeneral("editOptions");
|
---|
1298 |
|
---|
1299 | if (!seaweedActivated) {
|
---|
1300 | init_seaweed();
|
---|
1301 | seaweedActivated = true;
|
---|
1302 | }
|
---|
1303 |
|
---|
1304 | return true;
|
---|
1305 | }
|
---|
1306 |
|
---|
1307 | function activateInteractiveEdit()
|
---|
1308 | {
|
---|
1309 |
|
---|
1310 | csnEditMode = "interactive";
|
---|
1311 |
|
---|
1312 | var editInteractiveButton = document.getElementById("editInteractiveButton");
|
---|
1313 | editInteractiveButton.firstChild.style.visibility = "visible";
|
---|
1314 | editInteractiveButton.firstChild.style.color = "green";
|
---|
1315 | var editPreviousFoldButton = document.getElementById("editPreviousButton");
|
---|
1316 | editPreviousFoldButton.firstChild.style.visibility = "hidden";
|
---|
1317 | editPreviousFoldButton.firstChild.style.color = "white";
|
---|
1318 |
|
---|
1319 | return activateEdit();
|
---|
1320 | }
|
---|
1321 |
|
---|
1322 | function activatePreviousEdit()
|
---|
1323 | {
|
---|
1324 |
|
---|
1325 | csnEditMode = "previous";
|
---|
1326 |
|
---|
1327 | var editInteractiveButton = document.getElementById("editInteractiveButton");
|
---|
1328 | editInteractiveButton.firstChild.style.visibility = "hidden";
|
---|
1329 | editInteractiveButton.firstChild.style.color = "white";
|
---|
1330 | var editPreviousFoldButton = document.getElementById("editPreviousButton");
|
---|
1331 | editPreviousFoldButton.firstChild.style.visibility = "visible";
|
---|
1332 | editPreviousFoldButton.firstChild.style.color = "green";
|
---|
1333 |
|
---|
1334 | return activateEdit();
|
---|
1335 | }
|
---|
1336 |
|
---|
1337 |
|
---|
1338 |
|
---|
1339 | function activateSort()
|
---|
1340 | {
|
---|
1341 | if (csnMode !=null) { cancelModeOption(); }
|
---|
1342 | inspectorActive = true;
|
---|
1343 | csnMode = "sort";
|
---|
1344 |
|
---|
1345 | _activateGeneral("sortOptions");
|
---|
1346 |
|
---|
1347 | return true;
|
---|
1348 | }
|
---|
1349 |
|
---|
1350 | function activateInteractiveSort()
|
---|
1351 | {
|
---|
1352 | csnSortMode = "interactive";
|
---|
1353 |
|
---|
1354 | var sortInteractiveButton = document.getElementById("sortInteractiveButton");
|
---|
1355 | sortInteractiveButton.firstChild.style.visibility = "visible";
|
---|
1356 | sortInteractiveButton.firstChild.style.color = "green";
|
---|
1357 | var sortPreviousFoldButton = document.getElementById("sortPreviousButton");
|
---|
1358 | sortPreviousFoldButton.firstChild.style.visibility = "hidden";
|
---|
1359 | sortPreviousFoldButton.firstChild.style.color = "white";
|
---|
1360 |
|
---|
1361 | return activateSort();
|
---|
1362 | }
|
---|
1363 |
|
---|
1364 | function activatePreviousSort()
|
---|
1365 | {
|
---|
1366 | csnSortMode = "previous";
|
---|
1367 |
|
---|
1368 | var sortInteractiveButton = document.getElementById("sortInteractiveButton");
|
---|
1369 | sortInteractiveButton.firstChild.style.visibility = "hidden";
|
---|
1370 | sortInteractiveButton.firstChild.style.color = "white";
|
---|
1371 | var sortPreviousFoldButton = document.getElementById("sortPreviousButton");
|
---|
1372 | sortPreviousFoldButton.firstChild.style.visibility = "visible";
|
---|
1373 | sortPreviousFoldButton.firstChild.style.color = "green";
|
---|
1374 |
|
---|
1375 | return activateSort();
|
---|
1376 |
|
---|
1377 | }
|
---|
1378 |
|
---|
1379 |
|
---|
1380 | function activateMerge()
|
---|
1381 | {
|
---|
1382 | if (csnMode !=null) { cancelModeOption(); }
|
---|
1383 | inspectorActive = true;
|
---|
1384 | csnMode = "merge";
|
---|
1385 |
|
---|
1386 | _activateGeneral("mergeOptions");
|
---|
1387 |
|
---|
1388 | return true;
|
---|
1389 | }
|
---|
1390 |
|
---|
1391 |
|
---|
1392 | function activateInteractiveMerge()
|
---|
1393 | {
|
---|
1394 | csnMergeMode = "interactive";
|
---|
1395 |
|
---|
1396 | var mergeInteractiveButton = document.getElementById("mergeInteractiveButton");
|
---|
1397 | mergeInteractiveButton.firstChild.style.visibility = "visible";
|
---|
1398 | mergeInteractiveButton.firstChild.style.color = "green";
|
---|
1399 | var mergePreviousFoldButton = document.getElementById("mergePreviousButton");
|
---|
1400 | mergePreviousFoldButton.firstChild.style.visibility = "hidden";
|
---|
1401 | mergePreviousFoldButton.firstChild.style.color = "white";
|
---|
1402 |
|
---|
1403 | return activateMerge();
|
---|
1404 | }
|
---|
1405 |
|
---|
1406 | function activatePreviousMerge()
|
---|
1407 | {
|
---|
1408 |
|
---|
1409 | csnMergeMode = "previous";
|
---|
1410 |
|
---|
1411 | var mergeInteractiveButton = document.getElementById("mergeInteractiveButton");
|
---|
1412 | mergeInteractiveButton.firstChild.style.visibility = "hidden";
|
---|
1413 | mergeInteractiveButton.firstChild.style.color = "white";
|
---|
1414 | var mergePreviousFoldButton = document.getElementById("mergePreviousButton");
|
---|
1415 | mergePreviousFoldButton.firstChild.style.visibility = "visible";
|
---|
1416 | mergePreviousFoldButton.firstChild.style.color = "green";
|
---|
1417 |
|
---|
1418 | return activateMerge();
|
---|
1419 | }
|
---|
1420 |
|
---|
1421 |
|
---|
1422 | function activateDelete()
|
---|
1423 | {
|
---|
1424 | if (csnMode !=null) { cancelModeOption(); }
|
---|
1425 | inspectorActive = true;
|
---|
1426 | csnMode = "delete";
|
---|
1427 |
|
---|
1428 | _activateGeneral("deleteOptions");
|
---|
1429 |
|
---|
1430 | return true;
|
---|
1431 | }
|
---|
1432 |
|
---|
1433 | function activatePreviousDelete()
|
---|
1434 | {
|
---|
1435 | csnDeleteMode = "previous";
|
---|
1436 |
|
---|
1437 | var deleteInteractiveButton = document.getElementById("deleteInteractiveButton");
|
---|
1438 | deleteInteractiveButton.firstChild.style.visibility = "hidden";
|
---|
1439 | deleteInteractiveButton.firstChild.style.color = "white";
|
---|
1440 | var deletePreviousFoldButton = document.getElementById("deletePreviousButton");
|
---|
1441 | deletePreviousFoldButton.firstChild.style.visibility = "visible";
|
---|
1442 | deletePreviousFoldButton.firstChild.style.color = "green";
|
---|
1443 |
|
---|
1444 | return activateDelete();
|
---|
1445 | }
|
---|
1446 |
|
---|
1447 | function cancelModeOption()
|
---|
1448 | {
|
---|
1449 | inspectorActive = false;
|
---|
1450 |
|
---|
1451 | _cancelGeneral(csnMode + "Options");
|
---|
1452 |
|
---|
1453 | csnMode = null;
|
---|
1454 |
|
---|
1455 | return true;
|
---|
1456 | }
|
---|
1457 |
|
---|
1458 |
|
---|
1459 | function performUndo()
|
---|
1460 | {
|
---|
1461 | alert("Not implemented yet");
|
---|
1462 |
|
---|
1463 | return true;
|
---|
1464 | }
|
---|
1465 |
|
---|
1466 |
|
---|
1467 |
|
---|
1468 | function setFoldMode()
|
---|
1469 | {
|
---|
1470 | csnFoldOrExpand = "fold";
|
---|
1471 | }
|
---|
1472 |
|
---|
1473 | function setExpandMode()
|
---|
1474 | {
|
---|
1475 | csnFoldOrExpand = "expand";
|
---|
1476 | }
|
---|
1477 |
|
---|
1478 |
|
---|
1479 | function putCsnToolbarOnTop()
|
---|
1480 | {
|
---|
1481 | var toolbar = document.getElementById("ComputerSaysNo");
|
---|
1482 |
|
---|
1483 |
|
---|
1484 | if (!csnOnTop) {
|
---|
1485 | var maxZ = zRange['maxZ'];
|
---|
1486 | var toolbarZindex = (maxZ==null) ? 1000 :parseInt(maxZ);
|
---|
1487 |
|
---|
1488 | toolbar.style.zIndex = toolbarZindex;
|
---|
1489 | var toolbarActionButton = document.getElementById("CsnOnTopButton");
|
---|
1490 | toolbarActionButton.innerHTML = "Toolbar underneath";
|
---|
1491 | csnOnTop = true;
|
---|
1492 | }
|
---|
1493 | else {
|
---|
1494 | toolbar.style.zIndex = "inherit";
|
---|
1495 | var toolbarActionButton = document.getElementById("CsnOnTopButton");
|
---|
1496 | toolbarActionButton.innerHTML = "Toolbar on top";
|
---|
1497 | csnOnTop = false;
|
---|
1498 | }
|
---|
1499 |
|
---|
1500 | return true;
|
---|
1501 | }
|
---|
1502 |
|
---|
1503 |
|
---|
1504 |
|
---|
1505 | //------------------------------------------//
|
---|
1506 |
|
---|
1507 |
|
---|
1508 | // Manipulate Lists of author names
|
---|
1509 |
|
---|
1510 | function generateAuthorPack(elem)
|
---|
1511 | {
|
---|
1512 | var elem_text = getChildText(elem);
|
---|
1513 |
|
---|
1514 | var author_name = elem_text;
|
---|
1515 | author_name = author_name.replace(/^(.*)\(\d+\)?(.*)$/,"$1$2");
|
---|
1516 | console.log("processing author: " + author_name);
|
---|
1517 |
|
---|
1518 | var author_pack = { "name": author_name,
|
---|
1519 | "elem": elem };
|
---|
1520 |
|
---|
1521 | // Dig out author count if there
|
---|
1522 | var author_count = elem_text;
|
---|
1523 | if (author_count.match(/^.*\((\d+)\).*$/)) {
|
---|
1524 | author_count = author_count.replace(/^.*\((\d+)\).*$/,"$1");
|
---|
1525 | //console.log("author count: " + author_count);
|
---|
1526 | author_pack.count = author_count;
|
---|
1527 | }
|
---|
1528 |
|
---|
1529 | // Dig our key hyperlink if there
|
---|
1530 | var author_link = getFirstChildHyperlink(elem);
|
---|
1531 | if (author_link != null) {
|
---|
1532 | var author_link_href = author_link.href;
|
---|
1533 |
|
---|
1534 | author_pack.link = author_link;
|
---|
1535 | author_pack.href = author_link_href;
|
---|
1536 | }
|
---|
1537 |
|
---|
1538 | return author_pack;
|
---|
1539 | }
|
---|
1540 |
|
---|
1541 |
|
---|
1542 | function generateAuthorMap(rangedElems)
|
---|
1543 | {
|
---|
1544 | console.log("generateAuthorMap");
|
---|
1545 |
|
---|
1546 | var author_map = new Object();
|
---|
1547 |
|
---|
1548 | //console.log("ranged len " + rangedElems.length);
|
---|
1549 |
|
---|
1550 | for (var i=0; i<rangedElems.length; i++) {
|
---|
1551 | var currElem = rangedElems[i];
|
---|
1552 | //console.log("curr Elem" + currElem.nodeName);
|
---|
1553 |
|
---|
1554 | var author_pack = generateAuthorPack(currElem);
|
---|
1555 |
|
---|
1556 | if ("link" in author_pack) {
|
---|
1557 | var author_name = author_pack.name;
|
---|
1558 | author_pack.folded_name = calcFoldedName(author_name);
|
---|
1559 |
|
---|
1560 | // enter pack as new entry in 'author_map' if new, or merge with alias list if not
|
---|
1561 | if (author_name in author_map) {
|
---|
1562 | // treat as alias
|
---|
1563 | //console.log("adding it as an alias for the existing " + author_name);
|
---|
1564 |
|
---|
1565 | var fi_pack = author_map[author_name];
|
---|
1566 | var alias = fi_pack.alias;
|
---|
1567 | alias[alias.length] = author_pack;
|
---|
1568 | }
|
---|
1569 | else {
|
---|
1570 | author_pack.alias = new Array();
|
---|
1571 | author_map[author_name] = author_pack;
|
---|
1572 | }
|
---|
1573 | }
|
---|
1574 | }
|
---|
1575 |
|
---|
1576 | return author_map;
|
---|
1577 | }
|
---|
1578 |
|
---|
1579 | function generateAuthorKeys(author_map)
|
---|
1580 | {
|
---|
1581 |
|
---|
1582 | var author_keys = new Array();
|
---|
1583 |
|
---|
1584 | for (var key in author_map) {
|
---|
1585 | author_keys[author_keys.length] = key;
|
---|
1586 | }
|
---|
1587 |
|
---|
1588 | return author_keys;
|
---|
1589 | }
|
---|
1590 |
|
---|
1591 | function collapseAuthorMap(author_keys,author_map)
|
---|
1592 | {
|
---|
1593 | // look for any folded names that are the same, and collapse them into one entry
|
---|
1594 |
|
---|
1595 | for (var fi=0; fi<author_keys.length; fi++) {
|
---|
1596 | var fi_key = author_keys[fi];
|
---|
1597 |
|
---|
1598 | var fi_pack = author_map[fi_key];
|
---|
1599 |
|
---|
1600 | // skip item has if already been merged with earlier name
|
---|
1601 | if (!fi_pack) { continue; }
|
---|
1602 |
|
---|
1603 | var fi_folded_name = fi_pack.folded_name;
|
---|
1604 | //console.log("fi folded name:" + fi_folded_name)
|
---|
1605 | for (var mi=fi+1; mi<author_keys.length; mi++) {
|
---|
1606 | var mi_key = author_keys[mi];
|
---|
1607 | var mi_pack = author_map[mi_key];
|
---|
1608 |
|
---|
1609 | // skip if already been merged with an earlier name
|
---|
1610 | if (!mi_pack) { continue; }
|
---|
1611 |
|
---|
1612 | var mi_folded_name = mi_pack.folded_name;
|
---|
1613 | if (fi_folded_name == mi_folded_name) {
|
---|
1614 | //console.log(mi_key + " matches " + fi_key);
|
---|
1615 | var fi_alias_array = author_map[fi_key].alias;
|
---|
1616 | fi_alias_array[fi_alias_array.length] = mi_pack;
|
---|
1617 |
|
---|
1618 | // and concatenate any existing alias values we know of already
|
---|
1619 | for (var ai=0; ai<mi_pack.alias.length; ai++) {
|
---|
1620 | fi_alias_array[fi_alias_array.length] = mi_pack.alias[ai];
|
---|
1621 | }
|
---|
1622 |
|
---|
1623 | delete author_map[mi_key];
|
---|
1624 | }
|
---|
1625 | }
|
---|
1626 | }
|
---|
1627 |
|
---|
1628 |
|
---|
1629 | var collapsed_author_keys = generateAuthorKeys(author_map);
|
---|
1630 |
|
---|
1631 | return collapsed_author_keys;
|
---|
1632 | }
|
---|
1633 |
|
---|
1634 | function protectedInsertBefore(sharedParentElem,insertBefore,elem)
|
---|
1635 | {
|
---|
1636 | if (insertBefore!=null) {
|
---|
1637 | sharedParentElem.insertBefore(elem,insertBefore);
|
---|
1638 | }
|
---|
1639 | else {
|
---|
1640 | sharedParentElem.appendChild(elem);
|
---|
1641 | }
|
---|
1642 | }
|
---|
1643 |
|
---|
1644 |
|
---|
1645 | function explainTooltipFolding(author_pack)
|
---|
1646 | {
|
---|
1647 | var elem = author_pack.elem;
|
---|
1648 |
|
---|
1649 | if (author_pack.name != author_pack.folded_name) {
|
---|
1650 |
|
---|
1651 | var elemTitle = elem.getAttribute("title");
|
---|
1652 | if (elemTitle==null) {
|
---|
1653 | elemTitle="Originally: ";
|
---|
1654 | }
|
---|
1655 | else {
|
---|
1656 | if (elemTitle.match(/Originally: /)) {
|
---|
1657 | elemTitle += "-> ";
|
---|
1658 | }
|
---|
1659 | else {
|
---|
1660 | elemTitle += "; Originally";
|
---|
1661 | }
|
---|
1662 | }
|
---|
1663 |
|
---|
1664 | //console.log("*** save mapping currently supressed");
|
---|
1665 | save_mapping(author_pack.name,author_pack.folded_name);
|
---|
1666 |
|
---|
1667 | elemTitle += author_pack.name;
|
---|
1668 | elem.setAttribute("title",elemTitle);
|
---|
1669 | }
|
---|
1670 | }
|
---|
1671 |
|
---|
1672 |
|
---|
1673 |
|
---|
1674 | function analyzeAuthors(sharedParentElem, rangedElems)
|
---|
1675 | {
|
---|
1676 | console.log("analyzeAuthors");
|
---|
1677 |
|
---|
1678 | var author_map = generateAuthorMap(rangedElems);
|
---|
1679 | var author_keys = generateAuthorKeys(author_map);
|
---|
1680 |
|
---|
1681 | var collapsed_author_keys = collapseAuthorMap(author_keys,author_map);
|
---|
1682 |
|
---|
1683 | var oldEndElem = rangedElems[rangedElems.length-1];
|
---|
1684 | var insertBefore = oldEndElem.nextSibling;
|
---|
1685 |
|
---|
1686 | var newRangedElems = new Array();
|
---|
1687 |
|
---|
1688 | // Take out the current elements
|
---|
1689 | for (var oi=0; oi<rangedElems.length; oi++) {
|
---|
1690 | sharedParentElem.removeChild(rangedElems[oi]);
|
---|
1691 | }
|
---|
1692 |
|
---|
1693 | // add them back in again in their new order
|
---|
1694 |
|
---|
1695 | for (var fi=0; fi<collapsed_author_keys.length; fi++) {
|
---|
1696 | var fi_key = collapsed_author_keys[fi];
|
---|
1697 | var fi_pack = author_map[fi_key];
|
---|
1698 |
|
---|
1699 | //console.log("fi = " + fi);
|
---|
1700 |
|
---|
1701 | explainTooltipFolding(fi_pack);
|
---|
1702 | var fi_anchor_link = fi_pack.link;
|
---|
1703 | fi_anchor_link.innerHTML = fi_pack.folded_name;
|
---|
1704 |
|
---|
1705 | var fi_elem = fi_pack["elem"];
|
---|
1706 | protectedInsertBefore(sharedParentElem,insertBefore,fi_elem);
|
---|
1707 |
|
---|
1708 | newRangedElems[newRangedElems.length] = fi_elem;
|
---|
1709 |
|
---|
1710 | var alias = fi_pack.alias;
|
---|
1711 |
|
---|
1712 | for (var ai=0; ai<alias.length; ai++) {
|
---|
1713 | //console.log(" ai = " + ai);
|
---|
1714 |
|
---|
1715 | var ai_pack = alias[ai];
|
---|
1716 | explainTooltipFolding(ai_pack);
|
---|
1717 |
|
---|
1718 | var ai_anchor_link = ai_pack.link;
|
---|
1719 | ai_anchor_link.innerHTML = ai_pack.folded_name;
|
---|
1720 |
|
---|
1721 | var ai_elem = ai_pack["elem"];
|
---|
1722 | protectedInsertBefore(sharedParentElem,insertBefore,ai_elem);
|
---|
1723 |
|
---|
1724 | newRangedElems[newRangedElems.length] = ai_elem;
|
---|
1725 |
|
---|
1726 | }
|
---|
1727 | }
|
---|
1728 |
|
---|
1729 | sharedParentElemHistory_[sharedParentElemHistory_.length] = sharedParentElem;
|
---|
1730 | rangedElemsHistory_[rangedElemsHistory_.length] = newRangedElems;
|
---|
1731 |
|
---|
1732 | }
|
---|
1733 |
|
---|
1734 |
|
---|
1735 | function removeSeaweedEditable(elems)
|
---|
1736 | {
|
---|
1737 | for (var i=0; i<elems.length; i++) {
|
---|
1738 | if (elems[i].nodeType == ELEMENT_NODE) {
|
---|
1739 | var elem = elems[i];
|
---|
1740 | classAtt = elem.getAttribute("class");
|
---|
1741 | if (classAtt != null) {
|
---|
1742 | if (classAtt.match(/editable/)) {
|
---|
1743 | classAtt = classAtt.replace(/\s*editable/,"");
|
---|
1744 | elem.setAttribute("class",classAtt);
|
---|
1745 | }
|
---|
1746 | }
|
---|
1747 | }
|
---|
1748 | }
|
---|
1749 | }
|
---|
1750 |
|
---|
1751 |
|
---|
1752 | function addSeaweedEditable(elems)
|
---|
1753 | {
|
---|
1754 |
|
---|
1755 | for (var i=0; i<elems.length; i++) {
|
---|
1756 | if (elems[i].nodeType == ELEMENT_NODE) {
|
---|
1757 | var elem = elems[i];
|
---|
1758 |
|
---|
1759 | classAtt = elem.getAttribute("class");
|
---|
1760 | if (classAtt != null) {
|
---|
1761 | if (!classAtt.match(/editable/)) {
|
---|
1762 | if (classAtt != "") {
|
---|
1763 | classAtt = " ";
|
---|
1764 | }
|
---|
1765 | classAtt += "editable";
|
---|
1766 | elem.setAttribute("class",classAtt);
|
---|
1767 | }
|
---|
1768 | }
|
---|
1769 | else {
|
---|
1770 | elem.setAttribute("class","editable");
|
---|
1771 | }
|
---|
1772 |
|
---|
1773 | var innerHTML = elem.innerHTML;
|
---|
1774 | innerHTML += ' <img style="border: 0px;" src="'+pencilImage+'">';
|
---|
1775 | elem.innerHTML = innerHTML;
|
---|
1776 | }
|
---|
1777 | }
|
---|
1778 |
|
---|
1779 |
|
---|
1780 | }
|
---|
1781 |
|
---|
1782 | function editAuthors(sharedParentElem, rangedElems)
|
---|
1783 | {
|
---|
1784 | addSeaweedEditable(rangedElems);
|
---|
1785 | }
|
---|
1786 |
|
---|
1787 |
|
---|
1788 | function naCanonicalAuthors(sharedParentElem, rangedElems)
|
---|
1789 | {
|
---|
1790 |
|
---|
1791 | // Asynchronously apply na_alias to each entry
|
---|
1792 | for (var i=0; i<rangedElems.length; i++) {
|
---|
1793 | async_named_authority_srw(rangedElems[i],process_named_authority_canonical);
|
---|
1794 | }
|
---|
1795 | }
|
---|
1796 |
|
---|
1797 | function mergeAuthors(sharedParentElem, rangedElems)
|
---|
1798 | {
|
---|
1799 | console.log("mergeAuthors");
|
---|
1800 |
|
---|
1801 | var author_map = generateAuthorMap(rangedElems);
|
---|
1802 | var author_keys = generateAuthorKeys(author_map);
|
---|
1803 |
|
---|
1804 | var collapsed_author_keys = collapseAuthorMap(author_keys,author_map);
|
---|
1805 |
|
---|
1806 | var oldEndElem = rangedElems[rangedElems.length-1];
|
---|
1807 | var insertBefore = oldEndElem.nextSibling;
|
---|
1808 |
|
---|
1809 | var curr_elem = rangedElems[0];
|
---|
1810 | var curr_author_pack = generateAuthorPack(curr_elem);
|
---|
1811 | var curr_author_name = curr_author_pack.name;
|
---|
1812 |
|
---|
1813 | var next_elem = rangedElems[1];
|
---|
1814 | var ne_pos = 1;
|
---|
1815 |
|
---|
1816 | var newRangedElems = [ curr_elem ];
|
---|
1817 |
|
---|
1818 | while (next_elem!=null) {
|
---|
1819 |
|
---|
1820 | var next_author_pack = generateAuthorPack(next_elem);
|
---|
1821 | var next_author_name = next_author_pack.name;
|
---|
1822 |
|
---|
1823 | // if same
|
---|
1824 | if (curr_author_name == next_author_name) {
|
---|
1825 | // combine counts (if present), collate href, and then del item
|
---|
1826 | var orig_author_count = curr_author_pack.count;
|
---|
1827 | //var orig_author_link = curr_author_pack.link;
|
---|
1828 | var orig_elem = curr_elem;
|
---|
1829 |
|
---|
1830 | var combined_count = parseInt(orig_author_count);
|
---|
1831 | var combined_hrefs = [ "'"+curr_author_pack.href+"'" ];
|
---|
1832 |
|
---|
1833 | //var combined_mappings = [ ];
|
---|
1834 |
|
---|
1835 | // continue consuming elems until it no longer matches curr_author_name
|
---|
1836 | while (next_elem!=null) {
|
---|
1837 | var next_author_count = next_author_pack.count;
|
---|
1838 |
|
---|
1839 | combined_count += parseInt(next_author_count);
|
---|
1840 | combined_hrefs[combined_hrefs.length] = "'" + next_author_pack.href + "'";
|
---|
1841 | //combined_mappings[combined_mappings.length] = next_author.orig_name;
|
---|
1842 |
|
---|
1843 | console.log("title = " + next_elem.title);
|
---|
1844 |
|
---|
1845 | if (next_elem.title != "") {
|
---|
1846 | orig_elem.title += " + " + next_elem.title;
|
---|
1847 | }
|
---|
1848 |
|
---|
1849 | sharedParentElem.removeChild(next_elem);
|
---|
1850 |
|
---|
1851 | ne_pos++;
|
---|
1852 | next_elem = rangedElems[ne_pos];
|
---|
1853 |
|
---|
1854 | if (next_elem!=null) {
|
---|
1855 | next_author_pack = generateAuthorPack(next_elem);
|
---|
1856 | next_author_name = next_author_pack.name;
|
---|
1857 |
|
---|
1858 | if (next_author_name != curr_author_name) {
|
---|
1859 | break;
|
---|
1860 | }
|
---|
1861 | }
|
---|
1862 | }
|
---|
1863 | var href_array_str = "[" + combined_hrefs.join(",") + "]";
|
---|
1864 |
|
---|
1865 | //alert("Merging " + curr_author_name + " (" + combined_count + ")");
|
---|
1866 |
|
---|
1867 | var onclick_str = "return multiSearch("+href_array_str+")";
|
---|
1868 | var curr_author_link = curr_author_pack.link;
|
---|
1869 | curr_author_link.setAttribute("onclick",onclick_str);
|
---|
1870 |
|
---|
1871 | curr_author_link.href = "#";
|
---|
1872 |
|
---|
1873 | orig_inner_html = curr_elem.innerHTML;
|
---|
1874 | var count_re = new RegExp("\\("+orig_author_count+"\\)","g");
|
---|
1875 | //console.log("re: " + count_re);
|
---|
1876 | //console.log("inner html = " + orig_inner_html);
|
---|
1877 |
|
---|
1878 | orig_inner_html = orig_inner_html.replace(count_re,"("+combined_count+")");
|
---|
1879 | curr_elem.innerHTML = orig_inner_html;
|
---|
1880 |
|
---|
1881 | console.log("multiSearch("+href_array_str+")");
|
---|
1882 | }
|
---|
1883 |
|
---|
1884 | if (next_elem!=null) {
|
---|
1885 |
|
---|
1886 | curr_elem = next_elem;
|
---|
1887 | curr_author_pack = next_author_pack;
|
---|
1888 | curr_author_name = next_author_name;
|
---|
1889 |
|
---|
1890 | newRangedElems[newRangedElems.length] = curr_elem;
|
---|
1891 |
|
---|
1892 | ne_pos++;
|
---|
1893 | next_elem = rangedElems[ne_pos];
|
---|
1894 | }
|
---|
1895 | }
|
---|
1896 |
|
---|
1897 | console.log("*** done merge");
|
---|
1898 |
|
---|
1899 | sharedParentElemHistory_[sharedParentElemHistory_.length] = sharedParentElem;
|
---|
1900 | rangedElemsHistory_[rangedElemsHistory_.length] = newRangedElems;
|
---|
1901 |
|
---|
1902 | }
|
---|
1903 |
|
---|
1904 |
|
---|
1905 | function deleteAuthors(sharedParentElem, rangedElems)
|
---|
1906 | {
|
---|
1907 |
|
---|
1908 | // Take out the current elements
|
---|
1909 | for (var oi=0; oi<rangedElems.length; oi++) {
|
---|
1910 | sharedParentElem.removeChild(rangedElems[oi]);
|
---|
1911 | }
|
---|
1912 |
|
---|
1913 |
|
---|
1914 | sharedParentElemHistory_[sharedParentElemHistory_.length] = sharedParentElem;
|
---|
1915 | rangedElemsHistory_[rangedElemsHistory_.length] = [];
|
---|
1916 |
|
---|
1917 | }
|
---|
1918 |
|
---|
1919 |
|
---|
1920 | //------------------------------------------//
|
---|
1921 |
|
---|
1922 | function naAliasesAuthors(sharedParentElem, rangedElems)
|
---|
1923 | {
|
---|
1924 |
|
---|
1925 | // Asynchronously apply na_alias to each entry
|
---|
1926 | for (var i=0; i<rangedElems.length; i++) {
|
---|
1927 | async_named_authority_srw(rangedElems[i],process_named_authority_aliases);
|
---|
1928 | }
|
---|
1929 | }
|
---|
1930 |
|
---|
1931 | //------------------------------------------//
|
---|
1932 |
|
---|
1933 | // Multi search
|
---|
1934 |
|
---|
1935 | function multiSearch(hrefs)
|
---|
1936 | {
|
---|
1937 | var windowHeight = window.innerHeight;
|
---|
1938 | var windowWidth = window.innerWidth;
|
---|
1939 |
|
---|
1940 | var new_html = '<table width="100%" ><tr id="trSearchFrame" valign="top">';
|
---|
1941 |
|
---|
1942 | if (hrefs.length==0) {
|
---|
1943 | alert("An error occured in merging: multiSearch called with no hrefs");
|
---|
1944 | }
|
---|
1945 |
|
---|
1946 |
|
---|
1947 | var num_frames = hrefs.length;
|
---|
1948 | var equal_width = (100.0/num_frames) + "%";
|
---|
1949 |
|
---|
1950 | for (var i=0; i<num_frames; i++) {
|
---|
1951 |
|
---|
1952 | var tdId = "tdSearchFrame"+i;
|
---|
1953 |
|
---|
1954 | var frame_html = '<td width="'+equal_width+'" id="'+tdId+'"></td>';
|
---|
1955 |
|
---|
1956 |
|
---|
1957 | new_html += frame_html;
|
---|
1958 | }
|
---|
1959 |
|
---|
1960 | new_html += '</tr></table>';
|
---|
1961 |
|
---|
1962 |
|
---|
1963 | document.body.innerHTML = new_html;
|
---|
1964 |
|
---|
1965 | for (var i=0; i<num_frames; i++) {
|
---|
1966 | var tdFrameElem = document.getElementById("tdSearchFrame"+i);
|
---|
1967 | //tdFrameElem.height = windowHeight-20;
|
---|
1968 | tdFrameElem.height = 200;
|
---|
1969 | }
|
---|
1970 |
|
---|
1971 |
|
---|
1972 | for (var i=0; i<num_frames; i++) {
|
---|
1973 |
|
---|
1974 | var tdFrameElem = document.getElementById("tdSearchFrame"+i);
|
---|
1975 |
|
---|
1976 | var frameElem = document.createElement("iframe");
|
---|
1977 | //frameElem.setAttribute("src",hrefs[i]);
|
---|
1978 | frameElem.setAttribute("width","98%");
|
---|
1979 | frameElem.setAttribute("height","100%");
|
---|
1980 | //frameElem.setAttribute("frameborder","0");
|
---|
1981 | //frameElem.setAttribute("scrolling","no");
|
---|
1982 | frameElem.setAttribute("id","searchFrame"+i);
|
---|
1983 | frameElem.setAttribute("onload",'resizeFrame("searchFrame'+i+'")');
|
---|
1984 |
|
---|
1985 | frameElem.style.overflowX = "scroll";
|
---|
1986 | frameElem.style.overflowY = "hidden";
|
---|
1987 |
|
---|
1988 | tdFrameElem.appendChild(frameElem);
|
---|
1989 | }
|
---|
1990 |
|
---|
1991 |
|
---|
1992 | setTimeout(continueMultiSearch, 2000, hrefs); // 2 sec delay
|
---|
1993 |
|
---|
1994 | return false;
|
---|
1995 | }
|
---|
1996 |
|
---|
1997 |
|
---|
1998 | function continueMultiSearch(hrefs)
|
---|
1999 | {
|
---|
2000 | // console.log("href count in contineu multi search= " + hrefs.length);
|
---|
2001 |
|
---|
2002 | var num_frames = hrefs.length;
|
---|
2003 |
|
---|
2004 | for (var i=0; i<num_frames; i++) {
|
---|
2005 |
|
---|
2006 | var frameElem = document.getElementById("searchFrame"+i);
|
---|
2007 |
|
---|
2008 | frameElem.setAttribute("src",hrefs[i]);
|
---|
2009 | }
|
---|
2010 |
|
---|
2011 |
|
---|
2012 | return false;
|
---|
2013 | }
|
---|
2014 |
|
---|
2015 |
|
---|
2016 | function resizeFrame(fid) {
|
---|
2017 |
|
---|
2018 | // if (fid == "childframe") return;
|
---|
2019 |
|
---|
2020 | f = parent.document.getElementById(fid);
|
---|
2021 |
|
---|
2022 | if (f!=null) {
|
---|
2023 |
|
---|
2024 | var new_height = f.contentWindow.document.body.scrollHeight;
|
---|
2025 | new_height += 60; // allow for scroll bar at bottom?
|
---|
2026 |
|
---|
2027 | f.style.height = new_height + "px";
|
---|
2028 |
|
---|
2029 | }
|
---|
2030 |
|
---|
2031 | }
|
---|
2032 |
|
---|
2033 |
|
---|
2034 |
|
---|
2035 | //------------------------------------------//
|
---|
2036 |
|
---|
2037 | // Author Folding and other types of manipulation
|
---|
2038 |
|
---|
2039 | function calcFoldedName(author_name)
|
---|
2040 | {
|
---|
2041 | // calculated folded name based on current mode
|
---|
2042 | // note: in many cases this is the same string as the key
|
---|
2043 |
|
---|
2044 | var folded_name;
|
---|
2045 |
|
---|
2046 | if (csnMode == "accentFold") {
|
---|
2047 | folded_name = accent_fold(author_name);
|
---|
2048 | }
|
---|
2049 | else if (csnMode == "punctFold") {
|
---|
2050 | folded_name = punct_fold(author_name);
|
---|
2051 | }
|
---|
2052 | else if (csnMode == "firstnameFold") {
|
---|
2053 | if (csnFirstnameMode == "full") {
|
---|
2054 | folded_name = firstname_fold(author_name);
|
---|
2055 | }
|
---|
2056 | else {
|
---|
2057 | folded_name = firstname_initial_fold(author_name);
|
---|
2058 | }
|
---|
2059 | }
|
---|
2060 | else if (csnMode == "sort") {
|
---|
2061 | // trial op: allows items to be sorted as is
|
---|
2062 | trim(author_name);
|
---|
2063 | author_name = author_name.replace(/\s+/g," ");
|
---|
2064 | folded_name = author_name;
|
---|
2065 | }
|
---|
2066 | else if (csnMode == "merge") {
|
---|
2067 | // trial op: allows items to be sorted as is
|
---|
2068 | folded_name = author_name;
|
---|
2069 | }
|
---|
2070 | else {
|
---|
2071 | alert("Unrecognized mode: " + csnMode);
|
---|
2072 | folded_name = author_name;
|
---|
2073 | }
|
---|
2074 |
|
---|
2075 | if (author_name != folded_name) {
|
---|
2076 | console.log("Folded name mapping: " + author_name + "->" + folded_name);
|
---|
2077 | }
|
---|
2078 |
|
---|
2079 | return folded_name;
|
---|
2080 | }
|
---|
2081 |
|
---|
2082 |
|
---|
2083 | function accent_fold(search_string)
|
---|
2084 | {
|
---|
2085 | // tidy up any pre- or post- whitespace
|
---|
2086 | search_string = trim(search_string);
|
---|
2087 |
|
---|
2088 | // protect any string literals that are special RE characters
|
---|
2089 | search_string = search_string.replace(/([|\(\)\[\{\}.+*?^$\\])/g,"\\$1");
|
---|
2090 |
|
---|
2091 | // replace characters by their compositors
|
---|
2092 | var accent_replacer = function(chr) {
|
---|
2093 | if (chr.charCodeAt(0)>128) {
|
---|
2094 | for (var base_c in accented) {
|
---|
2095 | var letter_re = new RegExp(accented[base_c],'gi');
|
---|
2096 | if (letter_re.test(chr)) {
|
---|
2097 | // Got accented char
|
---|
2098 | // => downgrade to base character
|
---|
2099 | chr = base_c;
|
---|
2100 | }
|
---|
2101 | // otherwise, leave it alone
|
---|
2102 | }
|
---|
2103 | }
|
---|
2104 | return chr;
|
---|
2105 | }
|
---|
2106 |
|
---|
2107 | search_string = search_string.replace(/\S/g,accent_replacer);
|
---|
2108 | search_string = search_string.replace(/\\([|\(\)\[\{\}.+*?^$\\])/g,"$1");
|
---|
2109 |
|
---|
2110 | search_string = search_string.replace(/\s+/g," ");
|
---|
2111 |
|
---|
2112 | return search_string;
|
---|
2113 | }
|
---|
2114 |
|
---|
2115 |
|
---|
2116 | function punct_fold(search_string)
|
---|
2117 | {
|
---|
2118 | search_string = trim(search_string);
|
---|
2119 | search_string = search_string.replace(/\./g,"");
|
---|
2120 |
|
---|
2121 | search_string = search_string.replace(/\s+/g," ");
|
---|
2122 |
|
---|
2123 | return search_string;
|
---|
2124 | }
|
---|
2125 |
|
---|
2126 |
|
---|
2127 | function firstname_fold(search_string)
|
---|
2128 | {
|
---|
2129 | search_string = trim(search_string);
|
---|
2130 |
|
---|
2131 | if (search_string.match(/^(.*\,\s*.).*$/)) {
|
---|
2132 | search_string = search_string.replace(/^(.*\,\s*.[^\s]*).*$/,"$1");
|
---|
2133 | }
|
---|
2134 | else {
|
---|
2135 | search_string = search_string.replace(/^(.[^\s]*).*\s+(.*)$/,"$1 $2");
|
---|
2136 | }
|
---|
2137 |
|
---|
2138 | search_string = search_string.replace(/\s+/g," ");
|
---|
2139 |
|
---|
2140 | return search_string;
|
---|
2141 | }
|
---|
2142 |
|
---|
2143 |
|
---|
2144 | function firstname_initial_fold(search_string)
|
---|
2145 | {
|
---|
2146 | search_string = trim(search_string);
|
---|
2147 |
|
---|
2148 | if (search_string.match(/^(.*\,\s*.).*$/)) {
|
---|
2149 | search_string = search_string.replace(/^(.*\,\s*.).*$/,"$1");
|
---|
2150 | }
|
---|
2151 | else {
|
---|
2152 | search_string = search_string.replace(/^(.).*\s+(.*)$/,"$1 $2");
|
---|
2153 | }
|
---|
2154 |
|
---|
2155 | search_string = search_string.replace(/\s+/g," ");
|
---|
2156 |
|
---|
2157 | return search_string;
|
---|
2158 | }
|
---|
2159 |
|
---|
2160 |
|
---|
2161 | function process_named_authority_canonical(response,author_pack)
|
---|
2162 | {
|
---|
2163 | //console.log("SRW response:\n" + response);
|
---|
2164 |
|
---|
2165 | var parser = new DOMParser();
|
---|
2166 | marc_xml_doc = parser.parseFromString(response,"text/xml");
|
---|
2167 |
|
---|
2168 | var datafieldElems = marc_xml_doc.getElementsByTagName("mx:datafield");
|
---|
2169 |
|
---|
2170 | var canonical_author_name = null;
|
---|
2171 |
|
---|
2172 | for (var fi=0; fi<datafieldElems.length; fi++) {
|
---|
2173 | var datafieldElem = datafieldElems[fi];
|
---|
2174 | if (datafieldElem.getAttribute("tag")=="100") {
|
---|
2175 | console.log("got match on tag 100");
|
---|
2176 |
|
---|
2177 | var subfieldElems = datafieldElem.getElementsByTagName("mx:subfield");
|
---|
2178 | for (var si=0; si<subfieldElems.length; si++) {
|
---|
2179 |
|
---|
2180 | var subfieldElem = subfieldElems[si];
|
---|
2181 | if (subfieldElem.getAttribute("code")=="a") {
|
---|
2182 | canonical_author_name = getChildText(subfieldElem);
|
---|
2183 | console.log("*** canonical author = " + canonical_author_name);
|
---|
2184 | }
|
---|
2185 | }
|
---|
2186 | }
|
---|
2187 | }
|
---|
2188 |
|
---|
2189 | var author_name = author_pack.name;
|
---|
2190 | var author_link = author_pack.link;
|
---|
2191 |
|
---|
2192 |
|
---|
2193 | if ((canonical_author_name!=null) && (canonical_author_name!=author_name)) {
|
---|
2194 | console.log("trying to set innerHTML with: " + canonical_author_name);
|
---|
2195 | author_link.innerHTML = canonical_author_name;
|
---|
2196 | }
|
---|
2197 |
|
---|
2198 | }
|
---|
2199 |
|
---|
2200 |
|
---|
2201 | function count_named_authority_canonical(response,author_pack)
|
---|
2202 | {
|
---|
2203 | var parser = new DOMParser();
|
---|
2204 | marc_xml_doc = parser.parseFromString(response,"text/xml");
|
---|
2205 |
|
---|
2206 | var datafieldElems = marc_xml_doc.getElementsByTagName("mx:datafield");
|
---|
2207 |
|
---|
2208 | var prelookupNames = new Array();
|
---|
2209 | var prelookupAliases = new Array();
|
---|
2210 |
|
---|
2211 | for (var fi=0; fi<datafieldElems.length; fi++) {
|
---|
2212 | var datafieldElem = datafieldElems[fi];
|
---|
2213 | if (datafieldElem.getAttribute("tag")=="100") {
|
---|
2214 | console.log("NA response: got match on tag 100");
|
---|
2215 |
|
---|
2216 | var subfieldElems = datafieldElem.getElementsByTagName("mx:subfield");
|
---|
2217 | for (var si=0; si<subfieldElems.length; si++) {
|
---|
2218 |
|
---|
2219 | var subfieldElem = subfieldElems[si];
|
---|
2220 | if (subfieldElem.getAttribute("code")=="a") {
|
---|
2221 | var canonical_author_name = getChildText(subfieldElem);
|
---|
2222 | prelookupNames[prelookupNames.length] = canonical_author_name;
|
---|
2223 | console.log("*** canonical author = " + canonical_author_name);
|
---|
2224 | }
|
---|
2225 | }
|
---|
2226 | }
|
---|
2227 |
|
---|
2228 |
|
---|
2229 | if (datafieldElem.getAttribute("tag")=="400") {
|
---|
2230 | console.log("NA response: got match on tag 400");
|
---|
2231 |
|
---|
2232 | var subfieldElems = datafieldElem.getElementsByTagName("mx:subfield");
|
---|
2233 | for (var si=0; si<subfieldElems.length; si++) {
|
---|
2234 |
|
---|
2235 | var subfieldElem = subfieldElems[si];
|
---|
2236 | if (subfieldElem.getAttribute("code")=="a") {
|
---|
2237 | var canonical_author_name = getChildText(subfieldElem);
|
---|
2238 | prelookupNames[prelookupNames.length-1] += "<br> also: " + canonical_author_name;
|
---|
2239 | console.log("*** alias author = " + canonical_author_name);
|
---|
2240 | }
|
---|
2241 | }
|
---|
2242 | }
|
---|
2243 |
|
---|
2244 | }
|
---|
2245 |
|
---|
2246 | var prelookupNamesLen = prelookupNames.length;
|
---|
2247 |
|
---|
2248 | var prelookupNACount= document.getElementById("prelookupNACount");
|
---|
2249 | prelookupNACount.innerHTML += prelookupNamesLen;
|
---|
2250 |
|
---|
2251 | var prelookupNAList = document.getElementById("prelookupNAList");
|
---|
2252 | var newInnerHTML = '<p> ' + prelookupNames.join("<br>") + '</p>';
|
---|
2253 | prelookupNAList.innerHTML = newInnerHTML;
|
---|
2254 | }
|
---|
2255 |
|
---|
2256 |
|
---|
2257 | function process_named_authority_aliases(response,author_pack)
|
---|
2258 | {
|
---|
2259 | var parser = new DOMParser();
|
---|
2260 | marc_xml_doc = parser.parseFromString(response,"text/xml");
|
---|
2261 |
|
---|
2262 | var datafieldElems = marc_xml_doc.getElementsByTagName("mx:datafield");
|
---|
2263 |
|
---|
2264 | var author_name = author_pack.name;
|
---|
2265 | var author_name_aliases = author_name;
|
---|
2266 |
|
---|
2267 | for (var fi=0; fi<datafieldElems.length; fi++) {
|
---|
2268 | var datafieldElem = datafieldElems[fi];
|
---|
2269 | if ((datafieldElem.getAttribute("tag")=="100") || (datafieldElem.getAttribute("tag")=="400")) {
|
---|
2270 |
|
---|
2271 | var subfieldElems = datafieldElem.getElementsByTagName("mx:subfield");
|
---|
2272 | for (var si=0; si<subfieldElems.length; si++) {
|
---|
2273 |
|
---|
2274 | var subfieldElem = subfieldElems[si];
|
---|
2275 | if (subfieldElem.getAttribute("code")=="a") {
|
---|
2276 | var author_name_alias = getChildText(subfieldElem);
|
---|
2277 |
|
---|
2278 | if (author_name_alias != author_name) {
|
---|
2279 | if (author_name_aliases != "") {
|
---|
2280 | author_name_aliases += " OR ";
|
---|
2281 | }
|
---|
2282 | author_name_aliases += author_name_alias;
|
---|
2283 | console.log("*** alias author = " + author_name_alias);
|
---|
2284 | }
|
---|
2285 | }
|
---|
2286 | }
|
---|
2287 | }
|
---|
2288 | }
|
---|
2289 |
|
---|
2290 |
|
---|
2291 | var author_elem = author_pack.elem;
|
---|
2292 |
|
---|
2293 | if (author_elem.nodeType==ELEMENT_NODE) {
|
---|
2294 | if (author_elem.nodeName.toLowerCase()=="input") {
|
---|
2295 | author_elem.value=author_name_aliases;
|
---|
2296 | }
|
---|
2297 | else {
|
---|
2298 | author_elem.innerHTML = author_name_aliases;
|
---|
2299 | }
|
---|
2300 | }
|
---|
2301 | }
|
---|
2302 |
|
---|
2303 | function async_named_authority_srw(elem,process_function)
|
---|
2304 | {
|
---|
2305 | console.log("async name authority srw");
|
---|
2306 |
|
---|
2307 | var url = "http://alcme.oclc.org/srw/search/lcnaf";
|
---|
2308 |
|
---|
2309 | var author_pack = generateAuthorPack(elem);
|
---|
2310 | var author_name = author_pack.name;
|
---|
2311 |
|
---|
2312 | // tidy it up a bit
|
---|
2313 | author_name = trim(author_name);
|
---|
2314 | author_name = author_name.replace(/\s+/g," ");
|
---|
2315 |
|
---|
2316 | var family_name;
|
---|
2317 | var first_name;
|
---|
2318 |
|
---|
2319 | if (author_name.match(/^.*\,\s*..*$/)) {
|
---|
2320 | family_name = author_name.replace(/^(.*)\,\s*..*$/,"$1");
|
---|
2321 | first_name = author_name.replace(/^.*\,\s*(\S+).*$/,"$1");
|
---|
2322 | }
|
---|
2323 | else {
|
---|
2324 | family_name = author_name.replace(/^\s*(\S+).*?(\S+)$/,"$2");
|
---|
2325 | first_name = author_name.replace(/^\s*(\S+).*?(\S+)$/,"$1");
|
---|
2326 | }
|
---|
2327 |
|
---|
2328 | // Looks like accent folding is needed to work nicely with OCLC search
|
---|
2329 | // service
|
---|
2330 | family_name = accent_fold(family_name);
|
---|
2331 | first_name = accent_fold(first_name);
|
---|
2332 |
|
---|
2333 | var query_cgi = 'query=local.FamilyName+%3D+"<FamilyName>"+and+local.FirstName+%3D+"<FirstName>"';
|
---|
2334 | query_cgi = query_cgi.replace(/(<FamilyName>)/g,family_name);
|
---|
2335 | query_cgi = query_cgi.replace(/(<FirstName>)/g,first_name);
|
---|
2336 |
|
---|
2337 | var cgi_tail = "&version=1.1&operation=searchRetrieve&recordSchema=info%3Asrw%2Fschema%2F1%2Fmarcxml-v1.1&maximumRecords=10&startRecord=1&resultSetTTL=300&recordPacking=xml&recordXPath=&sortKeys=";
|
---|
2338 |
|
---|
2339 | url += '?' + query_cgi + cgi_tail;
|
---|
2340 |
|
---|
2341 | console.log("url = " + url);
|
---|
2342 |
|
---|
2343 | GM_xmlhttpRequest( { method: 'GET',
|
---|
2344 | url: url,
|
---|
2345 | onload: function (rsp) { process_function(rsp.responseText,author_pack); },
|
---|
2346 | onerror: function(rsp) { alert("Error retrieving name authority data:" + rsp.statusText); }
|
---|
2347 | } );
|
---|
2348 | }
|
---|
2349 |
|
---|
2350 |
|
---|
2351 | //----------------//
|
---|
2352 |
|
---|
2353 |
|
---|
2354 |
|
---|
2355 | function count_crowdsource_canonical(response,author_pack)
|
---|
2356 | {
|
---|
2357 | console.log("Count crowd source");
|
---|
2358 |
|
---|
2359 | var author_name = author_pack.name;
|
---|
2360 |
|
---|
2361 | var holderDiv = document.createElement('div');
|
---|
2362 | holderDiv.innerHTML = response.replace(/<script(.|\s)*?\/script>/g, '');
|
---|
2363 |
|
---|
2364 | var tdArray = holderDiv.getElementsByTagName('td');
|
---|
2365 |
|
---|
2366 | var csMap = new Object();
|
---|
2367 | var currOrigName = null;
|
---|
2368 | var currFoldedName = null;
|
---|
2369 |
|
---|
2370 | for (var i=0; i<tdArray.length; i++) {
|
---|
2371 | var tdText = tdArray[i].innerHTML;
|
---|
2372 | if (tdText.match(/^Original Name:/)) {
|
---|
2373 | currOrigName = tdText.replace(/^Original Name:\s+(.*)$/,"$1");
|
---|
2374 | }
|
---|
2375 | if (tdText.match(/^Folded Name:/)) {
|
---|
2376 | currFoldedName = tdText.replace(/^Folded Name:\s+(.*)$/,"$1");
|
---|
2377 |
|
---|
2378 | if (currOrigName != author_name) {
|
---|
2379 | // Not interested in this one => skip
|
---|
2380 | continue;
|
---|
2381 | }
|
---|
2382 |
|
---|
2383 | if (currOrigName in csMap) {
|
---|
2384 | if (currFoldedName in csMap[currOrigName]) {
|
---|
2385 | csMap[currOrigName][currFoldedName]++;
|
---|
2386 | //console.log("Increasing mapping: " + currOrigName
|
---|
2387 | // + " -> " + currFoldedName );
|
---|
2388 | }
|
---|
2389 | else {
|
---|
2390 | csMap[currOrigName][currFoldedName] = 1;
|
---|
2391 | // console.log("Creating another mapping for " + currOrigName
|
---|
2392 | // + " (this time ->) " + currFoldedName );
|
---|
2393 | }
|
---|
2394 | }
|
---|
2395 | else {
|
---|
2396 |
|
---|
2397 | //console.log("First ever mapping for: " + currOrigName
|
---|
2398 | // + " -> " + currFoldedName );
|
---|
2399 | csMap[currOrigName] = new Object();
|
---|
2400 | csMap[currOrigName][currFoldedName] = 1;
|
---|
2401 | }
|
---|
2402 | }
|
---|
2403 | }
|
---|
2404 |
|
---|
2405 | var csMapKeys = new Array();
|
---|
2406 | for (var key in csMap) {
|
---|
2407 | csMapKeys[csMapKeys.length] = key;
|
---|
2408 | }
|
---|
2409 |
|
---|
2410 | var origNameLen = csMapKeys.length;
|
---|
2411 |
|
---|
2412 | var prelookupCSCount= document.getElementById("prelookupCSCount");
|
---|
2413 | var prelookupCSList = document.getElementById("prelookupCSList");
|
---|
2414 |
|
---|
2415 | if (origNameLen == 1) {
|
---|
2416 | var okey = csMapKeys[0];
|
---|
2417 | var foldedKeys = new Array();
|
---|
2418 |
|
---|
2419 | for (var fkey in csMap[okey]) {
|
---|
2420 | foldedKeys[foldedKeys.length]= fkey;
|
---|
2421 | }
|
---|
2422 |
|
---|
2423 | var foldedNameLen = foldedKeys.length;
|
---|
2424 |
|
---|
2425 | prelookupCSCount.innerHTML += foldedNameLen;
|
---|
2426 |
|
---|
2427 | var newInnerHTML = '<p><table>';
|
---|
2428 | for (var fkey in csMap[okey]) {
|
---|
2429 | newInnerHTML += "<tr><td> -> " + fkey + ":</td><td> freq(" + csMap[okey][fkey] + ")</td></tr>";
|
---|
2430 | }
|
---|
2431 | newInnerHTML += '</table></p>';
|
---|
2432 |
|
---|
2433 | prelookupCSList.innerHTML = newInnerHTML;
|
---|
2434 | }
|
---|
2435 | else {
|
---|
2436 | if (origNameLen == 0) {
|
---|
2437 | prelookupCSCount.innerHTML += 0;
|
---|
2438 | prelookupCSList.innerHTML = "no matches were found";
|
---|
2439 | }
|
---|
2440 | else {
|
---|
2441 | alert("Error: Did not expect to find more than one original name in crowdsource lookup. Count: " + origNameLen);
|
---|
2442 | }
|
---|
2443 | }
|
---|
2444 | }
|
---|
2445 |
|
---|
2446 |
|
---|
2447 | function async_crowdsource_greenstone(elem,process_function)
|
---|
2448 | {
|
---|
2449 | console.log("Async crowdsource");
|
---|
2450 |
|
---|
2451 | var url = "http://www.nzdl.org/custom/seaweed-gm/cgi-bin/library.cgi";
|
---|
2452 |
|
---|
2453 | var data = "c="+crowdsourceNamespace+"&a=q&r=1&hs=1&fqf=GS&sf=&t=1&q=";
|
---|
2454 |
|
---|
2455 | var author_pack = generateAuthorPack(elem);
|
---|
2456 | var author_name = author_pack.name;
|
---|
2457 |
|
---|
2458 | // tidy it up a bit
|
---|
2459 | author_name = trim(author_name);
|
---|
2460 | author_name = author_name.replace(/\s+/g," ");
|
---|
2461 |
|
---|
2462 | data += author_name;
|
---|
2463 |
|
---|
2464 | //var encoded_data = encodeURI(data);
|
---|
2465 | var encoded_data = data;
|
---|
2466 |
|
---|
2467 | url += "?" + encoded_data;
|
---|
2468 |
|
---|
2469 | console.log("url = " + url);
|
---|
2470 |
|
---|
2471 | GM_xmlhttpRequest( { method: 'GET',
|
---|
2472 | url: url,
|
---|
2473 | onload: function (rsp) { process_function(rsp.responseText,author_pack); },
|
---|
2474 | onerror:function(rsp) { alert("Error setting metadata"); }
|
---|
2475 | } );
|
---|
2476 |
|
---|
2477 | }
|
---|
2478 |
|
---|
2479 |
|
---|
2480 |
|
---|
2481 |
|
---|
2482 | //----------------//
|
---|
2483 |
|
---|
2484 | function name_unfold_re(search_string) {
|
---|
2485 | // escape meta characters
|
---|
2486 | search_string = search_string.replace(/\./g,"");
|
---|
2487 | search_string = search_string.replace(/^\s/,"");
|
---|
2488 | search_string = search_string.replace(/\s$/,"");
|
---|
2489 |
|
---|
2490 | search_string = search_string.replace(/([|\(\)\[\{\}.+*?^$\\])/g,"\\$1");
|
---|
2491 |
|
---|
2492 | // replace characters by their compositors
|
---|
2493 | var accent_replacer = function(chr) {
|
---|
2494 | return accented[chr.toLowerCase()] || chr;
|
---|
2495 | }
|
---|
2496 | search_string = search_string.replace(/\S/g,accent_replacer);
|
---|
2497 |
|
---|
2498 | search_string = search_string.replace(/\s+/g,"\\s+");
|
---|
2499 |
|
---|
2500 | return new RegExp(search_string,'g');
|
---|
2501 | }
|
---|
2502 |
|
---|
2503 | var accented = {
|
---|
2504 | 'a': '[Aa\xaa\xc0-\xc5\xe0-\xe5\u0100-\u0105\u01cd\u01ce\u0200-\u0203\u0226\u0227\u1d2c\u1d43\u1e00\u1e01\u1e9a\u1ea0-\u1ea3\u2090\u2100\u2101\u213b\u249c\u24b6\u24d0\u3371-\u3374\u3380-\u3384\u3388\u3389\u33a9-\u33af\u33c2\u33ca\u33df\u33ff\uff21\uff41]',
|
---|
2505 | 'b': '[Bb\u1d2e\u1d47\u1e02-\u1e07\u212c\u249d\u24b7\u24d1\u3374\u3385-\u3387\u33c3\u33c8\u33d4\u33dd\uff22\uff42]',
|
---|
2506 | 'c': '[Cc\xc7\xe7\u0106-\u010d\u1d9c\u2100\u2102\u2103\u2105\u2106\u212d\u216d\u217d\u249e\u24b8\u24d2\u3376\u3388\u3389\u339d\u33a0\u33a4\u33c4-\u33c7\uff23\uff43]',
|
---|
2507 | 'd': '[Dd\u010e\u010f\u01c4-\u01c6\u01f1-\u01f3\u1d30\u1d48\u1e0a-\u1e13\u2145\u2146\u216e\u217e\u249f\u24b9\u24d3\u32cf\u3372\u3377-\u3379\u3397\u33ad-\u33af\u33c5\u33c8\uff24\uff44]',
|
---|
2508 | 'e': '[Ee\xc8-\xcb\xe8-\xeb\u0112-\u011b\u0204-\u0207\u0228\u0229\u1d31\u1d49\u1e18-\u1e1b\u1eb8-\u1ebd\u2091\u2121\u212f\u2130\u2147\u24a0\u24ba\u24d4\u3250\u32cd\u32ce\uff25\uff45]',
|
---|
2509 | 'f': '[Ff\u1da0\u1e1e\u1e1f\u2109\u2131\u213b\u24a1\u24bb\u24d5\u338a-\u338c\u3399\ufb00-\ufb04\uff26\uff46]',
|
---|
2510 | 'g': '[Gg\u011c-\u0123\u01e6\u01e7\u01f4\u01f5\u1d33\u1d4d\u1e20\u1e21\u210a\u24a2\u24bc\u24d6\u32cc\u32cd\u3387\u338d-\u338f\u3393\u33ac\u33c6\u33c9\u33d2\u33ff\uff27\uff47]',
|
---|
2511 | 'h': '[Hh\u0124\u0125\u021e\u021f\u02b0\u1d34\u1e22-\u1e2b\u1e96\u210b-\u210e\u24a3\u24bd\u24d7\u32cc\u3371\u3390-\u3394\u33ca\u33cb\u33d7\uff28\uff48]',
|
---|
2512 | 'i': '[Ii\xcc-\xcf\xec-\xef\u0128-\u0130\u0132\u0133\u01cf\u01d0\u0208-\u020b\u1d35\u1d62\u1e2c\u1e2d\u1ec8-\u1ecb\u2071\u2110\u2111\u2139\u2148\u2160-\u2163\u2165-\u2168\u216a\u216b\u2170-\u2173\u2175-\u2178\u217a\u217b\u24a4\u24be\u24d8\u337a\u33cc\u33d5\ufb01\ufb03\uff29\uff49]',
|
---|
2513 | 'j': '[Jj\u0132-\u0135\u01c7-\u01cc\u01f0\u02b2\u1d36\u2149\u24a5\u24bf\u24d9\u2c7c\uff2a\uff4a]',
|
---|
2514 | 'k': '[Kk\u0136\u0137\u01e8\u01e9\u1d37\u1d4f\u1e30-\u1e35\u212a\u24a6\u24c0\u24da\u3384\u3385\u3389\u338f\u3391\u3398\u339e\u33a2\u33a6\u33aa\u33b8\u33be\u33c0\u33c6\u33cd-\u33cf\uff2b\uff4b]',
|
---|
2515 | 'l': '[Ll\u0139-\u0140\u01c7-\u01c9\u02e1\u1d38\u1e36\u1e37\u1e3a-\u1e3d\u2112\u2113\u2121\u216c\u217c\u24a7\u24c1\u24db\u32cf\u3388\u3389\u33d0-\u33d3\u33d5\u33d6\u33ff\ufb02\ufb04\uff2c\uff4c]',
|
---|
2516 | 'm': '[Mm\u1d39\u1d50\u1e3e-\u1e43\u2120\u2122\u2133\u216f\u217f\u24a8\u24c2\u24dc\u3377-\u3379\u3383\u3386\u338e\u3392\u3396\u3399-\u33a8\u33ab\u33b3\u33b7\u33b9\u33bd\u33bf\u33c1\u33c2\u33ce\u33d0\u33d4-\u33d6\u33d8\u33d9\u33de\u33df\uff2d\uff4d]',
|
---|
2517 | 'n': '[Nn\xd1\xf1\u0143-\u0149\u01ca-\u01cc\u01f8\u01f9\u1d3a\u1e44-\u1e4b\u207f\u2115\u2116\u24a9\u24c3\u24dd\u3381\u338b\u339a\u33b1\u33b5\u33bb\u33cc\u33d1\uff2e\uff4e]',
|
---|
2518 | 'o': '[Oo\xba\xd2-\xd6\xf2-\xf6\u014c-\u0151\u01a0\u01a1\u01d1\u01d2\u01ea\u01eb\u020c-\u020f\u022e\u022f\u1d3c\u1d52\u1ecc-\u1ecf\u2092\u2105\u2116\u2134\u24aa\u24c4\u24de\u3375\u33c7\u33d2\u33d6\uff2f\uff4f]',
|
---|
2519 | 'p': '[Pp\u1d3e\u1d56\u1e54-\u1e57\u2119\u24ab\u24c5\u24df\u3250\u3371\u3376\u3380\u338a\u33a9-\u33ac\u33b0\u33b4\u33ba\u33cb\u33d7-\u33da\uff30\uff50]',
|
---|
2520 | 'q': '[Qq\u211a\u24ac\u24c6\u24e0\u33c3\uff31\uff51]',
|
---|
2521 | 'r': '[Rr\u0154-\u0159\u0210-\u0213\u02b3\u1d3f\u1d63\u1e58-\u1e5b\u1e5e\u1e5f\u20a8\u211b-\u211d\u24ad\u24c7\u24e1\u32cd\u3374\u33ad-\u33af\u33da\u33db\uff32\uff52]',
|
---|
2522 | 's': '[Ss\u015a-\u0161\u017f\u0218\u0219\u02e2\u1e60-\u1e63\u20a8\u2101\u2120\u24ae\u24c8\u24e2\u33a7\u33a8\u33ae-\u33b3\u33db\u33dc\ufb06\uff33\uff53]',
|
---|
2523 | 't': '[Tt\u0162-\u0165\u021a\u021b\u1d40\u1d57\u1e6a-\u1e71\u1e97\u2121\u2122\u24af\u24c9\u24e3\u3250\u32cf\u3394\u33cf\ufb05\ufb06\uff34\uff54]',
|
---|
2524 | 'u': '[Uu\xd9-\xdc\xf9-\xfc\u0168-\u0173\u01af\u01b0\u01d3\u01d4\u0214-\u0217\u1d41\u1d58\u1d64\u1e72-\u1e77\u1ee4-\u1ee7\u2106\u24b0\u24ca\u24e4\u3373\u337a\uff35\uff55]',
|
---|
2525 | 'v': '[Vv\u1d5b\u1d65\u1e7c-\u1e7f\u2163-\u2167\u2173-\u2177\u24b1\u24cb\u24e5\u2c7d\u32ce\u3375\u33b4-\u33b9\u33dc\u33de\uff36\uff56]',
|
---|
2526 | 'w': '[Ww\u0174\u0175\u02b7\u1d42\u1e80-\u1e89\u1e98\u24b2\u24cc\u24e6\u33ba-\u33bf\u33dd\uff37\uff57]',
|
---|
2527 | 'x': '[Xx\u02e3\u1e8a-\u1e8d\u2093\u213b\u2168-\u216b\u2178-\u217b\u24b3\u24cd\u24e7\u33d3\uff38\uff58]',
|
---|
2528 | 'y': '[Yy\xdd\xfd\xff\u0176-\u0178\u0232\u0233\u02b8\u1e8e\u1e8f\u1e99\u1ef2-\u1ef9\u24b4\u24ce\u24e8\u33c9\uff39\uff59]',
|
---|
2529 | 'z': '[Zz\u0179-\u017e\u01f1-\u01f3\u1dbb\u1e90-\u1e95\u2124\u2128\u24b5\u24cf\u24e9\u3390-\u3394\uff3a\uff5a]'
|
---|
2530 | };
|
---|
2531 |
|
---|
2532 |
|
---|
2533 |
|
---|
2534 | //------------------------------------------//
|
---|
2535 |
|
---|
2536 | // Static Images
|
---|
2537 |
|
---|
2538 | var csnImageLarge = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAS4AAAAcCAYAAADfhVJRAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sBAgoeCYNOpdoAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAHJElEQVR42u2dbYhVRRjHf20vVloRKGaCFVhpVuILhPZCqWnahxQlTde37MU2KzQaSdJtXWNpMiJz18C3VcuwtPqwrEq0BopCqWUamkhCEYpYWWQkvmwfZq6dvfecszPnzLl3F+YPy9Vzzzznef7zzP/MucxzBjySQXCZJ8HDozS4RA/CamAOcLVF24NI7ogZ2IOALcC1MTbOAKORbImwMRhYD9xk6NOjwFKgHMnOPFvNltxs0HbOhfg1TPvVD8mvhkLXGWgCpiPZEziehPuzwBpgJpLzKW2F96OgH/ABxPRxIUYA74fy7+6GMQBYB/S2bHkQmJzHfWljjM4JdzG65341MATJyVQxptSJMgRDgNcskx0dQJSzQ4GdrTgD0AHYgKCPFql8rLAQrcNAL+AWPajDBrsNxgOLIvxaCXQByi3sTQTu0gmZ4ykp95cDTwFTHdiK6sc1lgN6N3BnDP+uUJ9gQKPb1GcWo2AnghkIOqXKCfcxusQ67e8TDmJMpRNlSJqA5/Rd5HdDZ86HOqKcuRf4XP/vr1bsnAEmAJuArbptEC/qGcQ+A58+CgzkniHfj7KwBfAxMC7Crx76c4pFB04NJJeC4n6wJff/6FnC8BZJ6rofFVc2fK1qhX9XmG3pF/rc2cCQDGMcpG+0x1PlhPsYXaL3xbwXdEDQCUGHVtpMCY0xpU7kfqdZBuwFKpEsTRncZtB3Hcl1htPJxkDboPp+of1a0cIvwcbAgB0XOF4Zc5VwW/F+NUf4lYPN3bp/6FHJLmCXFh1ajTEeLvsxCV91Rfh5w96v4sbYMXVOuI0xCwzUM87xwN8IRiLZEXHugCx0oiyPxPccBHWN47Zhfo0N/GGZKO8VOaakKHaMWdtyCR9j20EnYDOC+4qpE2V4eHh42KMRLj6R5MTr/mJd3AuXh4eHPSRrgWdLJV5euDw8PJKK1/I88eqoxesBL1weHh7tTbwasxYvL1weHh5ZiFdVexWuExmdW0yc8Fnp4XPGSrz+Ra27OpsBXyeihKvGURgngaEW5w8Dfov53tSvGkfnmPo1z8LWEksOv9GfXyfgv8ZhStaU6LrtMUbbvF/Shvi0QW2keEmuQnIlkuH6aF0WOpFbgHoM+BBpNRCj8A6wFskBC7Xer+v/8leiR/m1EpihP4N25iG4AlVmQKgtOGdRt1ilycr36yiwGmmRWJKXtG+mi0mHay5nW3B/DFUXNhrBqwbn/ww8hOQnh3y9HcG/KyTzS/J6xjGqvIfHEew3tLUQVekwLsMYXeIksBF4waLNLOBSCtcjptKJnHCNQvKdo+De1QPCFvt02yDGRMw4nkHVONWHfPcK8EnI8THA9agVu6aoBLYjmZN3fCSSHxPEWIFpLZnkFIIqJKcs7I8CqjGvc+uBKh8a7JCvYcDiDAdPf6AvRBTmR/kl2A78gGxRkpM0xocLckwyB8EIYL6FrQXaVn2GMbrEWGAH0uKFBZJmBBWolxI404nco2Ijwlmy7QbqEPrNEyZQ5y7TbYNoCLUluYBkFZILEXYaQq7SADwGvGERy0IkX4Yc35aQr8XAZ4aclAOHEUyysN+Iqvs6aHj+L0QXiifnK7uBA5LjSLYCi6z8UqK+10GM1XqG1BDiWxK/RhbkhNsYXWITUJtgbNfpts50Ijfj6ga8jOA8krkpg+sMzEQV8M4ybLMU9cNeWltRdoK2apEWZIXDni/Bm1Awc4tDvZ5ir9GPDaZ+TQRk7CuH7PqxVv97+sXBLjlU8l9ZJPONZzfR3NvnhKA2Jsdc+eXelhuUcmy3sFVWEL47PG/5COXCVoVjv1pPl2zORYtW8JMMr9UaX92At/TfV4hEr1wpJUQRc7VU/SSKyGcpxnYLW34dl4cJgi9T7KoflXt7WjxKBS9cHiaPZYfyfm/pCjQh6OXJ8fDC5dGWxWt+nnjdoMXrdk+Ohxcuj/YkXt30Y+NtnhwPL1webV28qr14eXjh8mhv4rUgT7xu1OJ1qyfHo9jC9S1qc4q0+DRF203tiDtXfLVPv5R4LQwRr55+WHlkrRO5BaiPAH2AGQjjYuCo2qgJqHKIZgR/YrJfGsxF7ZISte2R6T5xe4negMDWVhxs+aoAvgfutriGSSxp/Yrrx9b5klTq1UML9JHuqHVeDyI5kkm6C7oAk4BpqLIYF9zvSd0vLv3KJkaX2OMgj1PpRG7GtQxVONrXwqGpocv1JWc16fdgul8aLAfG6rZB5FZom+7TlzsvrOTF1lYcbPl6MnDdIw5iceVXdD+a8iWppOW7l7pTWJfmEk2oAl0X3CfJiah+cemXS1su4Y6vlDqRE67yBAHfTNQebpLTqHous/3SJH8U1B3+79cB1J6JJlivz5/swFYcbPkaqK99lOAmrsljceVXXD+a86VmbFXAaWAb8HSGg2daYACl5T5JTkT1i0u/XNpyCZd8pdKJ/wA07nj7gkstZwAAAABJRU5ErkJggg==";
|
---|
2539 |
|
---|
2540 | var csmImageLarge = "data:image/png;base64,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";
|
---|
2541 |
|
---|
2542 | var csyImageLarge = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUEAAAAcCAYAAAD/aQ2sAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sBAgoeH3eaEIsAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAGqklEQVR42u2da6gVVRTHf91e0MsPKWqBFVhpVqIFoX0pFUsTMpQyvaZmmVkUGo4k6U2vcWlnRD6DfFYaVlYfLj4or31SKDVMQRFJKEKRHhYYiK8+zD42njszZ++ZNffc411/uBw9Z+81//Xfa/4z5zBrBhTZEHCFiqBQ1D4uszt0IzADuMZj7gEMd6WYxABgC3BDSoxTwEgMWxJiDATWA7c4cnoMWALUY9hRFuu8pzYbbJwzMbyGWF79MPzmaJqdgRZgEobdkfezaH8aWAtMxXA2Z6z4dQzoB3wCKWvcGo8AH8TqL3fwuQ/4GOjtOfMAML5M++rmmFwTcjlW/2RBsu6TajWXXnUEDALe8CQDsDol8cHAjgoGCHA1sIGAPtbwyrHCwwAPAb2A26xBxBmHD54CFiTwWgl0Aeo94o0F7rGLVdIpq/ZXAs8BEwRiJa3jWk9z2AXcnaK/FNZkKHbsnDWF5Riwg4DJBFyXqybkc5Q0NJkc5Ws1l151GFqAF+3R7U/HyWdjFq6U4IPA1/Z//1SIcwoYA2wEttq5UbxijxZ7HTh9GjGFnjGfD/eIBfAZMDqBVw/7+oyH4BMiwocItR/oqf2/9uxl6EUFL72OoVY+eq2qoL8Upnvywo6dDgwqMMcB9qB9LFdNyOcoCZkc5Ws1l16l37WWA3uABgxLcgq1GeyRwtDJ8QizKTI3evb4jeW14iJeAV9EBB0deb8hZSvxsdJ5nU/gVYLPWUT/2HcNO4GdtiiomGM6JNcxi17L2uALlj+vts3x2tw1IZtjEZDIsbq1GkFdGdnFAgJdLzw3jteoyB+eC7K4jXPKirbOsehYktAcLw20i3WsQ6FQKDow1AQVCoWaoEKhUKgJKhQKhZqgQqFQqAlK4XhBY9sSx7VEFFozl3aO5SbYJBT3d2Cwx/ghwB8pn7vyahIa48prtkesRZ4a/mBfv8+gf5NgjTRVabu1mKNv3S9qR3oWtW8vaqfreAGli6WPAuswXjt1Et4DPsKw33mGYZ/txy3vwEjitRKYbF+jcWYTcBVhqw6xseCMRx/xPGuE5byOAKsxHqIbXrXcXC98Hmq1nO6h/VHCPs2RBLzuMP4X4GEMPwvq9W6C/lLIxsvwZsE5hnUPTxKwzzHWfMKuidEF5igJ6RyrW6tWr9KZ4HAMM4WEeh+/9pUS9tq5UTwBBDFjp1gTnBLz2Uw7j5hY24A5HpwagBsxzCh7fxiGxgw5TgNGOJrmCbtQJzziDwc64d5H2YOwBQ9BvTaT3CUggf7At968AgYT0E0oxy2taiyska6eseYStoyOKDBHOcjmKFmrufQqmeAmAhYKSbULWEZg71DjgnDscjs3iubYWIZzGFZhOJcQpzlmK83A48BbHrnMx7At5v3tGfVaCHzlqEk9cIiAcR7xNxH2ax9wHP8ryTeByK6X8eot9d0Rj2HYCizw4hXudHsEcmy0ZzXNMdyy8BrWqiZkc5TWXyZHyVrNqVfp63B34DUCzmKYlVOmzsBUwobnlx3nLAFeEIiVFCcaaynGw6Dj4a9XwNvQ6owyDWuAywnvVrLOg9dYwKTe5sxvHZfaf0+6YByGg1X/Zcowx/nIn6y9f00ELE2pMSle8rHan/aStZqLV12rj+TwkufXRIlY04R5VZaymLFYA4y+UuC2KunVHXjH/n1HkOm2RdVE0Ia1Wq11CmpU+6DavPQ6QYULojeW7Wp/DuitsiguBagJKly+Zhzk4t9bugItBPRScRRqgoqOYoRzyoywmzXCO1UchZqgoqMaYXf71fgOFUehJqjoSEbYqEaoUBNUdGQjnFtmhDdZI7xdxVHUsgn+SPhgo7z4MsfcjTWknZRetckrNML5MUbYU3crRS3tQ6WLpR8F+gCTCZwb/ZN6FccAnwPnCfgbl+cOwyzCJ1k9nTDO9Tmqe6jcsiXxTFZfvaYBPwH3emzDJZe8vNLWsbJehgZ7tdVc+87NhNcRPoThcCEVG9AFGAdMBPoKab8797pI8iomx/amvVyt5uRVOhNcTtgU3tdDkgmxrXGG05bQA7g+dxg+BEbZuVGUOhNcn2NbGhfXiuMbKw2+ej0b2e5hgVykeCWvo6tehgbCmwoQMcL1Be6KLYSN/BLaZ6mJpHWR5CUZq71qL1mruXiVTLA+g3i3kvSMU8NJwv5Kt+cOG/5q1Qf8P6/9hM8UdsF6O368QKw0+Op1v932EaIPTM+eixSvtHV01ys8Os8DTgLbgecL3BEnRswrr/ZZaiJpXSR5ScZqz9pL1WouXv8BZW5j2TRaadsAAAAASUVORK5CYII=";
|
---|
2543 |
|
---|
2544 | var csnImage = "data:image/png;base64,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";
|
---|
2545 |
|
---|
2546 | var csmImage = "data:image/png;base64,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";
|
---|
2547 |
|
---|
2548 | var csyImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQcAAAAXCAYAAAAGCoqIAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sBBAUkNae/H8UAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAFIElEQVR42u2cXWgcVRTHf7vdEJuq8asKUhGqaHwQIxR9aLEqokjDvgipiCiUShVFIoFbRaPGKMWL0koFv6JoBdH4EALxCy3iR0R9EUHFKm2Rgj4J1X6Y0Oj6MHd1Ojuzc/eeuztJev+wkL2cc8//fMzZycyZWcZigGIlaykxwzECll6sQn4XJComOTcBLwGn58gfAlah+TMlwaPAwxl6vwADaL5L6DwAjADLm9g8DLwOXADcENOtWfi3AxhG80/C7pVACc2XOUV7B3AWmm2xNdtYAXwGVNEcFMdZEivZgfsQ8CBwUo7kLPAEmsc7yjk9R+6cO9MMJXWVVht+/TX8yubrCuBj4GjO5q80NAZFBUU/UGqiVwL6UaYZ/Y8u4Kccm+PANcD1ifUx4Nsc3Sy7bwNbLNK40RR3HHOWsfoZ+ALoia25x1kWKwnKwB4LuT1gmqAPzortKFY75kjCWXLQSzhLasO3vxuBkfpB8xywC80Kh5A8C9yM5rQmZw6gOAisA+6MrW41dvtjclH308zG1oZSdhxu0M22+2bC7nlA1cK39f+dXdWhmQamEzYaOadDEuetlv4Oef6ds7Prn/MQcC+wrOUcyThLIOHc/tqwx3qgUj9z6EkcPK1gC9BrIdeb8mudZvcv88mDLefejLOEM6z/7cqHb86+dSUoknPZMUdFxaoozr79rdg6EhAQcAIiNIeAgIDQHAICAkJzCAgI8NgcJgX7HBDI2NidEOhm2bUZuNnXhphPtll3YglxPiDI0WRBx1RRnH36uy/eHF4EbnXc6FdgwEJuwMjGkWb3kPnEcTuw00LX1i7YXd3dAOy3kNtlPnmQxNlWNy1WEhTF2bau0nIk4SxBUZx9+7sB2F8Sb6M4E83vTrKKbjRzCZkbgRqa9xPrx8sqeoBtRPeVm2EnMILmj5juVWg+teTcyLFRJpoA1Ba3MxWXE81JnNtE6mXgLnTs7KY1f+9D87eXMlGUge1OdlvjfD86NgCkOJVo0M1F152zLFbunGW14d9fRXfZ/DGOchq+APgKxcUWxvqArxOr3zfoat5LaQx9wA8NutBnwa9ENKIbx21W/kbDTU9a2HgaeMpiv3HgZJpPk2ahFX+LwHLgGUfOl6Tk93ALdrVHzhK4c5bVRjv8vaJOrIZiyrFb1lDstZDb2/A8RCd0szlPWci9ZfUMR7RfzZvdvDgr3kUxjWLVgrl6lRYrSX4ldjuh255YTXXcbrrcJhS1+AXJqsDsaoFMu3WzYOPvYBtS5CPO15r/C3ejOGeBtIfBNuSXNudocIHFqlqQ3SSeh3Arc7Gi/lTdRcCHKKtR8IAAW3SF5rBYET1yW3/I7VLgA3MxLCDAG0JzWLwNYgx4xHxbA7xj7g4EBITmEBoEj8UaxDpgCkV3CEyAsK5KaEr15nAUeMFxqzeAIxZyR4xsEvMWuvMtrudB4q+Eh9TufEaDeNR8uw6YSHm5TZGY9xi/pQzfNSlGBcVK4DXg6pzbHMeA89H8lljfBKyxeE3cMPBqYn0W+NyC5yfAWkfd42Hv7w7gR+zu06fxc7WbFedsfzWjKDBNoko0rXmLlwpR3ANsBi5ziJV7fiV2ZZw7Hytpbfj213Aom451IdEgSjN0AXenFOYcmhnyXxM3kzJpOIbdswATRtZFN61D2/i7mei1XR858nO1mx7nPH81o8Ao0WvAvvH4A3IK5A65ZcVKkl+JXYluEbGS1kZR/p7AUJwtmBwNsVrodhcj5w7a/RfDC9PXGb9e8gAAAABJRU5ErkJggg==";
|
---|
2549 |
|
---|
2550 | var pencilImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAABuUlEQVR4nH3Q7y8CARgH8OeuWIc40xot1dBoTdxmvGSYeREvGP+DFzYvvOONF94wr73zztJmfsww8pvGzGzMSpmk3HU4ZcmVu67zQvOj0vP68933eR5EFEXIOoJ1BcVzRb0GrTAAAJpdH1isEl2xoCqK+0h++xAAkCwNs3OWulqTjKE0IiKQwfgNjeTj/wZmLXNEfb3D6QwyjCnKG0PxmIOKXNxnDkSOJ5hC/ZkLeQxQ5Vrtid3ecEUT7uirUZ3hBuF4tKAipFN7ysR1hVK5s2nDMGySvnK3VBELk6kNidMxVBsDmQIcwyCDrTPz7p1pY3VNo9MuLC+lHi0cDEmqsW8NHIATpvdwW6j5S/95K78/mK4TIQgiqm/90xA+n2ElFF6kED0DWPGPXmT0vePu3zsnG5C8nBJ1B8eA11fw5k1qm9CeopMNLOPFxIswzQjPNPfwgL1dy7m9+YCqf4JM/6EUACB8+ZGTn3hx8M8BNMa5Irj3qbx/ypeuAUDKsuzK0W2rMsbfuTwv0ai8tMHc12jszKgBQOr3++eX7ZvvZJ+5Td/dVWlq+o8mAwGSqjEYenpHCILITr/mE0lR3IGM9+0SAAAAAElFTkSuQmCC";
|
---|
2551 |
|
---|
2552 | // useful way to init string
|
---|
2553 |
|
---|
2554 | var abc = <>
|
---|
2555 | xxxxx
|
---|
2556 | </>;
|
---|
2557 |
|
---|
2558 |
|
---|
2559 | document.body.addEventListener('mouseover',csnHighlight,true);
|
---|
2560 | document.body.addEventListener('mouseout',csnDeHighlight,true);
|
---|
2561 |
|
---|
2562 | document.body.addEventListener('mousedown',csnStartDragging,true);
|
---|
2563 | document.body.addEventListener('mouseup',csnStopDragging,true);
|
---|
2564 | document.body.addEventListener('click',csnSingleClick,true);
|
---|
2565 |
|
---|
2566 | //document.body.addEventListener('keydown',csnKeyPress,true);
|
---|
2567 | //document.body.addEventListener('keyup',csnKeyPress,true);
|
---|
2568 | document.body.addEventListener('keypress',csnKeyPress,true);
|
---|
2569 |
|
---|
2570 | /*
|
---|
2571 | var frames = document.getElementsByTagName("iframe");
|
---|
2572 | for (var i=0; i<frames.length; i++) {
|
---|
2573 | var frame = frames[i];
|
---|
2574 | frame.addEventListener('mouseover',csnHighlight,true);
|
---|
2575 | frame.addEventListener('mouseout',csnDeHighlight,true);
|
---|
2576 |
|
---|
2577 | frame.addEventListener('mousedown',csnStartDragging,true);
|
---|
2578 | frame.addEventListener('mouseup',csnStopDragging,true);
|
---|
2579 | frame.addEventListener('click',csnSingleClick,true);
|
---|
2580 | }
|
---|
2581 | */
|
---|
2582 |
|
---|
2583 | document.addEventListener('load',csnInit,true);
|
---|
2584 |
|
---|
2585 |
|
---|
2586 |
|
---|
2587 | //--------------------===========================--------------------//
|
---|
2588 |
|
---|
2589 |
|
---|
2590 | var usernameNamespace="jcdl2011";
|
---|
2591 | var crowdsourceNamespace="csn";
|
---|
2592 |
|
---|
2593 | function sw_clean(html)
|
---|
2594 | {
|
---|
2595 | html = html.replace(/<div.*?sw-cursor.*?><\/div>/g,"");
|
---|
2596 | html = html.replace(/<div.*?sw-protect.*?>.*?<\/div>/g,"");
|
---|
2597 | html = html.replace(/<div.*?sw-protect.*?\/>/g,"");
|
---|
2598 |
|
---|
2599 | return html;
|
---|
2600 | }
|
---|
2601 |
|
---|
2602 | function sw_edited()
|
---|
2603 | {
|
---|
2604 | return (de.Changes.getChangedEditableSections().length>0);
|
---|
2605 | }
|
---|
2606 |
|
---|
2607 |
|
---|
2608 | var popupWidth = 100;
|
---|
2609 | var popupHeight = 20;
|
---|
2610 |
|
---|
2611 | function getScrollXY()
|
---|
2612 | {
|
---|
2613 | var scrOfX = 0, scrOfY = 0;
|
---|
2614 | if( typeof( window.pageYOffset ) == 'number' ) {
|
---|
2615 | //Netscape compliant
|
---|
2616 | scrOfY = window.pageYOffset;
|
---|
2617 | scrOfX = window.pageXOffset;
|
---|
2618 | } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
|
---|
2619 | //DOM compliant
|
---|
2620 | scrOfY = document.body.scrollTop;
|
---|
2621 | scrOfX = document.body.scrollLeft;
|
---|
2622 | } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
|
---|
2623 | //IE6 standards compliant mode
|
---|
2624 | scrOfY = document.documentElement.scrollTop;
|
---|
2625 | scrOfX = document.documentElement.scrollLeft;
|
---|
2626 | }
|
---|
2627 | return [ scrOfX, scrOfY ];
|
---|
2628 | }
|
---|
2629 |
|
---|
2630 | function set_popup_top(popUpDivVar,sy)
|
---|
2631 | {
|
---|
2632 | var window_height = window.innerHeight;
|
---|
2633 |
|
---|
2634 | var popUpDiv = document.getElementById(popUpDivVar);
|
---|
2635 | var popUpDiv_top=window_height/2-(popupHeight/2);
|
---|
2636 | popUpDiv.style.top = (sy + popUpDiv_top) + 'px';
|
---|
2637 | }
|
---|
2638 |
|
---|
2639 | function set_popup_left(popUpDivVar,sx)
|
---|
2640 | {
|
---|
2641 | var window_width = window.innerWidth;
|
---|
2642 |
|
---|
2643 | var popUpDiv = document.getElementById(popUpDivVar);
|
---|
2644 | var window_left=window_width/2-(popupWidth/2);
|
---|
2645 | popUpDiv.style.left = (sx + window_left) + 'px';
|
---|
2646 | }
|
---|
2647 |
|
---|
2648 | function show_popup(div_id)
|
---|
2649 | {
|
---|
2650 | var [ sx, sy ] = getScrollXY();
|
---|
2651 |
|
---|
2652 | set_popup_top(div_id,sy);
|
---|
2653 | set_popup_left(div_id,sx);
|
---|
2654 |
|
---|
2655 | var el = document.getElementById(div_id);
|
---|
2656 | el.style.display = 'block';
|
---|
2657 | }
|
---|
2658 |
|
---|
2659 | function hide_popup(div_id)
|
---|
2660 | {
|
---|
2661 | var el = document.getElementById(div_id);
|
---|
2662 | el.style.display = 'none';
|
---|
2663 | }
|
---|
2664 |
|
---|
2665 | var starting_html = sw_clean(document.body.innerHTML);
|
---|
2666 | var live_html = null;
|
---|
2667 |
|
---|
2668 |
|
---|
2669 |
|
---|
2670 | function add_title_metadata(namespace,title,filename)
|
---|
2671 | {
|
---|
2672 | if (title==null) {
|
---|
2673 | title = document.title.replace(/ \[seaweed edited\]$/,"");
|
---|
2674 | }
|
---|
2675 |
|
---|
2676 | var url = "http://www.nzdl.org/custom/seaweed-gm/cgi-bin/metadata-server.pl";
|
---|
2677 | var data = "a=set-import-metadata";
|
---|
2678 | data += "&un=" + namespace;
|
---|
2679 | data += "&pw=" + namespace;
|
---|
2680 | data += "&c=" + namespace;
|
---|
2681 |
|
---|
2682 | data += "&f=" + filename;
|
---|
2683 | data += "&metaname=dc.Title&metavalue=" + title;
|
---|
2684 | data += "&metamode=override";
|
---|
2685 |
|
---|
2686 | var encoded_data = encodeURI(data);
|
---|
2687 |
|
---|
2688 | url += "?" + encoded_data;
|
---|
2689 |
|
---|
2690 | // alert("url = " + url);
|
---|
2691 |
|
---|
2692 | // should change this to a GET
|
---|
2693 | GM_xmlhttpRequest( { method: 'GET',
|
---|
2694 | url: url,
|
---|
2695 | onerror: function(rsp) { alert("Error setting metadata"); }
|
---|
2696 | } );
|
---|
2697 |
|
---|
2698 | }
|
---|
2699 |
|
---|
2700 |
|
---|
2701 |
|
---|
2702 | function _save_doc_html(namespace,title,html,filename)
|
---|
2703 | {
|
---|
2704 | if (!seaweedActivated) {
|
---|
2705 | init_seaweed();
|
---|
2706 | seaweedActivated = true;
|
---|
2707 | }
|
---|
2708 |
|
---|
2709 | var url = "http://www.nzdl.org/custom/seaweed-gm/cgi-bin/swio.pl";
|
---|
2710 | var data = "cmd=store-file";
|
---|
2711 | data += "&un=" + namespace;
|
---|
2712 | data += "&pw=" + namespace;
|
---|
2713 | data += "&c=" + namespace;
|
---|
2714 | data += "&f=" + filename;
|
---|
2715 |
|
---|
2716 | //alert("data = " + data);
|
---|
2717 |
|
---|
2718 | var encoded_html = html;
|
---|
2719 |
|
---|
2720 | encoded_html = encoded_html.replace(/&/g, "%26");
|
---|
2721 | encoded_html = encoded_html.replace(/</g, "%3C");
|
---|
2722 | encoded_html = encoded_html.replace(/>/g, "%3E");
|
---|
2723 | encoded_html = encoded_html.replace(/\"/g,"%22");
|
---|
2724 | encoded_html = encoded_html.replace(/\;/g,"%3B");
|
---|
2725 | encoded_html = encoded_html.replace(/\+/g,"%2B");
|
---|
2726 |
|
---|
2727 | data += "&html=" + encoded_html
|
---|
2728 |
|
---|
2729 | var encoded_data = encodeURI(data);
|
---|
2730 |
|
---|
2731 | //alert("encoded data = " + encoded_data);
|
---|
2732 |
|
---|
2733 |
|
---|
2734 | var popup_div = document.getElementById("popUpDiv");
|
---|
2735 | popup_div.innerHTML = "Saving ...";
|
---|
2736 | show_popup('popUpDiv');
|
---|
2737 |
|
---|
2738 | GM_xmlhttpRequest( { method: 'POST',
|
---|
2739 | url: url,
|
---|
2740 | headers: {'Content-type':'application/x-www-form-urlencoded'},
|
---|
2741 | data: encoded_data,
|
---|
2742 | onload: function(rsp) { add_title_metadata(namespace,title,filename) ; save_done(rsp) },
|
---|
2743 | onerror: save_failed } );
|
---|
2744 | }
|
---|
2745 |
|
---|
2746 |
|
---|
2747 |
|
---|
2748 | function save_mapping(orig_name,new_name)
|
---|
2749 | {
|
---|
2750 | var timestamp = new Date().getTime();
|
---|
2751 | var filename = timestamp + ".html";
|
---|
2752 | var title = timestamp + " Crowdsource Mapping";
|
---|
2753 |
|
---|
2754 | var html = '<html>\n';
|
---|
2755 | html += ' <head>\n';
|
---|
2756 | html += ' <title>'+title+'</titile>\n';
|
---|
2757 | html += ' <meta name="gs.OrigName" content="'+orig_name+'" />\n';
|
---|
2758 | html += ' <meta name="gs.FoldedName" content="'+new_name+'" />\n';
|
---|
2759 | html += ' </head>\n';
|
---|
2760 | html += ' <body>\n';
|
---|
2761 | html += ' <p>\n';
|
---|
2762 | html += ' '+orig_name+'->'+new_name+'\n';
|
---|
2763 | html += ' </p>\n';
|
---|
2764 | html += ' </body>\n';
|
---|
2765 | html += '</html>\n';
|
---|
2766 |
|
---|
2767 | _save_doc_html(crowdsourceNamespace,title,html,filename);
|
---|
2768 | }
|
---|
2769 |
|
---|
2770 |
|
---|
2771 | function save_live_doc_html()
|
---|
2772 | {
|
---|
2773 | live_html = sw_clean(document.body.innerHTML);
|
---|
2774 |
|
---|
2775 | var location = new String(document.location);
|
---|
2776 | var filename = location.replace(/^[a-z]+:\/\//,"");
|
---|
2777 |
|
---|
2778 | if (filename.match(/\/$/)) {
|
---|
2779 | filename += "index.html";
|
---|
2780 | }
|
---|
2781 |
|
---|
2782 | var title = document.title.replace(/ \[seaweed edited\]$/,"");
|
---|
2783 | var head = "<head><title>" + title + "</title></head>";
|
---|
2784 | var encoded_live_html = "<html>" + head + "<body>" + live_html + "</body></html>";
|
---|
2785 |
|
---|
2786 | alert("encoded live html being sent");
|
---|
2787 |
|
---|
2788 | _save_doc_html(usernameNamespace,title,encoded_live_html,filename);
|
---|
2789 |
|
---|
2790 | }
|
---|
2791 |
|
---|
2792 |
|
---|
2793 |
|
---|
2794 | function revert_to_orig_doc()
|
---|
2795 | {
|
---|
2796 |
|
---|
2797 | GM_xmlhttpRequest( { method: 'GET',
|
---|
2798 | url: document.location.toString(),
|
---|
2799 | onload: revert_done,
|
---|
2800 | onerror: revert_failed } );
|
---|
2801 | }
|
---|
2802 |
|
---|
2803 |
|
---|
2804 | function revert_done(rsp)
|
---|
2805 | {
|
---|
2806 | var status = rsp.status;
|
---|
2807 | if (status == 200) {
|
---|
2808 | var response = rsp.responseText;
|
---|
2809 |
|
---|
2810 | //alert("response = " + response);
|
---|
2811 |
|
---|
2812 | var inner_body = response.match(/<body>(.*)<\/body>/i);
|
---|
2813 | //alert("inner body = " + inner_body);
|
---|
2814 |
|
---|
2815 | var response_body = response.replace(/^.*<body>(.*)<\/body>.*$/i,"$1");
|
---|
2816 |
|
---|
2817 | document.body.innerHTML = response_body;
|
---|
2818 |
|
---|
2819 | init_seaweed();
|
---|
2820 | starting_html = sw_clean(document.body.innerHTML);
|
---|
2821 | }
|
---|
2822 | else {
|
---|
2823 | revert_failed(rsp);
|
---|
2824 | }
|
---|
2825 | }
|
---|
2826 |
|
---|
2827 |
|
---|
2828 |
|
---|
2829 | function revert_failed(rsp)
|
---|
2830 | {
|
---|
2831 | alert("Revert failed: Status = " + rsp.status + ";\n"+ rsp.statusText);
|
---|
2832 | init_seaweed();
|
---|
2833 | }
|
---|
2834 |
|
---|
2835 |
|
---|
2836 |
|
---|
2837 | function unload_precheck(event)
|
---|
2838 | {
|
---|
2839 | var curr_html = sw_clean(document.body.innerHTML);
|
---|
2840 |
|
---|
2841 | if (curr_html != starting_html) {
|
---|
2842 | // if (sw_edited()) {
|
---|
2843 |
|
---|
2844 | event.returnValue = "The document has been edited.";
|
---|
2845 | event.preventDefault();
|
---|
2846 | }
|
---|
2847 | }
|
---|
2848 |
|
---|
2849 |
|
---|
2850 |
|
---|
2851 | function save_done(rsp)
|
---|
2852 | {
|
---|
2853 | var status = rsp.status;
|
---|
2854 | if (status == 200) {
|
---|
2855 | var response = rsp.responseText;
|
---|
2856 |
|
---|
2857 | if (response.match(/^Error:/i)) {
|
---|
2858 | alert("Save failed for:\n\n " + document.location + "\n\n" + response);
|
---|
2859 | }
|
---|
2860 | else {
|
---|
2861 | if (live_html!=null) {
|
---|
2862 | starting_html = sw_clean(live_html);
|
---|
2863 | }
|
---|
2864 |
|
---|
2865 |
|
---|
2866 | //alert("popup" + hide_popup);
|
---|
2867 |
|
---|
2868 | var popup_div = document.getElementById("popUpDiv");
|
---|
2869 | popup_div.innerHTML = "Saving ... Done";
|
---|
2870 | setTimeout(hide_popup,500,"popUpDiv");
|
---|
2871 |
|
---|
2872 | if (live_html!=null) {
|
---|
2873 | de.Changes.clear();
|
---|
2874 | html_edited = false;
|
---|
2875 | document.title = document.title.replace(/ \[seaweed edited\]$/,"");
|
---|
2876 | }
|
---|
2877 | }
|
---|
2878 | }
|
---|
2879 | else {
|
---|
2880 | save_failed(rsp);
|
---|
2881 | }
|
---|
2882 | }
|
---|
2883 |
|
---|
2884 | function save_failed(rsp)
|
---|
2885 | {
|
---|
2886 | alert("Save failed: Status = " + rsp.status + ";\n"+ rsp.statusText);
|
---|
2887 | }
|
---|
2888 |
|
---|
2889 |
|
---|
2890 | // -----------------------------------------------------
|
---|
2891 |
|
---|
2892 |
|
---|
2893 | function restore_live_doc_html()
|
---|
2894 | {
|
---|
2895 | var location = new String(document.location);
|
---|
2896 | var filename = location.replace(/^[a-z]+:\/\//,"");
|
---|
2897 |
|
---|
2898 | var url = "http://www.nzdl.org/custom/seaweed-gm/cgi-bin/swio.pl?";
|
---|
2899 | url += "cmd=restore-file";
|
---|
2900 | url += "&un=" + usernameNamespace;
|
---|
2901 | url += "&pw=" + usernameNamespace;
|
---|
2902 | url += "&c=" + usernameNamespace;
|
---|
2903 | url += "&f=" + filename;
|
---|
2904 |
|
---|
2905 | GM_xmlhttpRequest( { method: 'GET',
|
---|
2906 | url: url,
|
---|
2907 | onload: load_done,
|
---|
2908 | onerror: load_failed } );
|
---|
2909 |
|
---|
2910 | }
|
---|
2911 |
|
---|
2912 | var html_edited = false;
|
---|
2913 |
|
---|
2914 | function init_seaweed()
|
---|
2915 | {
|
---|
2916 | //alert("Init Seaweed, url = " + document.location);
|
---|
2917 | de.init();
|
---|
2918 | de.Changes.clear();
|
---|
2919 |
|
---|
2920 | de.UndoMan.addObserver({
|
---|
2921 | onBeforeExec : function() {
|
---|
2922 | if (!html_edited) {
|
---|
2923 | document.title += " [seaweed edited]";
|
---|
2924 | }
|
---|
2925 | html_edited = true;
|
---|
2926 | }
|
---|
2927 | });
|
---|
2928 |
|
---|
2929 | var popup_div = document.createElement("div");
|
---|
2930 | popup_div.setAttribute("id","popUpDiv");
|
---|
2931 | popup_div.setAttribute("class","sw-protect");
|
---|
2932 |
|
---|
2933 |
|
---|
2934 | popup_div.setAttribute("style",
|
---|
2935 | "position:absolute; \
|
---|
2936 | display:none; \
|
---|
2937 | background-color:#363736; \
|
---|
2938 | color: white; \
|
---|
2939 | z-index: 9002;");
|
---|
2940 |
|
---|
2941 | popup_div.style.width = popupWidth + "px";
|
---|
2942 | popup_div.style.height = popupHeight + "px";
|
---|
2943 |
|
---|
2944 | document.body.appendChild(popup_div);
|
---|
2945 | }
|
---|
2946 |
|
---|
2947 | function load_done(rsp)
|
---|
2948 | {
|
---|
2949 | var status = rsp.status;
|
---|
2950 | if (status == 200) {
|
---|
2951 | var response = rsp.responseText;
|
---|
2952 |
|
---|
2953 | if (response.match(/^Error:/i)) {
|
---|
2954 | alert("Load failed for:\n\n " + document.location + "\n\n" + response);
|
---|
2955 | }
|
---|
2956 | else {
|
---|
2957 | if (response != "") {
|
---|
2958 | document.body.innerHTML = response;
|
---|
2959 | }
|
---|
2960 | init_seaweed();
|
---|
2961 | starting_html = sw_clean(document.body.innerHTML);
|
---|
2962 |
|
---|
2963 | }
|
---|
2964 | }
|
---|
2965 | else {
|
---|
2966 | load_failed(rsp);
|
---|
2967 | }
|
---|
2968 | }
|
---|
2969 |
|
---|
2970 |
|
---|
2971 | function load_failed(rsp)
|
---|
2972 | {
|
---|
2973 | alert("Load failed: Status = " + rsp.status + ";\n"+ rsp.statusText);
|
---|
2974 | init_seaweed();
|
---|
2975 | }
|
---|
2976 |
|
---|
2977 |
|
---|
2978 | function loaded()
|
---|
2979 | {
|
---|
2980 | restore_live_doc_html();
|
---|
2981 | }
|
---|
2982 |
|
---|
2983 |
|
---|
2984 | //window.addEventListener('beforeunload',unload_precheck,true);
|
---|
2985 |
|
---|
2986 | //window.addEventListener('load',init_seaweed,false);
|
---|
2987 |
|
---|
2988 |
|
---|
2989 |
|
---|
2990 |
|
---|
2991 |
|
---|
2992 |
|
---|
2993 |
|
---|
2994 |
|
---|
2995 |
|
---|
2996 |
|
---|
2997 |
|
---|
2998 |
|
---|
2999 |
|
---|
3000 |
|
---|
3001 |
|
---|
3002 |
|
---|
3003 |
|
---|
3004 |
|
---|
3005 |
|
---|
3006 |
|
---|
3007 |
|
---|
3008 |
|
---|
3009 | (function(){var H,J;de={version:"0.0.1",m:[],collections:{},events:{},onready:(function(){var a0=[];function a1(){if(a0){for(var a2 in a0){a0[a2]()}a0=0}}if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);a1()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);a1()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(!a0){return}try{document.documentElement.doScroll("left")}catch(a2){setTimeout(arguments.callee,0);return}a1()})()}A(window,"load",function(){a1();ad(window,"load",arguments.callee)})}}return function(a2){if(a0){a0.push(a2)}else{a2()}}})(),init:function(){if(!de.m){return}H=document.body;var a3=de.m;var a6;do{a6=false;for(var a4=0;a4<a3.length;a4++){var a5=a3[a4];if(!a5.depends){continue}for(var a2=0;a2<a5.depends.length;a2++){for(var a1=a4+1;a1<a3.length;a1++){if(a5.depends[a2]==a3[a1].name){var a0=a3;a3=a0.slice(0,a4).concat(a0.slice(a4+1,a1+1).concat([a5].concat(a0.slice(a1+1))));a6=true;break}}if(a6){break}}if(a6){break}}}while(a6);for(a4 in a3){if(a3[a4].init){a3[a4].init()}}delete de.m}};function L(a1,a2){var a0=Array.prototype.slice.call(arguments);a0.splice(0,2);de.m.push({name:a1,init:a2,depends:a0})}function D(a3,a1,a0){if(a0!==false){a0=true}for(var a2 in a1){if(a0||typeof a3[a2]=="undefined"){a3[a2]=a1[a2]}}return a3}function aZ(a3){var a0=a3.split(",");var a2={};for(var a1 in a0){a2[a0[a1]]=true}return a2}function N(a0){return document.createElement(a0)}var aU=function(){var a0=function(){this.length=0;this.head=null;this.tail=null};a0.prototype={add:function(a3){var a2={data:a3,next:null,prev:null};if(this.length==0){this.head=a2;this.tail=a2}else{this.tail.next=a2;a2.prev=this.tail;this.tail=a2}this.length++},remove:function(a2){var a3=this.head;while(a3){if(a3.data==a2){a1(this,a3);return true}a3=a3.next}return false},removeAtIndex:function(a2){if(a2>-1&&a2<this.length){var a4;if(a2<(this.length/2)){a4=this.head;for(var a3=0;a3<a2;a3++){a4=a4.next}}else{a4=this.tail;for(var a3=this.length-1;a3>a2;a3--){a4=a4.prev}}a1(this,a4);return a4.data}return null},pop:function(){return this.removeAtIndex(this.length-1)},chop:function(a5){var a4=this.tail,a3=this.length;while(a4&&a4!=a5){a4=a4.prev;a3--}if(!a4){return false}if(a4.next){var a2=a4.next;while(a2){a2.prev.next=null;a2.prev=null;a2=a2.next}this.tail=a4;this.length=a3}return true},clear:function(){while(this.head){var a2=this.head;this.head=a2.next;a2.prev=a2.next=null}this.tail=null;this.length=0},iterate:function(a3){var a4=this.head;while(a4){var a2=a3(a4.data);if(a2===false){break}a4=a4.next}}};a0.prototype.push=a0.prototype.add;function a1(a2,a3){if(a2.length==1){a2.clear();return}if(a3==a2.head){a2.head=a3.next;a2.head.prev=null;a3.next=null}else{if(a3==a2.tail){a2.tail=a3.prev;a2.tail.next=null;a3.prev=null}else{a3.prev.next=a3.next;a3.next.prev=a3.prev;a3.next=a3.prev=null}}a2.length--}return a0}();de.collections.DoublyLinkedList=aU;function h(a1){var a3=[],a2;D(a1,{fireEvent:function(a8){if(a3.length>0){var a7,a5,a4,a6=Array.prototype.slice.call(arguments);a6.shift();a2=[];for(a7 in a3){a5=a3[a7];if(typeof a5.ref["on"+a8]=="function"){a5.ref["on"+a8].apply(a5.context,a6)}}a4=a2;a2=0;for(a7 in a4){this.removeObserver(a4[a7])}}},addObserver:function(a5,a6,a4){if(a0(a5)!=-1){return}a5={ref:a5,context:a6||a5};if(a4){a3.unshift(a5)}else{a3.push(a5)}},removeObserver:function(a4){if(a2){a2.push(a4)}else{var a5=a0(a4);if(a5>=0){a3.splice(a5,1)}}}});function a0(a4){for(var a5=0;a5<a3.length;a5++){if(a3[a5].ref==a4){return a5}}return -1}}de.model=h;L("Platform",function(){var a0=N("p");a0.style.margin="0 0 0 0";a0.style.padding="0 0 0 0";a0.style.textAlign="";var a1=N("span");a1.innerHTML="X";a0.appendChild(a1);H.appendChild(a0);_localeDirection=a1.offsetLeft<(a0.offsetWidth-(a1.offsetLeft+a1.offsetWidth))?"ltr":"rtl";H.removeChild(a0)});var W,E,G,p,K,d={UNKNOWN:-1,FIREFOX:1,OPERA:2,IE:3,CHROME:4,SAFARI:6,KONQUEROR:8,NETSCAPE:9,WINDOWS:1,MAC:2,LINUX:3,GECKO:1,TRIDENT:2,WEBKIT:3,KHTML:4,PRESTO:5};(function(){var a4=[{string:navigator.userAgent,subString:"Chrome",id:4,versionSearch:"Chrome"},{string:navigator.vendor,subString:"Apple",id:6,versionSearch:"Version"},{prop:window.opera,id:2,versionSearch:"Opera"},{string:navigator.vendor,subString:"KDE",id:8,versionSearch:"Konqueror"},{string:navigator.userAgent,subString:"Firefox",id:1,versionSearch:"Firefox"},{string:navigator.userAgent,subString:"Netscape",id:9,versionSearch:"Netscape"},{string:navigator.userAgent,subString:"MSIE",id:3,versionSearch:"MSIE"},{string:navigator.userAgent,subString:"Mozilla",id:9,versionSearch:"Mozilla"}];var a2=[{string:navigator.platform,subString:"Win",id:1},{string:navigator.platform,subString:"Mac",id:2},{string:navigator.platform,subString:"Linux",id:3},];var a1=[{string:navigator.userAgent,subString:"MSIE",id:2,versionSearch:"MSIE"},{string:navigator.userAgent,subString:"WebKit",id:3,versionSearch:"WebKit"},{string:navigator.userAgent,subString:"KHTML",id:4,versionSearch:"KHTML"},{string:navigator.userAgent,subString:"Gecko",id:1,versionSearch:"rv"},{prop:window.opera,id:5,versionSearch:"Presto"},];function a0(a8){for(var a5 in a8){var a6=a8[a5].string,a7=a8[a5].prop;if(a6){if(a6.indexOf(a8[a5].subString)!=-1){return a8[a5]}}else{if(a7){return a8[a5]}}}return null}function a3(a7,a5){if(!a5){return null}var a6=a7.indexOf(a5);if(a6==-1){return null}return parseFloat(a7.substring(a6+a5.length+1))}W=a0(a2);W=W?W.id||-1:-1;E=a0(a4);G=-1;if(E){G=a3(navigator.userAgent,E.versionSearch)||a3(navigator.appVersion,E.versionSearch);E=E.id}else{E=-1}p=a0(a1);K=-1;if(p){K=a3(navigator.userAgent,p.versionSearch);p=p.id}else{p=-1}})();D(de,{Platform:d,os:W,browser:E,browserVersion:G,engine:p,engineVersion:K,localDirection:null});var aI=function(){alert("hit!!!")};(function(){var a3={},a2=new aU(),a1=null,a0=0;aI=function(a4,a5){a3[a4]=a5};de.UndoMan={maxHistoryCount:100,ExecFlag:{GROUP:1,UPDATE_SELECTION:2,DONT_STORE:4},registerAction:aI,execute:function(a5,bb){var ba=Array.prototype.slice.call(arguments);if(typeof a5!="number"){a5=2;bb=ba[0];ba.shift()}else{ba.splice(0,2)}if(a0){a5=4}if((a5&1)&&!a1){aj("Cannot group action to nothing")}if(!a3[bb]){aj('Unknown action called "'+bb+'"')}var bd,a7=a3[bb],bc=new av(bb,a5,de.selection.getRange(false),de.selection.getRange(true));if(bc.selBefore){var a9=de.doc.getEditProperties(bc.selBefore.startNode);if(a9&&a9.afRE){var a8=a9.afRE.test(bb.toLowerCase()+(bb=="Format"?ba[0].toLowerCase():""));if(a8!=a9.afInclusive){return}}}this.fireEvent("BeforeExec",bc);a0++;try{bd=a7.exec.apply(bc,ba)}finally{a0--}if(!(a5&4)){var a6=aP();if(!a6||a6.length==0){this.fireEvent("AfterExec",bc);if(bc.selBefore){de.selection.setSelection(bc.selBefore.startNode,bc.selBefore.startIndex,bc.selBefore.endNode,bc.selBefore.endIndex,true)}return bd}if(!a1){a2.clear()}else{if(a1.next){a2.chop(a1)}}bc.opList=a6;a2.push(bc);a1=a2.tail;if(a2.length>this.maxHistoryCount&&this.maxHistoryCount>-1&&!(a7.flags&1)){a2.removeAtIndex(0)}}if(a5&2){var a4=bc.selAfter;if(!a4){de.selection.clear()}else{de.selection.setSelection(a4.startNode,a4.startIndex,a4.endNode,a4.endIndex,true)}}else{delete bc.selBefore;if(bc.selAfter){delete bc.selAfter}}delete bc.selBeforeOrdered;this.fireEvent("AfterExec",bc);return bd},undo:function(){do{if(!a1){return}var a4=a1.data;this.fireEvent("BeforeUndo",a4);try{u(a4.opList);a1=a1.prev}catch(a6){this.clear();throw a6}if(a4.flags&2){var a5=a4.selBefore;if(!a5){de.selection.clear()}else{de.selection.setSelection(a5.startNode,a5.startIndex,a5.endNode,a5.endIndex,true)}}this.fireEvent("AfterUndo",a4)}while(a1&&(a4.flags&1))},redo:function(){var a4=true;while(1){if(a2.length==0||a1==a2.tail){return}var a7=a1?a1.next:a2.head;var a5=a7.data;if(!a4&&!(a5.flags&1)){return}a1=a7;this.fireEvent("BeforeRedo",a5);try{aW(a5.opList)}catch(a6){this.clear();throw a6}if(a5.selAfter){var a8=a5.selAfter;if(!a8){de.selection.clear()}else{de.selection.setSelection(a8.startNode,a8.startIndex,a8.endNode,a8.endIndex,true)}}a4=false;this.fireEvent("AfterRedo",a5)}},clear:function(){a2.clear();a1=null},hasUndo:function(){return a1!=null},hasRedo:function(){return a2.length>0&&a1!=a2.tail}};h(de.UndoMan)})();var av=function(){var a0=function(a2,a1,a4,a3){this.name=a2;this.flags=a1;this.selBefore=a4;this.selBeforeOrdered=a3};a0.prototype={getEditSection:function(){if(this.opList){for(var a2 in this.opList){var a4=this.opList[a2];for(var a3 in a4){if(ap(a4[a3])&&aK(H,a4[a3])){var a1=de.doc.getEditSectionContainer(a4[a3]);if(a1){return a1}}}}}}};return a0}();var ai=document.elementFromPoint?function(a0,a2){switch(p){case 1:case 2:return document.elementFromPoint(a0,a2);default:var a1=aR();return document.elementFromPoint(a0+a1.left,a2+a1.top)}}:function(a0,a3){var a2=null;a1(H);return a2;function a1(a4){if(a4.childNodes.length>0){var a6=a4.firstChild;while(a6){if(a1(a6)){return true}a6=a6.nextSibling}}if(a4.nodeType==1&&(a4.offsetLeft||a4.offsetLeft==0)){var a5=f(a4);if(a3>=a5.y&&a3<=(a5.y+a4.offsetHeight)&&a0>=a5.x&&a0<=(a5.x+a4.offsetWidth)){a2=a4;return true}}return false}};function al(a0){var a3=0,a2=0,a1=0;do{if(a0.offsetLeft||a0.offsetTop){if(a0==H){if(!a1){a3+=Math.abs(a0.offsetLeft);a2+=Math.abs(a0.offsetTop)}}else{a3+=a0.offsetLeft;a2+=a0.offsetTop}}a1|=(a0.style&&a0.style.position=="fixed")}while(a0=a0.offsetParent);if(!a1){var a4=aR();a3-=a4.left;a2-=a4.top;if(p==2){a3+=H.clientLeft;a2+=H.clientTop}}return{x:a3,y:a2}}var f=al;function aV(a2,a0){var a1=a0.nextSibling;if(!a1){a0.parentNode.appendChild(a2)}else{a0.parentNode.insertBefore(a2,a1)}return a2}function aX(a0,a3,a1){var a2=-1;var a4=a0.firstChild;while(++a2!=a1&&a4){a4=a4.nextSibling}if(a2==a1){if(a2==a0.childNodes.length){a0.appendChild(a3)}else{a0.insertBefore(a3,a4)}return a3}return null}function x(a1){var a0=0;ar(a1,true,function(a2){a0+=ah(a2)});return a0}function o(a1){var a2={};for(var a0 in a1){a2[a0]=a1[a0]}return a2}function I(a0,a7,a1,a2,a4){if(!a0){a0=aM(a7,[9,11])}var a3=aO(a7,a0,true,true);var a5=a3.length-1;(function a6(a9){var bb,a8,ba=false;if(a5>0){a5--;bb=a1?a3[a5].nextSibling:a3[a5].previousSibling;if(!a6(a3[a5])){return false}}else{if(a5==0){if(a1&&(!a2||a2.test(X(a9)))){a8=a4(a9);if(a8===false){return a8}ba=(a8===1)}if(!a1&&a9==a7){bb=null}else{bb=a1?a9.firstChild:a9.lastChild}}}if(!ba){while(bb){if(!a6(bb)){return false}bb=(a1)?bb.nextSibling:bb.previousSibling}}if(!a1&&(!a2||a2.test(X(a9)))){if(a4(a9)===false){return false}}return true})(a0)}function ar(a0,a3,a1,a2){I(a0,a3,a1,/^#text$/,a2)}function R(a0,a3,a1,a2){I(a0,a3,a1,null,a2)}function aK(a0,a1){a1=a1.parentNode;while(a1){if(a1==a0){return true}a1=a1.parentNode}return false}function aO(a5,a4,a0,a2){if(a5==a4){return(a0||a2)?[a5]:[]}var a1=a0?[a5]:[];var a3=a5.parentNode;while(a3&&a3!=a4){a1.push(a3);a3=a3.parentNode}if(a2&&a4&&a3==a4){a1.push(a4)}return a1}function j(a4,a1,a2,a0){var a3=null;while(a4){if(a2&&a2(a4)){if(a0){return a4}a3=a4}if(a4.parentNode==a1){break}a4=a4.parentNode}return a2?a3:a4}function w(a2,a1,a0){var a6=aO(a2,null,a0,true);var a5=aO(a1,null,a0,true);var a7=null;for(var a4 in a6){for(var a3 in a5){if(a6[a4]==a5[a3]){return a6[a4]}}}return null}function ag(a2,a0){var a1=null;I(null,a2,a0,null,function(a3){if(a3==a2){return true}a1=a3;return false});return a1}function aM(a2,a1){while(a2.parentNode){if(a1){for(var a0 in a1){if(a2.parentNode.nodeType==a1[a0]){return a2}}}a2=a2.parentNode}return a2}function l(a1){var a0=-1;while(a1){a0++;a1=a1.previousSibling}return a0}function aT(a4,a0){var a3="";var a6=0;var a5,a2;for(a2=0;a2<a4.length;a2++){a5=a4.charAt(a2);var a1=null;switch(a5){case'"':a1=""";break;case"'":a1="'";break;case"&":a1="&";break;case"<":a1="<";break;case">":a1=">";break;default:if(a0&&a5=="\n"){a1="<br>"}else{if(M(a5)&&(a2==0||a2==(a4.length-1)||a4.charAt(a2-1)==" "||a4.charAt(a2+1)==" ")){a1=" "}}}if(a1){if((a2-a6)>0){a3+=(a4.substring(a6,a2))}a3+=a1;a6=a2+1}}if((a2-a6)>0){a3+=(a4.substring(a6,a2))}return a3}function a(a1){var a0=N("span");a0.innerHTML=a1;return a0.firstChild.nodeValue}function ab(a0){while(a0){if(a0.nodeType==1){if(a0.style.display=="none"){return false}}a0=a0.parentNode}return true}function aD(a1,a0){while(a1&&a1.nodeType!=1){a1=a1.parentNode}if(!a1){return}if(window.getComputedStyle){return document.defaultView.getComputedStyle(a1,"").getPropertyValue(a0)}else{if(a1.currentStyle){return a1.currentStyle[t(a0)]}}}function ao(a1,a0){if(p==2){a1.style.setAttribute("cssText",a0)}else{a1.setAttribute("style",a0)}}function aJ(a1,a0,a2){if(p==2){a1.style.setAttribute(a0,a2)}else{a1.style[a0]=a2}}function aw(a0){return(p==2?a0.style.getAttribute("cssText"):a0.getAttribute("style"))||""}function r(a3){var a1=aw(a3);if(a1){a1=a1.split(";");for(var a2 in a1){var a0=a1[a2].indexOf(":");if(a0>0&&a0<(a1[a2].length-1)&&/\s*\S+\s*/.test(a1[a2].substr(a0))){return 1}}}}function e(a0){do{var a1=/([A-Z])/.exec(a0);if(a1){a0=a0.substr(0,a1.index)+"-"+a1[1].toLowerCase()+a0.substr(a1.index+1)}}while(a1);return a0}var k=function(){var a0=/^\s*rgb\s*\(\s*(\d+)\%?\s*\,\s*(\d+)\%?\s*\,\s*(\d+)\%?\s*\)\s*$/i,a1={maroon:[128,0,0],red:[255,0,0],orange:[255,165,0],yellow:[255,255,0],olive:[128,128,0],purple:[128,0,128],fuchsia:[255,0,255],white:[255,255,255],lime:[0,255,0],green:[0,128,0],navy:[0,0,128],blue:[0,0,255],aqua:[0,255,255],teal:[0,128,128],black:[0,0,0],silver:[12,12,12],gray:[128,128,128]};return function(a6){if(a6.charAt(0)=="#"){if(a6.length<7){a6+="000000"}return[parseInt(a6.substr(1,2),16),parseInt(a6.substr(3,2),16),parseInt(a6.substr(5,2),16)]}var a3=a0.exec(a6);if(a3){var a5=parseInt(a3[1]),a4=parseInt(a3[2]),a2=parseInt(a3[3]);if(a6.indexOf("%")>-1){if(a5>100){a5=100}a5=(255*a5)/100;if(a4>100){a4=100}a4=(255*a4)/100;if(a2>100){a2=100}a2=(255*a2)/100}else{if(a5>255){a5=255}if(a4>255){a4=255}if(a2>255){a2=255}}return[a5,a4,a2]}return a1[a6.toLowerCase()]||[255,255,255]}}();var ay=function(){var a1={bold:"700",normal:"400"};function a0(a2){return a1[a2.toLowerCase()]||a2}return function(a4,a3,a2){switch(a4){case"backgroundColor":case"borderColor":case"outlineColor":case"color":a3=k(a3);a2=k(a2);return a3[0]==a2[0]&&a3[1]==a2[1]&&a3[2]==a2[2];case"fontWeight":a3=a0(a3);a2=a0(a2);break}return a3==a2}}();function t(a0){do{var a1=a0.indexOf("-");if(a1>-1){a0=(a1==(a0.length-1))?a0.substr(0,a1):a0.substr(0,a1)+a0.charAt(a1+1).toUpperCase()+a0.substr(a1+2)}}while(a1>-1);return a0}function aG(a1){if(a1.outerHTML){return a1.outerHTML}else{var a0=N("span");a0.appendChild(a1.cloneNode(true));return a0.innerHTML}}function Z(){return !(E==3&&G<8)}function T(a2,a3){if(a2.nodeType==1||a2==H){var a1=au(a2);if(a1){var a4=a1.split(" ");for(var a0 in a4){if(a3.test(a4[a0])){return a4[a0]}}}}return null}function au(a0){return a0.className}function am(a1,a0){return E==3?a1.setAttribute("className",a0):a1.className=a0}function U(a2,a0){for(var a1 in a0){if(a0[a1]==a2){return parseInt(a1)}}return -1}function X(a0){return a0.nodeName.toLowerCase()}function ah(a1,a0){if(typeof a0=="undefined"){a0=null}return a1.nodeType==3?a1.nodeValue.length:a0}function ap(a0){return typeof Node=="object"?a0 instanceof Node:(typeof a0=="object"&&typeof a0.nodeType=="number"&&typeof a0.nodeName=="string")}D(de,{visitAllNodes:R,getCommonAncestor:w,getInnerText:function(a0){if(a0.nodeType==3){return a0.nodeValue}return a0.innerText||a0.textContent||""},parseHTMLString:a,insertAfter:aV,insertAt:aX,findClassName:T,getPositionInWindow:f,getOuterHTML:aG,getComputedStyle:aD});(function(){var a0=[];L("Changes",function(){de.Changes.clear();de.doc.addObserver({onSectionAdded:function(a1){a0.push({esNode:a1,initHTML:a1.innerHTML})}})},"Doc");de.Changes={getChangedEditableSections:function(){var a3=[],a8=/(<\s*\w+\s[^>]*?)(?:style|class|id|value)\s*=\s*(?:""|'')([^<]*?>)/i,a5=/(<\s*\w+\s[^>]*?)\s*(?:style|class|id|value)\s*(>|(?:[^=][^<]*?>))/i,a1=/<[^\/][^<>]*?\s[^<>]*>/,a4=/(?:[\t\n\r ]| )/g;ak(false);for(var a6 in a0){var a7=a0[a6];if(a2(a7.esNode.innerHTML)!=a2(a7.initHTML)||a7.dirty){a3.push(a7.esNode)}}ak(true);return a3;function a2(bd){bd=bd.replace(a4," ");var ba,bb,bc,a9="";for(bb=0;bb<(p==5?2:1);bb++){bc=bb==0?a8:a5;while(ba=bc.exec(bd)){bd=bd.substr(0,ba.index)+ba[1]+ba[2]+bd.substr(ba.index+ba[0].length)}}if(ba){while(ba=a1.exec(bd)){a9+=bd.substr(0,ba.index)+ba[0].replace(a4,"");bd=bd.substr(ba.index+ba[0].length)}a9+=bd}else{a9=bd}return de.spell.stripSpellWrapperHTML(a9)}},clear:function(a4){ak(false);if(a4){for(var a2 in a0){if(a0[a2].esNode==a4){a0[a2].initHTML=a4.innerHTML;a0[a2].dirty=false;break}}}else{a0=[];var a1=de.doc.getAllEditSections();for(var a2 in a1){var a3=a1[a2];a0.push({esNode:a3,initHTML:a3.innerHTML})}}ak(true)},dirty:function(a2){for(var a1 in a0){if(!a2||a0[a1].esNode==a2){a0[a1].dirty=true}}},reset:function(){de.UndoMan.clear();for(var a1 in a0){a0[a1].esNode.innerHTML=a0[a1].initHTML}this.clear()}}})();(function(){L("Clipboard",function(){switch(p){case 2:A(document,"keydown",bg);break;case 1:A(document,"keypress",bd);break;case 5:A(document,"keydown",a3);break;case 3:A(document,"copy",a4);A(document,"paste",a9);A(document,"keydown",bn);break}br=N("textarea");ao(br,"width:1px;height:1px;border-style:none");a6=N("div");am(a6,ax);ao(a6,"position:absolute;width:1px;height:1px;display:none;z-index:-500");a6.appendChild(br);H.appendChild(a6)},"events.Events");var bi,a2,a1,br,a6,bh,bb;function bl(bs){var bt="",bu;if(bs.nodeType==3&&aH(bs)){bt=bs.nodeValue.replace(/[\t\n\r]/g," ")}else{if(bs.nodeType==1){switch(X(bs)){case"br":bt+="\n";break;case"li":bt+="\n - ";break;default:if(aL(bs)){bt+="\n"}}bu=bs.firstChild;while(bu){bt+=bl(bu);bu=bu.nextSibling}if(aL(bs)){bt+="\n"}}}return bt}function a8(){var bs=de.selection.getHighlightedDOM();if(!bs){return null}a2=bs;bi=bl(a2);if(aL(a2)){bi=bi.replace(/^\n/,"").replace(/\n$/,"")}a1=false;return bi}function bk(){var bs=a8();if(bs){de.selection.remove()}return bs}function bc(bu){if(!de.cursor.exists()){return}de.selection.remove();var bv=de.cursor.getCurrentCursorDesc();var bs,bx;if(bi){if(!a1){bx=a2}else{if(bi==bu){bx=a2}else{if(bu){bs=bu}else{bx=a2}}}}else{bs=bu}if(bx){bx=null;bs=bi}if(bx||bs){var bt=bv.relIndex;if(bv.isRightOf){bt++}if(X(bv.domNode)=="br"){bt=1}var by=de.doc.getEditSectionContainer(bv.domNode);if(by){var bw=de.doc.getEditProperties(by);if(!bw.singleLine&&bx){}else{if(bs){if(!bw.singleLine&&/\n/.test(bs)){de.UndoMan.execute("InsertHTML",aT(bs,true),bv.domNode.parentNode,bv.domNode,bt)}else{de.UndoMan.execute("InsertText",bv.domNode,bs,bt)}}}}}}function bf(bt){var bs=window.clipboardData.setData("Text",bt);return bs===J||bs}function bm(){var bs=window.clipboardData.getData("Text");if(bs===""){if(!window.clipboardData.setData("Text",bs)){bs=null}}return bs}function bg(bt){bt=bt||window.event;if(!de.events.Keyboard.isAcceleratorDown(bt)){return}switch(bt.keyCode){case 67:case 88:var bs=bt.keyCode==67?a8():bk();if(bs){if(bf(bs)){a1=true}else{bq(bs)}}break;case 86:var bu=bm();if(bu){bc(bu)}else{be()}break}}function a5(){try{if(netscape.security.PrivilegeManager.enablePrivilege){netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}else{return false}}catch(bs){return false}return true}function bp(bx){try{if(!a5()){return false}var bw=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);bw.data=bx;var bs=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(!bs){return false}bs.addDataFlavor("text/unicode");bs.setTransferData("text/unicode",bw,copytext.length*2);var bu=Components.interfaces.nsIClipboard;var bt=Components.classes["@mozilla.org/widget/clipboard;1"].getService(bu);if(!bt){return false}bt.setData(bs,null,bu.kGlobalClipboard)}catch(bv){return false}}function a7(){try{if(!a5()){return null}var bu=Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard);if(!bu){return null}var bs=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(!bs){return null}bs.addDataFlavor("text/unicode");bu.getData(bs,bu.kGlobalClipboard);var bx={},bt={},bw="";bs.getTransferData("text/unicode",bx,bt);if(bx){bx=bx.value.QueryInterface(Components.interfaces.nsISupportsString)}if(bx){bw=bx.data.substring(0,bt.value/2)}return bw}catch(bv){return null}}function bd(bt){if(!de.events.Keyboard.isAcceleratorDown(bt)){return}switch(bt.which){case 99:case 120:var bs=bt.which==99?a8():bk();if(bs){if(bp(bs)){a1=true}else{bq(bs)}}break;case 118:var bu=a7();if(bu){bc(bu)}else{be()}break}}function a3(bt){if(!de.events.Keyboard.isAcceleratorDown(bt)){return}switch(bt.keyCode){case 67:var bs=a8();if(bs){bq(bs)}break;case 88:var bs=bk();if(bs){bq(bs)}break;case 86:be();break}}function a4(bt){var bs=a8();if(bs){bq(bs)}}function a9(bs){bc(bs.clipboardData.getData("Text"));bs.preventDefault()}function bn(bt){if(de.events.Keyboard.isAcceleratorDown(bt)&&bt.keyCode==88){var bs=bk();if(bs){bq(bs)}}}function bq(bs){ba(bs)}function be(){ba()}function ba(bt){bb=de.cursor.getCurrentCursorDesc();if(bh){clearTimeout(bh)}br.value=bt?bt:"";var bv=aR();a6.style.left=(bv.left==0?-50:bv.left+10)+"px";a6.style.top=(bv.top==0?-50:bv.top+10)+"px";a6.style.display="";try{br.focus();br.select()}catch(bu){}var bs=bt?a0:bj;bh=setTimeout(bs,0)}function bo(){a6.style.display="none"}function a0(){bh=null;bo();a1=true;window.focus()}function bj(){bh=null;bo();if(bb){var bs=de.cursor.getCurrentCursorDesc();if(!bs||bs.domNode!=bb.domNode||bs.relIndex!=bb.relIndex){de.cursor.setCursor(bb)}}bc(br.value);window.focus()}})();function aQ(bg,a8,a1){var bh=a1||N("p");var a7=j(w(bg,a8,true),H,aL,true)||H;while(bg.firstChild){bg=bg.firstChild}while(a8.lastChild){a8=a8.lastChild}if(a7!=H&&!n(bh,a7)){if(X(a7)=="ul"||X(a7)=="ol"){bg=j(bg,a7);a8=j(a8,a7);var a6=[];while(bg){if(X(bg)=="li"){a6.push(bg)}bg=bg==a8?null:bg.nextSibling}return a6}return[a7]}var ba,bd=[],a4=[],a0,a9;R(a7,bg,false,bc);if(bd.length>0){for(var be in bd){if(bd[be].parentNode){bd[be].parentNode.removeChild(bd[be]);a4.push(bd[be])}}}a0=ba;if(!a0){a0=a7.firstChild;while(a0.firstChild){a0=a0.firstChild}}ba=null;bd=[];R(a7,a8,true,bc);if(bd.length>0){for(var be in bd){if(bd[be].parentNode){bd[be].parentNode.removeChild(bd[be]);a4.push(bd[be])}}}a9=ba;if(!a9){a9=a7.lastChild;while(a9.lastChild){a9=a9.lastChild}}for(var be in a4){H.appendChild(a4[be])}if(!a9||!a0){return[]}a3(a0,a9,a7);bf(a0,a9,a7,bh);var a2=j(bg,a7);a8=j(a8,a7);var a5=[];do{var bb=a2;while(bb){if(aL(bb)){a5.push(bb);break}bb=bb.firstChild}a2=a2==a8?null:a2.nextSibling}while(a2);return a5;function bc(bj){if(bj==a7){return}var bk=bj,bi=null;while(bk!=a7){if(aL(bk)){bi=bk}if(bk.parentNode==a7&&de.doc.getProtectedNodeContainer(bk)==bk){bd.push(bk);bi=null}bk=bk.parentNode}if(bi){ba=bi;return false}}function a3(bl,bi,bj){var bk=bl,bm=false;while(bk&&!bm){R(bj,bk,true,function(bp){bk=null;bm|=bp==bi;if(bp==bj){return}if(aL(bp)){var bo=bp;while(bo.parentNode!=bj){if(bo.previousSibling){var br=bo.parentNode.cloneNode(false);while(bo.previousSibling){var bq=bo.previousSibling;Q(2,bq);Q(1,bq,br,0)}Q(1,br,bo.parentNode.parentNode,l(bo.parentNode))}if(bo.nextSibling){var br=bo.parentNode.cloneNode(false);while(bo.nextSibling){var bn=bo.nextSibling;Q(2,bn);Q(1,bn,br)}Q(1,br,bo.parentNode.parentNode,l(bo.parentNode)+1)}bo=bo.parentNode}bk=bo.nextSibling;R(bp,bp,true,function(bs){if(bs==bi){bm=true}return !bm});return false}return !bm})}}function bf(bl,bp,bj,bi){bl=j(bl,bj);bp=j(bp,bj);var bq=bl,bm=null;while(bq){var bo=bq,bn=false;while(bo){if(aL(bo)){bn=true;break}bo=bo.firstChild}if(bn){if(bm){bk(bm,bq);bm=null}}else{if(!bm){if(!(bq.nodeType==3&&!aH(bq))){bm=bq}}}bq=bq==bp?null:bq.nextSibling}if(bm){bk(bm,null)}function bk(bv,bs){var bt=bi.cloneNode(false),br=bv;Q(1,bt,bj,l(bv));while(br!=bs){var bu=br.nextSibling;Q(2,br);Q(1,br,bt);br=bu}}}}(function(){var bs,be,a4=460,bm,a3,bq,bn,a8,bp,bh,bk=aZ("img,table,input,select,button,textarea,object"),bg=aZ("img,table,input,select,button,textarea,object,br");L("Cursor",function(){bq=N("span");bn=document.createTextNode("");bq.appendChild(bn);a8=document.createTextNode("");be=N("div");am(be,ax+" sw-cursor");H.appendChild(be);var bv="";var bu=aD(be,"background-color");if(!bu||bu=="transparent"||bu=="auto"||bu=="rgba(0, 0, 0, 0)"){bv="background-color:black;"}bu=aD(be,"z-index");if(!bu||bu=="0"||bu=="auto"){}bv+="z-index:100";ao(be,"position:absolute; width:2px;visibility:hidden;"+bv);A(window,"resize",ba);A(document,"keystroke",bo);h(de.cursor);de.UndoMan.addObserver({onAfterExec:a5,onAfterUndo:a5,onAfterRedo:a5})},"UndoMan");de.cursor={PlacementFlag:{INSIDE:1,BEFORE:2,AFTER:4},setCursorColor:function(bu){be.style.backgroundColor=bu},doesNodeSupportCursor:function(bu){return !de.doc.isProtectedNode(bu)&&de.doc.isNodeEditable(bu)},setCursor:function(bu){if(bu&&!this.doesNodeSupportCursor(bu.domNode)){bu=null}bs=bu;a2(false);if(bs){be.style.left=(bs.docLeft+(bs.isRightOf?bs.width:0))+"px";be.style.top=bs.docTop+"px";be.style.height=bs.height+"px";a2(true)}a3=null;this.fireEvent("CursorChanged",this.getCurrentCursorDesc());return bs!=null},getCursorDescAtXY:a9,getCurrentCursorDesc:function(){return bs?o(bs):null},refreshCursor:function(){if(!bs){return}if(bp){return}bc(bs);be.style.left=(bs.docLeft+(bs.isRightOf?bs.width:0))+"px";be.style.top=bs.docTop+"px";be.style.height=bs.height+"px"},scrollToCursor:a5,exists:function(){return bs!=null},isCursorEle:function(bu){return bu==be},getNonCursorNodeAtXY:function(bu,bx){var bv=be.style.display;be.style.display="none";var bw=ai(bu,bx);be.style.display=bv;return bw},getNextCursorMovement:br,isOnSameLine:a6,createCursorDesc:function(bw,bu,by){var bv=bf(bw);if(bv==0||(bv!=1&&((by&&!(bv&4))||(!by&&!(bv&2))))){return null}var bx={domNode:bw,relIndex:bu,isRightOf:by,placement:bv};bc(bx);if(bv==1&&(bx.width==0||bx.height==0)){return null}return bx},getPlacementFlags:bf,getNearestCursorDesc:function(bv,bu,bA,bx){if(X(bv)=="br"){bA=true}var bw=de.cursor.createCursorDesc(bv,bu,bA);if(bw&&X(bv)=="br"){var by=br(bw,true),bz=br(bw,false);if((!by||!a6(by,bw))&&(!bz||!a6(bz,bw))){return bw}return(bx?by:bz)||bw}return bw||br({domNode:bv,isRightOf:bA,relIndex:bu,y:f(bv).y},bx)}};function bo(bA,bC){if(!bs||bA.ctrlKey||bA.metaKey||bA.altKey){return}var bE=false;switch(bC){case"Left":case"Right":bE=true;var bD=br(bs,bC=="Left");if(!bD){bD=bs}var bz=bs;if(!de.cursor.setCursor(bD)&&bz){de.cursor.setCursor(bz)}break;case"Up":case"Down":bE=true;var bB=bC=="Up";var bx=aR();var bu=a3?a3:(bs.docLeft-bx.left)+(bs.isRightOf?bs.width:0);var bv=by();var bw;if(bv){bw=bi(bu,bs.docTop-bx.top,bv,bs,bB);a7()}if(!bw){bw=bs}var bz=bs;if(!de.cursor.setCursor(bw)&&bz){de.cursor.setCursor(bz)}a3=bu;break}if(bE){a5();return false}return true;function by(){var bH=[];var bL=[];var bJ;R(H,bs.domNode,!bB,function(bP){bK(bP);var bO=bf(bP);if(bO==0){return true}var bQ,bN;if(bP.nodeType==3){bQ=f(bP.parentNode);bN=bP.parentNode.offsetHeight}else{if(X(bP)=="br"){bQ=bd(bP);bN=bQ.height}else{bQ=f(bP);bN=bP.offsetHeight}}if(!a6(bJ?bJ:bs,{y:bQ.y,height:bN})){if(bJ){return false}bJ={y:bQ.y,height:bN}}if(bO==1){bH.push({domNode:bP,placement:1})}else{if(bO&2){if(bB){bL.push(bP)}else{bH.push({domNode:bP,placement:2})}}if(bO&4){if(bB){bH.push({domNode:bP,placement:4})}else{bL.push(bP)}}}});if(!bJ){return null}bK(null);if(bB){bH.reverse()}var bM=0;for(var bG in bH){var bI=bH[bG];var bF=ah(bI.domNode,1);bI.startIndex=bM;bI.endIndex=bI.startIndex+(bF-1);bI.length=bF;bM+=bF}return{nodes:bH,totalLength:bM};function bK(bN){while(bL.length>0){if(!bN||!aK(bL[bL.length-1],bN)){bH.push({domNode:bL.pop(),placement:bB?2:4})}else{break}}}}}function ba(bu){de.cursor.refreshCursor()}function bj(bu){be.style.visibility=bu?"visible":"hidden"}function bl(){return be.style.visibility=="visible"}function a2(bu){if(typeof bu!="undefined"){a2.on=bu}if(a2.on){bj(!bl());bm=setTimeout(a2,a4,1)}else{if(bm){clearTimeout(bm);bm=null;bj(false)}}}function a5(){if(!bs){return}var bv=_getViewPortSize(),bx=0,bu=0;if((bs.y+bs.height)>=bv.height){bu=(bs.y+bs.height)-bv.height}else{if(bs.y<0){bu=bs.y}}var bw=bs.x+(bs.isRightOf?bs.width:0)+parseInt(be.style.width);if(bw>=bv.width){bx=bw-bv.width}else{if(bs.x<0){bx=bs.x}}if(bx||bu){window.scrollBy(bx,bu)}}function bf(bx){var bw=de.doc.getPackageContainer(bx);if(bw){var bv=0;if(bw==bx){bv=2|4}return bv}if(de.doc.isESPlaceHolder(bx,false)){return(de.doc.isESPlaceHolder(bx,true))?2:0}if(de.doc.isMNPlaceHolder(bx,false)){return(de.doc.isMNPlaceHolder(bx,true))?2:0}if(bx.nodeType==3){if(aH(bx)){return 1}return 0}var bu=0;if(de.cursor.usrGetPlacementFlags){bu=de.cursor.usrGetPlacementFlags(bx);if(bu===J){bu=0}else{return bu}}if(bk[X(bx)]){bu=2}if(bg[X(bx)]){bu|=4}return bu}function bb(bw,bv,bu){if(a6(bw,bv)){return bw.adx<bv.adx}else{if(bw.ady==bv.ady){return Math.abs((bw.y+(bw.height/2))-bu)<Math.abs((bv.y+(bv.height/2))-bu)}}return bw.ady<bv.ady}function a1(by,bw,bu,bz){if(a6(by,bw)){return Math.abs(by.x-bu)<Math.abs(bw.x-bu)}var bx=Math.min(Math.abs(by.y-bz),Math.abs((by.y+by.height)-bz));var bv=Math.min(Math.abs(bw.y-bz),Math.abs((bw.y+bw.height)-bz));if(bx==bv){return Math.abs((by.y+(by.height/2))-bz)<Math.abs((bw.y+(bw.height/2))-bz)}return bx<bv}function a6(bv,bu){return(bv.y>=bu.y&&bv.y<(bu.y+bu.height))||(bu.y>=bv.y&&bu.y<(bv.y+bv.height))}function a7(){if(bp){bp.parentNode.removeChild(bq);bp.parentNode.removeChild(a8);bp.nodeValue=bh;bp=null}}function bt(bu){if(bp==bu){return}if(bp){a7()}bp=bu;bh=bu.nodeValue;bu.parentNode.insertBefore(bq,bu);bu.parentNode.insertBefore(a8,bq)}function a0(bu){a8.nodeValue=bh.substr(0,bu);bn.nodeValue=bh.charAt(bu);bp.nodeValue=bh.substr(bu+1);return bq.offsetHeight!=0&&bq.offsetWidth!=0}function bd(bv){a7();bp={};bn.nodeValue=B;aV(bq,bv);var bu=f(bq);bu.height=bq.offsetHeight;bq.parentNode.removeChild(bq);bp=null;return bu}function bc(bw){if(!bw){return}if(X(bw.domNode)=="br"){var bv=bd(bw.domNode);bw.x=bv.x;bw.y=bv.y;bw.height=bv.height;bw.width=0}else{var bx;if(bw.placement==1){bt(bw.domNode);a0(bw.relIndex);bx=bq}else{bx=bw.domNode}var by=f(bx);bw.x=by.x;bw.y=by.y;bw.width=bx.offsetWidth;bw.height=bx.offsetHeight}var bu=aR();bw.docLeft=bu.left+bw.x;bw.docTop=bu.top+bw.y;a7()}function br(bD,bx){var bu=bD.domNode,bG=bD.relIndex,bI=bD.isRightOf,bz,bB,bw,bv=bf(bD.domNode),bA,bC,bF=false,bH;if(bv==1){if(bD.isRightOf==bx){var by=de.cursor.createCursorDesc(bD.domNode,bD.relIndex,!bD.isRightOf);if(by){return by}}}else{if(bD.isRightOf&&bv!=1){if(bx){while(bu.lastChild){bu=bu.lastChild}if(bu!=bD.domNode){bG=ah(bu,2)-1;bI=true}}}}R(H,bu,!bx,function(bN){var bL=bN==bu;if(!ab(bN)||de.doc.isProtectedNode(bN)){bA=bN;return true}if(!bF&&!bL){bF=aL(bN)}bv=bf(bN);if(bA){var bS=w(bN,bA,true);var bP=aO(bx?bN:bA,bS,false);if(bx){bP.reverse();if((bv&4)&&!aK(bN,bA)&&X(bN)!="br"){bP.push(bN)}}else{if(!aK(bA,bN)&&X(bA)!="br"&&!de.doc.isProtectedNode(bA)&&!(bA==bu&&bI)){bP.push(bA)}}for(var bO in bP){var bK=bP[bO];if(bf(bK)&4){if(bE(bK)){return false}bz=bK;bB=1;bw=true;return false}bF|=aL(bK)}}if(bv==0){if(!de.doc.isNodePackaged(bN)){var bM=0;if(aA(bN)){bM=1}else{if(aF(bN)){bM=2}}if(bM){de.UndoMan.execute(de.UndoMan.hasUndo()?1:0,"InsertHTML",aG(bM==1?de.doc.createESPlaceholder(bN):de.doc.createMNPlaceholder()),bN,bN.firstChild,0);if(!bE(bN.firstChild)){bz=bN.firstChild;bB=0;bw=false}return false}}}else{if(bv==1){bt(bN);var bR=bL?bG:(bx?ah(bN)-1:0),bQ;if(bL){bQ=bI}else{if(bH){if(bF){bH=null;bQ=bx}else{bQ=bH.isRightOf}}else{bQ=bx}}for(;(bx&&bR>=0)||(!bx&&bR<bh.length);bR+=bx?-1:1){if(!a0(bR)){if(bL){bQ=!bQ}bL=false;continue}var bJ=f(bq);bJ.height=bq.offsetHeight;if(bE(bq,bJ)){return false}if(bH){if(!a6(bJ,bH)){bz=bN;bB=bR;bw=!bQ;return false}}if(!bL||bu!=bD.domNode){bz=bN;bB=bR;bw=bQ;return false}bt(bN);bL=false;bH={domNode:bN,isRightOf:bQ,y:bJ.y,height:bJ.height};if(de.doc.isMNPlaceHolder(bN)||de.doc.isESPlaceHolder(bN)){prevDesc.isRightOf=false;break}}a7()}else{if(bv&2){if(!bL||(bx&&bN==bu&&bI)){if(!bE(bN)){bz=bN;bw=false;bB=0}return false}}else{if(X(bN)=="br"){if(!bL){if(bE(bN)){return false}if(bx){bC=bN;if(bE(bA,bH&&bH.domNode==bA?bH:null)){return false}}else{bC=bN}}}}}}bA=bN;if(!bx&&bL&&bD.isRightOf&&bv!=1){return 1}});a7();return bz?de.cursor.createCursorDesc(bz,bB,bw):null;function bE(bL,bJ){if(bC){var bK=bd(bC),bJ=bJ||(X(bL)=="br"?bd(bL):{y:f(bL).y,height:bL.offsetHeight});if(!a6(bK,bJ)){bz=bC;bB=1;bw=true;return true}bC=null}return false}}function a9(bw,bu,by){if(!by){by=ai(bw,bu)}if(by==be){be.style.display="none";by=ai(bw,bu);be.style.display=""}if(!by){return null}var bx=bz();var bv=bi(bw,bu,bx);a7();return bv;function bz(){var bB=[],bD=0,bA=aN();(function bC(bI){var bF=bf(bI),bH,bE;if(bI.nodeType==1){bH=bI}else{if(bI.nodeType==3&&bF!=0){bt(bI);a8.nodeValue="";bn.nodeValue=bh;bp.nodeValue="";bH=bq}}if(bH){bE=X(bH)=="br"?bd(bH):f(bH);if((bE.y+bH.offsetHeight)<=0){a7();return true}if(bE.y>bA.height){a7();return false}a7()}if(bF==1){bB.push({domNode:bI,startIndex:bD,endIndex:bD+ah(bI)-1,length:ah(bI),placement:1});bD+=ah(bI)}else{if(bF&2){bB.push({domNode:bI,startIndex:bD,endIndex:bD+1,length:1,placement:2,posInWnd:bE});bD++}}var bJ=bI.firstChild;var bG=true;while(bJ){if(!bC(bJ)){bG=false;break}bJ=bJ.nextSibling}if(bF&4){bB.push({domNode:bI,startIndex:bD,endIndex:bD+1,length:1,placement:4,posInWnd:bE});bD++}return bG})(by);return{nodes:bB,totalLength:bD}}}function bi(bJ,bH,bC,bz,bE){var bw={};if(bC.totalLength==0){return null}var bx=bD(0,0,2);if(!bx){return null}var bO=bD(bC.nodes.length-1,bC.nodes[bC.nodes.length-1].length-1,1);if(bx.domNode==bO.domNode&&bx.absIndex==bO.absIndex){return bF(bx)}var bK=[bx,bO];var by=null;by=bb(bx,bO,bH)?bx:bO;var bP,bQ;for(var bv=1;bv<=2;bv++){if(bv==1){if(bz){bA(bx,bu(bx.absIndex),bO,bu(bO.absIndex));bL();bH=by.y+(by.height/2);by.ady=Math.abs(by.y-bH);continue}else{if(!bG()){continue}}}else{var bR=bB();if(typeof bR=="boolean"){if(!bR){break}}else{break}}while(true){if(bQ.absIndex==(bP.absIndex-1)){break}var bM=bQ.absIndex+Math.floor((bP.absIndex-bQ.absIndex)/2);if(bM==bQ.absIndex){bM++}else{if(bM==bP.absIndex){bM--}}var bI=bu(bM);var bN=bD(bI,bM-bC.nodes[bI].startIndex,0);if(!bN){break}if(bv==1){bK.push(bN)}if(bb(bN,by,bH)){by=bN}if(bv==1){if(bH>=bN.y&&bH<=(bN.y+bN.height)){break}else{if(bN.y>bH){bP=bN}else{bQ=bN}}}else{if(a6(bN,by)){if(bJ>=bN.x&&bJ<=(bN.x+bN.width)){break}else{if(bN.x>bJ){bP=bN}else{bQ=bN}}}else{if(bN.y>bH){bP=bN}else{bQ=bN}}}}}return bF(by);function bu(bU){var bT=bC.nodes;if(bT.length==1){return 0}if(bU>=bT[0].startIndex&&bU<=bT[0].endIndex){return 0}if(bU>=bT[bT.length-1].startIndex&&bU<=bT[bT.length-1].endIndex){return bT.length-1}var bV=0;var bS=bT.length-1;var bX;while(true){var bW=bV+Math.floor((bS-bV)/2);if(bW==bV){bW++}else{if(bW==bS){bW--}}if(bU>=bT[bW].startIndex&&bU<=bT[bW].endIndex){bX=bW;break}else{if(bU<bT[bW].startIndex){bS=bW}else{bV=bW}}}return bX}function bD(b1,b5,bZ){var bT=bC.nodes,bY=bZ==0||bZ==1,b0=b5,bV=b1,bW=null,bX;do{if(!bY&&bZ==0){b1=bV;b5=b0+1;if(b5>bT[b1].endIndex){b1++;b5=0}}var bS=false;while(b1>=0&&b1<bT.length){bX=bT[b1];if(ab(bX.domNode)){if(bX.placement==1){bt(bX.domNode);while(b5>=0&&b5<bh.length){if(bZ==0&&((bQ.domNode==bX.domNode&&bQ.relIndex==b5)||(bP.domNode==bX.domNode&&bP.relIndex==b5))){bS=true;break}if(bw["_"+b1+"_"+b5]){b5+=(bY?-1:1);continue}if(!a0(b5)){bw["_"+b1+"_"+b5]=true;b5+=(bY?-1:1);continue}bW=bq;break}}else{if(bZ==0&&((bQ.domNode==bX.domNode&&bQ.placement==bX.placement)||(bP.domNode==bX.domNode&&bP.placement==bX.placement))){bS=true;break}bW=bX.domNode;break}}if(bW||bS){break}b1+=(bY?-1:1);b5=(bY&&b1>=0&&b1<bT.length)?(bT[b1].placement==1?bT[b1].length-1:1):0}if(bW){break}}while(bZ==0&&!(bY=!bY));if(!bW){return null}var b4,bU,b6;if(bX.posInWnd){b4=bX.posInWnd}if(X(bW)=="br"){b4=b4||bd(bW);b6=b4.height;bU=0}else{b4=b4||f(bW);bU=bW.offsetWidth;b6=bW.offsetHeight}var b7=Math.abs(b4.x-bJ),b3=Math.abs(b4.x+bU-bJ),b2;switch(bX.placement){case 2:b2=false;break;case 4:b2=true;break;default:b2=b3<b7}return{domNode:bX.domNode,relIndex:b5,absIndex:bX.startIndex+b5,placement:bX.placement,isRightOf:b2,x:b4.x,y:b4.y,adx:b2?b3:b7,ady:Math.min(Math.abs(b4.y-bH),Math.abs(b4.y+bW.offsetHeight-bH)),width:bU,height:b6}}function bG(){if(!((bH>=bx.y&&bH<=(bx.y+bx.height))||(bH>=bO.y&&bH<=(bO.y+bO.height)))&&bH>=bx.y&&bH<=(bO.y+bO.height)){bQ=bx;bP=bO;return true}return false}function bB(){if(bJ>=by.x&&bJ<(by.x+by.width)){return false}else{if(by.x>bJ){bP=by;bQ=null;for(i in bK){bN=bK[i];if(bN==by){continue}var bT;if(a6(bN,by)){bT=bN.x<by.x}else{bT=bN.y<by.y}if(bT&&(!bQ||a1(bN,bQ,by.x,by.y))&&bN.absIndex<bP.absIndex){bQ=bN}}if(!bQ){return by}}else{bQ=by;bP=null;var bU=false;for(i in bK){bN=bK[i];var bS;if(a6(bN,by)){bS=bN.x>by.x}else{bS=bN.y>by.y}if(bS&&(!bP||a1(bN,bP,(by.x+by.width),by.y))&&bN.absIndex>bQ.absIndex){bP=bN}}if(!bP){return by}}}return true}function bL(){by=bE?bx:bO;for(var bS in bK){var bT=bK[bS];if(a6(bT,bz)||(bE&&bT.y>bz.y)||(!bE&&bT.y<bz.y)){continue}if(bb(bT,by,bH)){by=bT}}}function bA(bX,bZ,bU,bW){var b0=[[bX,bZ,bU,bW]];while(b0.length>0){var bY=b0.pop();bX=bY[0];bZ=bY[1];bU=bY[2];bW=bY[3];var bS=bZ;while(bS<bC.nodes.length&&X(bC.nodes[bS].domNode)=="table"){bS++}if(bS==bC.nodes.length){continue}if(bS!=bZ){bX=bD(bS,0,2);bZ=bS;bK.push(bX)}bS=bW;while(bS>=0&&X(bC.nodes[bS].domNode)=="table"){bS--}if(bS==-1){continue}if(bS!=bW){bU=bD(bS,bC.nodes[bS].length-1,1);bW=bS;bK.push(bU)}if(bX.absIndex>=(bU.absIndex-1)||a6(bU,bX)){continue}var bV=bX.absIndex+Math.floor((bU.absIndex-bX.absIndex)/2);if(bV==bX.absIndex){bV++}else{if(bV==bU.absIndex){bV--}}var bT=bu(bV);bQ=bX;bP=bU;var b1=bD(bT,bV-bC.nodes[bT].startIndex,0);if(!b1){continue}bK.push(b1);b0.push([bX,bZ,b1,bT]);b0.push([b1,bT,bU,bW])}}function bF(bV){if(!bV){return null}if(X(bV.domNode)=="br"){var bU=br(bV,true);if(bU&&a6(bV,bU)){bV=bU;bV.isRightOf=true}else{var bT=br(bV,false);if(bT&&a6(bV,bT)){bV=bT;bV.isRightOf=false}}}else{if(de.doc.isMNPlaceHolder(bV.domNode)){bV.isRightOf=false}}bV.placement=bf(bV.domNode);var bS=aR();bV.docLeft=bS.left+bV.x;bV.docTop=bS.top+bV.y;return bV}}})();var ax="sw-protect",af="editable",V="sw-packaged";function aF(a0){if(v(a0)){return !ac(a0)}return false}function aA(a0){if(de.doc.isEditSection(a0)){return !ac(a0)}return false}function ac(a0){var a1=false;R(a0,a0,true,function(a4){if(a4==a0||de.doc.isProtectedNode(a4)){return}var a3=de.cursor.getPlacementFlags(a4);if(a3==1){if(aH(a4)&&ah(a4)>0){if(M(a4.nodeValue)){var a5=N("span"),a2=document.createTextNode(a4.nodeValue);a5.appendChild(a2);a4.nodeValue="";a4.parentNode.appendChild(a5);a1=a5.offsetHeight!=0&&a5.offsetWidth!=0;a4.parentNode.removeChild(a5);a4.nodeValue=a2.nodeValue}else{a1=true}}}else{if(a3){a1=true}}return !a1});return a1}var v=function(){var a0=aZ("li,dd,dt,p,td,th,h1,h2,h3,h4,h5,h6,pre,div");return function(a1){return a0[X(a1)]||a1==H}}();(function(){L("Doc",function(){h(de.doc);var a8=de.doc.getAllEditSections();c=false;for(var a7 in a8){m(a8[a7],true)}c=true;de.doc.addObserver({onSectionAdded:function(a9){c=false;m(a9,false);c=true}})});var a4={},a3="sw-mn-ph",a1="sw-es-ph",a5=new RegExp("^"+af+".*$"),a2=new RegExp("^"+af+"-?(.+)$"),a0=new RegExp("^"+ax+"$"),a6=new RegExp("^"+V+"$");de.doc={getEditSectionContainer:function(a7){return j(a7,null,this.isEditSection,true)},isEditSection:function(a7){if(a7&&a7.nodeType==1){return T(a7,a5)}return false},getAllEditSections:function(){var a7=[];R(H,H,true,function(a8){if(de.doc.isEditSection(a8)){a7.push(a8)}});return a7},isNodeEditable:function(a7){var a8=this.getEditSectionContainer(a7);return a8!=null&&a8!=a7},getProtectedNodeContainer:function(a7){return j(a7,null,function(a8){return a8.nodeType==1&&T(a8,a0)},true)},isProtectedNode:function(a7){return this.getProtectedNodeContainer(a7)!=null},getPackageContainer:function(a7){return j(a7,null,function(a8){return a8.nodeType==1&&T(a8,a6)},true)},isNodePackaged:function(a7){return this.getPackageContainer(a7)!=null},declarePropertySet:function(a8,be){be=o(be);if(typeof be.actionFilter=="string"){var a7=be.actionFilter;if(a7.charAt(0)!="!"){be.afInclusive=true;if(a7){a7+=","}a7+="inserthtml,inserttext,removedom,removetext"}else{a7=a7.substr(1);be.afInclusive=false}var bg=a7.toLowerCase().split(",");var bd="(";for(var bb in bg){bd+=((bb=="0")?"":"|");var a9=bg[bb];var bc=/^format\((.+)\)$/.exec(a9);if(bc){var bf=bc[1].split(",");for(var ba in bf){bd+=((ba=="0")?"":"|")+"format"+bf[ba]}}else{bd+=a9;if(a9.indexOf("format")==0){bd+=".+"}}}bd+=")";be.afRE=new RegExp("^"+bd+"$")}a4[a8]=be},declarePropertySets:function(a8){for(var a7 in a8){this.declarePropertySet(a7,a8[a7])}},getEditProperties:function(a8){if(!this.isEditSection(a8)){a8=this.getEditSectionContainer(a8)}if(a8){var a7=T(a8,a5);if(a7){var a9=a2.exec(a7);return a9?a4[a9[1]]||{}:{}}return{}}return null},createMNPlaceholder:function(){var a7=N("span");am(a7,a3);a7.innerHTML=" ";return a7},isMNPlaceHolder:function(a8,a7){switch(a8.nodeType){case 1:return au(a8)==a3;case 3:return !a7&&a8.parentNode&&au(a8.parentNode)==a3}return false},createESPlaceholder:function(a7){var a8=this.getEditProperties(a7).phMarkup||" ";var a9=N("span");am(a9,a1);a9.innerHTML=a8;return a9},isESPlaceHolder:function(a9,a7){while(a9){if(a9.nodeType==1){var a8=au(a9);if(a8==a1){return true}}if(a7){break}a9=a9.parentNode}return false},registerEditSection:function(a7,a9){var a8=au(a7);am(a7,(a8?a8+" ":"")+af+(a9?"-"+a9:""));if(!ac(a7)){a7.appendChild(this.createESPlaceholder(a7))}this.fireEvent("SectionAdded",a7)},unregisterEditSection:function(a7){var a8=au(a7);if(a8){am(a7,a8.replace(new RegExp("^|s"+af+"S*$","g"),""))}this.fireEvent("SectionRemoved",a7)}}})();var an={"1":"Bad arguments"};function aj(a0){throw new Error(typeof a0=="number"?an[a0]:a0)}function A(a3,a0,a2){if(a3.setInterval&&a3!=window){a3=window}switch(a0){case"keystroke":a1(a3,"keydown",function(a5){var a4=de.events.Keyboard.getKeyIdentifier(a5,true);if(a4){return a2(a5,a4)}});a1(a3,"keypress",function(a5){var a4=de.events.Keyboard.getKeyIdentifier(a5,false);if(a4){return a2(a5,a4)}});break;case"mousedown":a1(a3,a0,function(a4){return de.events.Mouse.sniffMouseDownEvent(a4)?a2(a4):true});break;case"mouseup":a1(a3,a0,function(a4){return de.events.Mouse.sniffMouseUpEvent(a4)?a2(a4):true});break;case"mousemove":a1(a3,a0,function(a4){return de.events.Mouse.sniffMouseMoveEvent(a4)?a2(a4):true});break;default:a1(a3,a0,a2)}function a1(a6,a4,a5){if(!a2.evWrappers){a2.evWrappers={}}if(!a2.evWrappers[a4]){a2.evWrappers[a4]=[]}a2.evWrappers[a4].push([a6,a7]);if(a6.addEventListener){a6.addEventListener(a4,a7,false)}else{if(a6.attachEvent){a6.attachEvent("on"+a4,a7)}}function a7(a8){a8=a8||window.event;if(a5(a8)===false){return de.events.consume(a8)}}}}function ad(a4,a1,a3){if(a1=="keystroke"){ad(a4,"keydown",a3);ad(a4,"keypress",a3);return}if(a3.evWrappers&&a3.evWrappers[a1]){for(var a2 in a3.evWrappers[a1]){var a0=a3.evWrappers[a1][a2];if(a0[0]==a4){if(a3.evWrappers[a1].length==1){delete a3.evWrappers[a1]}else{a3.evWrappers[a1].splice(a2,1)}a3=a0[1];break}}}if(a4.removeEventListener){a4.removeEventListener(a1,a3,false)}else{if(a4.detachEvent){a4.detachEvent("on"+a1,a3)}}}D(de.events,{addHandler:A,removeHandler:ad,getXYInWindowFromEvent:function(a2){var a1=0,a0=0;if(a2.clientX||a2.clientX===0){a1=a2.clientX;a0=a2.clientY}else{if(a2.pageX!=null){var a3=aR();a1=a2.pageX-a3.left;a0=a2.pageY-a3.top}}return{x:a1,y:a0}},getEventTarget:function(a0){return a0.target||a0.srcElement||document},consume:function(a0){de.events.stopPropogation(a0);de.events.preventDefault(a0);return false},stopPropogation:function(a0){if(p==2){a0.cancelBubble=true}else{if(a0.stopPropagation){a0.stopPropagation()}}},preventDefault:function(a0){if(p==2){a0.returnValue=false}else{if(a0.preventDefault){a0.preventDefault()}}}});(function(){var a4="1",a2="2",a3,a0=false,a1={};L("events.Mouse",function(){if(E==3){a3={"1":a4,"2":a2}}else{a3={"0":a4,"2":a2}}a1[a4]=a1[a2]=false});de.events.Mouse={sniffMouseDownEvent:function(a7){var a6=a3[a7.button];if(a6){if(W==2&&a6==a4&&a7.ctrlKey){a6=RIGHT_CLICK}a1[a6]=true}if(a5(a7)){a0=this.isLeftDown();return false}return true},sniffMouseUpEvent:function(a7){var a6=a3[a7.button];if(a6){if(W==2&&a6==a4){this.clearDownStates()}else{a1[a6]=false}}a0=this.isLeftDown();return !a5(a7)},sniffMouseMoveEvent:function(a6){return !(this.isLeftDown()&&a0)},isLeftDown:function(){return a1[a4]},isRightDown:function(){return a1[a2]},clearDownStates:function(){a1[a4]=false;a1[a2]=false}};function a5(a8){var a7=de.events.getEventTarget(a8);if(a7==window||a7==document||a7==document.documentElement){if(p==5){return}var a9=de.events.getXYInWindowFromEvent(a8),a6=_getViewPortSize();if(a9.x>=a6.width){return 1}return a9.y>=a6.height}}})();var q={};function at(a0,a1,a2){a0=a0.toLowerCase();q[a0+"Eval"]=a1;q[a0+"Wrapper"]=a2}(function(){function a0(a1,a2){var a3=N("span");aJ(a3,a1,a2);return a3}(function(a1){for(var a2 in a1){at(a2,a1[a2][0],a1[a2][1])}})({bold:[function(a4){var a3=[];if(X(a4)=="b"||X(a4)=="strong"){a3.push({type:1})}var a2=a4.style.fontWeight;if(a2){var a1=a2=="bold";if(!a1){a2=parseInt(a2);a1=(!isNaN(a2)&&a2>=700)}if(a1){a3.push({type:3,match:"fontWeight"})}}return a3.length>0?{strip:a3,inline:N("strong"),value:true}:null},function(){return N("strong")}],italics:[function(a2){var a1=[];if(X(a2)=="i"||X(a2)=="em"){a1.push({type:1})}if(a2.style.fontStyle=="italic"){a1.push({type:3,match:"fontStyle"})}return a1.length>0?{strip:a1,inline:N("em"),value:true}:null},function(){return N("em")}],underline:[function(a2){var a1=[];if(X(a2)=="u"){a1.push({type:1})}if(a2.style.textDecoration=="underline"){a1.push({type:3,match:"textDecoration"})}return a1.length>0?{strip:a1,inline:a0("textDecoration","underline"),value:true}:null},function(){return a0("textDecoration","underline")}],strike:[function(a2){var a1=[];if(X(a2)=="strike"){a1.push({type:1})}if(a2.style.textDecoration=="line-through"){a1.push({type:3,match:"textDecoration"})}return a1.length>0?{strip:a1,inline:a0("textDecoration","line-through"),value:true}:null},function(){return a0("textDecoration","line-through")}],color:[function(a1){if(a1.style.color&&a1.style.color.length>0){return{strip:[{type:3,match:"color"}],inline:a0("color",a1.style.color),value:a1.style.color}}},function(a1){return a0("color",a1)}],backcolor:[function(a1){if(a1.style.backgroundColor&&a1.style.backgroundColor.length>0){return{strip:[{type:3,match:"backgroundColor"}],inline:a0("backgroundColor",a1.style.backgroundColor),value:a1.style.backgroundColor}}},function(a1){return a0("backgroundColor",a1)}],fontsize:[function(a1){if(X(a1)=="small"||X(a1)=="big"){var a2=X(a1)=="small"?"smaller":"larger";return{strip:[{type:1}],inline:a0("fontSize",a2),value:a2}}if(a1.style.fontSize&&a1.style.fontSize.length>0){return{strip:[{type:3,match:"fontSize"}],inline:a0("fontSize",a1.style.fontSize),value:a1.style.fontSize}}},function(a1){return a0("fontSize",a1)}],fontfamily:[function(a1){if(a1.style.fontFamily&&a1.style.fontFamily.length>0){return{strip:[{type:3,match:"fontFamily"}],inline:a0("fontFamily",a1.style.fontFamily),value:a1.style.fontFamily}}},function(a1){return a0("fontFamily",a1)}],link:[function(a1){if(X(a1)=="a"){return{strip:[{type:1}],inline:a1.cloneNode(false),value:{url:a1.href,title:a1.title}}}},function(a1){var a2=N("a");a2.href=a1.url;a2.title=a1.title;return a2}]})})();var az=function(){var a1=function(a3,a2){this.node=a3;this.pos=a2;this.children=[];this.isShared=false;this.parent=null};a1.prototype={visit:function(a3){if(a3(this)===false){return false}for(var a2 in this.children){if(!this.children[a2].visit(a3)){return false}}return true},disconnect:function(){this.visit(function(a2){if(!a2.isShared){a0(a2,false)}})},collapse:function(){var a8=w(this.getStartFragment().node,this.getEndFragment().node,false);var bb=this;while(bb.node!=a8){bb=bb.children[0]}this.disconnect();var bl=false,bi=this,a6=false;a9();var ba=a2(bb,true,a3(this.getStartFragment(),a8));for(var bg in ba){if(ba[bg].migrantRoots.length>0){var a4=ba[bg].migrationPoint.node;var bj=ba[bg].migrationPoint.children[0].pos;if(bk(ba[bg].migrationPoint.children[0].node)){bj++}for(var be=0;be<ba[bg].migrantRoots.length;be++){Q(1,ba[bg].migrantRoots[be],a4,bj+be)}var bf=false;if(v(a4)){R(a4,a4,true,function(bm){if(bm==a4){return}if(!(de.doc.isMNPlaceHolder(bm,false)&&(bm.nodeType==3?bm.parentNode.parentNode==a4:bm.parentNode==a4))&&de.cursor.getPlacementFlags(bm)){bf=true;return false}})}var bc=false;for(var bd=0;bd<a4.childNodes.length;bd++){var bh=a4.childNodes[bd];if(de.doc.isMNPlaceHolder(bh,true)||de.doc.isESPlaceHolder(bh,true)){if(bc||!v(a4)||bf){Q(2,bh)}bc=true}}}}return ba.length>0&&ba[0].migrantRoots.length>0?ba[0].migrantRoots[0]:null;function a2(bn,bs,bz){var bB={migrationPoint:bz,migrantRoots:[]};var by=[bB];for(var bw=bs?bn.getEndFragment():bn.getStartFragment();bw!=(bs?bn:bn.parent);bw=bw.parent){var bp,bq;if(bs){a6=false;for(var bv=bw.parent;bv!=bn;bv=bv.parent){if(bv.isShared&&a5(bv.node)){a6=true;break}}}if(!bs||bw.isShared){bp=bw.node;bq=bp.nextSibling;if(a5(bp)){bl=true;if(bs){a0(bw,true)}}if(!bs||a7(bp)){if(bp.firstChild){bp=bp.cloneNode(false)}else{Q(2,bp)}while(bB.migrationPoint!=bb&&!n(bp,bB.migrationPoint.node)){bB.migrationPoint=a3(bB.migrationPoint)}for(var bt=0;bt<by.length;bt++){for(var br in by[bt].migrantRoots){Q(1,by[bt].migrantRoots[br],bp)}by[bt].migrantRoots=[bp];if(bt<(by.length-1)){bp=bp.cloneNode(false)}}}else{if(!a5(bp)){bl=true;if(!bp.firstChild){a0(bw,true)}}}}else{if(!bw.parent.isShared){continue}var bx=bi;while(bx.children.length>0&&bx!=bw.parent){bx=bx.children[0]}if(bx==bw.parent){bq=null;if(!bx.insertedPH){if(bk(bx.children[0].node)){bq=bx.node.childNodes.length>(bx.children[0].pos+1)?bx.node.childNodes[bx.children[0].pos+1]:null}else{bq=bx.node.childNodes.length>bx.children[0].pos?bx.node.childNodes[bx.children[0].pos]:null}}}else{bq=bw.parent.node.firstChild}}if(bs&&!a7(bw.parent.node)&&!a5(bw.parent.node)){bl=true}else{if(!bs&&bw==bn){continue}}var bA=bw.getIndexInParent();if(bs){bw.parent.migrantIndex=0}while(bq&&(a6||!bl)){bp=bq;bq=bp.nextSibling;bA++;var bm;if(bs){var bo;if(bw.parent.migrants&&bw.parent.migrants.length>bw.parent.migrantIndex){bo=bw.parent.migrants[bw.parent.migrantIndex]}else{bo=aa(bp.parentNode,bp,0,bp,ah(bp,1));if(!bw.parent.migrants){bw.parent.migrants=[]}bw.parent.migrants.push(bo)}bw.parent.migrantIndex++;bm=a2(bo.children[0],false,by[by.length-1].migrationPoint)}else{bm=a2(bw.parent.children[bA],false,by[by.length-1].migrationPoint)}for(var bt in bm){if(bm[bt].migrantRoots.length==0){continue}var bu=false;for(var br in by){if(by[br].migrationPoint==bm[bt].migrationPoint){by[br].migrantRoots=by[br].migrantRoots.concat(bm[bt].migrantRoots);bu=true;break}}if(!bu){by.push(bm[bt])}}bB=by[by.length-1]}}return by}function a3(bm){do{bm=bm.parent}while(bm!=bb&&!(bk(bm.node)&&a5(bm.node)));return bm}function a5(bm){return S(bm)||X(bm)=="li"}function a7(bm){return bm.nodeType==3||ae(bm)}function bk(bm){return aK(H,bm)}function a9(){for(var bn=bi.getStartFragment();bn!=null;bn=bn.parent?bn.parent:null){var bm=bn.node;if(v(bm)||de.doc.isEditSection(bm)){if(bn.isShared){var bq=0;if(aA(bm)){bq=1}else{if(aF(bm)){bq=2}}if(bq){var bp=bq==1?de.doc.createESPlaceholder(bm):de.doc.createMNPlaceholder();Q(1,bp,bm);bn.insertedPH=1}}else{while(bm.firstChild){Q(2,bm.firstChild)}Q(1,de.doc.createMNPlaceholder(),bm);bn.insertedPH=1;while(!bn.isShared){if(bn.parent.isShared){Q(1,bn.node,bn.parent.node,bn.pos)}else{var bo=bn.parent.node;while(bo.firstChild){Q(2,bo.firstChild)}Q(1,bn.node,bo)}if(!bn.parent){break}bn=bn.parent}}break}}}},getStartFragment:function(){var a2=this;while(a2.children.length>0){a2=a2.children[0]}return a2},getEndFragment:function(){var a2=this;while(a2.children.length>0){a2=a2.children[a2.children.length-1]}return a2},getIndexInParent:function(){if(!this.parent){return null}var a2=0;while(this!=this.parent.children[a2]){a2++}return a2},wasStartSplit:function(){return this.getStartFragment().preSplitNode?true:false},wasEndSplit:function(){return this.getEndFragment().postSplitNode?true:false},getPreSplitNode:function(){var a2=this.getStartFragment();return a2.preSplitNode?a2.preSplitNode:null},getPostSplitNode:function(){var a2=this.getEndFragment();return a2.postSplitNode?a2.postSplitNode:null},getAdjustedNodeIndex:function(a4,a2){if(a4.nodeType==3&&a2>=ah(a4)){var a5=this.getStartFragment(),a3=this.getEndFragment();if(a5.wasStartSplit()){var a6=a5.getPreSplitNode();if(a4==a6){a2-=ah(a6);a4=a5.node}}if(a3.wasEndSplit()&&a4==a3.node&&a2>=ah(a4)){a2-=ah(a3.node);a4=a3.getPostSplitNode()}}return{node:a4,index:a2}},getOriginalNodeIndex:function(a4,a2){if(a4.nodeType==3){var a5=this.getStartFragment(),a3=this.getEndFragment();if(a4==a3.getPostSplitNode()){a2+=ah(a3.node);a4=a3.node}if(a5.wasStartSplit()&&a4==a5.node){var a6=a5.getPreSplitNode();a2+=ah(a6);a4=a6}}return{node:a4,index:a2}}};function a0(a2,a3){if(a3||(a2.parent&&a2.parent.isShared)){Q(2,a2.node)}}return a1}();function aa(bc,a0,bb,a8,a6){if(!bc){bc=w(a0,a8)}var a7=false;while(a0.firstChild){a0=bb==0?a0.firstChild:a0.lastChild;a7=true}if(a7&&bb>0){bb=ah(a0,1)}a7=false;while(a8.firstChild){a8=a6==0?a8.firstChild:a8.lastChild;a7=true}if(a7&&a6>0){a6=ah(a8,1)}if(de.doc.isMNPlaceHolder(a0)||de.doc.isESPlaceHolder(a0)){bb=0}if(de.doc.isMNPlaceHolder(a8)||de.doc.isESPlaceHolder(a8)){a6=ah(a8,1)}var a3=[];R(bc,a0,true,function(bf){a3.push(bf);return bf!=a8});var be=aO(a0,bc,false,true);be.reverse();a3=be.concat(a3);var a5;for(var a2 in a3){var a1=a3[a2],bd=0,a4=0;if((a1==a0||a1==a8)&&a1.nodeType==3){if(a1==a0&&bb>0&&bb<ah(a1)){bd=a1;a1=Q(3,a1,bb);if(a8==a0){a8=a1;a6-=ah(a0)}a0=a1}if(a1==a8&&a6>0&&a6<ah(a1)){a4=Q(3,a1,a6)}}var a9=new az(a1,l(a1));if(!a5){a5=a9}else{a9.parent=null;a5.visit(function(bf){if(bf.node==a9.node.parentNode){a9.parent=bf}return a9.parent==null});a9.parent.children.push(a9)}a9.isShared=!(bd||a4)&&((a1==a0&&bb==ah(a1,1))||(a1==a8&&a6==0));if(bd){a9.preSplitNode=bd}if(a4){a9.postSplitNode=a4}}ba(a5);return a5;function ba(bi){var bf=false;for(var bg in bi.children){var bh=bi.children[bg];ba(bh);bf|=bh.isShared}bi.isShared|=(bf||bi==a5||bi.node.childNodes.length!=bi.children.length)}}de.buildFragment=aa;var aY={},aB,c=true;function P(a3,a1,a0,a2){if(!a3){a3=P.genOp+1;do{a3++}while(aY[a3]);P.genOp=a3}aY[a3]={exec:a1,undo:a0,redo:a2};return a3}P.genOp=100;function Q(a3){var a1=aY[a3];var a2=Array.prototype.slice.call(arguments);a2.shift();a2.unshift({opCode:a3});var a0=a1.exec.apply(a1,a2);if(c){if(!aB){aB=[]}aB.push(a2[0])}return a0}function aP(){var a0=aB;aB=null;return a0}function u(a3){for(var a1=a3.length-1;a1>=0;a1--){var a2=a3[a1];var a0=aY[a2.opCode];a0.undo(a2)}}function aW(a3){for(var a1 in a3){var a2=a3[a1];var a0=aY[a2.opCode];a0.redo(a2)}}de.recordOperations=function(a0){c=a0};P(1,function(a3,a1,a2,a0){a3.newNode=a1;a3.parent=a2;if(a0||a0===0){a3.pos=a0}this.redo(a3)},function(a0){a0.parent.removeChild(a0.newNode)},function(a0){if(a0.pos||a0.pos===0){aX(a0.parent,a0.newNode,a0.pos)}else{a0.parent.appendChild(a0.newNode)}});P(2,function(a0,a1){a0.parent=a1.parentNode;a0.pos=l(a1);a0.target=a1;this.redo(a0)},function(a0){aX(a0.parent,a0.target,a0.pos)},function(a0){a0.parent.removeChild(a0.target)});P(3,function(a1,a2,a0){a1.target=a2;a1.index=a0;a1.rem=a2.splitText(a0);return a1.rem},function(a0){a0.target.nodeValue+=a0.rem.nodeValue;a0.rem.parentNode.removeChild(a0.rem);a0.rem.nodeValue=""},function(a1){var a0=a1.target.nodeValue;a1.rem.nodeValue=a0.substr(a1.index);a1.target.nodeValue=a0.substr(0,a1.index);aV(a1.rem,a1.target)});P(4,function(a2,a4,a5,a0){a2.target=a4;a2.index=a0;a2.len=a5.length;var a3=a4.nodeValue.substr(0,a0),a1=a4.nodeValue.substr(a0);a4.nodeValue=a3+a5+a1},function(a1){a1.text=a1.target.nodeValue.substr(a1.index,a1.len);var a2=a1.target.nodeValue.substr(0,a1.index),a0=a1.target.nodeValue.substr(a1.index+a1.len);a1.target.nodeValue=a2+a0;delete a1.len},function(a1){a1.len=a1.text.length;var a2=a1.target.nodeValue.substr(0,a1.index),a0=a1.target.nodeValue.substr(a1.index);a1.target.nodeValue=a2+a1.text+a0;delete a1.text});P(5,function(a3,a5,a0,a2){a3.target=a5;a3.index=a0;a3.text=a5.nodeValue.substr(a0,a2);var a4=a5.nodeValue.substr(0,a0),a1=a5.nodeValue.substr(a0+a2);a5.nodeValue=a4+a1},aY[4].redo,aY[4].undo);P(6,function(a2,a3,a0,a1){a2.target=a3;a2.css=a0;a2.newValue=a1;a2.oldValue=p==2?a2.target.style.getAttribute(a2.css):a2.target.style[a2.css];this.redo(a2)},function(a0){if(p==2){a0.target.style.setAttribute(a0.css,a0.oldValue)}else{a0.target.style[a0.css]=a0.oldValue}},function(a0){if(p==2){a0.target.style.setAttribute(a0.css,a0.newValue)}else{a0.target.style[a0.css]=a0.newValue}});P(7,function(a1,a2,a0){a1.target=a2;a1.newName=a0;a1.oldName=au(a2);this.redo(a1)},function(a0){am(a0.target,a0.oldName)},function(a0){am(a0.target,a0.newName)});P(9,function(a1,a2,a0){a1.row=a2;a1.index=a0>a2.cells.length?a2.cells.length:a0;if(a1.index<0){a1.index=0}return this.redo(a1)},function(a0){a0.row.deleteCell(a0.index)},function(a0){return a0.row.insertCell(a0.index)});P(8,function(a2,a1,a0){a2.table=a1;a2.index=a0>a1.rows.length?a1.rows.length:a0;if(a2.index<0){a2.index=0}return this.redo(a2)},function(a0){a0.table.deleteRow(a0.index)},function(a0){return a0.table.insertRow(a0.index)});P(10,function(a2,a1,a0){a2.table=a1;a2.index=a0>=a1.rows.length?a1.rows.length-1:a0;if(a2.index<0){a2.index=0}this.redo(a2)},function(a1){var a0=a1.table.insertRow(a1.index);while(a1.row.firstChild){var a2=a1.row.firstChild;a1.row.removeChild(a2);a0.appendChild(a2)}delete a1.row},function(a0){a0.row=a0.table.rows[a0.index];a0.table.deleteRow(a0.index)});P(11,function(a1,a2,a0){a1.row=a2;a1.index=a0>=a2.cells.length?a2.cells.length-1:a0;if(a1.index<0){a1.index=0}this.redo(a1)},function(a0){var a2=a0.row.insertCell(a0.index);while(a0.cell.firstChild){var a1=a0.cell.firstChild;a0.cell.removeChild(a1);a2.appendChild(a1)}delete a0.cell},function(a0){a0.cell=a0.row.cells[a0.index];a0.row.deleteCell(a0.index)});(function(){var a1={specialToCharCode:{8:"Backspace",9:"Tab",13:"Enter",27:"Escape",32:"Space"},keyCodeToId:{16:"Shift",17:"Control",18:"Alt",20:"CapsLock",224:"Meta",37:"Left",38:"Up",39:"Right",40:"Down",33:"PageUp",34:"PageDown",35:"End",36:"Home",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",44:"PrintScreen",145:"Scroll",19:"Pause",91:"Win",93:"Apps"},numpadToCharCode:{96:"0".charCodeAt(0),97:"1".charCodeAt(0),98:"2".charCodeAt(0),99:"3".charCodeAt(0),100:"4".charCodeAt(0),101:"5".charCodeAt(0),102:"6".charCodeAt(0),103:"7".charCodeAt(0),104:"8".charCodeAt(0),105:"9".charCodeAt(0),106:"*".charCodeAt(0),107:"+".charCodeAt(0),109:"-".charCodeAt(0),110:".".charCodeAt(0),111:"/".charCodeAt(0)},charCodeA:"A".charCodeAt(0),charCodeZ:"Z".charCodeAt(0),charCodea:"a".charCodeAt(0),charCodez:"z".charCodeAt(0),charCode0:"0".charCodeAt(0),charCode9:"9".charCodeAt(0),keyCodeFix:{},charCodeToKeyCode:{},ambiguousKeyPressCodes:{}};a1.idToKeyCode={};for(var a2 in a1.keyCodeToId){a1.idToKeyCode[a1.keyCodeToId[a2]]=parseInt(a2,10)}for(var a2 in a1.specialToCharCode){a1.idToKeyCode[a1.specialToCharCode[a2]]=parseInt(a2,10)}switch(p){case 2:a1.charCodeToKeyCode={13:13,27:27};break;case 1:a1.keyCodeFix={12:a3("NumLock")};break;case 3:if(d.engineVersion&&d.engineVersion<525.13){a1.charCodeToKeyCode={63289:a3("NumLock"),63276:a3("PageUp"),63277:a3("PageDown"),63275:a3("End"),63273:a3("Home"),63234:a3("Left"),63232:a3("Up"),63235:a3("Right"),63233:a3("Down"),63272:a3("Delete"),63302:a3("Insert"),63236:a3("F1"),63237:a3("F2"),63238:a3("F3"),63239:a3("F4"),63240:a3("F5"),63241:a3("F6"),63242:a3("F7"),63243:a3("F8"),63244:a3("F9"),63245:a3("F10"),63246:a3("F11"),63247:a3("F12"),63248:a3("PrintScreen"),3:a3("Enter"),12:a3("NumLock"),13:a3("Enter")}}else{a1.charCodeToKeyCode={13:13,27:27}}break;case 5:a1.ambiguousKeyPressCodes={35:51,36:52,44:188,45:109,46:190,91:219,93:221};a1.prestoSimulateInvOnShift={51:1,52:1};a1.prestoUseWhichCodes={33:1,34:1,40:1,39:1,38:1,37:1,123:1};break}a1.ambiguousKeyPressCodesInv={};for(var a2 in a1.ambiguousKeyPressCodes){a1.ambiguousKeyPressCodesInv[a1.ambiguousKeyPressCodes[a2]]=parseInt(a2,10)}de.events.Keyboard={getKeyIdentifier:function(bc,ba){var bg,bf,a8=false;switch(p){case 2:if(ba&&(a0(bc.keyCode)||bc.keyCode==8||bc.keyCode==9)){bg=bc.keyCode}if((!ba&&!bc.ctrlKey)||(ba&&bc.ctrlKey)){if(a1.charCodeToKeyCode[bc.keyCode]){bg=a1.charCodeToKeyCode[bc.keyCode]}else{bf=bc.keyCode}}break;case 1:if(ba){if(bc.keyCode>=16&&bc.keyCode<=18){bg=bc.keyCode}}else{bg=a1.keyCodeFix[bc.keyCode]||bc.keyCode;bf=bc.charCode}break;case 3:if(E==6){if(ba){if(K&&K<525.13){bg=a1.charCodeToKeyCode[bc.charCode]||bc.keyCode}else{bg=bc.keyCode}if(!a0(bg)&&!this.isAcceleratorDown(bc)){bg=0}}else{if(K&&K<525.13){if(a1.charCodeToKeyCode[bc.charCode]){bg=a1.charCodeToKeyCode[bc.charCode]}else{bf=bc.charCode}}else{if(a1.charCodeToKeyCode[bc.keyCode]){bg=a1.charCodeToKeyCode[bc.keyCode]}else{bf=bc.keyCode}}}}else{if(E==4){if(ba){if(a0(bc.keyCode)){bg=bc.keyCode}else{if(this.isAcceleratorDown(bc)){bf=bc.keyCode}}}else{if(bc.charCode&&!this.isAcceleratorDown(bc)){bf=bc.charCode}}}else{a8=true}}break;case 5:if(ba){if(a1.ambiguousKeyPressCodesInv[bc.keyCode]){var bd=a1.prestoSimulateInvOnShift[bc.keyCode];if((bc.shiftKey&&bd)||(!bc.shiftKey&&!bd)){bf=a1.ambiguousKeyPressCodesInv[bc.keyCode]}}else{if(a1.ambiguousKeyPressCodes[bc.keyCode]){bg=bc.keyCode}}}else{if(bc.which&&(a7(bc.which)||a1.prestoUseWhichCodes[bc.which])){bf=bc.which}else{if(a1.keyCodeToId[bc.keyCode]){bg=bc.keyCode}else{bf=bc.keyCode}}}break;case 4:a8=true;break;default:a8=true}if(a8&&ba){if(bc.keyIdentifier&&bc.keyIdentifier.length>0){var a9=/^U\+([\dA-Fa-f]+)$/.exec(bc.keyIdentifier);if(a9){var bb=parseInt(a9[1],16);var be=String.fromCharCode(bb);if(bc.shiftKey){return be.toUpperCase()}else{return be.toLowerCase()}}else{return bc.keyIdentifier}}else{bg=bc.keyCode||bc.which;bf=bc.charCode}}if(bg){if(!ba&&a1.ambiguousKeyPressCodes[bg]){return null}return a4(bg)}else{if(bf){return a6(bf)}}return null},isAcceleratorDown:function(a8){return W==2?a8.metaKey:a8.ctrlKey}};function a0(a8){return typeof a1.keyCodeToId[a8]=="string"||typeof a1.specialToCharCode[a8]=="string"}function a5(a8){return a7(a8)||a1.specialToCharCode[a8]||a1.numpadToCharCode[a8]||a0(a8)}function a7(a8){return(a8>=a1.charCodeA&&a8<=a1.charCodeZ)||(a8>=a1.charCodea&&a8<=a1.charCodez)||(a8>=a1.charCode0&&a8<=a1.charCode9)}function a6(a8){return a1.specialToCharCode[a8]||String.fromCharCode(a8)}function a4(a9){if(a5(a9)){var a8=a1.numpadToCharCode[a9];if(a8){return String.fromCharCode(a8)}return(a1.keyCodeToId[a9]||a1.specialToCharCode[a9]||String.fromCharCode(a9))}else{return null}}function a3(a8){return a1.idToKeyCode[a8]||a8.charCodeAt(0)}})();var ak;(function(){var bb=null,bg=null,a4=null,bq=null,bn=null,bl=null,a2=null,ba={high:"#3B4B5B",low:"#DFFFFF"},a9=false,bk=false,br=3,bf=aZ("button,input,select,textarea"),bm=aZ("br,button,img,iframe,map,object,select,textarea,applet"),a1=/^\W$/,bc,a0,a6;L("Selection",function(){h(de.selection);if(typeof H.onselectstart!="undefined"){H.onselectstart=function(){return de.events.consume(window.event)}}var bs=p==1?window:document;A(bs,"mousedown",a8);A(bs,"mouseup",a3);A(bs,"mousemove",be);A(bs,"dblclick",bp);A(document,"keydown",function(bu){if(de.events.Keyboard.isAcceleratorDown(bu)){if(bu.keyCode==65){return false}}});de.cursor.addObserver({onCursorChanged:function(bv){if(a9){return}if(bv){var bu=bd(bv.domNode,bh(bv));de.selection.setSelection(bu.node,bu.index,null,null,false)}else{de.selection.clear()}}});function bt(){de.selection.clear()}de.UndoMan.addObserver({onBeforeExec:bt,onBeforeUndo:bt,onBeforeRedo:bt});bc=N("div");am(bc,ax);bc.innerHTML='<input type="text" style="border-style:none">';ao(bc,"position:absolute;width:1px;height:1px;display:none;z-index:-500");a0=bc.firstChild;H.appendChild(bc)},"Cursor","UndoMan");function a8(bv){a6=0;var bu=de.events.getEventTarget(bv);var by=X(bu);if(bu&&bf[by]){if(by=="textarea"||(by=="input"&&bu.type=="text")){de.selection.clear();de.cursor.setCursor(null)}return}if(de.events.Mouse.isLeftDown()){if(de.doc.isProtectedNode(bu)){a6=1;return}var bs=de.events.getXYInWindowFromEvent(bv),bx=de.cursor.getCursorDescAtXY(bs.x,bs.y,bu);if(!bx){de.cursor.setCursor(null);return false}if(bv.shiftKey&&bb){a9=true;de.cursor.setCursor(bx);a9=false;var bt=bd(bx.domNode,bh(bx));a5(bb,bg,bt.node,bt.index,false)}else{de.cursor.setCursor(bx);if(!de.cursor.exists()&&!de.doc.isProtectedNode(bx.domNode)){var bt=bd(bx.domNode,bh(bx));a5(bt.node,bt.index,null,null,false)}}var bw=aR();bc.style.left=(bw.left==0?-50:bw.left+10)+"px";bc.style.top=(bw.top==0?-50:bw.top+10)+"px";bc.style.display="";a0.focus();a0.select();bc.style.display="none";return false}}function be(bw){if(de.events.Mouse.isLeftDown()&&bb&&!a6){bk=true;var bs=de.events.getXYInWindowFromEvent(bw),bv=de.cursor.getCurrentCursorDesc();if(bv&&bs.x>=(bv.x-br)&&bs.x<=(bv.x+bv.width+br)&&bs.y>=(bv.y-br)&&bs.y<=(bv.y+bv.height+br)){var bt=0;if(Math.abs(bs.x-bv.x)<Math.abs(bs.x-(bv.x+bv.width))){if(bv.isRightOf){bv.isRightOf=false;a9=true;de.cursor.setCursor(bv);a9=false;bt=1}}else{if(!bv.isRightOf){bv.isRightOf=true;a9=true;de.cursor.setCursor(bv);a9=false;bt=1}}if(bt){var bu=bd(bv.domNode,bh(bv));a5(bb,bg,bu.node,bu.index,false)}}else{bv=de.cursor.getCursorDescAtXY(bs.x,bs.y,de.events.getEventTarget(bw));if(bv&&!de.doc.isProtectedNode(bv.domNode)){var bu=bd(bv.domNode,bh(bv));a5(bb,bg,bu.node,bu.index)}}}}function a3(bs){if(bb&&bk){de.selection.fireEvent("SelectionChanged")}bk=false}function bp(bv){if(!de.doc.isProtectedNode(de.events.getEventTarget(bv))){de.selection.clear();var bs=de.events.getXYInWindowFromEvent(bv);var bu=de.cursor.getCursorDescAtXY(bs.x,bs.y,de.events.getEventTarget(bv));if(bu){var bt=de.selection.getWordRangeAt(bu.domNode,bu.relIndex);if(bt){a5(bt.startNode,bt.startIndex,bt.endNode,bt.endIndex)}}}return false}function bd(bt,bs){if(bn){return bn.getOriginalNodeIndex(bt,bs)}return{node:bt,index:bs}}function bi(bt,bs){if(bn){return bn.getAdjustedNodeIndex(bt,bs)}return{node:bt,index:bs}}ak=function(bs){if(bs&&bn){aW(a2)}else{if(!bs&&bn){u(a2)}}};function a7(){var bs=de.selection.getRange(true);try{var bu=de.cursor.getCurrentCursorDesc();bn=aa(w(bs.startNode,bs.endNode),bs.startNode,bs.startIndex,bs.endNode,bs.endIndex);bl=aP()||[];bn.visit(function(by){if(!by.isShared){var bx=by.node,bw=null;if(bx.nodeType==1){bw=bx}else{if(bx.nodeType==3&&by.parent.isShared&&aH(bx)){bw=N("span");bw.className="dehighlight-node";Q(1,bw,bx.parentNode,l(bx));Q(2,bx);Q(1,bx,bw)}}if(bw){Q(6,bw,"backgroundColor",ba.high);Q(6,bw,"color",ba.low)}}});a2=aP()||[];if(bu){var bt=bi(bu.domNode,bu.relIndex);if(bt.node!=bu.domNode||bt.index!=bu.relIndex){bu.domNode=bt.node;bu.relIndex=bt.index;a9=true;de.cursor.setCursor(bu);a9=false}}}catch(bv){settingHighlight=false;bb=a4=bn=null;a2=null;throw bv}}function bj(){if(bn){var bt=de.cursor.getCurrentCursorDesc();var bs=bt?bd(bt.domNode,bt.relIndex):null;u(a2);u(bl);a2=bl=bn=null;if(bs&&(bs.node!=bt.domNode||bs.index!=bt.relIndex)){bt.domNode=bs.node;bt.relIndex=bs.index;a9=true;de.cursor.setCursor(bt);a9=false}}}function a5(bt,bE,bB,by,bv){if(!bt){de.selection.clear(bv);return}if(bt==bB&&bE==by){bB=null}if(bt==bb&&bE==bg&&((!bB&&!a4)||(bB==a4&&by==bq))){return}bj();bb=bt;bg=bE;a4=bB;bq=by;if(a4){var bA=bo(),bz;while(bb){bz=de.doc.getProtectedNodeContainer(bb);if(bz){bb=(bA?bz.nextSibling:bz.previousSibling);if(bb){bg=bA?0:ah(bb,1)}}else{break}}while(a4){bz=de.doc.getProtectedNodeContainer(a4);if(bz){a4=(bA?bz.previousSibling:bz.nextSibling);if(a4){bq=bA?ah(a4,1):0}}else{break}}var bF=bb&&a4;if(bF){bF=false;var bw=[];R(w(bb,a4),bb,bA,function(bG){bz=de.doc.getProtectedNodeContainer(bG);if(bz){bw.push(bz)}if(bG==a4){bF=true;return false}})}if(!bF){de.selection.clear(bv);return}for(var bx in bw){var bD=bw[bx];if(bD.parentNode){bD.parentNode.removeChild(bD)}}for(var bx in bw){var bD=bw[bx];if(!bD.parentNode){H.appendChild(bD)}}a7()}if(bv!==false){var bs=null;if(de.selection.isRangeEditable()){var bu=a4?bi(a4,bq):bi(bb,bg);var bC=false;if(bu.node.nodeType==3&&bu.index>=ah(bu.node)){bC=true;bu.index--}bs=de.cursor.getNearestCursorDesc(bu.node,bu.index,bC,true)}a9=true;de.cursor.setCursor(bs);a9=false}if(!bk){de.selection.fireEvent("SelectionChanged")}}function bh(bt){var bs=bt.relIndex;if(bt.isRightOf&&bt.domNode.nodeType==3){bs++}return bs}function bo(){if(!a4){return true}if(bb==a4){return bg<bq}var bu=bi(bb,bg).node,bt=bi(a4,bq).node;var bs=false;R(H,bu,true,function(bv){bs=(bv==bt);return !bs});return bs}de.selection={setSelection:a5,clear:function(bs){bj();bb=a4=null;if(bs!==false){a9=true;de.cursor.setCursor(null);a9=false}if(!bk){de.selection.fireEvent("SelectionChanged")}},getRange:function(bu){if(!bb){return null}if(a4){var bs=bo();var bt=!bu||bs;range={inOrder:bu||(bs==bt),startNode:bt?bb:a4,startIndex:bt?bg:bq,endNode:bt?a4:bb,endIndex:bt?bq:bg}}else{range={startNode:bb,startIndex:bg}}return range},isRangeEditable:function(){if(bb){var bu=bi(bb,bg).node;var bt=a4?bi(a4,bq).node:bu;var bs=w(bu,bt,true);return(bu!=bt&&de.doc.isEditSection(bs))||de.doc.isNodeEditable(bs)}return false},getState:function(){if(bn){return"range"}if(bb){return"single"}return null},getActualNodeIndex:bi,getVirtualNodeIndex:bd,setHightlightCSS:function(){},remove:function(){var bs=this.getRange(true);if(bs&&bs.endNode){if(!this.isRangeEditable()){aj("Attempt to remove selection which contains uneditable content")}de.UndoMan.execute("RemoveDOM",bs.startNode,bs.startIndex,bs.endNode,bs.endIndex);return true}return false},getHighlightedDOM:function(){if(bn){u(a2);var bt=(function bs(bx){var bv=bx.node.cloneNode(false);for(var bu in bx.children){var bw=bs(bx.children[bu]);bv.appendChild(bw)}return bv})(bn);aW(a2);return bt}return null},selectAll:function(bs){if(!bs){var bt=de.cursor.getCurrentCursorDesc();if(bt){bs=de.doc.getEditSectionContainer(bt.domNode)}}if(bs){de.selection.setSelection(bs.firstChild,0,bs.lastChild,ah(bs.lastChild,1))}},selectES:function(bs,bv){var bu=bs;if(bv){while(bu.firstChild){bu=bu.firstChild}}else{while(bu.lastChild){bu=bu.lastChild}}var bt=de.cursor.getNearestCursorDesc(bu,bv?0:ah(bu,1),!bv,!bv);if(bt){de.cursor.setCursor(bt)}},getWordRangeAt:function(bw,bu){if(bw.nodeType==3){var bt={startNode:bw,startIndex:bu,endNode:bw,endIndex:bu};var bs=de.doc.isNodeEditable(bw);R(H,bw,false,function(by){if(by!=bw&&j(by,w(by,bw,true),bv,true)){return false}else{if(by.nodeType==3){for(var bx=by==bw?bu:ah(by)-1;bx>=0;bx--){var bz=by.nodeValue.charAt(bx);if(a1.test(bz)){return false}bt.startNode=by;bt.startIndex=bx}}}});R(H,bw,true,function(by){if(by!=bw&&(bv(by)||j(bw,w(by,bw,true),bv,true))){return false}if(by.nodeType==3){for(var bx=by==bw?bu:0;bx<ah(by);bx++){var bz=by.nodeValue.charAt(bx);if(a1.test(bz)){return false}bt.endNode=by;bt.endIndex=bx}}});bt.endIndex++;return bt}function bv(bx){return aL(bx)||bm[X(bx)]||(bs&&de.doc.isEditSection(bx))}},getEditState:function(bw){var bu={formatStates:{},inlineContainerType:null,textAlign:null,blockQuote:false};if(bn){u(a2);(function bv(bx){bs(bx.node)})(bn);aW(a2)}if(bb&&(bb.nodeType==3||ae(bb))){bs(bb.nodeType==3?bb.parentNode:bb)}return bu;function bt(bx){return X(bx)=="blockquote"}function bs(by){if(ae(by)){var bC=de.doc.getEditProperties(by)||{};for(var bB in bw){var bx=bw[bB].toLowerCase();if(!bu.formatStates[bx]||bu.formatStates[bx]!="mixed"){var bD=by,bz=false;while(bD!=H&&de.doc.isNodeEditable(bD)){var bE=q[bx+"Eval"](bD);if(bE){if(typeof bu.formatStates[bx]=="undefined"){bu.formatStates[bx]=bE.value}else{if(bu.formatStates[bx]!==bE.value){bu.formatStates[bx]="mixed"}}bz=true;break}bD=bD.parentNode}if(!bz){bu.formatStates[bx]=(bu.formatStates[bx]===null||typeof bu.formatStates[bx]=="undefined")?null:"mixed"}}}}if(by.nodeType==1){if(bu.textAlign!="mixed"){var bF=aD(by,"text-align");if(!bF){bF="start"}if(bF=="start"){bF=_localeDirection=="rtl"?"right":"left"}else{if(bF=="start"){bF=_localeDirection=="rtl"?"left":"right"}}if(!bu.textAlign){bu.textAlign=bF}else{if(bF!=bu.textAlign){bu.textAlign="mixed"}}}if(bu.inlineContainerType!="mixed"){var bG=aL(by)?by:j(by,H,aL,true);if(!de.doc.isNodeEditable(bG)){bG=null}var bA=bG?X(bG):"none";if(!bu.inlineContainerType){bu.inlineContainerType=bA}else{if(bA!=bu.inlineContainerType){bu.inlineContainerType="mixed"}}}if(!bu.blockQuote){var bH=bt(by)?by:j(by,H,bt,true);if(de.doc.isNodeEditable(bH)){bu.blockQuote=true}}}}}}})();L("Spell",function(){A(p==1?window:document,"mouseup",function(){var a1=de.selection.getRange();if(a1&&!a1.endNode){var a0=de.spell.getMarkedAncestor(a1.startNode);if(a0){de.selection.setSelection({startNode:a0,startIndex:0,endNode:a0,endIndex:1})}}})},"Selection");(function(){var a2="sw-spell-error",a1=/^sw-spell-error$/;de.spell={getWords:function(a3){if(!a3){a3=de.doc.getAllEditSections()}var a6=[],a4={};for(var a5 in a3){a0(a3[a5],function(a7){if(!a4[a7]){a6.push(a7);a4[a7]=1}})}return a6},markWords:function(a6,a3){if(!a3){a3=de.doc.getAllEditSections()}a6=aZ(typeof a6=="string"?a6.replace(/\s/g,","):a6.join(","));var a5=0;for(var a4 in a3){a0(a3[a4],function(ba,a8,bb,a7,a9){if(a6[ba]){var bc=de.UndoMan.execute(a5?1:0,"SpellMark",a8,bb,a7,a9+1);a5=1;return bc.children[bc.children.length-1].node}})}},clearAllMarks:function(a3){if(!a3){a3=de.doc.getAllEditSections()}var a5=[],a4;for(a4 in a3){R(a3[a4],a3[a4],true,function(a6){if(de.spell.isSpellErrorWrapper(a6)){a5.push(a6)}})}for(a4 in a5){de.UndoMan.execute(a4=="0"?0:1,"SpellUnmark",a5[a4])}return a5.length},ignoreError:function(a4,a3){de.UndoMan.execute(a3?a3:0,"SpellUnmark",a4)},correctError:function(a4,a3){de.UndoMan.execute("SpellCorrect",a4,a3)},getMarkedAncestor:function(a3){return this.isSpellErrorWrapper(a3)?a3:j(a3,this.isSpellErrorWrapper)},isSpellErrorWrapper:function(a3){return T(a3,a1)?true:false},stripSpellWrapperHTML:function(a3){var a4=/<span class\s*=\s*(?:"|')sw-spell-error(?:"|')\s*>([^<]+)<\/span>/i;while(match=a4.exec(a3)){a3=a3.substr(0,match.index)+match[1]+a3.substr(match.index+match[0].length)}return a3}};function a0(a6,bc){var a5=/^\W$/,ba=a6,a4,bb,a9,a7,a3;while(ba){R(a6,ba,true,function(be){if(ba==be){ba=0}else{if(be.nodeType==3&&be.parentNode.nodeType==1){if(a9&&be.previousSibling!=a9){if(a8()){return false}}var bf=be.nodeValue,bd;for(bd=0;bd<bf.length;bd++){var bg=bf.charAt(bd);if(a5.test(bg)){if(a8()){return false}}else{if(!a4){a4=be;bb=bd;a3=""}a3+=bg;a9=be;a7=bd}}}}})}a8();function a8(){if(a4&&a9&&!de.doc.isProtectedNode(a4)&&!de.doc.isNodePackaged(a4)){ba=bc(a3,a4,bb,a9,a7);a4=a9=0;return ba}a4=a9=0}}aI("SpellMark",{exec:function(a4,a8,a3,a6){var ba=aa(null,a4,a8,a3,a6),a9=N("span");am(a9,a2);Q(1,a9,ba.node,ba.children[0].pos);for(var a5=0;a5<ba.children.length;a5++){var a7=ba.children[a5].node;Q(2,a7);Q(1,a7,a9)}return ba}});aI("SpellUnmark",{exec:function(a3){while(a3.firstChild){var a4=a3.firstChild;Q(2,a4);Q(1,a4,a3.parentNode,l(a3))}Q(2,a3)}});aI("SpellCorrect",{exec:function(a4,a3){Q(1,document.createTextNode(a3),a4.parentNode,l(a4));Q(2,a4)}})})();de.Typing={};(function(){L("Typing",function(){A(document,"keystroke",a1);h(de.Typing)},"MVC");function a1(bb,bg){var a2={cancel:false};de.Typing.fireEvent("Typing",a2,bb,bg);if(a2.cancel){return}if(de.events.Keyboard.isAcceleratorDown(bb)){switch(bg.toLowerCase()){case"z":de.UndoMan.undo();return false;case"y":de.UndoMan.redo();return false}}if(!de.selection.isRangeEditable()||!de.cursor.exists()){return}var bi=de.doc.getEditSectionContainer(de.cursor.getCurrentCursorDesc().domNode);if(de.events.Keyboard.isAcceleratorDown(bb)){switch(bg.toLowerCase()){case"b":a0("bold");return false;case "s": save_live_doc_html(); return false; case "l": revert_to_orig_doc(); return false; case"i":a0("italics");return false;case"u":a0("underline");return false;case"a":de.selection.selectAll(bi);return false}}else{if(!bb.ctrlKey&&!bb.metaKey&&!bb.altKey){var a4=bg;if(a4){if(a4.length>1){switch(a4){case"Space":a4=" ";break;case"Tab":if(aL(bi)||bi==H){de.UndoMan.execute("Indent",!bb.shiftKey)}return false;case"Delete":case"Backspace":if(de.selection.remove()){return false}else{var a7=de.cursor.getCurrentCursorDesc(),bd,a5;if(a4=="Backspace"){if(a7.isRightOf&&(a7.placement==(4|2))){bd=o(a7);bd.isRightOf=false}else{bd=de.cursor.getNextCursorMovement(a7,true)}a5=a7}else{bd=a7;if(!a7.isRightOf&&(a7.placement==(4|2))){a5=o(a7);a5.isRightOf=true}else{a5=de.cursor.getNextCursorMovement(a7,false)}}if(bd&&a5){var bf=de.doc.isNodeEditable(a5.domNode);if(bf&&a5.domNode!=bd.domNode){bf&=de.doc.isNodeEditable(bd.domNode)}if(bf){var a3;if(bd.domNode.nodeType==3){a3=bd.relIndex;if(bd.isRightOf){a3++}}else{if(X(bd.domNode)=="br"){var ba=0;I(w(bd.domNode,a5.domNode),bd.domNode,true,null,function(bj){if(X(bj)=="br"){ba++}return bj!=a5.domNode});a3=ba>1?1:0}else{a3=bd.isRightOf?1:0}}var bc;if(a5.domNode.nodeType==3){bc=a5.relIndex;if(a5.isRightOf){bc++}}else{if(X(a5.domNode)=="br"){var ba=0;I(w(bd.domNode,a5.domNode),bd.domNode,true,null,function(bj){if(X(bj)=="br"&&!(bj==bd.domNode&&a3==1)){ba++}return bj!=a5.domNode});bc=ba>1?0:1}else{bc=a5.isRightOf?1:0}}var a8=de.selection.getVirtualNodeIndex(bd.domNode,a3),be=de.selection.getVirtualNodeIndex(a5.domNode,bc);if(a8.node==be.node&&a8.node.nodeType==3){de.UndoMan.execute("RemoveText",a8.node,a8.index,be.index-a8.index)}else{var a6=w(a8.node,be.node,true);if(de.doc.isEditSection(a6)||de.doc.isNodeEditable(a6)){de.UndoMan.execute("RemoveDOM",a8.node,a8.index,be.node,be.index)}}}}return false}case"Enter":de.selection.remove();var a7=de.cursor.getCurrentCursorDesc();var a9=a7.relIndex;if(a7.domNode.nodeType==3){a9+=(a7.isRightOf?1:0)}else{a9=a7.isRightOf?1:0}if(!de.doc.getEditProperties(bi).singleLine){if(bb.shiftKey){var bh="<br>";if(!(a7.domNode.nodeType==3&&a9<ah(a7.domNode))){bh+=aG(de.doc.createMNPlaceholder())}de.UndoMan.execute("InsertHTML",bh,a7.domNode.parentNode,a7.domNode,a9)}else{if(aL(bi)||bi==H){de.UndoMan.execute("SplitContainer",a7.domNode,a9)}}}return false;default:return true}}de.selection.remove();var a7=de.cursor.getCurrentCursorDesc();var a9=a7.relIndex;if(a7.domNode.nodeType==3&&a7.isRightOf){a9++}else{if(a7.domNode.nodeType==1){a9=a7.isRightOf?1:0}}de.UndoMan.execute("InsertText",a7.domNode,a4,a9);return false}}}}function a0(a2){return de.UndoMan.execute("Format",a2,!de.selection.getEditState([a2]).formatStates[a2])?true:false}})();(function(){var a0=aZ("dt,dd,caption,colgroup,col,thead,tfoot,tbody,legend,optgroup,option,area,frame");aI("TextAlign",{exec:function(a7,a3,a1){if(!a3){if(!this.selBefore){return}if(this.selBefore.endNode){a3=this.selBeforeOrdered.startNode;a1=this.selBeforeOrdered.endNode}else{a3=a1=this.selBefore.startNode}}var a5;var a2=w(a3,a1);for(var a6=0;a6<2;a6++){while(a2!=H&&!aL(a2)){a2=a2.parentNode}if(a2==H){break}if(X(a2)=="li"){a5=[a2];break}a2=a2.parentNode}if(!a5){a5=aQ(a3,a1)}for(var a4 in a5){R(a5[a4],a5[a4],true,function(a8){if(aL(a8)&&!a0[X(a8)]){Q(6,a8,"textAlign",a7)}})}this.selAfter=this.selBefore}})})();(function(){var a0=aZ("p,pre,h1,h2,h3,h4,h5,h6,li,address");aI("SplitContainer",{exec:function(a9,bd){var a3=j(a9.parentNode,H,aL,true)||H,bg,a4;if(!a0[X(a3)]){R(a3,a9,true,function(bi){if(aL(bi)){bg=bi}return bg==null});if(!bg||bg==a3){bg=a3;a4=1}else{if(bg==a9){bg=null}else{a4=0}}}else{bg=a3;a4=1}var a7;if(bg){a7=aa(a3,a9,bd,bg,a4);var bb=true;a7.visit(function(bi){if(!bi.isShared){bb=false}return bb});if(bb){a7=null}else{a7.disconnect()}}var a8,a2,a1;if(a0[X(a3)]){if(X(a3)!="li"&&a3!=H){var be=j(a3.parentNode,H,aL,true);if(be&&X(be)=="li"){a1=a3;a3=be}}a8=a3;a2=(a3.nodeName.charAt(0).toLowerCase()=="h"&&!a7)?N("p"):a3.cloneNode(false)}else{a2=N("p")}if(!a8){if(a7){var bf=a7.getStartFragment();if(a7.wasStartSplit()){a8=bf.getPreSplitNode()}else{if(bf.isShared){a8=bf.node}else{var bh=bf;while(!bh.isShared){bh=bh.parent}if(bh.node.firstChild){if(bh.children.length>0){if(bh.children[0].pos>0){a8=bh.node.childNodes[bh.children[0].pos-1]}else{Q(1,a2,bh.node,0);a8=null}}else{a8=bh.node.lastChild}}else{if(bh==a7){Q(1,a2,a3,0);a8=null}else{a8=bh.node}}}}}else{if(bd==0){Q(1,a2,a9.parentNode,l(a9));a8=null}else{a8=a9}}if(a8&&a8!=H&&!aL(a8)){while(a8!=H&&a8.parentNode!=H&&!aL(a8)&&!aL(a8.parentNode)){a8=a8.parentNode}}}if(a8){Q(1,a2,a8.parentNode,l(a8)+1)}if(a7){for(var ba in a7.children){var bc=a5(a7.children[ba]);if(bc){Q(1,bc,a2)}}}if(aF(a2)){Q(1,de.doc.createMNPlaceholder(),a2)}if(aF(a3)){Q(1,de.doc.createMNPlaceholder(),a3)}if(a1&&aF(a1)){Q(1,de.doc.createMNPlaceholder(),a1)}if(this.flags&2){var a6=de.cursor.getNearestCursorDesc(a2,0,false,false);if(a6){this.selAfter={startNode:a6.domNode,startIndex:a6.relIndex+(a6.domNode.nodeType==3&&a6.isRightOf?1:0)}}}function a5(bm){var bi;if(bm.isShared){var bl=true;bm.visit(function(bn){if(!bn.isShared){bl=false}return bl});if(bl){return null}bi=bm.node.cloneNode(false)}else{bi=bm.node;if(bi.parentNode&&bi.parentNode.nodeType!=11){Q(2,bi)}while(bi.firstChild){Q(2,bi.firstChild)}}for(var bj in bm.children){var bk=a5(bm.children[bj]);if(bk){Q(1,bk,bi)}}return bi}}})})();aI("RemoveText",{exec:function(a2,a5,a1){if(de.doc.isESPlaceHolder(a2,false)||de.doc.isMNPlaceHolder(a2,false)){if(this.flags&2){var a3=de.cursor.getCurrentCursorDesc();if(a3){this.selAfter={startNode:a3.domNode,startIndex:a3.relIndex+(a3.domNode.nodeType==3&&a3.isRightOf?1:0)}}}return}var a8,a7;if(a5==0){R(H,a2,false,function(ba){if(ba==a2){return}var a9=w(a2,ba);if(j(ba,a9,aL,true)){return false}if(ba.nodeType==3&&ah(ba)>0){if(M(ba.nodeValue.charAt(ah(ba)-1))){a8=a9;return false}}})}else{if(M(a2.nodeValue.charAt(a5-1))){a8=a2}}if((a5+a1)==ah(a2)){R(H,a2,true,function(ba){if(ba==a2){return}var a9=w(a2,ba);if(aL(ba)||j(a2,a9,aL,true)){return false}if(ah(ba,0)>0){if(M(ba.nodeValue.charAt(0))){a7=a9;return false}}})}else{if(M(a2.nodeValue.charAt(a5+a1))){a7=a2}}var a6=(a8&&a7&&a8!=a7)?w(a8,a7,true):a8||a7;if(a6){Y(a6)}Q(5,a2,a5,a1);if(a6){s(a6)}var a4,a0=de.doc.getEditSectionContainer(a2);if(a0&&aA(a0)){a4=de.doc.createESPlaceholder(a0)}else{a0=j(a2,H,aL,true)||H;if(aF(a0)){a4=de.doc.createMNPlaceholder()}}if(a4){Q(1,a4,a0)}if(this.flags&2){var a3=a4?de.cursor.createCursorDesc(a4,0,false):de.cursor.getNearestCursorDesc(a2,a5==0?0:a5-1,a5>0,false);if(a3){this.selAfter={startNode:a3.domNode,startIndex:a3.relIndex+(a3.domNode.nodeType==3&&a3.isRightOf?1:0)}}}if(ah(a2)==0){Q(2,a2)}}});aI("RemoveDOM",{exec:function(a0,a8,a5,a4){var a7=aa(w(a0,a5,false),a0,a8,a5,a4);Y(a7.node);var a1=a7.collapse();s(a7.node);if(this.flags&2){var a3;if(a1){a3=de.cursor.getNearestCursorDesc(a1,0,false,true)}else{var a6=a7.getStartFragment();while(a6.node!=H&&!aK(H,a6.node)){a6=a6.parent}var a2=a6.node;if(a6.children.length>0&&a2.childNodes.length>0&&a6.children[0].pos<=a2.childNodes.length){if(a6.children[0].pos==0){a3=de.cursor.getNearestCursorDesc(a2.firstChild,0,false,false)}else{var a9=a2.childNodes[a6.children[0].pos-1];a3=de.cursor.getNearestCursorDesc(a9,ah(a9,2)-1,true,false)}}else{a3=de.cursor.getNearestCursorDesc(a6.node,ah(a6.node,2)-1,true,true)}}if(a3){this.selAfter={startNode:a3.domNode,startIndex:a3.relIndex+(a3.domNode.nodeType==3&&a3.isRightOf?1:0)}}}}});aI("RemoveNode",{exec:function(a0){Q(2,a0)}});(function(){aI("ModifyTable",{exec:function(be,ba,bf){var bl=null,bi=[];R(w(ba,bf),ba,true,function(bm){if(!bl){bl=j(bm,H,function(bn){return(X(bn)=="table")},true)}bi.push(bm);return bm!=bf});if(bl){var bb={start:null,end:null};for(var bg=0;bg<bl.rows.length;bg++){var bk=bl.rows[bg];for(var bh=0;bh<bk.cells.length;bh++){var bj=bk.cells[bh];for(var bc in bi){if(bi[bc]==bj||aK(bj,bi[bc])){if(!bb.start){bb.start=[parseInt(bg),parseInt(bh),bj]}bb.end=[parseInt(bg),parseInt(bh),bj];break}}}}if(bb.start){be=be.toLowerCase().split("-");switch(be[0]){case"insert":if(be.length==4){var bd=parseInt(be[3]);if(isNaN(bd)){aj(1)}if(be[1]=="rows"){a0(bl,bb,be[2]=="before",bd)}else{if(be[1]=="cols"){a7(bl,bb,be[2]=="before",bd)}else{aj(1)}}}else{aj(1)}break;case"delete":if(be.length!=2){aj(1)}switch(be[1]){case"table":a3(bl);break;case"rows":a1(bl,bb);break;case"cols":a9(bl,bb);break;default:aj(1)}break;case"merge":break;case"split":break;default:aj(1)}}}}});function a8(bc,ba){var bb=Q(9,bc,ba);de.UndoMan.execute(4,"InsertHTML","<p>"+aG(de.doc.createMNPlaceholder())+"</p>",bb)}function a0(bj,bg,bb,bd){var be;if(bb){be=bg.start[0]}else{be=bg.end[0]+1;var bh=bg.end[2].getAttribute("rowspan");if(bh){be+=(parseInt(bh)-1)}}if(be>bj.rows.length){be=bj.rows.length}var bf=a5(bj);for(var bc=0;bc<bd;bc++){var bi=Q(8,bj,be);for(var ba=0;ba<bf;ba++){a8(bi,0)}}}function a6(bd,bb){var ba;if(bb){ba=Math.min(bd.start[1],bd.end[1])}else{var bf=bd.start[1],be=bd.end[1];var bc=bd.start[2].getAttribute("colspan");if(bc){bf+=(parseInt(bc)-1)}bc=bd.end[2].getAttribute("colspan");if(bc){be+=(parseInt(bc)-1)}ba=Math.max(bf,be)}return ba}function a5(ba){var bb=0;for(var bc=0;bc<ba.rows.length;bc++){bb=Math.max(bb,ba.rows[bc].cells.length)}return bb}function a7(bk,bh,bc,be){var bj=a6(bh,bc);if(!bc){bj++}for(var bd=0;bd<be;bd++){for(var bf=0;bf<bk.rows.length;bf++){var bm=bk.rows[bf];var ba=-1,bl=bj;for(var bg=0;bg<bm.cells.length;bg++){var bi=bm.cells[bg];ba++;var bb=bi.getAttribute("colspan");if(bb){ba+=(parseInt(bb)-1)}if(ba>=bj){bl=parseInt(bg);break}}a8(bm,bl)}}}function a3(ba){Q(2,ba)}function a1(bc,bb){if(bb.start[0]==0&&bb.end[0]>=(bc.rows.length-1)){a3(bc)}else{for(var ba=0;ba<=(bb.end[0]-bb.start[0]);ba++){Q(10,bc,bb.start[0])}}}function a9(bl,bj){var bd=a6(bj,true),bg=a6(bj,false),bf=a5(bl);if(bd==0&&bg>=(bf-1)){a3(bl)}else{for(var be=0;be<=(bg-bd);be++){for(var bh=0;bh<bl.rows.length;bh++){var bm=bl.rows[bh];var ba=-1,bb=bd;for(var bi=0;bi<bm.cells.length;bi++){var bk=bm.cells[bi];ba++;var bc=bk.getAttribute("colspan");if(bc){ba+=(parseInt(bc)-1)}if(ba>=bd){bb=parseInt(bi);break}}Q(11,bm,bb)}}}}function a4(bb,ba){}function a2(bd){for(var ba in bd){var bc=bd[ba];if(X(bc)=="td"||X(bc)=="th"){var bb=bc.getAttribute("colspan");if(bb){Q(_Operation.SET_ATTRIBUTE,bc,"colspan","")}var bb=bc.getAttribute("rowspan");if(bb){Q(_Operation.SET_ATTRIBUTE,bc,"rowspan","")}}}}})();(function(){var a0=aZ("p, div");aI("Itemize",{exec:function(a3,a4,a1){if(!a4){if(!this.selBefore){return}if(this.selBefore.endNode){a4=this.selBeforeOrdered.startNode;a1=this.selBeforeOrdered.endNode}else{a4=a1=this.selBefore.startNode}}(function a2(br,bk,bD,bA){var bi=j(w(br,bk,true),H,aL,true)||H,bJ,bo;var bE=br,bB=bk;while(bE.firstChild){bE=bE.firstChild}while(bB.lastChild){bB=bB.lastChild}if(y(bi)&&X(bi)!="td"&&X(bi)!="th"){var a5=[];R(bi,bi,true,function(bK){if(bK.nodeType==1&&(X(bK)=="td"||X(bK)=="th")){a5.push(bK);return(bK!=bB&&!aK(bK,bB))}return bK!=bB});var bn=true,bh=[];for(var bH in a5){var bv=bj(a5[bH],a5[bH]);if(bv){bn&=bv.allListEles;bh.push(bv.nrange)}else{bh.push(0)}}for(var bH in a5){if(bh[bH]){a2(a5[bH],a5[bH],bn,bh[bH])}}return}if(X(bi)=="ul"||X(bi)=="ol"){bi=bi.parentNode}var bx=bi;for(var a8=0;a8<2&&bx;a8++){if(X(bx)=="li"){if((bA&&bD)||(!bA&&((a3&&X(bx.parentNode)=="ul")||(!a3&&X(bx.parentNode)=="ol")))){bJ=[bx]}else{bo=[bx];bi=bx.parentNode}break}bx=j(bx.parentNode,H,aL,true)}if(!bA&&!bJ&&!bo){var bv=bj(br,bk);if(bv){bA=bv.nrange;if(bv.allListEles){bJ=bA}else{bo=bA}}else{return}}else{if(bA){if(bD){bJ=bA}else{bo=bA}}}if(bJ){for(var bH in bJ){var by=bJ[bH];var ba=X(by);if(ba=="li"){a9(by,true)}else{if(ba=="ul"||ba=="ol"){var bw=aK(by,br)?j(br,by):by.firstChild,bl=aK(by,bk)?j(bk,by):by.lastChild;while(bw){var bb=bw;bw=bw==bl?null:bw.nextSibling;if(X(bb)=="li"){a9(bb,true)}}}}}}else{var bu;for(var bH in bo){var by=bo[bH];var bg=by==bi?by:j(by,bi),ba=X(by);if(ba=="li"){if(bH=="0"){bu=a9(by,false)}else{var bp=by.parentNode;Q(2,by);Q(1,by,bu);var a7=bp.firstChild;while(a7&&X(a7)!="li"){a7=a7.nextSibling}if(!a7){Q(2,bp)}}}else{if(bH=="0"){bu=N(a3?"ul":"ol");if(ba=="ul"||ba=="ol"){var a6=false;var bq=by.firstChild;while(bq&&X(bq)!="li"){a6|=(bq==br);bq=bq.nextSibling}if(bq){a6|=aK(bq,br)}Q(1,bu,bg.parentNode,l(bg)+(a6?0:1))}else{Q(1,bu,bg.parentNode,l(bg)+1)}}if(ba=="ul"||ba=="ol"){var be=aK(by,br)?j(br,by):by.firstChild,bC=aK(by,bk)?j(bk,by):by.lastChild;while(be){var bs=X(be)=="li"?be:null;be=be==bC?null:be.nextSibling;if(bs){Q(2,bs);Q(1,bs,bu);if(bg!=by){var bm=bs.firstChild;while(bm){if(bm.nodeType!=1&&bm.nodeType!=3){continue}var bG=by.parentNode,bf=[];while(bG){bf.push(bG.cloneNode(false));bG=bG==bg?null:bG.parentNode}for(var bF=bf.length-1;bF>0;bF--){bf[bF].appendChild(bf[bF-1])}Q(1,bf[bf.length-1],bs,l(bm));Q(2,bm);Q(1,bm,bf[0]);bm=bf[bf.length-1].nextSibling}}}}var bt=true;be=by.firstChild;while(be){if(X(be)=="li"){bt=false;break}be=be.nextSibling}if(bt){Q(2,bg)}}else{var bz=N("li");Q(1,bz,bu);Q(2,bg);Q(1,bg,bz);if(a0[ba]){var bc=by.parentNode;Q(2,by);while(by.firstChild){var bI=by.firstChild;Q(2,bI);Q(1,bI,bc)}}}}}}function a9(bO,bT){var bL=bO.previousSibling,bP=false,bQ=false,bU=bO.parentNode,bK=false,bN=null;while(!bP&&bL){bP|=X(bL)=="li";bL=bL.previousSibling}bL=bO.nextSibling;while(!bQ&&bL){bQ|=X(bL)=="li";bL=bL.nextSibling}if(bP){bU=bd(bU,bO,!bT,true);bK=true}if(bT){if(X(bU.parentNode)!="li"){aQ(bO,bO)}while(bO.firstChild){var bS=bO.firstChild;Q(2,bS);Q(1,bS,bU.parentNode,l(bU))}Q(2,bO)}else{if(bK){if(bQ){var bM=bO.nextSibling;while(X(bM)!="li"){bM=bM.nextSibling}bd(bU,bM,true,true)}bN=bU}else{bN=bd(bU,bO,true,false)}}bL=bU.firstChild;while(bL&&X(bL)!="li"){bL=bL.nextSibling}if(!bL){var bR=bU;while(bR.parentNode.childNodes.length==1&&!de.doc.isEditSection(bR.parentNode)&&bR.parentNode!=H){bR=bR.parentNode}Q(2,bR)}return bN}function bd(bM,bP,bL,bN){var bK=bL?N(X(bM)=="ol"?"ul":"ol"):bM.cloneNode(false);if(bN){while(bP){var bO=bP;bP=bP.nextSibling;Q(2,bO);Q(1,bO,bK)}Q(1,bK,bM.parentNode,l(bM)+1)}else{while(bP){var bO=bP;bP=bP.previousSibling;Q(2,bO);Q(1,bO,bK,0)}Q(1,bK,bM.parentNode,l(bM))}return bK}function bj(bP,bK){var bL=aQ(bP,bK);if(bL.length==0){return null}var bO=true;for(var bN in bL){var bM=X(bL[bN]);if(bM=="li"){bM=X(bL[bN].parentNode)}if((a3&&bM!="ul")||(!a3&&bM!="ol")){bO=false;break}}return{allListEles:bO,nrange:bL}}})(a4,a1);this.selAfter=this.selBefore}})})();aI("InsertText",{exec:function(a1,a4,a0){a4=a(aT(a4));var a2;if(de.doc.isESPlaceHolder(a1,false)||de.doc.isMNPlaceHolder(a1,false)){a2=a1;while(!(de.doc.isESPlaceHolder(a2,true)||de.doc.isMNPlaceHolder(a2,true))){a2=a2.parentNode}a1=a2}if(a1.nodeType==3){Q(4,a1,a4,a0);if(this.flags&2){this.selAfter={startNode:a1,startIndex:a0+a4.length}}}else{var a3=document.createTextNode(a4);Q(1,a3,a1.parentNode,l(a1)+(a0==0?0:1));if(a2){Q(2,a2)}if(this.flags&2){this.selAfter={startNode:a3,startIndex:a0+ah(a3)}}}if(a4.indexOf(B)!=-1){s(a1.parentNode)}}});aI("InsertHTML",{exec:function(a6,a7,a9,a8){var a4=[];var a0=a7==H?N("div"):a7.cloneNode(false);a0.innerHTML=a6;var bb=a0.firstChild;while(bb){a4.push(bb);bb=bb.nextSibling}for(var a5=0;a5<a4.length;a5++){a0.removeChild(a4[a5]);a7.appendChild(a4[a5]);c=false;m(a4[a5],false);c=true;if(a4[a5].parentNode!=a7){a4.splice(a5,1);a5--}else{a7.removeChild(a4[a5])}}var a3;if(de.doc.isESPlaceHolder(a7,false)||de.doc.isMNPlaceHolder(a7,false)){a3=a7}else{if(a9&&(de.doc.isESPlaceHolder(a9,false)||de.doc.isMNPlaceHolder(a9,false))){a3=a9}}if(a3){while(a3.parentNode&&(de.doc.isESPlaceHolder(a3.parentNode,false)||de.doc.isMNPlaceHolder(a3.parentNode,false))){a3=a3.parentNode}targetNode=a3;a7=a3.parentNode;a9=a3}var ba;if(a9&&a9.nodeType==3&&a8>0&&a8<ah(a9)){var bc=Q(3,a9,a8);if(M(bc.nodeValue.charAt(0))||M(a9.nodeValue.charAt(a8-1))){ba=a9.parentNode;Y(ba)}}var a1;if(!a9){a1=null}else{if(a8==0){a1=a9.previousSibling}else{a1=a9}}for(var a5 in a4){if(!a1){Q(1,a4[a5],a7,a7.firstChild?l(a7.firstChild):null)}else{Q(1,a4[a5],a7,l(a1)+1)}a1=a4[a5]}if(ba){m(ba)}if(a9&&(de.doc.isMNPlaceHolder(a9)||de.doc.isESPlaceHolder(a9))){Q(2,a9)}if(this.flags&2){var a2=de.cursor.getNearestCursorDesc(a4[a4.length-1],ah(a4[a4.length-1],2)-1,true,X(a4[a4.length-1])!="br");if(a2){this.selAfter={startNode:a2.domNode,startIndex:a2.relIndex+(a2.domNode.nodeType==3&&a2.isRightOf?1:0)}}}}});(function(){var a1=20,a0=aZ("dt,dd,caption,colgroup,col,thead,tfoot,tbody,tr,td,th,legend,optgroup,option,area,frame");aI("Indent",{exec:function(ba,a5,a9){if(!a5){if(!this.selBefore){return}if(this.selBefore.endNode){a5=this.selBeforeOrdered.startNode;a9=this.selBeforeOrdered.endNode}else{a5=a9=this.selBefore.startNode}}var a6;var a7=w(a5,a9);for(var a3=0;a3<2;a3++){while(a7!=H&&!aL(a7)){a7=a7.parentNode}if(a7==H){break}if(X(a7)=="li"){a6=[a7];break}a7=a7.parentNode}if(!a6){a6=aQ(a5,a9)}for(var a8 in a6){if(!a0[X(a6[a8])]){var a4=a6[a8];var a2=(a4.style.marginLeft&&a4.style.marginLeft.toLowerCase()!="auto")?a4.style.marginLeft:null;if(!a2){a2=aD(a4,"margin-left")}a2=(a2&&a2.toLowerCase()!="auto")?a2:"0";var bc;if(a2.indexOf("%")!=-1){bc=a4.offsetLeft}else{bc=parseInt(a2)}var bb=bc+((ba?1:-1)*a1);if(bb<0){bb=0}if(bc!=bb){Q(6,a4,"marginLeft",bb+"px")}}}this.selAfter=this.selBefore}})})();aI("Format",{exec:function(bb,bd,a6){bb=bb.toLowerCase();if(typeof q[bb+"Wrapper"]=="undefined"){return}var a7=bd?false:true,a1=false,a9=true,a0;if(!a6){if(!this.selBefore){return}a6=o(this.selBeforeOrdered);a0=o(a6);a9=this.selBefore.inOrder}else{a0=o(a6)}if(!a0.endNode){var a5=null;if(bb=="link"){var a8=a0.startNode;while(a8&&de.doc.isNodeEditable(a8)){if(a8.nodeType==1&&X(a8)=="a"){a5={startNode:a8,startIndex:0,endNode:a8,endIndex:1};break}a8=a8.parentNode}}a0=a5?a5:de.selection.getWordRangeAt(a0.startNode,a0.startIndex>=ah(a0.startNode)?ah(a0.startNode)-1:a0.startIndex);if(!a0){return}a1=a9=true}var bc=ba(a0.startNode,a0.startIndex,a0.endNode,a0.endIndex,q[bb+"Wrapper"](bd||""),a7,q[bb+"Eval"]);if(this.flags&2){if(a1){var a3=bc.getAdjustedNodeIndex(a6.startNode,a6.startIndex);this.selAfter={startNode:a3.node,startIndex:a3.index}}else{var bf=bc.getStartFragment(),a2=bc.getEndFragment();var be=0,a4=ah(a2.node,1);this.selAfter={startNode:a9?bf.node:a2.node,startIndex:a9?be:a4,endNode:a9?a2.node:bf.node,endIndex:a9?a4:be}}}function ba(bx,bk,bq,bi,bn,br,bg){var bv=arguments.length>7,bj=bk==ah(bx,1),bl=bi==0;var bp=aa(w(bx,bq,false),bx,bk,bq,bi);var bm=bp.getStartFragment(),by=bp.getEndFragment(),bw=bp.node;if(bj){bh(bm)}if(bl){bh(by)}function bh(bz){do{bz.dontFormat=1;bz=bz.parent}while(bz&&bz.children.length==1)}bp.visit(function(bz){if(!bz.dontFormat){bs(bz.node)}});if(!bv){var bu=bw;while(bu){bs(bu);if(bu==H){break}bu=bu.parentNode}}if(!br){bx=bm.node;bq=by.node;var bo=aa(bw,bx,bj?ah(bx,1):0,bq,bl?0:ah(bq,1));if(bj){bh(bo.getStartFragment())}if(bl){bh(bo.getEndFragment())}(function bt(bE){var bD=[];for(var bA in bE.children){var bC=bE.children[bA];if(bz(bC)){bD.push(bC.node)}else{bB();bt(bC)}}bB();function bB(){if(bD.length>0){var bH=bn.cloneNode(false);Q(1,bH,bE.node,l(bD[0]));for(var bF in bD){var bG=bD[bF];Q(2,bG);Q(1,bG,bH)}bD=[]}}function bz(bI){if(bI.dontFormat){return false}var bG=true;R(bI.node,bI.node,true,function(bJ){bG=!aL(bJ);return bG});if(bG){var bH=true;(function bF(bL,bK){if(bL.dontFormat){bH=false;return}if(bK.firstChild){bH=bK.childNodes.length==bL.children.length;if(bH){for(var bJ=0;bJ<bK.childNodes.length;bJ++){bF(bL.children[bJ],bK.childNodes[bJ]);if(!bH){break}}}}else{bH=bL.children.length==0}})(bI,bI.node);return bH}return false}})(bo)}return bp;function bs(bA){if(bA.nodeType==1){var bB=false,bI=bg(bA);if(bI){for(var bE in bI.strip){switch(bI.strip[bE].type){case 1:bB=true;break;case 2:var bK=au(bA);if(bK){var bJ=bK.split(" ");for(var bC in bJ){if(bJ[bC]==bI.strip[bE].match){bJ.splice(bC,1);break}}bK=bK.length>0?bJ.join(" "):"";Q(7,bA,bK)}break;case 3:Q(6,bA,bI.strip[bE].match,"");break}if(bB){break}}var bF=bA.firstChild;while(bF.firstChild){bF=bF.firstChild}var bz=bA.lastChild;while(bz.lastChild){bz=bz.lastChild}if(!bB&&X(bA)=="span"){bB=!au(bA);if(!bB){bB=r(bA)}}if(bB){var bH=[];while(bA.firstChild){var bD=bA.firstChild;Q(2,bD);Q(1,bD,bA.parentNode,l(bH.length>0?bH[bH.length-1]:bA)+1);bH.push(bD)}if(bH.length>0){if(bA==bw){bw=bA.parentNode}Q(2,bA)}}if(!bv){var bG=false;bp.visit(function(bL){bG=(!bL.dontFormat&&bL.node==bF);return !bG});if(!bG){ba(bF,0,bm.node,bj?ah(bm.node,1):0,bI.inline,false,bg,true)}bG=false;bp.visit(function(bL){bG=(!bL.dontFormat&&bL.node==bz);return !bG});if(!bG){ba(by.node,bl?0:ah(by.node,1),bz,ah(bz,1),bI.inline,false,bg,true)}}}}}}}});(function(){aI("CreateTable",{exec:function(a1,a3,a4,a2,a6,a5){var a0="<table></table>"}})})();(function(){var a0=aZ("p,pre,h1,h2,h3,h4,h5,h6,address");aI("ChangeContainer",{exec:function(bb,a3,a9){if(!bb){bb="p"}bb=bb.toLowerCase();if(!a3){if(!this.selBefore){return}if(this.selBefore.endNode){a3=this.selBeforeOrdered.startNode;a9=this.selBeforeOrdered.endNode}else{a3=a9=this.selBefore.startNode}}var a4=aQ(a3,a9);for(var a8 in a4){var a2=a4[a8];if(X(a2)!=bb&&a0[X(a2)]){var a6=[],a7,bc=a2.parentNode,ba=l(a2);while(a7=a2.firstChild){a6.push(a7);Q(2,a7)}Q(2,a2);var a1=N(bb);Q(1,a1,bc,ba);for(var a5 in a6){Q(1,a6[a5],a1)}}}this.selAfter=this.selBefore}})})();aI("Blockquote",{exec:function(a2,a7){if(!a2){if(!this.selBefore){return}if(this.selBefore.endNode){a2=this.selBeforeOrdered.startNode;a7=this.selBeforeOrdered.endNode}else{a2=a7=this.selBefore.startNode}}var a9=null,a4=w(a2,a7,true);if(a0(a4)){a9=a4}else{R(a4,a2,true,function(ba){if(a0(ba)){a9=ba}return a9==null&&ba!=a7})}if(!a9){a9=j(a4,H,a0,true)||j(a2,a4,a0,true);if(!de.doc.isNodeEditable(a9)){a9=null}}if(a9){while(a9.firstChild){var a5=a9.firstChild;Q(2,a5);Q(1,a5,a9.parentNode,l(a9))}Q(2,a9)}else{var a3=aQ(a2,a7);var a8=N("blockquote");if(a3.length>0&&n(a8,a3[0].parentNode)){Q(1,a8,a3[0].parentNode,l(a3[0]));for(var a6 in a3){var a1=a3[a6];Q(2,a1);Q(1,a1,a8)}}}this.selAfter=this.selBefore;function a0(ba){return X(ba)=="blockquote"}}});var z={GB:"address,blockquote,center,del,div,h1,h2,h3,h4,h5,h6,hr,ins,isindex,noscript,p,pre",SI:"a,applet,basefont,bdo,br,font,iframe,img,map,area,object,param,q,script,span,sub,sup",PH:"abbr,acronym,cite,code,del,dfn,em,ins,kbd,samp,strong,var",F:"b,big,i,s,small,strike,tt,u",TE:"table,caption,colgroup,col,thead,tfoot,tbody,tr,td,th",NT:"table,textarea,tr,thead,tbody,tfoot,dl,ul,ol,menu,select,optgroup,option"};for(var aq in z){z[aq]=aZ(z[aq])}D(z,{B:D(aZ("dir,dl,fieldset,form,menu,noframes,ol,table,ul,dd,dt,frameset,li,tbody,td,tfoot,thead,th,tr"),z.GB),I:D(D(aZ("abbr,acronym,cite,code,dfn,em,kbd,samp,strong,var"),z.F),z.SI)});var F=function(){function a1(a5,a3){var a2=a3.split(","),a6=o(a5);for(var a4 in a2){delete a6[a2[a4]]}return a6}var a0=D(o(z.B),z.I);return{body:D(aZ("script,ins,del"),a0),address:D(aZ("p"),a0),blockquote:a0,centre:a0,del:a0,h1:z.I,h2:z.I,h3:z.I,h4:z.I,h5:z.I,h6:z.I,hr:{},ins:a0,isindex:{},noscript:a0,p:z.I,pre:a1(z.I,"img,object,applet,big,small,sub,sup,font,basefont"),dir:aZ("li"),dl:aZ("dd,dt"),dt:z.I,dd:a0,li:a0,menu:aZ("li"),ol:aZ("li"),ul:aZ("li"),table:aZ("caption,col,colgroup,thead,tfoot,tbody"),caption:z.I,colgroup:aZ("col"),col:{},thead:aZ("tr"),tfoot:aZ("tr"),tbody:aZ("tr"),tr:aZ("td,th"),td:a0,th:a0,form:a1(a0,"form"),button:a1(a0,"a,input,select,textarea,label,button,iframe,form,isindex,fieldset"),fieldset:D(aZ("legend"),a0),legend:z.I,input:{},label:a1(z.I,"label"),select:aZ("optgroup,option"),optgroup:aZ("option"),option:{},textarea:{},a:a1(z.I,"a"),applet:D(aZ("param"),a0),basefont:{},bdo:z.I,br:{},font:z.I,iframe:a0,img:{},map:D(aZ("area"),z.B),area:{},object:D(aZ("param"),a0),param:{},q:z.I,script:{},span:z.I,sub:z.I,sup:z.I,abbr:z.I,acroynm:z.I,cite:z.I,code:z.I,dfn:z.I,em:z.I,kbd:z.I,samp:z.I,strong:z.I,"var":z.I,b:z.I,big:z.I,i:z.I,s:z.I,small:z.I,strike:z.I,tt:z.I,u:z.I}}();function aC(a1,a0){if(a1.nodeType==1){return z[a0][X(a1)]?true:false}return false}function n(a2,a0){if(a2.nodeType==3){return true}var a1=F[X(a0)];if(a1){return a1[X(a2)]}return true}function aL(a0){return aC(a0,"B")}function S(a0){return aC(a0,"GB")}function ae(a0){return aC(a0,"I")}function g(a0){return aC(a0,"SI")}function O(a0){return aC(a0,"PH")}function aE(a0){return aC(a0,"F")}function y(a0){return aC(a0,"TE")}function M(a0){return/^[\t\n\r ]+$/.test(a0)}function aH(a0){return !aC(a0.parentNode,"NT")}var B=a(" ");D(de,{isBlock:aL});var b,C,aS,aR;(function(){var a3=1,a2,a1;L("viewport",function(){A(window,"resize",function(){a3=1})});de.getViewPortSize=_getViewPortSize=function(a4){if(a3||a4){a0()}return{width:a2,height:a1}};function a0(){if(E==3&&G<7){a2=document.documentElement.clientWidth;a1=document.documentElement.clientHeight}else{var a4=N("div");ao(a4,"position:fixed;top:0;left:0;width:100%;height:100%;border-style:none;margin:0");H.appendChild(a4);a2=a4.offsetWidth;a1=a4.offsetHeight;H.removeChild(a4)}a3=0}})();de.getDocumentScrollPos=aR=function(){var a1=0,a0=0;if(H.scrollLeft||H.scrollTop){a1=H.scrollLeft;a0=H.scrollTop}else{if(window.pageYOffset||window.pageXOffset){a1=window.pageXOffset;a0=window.pageYOffset}else{if(document.documentElement.scrollLeft||document.documentElement.scrollTop){a1=document.documentElement.scrollLeft;a0=document.documentElement.scrollTop}}}return{top:a0,left:a1}};function aN(){var a1=0,a0=0;if(window.innerWidth||window.innerHeight){a1=window.innerWidth;a0=window.innerHeight}else{if(document.documentElement.offsetWidth||document.documentElement.offsetWidth){a1=document.documentElement.offsetWidth;a0=document.documentElement.offsetHeight}else{if(H.offsetWidth||H.offsetWidth){a1=H.offsetWidth;a0=H.offsetWidth}}}return{width:a1,height:a0}}var m,s,Y;(function(){var a0=aZ("button,img,iframe,map,object"),a3=aZ("br,button,img,iframe,map,object,select,textarea,applet");Y=function(a5){ar(a5,a5,true,function(a6){if(aH(a6)&&a1(a6)=="normal"){a6.nodeValue=a6.nodeValue.replace(/[\t\n\r ]/g,B)}})};m=function(a8,bg){var bd;ar(a8,a8,true,function(bn){if(aH(bn)&&ah(bn)>0){bd=bn;return false}});if(!bd){return}var a7=a8;var bk=false;if(bg&&M(bd.nodeValue.charAt(0))){R(null,bd,false,function(bn){if(bn==bd){return}if(bn.nodeType==3){if(!aH(bn)){return false}a7=bn;if(!M(bn.nodeValue)){bk=true;return false}}else{if(!ae(bn)){return false}}})}var bi=aK(a8,a7),a5=0;while(a7){var be=a2(a7,a5,bk,a8,bi,false,false,bg);bk=false;bi=be.seenTargetNode;a7=be.resumeNode;a5=be.resumeIndex;if(be.startNode&&a1(be.startNode)!="pre"){if(a4(be.startNode,be.startIndex,be.endNode,be.endIndex)){if(be.startNode==be.endNode&&be.startIndex==(be.endIndex-1)){be.startNode=null}else{be.startIndex++}}if(be.startNode){var bc=aa(w(be.startNode,be.endNode,false),be.startNode,be.startIndex,be.endNode,be.endIndex);bc.disconnect();var a9=a7==a8;if(a7){var ba=bc.getStartFragment(),bm=bc.getEndFragment(),bj=false,bb=bc.wasStartSplit(),bh=bc.wasEndSplit();if(a7==be.startNode&&bb){if(a5>=ah(be.startNode)){var bl=ah(ba.node);if(a5<(ah(be.startNode)+bl)){a5=ah(be.startNode)-1}else{if(a7==be.endNode&&bh){a7=bm.getPostSplitNode();a5-=(ah(be.startNode)+bl)}else{assert(false)}}}bj=true}else{if(a7==be.endNode&&bh){var bl=ah(bm.node);if(a5>=bl){a7=bm.getPostSplitNode();a5-=bl;bj=true}else{a7=null}}}if(!bj){var bf;if(a7){bf=false;bc.visit(function(bn){if(!bn.isShared&&bn.node==a7){bf=true;return false}})}else{bf=true}if(bf){var a6=ba;while(!a6.isShared){a6=a6.parent}a7=a6.node;a5=a6==ba?ah(a7,1):0;if(a7.childNodes.length>0&&a6.children.length>0&&a6.children[0].pos>0){a7=a7.childNodes[a6.children[0].pos-1];a5=ah(a7,1)}}}if(a7&&a9){a8=a7}}}}}};s=function(bc){var a6=bc,bd=0;while(a6){var be=a2(a6,bd,false,bc,true,true,true,true);a6=be.resumeNode;bd=be.resumeIndex;if(be.startNode){var a8=a4(be.startNode,be.startIndex,be.endNode,be.endIndex);var bb=[];ar(w(be.startNode,be.endNode,false),be.startNode,true,function(bf){bb.push(bf);if(bf==be.endNode){return false}});for(var a9=0;a9<bb.length;a9++){var a7=bb[a9];for(var ba=(a9==0?be.startIndex:0);ba<(a9==(bb.length-1)?(be.endIndex+1):ah(a7));ba++){if(a7.nodeValue.charAt(ba)==B){if(!(!a8&&((a9==0&&ba==be.startIndex)||(a9==(bb.length-1)&&ba==be.endIndex)))){var a5;if(ba==0){a5=(a9>0)?bb[a9-1].nodeValue.charAt(ah(bb[a9-1])-1):null}else{a5=a7.nodeValue.charAt(ba-1)}if(!a5||!M(a5)){if(ba==(ah(a7)-1)){a5=(a9<(bb.length-1))?bb[a9+1].nodeValue.charAt(0):null}else{a5=a7.nodeValue.charAt(ba+1)}if(!a5||!M(a5)){a7.nodeValue=a7.nodeValue.substr(0,ba)+" "+a7.nodeValue.substr(ba+1)}}}}}}}}};function a2(bh,bc,be,bg,bi,a7,a6,bb){var bf=null,bj=bc,a5,bk,bd,ba,a8,a9;R(null,bh,true,function(bq){if(bi&&bq!=bg&&(!a5||!bb)&&!aK(bg,bq)){return false}bi|=(bq==bg);a9=a1(bq);if(a5){var bl=w(bq,a5,false);var bp=aO(a5,bl,false,false);var bm=false;for(var bn in bp){if(!(ae(bp[bn])&&!a3[X(bp[bn])])){bm=true;break}}if(bm||a9!=a8){bf=bq;bj=0;return false}}if(bq.nodeType==3){if(bq.parentNode.nodeType!=8){if(!aH(bq)){if(a5){bf=bq;bj=0;return false}}else{while(bj<ah(bq)){var bo=bq.nodeValue.charAt(bj);if(M(bo)||(a7&&bo==B)){if(!be){if(a5){bd=bq;ba=bj+1}else{a5=bq;a8=a9;bk=bj;bd=null}}}else{be=false;if(bd||(a5&&(a6||bk==0))){bf=bq;return false}else{a5=null}}bj++}}}else{be=false}}else{be=false;if(bq.nodeType!=8){if(a5&&!(ae(bq)&&!a3[X(bq)])){bf=bq;bj=0;return false}}}bj=0});if(a5&&!bd){bd=a5;ba=bk+1}return{seenTargetNode:bi,resumeNode:bf,resumeIndex:bj,startNode:a5,startIndex:bk,endNode:bd,endIndex:ba}}function a4(a8,bb,a5,ba){var a7=a1(a8);if(bb==0){var a9=false;R(null,a8,false,function(bg){if(bg==a8){return}var be=a6(bg,a8);if(!be&&a9){var bc=w(bg,a8,false);var bf=aO(bg,bc,false,false);for(var bd in bf){a9=false;if(!a6(bf[bd],a8)&&!a9){return false}}be=false;a9=true}return be});if(!a9){return false}}if(ba==ah(a5)){var a9=false;R(null,a5,true,function(bg){if(bg==a5){return}var be=a6(bg,a5);if(!be&&a9){var bc=w(bg,a5,false);var bf=aO(a5,bc,false,false);for(var bd in bf){a9=false;if(!a6(bf[bd],a5)&&!a9){return false}}a9=true;be=false}return be});if(!a9){return false}}return true;function a6(bc,bd){if(bc.nodeType==3){if(ah(bc)>0){a9=aH(bc);return false}}else{if(a0[X(bc)]){a9=!aK(bc,bd);return false}else{if(aL(bc)||X(bc)=="br"){return false}}}return true}}function a1(a6){var a5=aD(a6,"white-space");if(!a5){do{if(X(a6)=="pre"){a5="pre";break}a6=a6.parentNode}while(a6&&a6.nodeType==1);if(!a5){a5="normal"}}return a5}})()})();
|
---|
3010 |
|
---|
3011 |
|
---|
3012 |
|
---|
3013 |
|
---|
3014 |
|
---|
3015 |
|
---|
3016 |
|
---|
3017 |
|
---|
3018 |
|
---|
3019 |
|
---|
3020 |
|
---|
3021 |
|
---|
3022 |
|
---|
3023 |
|
---|
3024 |
|
---|
3025 |
|
---|
3026 |
|
---|
3027 |
|
---|
3028 |
|
---|
3029 |
|
---|
3030 |
|
---|
3031 |
|
---|
3032 |
|
---|
3033 |
|
---|
3034 |
|
---|
3035 |
|
---|
3036 |
|
---|
3037 |
|
---|
3038 |
|
---|
3039 | /*
|
---|
3040 | if (document.body.className) {
|
---|
3041 | document.body.className += " editable";
|
---|
3042 | }
|
---|
3043 | else {
|
---|
3044 | document.body.className = "editable";
|
---|
3045 | }
|
---|
3046 | */
|
---|
3047 |
|
---|
3048 |
|
---|
3049 | csnInit(); |
---|