User:Cacycle/wikEd dev.js: Difference between revisions

Content deleted Content added
0.9.92 target
0.9.92 rc1
Line 1:
// <pre><nowiki>
 
if (typeof(wikEd) == 'undefined') { window.wikEd = {}; }
 
// version info
wikEd.programVersion = '0.9.92';
window.wikEdProgramVersion = window.wikEdProgramVersion || '0.9.92';
windowwikEd.wikEdProgramDateprogramDate = window.wikEdProgramDate || 'September 1519, 2010';
 
/*
Line 53 ⟶ 55:
 
//
// WikEdInitGlobalsConfigswikEd.InitGlobalsConfigs: initialize user configurable variables
//
 
windowwikEd.WikEdInitGlobalConfigsInitGlobalConfigs = function() {
 
// user readable texts, copy changes to http://en.wikipedia.org/wiki/User:Cacycle/wikEd_international_en.js, also defined in wikEdDiffwikEd.diff.js
if (typeof(wikEdConfig['wikEd.config.text']) == 'undefined') { wikEdConfig['wikEd.config.text'] = {}; }
 
// WikEdInitTextwikEd.InitText: define built-in user interface texts
windowwikEd.WikEdInitTextInitText = function() {
WikEdInitObjectwikEd.InitObject(wikEdConfig['wikEd.config.text'], {
 
// logo
'wikEdLogo alt': 'wikEd',
'wikEdLogo title': 'wikEd {wikEdProgramVersionwikEd.programVersion} ({wikEdProgramDatewikEd.programDate}) Click to disable',
'wikEdLogo error alt': 'wikEd error',
'wikEdLogo error title': 'Loading error - wikEd {wikEdProgramVersionwikEd.programVersion} ({wikEdProgramDatewikEd.programDate}) Click to disable',
'wikEdLogo browser alt': '(wikEd)',
'wikEdLogo browser title': 'Browser not supported - wikEd {wikEdProgramVersionwikEd.programVersion} ({wikEdProgramDatewikEd.programDate})',
'wikEdLogo incompatible alt': '(wikEd)',
'wikEdLogo incompatible title': 'Incompatible script or gadget: {wikEdParameterwikEd.parameter} - wikEd {wikEdProgramVersionwikEd.programVersion} ({wikEdProgramDatewikEd.programDate})',
'wikEdLogo disabled alt': '(wikEd)',
'wikEdLogo disabled title': 'Disabled - wikEd {wikEdProgramVersionwikEd.programVersion} ({wikEdProgramDatewikEd.programDate}) Click to enable',
 
// top jumper
Line 249 ⟶ 251:
'/* */ ', 'copyedit', 'reply', 'article created', 'intro rewrite',
'linkfix', 'fixing typos', 'removing linkspam', 'reverting test',
'reverting vandalism', 'formatting source text', '{wikEdUsingwikEd.using}'
],
'wikEdSummaryUsing': '…using [[en:User:Cacycle/wikEd|wikEd]]',
Line 261 ⟶ 263:
'wikEdLocalDiffImg alt': 'Changes below',
'wikEdLocalDiff title': 'Show current changes below',
'wikEdHelpPageLink': ' | <a href="{wikEdHomeBaseUrlwikEd.homeBaseUrl}wiki/User:Cacycle/wikEd_help" target="helpwindow">wikEd help</a>', // use full link without {wikEdHomeBaseUrlwikEd.homeBaseUrl} if the page is not on the English Wikipedia
 
// preview and changes buttons, top
Line 281 ⟶ 283:
// preview field
'wikEdPreviewLoading': '...',
'diffNotLoaded': 'Error: Local diff script not installed.',
 
// formatting functions
Line 364 ⟶ 367:
'iconPage': 'All icons and images used by wikEd. Save page as <i>web page, complete</i> to download all files into one folder.<br><br>'
 
}, wikEdConfig['wikEd.config.showMissingTranslations']);
};
 
// define built-in user interface texts
WikEdInitTextwikEd.InitText();
 
// use local copies of images for testing (set to true in local copy of edit page), also defined in wikEdDiffwikEd.diff.js
if (typeof(wikEdConfig['wikEd.config.useLocalImages']) == 'undefined') { wikEdConfig['wikEd.config.useLocalImages'] = false; }
 
// path to local images for testing, also defined in wikEdDiffwikEd.diff.js
if (typeof(wikEdConfig['wikEd.config.imagePathLocal']) == 'undefined') { wikEdConfig['wikEd.config.imagePathLocal'] = 'file:///D:/wikEd/images/'; }
 
// path to images, also defined in wikEdDiffwikEd.diff.js
if (typeof(wikEdConfig['wikEd.config.imagePath']) == 'undefined') { wikEdConfig['wikEd.config.imagePath'] = 'http://upload.wikimedia.org/wikipedia/commons/'; }
 
// image filenames, also defined in wikEdDiffwikEd.diff.js
if (typeof(wikEdConfig['wikEd.config.image']) == 'undefined') { wikEdConfig['wikEd.config.image'] = {}; }
 
// WikedInitImageswikEd.InitImages: define built-in image URLs
windowwikEd.WikedInitImagesInitImages = function() {
WikEdInitImagewikEd.InitImage(wikEdConfig['wikEd.config.image'], {
'barDash': '5/52/WikEd_bar_dash.png',
'bold': '5/59/WikEd_bold.png',
Line 482 ⟶ 485:
 
// edit-frame css rules
if (typeof(wikEdConfig['wikEd.config.frameCSS']) == 'undefined') { wikEdConfig['wikEd.config.frameCSS'] = {}; }
 
// WikedInitFrameCSSwikEd.InitFrameCSS: define built-in edit frame css
windowwikEd.WikedInitFrameCSSInitFrameCSS = function() {
WikEdInitObjectwikEd.InitObject(wikEdConfig['wikEd.config.frameCSS'], {
 
// frame
'.wikEdFrameHtml': 'height: 100%; width: 100%; padding: 0; margin: 0; background: transparent; background-image: url({wikEdImagewikEd.image:resizeGrip}); background-attachment: fixed; background-position: right bottom; background-repeat: no-repeat;',
'.wikEdFrameBodyPlain': 'height: auto; min-height: 100%; width: auto; background: transparent; margin: 0; padding: 0; padding-left: 0.25em; overflow: auto; font-family: monospace;',
 
Line 500 ⟶ 503:
 
// syntax highlighting
'.wikEdError': 'background-image: url({wikEdImagewikEd.image:unknown}); color: black; font-weight: normal; font-style: normal; text-decoration: none; text-shadow: white -1px -1px 0, white -1px 0 0, white -1px 1px 0, white 0 -1px 0, white 0 1px 0, white 1px -1px 0, white 1px 0 0, white 1px 1px 0;',
'.wikEdHighlightError': 'color: black; background: #faa;',
 
Line 506 ⟶ 509:
'.wikEdHtmlTag': 'color: #777;',
'.wikEdHtmlTagButtons': 'color: #777;',
'.wikEdHtmlUnknown': 'background-image: url({wikEdImagewikEd.image:unknown}); color: black; font-weight: normal; font-style: normal; text-shadow: white -1px -1px 0, white -1px 0 0, white -1px 1px 0, white 0 -1px 0, white 0 1px 0, white 1px -1px 0, white 1px 0 0, white 1px 1px 0;',
'.wikEdParsingNote': 'border: 1px outset #fcc; padding: 0 0.5em 0 0.5em; margin: 0 0.25em 0 0.25em; color: black; background: #fcc; text-shadow: none; font-weight: normal; font-size: smaller; font-style: normal; text-decoration: none; font-family: sans-serif;',
 
Line 658 ⟶ 661:
'.wikEdFrameBodySyntax .wikEdRef .wikEdLinkName, .wikEdFrameBodySyntax .wikEdTempl .wikEdLinkName, .wikEdFrameBodySyntax .wikEdRef .wikEdLinkTarget, .wikEdFrameBodySyntax .wikEdTempl .wikEdLinkTarget, .wikEdFrameBodySyntax .wikEdRef .wikEdLinkText, .wikEdFrameBodySyntax .wikEdTempl .wikEdLinkText': 'color: #66f; font-weight: normal;',
 
// wikEdFrameBodyNewbiewikEd.frameBodyNewbie ref and template hiding
'.wikEdFrameBodyNewbie .wikEdRefContainer + .wikEdRef, .wikEdFrameBodyNewbie .wikEdTemplContainer + .wikEdTempl, .wikEdFrameBodyNewbie .wikEdTemplContainer .wikEdTemplNs, .wikEdFrameBodyNewbie wikEdRefContainerwikEd.refContainer + .wikEdRefShow, .wikEdFrameBodyNewbie .wikEdTemplContainer + .wikEdTemplShow, .wikEdFrameBodyNewbie .wikEdTemplContainer + .wikEdTemplNsShow':
'display: none; color: #000; background: #f8f8f8; font-weight: normal; border: 1px solid; border-color: #444 #ccc #ccc #444; padding: 1em 0.25em 1em 0.25em; position: relative;',
 
Line 672 ⟶ 675:
 
'.wikEdFrameBodyNewbie .wikEdRefButton:before, .wikEdFrameBodyNewbie .wikEdRefButtonShow:before':
'content: "{wikEdTextwikEd.text:hideRef}"',
 
'.wikEdFrameBodyNewbie .wikEdCharEntity, .wikEdFrameBodyNewbie .wikEdCharEntityShow':
Line 678 ⟶ 681:
 
'.wikEdFrameBodyNewbie .wikEdTemplButton:before, .wikEdFrameBodyNewbie .wikEdTemplButtonShow:before':
'content: "{wikEdTextwikEd.text:hideTempl}";',
 
// table edit
'.wikEdTableEdit': 'border: solid black; border-width: 1px 1px 0 0; background: red; text-shadow: none; background-image: url({wikEdImagewikEd.image:tableBG}); border-collapse: separate; border-spacing: 0;',
'.wikEdTableEdit td': 'border: solid black; border-width: 0 0 1px 1px; background: white; text-shadow: none;',
'.wikEdTableEdit th': 'border: solid black; border-width: 0 0 1px 1px; background: lightgrey; text-shadow: none; font-weight: bold;',
Line 695 ⟶ 698:
 
// dashes
'.wikEdFigureDash': 'background-image: url({wikEdImagewikEd.image:figureDash}); background-position: top right; background-repeat: no-repeat;',
'.wikEdEmDash': 'background-image: url({wikEdImagewikEd.image:emDash}); background-position: top left; background-repeat: no-repeat;',
'.wikEdEnDash': 'background-image: url({wikEdImagewikEd.image:enDash}); background-position: top left; background-repeat: no-repeat;',
'.wikEdBarDash': 'background-image: url({wikEdImagewikEd.image:barDash}); background-position: top left; background-repeat: no-repeat;',
'.wikEdMinusDash': 'background-image: url({wikEdImagewikEd.image:minusDash}); background-position: top left; background-repeat: no-repeat;',
'.wikEdSoftHyphen': 'background-image: url({wikEdImagewikEd.image:softHyphen}); background-position: top left; background-repeat: no-repeat;',
'.wikEdSoftHyphen:before': 'content: \'\xa0\'',
'.wikEdHyphenDash': '',
 
// dashes, invisibles, control chars, and strange spaces
'.wikEdTab': 'white-space: pre; background-image: url({wikEdImagewikEd.image:tab}); background-position: bottom right; background-repeat: no-repeat;',
'.wikEdTabPlain': 'white-space: pre;',
'.wikEdCtrl': 'white-space: pre; background-image: url({wikEdImagewikEd.image:ctrl}); background-position: center center; background-repeat: no-repeat; margin: 0 1px;',
'.wikEdCtrl:before': 'content: \'\xa0\'',
 
'.wikEdEmSpace': 'background-image: url({wikEdImagewikEd.image:emSpace}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 3px;',
'.wikEdEnSpace': 'background-image: url({wikEdImagewikEd.image:enSpace}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 3px;',
'.wikEdThinSpace': 'background-image: url({wikEdImagewikEd.image:thinSpace}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 3px;',
'.wikEdIdeographicSpace': 'background-image: url({wikEdImagewikEd.image:ideographicSpace}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 3px;'
});
};
 
// main window css rules
if (typeof(wikEdConfig['wikEd.config.mainCSS']) == 'undefined') { wikEdConfig['wikEd.config.mainCSS'] = {}; }
 
// WikedInitMainCSSwikEd.InitMainCSS: define built-in main window css
windowwikEd.WikedInitMainCSSInitMainCSS = function() {
WikEdInitObjectwikEd.InitObject(wikEdConfig['wikEd.config.mainCSS'], {
 
// logo
Line 732 ⟶ 735:
 
// main window css rules for edit pages only
if (typeof(wikEdConfig['wikEd.config.mainEditCSS']) == 'undefined') { wikEdConfig['wikEd.config.mainEditCSS'] = {}; }
 
// WikedInitMainEditCSSwikEd.InitMainEditCSS: define built-in main window css for edit pages only
windowwikEd.WikedInitMainEditCSSInitMainEditCSS = function() {
WikEdInitObjectwikEd.InitObject(wikEdConfig['wikEd.config.mainEditCSS'], {
 
// combo input box
Line 769 ⟶ 772:
 
// button bar grip
'.wikEdButtonBarGrip': 'background: #d4d0cc; padding: 0; background-image: url({wikEdImagewikEd.image:grip}); background-repeat: repeat-y; cursor: pointer;',
 
// button bar buttons
Line 804 ⟶ 807:
'.wikEdPreviewBox': 'background: #faf8f6; padding: 5px; border-width: 1px; border-style: solid; border-color: #404040 #ffffff #ffffff #404040;',
'.wikEdPreviewRefs': 'margin-top: 1.5em; padding-top: 1em;border-top: 1px solid #a0a0a0;',
'.wikEdPreviewDiffError': 'padding: 0.5em; font-weight: bold; color: red; text-align: center;',
 
// find field
Line 869 ⟶ 873:
 
// buttons (id, class, popup title, image src, width, height, alt text, click code)
if (typeof(wikEdConfig['wikEd.config.button']) == 'undefined') { wikEdConfig['wikEd.config.button'] = {}; }
 
// WikedInitButtonwikEd.InitButton: define built-in buttons (id, class, popup title, image src, width, height, alt text, click handler code were obj is the button element)
windowwikEd.WikedInitButtonInitButton = function() {
WikEdInitObjectwikEd.InitObject(wikEdConfig['wikEd.config.button'], {
 
// workaround for mozilla 3.0 bug 441087: objId = obj.id; eventShiftKey = event.shiftKey;
 
// format top
1: ['wikEdUndo', 'wikEdButtonInactive', wikEdConfig['wikEd.config.text']['wikEdUndo title'], wikEdConfig['wikEd.config.image']['undo'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdUndo alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
2: ['wikEdRedo', 'wikEdButtonInactive', wikEdConfig['wikEd.config.text']['wikEdRedo title'], wikEdConfig['wikEd.config.image']['redo'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdRedo alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
3: ['wikEdBold', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdBold title'], wikEdConfig['wikEd.config.image']['bold'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdBold alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
4: ['wikEdItalic', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdItalic title'], wikEdConfig['wikEd.config.image']['italic'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdItalic alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
5: ['wikEdUnderline', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdUnderline title'], wikEdConfig['wikEd.config.image']['underline'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdUnderline alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
6: ['wikEdStrikethrough', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdStrikethrough title'], wikEdConfig['wikEd.config.image']['strikethrough'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdStrikethrough alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
7: ['wikEdNowiki', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdNowiki title'], wikEdConfig['wikEd.config.image']['nowiki'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdNowiki alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
8: ['wikEdSuperscript', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdSuperscript title'], wikEdConfig['wikEd.config.image']['superscript'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdSuperscript alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
9: ['wikEdSubscript', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdSubscript title'], wikEdConfig['wikEd.config.image']['subscript'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdSubscript alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
10: ['wikEdRef', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdRef title'], wikEdConfig['wikEd.config.image']['ref'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdRef alt'], 'if (!eventShiftKey) { WikEdEditButtonwikEd.EditButton(obj, \'wikEdRef\'); } else { WikEdEditButtonwikEd.EditButton(obj, \'wikEdRefNamed\'); }' ],
12: ['wikEdCase', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdCase title'], wikEdConfig['wikEd.config.image']['case'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdCase alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
80: ['wikEdSort', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdSort title'], wikEdConfig['wikEd.config.image']['sort'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdSort alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
25: ['wikEdRedirect', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdRedirect title'], wikEdConfig['wikEd.config.image']['redirect'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdRedirect alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
13: ['wikEdUndoAll', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdUndoAll title'], wikEdConfig['wikEd.config.image']['undoAll'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdUndoAll alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
14: ['wikEdRedoAll', 'wikEdButtonInactive', wikEdConfig['wikEd.config.text']['wikEdRedoAll title'], wikEdConfig['wikEd.config.image']['redoAll'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdRedoAll alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
 
// format bottom
15: ['wikEdWikiLink', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdWikiLink title'], wikEdConfig['wikEd.config.image']['wikiLink'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdWikiLink alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
16: ['wikEdWebLink', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdWebLink title'], wikEdConfig['wikEd.config.image']['webLink'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdWebLink alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
17: ['wikEdHeading', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdHeading title'], wikEdConfig['wikEd.config.image']['heading'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdHeading alt'], 'if (!eventShiftKey) { WikEdEditButtonwikEd.EditButton(obj, \'wikEdIncreaseHeading\'); } else { WikEdEditButtonwikEd.EditButton(obj, \'wikEdDecreaseHeading\'); }' ],
19: ['wikEdBulletList', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdBulletList title'], wikEdConfig['wikEd.config.image']['bulletList'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdBulletList alt'], 'if (!eventShiftKey) { WikEdEditButtonwikEd.EditButton(obj, \'wikEdIncreaseBulletList\'); } else { WikEdEditButtonwikEd.EditButton(obj, \'wikEdDecreaseBulletList\'); }' ],
20: ['wikEdNumberList', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdNumberList title'], wikEdConfig['wikEd.config.image']['numberList'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdNumberList alt'], 'if (!eventShiftKey) { WikEdEditButtonwikEd.EditButton(obj, \'wikEdIncreaseNumberList\'); } else { WikEdEditButtonwikEd.EditButton(obj, \'wikEdDecreaseNumberList\'); }' ],
21: ['wikEdIndentList', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdIndentList title'], wikEdConfig['wikEd.config.image']['indentList'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdIndentList alt'], 'if (!eventShiftKey) { WikEdEditButtonwikEd.EditButton(obj, \'wikEdIncreaseIndentList\'); } else { WikEdEditButtonwikEd.EditButton(obj, \'wikEdDecreaseIndentList\'); }' ],
22: ['wikEdDefinitionList', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdDefinitionList title'], wikEdConfig['wikEd.config.image']['definitionList'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdDefinitionList alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
23: ['wikEdImage', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdImage title'], wikEdConfig['wikEd.config.image']['image'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdImage alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
24: ['wikEdTable', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdTable title'], wikEdConfig['wikEd.config.image']['table'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdTable alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
11: ['wikEdReferences', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdReferences title'], wikEdConfig['wikEd.config.image']['references'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdReferences alt'], 'if (!eventShiftKey) { WikEdEditButtonwikEd.EditButton(obj, objId); } else { WikEdEditButtonwikEd.EditButton(obj, \'wikEdReferencesSection\'); }' ],
 
// wikify, textify
26: ['wikEdWikify', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdWikify title'], wikEdConfig['wikEd.config.image']['wikify'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdWikify alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
27: ['wikEdTextify', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdTextify title'], wikEdConfig['wikEd.config.image']['textify'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdTextify alt'], 'if (eventShiftKey) { WikEdEditButtonwikEd.EditButton(obj, objId, \'shift\'); } else { WikEdEditButtonwikEd.EditButton(obj, objId); }' ],
 
// control top
77: ['wikEdRefHide', 'wikEdButtonUnchecked', wikEdConfig['wikEd.config.text']['wikEdRefHide title'], wikEdConfig['wikEd.config.image']['refHide'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdRefHide alt'], 'WikEdButtonwikEd.Button(obj, objId, true);' ],
29: ['wikEdTextZoom', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdTextZoom title'], wikEdConfig['wikEd.config.image']['textZoom'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdTextZoom alt'], 'if (!eventShiftKey) { WikEdButtonwikEd.Button(obj, \'wikEdTextZoomDown\'); } else { WikEdButtonwikEd.Button(obj, \'wikEdTextZoomUp\'); }' ],
30: ['wikEdClearHistory', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdClearHistory title'], wikEdConfig['wikEd.config.image']['clearHistory'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdClearHistory alt'], 'WikEdButtonwikEd.Button(obj, objId);' ],
31: ['wikEdScrollToPreview', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdScrollToPreview title'], wikEdConfig['wikEd.config.image']['scrollToPreviewDown'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdScrollToPreview alt'], 'WikEdButtonwikEd.Button(obj, objId);' ],
32: ['wikEdScrollToEdit', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdScrollToEdit title'], wikEdConfig['wikEd.config.image']['scrollToEditDown'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdScrollToEdit alt'], 'WikEdButtonwikEd.Button(obj, objId);' ],
 
// control bottom
33: ['wikEdUseWikEd', 'wikEdButtonChecked', wikEdConfig['wikEd.config.text']['wikEdUseWikEd title'], wikEdConfig['wikEd.config.image']['useWikEd'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdUseWikEd alt'], 'WikEdButtonwikEd.Button(obj, objId, true);' ],
34: ['wikEdHighlightSyntax', 'wikEdButtonUnchecked', wikEdConfig['wikEd.config.text']['wikEdHighlightSyntax title'], wikEdConfig['wikEd.config.image']['highlightSyntax'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdHighlightSyntax alt'], 'WikEdButtonwikEd.Button(obj, objId, true);' ],
35: ['wikEdSource', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdSource title'], wikEdConfig['wikEd.config.image']['source'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdSource alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
75: ['wikEdCloseToolbar', 'wikEdButtonUnchecked', wikEdConfig['wikEd.config.text']['wikEdCloseToolbar title'], wikEdConfig['wikEd.config.image']['closeToolbar'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdCloseToolbar alt'], 'WikEdButtonwikEd.Button(obj, objId, true);' ],
36: ['wikEdUsing', 'wikEdButtonUnchecked', wikEdConfig['wikEd.config.text']['wikEdUsing title'], wikEdConfig['wikEd.config.image']['using'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdUsing alt'], 'WikEdButtonwikEd.Button(obj, objId, true);' ],
37: ['wikEdFullScreen', 'wikEdButtonUnchecked', wikEdConfig['wikEd.config.text']['wikEdFullScreen title'], wikEdConfig['wikEd.config.image']['fullScreen'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFullScreen alt'], 'WikEdButtonwikEd.Button(obj, objId, true);' ],
79: ['wikEdTableMode', 'wikEdButtonUnchecked', wikEdConfig['wikEd.config.text']['wikEdTableMode title'], wikEdConfig['wikEd.config.image']['tableMode'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdTableMode alt'], 'WikEdButtonwikEd.Button(obj, objId, true);' ],
 
// find top
39: ['wikEdFindAll', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFindAll title'], wikEdConfig['wikEd.config.image']['findAll'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFindAll alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
40: ['wikEdFindPrev', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFindPrev title'], wikEdConfig['wikEd.config.image']['findPrev'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFindPrev alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
41: ['wikEdFindNext', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFindNext title'], wikEdConfig['wikEd.config.image']['findNext'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFindNext alt'], 'if (eventShiftKey) { WikEdEditButtonwikEd.EditButton(obj, objId, \'shift\'); } else { WikEdEditButtonwikEd.EditButton(obj, objId); }' ],
43: ['wikEdJumpPrev', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdJumpPrev title'], wikEdConfig['wikEd.config.image']['jumpPrev'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdJumpPrev alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
44: ['wikEdJumpNext', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdJumpNext title'], wikEdConfig['wikEd.config.image']['jumpNext'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdJumpNext alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
 
// find bottom
46: ['wikEdReplaceAll', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdReplaceAll title'], wikEdConfig['wikEd.config.image']['replaceAll'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdReplaceAll alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
47: ['wikEdReplacePrev', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdReplacePrev title'], wikEdConfig['wikEd.config.image']['replacePrev'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdReplacePrev alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
48: ['wikEdReplaceNext', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdReplaceNext title'], wikEdConfig['wikEd.config.image']['replaceNext'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdReplaceNext alt'], 'if (eventShiftKey) { WikEdEditButtonwikEd.EditButton(obj, objId, \'shift\'); } else { WikEdEditButtonwikEd.EditButton(obj, objId); }' ],
49: ['wikEdCaseSensitive', 'wikEdButtonUnchecked', wikEdConfig['wikEd.config.text']['wikEdCaseSensitive title'], wikEdConfig['wikEd.config.image']['caseSensitive'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdCaseSensitive alt'], 'WikEdButtonwikEd.Button(obj, objId, true);' ],
50: ['wikEdRegExp', 'wikEdButtonUnchecked', wikEdConfig['wikEd.config.text']['wikEdRegExp title'], wikEdConfig['wikEd.config.image']['regExp'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdRegExp alt'], 'WikEdButtonwikEd.Button(obj, objId, true);' ],
51: ['wikEdFindAhead', 'wikEdButtonUnchecked', wikEdConfig['wikEd.config.text']['wikEdFindAhead title'], wikEdConfig['wikEd.config.image']['findAhead'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFindAhead alt'], 'WikEdButtonwikEd.Button(obj, objId, true);' ],
 
// fix top
52: ['wikEdFixBasic', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFixBasic title'], wikEdConfig['wikEd.config.image']['fixBasic'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFixBasic alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
53: ['wikEdFixHtml', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFixHtml title'], wikEdConfig['wikEd.config.image']['fixHtml'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFixHtml alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
54: ['wikEdFixCaps', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFixCaps title'], wikEdConfig['wikEd.config.image']['fixCaps'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFixCaps alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
55: ['wikEdFixUnicode', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFixUnicode title'], wikEdConfig['wikEd.config.image']['fixUnicode'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFixUnicode alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
81: ['wikEdFixRedirect', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFixRedirect title'], wikEdConfig['wikEd.config.image']['fixRedirect'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFixRedirect alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
56: ['wikEdFixAll', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFixAll title'], wikEdConfig['wikEd.config.image']['fixAll'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFixAll alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
57: ['wikEdFixRegExTypo', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFixRegExTypo title'], wikEdConfig['wikEd.config.image']['fixRegExTypo'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFixRegExTypo alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
 
// fix bottom
58: ['wikEdFixDashes', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFixDashes title'], wikEdConfig['wikEd.config.image']['fixDash'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFixDashes alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
59: ['wikEdFixPunct', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFixPunct title'], wikEdConfig['wikEd.config.image']['fixPunct'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFixPunct alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
60: ['wikEdFixMath', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFixMath title'], wikEdConfig['wikEd.config.image']['fixMath'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFixMath alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
61: ['wikEdFixChem', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFixChem title'], wikEdConfig['wikEd.config.image']['fixChem'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFixChem alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
62: ['wikEdFixUnits', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdFixUnits title'], wikEdConfig['wikEd.config.image']['fixUnits'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdFixUnits alt'], 'WikEdEditButtonwikEd.EditButton(obj, objId);' ],
 
// preview top
65: ['wikEdClose', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdClose title'], wikEdConfig['wikEd.config.image']['close'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdClose alt'], 'WikEdButtonwikEd.Button(obj, objId);' ],
66: ['wikEdScrollToPreview2', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdScrollToPreview2 title'], wikEdConfig['wikEd.config.image']['scrollToPreviewDown'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdScrollToPreview2 alt'], 'WikEdButtonwikEd.Button(obj, objId);' ],
67: ['wikEdScrollToEdit2', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdScrollToEdit2 title'], wikEdConfig['wikEd.config.image']['scrollToEdit'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdScrollToEdit2 alt'], 'WikEdButtonwikEd.Button(obj, objId);' ],
 
// preview bottom
70: ['wikEdClose2', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdClose2 title'], wikEdConfig['wikEd.config.image']['close'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdClose2 alt'], 'WikEdButtonwikEd.Button(obj, objId);' ],
71: ['wikEdScrollToPreview3', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdScrollToPreview3 title'], wikEdConfig['wikEd.config.image']['scrollToPreview'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdScrollToPreview3 alt'], 'WikEdButtonwikEd.Button(obj, objId);' ],
72: ['wikEdScrollToEdit3', 'wikEdButton', wikEdConfig['wikEd.config.text']['wikEdScrollToEdit3 title'], wikEdConfig['wikEd.config.image']['scrollToEdit'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdScrollToEdit3 alt'], 'WikEdButtonwikEd.Button(obj, objId);' ],
 
// jump
78: ['wikEdDiff', 'wikEdButtonUnchecked', wikEdConfig['wikEd.config.text']['wikEdDiff title'], wikEdConfig['wikEd.config.image']['wikEdDiff'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdDiff alt'], 'WikEdButtonwikEd.Button(obj, objId, true);' ],
74: ['wikEdScrollToEdit4', 'wikEdButtonSolo', wikEdConfig['wikEd.config.text']['wikEdScrollToEdit4 title'], wikEdConfig['wikEd.config.image']['scrollToEditDown'], '16', '16', wikEdConfig['wikEd.config.text']['wikEdScrollToEdit4 alt'], 'WikEdButtonwikEd.Button(obj, objId);' ],
 
// dummy
76: ['wikEdDummy', 'wikEdButtonDummy', '', wikEdConfig['wikEd.config.image']['dummy'], '16', '16', '', '' ]
});
};
 
// button access keys
if (typeof(wikEdConfig['wikEd.config.buttonKey']) == 'undefined') { wikEdConfig['wikEd.config.buttonKey'] = {}; }
 
// WikedInitButtonKeywikEd.InitButtonKey: define accesskeys for edit buttons (wikEd button number: [key string, JS key code])
windowwikEd.WikedInitButtonKeyInitButtonKey = function() {
WikEdInitObjectwikEd.InitObject(wikEdConfig['wikEd.config.buttonKey'], {
26: ['b', 66], // wikify
27: ['o', 79], // textify
Line 992 ⟶ 996:
 
// button bars (id, class, button numbers)
if (typeof(wikEdConfig['wikEd.config.buttonBar']) == 'undefined') { wikEdConfig['wikEd.config.buttonBar'] = {}; }
 
// WikedInitButtonBarwikEd.InitButtonBar: define built-in button bars (id outer, class outer, id inner, class inner, height, grip title, button numbers)
windowwikEd.WikedInitButtonBarInitButtonBar = function() {
WikEdInitObjectwikEd.InitObject(wikEdConfig['wikEd.config.buttonBar'], {
'format': ['wikEdButtonBarFormat', 'wikEdButtonBarFormat', 'wikEdButtonsFormat', 'wikEdButtonsFormat', 44, wikEdConfig['wikEd.config.text']['wikEdGripFormat title'], [1,2,3,4,5,6,7,8,9,10,12,13,14,'br',15,16,17,19,20,21,22,23,24,11,80,25,76] ],
'textify': ['wikEdButtonBarTextify', 'wikEdButtonBarTextify', 'wikEdButtonsTextify', 'wikEdButtonsTextify', 44, wikEdConfig['wikEd.config.text']['wikEdGripTextify title'], [26,'br',27] ],
'custom1': ['wikEdButtonBarCustom1', 'wikEdButtonBarCustom1', 'wikEdButtonsCustom1', 'wikEdButtonsCustom1', 44, wikEdConfig['wikEd.config.text']['wikEdGripCustom1 title'], [ ] ],
'find': ['wikEdButtonBarFind', 'wikEdButtonBarFind', 'wikEdButtonsFind', 'wikEdButtonsFind', 44, wikEdConfig['wikEd.config.text']['wikEdGripFind title'], [39,40,'find',41,76,43,44,'br',46,47,'replace',48,49,50,51] ],
'fix': ['wikEdButtonBarFix', 'wikEdButtonBarFix', 'wikEdButtonsFix', 'wikEdButtonsFix', 44, wikEdConfig['wikEd.config.text']['wikEdGripFix title'], [52,53,54,55,56,81,'br',58,59,60,61,62,57] ],
'custom2': ['wikEdButtonBarCustom2', 'wikEdButtonBarCustom2', 'wikEdButtonsCustom2', 'wikEdButtonsCustom2', 44, wikEdConfig['wikEd.config.text']['wikEdGripCustom2 title'], [ ] ],
'control': ['wikEdButtonBarControl', 'wikEdButtonBarControl', 'wikEdButtonsControl', 'wikEdButtonsControl', 44, wikEdConfig['wikEd.config.text']['wikEdGripControl title'], [77,29,30,35,31,32,'br',33,34,79,75,36,78,37] ],
'preview': ['wikEdButtonBarPreview', 'wikEdButtonBarPreview', 'wikEdButtonsPreview', 'wikEdButtonsPreview', 0, null, [66,67,65] ],
'preview2': ['wikEdButtonBarPreview2', 'wikEdButtonBarPreview2', 'wikEdButtonsPreview2', 'wikEdButtonsPreview2', 0, null, [71,72,70] ],
Line 1,011 ⟶ 1,015:
 
// history length for find, replace, and summary fields
if (typeof(wikEdConfig['wikEd.config.historyLength']) == 'undefined') { wikEdConfig['wikEd.config.historyLength'] = {}; }
windowwikEd.WikedInitHistoryLengthInitHistoryLength = function() {
WikEdInitObjectwikEd.InitObject(wikEdConfig['wikEd.config.historyLength'], {
'find': 10,
'replace': 10,
Line 1,020 ⟶ 1,024:
};
 
// presets for combo input fields dropdown options, {wikEdUsingwikEd.using} appends a link to this script
if (typeof(wikEdConfig['wikEd.config.comboPresetOptions']) == 'undefined') { wikEdConfig['wikEd.config.comboPresetOptions'] = {}; }
if (typeof(wikEdConfig['wikEd.config.comboPresetOptions']['summary']) == 'undefined') { wikEdConfig['wikEd.config.comboPresetOptions']['summary'] = wikEdConfig['wikEd.config.text']['wikEdPresetSummary']; }
 
// text for summary link to this script
if (typeof(wikEdConfig['wikEd.config.summaryUsing']) == 'undefined') { wikEdConfig['wikEd.config.summaryUsing'] = wikEdConfig['wikEd.config.text']['wikEdSummaryUsing']; }
 
// expiration time span for permanent cookies in seconds
if (typeof(wikEdConfig['wikEd.config.cookieExpireSec']) == 'undefined') { wikEdConfig['wikEd.config.cookieExpireSec'] = 1 * 30 * 24 * 60 * 60; }
 
// disable wikEd preset
if (typeof(wikEdConfig['wikEd.config.disabledPreset']) == 'undefined') { wikEdConfig['wikEd.config.disabledPreset'] = false; }
 
// find ahead as you type checkbox preset
if (typeof(wikEdConfig['wikEd.config.findAheadSelected']) == 'undefined') { wikEdConfig['wikEd.config.findAheadSelected'] = true; }
 
// highlight syntax preset
if (typeof(wikEdConfig['wikEd.config.highlightSyntaxPreset']) == 'undefined') { wikEdConfig['wikEd.config.highlightSyntaxPreset'] = true; }
 
// enable wikEd preset
if (typeof(wikEdConfig['wikEd.config.useWikEdPreset']) == 'undefined') { wikEdConfig['wikEd.config.useWikEdPreset'] = true; }
 
// add '...using wikEd' to summary preset
if (typeof(wikEdConfig['wikEd.config.usingPreset']) == 'undefined') { wikEdConfig['wikEd.config.usingPreset'] = false; }
 
// scroll to edit field on non-preview pages
if (typeof(wikEdConfig['wikEd.config.scrollToEdit']) == 'undefined') { wikEdConfig['wikEd.config.scrollToEdit'] = true; }
 
// focus the edit field on non-preview pages
if (typeof(wikEdConfig['wikEd.config.focusEdit']) == 'undefined') { wikEdConfig['wikEd.config.focusEdit'] = true; }
 
// wikEdDiffwikEd.diff preset
if (typeof(wikEdConfig['wikEd.config.diffPreset']) == 'undefined') { wikEdConfig['wikEd.config.diffPreset'] = false; }
 
// fullscreen mode preset
if (typeof(wikEdConfig['wikEd.config.fullScreenModePreset']) == 'undefined') { wikEdConfig['wikEd.config.fullScreenModePreset'] = false; }
 
// show MediaWiki toolbar preset
if (typeof(wikEdConfig['wikEd.config.closeToolbarPreset']) == 'undefined') { wikEdConfig['wikEd.config.closeToolbarPreset'] = false; }
 
// hide ref tags preset
if (typeof(wikEdConfig['wikEd.config.refHidePreset']) == 'undefined') { wikEdConfig['wikEd.config.refHidePreset'] = false; }
 
// text size adjustment for edit window (percentage)
if (typeof(wikEdConfig['wikEd.config.textSizeAdjust']) == 'undefined') { wikEdConfig['wikEd.config.textSizeAdjust'] = 100; }
 
// remove invisible syntax highlighting comments after closing tag
if (typeof(wikEdConfig['wikEd.config.removeHighlightComments']) == 'undefined') { wikEdConfig['wikEd.config.removeHighlightComments'] = true; }
 
// show the text-to-source button for testing purposes
if (typeof(wikEdConfig['wikEd.config.showSourceButton']) == 'undefined') { wikEdConfig['wikEd.config.showSourceButton'] = false; }
 
// show the using-wikEd button
if (typeof(wikEdConfig['wikEd.config.showUsingButton']) == 'undefined') { wikEdConfig['wikEd.config.showUsingButton'] = false; }
 
// the wikEd help page link to be displayed after the editing help link, an empty string disables the link
if (typeof(wikEdConfig['wikEd.config.helpPageLink']) == 'undefined') { wikEdConfig['wikEd.config.helpPageLink'] = wikEdConfig['wikEd.config.text']['wikEdHelpPageLink']; }
 
// enable external diff script
if (typeof(wikEdConfig['wikEd.config.loadDiffScript']) == 'undefined') { wikEdConfig['wikEd.config.loadDiffScript'] = true; }
 
// enable external wikEdDiffwikEd.diff script
if (typeof(wikEdConfig['wikEd.config.loadDiff']) == 'undefined') { wikEdConfig['wikEd.config.loadDiff'] = true; }
 
// enable external InstaView script
if (typeof(wikEdConfig['wikEd.config.loadInstaView']) == 'undefined') { wikEdConfig['wikEd.config.loadInstaView'] = true; }
 
// enable external IERange script
if (typeof(wikEdConfig['wikEd.config.loadIERange']) == 'undefined') { wikEdConfig['wikEd.config.loadIERange'] = true; }
 
// RegExTypoFix rules page, the address must have the exact same ___domain name as the used wiki
if (typeof(wikEdConfig['wikEd.config.regExTypoFixURL']) == 'undefined') { wikEdConfig['wikEd.config.regExTypoFixURL'] = wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?title=Wikipedia:AutoWikiBrowser/Typos&action=raw'; }
 
// enable RegExTypoFix button (http://en.wikipedia.org/wiki/User:Mboverload/RegExTypoFix)
if (typeof(wikEdConfig['wikEd.config.regExTypoFix']) == 'undefined') { wikEdConfig['wikEd.config.regExTypoFix'] = false; }
 
// enable highlighting as links
if (typeof(wikEdConfig['wikEd.config.followHighlightedLinks']) == 'undefined') { wikEdConfig['wikEd.config.followHighlightedLinks'] = false; }
 
// skip the browser detection to run wikEd under IE and Opera
if (typeof(wikEdConfig['wikEd.config.skipBrowserTest']) == 'undefined') { wikEdConfig['wikEd.config.skipBrowserTest'] = false; }
 
// skip the script test that disables wikEd if certain scripts are present
if (typeof(wikEdConfig['wikEd.config.skipScriptTest']) == 'undefined') { wikEdConfig['wikEd.config.skipScriptTest'] = false; }
 
// skip the read-only detection
if (typeof(wikEdConfig['wikEd.config.skipReadOnlyTest']) == 'undefined') { wikEdConfig['wikEd.config.skipReadOnlyTest'] = false; }
 
// button access keys
if (typeof(wikEdConfig['wikEd.config.incompatibleScripts']) == 'undefined') { wikEdConfig['wikEd.config.incompatibleScripts'] = {}; }
 
// WikedInitButtonKeywikEd.InitButtonKey: define accesskeys for edit buttons (wikEd button number: [key string, JS key code])
windowwikEd.WikedInitIncompatibleScriptsInitIncompatibleScripts = function() {
WikEdInitObjectwikEd.InitObject(wikEdConfig['wikEd.config.incompatibleScripts'], {
'CKEditor': 'ckeditor.js',
'FCKEditor': 'fckeditor.js'
Line 1,120 ⟶ 1,124:
 
// set the button bar grip width in px
if (typeof(wikEdConfig['wikEd.config.buttonBarGripWidth']) == 'undefined') { wikEdConfig['wikEd.config.buttonBarGripWidth'] = 8; }
 
// enable local preview (Pilaf's InstaView)
if (typeof(wikEdConfig['wikEd.config.useLocalPreview']) == 'undefined') { wikEdConfig['wikEd.config.useLocalPreview'] = true; }
 
// allow ajax requests from local copy for testing, also defined in wikEdDiffwikEd.diff.js
if (typeof(wikEdConfig['wikEd.config.allowLocalAjax']) == 'undefined') { wikEdConfig['wikEd.config.allowLocalAjax'] = false; }
 
// enable server preview (Ajax)
if (typeof(wikEdConfig['wikEd.config.useAjaxPreview']) == 'undefined') { wikEdConfig['wikEd.config.useAjaxPreview'] = true; }
 
// enable appending '<references/> for Ajax section previews
if (typeof(wikEdConfig['wikEd.config.SectionPreviewRefs']) == 'undefined') { wikEdConfig['wikEd.config.SectionPreviewRefs'] = true; }
 
// enable auto update (Ajax)
if (typeof(wikEdConfig['wikEd.config.autoUpdate']) == 'undefined') { wikEdConfig['wikEd.config.autoUpdate'] = true; }
 
// hours between update check (monobook.js)
if (typeof(wikEdConfig['wikEd.config.autoUpdateHours']) == 'undefined') { wikEdConfig['wikEd.config.autoUpdateHours'] = 20; }
 
// hours between update check (Greasemonkey)
if (typeof(wikEdConfig['wikEd.config.autoUpdateHoursGM']) == 'undefined') { wikEdConfig['wikEd.config.autoUpdateHoursGM'] = 40; }
 
// auto update: version url (Ajax)
if (typeof(wikEdConfig['wikEd.config.autoUpdateUrl']) == 'undefined') { wikEdConfig['wikEd.config.autoUpdateUrl'] = wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?title=User:Cacycle/wikEd_current_version&action=raw&maxage=0'; }
 
// auto update: script url for Greasemonkey update
if (typeof(wikEdConfig['wikEd.config.autoUpdateScriptUrl']) == 'undefined') { wikEdConfig['wikEd.config.autoUpdateScriptUrl'] = wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Cacycle/wikEd.user.js'; }
 
// show complete unshortened article text for local diff, also defined in wikEdDiffwikEd.diff.js
if (typeof(wikEdConfig['wikEd.config.fullDiff']) == 'undefined') { wikEdConfig['wikEd.config.fullDiff'] = false; }
 
// make links ctrl-clickable
if (typeof(wikEdConfig['wikEd.config.linkify']) == 'undefined') { wikEdConfig['wikEd.config.linkify'] = true; }
 
// absolute instead of relative linkify links, URL with "$1" as article name placeholder
if (typeof(wikEd.config.linkifyArticlePath) == 'undefined') { wikEd.config.linkifyArticlePath = null; }
 
// hide refs and templates in newbie mode
if (typeof(wikEdConfig['wikEd.config.hideContent']) == 'undefined') { wikEdConfig['wikEd.config.hideContent'] = true; }
 
// wikify table parameters, replaces original table parameters with this string
if (typeof(wikEdConfig['wikEd.config.wikifyTableParameters']) == 'undefined') { wikEdConfig['wikEd.config.wikifyTableParameters'] = ''; }
 
// do not rearrange page elements
if (typeof(wikEdConfig['wikEd.config.noRearrange']) == 'undefined') { wikEdConfig['wikEd.config.noRearrange'] = false; }
 
// use French rules for fix punctuation
if (typeof(wikEdConfig['wikEd.config.fixPunctFrench']) == 'undefined') { wikEdConfig['wikEd.config.fixPunctFrench'] = false; }
 
// wikEdConfig['wikEd.config.setupHook'], executed after wikEd has been set up, usage: wikEdConfig['wikEd.config.setupHook'].push(YourFunction);
if (typeof(wikEdConfig['wikEd.config.setupHook']) == 'undefined') { wikEdConfig['wikEd.config.setupHook'] = []; }
 
// wikEdConfig['wikEd.config.onHook'], executed after wikEd has been re-enabled by logo click, usage: wikEdConfig['wikEd.config.onHook'].push(YourFunction);
if (typeof(wikEdConfig['wikEd.config.onHook']) == 'undefined') { wikEdConfig['wikEd.config.onHook'] = []; }
 
// wikEdConfig['wikEd.config.offHook'], executed after wikEd has been disabled by logo click, usage: wikEdConfig['wikEd.config.offHook'].push(YourFunction);
if (typeof(wikEdConfig['wikEd.config.offHook']) == 'undefined') { wikEdConfig['wikEd.config.offHook'] = []; }
 
// wikEdConfig['wikEd.config.textareaHook'], executed after classic textarea has been enabled by user, usage: wikEdConfig['wikEd.config.textareaHook'].push(YourFunction);
if (typeof(wikEdConfig['wikEd.config.textareaHook']) == 'undefined') { wikEdConfig['wikEd.config.textareaHook'] = []; }
 
// wikEdConfig['wikEd.config.frameHook'], executed after wikEd edit frame has been enabled by user, usage: wikEdConfig['wikEd.config.frameHook'].push(YourFunction);
if (typeof(wikEdConfig['wikEd.config.frameHook']) == 'undefined') { wikEdConfig['wikEd.config.frameHook'] = []; }
 
// custom edit form id instead of 'editform'
if (typeof(wikEdConfig['wikEd.config.customEditFormId']) == 'undefined') { wikEdConfig['wikEd.config.customEditFormId'] = ''; }
 
// custom textarea id instead of 'wpTextbox1'
if (typeof(wikEdConfig['wikEd.config.customTextAreaId']) == 'undefined') { wikEdConfig['wikEd.config.customTextAreaId'] = ''; }
 
// custom save button id instead of 'wpSave'
if (typeof(wikEdConfig['wikEd.config.customSaveButtonId']) == 'undefined') { wikEdConfig['wikEd.config.customSaveButtonId'] = ''; }
 
// show table mode togle button
if (typeof(wikEdConfig['wikEd.config.showTableModeButton']) == 'undefined') { wikEdConfig['wikEd.config.showTableModeButton'] = false; }
 
// maximal time for syntax highlighting in ms
if (typeof(wikEdConfig['wikEd.config.maxHighlightTime']) == 'undefined') { wikEdConfig['wikEd.config.maxHighlightTime'] = 3000; }
 
// first char of article names is case sensitive (e.g. Wiktionary)
if (typeof(wikEdConfig['wikEd.config.articlesCaseSensitive']) == 'undefined') { wikEdConfig['wikEd.config.articlesCaseSensitive'] = false; }
 
// force immediate update if this version string is newer
if (typeof(wikEdConfig['wikEd.config.forcedUpdate']) == 'undefined') { wikEdConfig['wikEd.config.forcedUpdate'] = ''; }
 
// display highlighting error messages in text
if (typeof(wikEdConfig['wikEd.config.highlightError']) == 'undefined') { wikEdConfig['wikEd.config.highlightError'] = false; }
 
// display preview of files in text
if (typeof(wikEdConfig['wikEd.config.filePreview']) == 'undefined') { wikEdConfig['wikEd.config.filePreview'] = true; }
 
// file preview image size in pixels
if (typeof(wikEdConfig['wikEd.config.filePreviewSize']) == 'undefined') { wikEdConfig['wikEd.config.filePreviewSize'] = 75; }
 
// file preview image size in pixels
if (typeof(wikEdConfig['wikEd.config.antiHighlightBleeding']) == 'undefined') { wikEdConfig['wikEd.config.antiHighlightBleeding'] = true; }
 
// do not hide templates shorter than this number of chars
if (typeof(wikEdConfig['wikEd.config.templNoHideLength']) == 'undefined') { wikEdConfig['wikEd.config.templNoHideLength'] = 40; }
 
// debug window maximal length in chars
if (typeof(wikEdConfig['wikEd.config.debugMaxLength']) == 'undefined') { wikEdConfig['wikEd.config.debugMaxLength'] = 50000; }
 
// debug display of DOM nodes: maximal length of innerHTML in chars
if (typeof(wikEdConfig['wikEd.config.debugInnerHtmlLength']) == 'undefined') { wikEdConfig['wikEd.config.debugInnerHtmlLength'] = 150; }
 
return;
Line 1,230 ⟶ 1,237:
 
// init config
if (typeof(wikEdConfigwikEd.config) == 'undefined') { windowwikEd.wikEdConfigconfig = {}; }
 
// wikEd code home base URL for https compatibility
if (typeof(wikEdConfig['wikEd.config.homeBaseUrlStandard']) == 'undefined') { wikEdConfig['wikEd.config.homeBaseUrlStandard'] = 'http://en.wikipedia.org/'; }
if (typeof(wikEdConfig['wikEd.config.homeBaseUrlSecure']) == 'undefined') { wikEdConfig['wikEd.config.homeBaseUrlSecure'] = 'https://secure.wikimedia.org/wikipedia/en/'; }
 
// set wikEd home base url depending on current page address: standard (http:) or secure (https:)
if (window.___location.protocol == 'https:') {
wikEdConfig['wikEd.config.homeBaseUrl'] = wikEdConfig['wikEd.config.homeBaseUrlSecure'];
}
else {
wikEdConfig['wikEd.config.homeBaseUrl'] = wikEdConfig['wikEd.config.homeBaseUrlStandard'];
}
 
// diff script URL
if (typeof(wikEdConfig['wikEd.config.diffScriptSrc']) == 'undefined') { wikEdConfig['wikEd.config.diffScriptSrc'] = wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?title=User:Cacycle/diff.js&action=raw&ctype=text/javascript'; }
 
// wikEdDiffwikEd.diff script URL, also defined in wikEdDiffwikEd.diff.js
if (typeof(wikEdConfig['wikEd.config.diffSrc']) == 'undefined') { wikEdConfig['wikEd.config.diffSrc'] = wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?title=User:Cacycle/wikEdDiffwikEd.diff.js&action=raw&ctype=text/javascript'; }
 
// InstaView script URL
if (typeof(wikEdConfig['wikEd.config.instaViewSrc']) == 'undefined') { wikEdConfig['wikEd.config.instaViewSrc'] = wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?title=User:Pilaf/include/instaview.js&action=raw&ctype=text/javascript'; }
 
// IERange script URL (MS IE compatibility library)
if (typeof(wikEdConfig['wikEd.config.IERangeSrc']) == 'undefined') { wikEdConfig['wikEd.config.IERangeSrc'] = wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?title=User:Cacycle/ierange.js&action=raw&ctype=text/javascript'; }
 
// wikEd-as-gadget detection, set to true if gadget script name is not MediaWiki:Gadget-wikEd.js
if (typeof(wikEdConfig['wikEd.config.gadget']) == 'undefined') { wikEdConfig['wikEd.config.gadget'] = null; }
 
// duplicate edit warnings from the top of the page to above the edit window
if (typeof(wikEdConfig['wikEd.config.doCloneWarnings']) == 'undefined') { wikEdConfig['wikEd.config.doCloneWarnings'] = true; }
 
// startup debugging
if (typeof(wikEdConfig['wikEd.config.debugStartUp']) == 'undefined') { wikEdConfig['wikEd.config.debugStartUp'] = ''; }
 
// show missing translations
if (typeof(wikEdConfig['wikEd.config.showMissingTranslations']) == 'undefined') { wikEdConfig['wikEd.config.showMissingTranslations'] = false; }
 
// content language default, also used for wikEd UI localization
if (typeof(wikEdConfig['wikEd.config.languageDefault']) == 'undefined') { windowwikEd.wikEdConfigconfig['languageDefault'] = ''; }
 
// load external translation
if (typeof(wikEdConfig['wikEd.config.loadTranslation']) == 'undefined') { windowwikEd.wikEdConfigconfig['loadTranslation'] = true; }
 
// translation javascript URLs
if (typeof(wikEdConfig['wikEd.config.translations']) == 'undefined') { wikEdConfig['wikEd.config.translations'] = {}; }
 
// WikedInitTranslationswikEd.InitTranslations: define translation javascript URLs ('': internal default)
windowwikEd.WikedInitTranslationsInitTranslations = function() {
WikEdInitObjectwikEd.InitObject(wikEdConfig['wikEd.config.translations'], {
'en': '',
'ar': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:ترجمان05/wikEd_international_ar.js',
'zh-hans': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Shibo77/wikEd_international_zh.js',
'zh-hant': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Quest_for_Truth/wikEd_international_zh-hant.js',
'cs': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Sevela.p/wikEd_international_cs.js',
'nl': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Jeronevw/wikEd_international_nl.js',
'eo': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:ArnoLagrange/wikEd-eo.js',
'fi': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Ejs-80/wikEd international fi.js',
'fr': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Leag/wikEd-fr.js',
'de': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Matthias_M./wikEd_international_de.js',
'he': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:שמוליק/wikEd_international_he.js',
'hu': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Csörföly D/wikEd-hu.js',
'it': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Jalo/wikEd_international_it.js',
'ja': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Hatukanezumi/wikEd_international_ja.js',
'ko': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Ilovesabbath/wikEd_international_ko.js',
'dsb': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Michalwiki/wikEd_international_dsb.js',
'ms': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Aviator/wikEd_international_ms.js',
'no': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Dvyjones/wikEd_international_no.js',
'nn': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Frokor/wikEd_international_nn.js',
'pl': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Konradek/wikEd_international_pl.js',
'pt': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Mosca/wikEd_international_pt.js',
'ro': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Roamataa/wikEd_international_ro.js',
'scn': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Meloscn/wikEd_international_scn.js',
'sk': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Helix84/wikEd_international_sk.js',
'sl': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Eleassar/wikEd_international_sl.js',
'es': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Axelei/wikEd_international_es.js',
'sv': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Where_next_Columbus?/wikEd_international_sv.js',
'hsb': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Michalwiki/wikEd_international_hsb.js',
'tr': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Vito_Genovese/wikEd_international_tr.js',
'vi': wikEdConfig['wikEd.config.homeBaseUrl'] + 'w/index.php?action=raw&ctype=text/javascript&title=User:Vinhtantran/wikEd_international_vi.js'
});
};
 
// Mediawiki page and skin detection, logo placement
if (typeof(wikEdConfig['wikEd.config.MediaWikiSkinIds']) == 'undefined') { wikEdConfig['wikEd.config.MediaWikiSkinIds'] = {}; }
 
// WikedInitMediaWikiSkinIdswikEd.InitMediaWikiSkinIds: define Mediawiki page and skin detection, logo placement
// format: skin name: [ dom element to add logo to ('': top right), logo to this list or list contained in this parent element, rearrange page elements, [skin detection element id list] ],
windowwikEd.WikedInitMediaWikiSkinIdsInitMediaWikiSkinIds = function() {
WikEdInitObjectwikEd.InitObject(wikEdConfig['wikEd.config.MediaWikiSkinIds'], {
 
// monobook, also detects simple and myskin
Line 1,360 ⟶ 1,367:
 
//
// WikEdInitGlobalswikEd.InitGlobals: initialize non-configurable variables
//
 
windowwikEd.WikEdInitGlobalsInitGlobals = function() {
 
// global variables
windowwikEd.wikEdTurnedOnturnedOn = false;
windowwikEd.wikEdDisableddisabled = true;
windowwikEd.wikEdUploadEdituploadEdit = false;
windowwikEd.wikEdViewDeletedviewDeleted = false;
windowwikEd.wikEdLanguagelanguage = '';
windowwikEd.wikEdWatchlistEditwatchlistEdit = false;
windowwikEd.wikEdDebugOpendebugOpen = false;
windowwikEd.wikEdPageNamepageName = null;
windowwikEd.wikEdPageNamespacepageNamespace = null;
 
// history
windowwikEd.wikEdFieldHistfieldHist = [];
windowwikEd.wikEdSavedNamesavedName = [];
windowwikEd.wikEdInputElementinputElement = [];
windowwikEd.wikEdSelectElementselectElement = [];
 
windowwikEd.wikEdCheckMarkercheckMarker = [];
windowwikEd.wikEdCheckMarkercheckMarker[true] = '♦';
windowwikEd.wikEdCheckMarkercheckMarker[false] = '◊';
 
// undo all, redo all
windowwikEd.wikEdOrigVersionorigVersion = '';
windowwikEd.wikEdLastVersionlastVersion = null;
 
// global dom elements
windowwikEd.wikEdLogologo = null;
windowwikEd.wikEdLogoListlogoList = null;
 
windowwikEd.wikEdDebugdebug = null;
windowwikEd.wikEdWikiEditorwikiEditor = null;
windowwikEd.wikEdWikiEditorFramewikiEditorFrame = null;
windowwikEd.wikEdWikiEditorTopwikiEditorTop = null;
windowwikEd.wikEdWikiEditorBarwikiEditorBar = null;
windowwikEd.wikEdWikiEditorBottomwikiEditorBottom = null;
windowwikEd.wikEdWikiEditorTextwikiEditorText = null;
windowwikEd.wikEdTextareaContainertextareaContainer = null;
windowwikEd.wikEdToolbartoolbar = null;
windowwikEd.wikEdFrameInnerframeInner = null;
windowwikEd.wikEdFrameOuterframeOuter = null;
windowwikEd.wikEdFrameframe = null;
windowwikEd.wikEdFrameBodyframeBody = null;
windowwikEd.wikEdFrameDocumentframeDocument = null;
windowwikEd.wikEdFrameWindowframeWindow = null;
 
windowwikEd.wikEdInputWrapperinputWrapper = null;
windowwikEd.wikEdEditorWrappereditorWrapper = null;
windowwikEd.wikEdToolbarWrappertoolbarWrapper = null;
windowwikEd.wikEdCaptchaWrappercaptchaWrapper = null;
windowwikEd.wikEdDebugWrapperdebugWrapper = null;
windowwikEd.wikEdEditWrappereditWrapper = null;
windowwikEd.wikEdTextareaWrappertextareaWrapper = null;
windowwikEd.wikEdFrameWrapperframeWrapper = null;
windowwikEd.wikEdConsoleWrapperconsoleWrapper = null;
windowwikEd.wikEdButtonsWrapperbuttonsWrapper = null;
windowwikEd.wikEdSummaryWrappersummaryWrapper = null;
windowwikEd.wikEdSummaryInputWrappersummaryInputWrapper = null;
windowwikEd.wikEdSummaryOptionssummaryOptions = null;
windowwikEd.wikEdSubmitWrappersubmitWrapper = null;
windowwikEd.wikEdSubmitButtonsWrappersubmitButtonsWrapper = null;
windowwikEd.wikEdLocalPrevWrapperlocalPrevWrapper = null;
windowwikEd.wikEdInsertWrapperinsertWrapper = null;
 
// edit form fields
windowwikEd.wikEdEditFormeditForm = null;
windowwikEd.wikEdEdittimeedittime = null;
windowwikEd.wikEdEditTokeneditToken = null;
windowwikEd.wikEdTextareatextarea = null;
 
windowwikEd.wikEdButtonsWrapperWidthbuttonsWrapperWidth = {};
windowwikEd.wikEdButtonBarFormatbuttonBarFormat = null;
windowwikEd.wikEdButtonBarTextifybuttonBarTextify = null;
windowwikEd.wikEdButtonBarCustom1buttonBarCustom1 = null;
windowwikEd.wikEdButtonBarFindbuttonBarFind = null;
windowwikEd.wikEdButtonBarFixbuttonBarFix = null;
windowwikEd.wikEdButtonBarCustom2buttonBarCustom2 = null;
windowwikEd.wikEdButtonBarControlbuttonBarControl = null;
windowwikEd.wikEdButtonBarPreviewbuttonBarPreview = null;
windowwikEd.wikEdButtonBarPreview2buttonBarPreview2 = null;
windowwikEd.wikEdButtonBarJumpbuttonBarJump = null;
windowwikEd.wikEdPreviewBoxpreviewBox = null;
windowwikEd.wikEdClearSummaryclearSummary = null;
windowwikEd.wikEdClearSummaryImgclearSummaryImg = null;
 
windowwikEd.wikEdCaseSensitivecaseSensitive = null;
windowwikEd.wikEdRegExpregExp = null;
windowwikEd.wikEdFindAheadfindAhead = null;
wikEd.fixRegExTypo = null;
 
windowwikEd.wikEdFindTextfindText = null;
windowwikEd.wikEdReplaceTextreplaceText = null;
windowwikEd.wikEdSummaryTextsummaryText = null;
windowwikEd.wikEdSummarySelectsummarySelect = null;
windowwikEd.wikEdSummaryTextWidthsummaryTextWidth = null;
 
windowwikEd.wikEdEditOptionseditOptions = null;
windowwikEd.wikEdEditHelpeditHelp = null;
wikEd.saveButton = null;
wikEd.previewButton = null;
wikEd.lDiffButton = null;
wikEd.localPreview = null;
wikEd.localDiff = null;
wikEd.diffPreviewButton = null;
wikEd.summaryLabel = null;
 
wikEd.highlightNamedHideButtonsStylesheet = null;
window.wikEdSaveButton = null;
window.wikEdPreviewButton = null;
window.wikEdLDiffButton = null;
window.wikEdLocalPreview = null;
window.wikEdLocalDiff = null;
window.wikEdDiffPreviewButton = null;
window.wikEdSummaryLabel = null;
 
window.WikEdHighlightNamedHideButtonsStylesheet = null;
 
// frame resizing
windowwikEd.wikEdResizeGripWidthresizeGripWidth = 16;
windowwikEd.wikEdResizeGripHeightresizeGripHeight = 16;
wikEd.resizeFramePageYStart = 0;
window.wikEdResizeFramePageYStart = 0;
wikEd.resizeFramePageXStart = 0;
window.wikEdResizeFramePageXStart = 0;
wikEd.resizeFrameOffsetHeight = 0;
window.wikEdResizeFrameOffsetHeight = 0;
wikEd.resizeFrameOffsetWidth = 0;
window.wikEdResizeFrameOffsetWidth = 0;
windowwikEd.wikEdResizeFrameMouseOverGripresizeFrameMouseOverGrip = false;
windowwikEd.wikEdResizeFrameActiveresizeFrameActive = false;
windowwikEd.wikEdFrameHeightframeHeight = '';
windowwikEd.wikEdFrameWidthframeWidth = '';
windowwikEd.wikEdTextareaHeighttextareaHeight = '';
windowwikEd.wikEdTextareaWidthtextareaWidth = '';
 
// various
windowwikEd.wikEdInsertCounterinsertCounter = 0;
windowwikEd.wikEdEditButtonHandlereditButtonHandler = {};
wikEd.textareaBorderHeight = 0;
window.wikEdTextareaBorderHeight = 0;
wikEd.frameBorderHeight = 0;
window.wikEdFrameBorderHeight = 0;
windowwikEd.wikEdFrameBorderWidthframeBorderWidth = 0;
wikEd.textareaOffsetHeightInitial = 0;
window.wikEdTextareaOffsetHeightInitial = 0;
windowwikEd.wikEdClearSummaryWidthclearSummaryWidth = null;
windowwikEd.wikEdFullScreenModefullScreenMode = false;
windowwikEd.wikEdAddNewSectionaddNewSection = null;
windowwikEd.wikEdBrowserNotSupportedbrowserNotSupported = false;
windowwikEd.wikEdFrameScrollTopframeScrollTop = null;
windowwikEd.wikEdTextareaUpdatedtextareaUpdated = null;
windowwikEd.wikEdPreviewIsAjaxpreviewIsAjax = null;
windowwikEd.wikEdButtonKeyCodebuttonKeyCode = [];
windowwikEd.wikEdDirectiondirection = null;
windowwikEd.wikEdTextSizetextSize = 0;
windowwikEd.wikEdTextSizeInittextSizeInit = 0;
windowwikEd.wikEdPreviewPagepreviewPage = false;
windowwikEd.wikEdClonedWarningsclonedWarnings = false;
windowwikEd.wikEdGeSHiCSSgeSHiCSS = [];
 
// override site javascript functions
windowwikEd.WikEdInsertTagsOriginalinsertTagsOriginal = null;
windowwikEd.WikEdInsertAtCursorOriginalinsertAtCursorOriginal = null;
 
// wikEd settings
windowwikEd.wikEdRefHiderefHide = false;
windowwikEd.wikEdUsingusing = false;
windowwikEd.wikEdUseWikEduseWikEd = false;
windowwikEd.wikEdCloseToolbarcloseToolbar = false;
windowwikEd.wikEdHighlightSyntaxhighlightSyntax = false;
windowwikEd.wikEdNoSpellchecknoSpellcheck = false;
windowwikEd.wikEdDiffdiff = false;
windowwikEd.wikEdTableModetableMode = false;
windowwikEd.wikEdCleanNodescleanNodes = false;
windowwikEd.wikEdReadOnlyreadOnly = false;
 
// unicode fixing and char highlighting
windowwikEd.wikEdSupportedCharssupportedChars = null;
windowwikEd.wikEdReservedCharsreservedChars = null;
windowwikEd.wikEdSpecialCharsspecialChars = null;
windowwikEd.wikEdProblemCharsproblemChars = null;
 
windowwikEd.wikEdCharEntitiesByNamecharEntitiesByName = {};
 
windowwikEd.wikEdControlCharHighlightingcontrolCharHighlighting = null;
wikEd.controlCharHighlightingStr = '';
window.wikEdControlCharHighlightingStr = '';
windowwikEd.wikEdCharHighlightingcharHighlighting = null;
windowwikEd.wikEdCharHighlightingStrcharHighlightingStr = '';
 
// linkification and hiding
windowwikEd.wikEdLinkifyIdNolinkifyIdNo = 0;
windowwikEd.wikEdLinkifyArraylinkifyArray = [];
windowwikEd.wikEdReferenceArrayreferenceArray = [];
windowwikEd.wikEdTemplateArraytemplateArray = [];
windowwikEd.wikEdCharEntityArraycharEntityArray = [];
 
// RegExTypoFixRegExtypoFix rules
windowwikEd.wikEdTypoRulesFindtypoRulesFind = [];
windowwikEd.wikEdTypoRulesReplacetypoRulesReplace = [];
 
// redirect fixing
windowwikEd.wikEdRedirectsCacheredirectsCache = {};
 
// file preview
windowwikEd.wikEdFilePreviewCachefilePreviewCache = {};
windowwikEd.wikEdFilePreviewRequestfilePreviewRequest = '';
windowwikEd.wikEdFilePreviewNofilePreviewNo = 0;
windowwikEd.wikEdFilePreviewIdsfilePreviewIds = [];
 
// debugging time measurement, usage: wikEdDebugTimerwikEd.debugTimer.push([1234, new Date]); WikEdDebugTimerwikEd.DebugTimer();
windowwikEd.wikEdDebugTimerdebugTimer = [];
 
// syntax highlighting
windowwikEd.wikEdParseObjparseObj = {};
 
// MediaWiki file paths for use in regexps
windowwikEd.wikEdServerserver = '';
windowwikEd.wikEdArticlePatharticlePath = '';
windowwikEd.wikEdScriptscript = '';
windowwikEd.wikEdScriptPathscriptPath = '';
windowwikEd.wikEdScriptNamescriptName = '';
windowwikEd.wikEdScriptURLscriptURL = '';
 
// magic words and parser functions, see http://www.mediawiki.org/wiki/Help:Magic_words
// __MAGICWORDS__
windowwikEd.wikEdMagicWordsmagicWords = 'NOTOC|FORCETOC|TOC|NOEDITSECTION|NEWSECTIONLINK|NOGALLERY|HIDDENCAT|NOCONTENTCONVERT|NOCC|NOTITLECONVERT|NOTC|END|START|NOINDEX|INDEX|STATICREDIRECT';
 
// template, parser function, and parser variable modifiers {{modifier:...}}
// see http://meta.wikimedia.org/wiki/Help:Magic_words#Template_modifiers
windowwikEd.wikEdTemplModifiertemplModifier = 'int|msg|msgnw|raw|subst';
 
// parser variables {{variable}}
windowwikEd.wikEdParserVariablesparserVariables = 'CURRENTYEAR|CURRENTMONTH|CURRENTMONTHNAME|CURRENTMONTHNAMEGEN|CURRENTMONTHABBREV|CURRENTDAY|CURRENTDAY2|CURRENTDOW|CURRENTDAYNAME|CURRENTTIME|CURRENTHOUR|CURRENTWEEK|CURRENTTIMESTAMP|LOCALYEAR|LOCALMONTH|LOCALMONTHNAME|LOCALMONTHNAMEGEN|LOCALMONTHABBREV|LOCALDAY|LOCALDAY2|LOCALDOW|LOCALDAYNAME|LOCALTIME|LOCALHOUR|LOCALWEEK|LOCALTIMESTAMP|SITENAME|CURRENTVERSION|CONTENTLANGUAGE|REVISIONID|REVISIONDAY|REVISIONDAY2|REVISIONMONTH|REVISIONYEAR|REVISIONTIMESTAMP|SERVER|SERVERNAME|SCRIPTPATH|FULLPAGENAME|PAGENAME|BASEPAGENAME|SUBPAGENAME|SUBJECTPAGENAME|TALKPAGENAME|FULLPAGENAMEE|PAGENAMEE|BASEPAGENAMEE|SUBPAGENAMEE|SUBJECTPAGENAMEE|TALKPAGENAMEE|NAMESPACE|SUBJECTSPACE|ARTICLESPACE|TALKSPACE|NAMESPACEE|SUBJECTSPACEE|TALKSPACEE|DIRMARK|DIRECTIONMARK|PAGENAME|PAGENAMEE|ARTICLEPATH';
 
// parser variables {{variable:R}}
windowwikEd.wikEdParserVariablesRparserVariablesR = 'NUMBEROFPAGES|NUMBEROFARTICLES|NUMBEROFFILES|NUMBEROFEDITS|NUMBEROFUSERS|NUMBEROFADMINS|NUMBEROFVIEWS|NUMBEROFACTIVEUSERS|PROTECTIONLEVEL';
 
// parser functions {{FUNCTION:parameter|R}}
windowwikEd.wikEdParserFunctionsRparserFunctionsR = 'NUMBERINGROUP|PAGESINNS|PAGESINNAMESPACE|PAGESINCATEGORY|PAGESINCAT|PAGESIZE|DEFAULTSORT|DISPLAYTITLE';
 
// parser functions {{function:param|param}}
windowwikEd.wikEdParserFunctionsparserFunctions = 'localurl|localurle|fullurl|filepath|fullurle|urlencode|urldecode|anchorencode|ns|lc|lcfirst|uc|ucfirst|formatnum|padleft|padright|padright|plural|grammar|gender|int';
 
// parser functions {{#function:param|param}}
windowwikEd.wikEdParserFunctionsHashparserFunctionsHash = 'language|special|tag|tag|expr|if|ifeq|ifexist|ifexpr|switch|time|timel|rel2abs|titleparts|iferror|iferror|special|tag|categorytree|formatdate';
 
// define leaf elements for WikEdGetInnerHTMLwikEd.GetInnerHTML
windowwikEd.wikEdLeafElementsleafElements = {
'IMG': true,
'HR': true,
Line 1,607 ⟶ 1,614:
// variables needed during startup, might be called multiple times
 
// hash of loaded scripts, also defined in wikEdDiffwikEd.diff.js
if (typeof(wikEdExternalScriptswikEd.externalScripts) == 'undefined') { windowwikEd.wikEdExternalScriptsexternalScripts = null; }
if (typeof(wikEdStartupwikEd.pageLoaded) == 'undefined') { windowwikEd.wikEdStartuppageLoaded = false; }
if (typeof(wikEdPageLoaded) == 'undefined') { window.wikEdPageLoaded = false; }
 
// browser and os identificationr
if (typeof(wikEdBrowserNamewikEd.browserName) == 'undefined') { windowwikEd.wikEdBrowserNamebrowserName = ''; }
if (typeof(wikEdBrowserFlavorwikEd.browserFlavor) == 'undefined') { windowwikEd.wikEdBrowserFlavorbrowserFlavor = ''; }
if (typeof(wikEdBrowserVersionwikEd.browserVersion) == 'undefined') { windowwikEd.wikEdBrowserVersionbrowserVersion = 0; }
if (typeof(wikEdMSIEwikEd.msie) == 'undefined') { windowwikEd.wikEdMSIEmsie = false; }
if (typeof(wikEdMozillawikEd.mozilla) == 'undefined') { windowwikEd.wikEdMozillamozilla = false; }
if (typeof(wikEdOperawikEd.opera) == 'undefined') { windowwikEd.wikEdOperaopera = false; }
if (typeof(wikEdSafariwikEd.safari) == 'undefined') { windowwikEd.wikEdSafarisafari = false; }
if (typeof(wikEdWebKitwikEd.webkit) == 'undefined') { windowwikEd.wikEdWebKitwebkit = false; }
if (typeof(wikEdChromewikEd.chrome) == 'undefined') { windowwikEd.wikEdChromechrome = false; }
if (typeof(wikEdGreasemonkeywikEd.greasemonkey) == 'undefined') { windowwikEd.wikEdGreasemonkeygreasemonkey = false; }
if (typeof(wikEdPlatformwikEd.platform) == 'undefined') { windowwikEd.wikEdPlatformplatform = null; }
 
// global variables via Greasemonkey ___location hack
if (typeof(wikEdWikiGlobalswikEd.wikiGlobals) == 'undefined') { windowwikEd.wikEdWikiGlobalswikiGlobals = {}; }
if (typeof(wikEdTextwikEd.text) == 'undefined') { wikEdTextwikEd.text = {}; }
 
// define global variables
if (typeof(wgServer) == 'undefined') { window.wgServer = null; }
if (typeof(wgTitle) == 'undefined') { window.wgTitle = null; }
if (typeof(wgCanonicalNamespace) == 'undefined') { window.wgCanonicalNamespace = null; }
if (typeof(wgArticlePath) == 'undefined') { window.wgArticlePath = null; }
if (typeof(wgScript) == 'undefined') { window.wgScript = null; }
if (typeof(wgScriptPath) == 'undefined') { window.wgScriptPath = null; }
if (typeof(wgUserName) == 'undefined') { window.wgUserName = null; }
if (typeof(wgCurRevisionId) == 'undefined') { window.wgCurRevisionId = null; }
if (typeof(wgScript) == 'undefined') { window.wgScript = null; }
if (typeof(wgContentLanguage) == 'undefined') { window.wgContentLanguage = null; }
if (typeof(wgUserLanguage) == 'undefined') { window.wgUserLanguage = null; }
if (typeof(wgEnableAPI) == 'undefined') { window.wgEnableAPI = null; }
if (typeof(wgPageName) == 'undefined') { window.wgPageName = null; }
if (typeof(wgNamespaceIds) == 'undefined') { window.wgNamespaceIds = null; }
if (typeof(wgFormattedNamespaces) != 'undefined') { window.wgFormattedNamespaces = null; }
 
// skins
if (typeof(wikEdLogoContainerIdwikEd.logoContainerId) == 'undefined') { windowwikEd.wikEdLogoContainerIdlogoContainerId = ''; }
if (typeof(wikEdRearrangewikEd.rearrange) == 'undefined') { windowwikEd.wikEdRearrangerearrange = false; }
if (typeof(wikEdLogoToListwikEd.logoToList) == 'undefined') { windowwikEd.wikEdLogoToListlogoToList = false; }
if (typeof(wikEdSkinwikEd.skin) == 'undefined') { windowwikEd.wikEdSkinskin = ''; }
 
// various
if (typeof(wikEdGreasemonkeyToHeadwikEd.gotGlobalsHook) == 'undefined') { windowwikEd.wikEdGreasemonkeyToHeadgotGlobalsHook = false[]; }
if (typeof(wikEdGotGlobalsHookwikEd.loadingTranslation) == 'undefined') { windowwikEd.wikEdGotGlobalsHookloadingTranslation = []false; }
if (typeof(wikEdLoadingTranslationwikEd.webStorage) == 'undefined') { windowwikEd.wikEdLoadingTranslationwebStorage = false; }
 
if (typeof(wikEdWebStorage) == 'undefined') { window.wikEdWebStorage = false; }
// customization
if (typeof(wikEd.wikEdTextAdded) == 'undefined') { wikEd.wikEdTextAdded = false; }
if (typeof(wikEd.wikEdConfigAdded) == 'undefined') { wikEd.wikEdConfigAdded = false; }
 
 
//
// WikEdInitObjectwikEd.InitObject: initialize object, keep pre-defined values (code copied to wikEdDiff.js)
//
 
windowwikEd.WikEdInitObjectInitObject = function(target, source, showMissing) {
 
if (typeof(target) == 'object') {
Line 1,673 ⟶ 1,665:
if (showMissing == true) {
if (typeof(target[key]) == 'string') {
wikEdConfig['wikEd.config.debugStartUp'] += '\t\t\t\'' + key + '\': \'' + target[key].replace(/\n/g, '\\n') + '\',\n';
}
}
Line 1,684 ⟶ 1,676:
 
//
// WikEdAddToObjectwikEd.AddToObject: add or replace properties, replace existing values (code copied to wikEdDiff.js)
//
 
windowwikEd.WikEdAddToObjectAddToObject = function(target, source) {
if (typeof(target) == 'object') {
for (var key in source) {
Line 1,698 ⟶ 1,690:
 
//
// WikEdInitImagewikEd.InitImage: initialize images, keep pre-defined values (code copied to wikEdDiff.js)
//
 
windowwikEd.WikEdInitImageInitImage = function(arraytarget, presetsource) {
 
for (var key in presetsource) {
if (typeof(arraytarget[key]) == 'undefined') {
 
// remove MediaWiki path prefixes and add local path
if (wikEdConfig['wikEd.config.useLocalImages'] == true) {
arraytarget[key] = wikEdConfig['wikEd.config.imagePathLocal'] + presetsource[key].replace(/^[0-9a-f]+\/[0-9a-f]+\/()/, '');
}
 
// add path
else {
arraytarget[key] = wikEdConfig['wikEd.config.imagePath'] + presetsource[key];
}
}
Line 1,722 ⟶ 1,714:
 
//
// WikEdStartupwikEd.Startup: wikEd startup code, called during page load
//
 
windowwikEd.WikEdStartupStartup = function() {
 
// check if this has already been run
if (wikEdStartupwikEd.startup == true) {
return;
}
wikEdStartupwikEd.startup = true;
 
// redirect WED shortcut to WikEdDebugwikEd.Debug(objectName, object, popup)
window.WED = WikEdDebugwikEd.Debug;
 
// check browser and version
var agentMatch = navigator.userAgent.match(/(Firefox|Netscape|SeaMonkey|IceWeasel|IceCat|Fennec|Minefield|BonEcho|GranParadiso|Shiretoko)\W+(\d+\.\d+)/i);
if (agentMatch != null) {
wikEdBrowserNamewikEd.browserName = 'Mozilla';
wikEdBrowserFlavorwikEd.browserFlavor = agentMatch[1];
wikEdBrowserVersionwikEd.browserVersion = parseFloat(agentMatch[2]);
wikEdMozillawikEd.mozilla = true;
}
 
Line 1,749 ⟶ 1,741:
agentMatch = navigator.userAgent.match(/(MSIE)\W+(\d+\.\d+)/i);
if (agentMatch != null) {
wikEdBrowserNamewikEd.browserName = 'MSIE';
wikEdBrowserVersionwikEd.browserVersion = parseFloat(agentMatch[2]);
wikEdMSIEwikEd.msie = true;
}
 
Line 1,758 ⟶ 1,750:
agentMatch = navigator.userAgent.match(/(Opera)\W+(\d+\.\d+)/i);
if (agentMatch != null) {
wikEdBrowserNamewikEd.browserName = 'Opera';
wikEdBrowserVersionwikEd.browserVersion = parseFloat(agentMatch[2]);
if (wikEdBrowserVersionwikEd.browserVersion == 9.80) {
var versionMatch = navigator.userAgent.match(/(Version)\W+(\d+\.\d+)/i);
if (versionMatch != null) {
wikEdBrowserVersionwikEd.browserVersion = parseFloat(agentMatch[2]);
}
}
wikEdOperawikEd.opera = true;
}
 
Line 1,773 ⟶ 1,765:
agentMatch = navigator.userAgent.match(/(Chrome)\W+(\d+\.\d+)/i);
if (agentMatch != null) {
wikEdBrowserNamewikEd.browserName = 'Chrome';
wikEdBrowserVersionwikEd.browserVersion = parseFloat(agentMatch[2]);
wikEdChromewikEd.chrome = true;
}
 
Line 1,782 ⟶ 1,774:
agentMatch = navigator.userAgent.match(/(Safari)\W+(\d+\.\d+)/i);
if (agentMatch != null) {
wikEdBrowserNamewikEd.browserName = 'Safari';
wikEdBrowserVersionwikEd.browserVersion = parseFloat(agentMatch[2]);
wikEdSafariwikEd.safari = true;
}
 
Line 1,791 ⟶ 1,783:
agentMatch = navigator.userAgent.match(/(WebKit)(GTK\+)?\W+(\d+\.\d+)/i);
if (agentMatch != null) {
wikEdBrowserNamewikEd.browserName = 'WebKit';
wikEdBrowserVersionwikEd.browserVersion = parseFloat(agentMatch[3]);
wikEdWebKitwikEd.webkit = true;
}
}
Line 1,804 ⟶ 1,796:
var os = navigator.platform.match(/^(win|mac|unix|linux)/i);
if (os != null) {
wikEdPlatformwikEd.platform = os[1].toLowerCase();
}
 
// import customization (try now again after page load for user/skin.js)
// detect if run as a head script added by Greasemonkey installer
if ( (typeof(wikEdConfig) == 'object') && (wikEd.wikEdConfigAdded == false) ) {
if (document.getElementById('WikEdHeadScript') != null) {
wikEd.AddToObject(wikEd.config, wikEdConfig);
wikEdGreasemonkeyToHead = true;
wikEd.wikEdConfigAdded = true;
}
if ( (typeof(wikEdText) == 'object') && (wikEd.wikEdTextAdded == false) ) {
wikEd.AddToObject(wikEd.text, wikEdText);
wikEd.wikEdTextAdded = true;
}
 
 
// compatibility fixes for older customizations and wikEd-compatibilizations in other scripts
window.wikEdUseWikEd = wikEd.useWikEd;
window.WikEdUpdateTextarea = wikEd.UpdateTextarea;
window.WikEdUpdateFrame = wikEd.UpdateFrame;
window.WikEdGetText = wikEd.GetText;
window.WikEdEditButton = wikEd.EditButton;
 
// check if this runs under Greasemonkey
if (typeof(GM_getValue) == 'function') {
wikEdGreasemonkeywikEd.greasemonkey = true;
}
 
// parse global-context (MediaWiki) variables into hash (for Greasemonkey)
windowwikEd.addEventListenerAddEventListener(window, 'message', WikEdGetGlobalsReceiverwikEd.GetGlobalsReceiver, false);
var globalNames = [, 'skin', 'wgServer', 'wgTitle', 'wgCanonicalNamespace', 'wgArticlePath', 'wgScript', 'wgScriptPath', 'wgUserName', 'wgCurRevisionId', 'wgScript', 'wgContentLanguage', 'wgUserLanguage', 'wgEnableAPI', 'wgPageName', 'wgNamespaceIds', 'wgFormattedNamespaces', 'wgUseAutomaticEditSummaries'];
if (wikEdGreasemonkeywikEd.greasemonkey == true) {
globalNames.push('wikEdConfig', 'wikEdText');
}
Line 1,827 ⟶ 1,832:
var gotGlobalsHook = [
function() {
if ( (typeof(wikEd.wikiGlobals.wikEdConfig) == 'object') && (wikEd.wikEdConfigAdded == false) ) {
if (wikEdGreasemonkey == true) {
WikEdAddToObjectwikEd.AddToObject(wikEdConfigwikEd.config, wikEdWikiGlobals['wikEd.wikiGlobals.wikEdConfig']);
wikEd.wikEdConfigAdded = true;
WikEdAddToObject(wikEdText, wikEdWikiGlobals['wikEdText']);
}
if ( (typeof(wikEd.wikiGlobals.wikEdText) == 'object') && (wikEd.wikEdTextAdded == false) ) {
wikEd.AddToObject(wikEd.text, wikEd.wikiGlobals.wikEdText);
wikEd.wikEdTextAdded = true;
}
return;
Line 1,836 ⟶ 1,845:
 
// and load translations when done
if ( (wikEdConfig['wikEd.config.loadTranslation'] == true) && (wikEdLoadingTranslationwikEd.loadingTranslation == false) ) {
gotGlobalsHook.push(WikEdLoadTranslationswikEd.LoadTranslations);
}
 
// parse globals (asynchronous)
WikEdGetGlobalswikEd.GetGlobals(globalNames, gotGlobalsHook);
 
// check for web storage
if (typeof(window.localStorage) == 'object') {
wikEdWebStoragewikEd.webStorage = true;
}
 
// schedule the setup routine
WikEdAddEventListenerwikEd.AddEventListener(window, 'load', WikEdSetupwikEd.Setup, false);
 
return;
Line 1,856 ⟶ 1,865:
 
//
// WikEdLoadTranslationswikEd.LoadTranslations: load external wikEd translation and language settings
//
 
windowwikEd.WikEdLoadTranslationsLoadTranslations = function() {
 
if ( (wikEdConfig['wikEd.config.loadTranslation'] == true) && (wikEdLoadingTranslationwikEd.loadingTranslation == false) ) {
var contentLang = wikEdWikiGlobals['wikEd.wikiGlobals.wgContentLanguage'] || '';
var userLang = wikEdWikiGlobals['wikEd.wikiGlobals.wgUserLanguage'] || '';
if ( (wikEdConfig['wikEd.config.languageDefault'] != '') || (userLang != '') || (contentLang != '') ) {
 
// simplified Chinese
Line 1,879 ⟶ 1,888:
}
 
WikedInitTranslationswikEd.InitTranslations();
var scriptUrl = wikEdConfig['wikEd.config.translations'][wikEdConfig['wikEd.config.languageDefault']] || '';
if (scriptUrl == '') {
scriptUrl = wikEdConfig['wikEd.config.translations'][userLang] || '';
if (scriptUrl == '') {
scriptUrl = wikEdConfig['wikEd.config.translations'][contentLang] || '';
}
}
if (scriptUrl != '') {
WikEdAppendScriptwikEd.AppendScript(scriptUrl, function() {
 
// copy custom text after values have arrived
var gotGlobalsHook = function() {
WikEdAddToObjectwikEd.AddToObject(wikEdTextwikEd.text, wikEdWikiGlobals['wikEd.wikiGlobals.wikEdText']);
return;
};
 
// parse globals (asynchronous)
WikEdGetGlobalswikEd.GetGlobals(['wikEdText'], [gotGlobalsHook]);
wikEdLoadingTranslationwikEd.loadingTranslation = true;
});
}
Line 1,908 ⟶ 1,917:
 
//
// WikEdSetupwikEd.Setup: basic setup routine, scheduled after page load
//
 
windowwikEd.WikEdSetupSetup = function() {
 
WikEdRemoveEventListenerwikEd.RemoveEventListener(window, 'load', WikEdSetupwikEd.Setup, false);
 
// check if this has already been run, either as a wiki or a Greasemonkey user script
if (document.getElementById('wikEdSetupFlag') != null) {
return;
}
 
// import customization (try later again after page load for user/skin.js)
if ( (typeof(wikEdConfig) == 'object') && (wikEd.wikEdConfigAdded == false) ) {
wikEd.AddToObject(wikEd.config, wikEdConfig);
wikEd.wikEdConfigAdded = true;
}
if ( (typeof(wikEdText) == 'object') && (wikEd.wikEdTextAdded == false) ) {
wikEd.AddToObject(wikEd.text, wikEdText);
wikEd.wikEdTextAdded = true;
}
 
// detect already loaded external scripts
if (wikEdExternalScriptswikEd.externalScripts == null) {
wikEdExternalScriptswikEd.externalScripts = [];
var pageScripts = document.getElementsByTagName('script');
for (var i = 0; i < pageScripts.length; i ++) {
Line 1,935 ⟶ 1,954:
 
// ignore other diff.js scripts
if ( (scriptName == 'diff.js') && (scriptSrc != wikEdConfig['wikEd.config.diffScriptSrc']) ) {
continue;
}
wikEdExternalScriptswikEd.externalScripts[scriptName] = true;
}
}
Line 1,946 ⟶ 1,965:
// exit if executed as Greasemonkey script if wiki user script is available
if (typeof(GM_getValue) == 'function') {
if (wikEdExternalScriptswikEd.externalScripts['wikEd.js'] == true) {
wikEdGreasemonkeywikEd.greasemonkey = false;
return;
}
else {
wikEdGreasemonkeywikEd.greasemonkey = true;
}
}
 
// redirect Greasemonkey debugging function to WikEdDebugwikEd.Debug if run as a wiki user script
else {
window.GM_log = windowwikEd.WikEdDebugDebug;
}
 
// detect wikEd running as a gadget
if (wikEdConfig['wikEd.config.gadget'] == null) {
if (wikEdExternalScriptswikEd.externalScripts['MediaWiki:Gadget-wikEd.js'] == true) {
wikEdConfig['wikEd.config.gadget'] = true;
}
}
Line 1,976 ⟶ 1,995:
 
// detect MediaWiki page and its skin
wikEd.InitMediaWikiSkinIds();
WikedInitMediaWikiSkinIds();
for (var skin in wikEdConfig['wikEd.config.MediaWikiSkinIds']) {
if (wikEdConfig['wikEd.config.MediaWikiSkinIds'].hasOwnProperty(skin) == true) {
var logoContainerId = wikEdConfig['wikEd.config.MediaWikiSkinIds'][skin][0];
var logoToList = wikEdConfig['wikEd.config.MediaWikiSkinIds'][skin][1];
var rearrange = wikEdConfig['wikEd.config.MediaWikiSkinIds'][skin][2];
var skinIds = wikEdConfig['wikEd.config.MediaWikiSkinIds'][skin][3];
for (var i = 0; i < skinIds.length; i ++) {
if (document.getElementById(skinIds[i]) == null) {
Line 1,989 ⟶ 2,008:
}
if (i == skinIds.length) {
wikEdLogoContainerIdwikEd.logoContainerId = logoContainerId;
wikEdSkinwikEd.skin = skin;
wikEdRearrangewikEd.rearrange = rearrange;
wikEdLogoToListwikEd.logoToList = logoToList;
break;
}
Line 1,999 ⟶ 2,018:
 
// not a MediaWiki page
if (wikEdSkinwikEd.skin == '') {
return;
}
 
// initialize user configurable variables
wikEd.InitGlobalConfigs();
WikEdInitGlobalConfigs();
 
// import custom text and translations
wikEd.AddToObject(wikEd.config.text, wikEd.text);
WikEdAddToObject(wikEdConfig['text'], wikEdText);
 
// do not rearrange page elements
if (wikEdConfig['wikEd.config.noRearrange'] != false) {
wikEdRearrangewikEd.rearrange = false;
}
 
// initialize non-configurable variables
wikEd.InitGlobals();
WikEdInitGlobals();
 
// check for updates
wikEd.AutoUpdate();
WikEdAutoUpdate();
 
// initialize images (needed here for logo)
wikEd.InitImages();
WikedInitImages();
 
// load css for edit and non-edit pages
wikEd.InitMainCSS();
WikedInitMainCSS();
 
// add stylesheet definitions
WikEdApplyCSSwikEd.ApplyCSS(document, wikEdConfig['wikEd.config.mainCSS']);
 
// add image path to image filename
if (wikEdLogowikEd.logo == null) {
 
// create logo
wikEdLogowikEd.logo = document.createElement('img');
wikEdLogowikEd.logo.id = 'wikEdLogoImg';
 
// insert logo into page
var logoContainer;
if (wikEdLogoContainerIdwikEd.logoContainerId != '') {
logoContainer = document.getElementById(wikEdLogoContainerIdwikEd.logoContainerId);
}
if (logoContainer != null) {
 
// logo as last element of specified list (e.g. monobook, simple, myskin, gumax)
if (wikEdLogoToListwikEd.logoToList == true) {
wikEdLogoListwikEd.logoList = document.createElement('li');
wikEdLogoListwikEd.logoList.id = 'wikEdLogoList';
wikEdLogoListwikEd.logoList.className = 'wikEdLogoList';
wikEdLogoListwikEd.logoList.appendChild(wikEdLogowikEd.logo);
var list;
var logo;
Line 2,058 ⟶ 2,077:
}
if (list != null) {
list.appendChild(wikEdLogoListwikEd.logoList);
wikEdLogowikEd.logo.className = 'wikEdLogo';
}
}
Line 2,065 ⟶ 2,084:
// logo as last child of specified element
else {
logoContainer.appendChild(wikEdLogowikEd.logo);
wikEdLogowikEd.logo.className = 'wikEdLogo';
}
}
 
// logo as first page element, fallback for undetected skin
if (wikEdLogowikEd.logo.className == '') {
document.body.insertBefore(wikEdLogowikEd.logo, document.body.firstChild);
wikEdLogowikEd.logo.className = 'wikEdLogoFallBack';
}
 
// add event listener to logo
WikEdAddEventListenerwikEd.AddEventListener(wikEdLogowikEd.logo, 'click', WikEdMainSwitchwikEd.MainSwitch, true);
}
 
// page loaded flag for dynamically loaded scripts
wikEdPageLoadedwikEd.pageLoaded = true;
 
// load the external diff script if not already done
if ( (wikEdConfig['wikEd.config.loadDiffScript'] == true) && (wikEdExternalScriptswikEd.externalScripts['diff.js'] == null) ) {
if (typeof(WDiffString) == 'undefined') {
WikEdAppendScriptwikEd.AppendScript(wikEdConfig['wikEd.config.diffScriptSrc']);
}
wikEdExternalScriptswikEd.externalScripts['diff.js'] = true;
}
 
// load the external wikEdDiffwikEd.diff script if not already done
if ( (wikEdConfig['wikEd.config.loadDiff'] == true) && (wikEdExternalScriptswikEd.externalScripts['wikEdDiff.js'] == null) ) {
if (typeof(WikEdDiffwikEd.Diff) == 'undefined') {
WikEdAppendScriptwikEd.AppendScript(wikEdConfig['wikEd.config.diffSrc']);
}
wikEdExternalScriptswikEd.externalScripts['wikEdDiff.js'] = true;
}
 
// load the MS IE selection/range compatibility library IERange
if (wikEdMSIEwikEd.msie == true) {
if ( (wikEdConfig['wikEd.config.loadIERange'] == true) && (wikEdExternalScriptswikEd.externalScripts['ierange.js'] == null) ) {
if (typeof(DOMUtils) == 'undefined') {
WikEdAppendScriptwikEd.AppendScript(wikEdConfig['wikEd.config.IERangeSrc']);
}
wikEdExternalScriptswikEd.externalScripts['ierange.js'] = true;
}
}
 
// check if disabled
wikEdDisabledwikEd.disabled = WikEdGetSavedSettingwikEd.GetSavedSetting('wikEdDisabled', wikEdConfig['wikEd.config.disabledPreset']);
if (wikEdDisabledwikEd.disabled == true) {
wikEdUseWikEdwikEd.useWikEd = false;
WikEdSetLogowikEd.SetLogo();
return;
}
 
// get current page name
wikEdPageNamewikEd.pageName = wikEdWikiGlobals['wikEd.wikiGlobals.wgPageName'];
 
// get current namespace
if (wikEdPageNamewikEd.pageName != null) {
var colonPos = wikEdPageNamewikEd.pageName.indexOf(':');
if (colonPos == -1) {
wikEdPageNamespacewikEd.pageNamespace = '';
}
else {
wikEdPageNamespacewikEd.pageNamespace = wikEdPageNamewikEd.pageName.substr(0, colonPos);
}
}
Line 2,133 ⟶ 2,152:
// ___location search string function: put all used images and icons on an empty page
if (window.___location.search.match(/(\?|&)wikEd=iconPage\b/i) != null) {
var str = wikEdConfig['wikEd.config.text']['iconPage'];
for (var imageKey in wikEdConfig['wikEd.config.image']) {
if (wikEdConfig['wikEd.config.image'].hasOwnProperty(imageKey) == true) {
var imageAddress = wikEdConfig['wikEd.config.image'][imageKey];
if (typeof(imageAddress) == 'string') {
str += '<img src="' + imageAddress + '"> ';
Line 2,147 ⟶ 2,166:
 
// init syntax highlighting regExp object
wikEd.HighlightSyntaxInit();
WikEdHighlightSyntaxInit();
 
// continue setup
WikEdTurnOnwikEd.TurnOn(true);
 
return;
Line 2,157 ⟶ 2,176:
 
//
// WikEdTurnOnwikEd.TurnOn: continue setup, can be called repeatedly
//
 
windowwikEd.WikEdTurnOnTurnOn = function(scrollToEditFocus) {
 
// check if setup was already run
if (wikEdTurnedOnwikEd.turnedOn == true) {
return;
}
 
// set error logo
WikEdSetLogowikEd.SetLogo('error');
 
// no id, no wikEd
if (navigator.appName == null) {
wikEdBrowserNotSupportedwikEd.browserNotSupported = true;
}
 
// check browser versions
switch (wikEdBrowserNamewikEd.browserName) {
 
// check Mozilla version
case 'Mozilla':
if (
(wikEdBrowserFlavorwikEd.browserFlavor == 'Firefox') && (wikEdBrowserVersionwikEd.browserVersion < 1.5) ||
(wikEdBrowserFlavorwikEd.browserFlavor == 'Netscape') && (wikEdBrowserVersionwikEd.browserVersion < 8.0) ||
(wikEdBrowserFlavorwikEd.browserFlavor == 'SeaMonkey') && (wikEdBrowserVersionwikEd.browserVersion < 1.0)
) {
wikEdBrowserNotSupportedwikEd.browserNotSupported = true;
}
break;
Line 2,191 ⟶ 2,210:
// check MSIE version
case 'MSIE':
wikEdBrowserNotSupportedwikEd.browserNotSupported = true;
break;
 
// check Opera version
case 'Opera':
if (wikEdBrowserVersionwikEd.browserVersion < 10.51) {
wikEdBrowserNotSupportedwikEd.browserNotSupported = true;
}
 
// 10.50 beta, 10.51 are too buggy (inserthtml, parentNode...)
wikEdBrowserNotSupportedwikEd.browserNotSupported = true;
 
break;
Line 2,207 ⟶ 2,226:
// check Google Chrome version
case 'Chrome':
if (wikEdBrowserVersionwikEd.browserVersion < 0.2) {
wikEdBrowserNotSupportedwikEd.browserNotSupported = true;
}
break;
Line 2,214 ⟶ 2,233:
// check Safari version
case 'Safari':
if (wikEdBrowserVersionwikEd.browserVersion < 500) {
wikEdBrowserNotSupportedwikEd.browserNotSupported = true;
}
break;
Line 2,221 ⟶ 2,240:
 
// browser or version not supported, set error message and exit
if ( (wikEdBrowserNotSupportedwikEd.browserNotSupported == true) && (wikEdConfig['wikEd.config.skipBrowserTest'] == false) ) {
WikEdSetLogowikEd.SetLogo('browser');
return;
}
Line 2,229 ⟶ 2,248:
var array = document.getElementsByName('wpEdittime');
if (array[0] != null) {
wikEdEdittimewikEd.edittime = array[0].value
}
var array = document.getElementsByName('wpEditToken');
if (array[0] != null) {
wikEdEditTokenwikEd.editToken = array[0].value
}
 
Line 2,239 ⟶ 2,258:
 
// detect custom edit page
if (wikEdConfig['wikEd.config.customEditFormId'] != '') {
wikEdEditFormwikEd.editForm = document.getElementById(wikEdConfig['wikEd.config.customEditFormId']);
}
if (wikEdConfig['wikEd.config.customTextAreaId'] != '') {
wikEdTextareawikEd.textarea = document.getElementById(wikEdConfig['wikEd.config.customTextAreaId']);
}
if (wikEdConfig['wikEd.config.customSaveButtonId'] != '') {
wikEdSaveButtonwikEd.saveButton = document.getElementById(wikEdCustomwikEdSaveButtonIdwikEd.customwikEdSaveButtonId);
}
 
// detect standard edit page
if (wikEdTextareawikEd.textarea == null) {
wikEdTextareawikEd.textarea = document.getElementsByName('wpTextbox1')[0];
}
if (wikEdEditFormwikEd.editForm == null) {
wikEdEditFormwikEd.editForm = document.getElementById('editform');
}
if (wikEdSaveButtonwikEd.saveButton == null) {
wikEdSaveButtonwikEd.saveButton = document.getElementById('wpSave');
}
wikEdDiffPreviewButtonwikEd.diffPreviewButton = document.getElementById('wpDiff');
wikEdPreviewButtonwikEd.previewButton = document.getElementById('wpPreview');
 
// detect MediaWiki Semantic Forms extension
if (wikEdTextareawikEd.textarea == null) {
wikEdEditFormwikEd.editForm = document.getElementsByName('createbox')[0];
wikEdTextareawikEd.textarea = document.getElementsByName('free_text')[0];
}
 
// detect edit raw watchlist page
if ( (wikEdEditFormwikEd.editForm == null) || (wikEdTextareawikEd.textarea == null) ) {
wikEdTextareawikEd.textarea = document.getElementById('titles');
if (wikEdTextareawikEd.textarea != null) {
wikEdRearrangewikEd.rearrange = false;
wikEdWatchlistEditwikEd.watchlistEdit = true;
 
// get watchlist edit form
var node = wikEdTextareawikEd.textarea;
while (node != null) {
node = node.parentNode;
Line 2,283 ⟶ 2,302:
}
}
wikEdEditFormwikEd.editForm = node;
}
 
// get watchlist submit button
if (wikEdEditFormwikEd.editForm != null) {
var submits = wikEdEditFormwikEd.editForm.getElementsByTagName('input');
for (i = 0; i < submits.length; i ++) {
if (submits[i].type == 'submit') {
wikEdSaveButtonwikEd.saveButton = submits[i];
break;
}
Line 2,299 ⟶ 2,318:
 
// detect upload page
if ( (wikEdTextareawikEd.textarea == null) || (wikEdEditFormwikEd.editForm == null) || (wikEdSaveButtonwikEd.saveButton == null) ) {
wikEdTextareawikEd.textarea = document.getElementsByName('wpUploadDescription')[0];
wikEdEditFormwikEd.editForm = document.getElementById('mw-upload-form');
wikEdSaveButtonwikEd.saveButton = document.getElementsByName('wpUpload')[0];
if ( (wikEdTextareawikEd.textarea != null) && (wikEdEditFormwikEd.editForm != null) && (wikEdSaveButtonwikEd.saveButton != null) ) {
wikEdUploadEditwikEd.uploadEdit = true;
wikEdRearrangewikEd.rearrange = false;
}
}
 
 
// detect view and restore deleted pages
if ( (wikEdTextareawikEd.textarea == null) || (wikEdEditFormwikEd.editForm == null) || (wikEdSaveButtonwikEd.saveButton == null) ) {
wikEdTextareawikEd.textarea = document.getElementsByTagName('textarea')[0];
if (wikEdTextareawikEd.textarea != null) {
 
// get form
Line 2,323 ⟶ 2,341:
}
}
wikEdEditFormwikEd.editForm = node;
if (wikEdEditFormwikEd.editForm != null) {
wikEdPreviewButtonwikEd.previewButton = document.getElementsByName('preview')[0];
wikEdViewDeletedwikEd.viewDeleted = true;
wikEdRearrangewikEd.rearrange = false;
}
}
Line 2,333 ⟶ 2,351:
 
// set page detection error indicator
if ( (wikEdTextareawikEd.textarea == null) || (wikEdEditFormwikEd.editForm == null) ) {
WikEdSetLogowikEd.SetLogo();
return;
}
 
// check if the textarea is read-only
if (wikEdConfig['wikEd.config.skipReadOnlyTest'] == false) {
if ( (WikEdGetAttributewikEd.GetAttribute(wikEdTextareawikEd.textarea, 'readonly') != null) || (wikEdSaveButtonwikEd.saveButton == null) ) {
wikEdReadOnlywikEd.readOnly = true;
}
}
 
// initialize frame css, main css, buttons, and button bars
wikEd.InitFrameCSS();
WikedInitFrameCSS();
wikEd.InitMainEditCSS();
WikedInitMainEditCSS();
wikEd.InitButton();
WikedInitButton();
wikEd.InitButtonKey();
WikedInitButtonKey();
wikEd.InitButtonBar();
WikedInitButtonBar();
wikEd.InitHistoryLength();
WikedInitHistoryLength();
wikEd.InitIncompatibleScripts();
WikedInitIncompatibleScripts();
 
// check for incompatible scripts
if (wikEdConfig['wikEd.config.skipScriptTest'] == false) {
var scriptNames = '';
for (var key in wikEdConfig['wikEd.config.incompatibleScripts']) {
if (wikEdConfig['wikEd.config.incompatibleScripts'].hasOwnProperty(key) == true) {
var generalName = key;
var scriptName = wikEdConfig['wikEd.config.incompatibleScripts'][key];
if (wikEdExternalScriptswikEd.externalScripts[scriptName] == true) {
if (scriptNames != '') {
scriptNames += ', ';
Line 2,370 ⟶ 2,388:
}
if (scriptNames != '') {
WikEdSetLogowikEd.SetLogo('incompatible', scriptNames);
return;
}
Line 2,376 ⟶ 2,394:
 
// define Unicode characters for fixing function
wikEd.InitUnicode();
WikEdInitUnicode();
 
// detect if we add a new section (+ tab)
if (/(\?|&)section=new\b/.test(window.___location.search) == true) {
wikEdAddNewSectionwikEd.addNewSection = true;
}
else {
Line 2,387 ⟶ 2,405:
if (section.length > 0) {
if (section[0].value == 'new') {
wikEdAddNewSectionwikEd.addNewSection = true;
}
}
Line 2,394 ⟶ 2,412:
 
// load the external InstaView script
if ( (wikEdGreasemonkeywikEd.greasemonkey == false) && (wikEdConfig['wikEd.config.loadInstaView'] == true) && (wikEdExternalScriptswikEd.externalScripts['instaview.js'] == null) ) {
if (typeof(InstaView) == 'undefined') {
WikEdAppendScriptwikEd.AppendScript(wikEdConfig['wikEd.config.instaViewSrc']);
}
wikEdExternalScriptswikEd.externalScripts['instaview.js'] = true;
}
else if ( (wikEdGreasemonkeywikEd.greasemonkey == false) || (wikEdConfig['wikEd.config.loadInstaView'] != true) ) {
wikEdConfig['wikEd.config.useLocalPreview'] = false;
}
 
// get initial textarea dimensions
wikEdTextareaBorderHeightwikEd.textareaBorderHeight = parseInt(WikEdGetStylewikEd.GetStyle(wikEdTextareawikEd.textarea, 'borderTopWidth'), 10) + parseInt(WikEdGetStylewikEd.GetStyle(wikEdTextareawikEd.textarea, 'borderBottomWidth'), 10);
 
if (WikEdGetStylewikEd.GetStyle(wikEdTextareawikEd.textarea, 'display') != 'none') {
wikEdTextareaOffsetHeightInitialwikEd.textareaOffsetHeightInitial = wikEdTextareawikEd.textarea.offsetHeight;
}
else {
wikEdTextareaOffsetHeightInitialwikEd.textareaOffsetHeightInitial = wikEdTextareawikEd.textarea.parentNode.clientHeight;
}
wikEdTextareaOffsetHeightInitialwikEd.textareaOffsetHeightInitial = wikEdTextareawikEd.textarea.offsetHeight;
wikEdTextareaHeightwikEd.textareaHeight = (wikEdTextareawikEd.textarea.offsetHeight - wikEdTextareaBorderHeightwikEd.textareaBorderHeight) + 'px';
wikEdTextareaWidthwikEd.textareaWidth = '100%';
 
// remove frame border if textarea has none
var styleFrameContainer = '';
if (wikEdTextareaBorderHeightwikEd.textareaBorderHeight == 0) {
styleFrameContainer = 'border-width: 0;';
}
 
// setup the undo buffers and save the original text for local changes view
wikEdOrigVersionwikEd.origVersion = wikEdTextareawikEd.textarea.value;
 
// Opera 0.9.51
wikEdOrigVersionwikEd.origVersion = wikEdOrigVersionwikEd.origVersion.replace(/\r\n|\n\r|\r/g, '\n');
 
// add stylesheet definitions
WikEdApplyCSSwikEd.ApplyCSS(document, wikEdConfig['wikEd.config.mainEditCSS']);
 
// get button settings from saved settings
wikEdUsingwikEd.using = WikEdGetSavedSettingwikEd.GetSavedSetting('wikEdSummaryUsing', wikEdConfig['wikEd.config.usingPreset']);
wikEdUseWikEdwikEd.useWikEd = ! WikEdGetSavedSettingwikEd.GetSavedSetting('wikEdUseClassic', ! wikEdConfig['wikEd.config.useWikEdPreset']);
wikEdHighlightSyntaxwikEd.highlightSyntax = ! WikEdGetSavedSettingwikEd.GetSavedSetting('wikEdSyntaxOff', ! wikEdConfig['wikEd.config.highlightSyntaxPreset']);
wikEdFullScreenModewikEd.fullScreenMode = WikEdGetSavedSettingwikEd.GetSavedSetting('wikEdFullscreen', wikEdConfig['wikEd.config.fullScreenModePreset']);
wikEdCloseToolbarwikEd.closeToolbar = WikEdGetSavedSettingwikEd.GetSavedSetting('wikEdCloseToolbar', wikEdConfig['wikEd.config.closeToolbarPreset']);
wikEdRefHidewikEd.refHide = WikEdGetSavedSettingwikEd.GetSavedSetting('wikEdRefHide', wikEdConfig['wikEd.config.refHidePreset']);
wikEdDiffwikEd.diff = WikEdGetSavedSettingwikEd.GetSavedSetting('wikEdDiff', wikEdConfig['wikEd.config.diffPreset']);
wikEdTableModewikEd.tableMode = false;
 
// detect preview page
if (window.___location.search.match(/(\?|&)action=submit\b/) != null) {
wikEdPreviewPagewikEd.previewPage = true;
}
 
// no fullscreen for preview and upload pages
if ( (wikEdUploadEditwikEd.uploadEdit == true) || (wikEdPreviewPagewikEd.previewPage == true) ) {
wikEdFullScreenModewikEd.fullScreenMode = false;
}
 
// disable wikEd for Lupin's autoedit scripts
if (window.___location.search.match(/(\?|&)autoedit=/) != null) {
wikEdUseWikEdwikEd.useWikEd = false;
}
 
// disable wikEd for js pages
if (/\.js$/.test(wikEdWikiGlobals['wikEd.wikiGlobals.wgTitle']) == true) {
if ( (wikEdWikiGlobals['wikEd.wikiGlobals.wgCanonicalNamespace'] != 'User_talk') && (wikEdWikiGlobals['wikEd.wikiGlobals.wgCanonicalNamespace'] != 'Talk') ) {
wikEdNoSpellcheckwikEd.noSpellcheck = true;
if (wikEdOrigVersionwikEd.origVersion.length > 20000) {
wikEdUseWikEdwikEd.useWikEd = false;
}
else {
wikEdHighlightSyntaxwikEd.highlightSyntax = false;
}
}
Line 2,471 ⟶ 2,489:
 
// no highlighting for watchlist editing
if (wikEdWatchlistEditwikEd.watchlistEdit == true) {
wikEdNoSpellcheckwikEd.noSpellcheck = true;
wikEdHighlightSyntaxwikEd.highlightSyntax = false;
}
 
// disable spellchecker for textarea
if (wikEdNoSpellcheckwikEd.noSpellcheck == true) {
wikEdTextareawikEd.textarea.setAttribute('spellcheck', false);
}
 
Line 2,487 ⟶ 2,505:
var styleTextareaWrapperPosition;
var styleTextareaWrapperVisibility;
if (wikEdUseWikEdwikEd.useWikEd == true) {
styleFrameBody = 'display: block;';
styleFrameWrapperPosition = 'static';
Line 2,502 ⟶ 2,520:
}
var inputWrapperClass;
if (wikEdFullScreenModewikEd.fullScreenMode == true) {
inputWrapperClass = 'wikEdInputWrapperFull';
}
Line 2,509 ⟶ 2,527:
}
 
// check if we use the wikEdEditorwikEd.editor user interface of the vector skin
 
// wikEdWikiEditorwikEd.wikiEditor = document.getElementById('wikiEditor-ui');
wikEdWikiEditorwikEd.wikiEditor = WikEdGetElementsByClassNamewikEd.GetElementsByClassName('wikiEditor-ui', 'div')[0];
 
if (wikEdWikiEditorwikEd.wikiEditor == null) {
wikEd.textareaContainer = wikEd.textarea;
wikEdTextareaContainer = wikEdTextarea;
}
else {
wikEdWikiEditorFramewikEd.wikiEditorFrame = wikEdWikiEditorwikEd.wikiEditor.getElementsByTagName('IFRAME')[0];
wikEdWikiEditorTopwikEd.wikiEditorTop = WikEdGetElementsByClassNamewikEd.GetElementsByClassName('wikiEditor-ui-top', 'div')[0];
wikEdWikiEditorBarwikEd.wikiEditorBar = WikEdGetElementsByClassNamewikEd.GetElementsByClassName('wikiEditor-ui-toolbar', 'div')[0];
wikEdWikiEditorBottomwikEd.wikiEditorBottom = WikEdGetElementsByClassNamewikEd.GetElementsByClassName('wikiEditor-ui-bottom', 'div')[0];
wikEdWikiEditorTextwikEd.wikiEditorText = WikEdGetElementsByClassNamewikEd.GetElementsByClassName('wikiEditor-ui-text', 'div')[0];
wikEd.textareaContainer = wikEd.wikiEditor;
wikEdTextareaContainer = wikEdWikiEditor;
}
 
// create input wrapper, contains the whole fullscreen content
wikEdInputWrapperwikEd.inputWrapper = document.createElement('div');
wikEdInputWrapperwikEd.inputWrapper.id = 'wikEdInputWrapper';
wikEdInputWrapperwikEd.inputWrapper.className = inputWrapperClass;
wikEdTextareaContainerwikEd.textareaContainer.parentNode.insertBefore(wikEdInputWrapperwikEd.inputWrapper, wikEdTextareaContainerwikEd.textareaContainer);
 
// create editor wrapper, contains toolbar, textarea, toc, but not the summary
if (wikEdWikiEditorwikEd.wikiEditor != null) {
wikEd.editorWrapper = wikEd.wikiEditor;
wikEdEditorWrapper = wikEdWikiEditor;
}
else {
wikEdEditorWrapperwikEd.editorWrapper = document.createElement('div');
wikEdEditorWrapperwikEd.editorWrapper.id = 'wikEdEditorWrapper';
wikEdEditorWrapperwikEd.editorWrapper.className = 'wikEdEditorWrapper';
}
wikEdInputWrapperwikEd.inputWrapper.appendChild(wikEdEditorWrapperwikEd.editorWrapper);
 
// create toolbar wrapper
wikEdToolbarWrapperwikEd.toolbarWrapper = document.createElement('div');
wikEdToolbarWrapperwikEd.toolbarWrapper.id = 'wikEdToolbarWrapper';
wikEdToolbarWrapperwikEd.toolbarWrapper.className = 'wikEdToolbarWrapper';
wikEd.toolbar = document.getElementById('toolbar');
wikEdEditorWrapper.appendChild(wikEdToolbarWrapper);
if (wikEd.toolbar != null) {
wikEd.editorWrapper.appendChild(wikEd.toolbarWrapper);
}
else if (wikEd.wikiEditorBar != null) {
wikEd.wikiEditorBar.parentNode.insertBefore(wikEd.toolbarWrapper, wikEd.wikiEditorBar);
wikEd.toolbarWrapper.appendChild(wikEd.wikiEditorBar);
}
else {
wikEd.editorWrapper.appendChild(wikEd.toolbarWrapper);
}
 
// create captcha wrapper
wikEd.textBoxTable;
var wikEdTextBoxTable;
if (wikEdRearrangewikEd.rearrange == true) {
wikEdCaptchaWrapperwikEd.captchaWrapper = document.createElement('div');
wikEdCaptchaWrapperwikEd.captchaWrapper.id = 'wikEdCaptchaWrapper';
wikEdCaptchaWrapperwikEd.captchaWrapper.className = 'wikEdCaptchaWrapper';
wikEdEditorWrapperwikEd.editorWrapper.appendChild(wikEdCaptchaWrapperwikEd.captchaWrapper);
 
// fill captcha wrapper with elements between form and textarea (table)
wikEdTextBoxTablewikEd.textBoxTable = document.getElementById('textBoxTable');
if ( (wikEdUploadEditwikEd.uploadEdit == false) && (wikEdWatchlistEditwikEd.watchlistEdit == false) ) {
var node = wikEdEditFormwikEd.editForm.firstChild;
while (node != null) {
if ( (node == wikEdInputWrapperwikEd.inputWrapper) || (node == wikEdWikiEditorwikEd.wikiEditor) ) {
break;
}
var nextNode = node.nextSibling;
wikEdCaptchaWrapperwikEd.captchaWrapper.appendChild(node);
node = nextNode;
}
Line 2,573 ⟶ 2,601:
 
// create debug textarea wrapper
wikEdDebugWrapperwikEd.debugWrapper = document.createElement('div');
wikEdDebugWrapperwikEd.debugWrapper.id = 'wikEdDebugWrapper';
wikEdDebugWrapperwikEd.debugWrapper.className = 'wikEdDebugWrapper';
wikEdDebugWrapperwikEd.debugWrapper.style.visibility = 'hidden';
wikEdEditorWrapperwikEd.editorWrapper.appendChild(wikEdDebugWrapperwikEd.debugWrapper);
 
// create edit wrapper for textarea and frame wrapper
wikEdEditWrapperwikEd.editWrapper = document.createElement('div');
wikEdEditWrapperwikEd.editWrapper.id = 'wikEdEditWrapper';
wikEdEditWrapperwikEd.editWrapper.className = 'wikEdEditWrapper';
wikEdEditorWrapperwikEd.editorWrapper.appendChild(wikEdEditWrapperwikEd.editWrapper);
 
// create textarea wrapper
wikEdTextareaWrapperwikEd.textareaWrapper = document.createElement('div');
wikEdTextareaWrapperwikEd.textareaWrapper.id = 'wikEdTextareaWrapper';
wikEdTextareaWrapperwikEd.textareaWrapper.className = 'wikEdTextareaWrapper';
wikEdTextareaWrapperwikEd.textareaWrapper.style.position = styleTextareaWrapperPosition;
wikEdTextareaWrapperwikEd.textareaWrapper.style.visibility = styleTextareaWrapperVisibility;
wikEdEditWrapperwikEd.editWrapper.appendChild(wikEdTextareaWrapperwikEd.textareaWrapper);
 
// create frame wrapper
wikEdFrameWrapperwikEd.frameWrapper = document.createElement('div');
wikEdFrameWrapperwikEd.frameWrapper.id = 'wikEdFrameWrapper';
wikEdFrameWrapperwikEd.frameWrapper.className = 'wikEdFrameWrapper';
wikEdFrameWrapperwikEd.frameWrapper.style.position = styleFrameWrapperPosition;
wikEdFrameWrapperwikEd.frameWrapper.style.visibility = styleFrameWrapperVisibility;
wikEdEditWrapperwikEd.editWrapper.appendChild(wikEdFrameWrapperwikEd.frameWrapper);
 
// create console wrapper for buttons, summary, and submit
if (wikEdRearrangewikEd.rearrange == true) {
wikEdConsoleWrapperwikEd.consoleWrapper = document.createElement('div');
wikEdConsoleWrapperwikEd.consoleWrapper.id = 'wikEdConsoleWrapper';
wikEdConsoleWrapperwikEd.consoleWrapper.className = 'wikEdConsoleWrapper';
wikEdInputWrapperwikEd.inputWrapper.appendChild(wikEdConsoleWrapperwikEd.consoleWrapper);
}
 
// create buttons wrapper for wikEd buttons
if (wikEdWikiEditorwikEd.wikiEditor != null) {
wikEd.buttonsWrapper = wikEd.wikiEditorTop;
wikEdButtonsWrapper = wikEdWikiEditorTop;
}
else {
wikEdButtonsWrapperwikEd.buttonsWrapper = document.createElement('div');
wikEdButtonsWrapperwikEd.buttonsWrapper.id = 'wikEdButtonsWrapper';
wikEdButtonsWrapperwikEd.buttonsWrapper.className = 'wikEdButtonsWrapper';
}
wikEdEditorWrapperwikEd.editorWrapper.insertBefore(wikEdButtonsWrapperwikEd.buttonsWrapper, wikEdEditWrapperwikEd.editWrapper);
 
// create summary wrapper for summary, minor edit, and watch this page
if (wikEdRearrangewikEd.rearrange == true) {
wikEdSummaryWrapperwikEd.summaryWrapper = document.createElement('div');
wikEdSummaryWrapperwikEd.summaryWrapper.id = 'wikEdSummaryWrapper';
 
// add summary above the edit field if we add a new section (+ tab)
if (wikEdAddNewSectionwikEd.addNewSection == true) {
wikEdSummaryWrapperwikEd.summaryWrapper.className = 'wikEdSummaryWrapperTop';
wikEdInputWrapperwikEd.inputWrapper.insertBefore(wikEdSummaryWrapperwikEd.summaryWrapper, wikEdInputWrapperwikEd.inputWrapper.firstChild);
}
else {
wikEdSummaryWrapperwikEd.summaryWrapper.className = 'wikEdSummaryWrapper';
wikEdConsoleWrapperwikEd.consoleWrapper.appendChild(wikEdSummaryWrapperwikEd.summaryWrapper);
}
 
// create summary input wrapper
wikEdSummaryInputWrapperwikEd.summaryInputWrapper = document.createElement('div');
wikEdSummaryInputWrapperwikEd.summaryInputWrapper.id = 'wikEdSummaryInputWrapper';
wikEdSummaryInputWrapperwikEd.summaryInputWrapper.className = 'wikEdSummaryInputWrapper';
wikEdSummaryWrapperwikEd.summaryWrapper.appendChild(wikEdSummaryInputWrapperwikEd.summaryInputWrapper);
 
// create minor edit and watch page wrapper
wikEdSummaryOptionswikEd.summaryOptions = document.createElement('div');
wikEdSummaryOptionswikEd.summaryOptions.id = 'wikEdSummaryOptions';
wikEdSummaryOptionswikEd.summaryOptions.className = 'wikEdSummaryOptions';
wikEdSummaryWrapperwikEd.summaryWrapper.appendChild(wikEdSummaryOptionswikEd.summaryOptions);
 
// create submit wrapper for submit elements
wikEdSubmitWrapperwikEd.submitWrapper = document.createElement('div');
wikEdSubmitWrapperwikEd.submitWrapper.id = 'wikEdSubmitWrapper';
wikEdSubmitWrapperwikEd.submitWrapper.className = 'wikEdSubmitWrapper';
wikEdConsoleWrapperwikEd.consoleWrapper.appendChild(wikEdSubmitWrapperwikEd.submitWrapper);
 
// create submit buttons wrapper for submit buttons and help links
wikEdSubmitButtonsWrapperwikEd.submitButtonsWrapper = document.createElement('div');
wikEdSubmitButtonsWrapperwikEd.submitButtonsWrapper.id = 'wikEdSubmitButtonsWrapper';
wikEdSubmitButtonsWrapperwikEd.submitButtonsWrapper.className = 'wikEdSubmitButtonsWrapper';
wikEdSubmitWrapperwikEd.submitWrapper.appendChild(wikEdSubmitButtonsWrapperwikEd.submitButtonsWrapper);
}
 
// create preview wrapper for preview and diff box
wikEdLocalPrevWrapperwikEd.localPrevWrapper = document.createElement('div');
wikEdLocalPrevWrapperwikEd.localPrevWrapper.id = 'wikEdLocalPrevWrapper';
wikEdLocalPrevWrapperwikEd.localPrevWrapper.className = 'wikEdLocalPrevWrapper';
wikEdLocalPrevWrapperwikEd.localPrevWrapper.style.display = 'none';
if (wikEdRearrangewikEd.rearrange == true) {
wikEdInputWrapperwikEd.inputWrapper.appendChild(wikEdLocalPrevWrapperwikEd.localPrevWrapper);
}
else if (wikEdSaveButtonwikEd.saveButton != null) {
wikEdSaveButtonwikEd.saveButton.parentNode.appendChild(wikEdLocalPrevWrapperwikEd.localPrevWrapper);
}
else if (wikEdPreviewButtonwikEd.previewButton != null) {
wikEdPreviewButtonwikEd.previewButton.parentNode.appendChild(wikEdLocalPrevWrapperwikEd.localPrevWrapper);
}
else if (wikEdDiffPreviewButtonwikEd.diffPreviewButton != null) {
wikEdDiffPreviewButtonwikEd.diffPreviewButton.parentNode.appendChild(wikEdLocalPrevWrapperwikEd.localPrevWrapper);
}
 
// create insert wrapper for insert special chars links
if (wikEdRearrangewikEd.rearrange == true) {
wikEdInsertWrapperwikEd.insertWrapper = document.createElement('div');
wikEdInsertWrapperwikEd.insertWrapper.id = 'wikEdInsertWrapper';
wikEdInsertWrapperwikEd.insertWrapper.className = 'wikEdInsertWrapper';
wikEdInputWrapperwikEd.inputWrapper.appendChild(wikEdInsertWrapperwikEd.insertWrapper);
}
 
// append input wrapper to document
if (wikEdRearrangewikEd.rearrange == true) {
wikEdEditFormwikEd.editForm.insertBefore(wikEdInputWrapperwikEd.inputWrapper, wikEdEditFormwikEd.editForm.firstChild);
}
 
Line 2,694 ⟶ 2,722:
 
// create debug textarea and add to debug wrapper
wikEdDebugwikEd.debug = document.createElement('textarea');
wikEdDebugwikEd.debug.rows = 20;
wikEdDebugwikEd.debug.style.display = 'none';
wikEdDebugwikEd.debug.setAttribute('spellcheck', false);
wikEdDebugWrapperwikEd.debugWrapper.appendChild(wikEdDebugwikEd.debug);
 
// display startup error messages
if (wikEdConfig['wikEd.config.debugStartUp'] != '') {
WikEdDebugwikEd.Debug(wikEdConfig['wikEd.config.debugStartUp']);
}
 
// wikEdDiffwikEd.diff enhanced ajax diff
if (typeof(wikEdDiffTablewikEd.diffTable) == 'object') {
if ( (wikEdDiffTablewikEd.diffTable != null) && (wikEdDiffwikEd.diff == true) ) {
if (typeof(WikEdDiffwikEd.Diff) == 'function') {
WikEdDiffwikEd.Diff();
}
}
}
 
// add toolbar tohide toolbar wrapper
if (wikEd.closeToolbar == true) {
wikEdToolbar = document.getElementById('toolbar');
wikEd.toolbarWrapper.style.display = 'none';
if (wikEdToolbar == null) {
wikEdToolbar = wikEdWikiEditorBar;
}
if (wikEdCloseToolbar == true) {
wikEdToolbarWrapper.style.display = 'none';
}
else {
wikEdToolbarWrapperwikEd.toolbarWrapper.style.display = 'block';
}
 
// call wikibits:mwSetupToolbar() now because it would terminate with an error after setting textarea to display: none
if (wikEdToolbarwikEd.toolbar != null) {
if (wikEdToolbarwikEd.toolbar.getElementsByTagName('IMG').length == 0) {
if (typeof(mwSetupToolbar) == 'function') {
mwSetupToolbar();
WikEdRemoveEventListenerwikEd.RemoveEventListener(window, 'load', mwSetupToolbar, false);
}
}
Line 2,737 ⟶ 2,761:
 
// dropdowns from toolbar should go over wikEd toolbar
if (wikEdWikiEditorBarwikEd.wikiEditorBar != null) {
wikEdWikiEditorBarwikEd.wikiEditorBar.style.zIndex = '5';
}
 
var wpSummary = document.getElementsByName('wpSummary');
if (wpSummary.length > 0) {
wikEdEditOptionswikEd.editOptions = wpSummary[0].parentNode;
wikEdEditOptionswikEd.editOptions.className = 'wikEdEditOptions';
}
 
// add summary elements to summary input wrapper
if (wikEdRearrangewikEd.rearrange == true) {
wikEdSummaryLabelwikEd.summaryLabel = document.getElementById('wpSummaryLabel');
if (wikEdSummaryLabelwikEd.summaryLabel != null) {
wikEdSummaryInputWrapperwikEd.summaryInputWrapper.appendChild(wikEdSummaryLabelwikEd.summaryLabel);
}
wikEdSummaryTextwikEd.summaryText = document.getElementsByName('wpSummary')[0];
wikEdSummaryInputWrapperwikEd.summaryInputWrapper.appendChild(wikEdSummaryTextwikEd.summaryText);
}
 
// move editpage-copywarn out of summary wrapper
// needs to be done before appending editOptions to summary wrapper otherwise a linebreak stays (Mozilla bug)
if (wikEdRearrangewikEd.rearrange == true) {
var copywarn = document.getElementById('editpage-copywarn');
if (copywarn != null) {
wikEdInputWrapperwikEd.inputWrapper.parentNode.insertBefore(copywarn, wikEdInputWrapperwikEd.inputWrapper.nextSibling);
}
}
 
// add submit buttons to submit wrapper
if (wikEdRearrangewikEd.rearrange == true) {
var wpEditButtons = wikEdSaveButton.parentNode;
if (wikEd.saveButton != null) {
wikEdSubmitWrapper.insertBefore(wpEditButtons, wikEdSubmitButtonsWrapper);
wpEditButtons = wikEd.saveButton.parentNode;
}
}
 
else if (wikEd.previewButton != null) {
// move edit options after submit buttons; crashes Mozilla when appended after filling the iframe
wpEditButtons = wikEd.previewButton.parentNode;
if (wikEdRearrange == true) {
}
if (wikEdDiffPreviewButton != null) {
else if (wikEd.diffPreviewButton != null) {
wikEdDiffPreviewButton.parentNode.insertBefore(wikEdEditOptions, wikEdDiffPreviewButton.nextSibling);
wpEditButtons = wikEd.diffPreviewButton.parentNode;
 
}
// remove linebreak before minor edit checkbox
if (wpEditButtons!= null) {
var node = wikEdEditOptions.firstChild;
wikEd.submitWrapper.insertBefore(wpEditButtons, wikEd.submitButtonsWrapper);
while (node != null) {
wikEd.submitButtonsWrapper.appendChild(wpEditButtons);
if (node.tagName != null) {
if (node.tagName == 'BR') {
node.parentNode.removeChild(node);
break;
}
}
node = node.nextSibling;
}
}
}
 
// add textBoxTable or textarea to edit wrapper
if (wikEdTextBoxTablewikEd.textBoxTable != null) {
wikEdTextareaWrapperwikEd.textareaWrapper.appendChild(wikEdTextBoxTablewikEd.textBoxTable);
}
else if (wikEdWikiEditorwikEd.wikiEditor != null) {
wikEdTextareaWrapperwikEd.textareaWrapper.appendChild(wikEdWikiEditorBottomwikEd.wikiEditorBottom);
}
else {
wikEdTextareaWrapperwikEd.textareaWrapper.appendChild(wikEdTextareawikEd.textarea);
}
 
// set frame font family
var classFrameBody;
if (wikEdHighlightSyntaxwikEd.highlightSyntax == true) {
if (wikEdRefHidewikEd.refHide == true) {
classFrameBody = 'wikEdFrameBodyNewbie';
}
Line 2,826 ⟶ 2,843:
html += '</div>';
html += '</div>';
wikEdFrameWrapperwikEd.frameWrapper.innerHTML = html;
 
// old Mozilla versions crash when designmode is turned on before the frame has loaded completely
// but onload workaround has problems starting with Firefox 3.6 (bug 542727)
var onloadWorkaround = false;
if ( (wikEdMozillawikEd.mozilla == true) && (
(wikEdBrowserFlavorwikEd.browserFlavor == 'Firefox') && (wikEdBrowserVersionwikEd.browserVersion < 3.0) ||
(wikEdBrowserFlavorwikEd.browserFlavor == 'Netscape') && (wikEdBrowserVersionwikEd.browserVersion < 9.0) ||
(wikEdBrowserFlavorwikEd.browserFlavor == 'SeaMonkey') && (wikEdBrowserVersionwikEd.browserVersion < 2.0) ) ) {
onloadWorkaround = true;
}
Line 2,844 ⟶ 2,861:
 
// disable spellchecker in iframe
if (wikEdNoSpellcheckwikEd.noSpellcheck == true) {
html += ' spellcheck="false"';
}
if (wikEdReadOnlywikEd.readOnly == false) {
html += ' onload="var doc = window.document; doc.designMode = \'on\'; ';
}
Line 2,855 ⟶ 2,872:
html += '></body></html>';
 
wikEdFrameOuterwikEd.frameOuter = document.getElementById('wikEdFrameOuter');
wikEdFrameInnerwikEd.frameInner = document.getElementById('wikEdFrameInner');
wikEdFramewikEd.frame = document.getElementById('wikEdFrame');
wikEdFrameWindowwikEd.frameWindow = wikEdFramewikEd.frame.contentWindow;
wikEdFrameDocumentwikEd.frameDocument = wikEdFrameWindowwikEd.frameWindow.document;
 
// set frame width, border divs shrink around
wikEdFrameBorderHeightwikEd.frameBorderHeight = parseInt(WikEdGetStylewikEd.GetStyle(wikEdFrameOuterwikEd.frameOuter, 'borderTopWidth'), 10) + parseInt(WikEdGetStylewikEd.GetStyle(wikEdFrameOuterwikEd.frameOuter, 'borderBottomWidth'), 10) + parseInt(WikEdGetStylewikEd.GetStyle(wikEdFrameInnerwikEd.frameInner, 'borderTopWidth'), 10) + parseInt(WikEdGetStylewikEd.GetStyle(wikEdFrameInnerwikEd.frameInner, 'borderBottomWidth'), 10);
wikEdFrameBorderWidthwikEd.frameBorderWidth = parseInt(WikEdGetStylewikEd.GetStyle(wikEdFrameOuterwikEd.frameOuter, 'borderLeftWidth'), 10) + parseInt(WikEdGetStylewikEd.GetStyle(wikEdFrameOuterwikEd.frameOuter, 'borderRightWidth'), 10) + parseInt(WikEdGetStylewikEd.GetStyle(wikEdFrameInnerwikEd.frameInner, 'borderLeftWidth'), 10) + parseInt(WikEdGetStylewikEd.GetStyle(wikEdFrameInnerwikEd.frameInner, 'borderRightWidth'), 10);
 
wikEd.frameHeight = (wikEd.textareaOffsetHeightInitial - wikEd.frameBorderHeight) + 'px';
wikEdFrameHeight = (wikEdTextareaOffsetHeightInitial - wikEdFrameBorderHeight) + 'px';
wikEdFrameWidthwikEd.frameWidth = (wikEdEditorWrapperwikEd.editorWrapper.clientWidth - wikEdFrameBorderWidthwikEd.frameBorderWidth) + 'px';
wikEdFramewikEd.frame.style.height = wikEdFrameHeightwikEd.frameHeight;
wikEdFramewikEd.frame.style.width = wikEdFrameWidthwikEd.frameWidth;
 
// do not remember sie if started in fullscreen mode
if (wikEdFullScreenModewikEd.fullScreenMode == true) {
wikEdFrameHeightwikEd.frameHeight = 0;
wikEdFrameWidthwikEd.frameWidth = 0;
}
 
// turn on designmode before adding content
if ( (onloadWorkaround == false) && (wikEdReadOnlywikEd.readOnly == false) ) {
wikEdFrameDocumentwikEd.frameDocument.designMode = 'on';
try { wikEdFrameDocumentwikEd.frameDocument.execCommand('styleWithCSS', 0, false); } catch (e) {
try { wikEdFrameDocumentwikEd.frameDocument.execCommand('useCSS', 0, true); } catch (e) {
try { wikEdFrameDocumentwikEd.frameDocument.execCommand('styleWithCSS', false, false); } catch (e) {
}
}
Line 2,888 ⟶ 2,905:
 
// MS-IE needs styling for full width frame
if (wikEdMSIEwikEd.msie == true) {
////// wikEdFramewikEd.frame.style.width = wikEdTextareaWidthwikEd.textareaWidth + 'px';// 100%
}
 
// fill iframe with content
wikEdFrameDocumentwikEd.frameDocument.open();
wikEdFrameDocumentwikEd.frameDocument.write(html);
wikEdFrameDocumentwikEd.frameDocument.close();
wikEdFrameBodywikEd.frameBody = wikEdFrameDocumentwikEd.frameDocument.body;
 
// generate button bars and add them to the buttons wrapper
// form wrapper has been added against summary input submit defaulting to this button
if (wikEdReadOnlywikEd.readOnly == false) {
wikEdButtonBarFormatwikEd.buttonBarFormat = MakeButtonBar(wikEdConfig['wikEd.config.buttonBar']['format']);
wikEdButtonsWrapperwikEd.buttonsWrapper.appendChild(wikEdButtonBarFormatwikEd.buttonBarFormat);
 
wikEdButtonBarTextifywikEd.buttonBarTextify = MakeButtonBar(wikEdConfig['wikEd.config.buttonBar']['textify']);
wikEdButtonsWrapperwikEd.buttonsWrapper.appendChild(wikEdButtonBarTextifywikEd.buttonBarTextify);
}
 
wikEdButtonBarControlwikEd.buttonBarControl = MakeButtonBar(wikEdConfig['wikEd.config.buttonBar']['control']);
wikEdButtonsWrapperwikEd.buttonsWrapper.appendChild(wikEdButtonBarControlwikEd.buttonBarControl);
 
if (wikEdConfig['wikEd.config.buttonBar']['custom1'][6].length > 0) {
wikEdButtonBarCustom1wikEd.buttonBarCustom1 = MakeButtonBar(wikEdConfig['wikEd.config.buttonBar']['custom1']);
wikEdButtonsWrapperwikEd.buttonsWrapper.appendChild(wikEdButtonBarCustom1wikEd.buttonBarCustom1);
}
 
wikEdButtonBarFindwikEd.buttonBarFind = MakeButtonBar(wikEdConfig['wikEd.config.buttonBar']['find']);
wikEdButtonsWrapperwikEd.buttonsWrapper.appendChild(wikEdButtonBarFindwikEd.buttonBarFind);
 
if (wikEdReadOnlywikEd.readOnly == false) {
wikEdButtonBarFixwikEd.buttonBarFix = MakeButtonBar(wikEdConfig['wikEd.config.buttonBar']['fix']);
wikEdButtonsWrapperwikEd.buttonsWrapper.appendChild(wikEdButtonBarFixwikEd.buttonBarFix);
}
 
if (wikEdConfig['wikEd.config.buttonBar']['custom2'][6].length > 0) {
wikEdButtonBarCustom2wikEd.buttonBarCustom2 = MakeButtonBar(wikEdConfig['wikEd.config.buttonBar']['custom2']);
wikEdButtonsWrapperwikEd.buttonsWrapper.appendChild(wikEdButtonBarCustom2wikEd.buttonBarCustom2);
}
 
var br = document.createElement('br');
br.style.clear = 'both';
wikEdButtonsWrapperwikEd.buttonsWrapper.appendChild(br);
 
wikEdCaseSensitivewikEd.caseSensitive = document.getElementById('wikEdCaseSensitive');
wikEdRegExpwikEd.regExp = document.getElementById('wikEdRegExp');
wikEdFindAheadwikEd.findAhead = document.getElementById('wikEdFindAhead');
wikEdFindTextwikEd.findText = document.getElementById('wikEdFindText');
wikEdReplaceTextwikEd.replaceText = document.getElementById('wikEdReplaceText');
 
// add preview box top bar to submit wrapper
wikEdButtonBarPreviewwikEd.buttonBarPreview = MakeButtonBar(wikEdConfig['wikEd.config.buttonBar']['preview']);
if (wikEdRearrangewikEd.rearrange == true) {
wikEdSubmitWrapperwikEd.submitWrapper.insertBefore(wikEdButtonBarPreviewwikEd.buttonBarPreview, wikEdSubmitWrapperwikEd.submitWrapper.firstChild);
}
 
// add preview box and its bottom bar to preview wrapper
if (wikEdLocalPrevWrapperwikEd.localPrevWrapper != null) {
var div = document.createElement('div');
div.id = 'wikEdPreviewBoxOuter';
div.className = 'wikEdPreviewBoxOuter';
wikEdLocalPrevWrapperwikEd.localPrevWrapper.appendChild(div);
 
wikEdPreviewBoxwikEd.previewBox = document.createElement('div');
wikEdPreviewBoxwikEd.previewBox.id = 'wikEdPreviewBox';
wikEdPreviewBoxwikEd.previewBox.className = 'wikEdPreviewBox';
div.appendChild(wikEdPreviewBoxwikEd.previewBox);
wikEdButtonBarPreview2wikEd.buttonBarPreview2 = MakeButtonBar(wikEdConfig['wikEd.config.buttonBar']['preview2']);
wikEdLocalPrevWrapperwikEd.localPrevWrapper.appendChild(wikEdButtonBarPreview2wikEd.buttonBarPreview2);
}
 
Line 2,964 ⟶ 2,981:
if (wikiPreview != null) {
if (wikiPreview.firstChild != null) {
wikEdButtonBarJumpwikEd.buttonBarJump = MakeButtonBar(wikEdConfig['wikEd.config.buttonBar']['jump']);
wikiPreview.insertBefore(wikEdButtonBarJumpwikEd.buttonBarJump, wikiPreview.firstChild);
}
}
 
// add insert special chars to insert wrapper
if (wikEdInsertWrapperwikEd.insertWrapper != null) {
var wpSpecialchars = document.getElementById('editpage-specialchars');
if (wpSpecialchars != null) {
wikEdInsertWrapperwikEd.insertWrapper.appendChild(wpSpecialchars);
}
}
Line 2,980 ⟶ 2,997:
 
// add local preview button next to submit button
wikEdLocalPreviewwikEd.localPreview = document.createElement('button');
wikEdLocalPreviewwikEd.localPreview.id = 'wikEdLocalPreview';
wikEdLocalPreviewwikEd.localPreview.title = wikEdConfig['wikEd.config.text']['wikEdLocalPreview title'];
wikEdLocalPreviewwikEd.localPreview.className = 'wikEdLocalPreview';
 
var localPreviewImg = document.createElement('img');
localPreviewImg.id = 'wikEdLocalPreviewImg';
localPreviewImg.src = wikEdConfig['wikEd.config.image']['preview'];
localPreviewImg.alt = wikEdConfig['wikEd.config.text']['wikEdLocalPreviewImg alt'];
localPreviewImg.title = wikEdConfig['wikEd.config.text']['wikEdLocalPreview title'];
wikEdLocalPreviewwikEd.localPreview.appendChild(localPreviewImg);
 
if (wikEdPreviewButtonwikEd.previewButton != null) {
wikEdPreviewButtonwikEd.previewButton.parentNode.insertBefore(wikEdLocalPreviewwikEd.localPreview, wikEdPreviewButtonwikEd.previewButton.nextSibling);
}
else if (wikEdSaveButtonwikEd.saveButton != null) {
wikEdSaveButtonwikEd.saveButton.parentNode.insertBefore(wikEdLocalPreviewwikEd.localPreview, wikEdSaveButtonwikEd.saveButton.nextSibling);
}
 
// add local diff button next to submit button
if (wikEdDiffPreviewButtonwikEd.diffPreviewButton != null) {
wikEdLocalDiffwikEd.localDiff = document.createElement('button');
wikEdLocalDiffwikEd.localDiff.id = 'wikEdLocalDiff';
wikEdLocalDiffwikEd.localDiff.title = wikEdConfig['wikEd.config.text']['wikEdLocalDiff title'];
wikEdLocalDiffwikEd.localDiff.className = 'wikEdLocalDiff';
 
var localDiffImg = document.createElement('img');
localDiffImg.id = 'wikEdLocalDiffImg';
localDiffImg.src = wikEdConfig['wikEd.config.image']['diff'];
localDiffImg.alt = wikEdConfig['wikEd.config.text']['wikEdLocalDiffImg alt'];
localDiffImg.title = wikEdConfig['wikEd.config.text']['wikEdLocalDiff title'];
 
wikEdLocalDiffwikEd.localDiff.appendChild(localDiffImg);
wikEdDiffPreviewButtonwikEd.diffPreviewButton.parentNode.insertBefore(wikEdLocalDiffwikEd.localDiff, wikEdDiffPreviewButtonwikEd.diffPreviewButton.nextSibling);
}
 
// correct tab order between check boxes and submits
wikEdFramewikEd.frame.tabIndex = wikEdTextareawikEd.textarea.tabIndex;
 
// initialize image buttons
WikEdButtonwikEd.Button(document.getElementById('wikEdDiff'), 'wikEdDiff', null, wikEdDiffwikEd.diff);
WikEdButtonwikEd.Button(document.getElementById('wikEdRefHide'), 'wikEdRefHide', null, wikEdRefHidewikEd.refHide);
WikEdButtonwikEd.Button(document.getElementById('wikEdHighlightSyntax'), 'wikEdHighlightSyntax', null, wikEdHighlightSyntaxwikEd.highlightSyntax);
WikEdButtonwikEd.Button(document.getElementById('wikEdUseWikEd'), 'wikEdUseWikEd', null, wikEdUseWikEdwikEd.useWikEd);
WikEdButtonwikEd.Button(document.getElementById('wikEdCloseToolbar'), 'wikEdCloseToolbar', null, wikEdCloseToolbarwikEd.closeToolbar);
WikEdButtonwikEd.Button(document.getElementById('wikEdFullScreen'), 'wikEdFullScreen', null, wikEdFullScreenModewikEd.fullScreenMode);
WikEdButtonwikEd.Button(document.getElementById('wikEdUsing'), 'wikEdUsing', null, wikEdUsingwikEd.using);
WikEdButtonwikEd.Button(document.getElementById('wikEdCaseSensitive'), 'wikEdCaseSensitive', null, false);
WikEdButtonwikEd.Button(document.getElementById('wikEdRegExp'), 'wikEdRegExp', null, false);
WikEdButtonwikEd.Button(document.getElementById('wikEdFindAhead'), 'wikEdFindAhead', null, wikEdConfig['wikEd.config.findAheadSelected']);
WikEdButtonwikEd.Button(document.getElementById('wikEdClose'), 'wikEdClose', null, false, 'wikEdButton');
WikEdButtonwikEd.Button(document.getElementById('wikEdClose2'), 'wikEdClose2', null, false, 'wikEdButton');
WikEdButtonwikEd.Button(document.getElementById('wikEdTableMode'), 'wikEdTableMode', null, wikEdTableModewikEd.tableMode);
 
// hide typo fix button until typo fix rules are loaded and parsed
var wikEd.fixRegExTypo = document.getElementById('wikEdFixRegExTypo');
if (wikEd.fixRegExTypo != null) {
wikEd.fixRegExTypo.style.display = 'none';
}
 
// hide buttons if API is not available
if ( (wikEdWikiGlobals['wikEd.wikiGlobals.wgEnableAPI'] != true) && (wikEdWikiGlobals['wikEd.wikiGlobals.wgEnableAPI'] != 'true') ) {
var fixRedirect = document.getElementById('wikEdFixRedirect');
if (fixRedirect != null) {
Line 3,049 ⟶ 3,066:
 
// add a clear summary button left to the summary input field
if (wikEdSummaryTextwikEd.summaryText != null) {
var clearSummaryForm = document.createElement('form');
clearSummaryForm.id = 'wikEdClearSummaryForm';
clearSummaryForm.className = 'wikEdClearSummaryForm';
wikEdSummaryTextwikEd.summaryText.parentNode.insertBefore(clearSummaryForm, wikEdSummaryTextwikEd.summaryText);
 
wikEdClearSummarywikEd.clearSummary = document.createElement('button');
wikEdClearSummarywikEd.clearSummary.id = 'wikEdClearSummary';
wikEdClearSummarywikEd.clearSummary.className = 'wikEdClearSummary';
wikEdClearSummarywikEd.clearSummary.alt = wikEdConfig['wikEd.config.text']['wikEdClearSummary alt'];
wikEdClearSummarywikEd.clearSummary.title = wikEdConfig['wikEd.config.text']['wikEdClearSummary title'];
wikEdClearSummarywikEd.clearSummary.style.height = (wikEdSummaryTextwikEd.summaryText.clientHeight + 1) +'px';
clearSummaryForm.appendChild(wikEdClearSummarywikEd.clearSummary);
 
wikEdClearSummaryImgwikEd.clearSummaryImg = document.createElement('img');
wikEdClearSummaryImgwikEd.clearSummaryImg.id = 'wikEdClearSummaryImg';
wikEdClearSummaryImgwikEd.clearSummaryImg.src = wikEdConfig['wikEd.config.image']['clearSummary'];
wikEdClearSummaryImgwikEd.clearSummaryImg.alt = 'Clear summary';
wikEdClearSummarywikEd.clearSummary.appendChild(wikEdClearSummaryImgwikEd.clearSummaryImg);
 
// remember button width, might be without image
wikEdClearSummaryWidthwikEd.clearSummaryWidth = wikEdClearSummarywikEd.clearSummary.offsetWidth;
 
// make the summary a combo box
Line 3,076 ⟶ 3,093:
summaryComboInput.id = 'wikEdSummaryComboInput';
summaryComboInput.className = 'wikEdSummaryComboInput';
summaryComboInput = wikEdSummaryTextwikEd.summaryText.parentNode.insertBefore(summaryComboInput, wikEdSummaryTextwikEd.summaryText);
 
wikEdSummaryTextwikEd.summaryText = wikEdSummaryTextwikEd.summaryText.parentNode.removeChild(wikEdSummaryTextwikEd.summaryText);
wikEdSummaryTextwikEd.summaryText.className = 'wikEdSummaryText';
wikEdSummaryTextWidthwikEd.summaryTextWidth = wikEdSummaryWrapperwikEd.summaryWrapper.offsetWidth - wikEdSummaryInputWrapperwikEd.summaryInputWrapper.offsetWidth;
if (wikEdSummaryTextWidthwikEd.summaryTextWidth < 150) {
wikEdSummaryTextWidthwikEd.summaryTextWidth = 150;
}
wikEdSummaryTextwikEd.summaryText.style.width = wikEdSummaryTextWidthwikEd.summaryTextWidth + 'px';
 
wikEdSummarySelectwikEd.summarySelect = document.createElement('select');
wikEdSummarySelectwikEd.summarySelect.id = 'wikEdSummarySelect';
wikEdSummarySelectwikEd.summarySelect.className = 'wikEdSummarySelect';
 
summaryComboInput.appendChild(wikEdSummaryTextwikEd.summaryText);
summaryComboInput.appendChild(wikEdSummarySelectwikEd.summarySelect);
}
 
// shorten submit button texts
if (wikEdPreviewButtonwikEd.previewButton != null) {
wikEdPreviewButtonwikEd.previewButton.value = wikEdConfig['wikEd.config.text']['shortenedPreview'];
}
if (wikEdDiffPreviewButtonwikEd.diffPreviewButton != null) {
wikEdDiffPreviewButtonwikEd.diffPreviewButton.value = wikEdConfig['wikEd.config.text']['shortenedChanges'];
}
 
// set up combo input boxes with history
wikEdFieldHistwikEd.fieldHist ['find'] = [];
wikEdSavedNamewikEd.savedName['find'] = 'wikEdFindHistory';
wikEdInputElementwikEd.inputElement['find'] = new Object(wikEdFindTextwikEd.findText);
wikEdSelectElementwikEd.selectElement['find'] = new Object(document.getElementById('wikEdFindSelect'));
wikEdSelectElementwikEd.selectElement['find'].title = wikEdConfig['wikEd.config.text']['wikEdFindSelect title'];
 
wikEdFieldHistwikEd.fieldHist ['replace'] = [];
wikEdSavedNamewikEd.savedName['replace'] = 'wikEdReplaceHistory';
wikEdInputElementwikEd.inputElement['replace'] = new Object(wikEdReplaceTextwikEd.replaceText);
wikEdSelectElementwikEd.selectElement['replace'] = new Object(document.getElementById('wikEdReplaceSelect'));
wikEdSelectElementwikEd.selectElement['replace'].title = wikEdConfig['wikEd.config.text']['wikEdReplaceSelect title'];
 
if (wikEdSummaryInputWrapperwikEd.summaryInputWrapper != null) {
wikEdFieldHistwikEd.fieldHist ['summary'] = [];
wikEdSavedNamewikEd.savedName['summary'] = 'wikEdSummaryHistory';
wikEdInputElementwikEd.inputElement['summary'] = new Object(wikEdSummaryTextwikEd.summaryText);
wikEdSelectElementwikEd.selectElement['summary'] = new Object(document.getElementById('wikEdSummarySelect'));
wikEdSelectElementwikEd.selectElement['summary'].title = wikEdConfig['wikEd.config.text']['wikEdSummarySelect title'];
}
 
// adjust the select field widths to that of the text input fields
WikEdResizeComboInputwikEd.ResizeComboInput('find');
WikEdResizeComboInputwikEd.ResizeComboInput('replace');
WikEdResizeComboInputwikEd.ResizeComboInput('summary');
 
// hide the button bars per saved setting
if (wikEdButtonBarFormatwikEd.buttonBarFormat != null) {
wikEd.ButtonBarInit(wikEd.buttonBarFormat);
WikEdButtonBarInit(wikEdButtonBarFormat);
}
if (wikEdButtonBarTextifywikEd.buttonBarTextify != null) {
wikEd.ButtonBarInit(wikEd.buttonBarTextify);
WikEdButtonBarInit(wikEdButtonBarTextify);
}
if (wikEdButtonBarControlwikEd.buttonBarControl != null) {
wikEd.ButtonBarInit(wikEd.buttonBarControl);
WikEdButtonBarInit(wikEdButtonBarControl);
}
if (wikEdButtonBarCustom1wikEd.buttonBarCustom1 != null) {
wikEd.ButtonBarInit(wikEd.buttonBarCustom1);
WikEdButtonBarInit(wikEdButtonBarCustom1);
}
if (wikEdButtonBarFindwikEd.buttonBarFind != null) {
wikEd.ButtonBarInit(wikEd.buttonBarFind);
WikEdButtonBarInit(wikEdButtonBarFind);
}
if (wikEdButtonBarFixwikEd.buttonBarFix != null) {
wikEd.ButtonBarInit(wikEd.buttonBarFix);
WikEdButtonBarInit(wikEdButtonBarFix);
}
if (wikEdButtonBarCustom2wikEd.buttonBarCustom2 != null) {
wikEd.ButtonBarInit(wikEd.buttonBarCustom2);
WikEdButtonBarInit(wikEdButtonBarCustom2);
}
 
// display only the textarea or the iframe, dont change the frame
WikEdSetEditAreawikEd.SetEditArea(wikEdUseWikEdwikEd.useWikEd, true);
 
// add a link to the wikEd help page
if (wikEdRearrangewikEd.rearrange == true) {
if ( (wikEdConfig['wikEd.config.helpPageLink'] != '') && (wikEdConfig['wikEd.config.helpPageLink'] != null) ) {
var editHelpParent = wikEdDiffPreviewButtonwikEd.diffPreviewButton;
while (editHelpParent != null) {
if (editHelpParent.tagName == 'SPAN') {
Line 3,175 ⟶ 3,192:
 
if (editHelp != null) {
var wikEdHelpSpanwikEd.helpSpan = document.createElement('span');
wikEdHelpSpanwikEd.helpSpan.id = 'wikEdHelpSpan';
wikEdHelpSpanwikEd.helpSpan.className = 'wikEdHelpSpan';
wikEdHelpSpanwikEd.helpSpan.innerHTML = wikEdConfig['wikEd.config.helpPageLink'].replace(/\{wikEdHomeBaseUrlwikEd.homeBaseUrl\}/g, wikEdConfig['wikEd.config.homeBaseUrl']);
editHelpParent.insertBefore(wikEdHelpSpanwikEd.helpSpan, editHelp.nextSibling);
 
wikEdEditHelpwikEd.editHelp = wikEdHelpSpanwikEd.helpSpan.parentNode;
wikEdEditHelpwikEd.editHelp.id = 'wikEdEditHelp';
wikEdEditHelpwikEd.editHelp.className = 'wikEdEditHelp';
}
}
Line 3,190 ⟶ 3,207:
 
// copy page warnings above edit window
if (wikEdConfig['wikEd.config.doCloneWarnings'] == true) {
if ( (wikEdClonedWarningswikEd.clonedWarnings == false) && (wikEdPreviewPagewikEd.previewPage == false) && (/(.*\n){2}/.test(wikEdOrigVersionwikEd.origVersion) ) == true) {
var divs = document.getElementsByTagName('div');
var divWarnings = [];
Line 3,209 ⟶ 3,226:
for (var i = 0; i < divWarnings.length; i ++) {
var clone = divWarnings[i].cloneNode(true);
wikEdEditFormwikEd.editForm.insertBefore(clone, wikEdEditFormwikEd.editForm.firstChild);
}
wikEdClonedWarningswikEd.clonedWarnings = true;
}
}
 
// add frame stylesheet definition
wikEdDirectionwikEd.direction = WikEdGetStylewikEd.GetStyle(document.body, 'direction');
wikEdFrameBodywikEd.frameBody.style.direction = wikEdDirectionwikEd.direction;
WikEdApplyCSSwikEd.ApplyCSS(wikEdFrameDocumentwikEd.frameDocument, wikEdConfig['wikEd.config.frameCSS']);
wikEd.HighlightNamedHideButtonsStylesheet = new wikEd.StyleSheet(wikEd.frameDocument);
WikEdHighlightNamedHideButtonsStylesheet = new WikEdStyleSheet(wikEdFrameDocument);
 
// copy textarea background
if (WikEdGetStylewikEd.GetStyle(wikEdTextareawikEd.textarea, 'display') != 'none') {
wikEdFrameInnerwikEd.frameInner.style.backgroundColor = WikEdGetStylewikEd.GetStyle(wikEdTextareawikEd.textarea, 'backgroundColor');
}
 
// adjust font size (px)
wikEdTextSizeInitwikEd.textSizeInit = parseFloat(WikEdGetStylewikEd.GetStyle(wikEdTextareawikEd.textarea, 'fontSize')) * wikEdConfig['wikEd.config.textSizeAdjust'] / 100;
wikEd.textSize = wikEd.textSizeInit;
wikEdTextSize = wikEdTextSizeInit;
wikEdFrameBodywikEd.frameBody.style.fontSize = wikEdTextSizewikEd.textSize + 'px';
 
// copy the textarea content to the iframe
if (wikEdUseWikEdwikEd.useWikEd == true) {
WikEdUpdateFramewikEd.UpdateFrame();
}
 
// initialize IERange DOM range compatibility library
if (typeof(IERange) == 'function') {
IERange(wikEdFrameWindowwikEd.frameWindow, wikEdFrameDocumentwikEd.frameDocument);
}
 
// scroll to edit window and focus if it is not a preview page
if ( (scrollToEditFocus == true) && (wikEdPreviewPagewikEd.previewPage == false) ) {
 
// focus the input field
if (wikEdConfig['wikEd.config.focusEdit'] == true) {
if (wikEdUseWikEdwikEd.useWikEd == true) {
wikEdFrameWindowwikEd.frameWindow.focus();
}
else {
if (wikEdMSIEwikEd.msie == true) {
wikEdTextareawikEd.textarea.selection.empty();
}
else {
wikEdTextareawikEd.textarea.setSelectionRange(0, 0);
}
wikEdTextareawikEd.textarea.focus();
}
}
 
// scroll
if ( (wikEdFullScreenModewikEd.fullScreenMode == false) && (wikEdConfig['wikEd.config.scrollToEdit'] == true) ) {
window.scroll(0, WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdEditFormwikEd.editForm) - 2);
}
}
 
// register edit button click events
for (var buttonId in wikEdEditButtonHandlerwikEd.editButtonHandler) {
if (wikEdEditButtonHandlerwikEd.editButtonHandler.hasOwnProperty(buttonId) == true) {
var buttonObj = document.getElementById(buttonId);
if (buttonObj != null) {
WikEdAddEventListenerwikEd.AddEventListener(buttonObj, 'click', WikEdEditButtonHandlerwikEd.EditButtonHandler, true);
}
}
Line 3,277 ⟶ 3,294:
 
// register summary shrinking event after loading the 'Clear summary' image handler
WikEdAddEventListenerwikEd.AddEventListener(wikEdClearSummaryImgwikEd.clearSummaryImg, 'load', WikEdShrinkSummaryHandlerwikEd.ShrinkSummaryHandler, true);
 
// register summary resize event for window resizing (MS IE bug: fires once always)
WikEdAddEventListenerwikEd.AddEventListener(window, 'resize', WikEdResizeWindowHandlerwikEd.ResizeWindowHandler, true);
 
// register frame events
WikEdAddEventListenerwikEd.AddEventListener(wikEdFrameDocumentwikEd.frameDocument, 'keydown', WikEdKeyFrameHandlerwikEd.KeyFrameHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdFrameDocumentwikEd.frameDocument, 'keyup', WikEdKeyFrameHandlerwikEd.KeyFrameHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdFrameDocumentwikEd.frameDocument, 'keypress', WikEdKeyFrameHandlerwikEd.KeyFrameHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mouseup', WikEdKeyFrameHandlerwikEd.KeyFrameHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdFrameDocumentwikEd.frameDocument, 'keydown', WikEdKeyHandlerwikEd.KeyHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mousemove', WikEdResizeGripHandlerwikEd.ResizeGripHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdFrameDocumentwikEd.frameDocument, 'dblclick', WikEdResizeFrameResetHandlerwikEd.ResizeFrameResetHandler, true);
 
// register document events
WikEdAddEventListenerwikEd.AddEventListener(document, 'keydown', WikEdKeyHandlerwikEd.KeyHandler, true);
 
// dblclick on wrapper events
WikEdAddEventListenerwikEd.AddEventListener(wikEdDebugWrapperwikEd.debugWrapper, 'dblclick', WikEdDebugHandlerwikEd.DebugHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdLocalPrevWrapperwikEd.localPrevWrapper, 'dblclick', WikEdPrevWrapperHandlerwikEd.PrevWrapperHandler, true);
 
// register find ahead events
WikEdAddEventListenerwikEd.AddEventListener(wikEdFindTextwikEd.findText, 'keyup', WikEdFindAheadwikEd.FindAhead, true);
 
// register submit button events
WikEdAddEventListenerwikEd.AddEventListener(wikEdSaveButtonwikEd.saveButton, 'click', WikEdSaveButtonHandlerwikEd.SaveButtonHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdPreviewButtonwikEd.previewButton, 'click', WikEdPreviewButtonHandlerwikEd.PreviewButtonHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdDiffPreviewButtonwikEd.diffPreviewButton, 'click', wikEdDiffPreviewButtonHandlerwikEd.DiffPreviewButtonHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdLocalPreviewwikEd.localPreview, 'click', WikEdLocalPreviewHandlerwikEd.LocalPreviewHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdLocalDiffwikEd.localDiff, 'click', WikEdLocalDiffHandlerwikEd.LocalDiffHandler, true);
 
// unload (leaving page) events
WikEdAddEventListenerwikEd.AddEventListener(window, 'pagehide', WikEdUnloadHandlerwikEd.UnloadHandler, false);
 
// set button bar grip area events
if (wikEdButtonBarFormatwikEd.buttonBarFormat != null) {
WikEdAddEventListenerwikEd.AddEventListener(wikEdButtonBarFormatwikEd.buttonBarFormat.firstChild.firstChild, 'click', WikEdButtonBarGripHandlerwikEd.ButtonBarGripHandler, false);
}
if (wikEdButtonBarTextifywikEd.buttonBarTextify != null) {
WikEdAddEventListenerwikEd.AddEventListener(wikEdButtonBarTextifywikEd.buttonBarTextify.firstChild.firstChild, 'click', WikEdButtonBarGripHandlerwikEd.ButtonBarGripHandler, false);
}
if (wikEdButtonBarControlwikEd.buttonBarControl != null) {
WikEdAddEventListenerwikEd.AddEventListener(wikEdButtonBarControlwikEd.buttonBarControl.firstChild.firstChild, 'click', WikEdButtonBarGripHandlerwikEd.ButtonBarGripHandler, false);
}
if (wikEdButtonBarCustom1wikEd.buttonBarCustom1 != null) {
if (wikEdButtonBarCustom1wikEd.buttonBarCustom1.firstChild.firstChild != null) {
WikEdAddEventListenerwikEd.AddEventListener(wikEdButtonBarCustom1wikEd.buttonBarCustom1.firstChild.firstChild, 'click', WikEdButtonBarGripHandlerwikEd.ButtonBarGripHandler, false);
}
}
if (wikEdButtonBarFindwikEd.buttonBarFind != null) {
WikEdAddEventListenerwikEd.AddEventListener(wikEdButtonBarFindwikEd.buttonBarFind.firstChild.firstChild, 'click', WikEdButtonBarGripHandlerwikEd.ButtonBarGripHandler, false);
}
if (wikEdButtonBarFixwikEd.buttonBarFix != null) {
WikEdAddEventListenerwikEd.AddEventListener(wikEdButtonBarFixwikEd.buttonBarFix.firstChild.firstChild, 'click', WikEdButtonBarGripHandlerwikEd.ButtonBarGripHandler, false);
}
if (wikEdButtonBarCustom2wikEd.buttonBarCustom2 != null) {
if (wikEdButtonBarCustom2wikEd.buttonBarCustom2.firstChild.firstChild != null) {
WikEdAddEventListenerwikEd.AddEventListener(wikEdButtonBarCustom2wikEd.buttonBarCustom2.firstChild.firstChild, 'click', WikEdButtonBarGripHandlerwikEd.ButtonBarGripHandler, false);
}
}
 
// register combo box events
WikEdAddEventListenerwikEd.AddEventListener(wikEdSummarySelectwikEd.summarySelect, 'change', function() { WikEdChangeComboInputwikEd.ChangeComboInput('summary'); }, false);
WikEdAddEventListenerwikEd.AddEventListener(wikEdSummarySelectwikEd.summarySelect, 'focus', function() { WikEdSetComboOptionswikEd.SetComboOptions('summary'); }, false);
 
WikEdAddEventListenerwikEd.AddEventListener(wikEdSelectElementwikEd.selectElement['find'],'change', function() { WikEdChangeComboInputwikEd.ChangeComboInput('find'); }, false);
WikEdAddEventListenerwikEd.AddEventListener(wikEdSelectElementwikEd.selectElement['find'],'focus', function() { WikEdSetComboOptionswikEd.SetComboOptions('find'); }, false);
 
WikEdAddEventListenerwikEd.AddEventListener(wikEdSelectElementwikEd.selectElement['replace'],'change', function() { WikEdChangeComboInputwikEd.ChangeComboInput('replace'); }, false);
WikEdAddEventListenerwikEd.AddEventListener(wikEdSelectElementwikEd.selectElement['replace'],'focus', function() { WikEdSetComboOptionswikEd.SetComboOptions('replace'); }, false);
 
// register the clear summary click handler
WikEdAddEventListenerwikEd.AddEventListener(wikEdClearSummarywikEd.clearSummary, 'click', WikEdClearSummaryHandlerwikEd.ClearSummaryHandler, true);
 
// select the text on focus for find and replace fields
WikEdAddEventListenerwikEd.AddEventListener(wikEdFindTextwikEd.findText, 'focus', WikEdFindReplaceHandlerwikEd.FindReplaceHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdReplaceTextwikEd.replaceText, 'focus', WikEdFindReplaceHandlerwikEd.FindReplaceHandler, true);
 
// tab / shift-tab between find and replace fields
WikEdAddEventListenerwikEd.AddEventListener(wikEdFindTextwikEd.findText, 'keydown', WikEdFindReplaceHandlerwikEd.FindReplaceHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdReplaceTextwikEd.replaceText, 'keydown', WikEdFindReplaceHandlerwikEd.FindReplaceHandler, true);
 
// init MediaWiki file paths for use in regexps
if (wikEdWikiGlobals['wikEd.wikiGlobals.wgServer'] != null) {
wikEdServerwikEd.server = wikEdWikiGlobals['wikEd.wikiGlobals.wgServer'];
}
if (wikEdWikiGlobals['wikEd.wikiGlobals.wgArticlePath'] != null) {
wikEdArticlePathwikEd.articlePath = wikEdWikiGlobals['wikEd.wikiGlobals.wgArticlePath'];
}
if (wikEdWikiGlobals['wikEd.wikiGlobals.wgScriptPath'] != null) {
wikEdScriptPathwikEd.scriptPath = wikEdWikiGlobals['wikEd.wikiGlobals.wgScriptPath'];
}
if (wikEdWikiGlobals['wikEd.wikiGlobals.wgScript'] != null) {
wikEdScriptwikEd.script = wikEdWikiGlobals['wikEd.wikiGlobals.wgScript'];
}
 
wikEdArticlePathwikEd.articlePath = wikEdArticlePathwikEd.articlePath.replace(wikEdServerwikEd.server, '');
wikEdScriptPathwikEd.scriptPath = wikEdScriptPathwikEd.scriptPath.replace(wikEdServerwikEd.server, '');
wikEdArticlePathwikEd.articlePath = wikEdArticlePathwikEd.articlePath.replace(/\$1$/, '');
wikEdScriptPathwikEd.scriptPath = wikEdScriptPathwikEd.scriptPath.replace(/\/?$/, '/');
wikEdScriptNamewikEd.scriptName = wikEdScriptwikEd.script.replace(wikEdScriptPathwikEd.scriptPath, '');
wikEd.scriptURL = wikEd.server + wikEd.scriptPath;
wikEdScriptURL = wikEdServer + wikEdScriptPath;
 
// prepare for use in regexps
wikEdServerwikEd.server = wikEdServerwikEd.server.replace(/(\W)/g, '\\$1');
wikEdArticlePathwikEd.articlePath = wikEdArticlePathwikEd.articlePath.replace(/(\W)/g, '\\$1');
wikEdScriptwikEd.script = wikEdScriptwikEd.script.replace(/(\W)/g, '\\$1');
wikEdScriptPathwikEd.scriptPath = wikEdScriptPathwikEd.scriptPath.replace(/(\W)/g, '\\$1');
wikEdScriptNamewikEd.scriptName = wikEdScriptNamewikEd.scriptName.replace(/(\W)/g, '\\$1');
 
// check if dynamically inserted addon tags have to be removed: Web of Trust (WOT)
if (document.getElementById('wot-logo') != null) {
wikEdCleanNodeswikEd.cleanNodes = true;
}
 
// fullscreen mode
if (wikEdFullScreenModewikEd.fullScreenMode == true) {
WikEdFullScreenwikEd.FullScreen(wikEdFullScreenModewikEd.fullScreenMode, true);
}
 
// override the insertTags function in wikibits.js used by the standard button toolbar and the editpage special chars
if (typeof(insertTags) == 'function') {
if (WikEdInsertTagsOriginalwikEd.InsertTagsOriginal == null) {
WikEdInsertTagsOriginalwikEd.InsertTagsOriginal = insertTags;
}
insertTags = windowwikEd.WikEdInsertTagsInsertTags;
}
else {
window.insertTags = windowwikEd.WikEdInsertTagsInsertTags;
}
 
Line 3,411 ⟶ 3,428:
if (typeof(jQuery) == 'function') {
jQuery('#wpTextbox1').bind('encapsulateSelection', function(e, before, inside, after) {
if (wikEdUseWikEdwikEd.useWikEd == true) {
WikEdInsertTagswikEd.InsertTags(before, after, inside);
}
});
Line 3,419 ⟶ 3,436:
// override insertAtCursor function in wikia.com MediaWiki:Functions.js
if (typeof(insertAtCursor) == 'function') {
if (WikEdInsertAtCursorOriginalwikEd.InsertAtCursorOriginal == null) {
WikEdInsertAtCursorOriginalwikEd.InsertAtCursorOriginal = insertAtCursor;
}
insertAtCursor = windowwikEd.WikEdInsertAtCursorInsertAtCursor;
}
 
// reset error indicator
WikEdSetLogowikEd.SetLogo();
wikEdTurnedOnwikEd.turnedOn = true;
 
// get frame resize grip image dimensions
var resizeGripImage = document.createElement('img');
resizeGripImage.id = 'wikEdResizeGrip';
WikEdAddEventListenerwikEd.AddEventListener(resizeGripImage, 'load', WikEdResizeGripLoadHandlerwikEd.ResizeGripLoadHandler, true);
resizeGripImage.src = wikEdConfig['wikEd.config.image']['resizeGrip'];
 
// run scheduled custom functions
WikEdExecuteHookwikEd.ExecuteHook(wikEdConfig['wikEd.config.setupHook']);
 
// load and parse RegExTypoFix rules if the button is enabled
wikEd.LoadTypoFixRules();
WikEdLoadTypoFixRules();
 
// done with setup and turn-on
Line 3,447 ⟶ 3,464:
 
//
// WikEdAutoUpdatewikEd.AutoUpdate: check for the latest version and force-reload to update
//
 
windowwikEd.WikEdAutoUpdateAutoUpdate = function() {
 
// check only on non-interaction pages
Line 3,458 ⟶ 3,475:
 
// check if autoupdate is enabled
if (wikEdConfig['wikEd.config.autoUpdate'] != true) {
return;
}
Line 3,464 ⟶ 3,481:
// check for forced update check
var forcedUpdate = false;
if (wikEdConfig['wikEd.config.forcedUpdate'] != '') {
 
// get version numbers from strings
var currentVersion = WikEdVersionToNumberwikEd.VersionToNumber(wikEdProgramVersionwikEd.programVersion);
var forcedVersion = WikEdVersionToNumberwikEd.VersionToNumber(wikEdConfig['wikEd.config.forcedUpdate']);
 
// schedule forced update check
Line 3,484 ⟶ 3,501:
 
// get date of last update check
var lastCheckStr = WikEdGetPersistentwikEd.GetPersistent('wikEdAutoUpdate');
var lastCheckDate = new Date(lastCheckStr);
 
// fix missing or corrupt saved setting
if (isNaN(lastCheckDate.valueOf()) == true) {
WikEdSetPersistentwikEd.SetPersistent('wikEdAutoUpdate', 'January 1, 1970', 0, '/');
return;
}
Line 3,495 ⟶ 3,512:
// get the hours since last update check
var diffHours = (currentDate - lastCheckDate) / 1000 / 60 / 60;
if (wikEdGreasemonkeywikEd.greasemonkey == true) {
if (diffHours > wikEdConfig['wikEd.config.autoUpdateHoursGM']) {
regularUpdate = true;
}
}
else if (diffHours > wikEdConfig['wikEd.config.autoUpdateHours']) {
regularUpdate = true;
}
Line 3,509 ⟶ 3,526:
 
// save current update check date
WikEdSetPersistentwikEd.SetPersistent('wikEdAutoUpdate', currentDate.toUTCString(), 0, '/');
 
 
// make the ajax request
var requestMethod = 'GET';
var requestUrl = wikEdConfig['wikEd.config.autoUpdateUrl'];
var postFields = null;
var overrideMimeType = null;
WikEdAjaxRequestwikEd.AjaxRequest(requestMethod, requestUrl, postFields, overrideMimeType, function(ajax, obj) {
 
// get response
Line 3,523 ⟶ 3,539:
 
// get version numbers from strings
var currentVersion = WikEdVersionToNumberwikEd.VersionToNumber(wikEdProgramVersionwikEd.programVersion);
var newVersion = WikEdVersionToNumberwikEd.VersionToNumber(html);
 
// check if downloaded version is newer and perform update
if ( (currentVersion != null) && (newVersion != null) ) {
if (newVersion > currentVersion) {
WikEdDoUpdatewikEd.DoUpdate();
}
}
Line 3,538 ⟶ 3,554:
 
//
// WikEdVersionToNumberwikEd.VersionToNumber: parse version string (1.22.333a) into number 122333097
//
 
windowwikEd.WikEdVersionToNumberVersionToNumber = function(versionStr) {
 
var ver = versionStr.match(/(\d+)\.(\d+)\.(\d+)(\w?)/);
Line 3,554 ⟶ 3,570:
 
//
// WikEdDoUpdatewikEd.DoUpdate: actually perform update
//
 
windowwikEd.WikEdDoUpdateDoUpdate = function() {
 
// update Greasemonkey script by navigating to the script code page
if (wikEdGreasemonkeywikEd.greasemonkey == true) {
var updatePopup = wikEdConfig['wikEd.config.text']['wikEdGreasemonkeyAutoUpdate'];
updatePopup = updatePopup.replace(/\{updateURL\}/g, wikEdConfig['wikEd.config.autoUpdateUrl']);
alert(updatePopup);
window.___location.href = wikEdConfig['wikEd.config.autoUpdateScriptUrl'];
}
 
Line 3,576 ⟶ 3,592:
 
//
// WikEdLoadTypoFixRuleswikEd.LoadTypoFixRules: load and parse RegExTypoFix rules if the button is enabled
//
 
windowwikEd.WikEdLoadTypoFixRulesLoadTypoFixRules = function() {
 
// load RegExTypoFix rules per Ajax if enabled
if ( (wikEdConfig['wikEd.config.regExTypoFix'] == false) || (wikEdReadOnlywikEd.readOnly == true) || (wikEdTypoRulesFindwikEd.typoRulesFind.length > 0) ) {
return;
}
Line 3,588 ⟶ 3,604:
// make the ajax request
var requestMethod = 'GET';
var requestUrl = wikEdConfig['wikEd.config.regExTypoFixURL'];
var postFields = null;
var overrideMimeType = null;
WikEdAjaxRequestwikEd.AjaxRequest(requestMethod, requestUrl, postFields, overrideMimeType, function(ajax) {
 
// get response
Line 3,610 ⟶ 3,626:
 
// save regexp and replace
wikEdTypoRulesFindwikEd.typoRulesFind.push(regExpFind);
wikEdTypoRulesReplacewikEd.typoRulesReplace.push(regExpMatch[3]);
}
 
// display typo fix button
if (wikEdTypoRulesFindwikEd.typoRulesFind.length > 0) {
if (wikEd.fixRegExTypo != null) {
document.getElementById('wikEdFixRegExTypo').style.display = 'inline';
wikEd.fixRegExTypo.style.display = 'inline';
}
}
return;
Line 3,625 ⟶ 3,643:
 
//
// WikEdEditButtonHandlerwikEd.EditButtonHandler: handler for clicks on edit buttons
//
 
windowwikEd.WikEdEditButtonHandlerEditButtonHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
Line 3,650 ⟶ 3,668:
objId = obj.id;
eventShiftKey = event.shiftKey;
eval(wikEd.editButtonHandler[objId]);
 
eval(wikEdEditButtonHandler[objId]);
return;
};
Line 3,657 ⟶ 3,674:
 
//
// WikEdShrinkSummaryHandlerwikEd.ShrinkSummaryHandler: shrink the summary after loading the 'Clear summary' image
//
 
windowwikEd.WikEdShrinkSummaryHandlerShrinkSummaryHandler = function(event) {
 
var diffWidth = wikEdClearSummarywikEd.clearSummary.offsetWidth - wikEdClearSummaryWidthwikEd.clearSummaryWidth;
 
// Firefox < 3.0
if ( typeof(wikEdInputElementwikEd.inputElement['summary'].clientLeft) == 'undefined' ) {
wikEdInputElementwikEd.inputElement['summary'].style.width = (wikEdInputElementwikEd.inputElement['summary'].clientWidth - diffWidth) + 'px';
wikEdSelectElementwikEd.selectElement['summary'].style.width = (wikEdSelectElementwikEd.selectElement['summary'].clientWidth - diffWidth) + 'px';
}
 
// Firefox >= 3.0
else {
wikEdInputElementwikEd.inputElement['summary'].style.width = (wikEdInputElementwikEd.inputElement['summary'].clientWidth - diffWidth) + 'px';
wikEdSelectElementwikEd.selectElement['summary'].style.width = (wikEdSelectElementwikEd.selectElement['summary'].clientWidth - diffWidth + 3) + 'px';
}
wikEdClearSummaryWidthwikEd.clearSummaryWidth = wikEdClearSummarywikEd.clearSummary.offsetWidth;
return;
};
Line 3,681 ⟶ 3,698:
 
//
// WikEdResizeWindowHandlerwikEd.ResizeWindowHandler: adjust the summary width after resizing the window
//
 
windowwikEd.WikEdResizeWindowHandlerResizeWindowHandler = function(event) {
 
// adjust frame size
wikEd.frameHeight = (wikEd.textareaOffsetHeightInitial - wikEd.frameBorderHeight) + 'px';
wikEdFrameHeight = (wikEdTextareaOffsetHeightInitial - wikEdFrameBorderHeight) + 'px';
wikEdFrameWidthwikEd.frameWidth = (wikEdEditorWrapperwikEd.editorWrapper.clientWidth - wikEdFrameBorderWidthwikEd.frameBorderWidth) + 'px';
wikEdFramewikEd.frame.style.height = wikEdFrameHeightwikEd.frameHeight;
wikEdFramewikEd.frame.style.width = wikEdFrameWidthwikEd.frameWidth;
 
wikEd.ResizeSummary();
WikEdResizeSummary();
return;
};
Line 3,698 ⟶ 3,715:
 
//
// WikEdUnloadHandlerwikEd.UnloadHandler: save editing frame to cached textarea
//
 
windowwikEd.WikEdUnloadHandlerUnloadHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
Line 3,710 ⟶ 3,727:
 
// update textarea if not already done in submit handlers
if (wikEdUseWikEdwikEd.useWikEd == true) {
if (wikEdTextareaUpdatedwikEd.textareaUpdated != true) {
WikEdUpdateTextareawikEd.UpdateTextarea();
}
}
Line 3,720 ⟶ 3,737:
 
//
// WikEdSaveButtonHandlerwikEd.SaveButtonHandler: 'Save page' onsubmit click handler for submit button
//
 
windowwikEd.WikEdSaveButtonHandlerSaveButtonHandler = function(event) {
 
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdSaveButtonwikEd.saveButton, 'click', WikEdSaveButtonHandlerwikEd.SaveButtonHandler, true);
 
// update textarea
if (wikEdUseWikEdwikEd.useWikEd == true) {
wikEd.UpdateTextarea();
WikEdUpdateTextarea();
wikEdTextareaUpdatedwikEd.textareaUpdated = true;
}
 
// check for interfering scripts or gadgets: mwEmbed for file uploads
if ( (wikEdUploadEditwikEd.uploadEdit == true) && (typeof(MW_EMBED_VERSION) != 'undefined') ) {
WikEdAddEventListenerwikEd.AddEventListener(wikEdSaveButtonwikEd.saveButton, 'click', WikEdSaveButtonHandlerwikEd.SaveButtonHandler, true);
return;
}
 
// add "using wikEd" to summary, not for adding a new section (+ tab)
if (wikEdSummaryTextwikEd.summaryText != null) {
var text = wikEdSummaryTextwikEd.summaryText.value;
text = text.replace(/^[, ]+/, '');
text = text.replace(/[, ]+$/, '');
WikEdAddToHistorywikEd.AddToHistory('summary');
 
if ( (wikEdUsingwikEd.using == true) && (text != '') ) {
if (text.lastIndexOf(wikEdConfig['wikEd.config.summaryUsing']) < 0) {
if (wikEdAddNewSectionwikEd.addNewSection != true) {
text += ' ' + wikEdConfig['wikEd.config.summaryUsing'];
}
}
}
wikEdSummaryTextwikEd.summaryText.value = text;
}
 
// submit
wikEdSaveButtonwikEd.saveButton.click();
 
// reinstate handler in case the browser back button will be used
WikEdAddEventListenerwikEd.AddEventListener(wikEdSaveButtonwikEd.saveButton, 'click', WikEdSaveButtonHandlerwikEd.SaveButtonHandler, true);
 
return;
Line 3,767 ⟶ 3,784:
 
//
// WikEdPreviewButtonHandlerwikEd.PreviewButtonHandler: 'Show preview' click handler
//
 
windowwikEd.WikEdPreviewButtonHandlerPreviewButtonHandler = function(event) {
 
if (wikEdUseWikEdwikEd.useWikEd == true) {
wikEd.UpdateTextarea();
WikEdUpdateTextarea();
wikEdTextareaUpdatedwikEd.textareaUpdated = true;
}
return;
Line 3,781 ⟶ 3,798:
 
//
// wikEdDiffPreviewButtonHandlerwikEd.DiffPreviewButtonHandler: 'Show changes' click handler
//
 
windowwikEd.wikEdDiffPreviewButtonHandlerDiffPreviewButtonHandler = function(event) {
 
if (wikEdFullScreenModewikEd.fullScreenMode == true) {
WikEdFullScreenwikEd.FullScreen(false);
}
if (wikEdUseWikEdwikEd.useWikEd == true) {
wikEd.UpdateTextarea();
WikEdUpdateTextarea();
wikEdTextareaUpdatedwikEd.textareaUpdated = true;
}
 
Line 3,799 ⟶ 3,816:
 
//
// WikEdLinkifyHandlerwikEd.LinkifyHandler: open innermost highlighted link in new window/tab on ctrl/meta-click
//
 
windowwikEd.WikEdLinkifyHandlerLinkifyHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
Line 3,817 ⟶ 3,834:
if (linkId.indexOf('wikEdLinkify') == 0) {
var linkIdNo = linkId.replace(/\D/g, '');
var linkUrl = wikEdLinkifyArraywikEd.linkifyArray[linkIdNo];
if (linkUrl != null) {
event.stopPropagation();
Line 3,834 ⟶ 3,851:
 
//
// WikEdLocalPreviewHandlerwikEd.LocalPreviewHandler: local 'Show preview' image button click handler
//
 
windowwikEd.WikEdLocalPreviewHandlerLocalPreviewHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
Line 3,846 ⟶ 3,863:
 
event.preventDefault();
WikEdButtonwikEd.Button(wikEdLocalPreviewwikEd.localPreview, 'wikEdLocalPreview');
return;
};
Line 3,852 ⟶ 3,869:
 
//
// WikEdLocalDiffHandlerwikEd.LocalDiffHandler: local 'Show changes' image button click handler
//
 
windowwikEd.WikEdLocalDiffHandlerLocalDiffHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
Line 3,864 ⟶ 3,881:
 
event.preventDefault();
WikEdButtonwikEd.Button(wikEdLocalDiffwikEd.localDiff, 'wikEdLocalDiff');
return;
};
Line 3,870 ⟶ 3,887:
 
//
// WikEdButtonBarGripHandlerwikEd.ButtonBarGripHandler: click, mouseover handler, see also WikEdButtonBarInitwikEd.ButtonBarInit()
//
 
windowwikEd.WikEdButtonBarGripHandlerButtonBarGripHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
Line 3,896 ⟶ 3,913:
barInnerWrapper.className = 'wikEdButtonBarInnerWrapperHidden';
gripWrapper.className = 'wikEdButtonBarGripWrapperHidden';
wikEdButtonsWrapperWidthwikEd.buttonsWrapperWidth[bar.id] = buttonsWrapper.offsetWidth;
buttonsWrapper.style.display = 'none';
WikEdAddEventListenerwikEd.AddEventListener(grip, 'mouseover', WikEdButtonBarGripHandlerwikEd.ButtonBarGripHandler, false);
WikEdSetPersistentwikEd.SetPersistent(bar.id + 'Hidden', '1', 0, '/');
}
 
Line 3,908 ⟶ 3,925:
gripWrapper.className = 'wikEdButtonBarGripWrapperVisible';
buttonsWrapper.style.display = 'block';
WikEdRemoveEventListenerwikEd.RemoveEventListener(grip, 'mouseover', WikEdButtonBarGripHandlerwikEd.ButtonBarGripHandler, false);
WikEdSetPersistentwikEd.SetPersistent(bar.id + 'Hidden', '0', 0, '/');
}
}
Line 3,916 ⟶ 3,933:
else if (event.type == 'mouseover') {
if (buttonsWrapper.className == 'wikEdButtonBarButtonsWrapperHidden') {
WikEdAddEventListenerwikEd.AddEventListener(bar, 'mouseout', WikEdButtonBarHandlerwikEd.ButtonBarHandler, false);
 
// show buttons to the right
if (bar.offsetParent.clientWidth > grip.offsetLeft + grip.offsetWidth + wikEdButtonsWrapperWidthwikEd.buttonsWrapperWidth[bar.id]) {
buttonsWrapper.style.left = (grip.offsetLeft + grip.offsetWidth) + 'px';
}
Line 3,925 ⟶ 3,942:
// show buttons to the left
else {
buttonsWrapper.style.left = (gripWrapper.offsetLeft - wikEdButtonsWrapperWidthwikEd.buttonsWrapperWidth[bar.id]) + 'px';
}
 
// a mozilla bug sometimes gives offsetTop - 1 when the wikEdToolbarWrapperwikEd.toolbarWrapper is hidden
buttonsWrapper.style.top = gripWrapper.offsetTop + 'px';
buttonsWrapper.style.position = 'absolute';
Line 3,939 ⟶ 3,956:
 
//
// WikEdButtonBarHandlerwikEd.ButtonBarHandler: mouseout handler
//
 
windowwikEd.WikEdButtonBarHandlerButtonBarHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
Line 3,975 ⟶ 3,992:
)
) {
WikEdRemoveEventListenerwikEd.RemoveEventListener(bar, 'mouseout', WikEdButtonBarHandlerwikEd.ButtonBarHandler, false);
buttonsWrapper.style.display = 'none';
buttonsWrapper.style.position = 'static';
Line 3,989 ⟶ 4,006:
//
 
windowwikEd.WikEdClearSummaryHandlerClearSummaryHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
Line 4,000 ⟶ 4,017:
 
// clear the summary if it is only a paragraph name
if ( /^\/\* .*? \*\/ *$/.test(wikEdSummaryTextwikEd.summaryText.value) == true) {
wikEdSummaryTextwikEd.summaryText.value = '';
}
 
// clear the summary but leave paragraph names
else {
wikEdSummaryTextwikEd.summaryText.value = wikEdSummaryTextwikEd.summaryText.value.replace(/^((\/\* .*? \*\/ *)?).*()/,
function (p, p1, p2) {
if (p1.length > 0) {
Line 4,015 ⟶ 4,032:
);
}
wikEdSummaryTextwikEd.summaryText.focus();
return;
};
Line 4,021 ⟶ 4,038:
 
//
// WikEdFindReplaceHandlerwikEd.FindReplaceHandler: find and replace: tab and shift-tab between fields, select on focus
//
 
windowwikEd.WikEdFindReplaceHandlerFindReplaceHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
Line 4,035 ⟶ 4,052:
if (event.type == 'keydown') {
if (event.keyCode == 9) {
if (event.target == wikEdFindTextwikEd.findText) {
event.preventDefault();
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdReplaceTextwikEd.replaceText, 'focus', WikEdFindReplaceHandlerwikEd.FindReplaceHandler, true);
wikEdReplaceTextwikEd.replaceText.focus();
WikEdAddEventListenerwikEd.AddEventListener(wikEdReplaceTextwikEd.replaceText, 'focus', WikEdFindReplaceHandlerwikEd.FindReplaceHandler, true);
}
else if (event.target == wikEdReplaceTextwikEd.replaceText) {
event.preventDefault();
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdFindTextwikEd.findText, 'focus', WikEdFindReplaceHandlerwikEd.FindReplaceHandler, true);
wikEdFindTextwikEd.findText.focus();
WikEdAddEventListenerwikEd.AddEventListener(wikEdFindTextwikEd.findText, 'focus', WikEdFindReplaceHandlerwikEd.FindReplaceHandler, true);
}
}
Line 4,052 ⟶ 4,069:
// select on focus
else if (event.type == 'focus') {
if (wikEdMSIEwikEd.msie == true) {
 
}
Line 4,064 ⟶ 4,081:
 
//
// WikEdKeyFrameHandlerwikEd.KeyFrameHandler: event handler for key and mouse events in the frame
//
 
windowwikEd.WikEdKeyFrameHandlerKeyFrameHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
}
 
if (wikEdUseWikEdwikEd.useWikEd == true) {
switch (event.type) {
 
Line 4,088 ⟶ 4,105:
 
// focus the next form element
if (wikEdAddNewSectionwikEd.addNewSection == true) {
document.getElementById('wpMinoredit').focus();
}
else {
wikEdSummaryTextwikEd.summaryText.focus();
}
 
// scroll to text input top
if (wikEdFullScreenModewikEd.fullScreenMode == false) {
window.scroll(0, WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdInputWrapperwikEd.inputWrapper));
}
}
Line 4,117 ⟶ 4,134:
case 46: // del
case 8: // backspace
WikEdAntiHighlightBleedingwikEd.AntiHighlightBleeding(new Object());
}
}
Line 4,124 ⟶ 4,141:
// grey out inactive buttons
case 'mouseup':
WikEdAntiHighlightBleedingwikEd.AntiHighlightBleeding(new Object());
case 'keypress':
WikEdInactiveButtonswikEd.InactiveButtons();
}
}
Line 4,138 ⟶ 4,155:
//
 
windowwikEd.WikEdAntiHighlightBleedingAntiHighlightBleeding = function(obj, editButtonInsert) {
 
// check if disabled
if (wikEdConfig['wikEd.config.antiHighlightBleeding'] != true) {
return;
}
Line 4,147 ⟶ 4,164:
// get selection object
if (obj.sel == null) {
obj.sel = WikEdGetSelectionwikEd.GetSelection();
}
 
Line 4,187 ⟶ 4,204:
};
if ( (focusNode.nodeName != '#text') || (focusOffset == 0) ) {
WikEdGetNextTextNodewikEd.GetNextTextNode(objLeft, focusNode, 0);
}
if (objLeft.foundNode != null) {
Line 4,201 ⟶ 4,218:
var rightLevel = 0;
if ( (focusNode.nodeName != '#text') || (focusOffset == focusNode.textContent.length) ) {
WikEdGetNextTextNodewikEd.GetNextTextNode(objRight, focusNode, 0);
}
if (objRight.foundNode != null) {
Line 4,256 ⟶ 4,273:
// insert new text node after linebreak and focus
if (leftNode.tagName == 'BR') {
node = wikEdFrameDocumentwikEd.frameDocument.createTextNode('');
leftNode.parentNode.insertBefore(node, leftNode.nextSibling);
range.setStart(node, 0);
Line 4,280 ⟶ 4,297:
// insert new text node before linebreak
if (rightNode.tagName == 'BR') {
var node = wikEdFrameDocumentwikEd.frameDocument.createTextNode('');
rightNode.parentNode.insertBefore(node, rightNode);
range.setStart(node, 0);
Line 4,303 ⟶ 4,320:
 
//
// WikEdResizeGripLoadHandlerwikEd.ResizeGripLoadHandler: event handler to determine grip background image size
//
 
windowwikEd.WikEdResizeGripLoadHandlerResizeGripLoadHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
}
 
wikEdResizeGripWidthwikEd.resizeGripWidth = event.currentTarget.width;
wikEdResizeGripHeightwikEd.resizeGripHeight = event.currentTarget.height;
return;
};
Line 4,321 ⟶ 4,338:
 
//
// WikEdResizeGripHandlerwikEd.ResizeGripHandler: event handler for mouse over resize grip background image
//
 
windowwikEd.WikEdResizeGripHandlerResizeGripHandler = function(event) {
 
// prevent console errors about undefined functions and variables (Firefox bug)
if (typeof(WikEdEventwikEd) == 'undefined') {
return;
}
 
// Firefox bug during startup ("WikEdEvent is not defined")
if (typeof(WikEdEventwikEd.EventWrapper) != 'function' ) {
return;
}
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
}
 
if (wikEdUseWikEdwikEd.useWikEd == true) {
if (event.type == 'mousemove') {
if ( (event.shiftKey == false) && (event.ctrlKey == false) && (event.altKey == false) && (event.metaKey == false) ) {
 
// move into grip
if (wikEdResizeFrameMouseOverGripwikEd.resizeFrameMouseOverGrip == false) {
if (event.clientY >= wikEdFrameBodywikEd.frameBody.clientHeight - wikEdResizeGripHeightwikEd.resizeGripHeight) {
if (event.clientX >= wikEdFrameBodywikEd.frameBody.clientWidth - wikEdResizeGripWidthwikEd.resizeGripWidth) {
if ( (event.clientY < wikEdFrameBodywikEd.frameBody.clientHeight) && (event.clientX < wikEdFrameBodywikEd.frameBody.clientWidth) ) {
wikEdResizeFrameMouseOverGripwikEd.resizeFrameMouseOverGrip = true;
if (wikEdFullScreenModewikEd.fullScreenMode == true) {
wikEdFrameBodywikEd.frameBody.style.cursor = 'alias';
}
else {
WikEdAddEventListenerwikEd.AddEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mousedown', WikEdResizeStartHandlerwikEd.ResizeStartHandler, true);
wikEdFrameBodywikEd.frameBody.style.cursor = 'move';
}
}
Line 4,365 ⟶ 4,382:
 
// move out of grip
else if (wikEdResizeFrameActivewikEd.resizeFrameActive == false) {
if (
(event.clientY < wikEdFrameBodywikEd.frameBody.clientHeight - wikEdResizeGripHeightwikEd.resizeGripHeight) ||
(event.clientX < wikEdFrameBodywikEd.frameBody.clientWidth - wikEdResizeGripWidthwikEd.resizeGripWidth)
) {
wikEdResizeFrameMouseOverGripwikEd.resizeFrameMouseOverGrip = false;
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mousedown', WikEdResizeStartHandlerwikEd.ResizeStartHandler, true);
wikEdFrameBodywikEd.frameBody.style.cursor = 'auto';
}
}
Line 4,383 ⟶ 4,400:
 
//
// WikEdResizeStartHandlerwikEd.ResizeStartHandler: event handler to start the resizing of the editing frame
//
 
windowwikEd.WikEdResizeStartHandlerResizeStartHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
}
 
if (wikEdUseWikEdwikEd.useWikEd == true) {
if ( (event.type == 'mousedown') && (event.button == 0) ) {
if ( (event.shiftKey == false) && (event.ctrlKey == false) && (event.altKey == false) && (event.metaKey == false) ) {
if (event.clientY >= wikEdFrameBodywikEd.frameBody.clientHeight - wikEdResizeGripHeightwikEd.resizeGripHeight) {
if (event.clientX >= wikEdFrameBodywikEd.frameBody.clientWidth - wikEdResizeGripWidthwikEd.resizeGripWidth) {
if ( (event.clientY < wikEdFrameBodywikEd.frameBody.clientHeight) && (event.clientX < wikEdFrameBodywikEd.frameBody.clientWidth) ) {
event.preventDefault();
wikEdResizeFrameActivewikEd.resizeFrameActive = true;
 
wikEdResizeFramePageYStartwikEd.resizeFramePageYStart = event.pageY;
wikEdResizeFramePageXStartwikEd.resizeFramePageXStart = event.pageX;
 
wikEdResizeFrameOffsetHeightwikEd.resizeFrameOffsetHeight = wikEdFramewikEd.frame.offsetHeight;
wikEdResizeFrameOffsetWidthwikEd.resizeFrameOffsetWidth = wikEdFramewikEd.frame.offsetWidth;
WikEdAddEventListenerwikEd.AddEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mouseup', WikEdResizeStopHandlerwikEd.ResizeStopHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(document, 'mouseup', WikEdResizeStopHandlerwikEd.ResizeStopHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mousemove', WikEdResizeDragHandlerFramewikEd.ResizeDragHandlerFrame, true);
WikEdAddEventListenerwikEd.AddEventListener(document, 'mousemove', WikEdResizeDragHandlerDocumentwikEd.ResizeDragHandlerDocument, true);
}
}
Line 4,423 ⟶ 4,440:
 
//
// WikEdResizeStopHandlerwikEd.ResizeStopHandler: event handler to stop the resizing of the editing frame
//
 
windowwikEd.WikEdResizeStopHandlerResizeStopHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
}
 
if (wikEdUseWikEdwikEd.useWikEd == true) {
if (event.type == 'mouseup') {
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mouseup', WikEdResizeStopHandlerwikEd.ResizeStopHandler, true);
WikEdRemoveEventListenerwikEd.RemoveEventListener(document, 'mouseup', WikEdResizeStopHandlerwikEd.ResizeStopHandler, true);
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mousemove', WikEdResizeDragHandlerFramewikEd.ResizeDragHandlerFrame, true);
WikEdRemoveEventListenerwikEd.RemoveEventListener(document, 'mousemove', WikEdResizeDragHandlerDocumentwikEd.ResizeDragHandlerDocument, true);
 
if (
(event.clientY < wikEdFrameBodywikEd.frameBody.clientHeight - wikEdResizeGripHeightwikEd.resizeGripHeight) ||
(event.clientX < wikEdFrameBodywikEd.frameBody.clientWidth - wikEdResizeGripWidthwikEd.resizeGripWidth)
) {
wikEdResizeFrameMouseOverGripwikEd.resizeFrameMouseOverGrip = false;
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mousedown', WikEdResizeStartHandlerwikEd.ResizeStartHandler, true);
wikEdFrameBodywikEd.frameBody.style.cursor = 'auto';
}
}
wikEdResizeFrameActivewikEd.resizeFrameActive = false;
}
return;
Line 4,457 ⟶ 4,474:
 
//
// WikEdResizeDragHandlerFramewikEd.ResizeDragHandlerFrame: event handler for editing frame resizing by mouse dragging (frame event)
//
 
windowwikEd.WikEdResizeDragHandlerFrameResizeDragHandlerFrame = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
Line 4,469 ⟶ 4,486:
 
if (event.type == 'mousemove') {
var diffY = event.pageY - wikEdResizeFramePageYStartwikEd.resizeFramePageYStart;
var diffX = event.pageX - wikEdResizeFramePageXStartwikEd.resizeFramePageXStart;
 
var frameHeightNew = wikEdResizeFrameOffsetHeightwikEd.resizeFrameOffsetHeight + diffY;
var frameWidthNew = wikEdResizeFrameOffsetWidthwikEd.resizeFrameOffsetWidth + diffX;
 
if (frameHeightNew >= 100) {
wikEdFrameHeightwikEd.frameHeight = frameHeightNew + 'px';
wikEdFramewikEd.frame.style.height = wikEdFrameHeightwikEd.frameHeight;
}
if (frameWidthNew >= 100) {
wikEdFrameWidthwikEd.frameWidth = frameWidthNew + 'px';
wikEdFramewikEd.frame.style.width = wikEdFrameWidthwikEd.frameWidth;
}
}
Line 4,489 ⟶ 4,506:
 
//
// WikEdResizeDragHandlerDocumentwikEd.ResizeDragHandlerDocument: event handler for editing frame resizing by mouse dragging (document event)
//
 
windowwikEd.WikEdResizeDragHandlerDocumentResizeDragHandlerDocument = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
Line 4,501 ⟶ 4,518:
 
if (event.type == 'mousemove') {
var diffY = event.pageY - wikEdResizeFramePageYStartwikEd.resizeFramePageYStart - WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdFramewikEd.frame);
var diffX = event.pageX - wikEdResizeFramePageXStartwikEd.resizeFramePageXStart - WikEdGetOffsetLeftwikEd.GetOffsetLeft(wikEdFramewikEd.frame);
 
var frameHeightNew = wikEdResizeFrameOffsetHeightwikEd.resizeFrameOffsetHeight + diffY;
var frameWidthNew = wikEdResizeFrameOffsetWidthwikEd.resizeFrameOffsetWidth + diffX;
 
if (frameHeightNew >= 100) {
wikEdFrameHeightwikEd.frameHeight = frameHeightNew + 'px';
wikEdFramewikEd.frame.style.height = wikEdFrameHeightwikEd.frameHeight;
}
if (frameWidthNew >= 100) {
wikEdFrameWidthwikEd.frameWidth = frameWidthNew + 'px';
wikEdFramewikEd.frame.style.width = wikEdFrameWidthwikEd.frameWidth;
}
}
Line 4,521 ⟶ 4,538:
 
//
// WikEdResizeFrameResetHandlerwikEd.ResizeFrameResetHandler: event handler to reset the editing frame size
//
 
windowwikEd.WikEdResizeFrameResetHandlerResizeFrameResetHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
}
 
if (wikEdUseWikEdwikEd.useWikEd == true) {
if (event.type == 'dblclick') {
if ( (event.shiftKey == false) && (event.ctrlKey == false) && (event.altKey == false) && (event.metaKey == false) ) {
if (event.clientY > wikEdFrameBodywikEd.frameBody.clientHeight - wikEdResizeGripHeightwikEd.resizeGripHeight) {
if (event.clientX > wikEdFrameBodywikEd.frameBody.clientWidth - wikEdResizeGripWidthwikEd.resizeGripWidth) {
if ( (event.clientY < wikEdFrameBodywikEd.frameBody.clientHeight) && (event.clientX < wikEdFrameBodywikEd.frameBody.clientWidth) ) {
 
// end fullscreen mode
if (wikEdFullScreenModewikEd.fullScreenMode == true) {
WikEdFullScreenwikEd.FullScreen(false);
}
 
// reset size to default
wikEdFrameHeightwikEd.frameHeight = (wikEdTextareaOffsetHeightInitialwikEd.textareaOffsetHeightInitial - wikEdFrameBorderHeightwikEd.frameBorderHeight) + 'px';
wikEdFrameWidthwikEd.frameWidth = (wikEdEditorWrapperwikEd.editorWrapper.clientWidth - wikEdFrameBorderWidthwikEd.frameBorderWidth) + 'px';
wikEdFramewikEd.frame.style.height = wikEdFrameHeightwikEd.frameHeight;
wikEdFramewikEd.frame.style.width = wikEdFrameWidthwikEd.frameWidth;
 
// end resizing
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mouseup', WikEdResizeStopHandlerwikEd.ResizeStopHandler, true);
WikEdRemoveEventListenerwikEd.RemoveEventListener(document, 'mouseup', WikEdResizeStopHandlerwikEd.ResizeStopHandler, true);
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mousemove', WikEdResizeDragHandlerFramewikEd.ResizeDragHandlerFrame, true);
WikEdRemoveEventListenerwikEd.RemoveEventListener(document, 'mousemove', WikEdResizeDragHandlerDocumentwikEd.ResizeDragHandlerDocument, true);
wikEdResizeFrameMouseOverGripwikEd.resizeFrameMouseOverGrip = false;
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mousedown', WikEdResizeStartHandlerwikEd.ResizeStartHandler, true);
wikEdFrameBodywikEd.frameBody.style.cursor = 'auto';
wikEdResizeFrameActivewikEd.resizeFrameActive = false;
}
}
Line 4,570 ⟶ 4,587:
 
//
// WikEdDebugHandlerwikEd.DebugHandler: event handler to clear or hide the debug textarea on (shift/ctrl/alt) double click
//
 
windowwikEd.WikEdDebugHandlerDebugHandler = function(event) {
 
if ( (event.shiftKey == true) || (event.ctrlKey == true) || (event.altKey == true) || (event.metaKey == true) ) {
wikEdDebugWrapperwikEd.debugWrapper.style.visibility = 'hidden';
wikEdDebugwikEd.debug.style.display = 'none';
wikEdDebugOpenwikEd.debugOpen = false;
}
else {
wikEdDebugwikEd.debug.value = '';
}
return;
Line 4,588 ⟶ 4,605:
 
//
// WikEdPrevWrapperHandlerwikEd.PrevWrapperHandler: event handler to close preview / diff box on double click
//
 
windowwikEd.WikEdPrevWrapperHandlerPrevWrapperHandler = function(event) {
 
wikEdLocalPrevWrapperwikEd.localPrevWrapper.style.display = 'none';
return;
};
Line 4,599 ⟶ 4,616:
 
//
// WikEdSetLogowikEd.SetLogo: set the logo on top of the page
//
 
windowwikEd.WikEdSetLogoSetLogo = function(state, parameter) {
 
if (state == 'error') {
wikEdLogowikEd.logo.src = wikEdConfig['wikEd.config.image']['error'];
wikEdLogowikEd.logo.alt = wikEdConfig['wikEd.config.text']['wikEdLogo error alt'];
wikEdLogowikEd.logo.title = wikEdConfig['wikEd.config.text']['wikEdLogo error title'];
}
else if (state == 'browser') {
wikEdLogowikEd.logo.src = wikEdConfig['wikEd.config.image']['browser'];
wikEdLogowikEd.logo.alt = wikEdConfig['wikEd.config.text']['wikEdLogo browser alt'];
wikEdLogowikEd.logo.title = wikEdConfig['wikEd.config.text']['wikEdLogo browser title'];
}
else if (state == 'incompatible') {
wikEdLogowikEd.logo.src = wikEdConfig['wikEd.config.image']['incompatible'];
wikEdLogowikEd.logo.alt = wikEdConfig['wikEd.config.text']['wikEdLogo incompatible alt'];
wikEdLogowikEd.logo.title = wikEdConfig['wikEd.config.text']['wikEdLogo incompatible title'];
}
else {
if (wikEdDisabledwikEd.disabled == true) {
wikEdLogowikEd.logo.src = wikEdConfig['wikEd.config.image']['disabled'];
wikEdLogowikEd.logo.alt = wikEdConfig['wikEd.config.text']['wikEdLogo disabled alt'];
wikEdLogowikEd.logo.title = wikEdConfig['wikEd.config.text']['wikEdLogo disabled title'];
}
else {
wikEdLogowikEd.logo.src = wikEdConfig['wikEd.config.image']['logo'];
wikEdLogowikEd.logo.alt = wikEdConfig['wikEd.config.text']['wikEdLogo alt'];
wikEdLogowikEd.logo.title = wikEdConfig['wikEd.config.text']['wikEdLogo title'];
}
}
var version = wikEdProgramVersionwikEd.programVersion;
if (wikEdConfig['wikEd.config.gadget'] == true) {
version += ' G';
}
else if (wikEdGreasemonkeywikEd.greasemonkey == true) {
version += ' GM';
}
wikEd.logo.title = wikEd.logo.title.replace(/\{wikEd.parameter\}/g, parameter);
else if (wikEdGreasemonkeyToHead == true) {
wikEd.logo.title = wikEd.logo.title.replace(/\{wikEd.programVersion\}/g, version);
version += ' GMH';
wikEd.logo.title = wikEd.logo.title.replace(/\{wikEd.programDate\}/g, wikEd.programDate);
}
wikEdLogo.title = wikEdLogo.title.replace(/\{wikEdParameter\}/g, parameter);
wikEdLogo.title = wikEdLogo.title.replace(/\{wikEdProgramVersion\}/g, version);
wikEdLogo.title = wikEdLogo.title.replace(/\{wikEdProgramDate\}/g, wikEdProgramDate);
 
return;
Line 4,687 ⟶ 4,701:
break;
default:
var currButton = wikEdConfig['wikEd.config.button'][buttonNo];
if (typeof(currButton) != 'object') {
alert('Loading error: The button "' + buttonNumbers[i] + '" is not defined.');
}
if ( (currButton[0] == 'wikEdSource') && (wikEdConfig['wikEd.config.showSourceButton'] != true) ) {
break;
}
else if ( (currButton[0] == 'wikEdUsing') && (wikEdConfig['wikEd.config.showUsingButton'] != true) ) {
break;
}
else if ( (currButton[0] == 'wikEdTableMode') && (wikEdConfig['wikEd.config.showTableModeButton'] != true) ) {
break;
}
Line 4,703 ⟶ 4,717:
// add accesskey information to button title and
var accessKey = '';
if (wikEdConfig['wikEd.config.buttonKey'][buttonNo] != null) {
accessKey = ' [' + wikEdConfig['wikEd.config.text']['alt-shift'] + wikEdConfig['wikEd.config.buttonKey'][buttonNo][0] + ']';
 
// initialize wikEdButtonKeyCodewikEd.buttonKeyCode[keyCode] = id
wikEdButtonKeyCodewikEd.buttonKeyCode[ (wikEdConfig['wikEd.config.buttonKey'][buttonNo][1]) ] = currButton[0];
}
 
Line 4,714 ⟶ 4,728:
 
// collect click event info
wikEdEditButtonHandlerwikEd.editButtonHandler[ currButton[0] ] = currButton[7];
}
}
Line 4,731 ⟶ 4,745:
var html = '';
if (gripTitle != null) {
var gripStyle = 'width: ' + wikEdConfig['wikEd.config.buttonBarGripWidth'] + 'px; ';
if (barHeight > 0) {
gripStyle += 'height: ' + barHeight + 'px; ';
Line 4,769 ⟶ 4,783:
 
//
// WikEdButtonBarInitwikEd.ButtonBarInit: hide buttons bar, see also WikEdButtonBarGripHandlerwikEd.ButtonBarGripHandler()
//
 
windowwikEd.WikEdButtonBarInitButtonBarInit = function(bar) {
 
if (WikEdGetPersistentwikEd.GetPersistent(bar.id + 'Hidden') == '1') {
var barInnerWrapper = bar.firstChild;
var gripWrapper = barInnerWrapper.firstChild;
Line 4,783 ⟶ 4,797:
gripWrapper.className = 'wikEdButtonBarGripWrapperHidden';
buttonsWrapper.className = 'wikEdButtonBarButtonsWrapperHidden';
wikEdButtonsWrapperWidthwikEd.buttonsWrapperWidth[bar.id] = buttonsWrapper.offsetWidth;
buttonsWrapper.style.display = 'none';
WikEdAddEventListenerwikEd.AddEventListener(grip, 'mouseover', WikEdButtonBarGripHandlerwikEd.ButtonBarGripHandler, true);
}
return;
Line 4,792 ⟶ 4,806:
 
//
// WikEdSetEditAreawikEd.SetEditArea: apply css changes to switch between classic textarea and rich text frame
//
 
windowwikEd.WikEdSetEditAreaSetEditArea = function(useFrame, notFrame) {
 
var scrollRatio;
Line 4,801 ⟶ 4,815:
// turn rich text frame on
if (useFrame == true) {
scrollRatio = wikEdTextareawikEd.textarea.scrollTop / wikEdTextareawikEd.textarea.scrollHeight;
 
// remember resized textarea dimensions
wikEdTextareaHeightwikEd.textareaHeight = (wikEdTextareawikEd.textarea.offsetHeight - wikEdTextareaBorderHeightwikEd.textareaBorderHeight) + 'px';
wikEdTextareaWidthwikEd.textareaWidth = '100%';
 
wikEdTextareaWrapperwikEd.textareaWrapper.style.position = 'absolute';
wikEdTextareaWrapperwikEd.textareaWrapper.style.visibility = 'hidden';
wikEdTextareawikEd.textarea.style.display = 'none';
 
if (notFrame != true) {
wikEdFrameWrapperwikEd.frameWrapper.style.position = 'static';
wikEdFrameWrapperwikEd.frameWrapper.style.visibility = 'visible';
wikEdFrameBodywikEd.frameBody.style.display = 'block';
}
 
if (wikEdToolbarwikEd.closeToolbar !== nulltrue) {
wikEd.toolbarWrapper.style.display = 'none';
if (wikEdCloseToolbar == true) {
}
wikEdToolbarWrapper.style.display = 'none';
}else {
wikEd.toolbarWrapper.style.display = 'block';
else {
wikEdToolbarWrapper.style.display = 'block';
}
}
if (wikEdButtonBarFormatwikEd.buttonBarFormat != null) {
wikEdButtonBarFormatwikEd.buttonBarFormat.style.display = 'block';
}
if (wikEdButtonBarTextifywikEd.buttonBarTextify != null) {
wikEdButtonBarTextifywikEd.buttonBarTextify.style.display = 'block';
}
if (wikEdButtonBarCustom1wikEd.buttonBarCustom1 != null) {
wikEdButtonBarCustom1wikEd.buttonBarCustom1.style.display = 'block';
}
if (wikEdButtonBarFindwikEd.buttonBarFind != null) {
wikEdButtonBarFindwikEd.buttonBarFind.style.display = 'block';
}
if (wikEdButtonBarFixwikEd.buttonBarFix != null) {
wikEdButtonBarFixwikEd.buttonBarFix.style.display = 'block';
}
if (wikEdButtonBarCustom2wikEd.buttonBarCustom2 != null) {
wikEdButtonBarCustom2wikEd.buttonBarCustom2.style.display = 'block';
}
if (wikEdButtonBarControlwikEd.buttonBarControl != null) {
wikEdButtonBarControlwikEd.buttonBarControl.style.display = 'block';
}
wikEdFrameBodywikEd.frameBody.scrollTop = scrollRatio * wikEdFrameBodywikEd.frameBody.scrollHeight;
}
 
// turn classic textarea on
else {
scrollRatio = wikEdFrameBodywikEd.frameBody.scrollTop / wikEdFrameBodywikEd.frameBody.scrollHeight;
if (notFrame != true) {
 
// get resized frame dimensions for textarea
if (wikEdUseWikEdwikEd.useWikEd == true) {
wikEd.textareaHeight = wikEd.frameHeight;
wikEdTextareaHeight = wikEdFrameHeight;
wikEdTextareaWidthwikEd.textareaWidth = '100%';
}
wikEdFrameWrapperwikEd.frameWrapper.style.position = 'absolute';
wikEdFrameWrapperwikEd.frameWrapper.style.visibility = 'hidden';
// Mozilla or wikEd bug: <br> insertion before text a while after setting display to 'none', test with setTimeout('alert(wikEdFrameBodywikEd.frameBody.innerHTML)', 1000);
// wikEdFrameBodywikEd.frameBody.style.display = 'none';
}
wikEdTextareaWrapperwikEd.textareaWrapper.style.position = 'static';
wikEdTextareaWrapperwikEd.textareaWrapper.style.visibility = 'visible';
 
wikEdTextareawikEd.textarea.style.height = wikEdTextareaHeightwikEd.textareaHeight;
wikEdTextareawikEd.textarea.style.width = wikEdTextareaWidthwikEd.textareaWidth;
wikEdTextareawikEd.textarea.style.display = 'block';
 
if (wikEdToolbarWrapperwikEd.toolbarWrapper != null) {
wikEdToolbarWrapperwikEd.toolbarWrapper.style.display = 'block';
}
if (wikEdButtonBarFormatwikEd.buttonBarFormat != null) {
wikEdButtonBarFormatwikEd.buttonBarFormat.style.display = 'none';
}
if (wikEdButtonBarTextifywikEd.buttonBarTextify != null) {
wikEdButtonBarTextifywikEd.buttonBarTextify.style.display = 'none';
}
if (wikEdButtonBarCustom1wikEd.buttonBarCustom1 != null) {
wikEdButtonBarCustom1wikEd.buttonBarCustom1.style.display = 'none';
}
if (wikEdButtonBarFindwikEd.buttonBarFind != null) {
wikEdButtonBarFindwikEd.buttonBarFind.style.display = 'none';
}
if (wikEdButtonBarFixwikEd.buttonBarFix != null) {
wikEdButtonBarFixwikEd.buttonBarFix.style.display = 'none';
}
if (wikEdButtonBarCustom2wikEd.buttonBarCustom2 != null) {
wikEdButtonBarCustom2wikEd.buttonBarCustom2.style.display = 'none';
}
if (wikEdButtonBarControlwikEd.buttonBarControl != null) {
wikEdButtonBarControlwikEd.buttonBarControl.style.display = 'block';
}
wikEdTextareawikEd.textarea.scrollTop = scrollRatio * wikEdTextareawikEd.textarea.scrollHeight;
}
 
Line 4,903 ⟶ 4,915:
 
//
// WikEdButtonwikEd.Button: toggle or set button checked state
// used for buttons that do not require nor change the text. Faster than WikEdEditButtonwikEd.EditButton()
//
 
windowwikEd.WikEdButtonButton = function(buttonObj, buttonId, toggleButton, setButton, classButton, doButton) {
 
if (buttonObj != null) {
Line 4,941 ⟶ 4,953:
if (toggleButton != null) {
if (toggleButton == true) {
if (WikEdGetAttributewikEd.GetAttribute(buttonObj, 'checked') == 'true') {
buttonObj.setAttribute('checked', false);
buttonObj.className = 'wikEdButtonUnchecked';
Line 4,958 ⟶ 4,970:
 
// remove active content
WikEdRemoveElementswikEd.RemoveElements(['script', 'object', 'applet', 'embed']);
 
switch (buttonId) {
Line 4,964 ⟶ 4,976:
// switch between syntax highlighting and plain text
case 'wikEdHighlightSyntax':
if (WikEdGetAttributewikEd.GetAttribute(buttonObj, 'checked') == 'true') {
wikEdHighlightSyntaxwikEd.highlightSyntax = true;
WikEdSetPersistentwikEd.SetPersistent('wikEdSyntaxOff', '0', 0, '/');
if (wikEdRefHidewikEd.refHide == true) {
wikEdFrameBodywikEd.frameBody.className = 'wikEdFrameBodyNewbie';
}
else {
wikEdFrameBodywikEd.frameBody.className = 'wikEdFrameBodySyntax';
}
}
else {
wikEdHighlightSyntaxwikEd.highlightSyntax = false;
WikEdSetPersistentwikEd.SetPersistent('wikEdSyntaxOff', '1', 0, '/');
wikEdFrameBodywikEd.frameBody.className = 'wikEdFrameBodyPlain';
}
 
// do not keep whole text selected
WikEdEditButtonwikEd.EditButton( null, 'wikEdUpdateAll', {'keepSel': false} );
break;
 
// toggle table mode // {{TABLE}}
case 'wikEdTableMode':
if (WikEdGetAttributewikEd.GetAttribute(buttonObj, 'checked') != 'true') {
wikEdTableModewikEd.tableMode = false;
WikEdEditButtonwikEd.EditButton(null, 'wikEdUpdateAll');
}
else {
wikEdTableModewikEd.tableMode = true;
WikEdEditButtonwikEd.EditButton(null, 'wikEdTablify');
}
break;
Line 5,000 ⟶ 5,012:
case 'wikEdScrollToPreview2':
case 'wikEdScrollToPreview3':
window.scroll(0, WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdSaveButtonwikEd.saveButton));
focusFrame = true;
break;
Line 5,009 ⟶ 5,021:
case 'wikEdScrollToEdit3':
case 'wikEdScrollToEdit4':
window.scroll(0, WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdInputWrapperwikEd.inputWrapper));
focusFrame = true;
break;
Line 5,015 ⟶ 5,027:
// cycle through different font sizes
case 'wikEdTextZoomDown':
wikEdTextSizewikEd.textSize = wikEdTextSizewikEd.textSize / 1.2;
if (wikEdTextSizewikEd.textSize < wikEdTextSizeInitwikEd.textSizeInit / 1.2 / 1.2) {
wikEdTextSizewikEd.textSize = wikEdTextSizeInitwikEd.textSizeInit * 1.2 * 1.2;
}
wikEdFrameBodywikEd.frameBody.style.fontSize = wikEdTextSizewikEd.textSize + 'px';
focusFrame = true;
break;
Line 5,025 ⟶ 5,037:
// cycle through different font sizes
case 'wikEdTextZoomUp':
wikEdTextSizewikEd.textSize = wikEdTextSizewikEd.textSize * 1.2;
if (wikEdTextSizewikEd.textSize > wikEdTextSizeInitwikEd.textSizeInit * 1.2 * 1.2) {
wikEdTextSizewikEd.textSize = wikEdTextSizeInitwikEd.textSizeInit / 1.2 / 1.2;
}
wikEdFrameBodywikEd.frameBody.style.fontSize = wikEdTextSizewikEd.textSize + 'px';
focusFrame = true;
break;
Line 5,035 ⟶ 5,047:
// display local preview box
case 'wikEdLocalPreview':
if (wikEdFullScreenModewikEd.fullScreenMode == true) {
WikEdFullScreenwikEd.FullScreen(false);
}
if (wikEdUseWikEdwikEd.useWikEd == true) {
WikEdUpdateTextareawikEd.UpdateTextarea();
}
 
// clear box to display loading indicator, keep wrapper height to prevent scrolling
var previewHeight = wikEdPreviewBoxwikEd.previewBox.offsetHeight;
if ( (wikEdPreviewBoxwikEd.previewBox.innerHTML != '') && (previewHeight > 0) ) {
wikEdPreviewBoxwikEd.previewBox.style.height = previewHeight + 'px';
}
wikEdPreviewBoxwikEd.previewBox.innerHTML = wikEdConfig['wikEd.config.text']['wikEdPreviewLoading'];
wikEdLocalPrevWrapperwikEd.localPrevWrapper.style.display = 'inline';
 
// prepare ajax preview
wikEdPreviewIsAjaxwikEd.previewIsAjax = false;
var bodyData = wikEdTextareawikEd.textarea.value;
 
// Opera 0.9.51
bodyData = bodyData.replace(/\r\n|\n\r|\r/g, '\n');
 
if (wikEdConfig['wikEd.config.useAjaxPreview'] == true) {
var livePreview = true;
 
// articles on watchlist preview page
if (wikEdWatchlistEditwikEd.watchlistEdit == true) {
bodyData = bodyData.replace(/\n{1}/g, '\n\n');
bodyData = bodyData.replace(/(.+)/g,
Line 5,074 ⟶ 5,086:
// postfix (User_talk) or prefix (Discussion_Utilisateur), test for xxx_ vs. _xxx (all ASCII non-letters as separator)
// Firefox 3.6.7 + Greasemonkey 0.8.20100408.06: invalid range with \{-‰ and \x8f-™
if (/[ -\/\:-\@\[-\`\{-\x88‰‹\x8d\x8f-\x98™›\x9d\xa0-»¿×÷]/.test(wikEdConfig['wikEd.config.text']['talk namespace suffix']) == true) {
talk = article.replace(/([^:]*)/, wikEdConfig['wikEd.config.text']['talk namespace suffix'] + '$1');
}
else {
talk = article.replace(/([^:]*)/, '$1' + wikEdConfig['wikEd.config.text']['talk namespace suffix']);
}
}
else {
talk = wikEdConfig['wikEd.config.text']['talk namespace'] + ':' + article;
}
var uriArticle = article.replace(/ /g, '_');
Line 5,088 ⟶ 5,100:
uriArticle = uriArticle.replace(/%25(\d\d)/g, '%$1');
uriArticle = uriArticle.replace(/\'/g, '%27');
var hist = wikEdWikiGlobals['wikEd.wikiGlobals.wgServer'] + wikEdWikiGlobals['wikEd.wikiGlobals.wgScript'] + '?title=' + uriArticle + '&action=history';
return('[[:' + p1 + ']]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;([[:' + talk + '|' + wikEdConfig['wikEd.config.text']['talk page'] + ']], [' + hist + ' ' + wikEdConfig['wikEd.config.text']['history page'] + '])');
}
);
Line 5,115 ⟶ 5,127:
while ( (regExpMatch = /<(source|syntaxhighlight)\b[^>]*?lang\s*=\s*(\"|\')(\w+)\2/gi.exec(bodyData)) != null) {
var lang = regExpMatch[3];
if (wikEdGeSHiCSSwikEd.geSHiCSS['wikEd' + lang] == null) {
livePreview = false;
wikEdGeSHiCSSwikEd.geSHiCSS['wikEd' + lang] = true;
break;
}
Line 5,124 ⟶ 5,136:
 
// make the ajax request
WikEdAjaxPreviewwikEd.AjaxPreview(bodyData, WikEdLocalPreviewAjaxHandlerwikEd.LocalPreviewAjaxHandler, livePreview);
}
 
// prepare a local preview (Pilaf's InstaView), will be overwritten by Ajax version
if ( (wikEdConfig['wikEd.config.useLocalPreview'] == true) && (typeof(InstaView) == 'object') ) {
InstaView.conf.user.name = wikEdWikiGlobals['wikEd.wikiGlobals.wgUserName'];
var text = wikEdTextareawikEd.textarea.value;
 
// Opera 0.9.51
Line 5,136 ⟶ 5,148:
 
var instaView = InstaView.convert(text);
if (wikEdPreviewIsAjaxwikEd.previewIsAjax != true) {
wikEdPreviewBoxwikEd.previewBox.innerHTML = instaView;
 
// init sortable tables (wikibits.js)
Line 5,156 ⟶ 5,168:
case 'wikEdLocalDiff':
if (typeof(WDiffString) != 'function') {
wikEd.previewBox.innerHTML = '<div class="wikEdPreviewDiffError">' + wikEd.config.text['diffNotLoaded'] + '</div>';
wikEd.localPrevWrapper.style.display = 'block';
break;
}
if (wikEdFullScreenModewikEd.fullScreenMode == true) {
WikEdFullScreenwikEd.FullScreen(false);
}
if (wikEdUseWikEdwikEd.useWikEd == true) {
WikEdUpdateTextareawikEd.UpdateTextarea();
}
 
// add trailing newline
var currentVersion = wikEdTextareawikEd.textarea.value;
 
// Opera 0.9.51
Line 5,174 ⟶ 5,188:
currentVersion += '\n';
}
if (wikEdOrigVersionwikEd.origVersion.substr(wikEdOrigVersionwikEd.origVersion.length - 1, 1) != '\n') {
wikEdOrigVersionwikEd.origVersion += '\n';
}
 
// call external diff program
var diffText = WDiffString(wikEdOrigVersionwikEd.origVersion, currentVersion);
if (wikEdConfig['wikEd.config.fullDiff'] != true) {
diffText = WDiffShortenOutput(diffText);
}
 
// display diff, keep wrapper height to prevent scrolling
var previewHeight = wikEdPreviewBoxwikEd.previewBox.offsetHeight;
if ( (wikEdPreviewBoxwikEd.previewBox.innerHTML != '') && (previewHeight > 0) ) {
wikEdPreviewBoxwikEd.previewBox.style.height = previewHeight + 'px';
}
wikEdPreviewBoxwikEd.previewBox.innerHTML = diffText;
wikEdLocalPrevWrapperwikEd.localPrevWrapper.style.display = 'block';
 
// scroll to button, textarea, or preview field
WikEdScrollToPreviewwikEd.ScrollToPreview();
 
break;
 
// toggle wikEdDiffwikEd.diff
case 'wikEdDiff':
 
// turn wikEdDiffwikEd.diff off
if (WikEdGetAttributewikEd.GetAttribute(buttonObj, 'checked') != 'true') {
wikEdDiffwikEd.diff = false;
WikEdSetPersistentwikEd.SetPersistent('wikEdDiff', '0', 0, '/');
if (typeof(wikEdDiffDivwikEd.diffDiv) == 'object') {
if (wikEdDiffDivwikEd.diffDiv != null) {
wikEdDiffDivwikEd.diffDiv.style.display = 'none';
}
}
window.scroll(0, WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdInputWrapperwikEd.inputWrapper));
}
 
// turn wikEdDiffwikEd.diff on
else {
wikEdDiffwikEd.diff = true;
WikEdSetPersistentwikEd.SetPersistent('wikEdDiff', '1', 0, '/');
if (typeof(wikEdDiffDivwikEd.diffDiv) == 'object') {
if (wikEdDiffDivwikEd.diffDiv != null) {
wikEdDiffDivwikEd.diffDiv.style.display = 'block';
window.scroll(0, WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdDiffDivwikEd.diffDiv));
WikEdDiffwikEd.Diff();
}
}
Line 5,230 ⟶ 5,244:
case 'wikEdClose':
case 'wikEdClose2':
window.scroll(0, WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdInputWrapperwikEd.inputWrapper));
wikEdLocalPrevWrapperwikEd.localPrevWrapper.style.display = 'none';
wikEdPreviewBoxwikEd.previewBox.style.height = 'auto';
focusFrame = true;
break;
Line 5,241 ⟶ 5,255:
 
// enble wikEd
if (WikEdGetAttributewikEd.GetAttribute(buttonObj, 'checked') == 'true') {
WikEdUpdateFramewikEd.UpdateFrame();
 
// turn rich text frame on
WikEdSetEditAreawikEd.SetEditArea(true);
wikEdUseWikEdwikEd.useWikEd = true;
WikEdSetPersistentwikEd.SetPersistent('wikEdUseClassic', '0', 0, '/');
 
// run scheduled custom functions
WikEdExecuteHookwikEd.ExecuteHook(wikEdConfig['wikEd.config.frameHook']);
}
 
// turn classic textarea on, disable wikEd
else {
WikEdUpdateTextareawikEd.UpdateTextarea();
WikEdSetEditAreawikEd.SetEditArea(false);
wikEdUseWikEdwikEd.useWikEd = false;
WikEdSetPersistentwikEd.SetPersistent('wikEdUseClassic', '1', 0, '/');
 
// run scheduled custom functions
WikEdExecuteHookwikEd.ExecuteHook(wikEdConfig['wikEd.config.textareaHook']);
}
break;
Line 5,267 ⟶ 5,281:
// add "using wikEd" to summaries
case 'wikEdUsing':
if (WikEdGetAttributewikEd.GetAttribute(buttonObj, 'checked') == 'true') {
wikEdUsingwikEd.using = true;
WikEdSetPersistentwikEd.SetPersistent('wikEdSummaryUsing', '1', 0, '/');
}
else {
wikEdUsingwikEd.using = false;
WikEdSetPersistentwikEd.SetPersistent('wikEdSummaryUsing', '0', 0, '/');
}
break;
Line 5,279 ⟶ 5,293:
// hide ref tags
case 'wikEdRefHide':
if (WikEdGetAttributewikEd.GetAttribute(buttonObj, 'checked') == 'true') {
wikEdRefHidewikEd.refHide = true;
WikEdSetPersistentwikEd.SetPersistent('wikEdRefHide', '1', 0, '/');
}
else {
wikEdRefHidewikEd.refHide = false;
WikEdSetPersistentwikEd.SetPersistent('wikEdRefHide', '0', 0, '/');
}
if (wikEdUseWikEdwikEd.useWikEd == true) {
if (wikEdRefHidewikEd.refHide == true) {
wikEdFrameBodywikEd.frameBody.className = 'wikEdFrameBodyNewbie';
}
else {
wikEdFrameBodywikEd.frameBody.className = 'wikEdFrameBodySyntax';
}
WikEdEditButtonwikEd.EditButton(null, 'wikEdWikify', 'whole');
}
break;
Line 5,300 ⟶ 5,314:
// close the toolbar
case 'wikEdCloseToolbar':
if (WikEdGetAttributewikEd.GetAttribute(buttonObj, 'checked') == 'true') {
wikEdCloseToolbarwikEd.closeToolbar = true;
wikEd.toolbarWrapper.style.display = 'none';
if (wikEdToolbar != null) {
wikEd.SetPersistent('wikEdCloseToolbar', '1', 0, '/');
wikEdToolbarWrapper.style.display = 'none';
}
WikEdSetPersistent('wikEdCloseToolbar', '1', 0, '/');
}
else {
wikEdCloseToolbarwikEd.closeToolbar = false;
wikEd.toolbarWrapper.style.display = 'block';
if (wikEdToolbar != null) {
wikEd.SetPersistent('wikEdCloseToolbar', '0', 0, '/');
wikEdToolbarWrapper.style.display = 'block';
}
WikEdSetPersistent('wikEdCloseToolbar', '0', 0, '/');
}
if (wikEdFullScreenModewikEd.fullScreenMode == true) {
wikEd.FullScreen(wikEd.fullScreenMode);
WikEdFullScreen(wikEdFullScreenMode);
}
break;
Line 5,333 ⟶ 5,343:
// switch to fullscreen edit area
case 'wikEdFullScreen':
if (wikEdRearrangewikEd.rearrange == true) {
if (WikEdGetAttributewikEd.GetAttribute(buttonObj, 'checked') == 'true') {
WikEdFullScreenwikEd.FullScreen(true);
WikEdSetPersistentwikEd.SetPersistent('wikEdFullscreen', '1', 0, '/');
}
else {
WikEdFullScreenwikEd.FullScreen(false);
WikEdSetPersistentwikEd.SetPersistent('wikEdFullscreen', '0', 0, '/');
}
}
Line 5,347 ⟶ 5,357:
// clear the saved settings for find, replace, and summary history
case 'wikEdClearHistory':
WikEdClearHistorywikEd.ClearHistory('find');
WikEdClearHistorywikEd.ClearHistory('replace');
WikEdClearHistorywikEd.ClearHistory('summary');
focusFrame = true;
break;
Line 5,365 ⟶ 5,375:
 
// focus the frame
if ( (wikEdUseWikEdwikEd.useWikEd == true) && (focusFrame == true) ) {
wikEdFrameWindowwikEd.frameWindow.focus();
}
 
Line 5,374 ⟶ 5,384:
 
//
// WikEdEditButtonwikEd.EditButton: editing functions
// used for buttons that require or change the text, more time consuming than WikEdButtonwikEd.Button()
//
 
windowwikEd.WikEdEditButtonEditButton = function(buttonObj, buttonId, parameters, CustomHandler) {
 
// check if button is disabled
Line 5,388 ⟶ 5,398:
 
// remove active and non-text content
WikEdRemoveElementswikEd.RemoveElements(['script', 'object', 'applet', 'embed', 'textarea']);
 
// select the appropriate text change targets (whole, selection, cursor, focusWord, focusLine, selectionWord, or selectionLine)
Line 5,396 ⟶ 5,406:
 
// set cursor position into closest highest text node so that highlighting does not bleed out
WikEdAntiHighlightBleedingwikEd.AntiHighlightBleeding(obj, true);
 
// switch the button
Line 5,406 ⟶ 5,416:
case 'wikEdUndoAll':
case 'wikEdRedoAll':
WikEdGetTextwikEd.GetText(obj, 'whole');
obj.changed = obj.whole;
break;
Line 5,420 ⟶ 5,430:
case 'wikEdWikiLink':
case 'wikEdWebLink':
WikEdGetTextwikEd.GetText(obj, 'selection, cursor');
if (obj.selection.plain != '') {
obj.changed = obj.selection;
}
else {
WikEdGetTextwikEd.GetText(obj, 'focusWord');
if (obj.focusWord.plain != '') {
obj.changed = obj.focusWord;
Line 5,438 ⟶ 5,448:
case 'wikEdRef':
case 'wikEdRefNamed':
WikEdGetTextwikEd.GetText(obj, 'selection, cursor');
if (obj.selection.plain != '') {
obj.changed = obj.selection;
Line 5,450 ⟶ 5,460:
case 'wikEdReferences':
case 'wikEdReferencesSection':
WikEdGetTextwikEd.GetText(obj, 'selection, cursor');
if (obj.selection.plain != '') {
obj.changed = obj.selection;
Line 5,461 ⟶ 5,471:
// character formatting: selection / focusWord / cursor
case 'wikEdCase':
WikEdGetTextwikEd.GetText(obj, 'selection, cursor');
if (obj.selection.plain != '') {
obj.changed = obj.selection;
}
else {
WikEdGetTextwikEd.GetText(obj, 'focusWord');
if (obj.focusWord.plain != '') {
obj.changed = obj.focusWord;
Line 5,486 ⟶ 5,496:
case 'wikEdDecreaseIndentList':
case 'wikEdDefinitionList':
WikEdGetTextwikEd.GetText(obj, 'selection, cursor');
if (obj.selection.plain != '') {
WikEdGetTextwikEd.GetText(obj, 'selectionLine');
obj.changed = obj.selectionLine;
}
else {
WikEdGetTextwikEd.GetText(obj, 'focusLine');
if (obj.focusLine.plain != '') {
obj.changed = obj.focusLine;
Line 5,504 ⟶ 5,514:
// sort: selectionLine / focusLine
case 'wikEdSort':
WikEdGetTextwikEd.GetText(obj, 'selection, cursor');
if (obj.selection.plain != '') {
WikEdGetTextwikEd.GetText(obj, 'selectionLine');
obj.changed = obj.selectionLine;
}
else {
WikEdGetTextwikEd.GetText(obj, 'focusPara');
if (obj.focusPara.plain != '') {
obj.changed = obj.focusPara;
Line 5,519 ⟶ 5,529:
// image: selectionWord (if text is selected) / cursor
case 'wikEdImage':
WikEdGetTextwikEd.GetText(obj, 'selection, cursor');
if (obj.selection.plain != '') {
WikEdGetTextwikEd.GetText(obj, 'selectionWord');
obj.changed = obj.selectionWord;
}
Line 5,531 ⟶ 5,541:
// table: selectionLine / cursor
case 'wikEdTable':
WikEdGetTextwikEd.GetText(obj, 'selection, cursor');
if (obj.selection.plain != '') {
WikEdGetTextwikEd.GetText(obj, 'selectionLine');
obj.changed = obj.selectionLine;
}
else {
WikEdGetTextwikEd.GetText(obj, 'focusLine');
obj.changed = obj.cursor;
}
Line 5,545 ⟶ 5,555:
case 'wikEdWikify':
if (parameters == 'whole') {
WikEdGetTextwikEd.GetText(obj, 'whole');
obj.changed = obj.whole;
}
else {
WikEdGetTextwikEd.GetText(obj, 'selection');
if (obj.selection.plain != '') {
obj.changed = obj.selection;
}
else {
WikEdGetTextwikEd.GetText(obj, 'whole');
obj.changed = obj.whole;
}
Line 5,562 ⟶ 5,572:
// textify: selection / whole, without wikifying
case 'wikEdTextify':
WikEdGetTextwikEd.GetText(obj, 'selection', false);
if (obj.selection.plain != '') {
obj.changed = obj.selection;
}
else {
WikEdGetTextwikEd.GetText(obj, 'whole', false);
obj.changed = obj.whole;
}
Line 5,574 ⟶ 5,584:
// redirect: whole
case 'wikEdRedirect':
WikEdGetTextwikEd.GetText(obj, 'whole, selection, cursor');
if (obj.selection.plain == '') {
WikEdGetTextwikEd.GetText(obj, 'selectionWord');
}
obj.changed = obj.whole;
Line 5,589 ⟶ 5,599:
case 'wikEdReplaceNext':
case 'wikEdFindAll':
WikEdGetTextwikEd.GetText(obj, 'selection');
if (obj.selection.plain != '') {
obj.changed = obj.selection;
}
else {
WikEdGetTextwikEd.GetText(obj, 'focusWord');
if (obj.focusWord.plain != '') {
obj.changed = obj.focusWord;
Line 5,606 ⟶ 5,616:
// replace all: selection / whole
case 'wikEdReplaceAll':
WikEdGetTextwikEd.GetText(obj, 'selection');
if (obj.selection.plain != '') {
obj.changed = obj.selection;
}
else {
WikEdGetTextwikEd.GetText(obj, 'whole');
obj.changed = obj.whole;
}
Line 5,624 ⟶ 5,634:
case 'wikEdFixRedirect':
case 'wikEdFixRedirectReplace':
WikEdGetTextwikEd.GetText(obj, 'selection, cursor');
if (obj.selection.plain != '') {
obj.changed = obj.selection;
}
else {
WikEdGetTextwikEd.GetText(obj, 'whole');
obj.changed = obj.whole;
}
Line 5,641 ⟶ 5,651:
case 'wikEdFixCaps':
case 'wikEdFixChem':
WikEdGetTextwikEd.GetText(obj, 'selection, cursor');
if (obj.selection.plain != '') {
obj.changed = obj.selection;
}
else {
WikEdGetTextwikEd.GetText(obj, 'focusPara');
if (obj.focusPara.plain != '') {
obj.changed = obj.focusPara;
Line 5,658 ⟶ 5,668:
// fixing buttons: selection / focusLine / cursor
case 'wikEdFixChem':
WikEdGetTextwikEd.GetText(obj, 'selection, cursor');
if (obj.selection.plain != '') {
obj.changed = obj.selection;
}
else {
WikEdGetTextwikEd.GetText(obj, 'focusLine');
if (obj.focusPara.plain != '') {
obj.changed = obj.focusLine;
Line 5,675 ⟶ 5,685:
// source: selection / whole
case 'wikEdSource':
WikEdGetTextwikEd.GetText(obj, 'selection');
if (obj.selection.plain != '') {
obj.changed = obj.selection;
}
else {
WikEdGetTextwikEd.GetText(obj, 'whole');
obj.changed = obj.whole;
}
Line 5,687 ⟶ 5,697:
// insert tags: selection / focusWord / cursor
case 'wikEdInsertTags':
WikEdGetTextwikEd.GetText(obj, 'selection, cursor');
if (obj.selection.plain != '') {
obj.changed = obj.selection;
}
else {
WikEdGetTextwikEd.GetText(obj, 'focusWord');
if (obj.focusWord.plain != '') {
obj.changed = obj.focusWord;
Line 5,704 ⟶ 5,714:
// convert wiki tables to html
case 'wikEdTablify':
WikEdGetTextwikEd.GetText(obj, 'whole');
obj.changed = obj.whole;
break;
Line 5,710 ⟶ 5,720:
// update text view using current control button settings
case 'wikEdUpdateAll':
WikEdGetTextwikEd.GetText(obj, 'whole');
obj.changed = obj.whole;
break;
 
// custom edit functions have to call WikEdGetTextwikEd.GetText() themselves
default:
WikEdGetTextwikEd.GetText(obj, 'cursor');
obj.changed = obj.cursor;
break;
Line 5,723 ⟶ 5,733:
// exit
if (obj.changed == null) {
wikEdFrameWindowwikEd.frameWindow.focus();
 
// reset button to active, reset cursor
Line 5,735 ⟶ 5,745:
 
// set local syntax highlighting flag
var highlightSyntax = wikEdHighlightSyntaxwikEd.highlightSyntax;
 
// manipulate the text
Line 5,744 ⟶ 5,754:
// undo
case 'wikEdUndo':
if (wikEdLastVersionwikEd.lastVersion == null) {
wikEdLastVersionwikEd.lastVersion = obj.changed.plain;
}
WikEdFrameExecCommandwikEd.FrameExecCommand('undo');
if (obj.sel.rangeCount == 0) {
obj.sel.collapse(wikEdFrameBodywikEd.frameBody, 0);
}
obj.changed.range = obj.sel.getRangeAt(obj.sel.rangeCount - 1);
Line 5,758 ⟶ 5,768:
// redo
case 'wikEdRedo':
WikEdFrameExecCommandwikEd.FrameExecCommand('redo');
if (obj.sel.rangeCount == 0) {
obj.sel.collapse(wikEdFrameBodywikEd.frameBody, 0);
}
obj.changed.range = obj.sel.getRangeAt(obj.sel.rangeCount - 1);
Line 5,890 ⟶ 5,900:
case 'wikEdReferences':
case 'wikEdReferencesSection':
var ref = wikEdConfig['wikEd.config.text']['wikEdReferencesSection'];
ref = ref.replace(/</g, '&lt;');
ref = ref.replace(/>/g, '&gt;');
Line 5,981 ⟶ 5,991:
 
// fix unicode and character entities
WikEdFixUnicodewikEd.FixUnicode(obj.changed);
 
// keep leading and trailing empty lines and table syntax
Line 6,103 ⟶ 6,113:
// undo all
case 'wikEdUndoAll':
if (wikEdLastVersionwikEd.lastVersion == null) {
wikEdLastVersionwikEd.lastVersion = obj.changed.plain;
}
obj.changed.plain = wikEdOrigVersionwikEd.origVersion;
obj.changed.plain = obj.changed.plain.replace(/&/g, '&amp;');
obj.changed.plain = obj.changed.plain.replace(/>/g, '&gt;');
Line 6,114 ⟶ 6,124:
// redo all
case 'wikEdRedoAll':
if (wikEdLastVersionwikEd.lastVersion != null) {
obj.changed.plain = wikEdLastVersionwikEd.lastVersion;
}
break;
Line 6,253 ⟶ 6,263:
case 'wikEdImage':
if (obj.changed.plain != '') {
obj.changed.plain = '[[Image:<span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['image filename'] + '</span>|thumb|<span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['image width'] + '</span>px|' + obj.changed.plain + ']]';
}
else {
obj.changed.plain = '[[Image:<span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['image filename'] + '</span>|thumb|<span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['image width'] + '</span>px|<span class="wikEdInsertHere"> </span>]]';
if (obj.focusWord != null) {
if (obj.focusWord.plain != '') {
Line 6,272 ⟶ 6,282:
obj.changed.plain = obj.changed.plain.replace(/$/g, '\n|}\n');
}
else if (wikEdTableModewikEd.tableMode == true) {
obj.changed.plain = '\n<table class="wikitable" border="1"><caption><span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['table caption'] + '</span></caption><tr><th><span class="wikEdinserthere">' + wikEdConfig['wikEd.config.text']['table heading'] + '</span></th><th><span class="wikEdinserthere">' + wikEdConfig['wikEd.config.text']['table heading'] + '</span></th></tr><tr><td><span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['table cell'] + '</span></td><td><span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['table cell'] + '</span></td></tr><tr><td><span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['table cell'] + '</span></td><td><span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['table cell'] + '</span></td></tr></table>\n';
if (obj.focusLine.plain != '') {
obj.changed.plain = '\n' + obj.changed.plain + '\n';
Line 6,279 ⟶ 6,289:
}
else {
obj.changed.plain = '\n{| class="wikitable" border="1"\n|+ <span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['table caption'] + '</span>\n! <span class="wikEdinserthere">' + wikEdConfig['wikEd.config.text']['table heading'] + '</span> !! <span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['table heading'] + '</span>\n|-\n| <span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['table cell'] + '</span> || <span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['table cell'] + '</span>\n|-\n| <span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['table cell'] + '</span> || <span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['table cell'] + '</span>\n|}\n';
if (obj.focusLine.plain != '') {
obj.changed.plain = '\n' + obj.changed.plain + '\n';
Line 6,292 ⟶ 6,302:
// textify: strip html from pasted content
case 'wikEdTextify':
WikEdTextifywikEd.Textify(obj.changed);
if (parameters == 'shift') {
highlightNoTimeOut = true;
Line 6,308 ⟶ 6,318:
}
else {
linkTarget = '<span class="wikEdInsertHere">' + wikEdConfig['wikEd.config.text']['redirect article link'] + '</span>';
}
 
Line 6,324 ⟶ 6,334:
 
// append to summary
if (wikEdInputElement['summary']wikEd.wikiGlobals.wgUseAutomaticEditSummaries != nulltrue) {
if (wikEd.inputElement['summary'] != null) {
if ( (obj.selection.plain != '') || (obj.selectionWord.plain != '') ) {
wikEdInputElement wikEd.inputElement['summary'].value = wikEdInputElementwikEd.inputElement['summary'].value.replace(/#REDIRECT( \[\[[^\]]*\]\])?(, *)?/g, '');
wikEdInputElement wikEd.inputElement['summary'].value = WikEdAppendToSummarywikEd.AppendToSummary(wikEdInputElementwikEd.inputElement['summary'].value, '#REDIRECT [[' + linkTarget + ']]');
}
else {
wikEdInputElement wikEd.inputElement['summary'].value = WikEdAppendToSummarywikEd.AppendToSummary(wikEdInputElementwikEd.inputElement['summary'].value, '#REDIRECT');
}
}
}
Line 6,358 ⟶ 6,370:
if (/\n/.test(obj.changed.plain) == false) {
if (buttonId == 'wikEdFindNext') {
wikEdInputElementwikEd.inputElement['find'].value = obj.changed.plain;
}
else {
wikEdInputElementwikEd.inputElement['replace'].value = obj.changed.plain;
}
obj.changed.keepSel = true;
Line 6,381 ⟶ 6,393:
// get the find text from the find field
else {
if (wikEdInputElementwikEd.inputElement['find'].value != '') {
findText = wikEdInputElementwikEd.inputElement['find'].value;
}
else {
Line 6,391 ⟶ 6,403:
 
// get button status
var regExpChecked = WikEdGetAttributewikEd.GetAttribute(wikEdRegExpwikEd.regExp, 'checked');
var caseSensitiveChecked = WikEdGetAttributewikEd.GetAttribute(wikEdCaseSensitivewikEd.caseSensitive, 'checked');
 
// get the replace text
var replaceText = wikEdInputElementwikEd.inputElement['replace'].value;
 
// format the find and replace texts for a plain text search
Line 6,518 ⟶ 6,530:
 
// start at top of text
WikEdRemoveAllRangeswikEd.RemoveAllRanges(obj.sel);
var range = wikEdFrameDocumentwikEd.frameDocument.createRange();
if (wikEdFrameBodywikEd.frameBody.firstChild != null) {
range.setStartBefore(wikEdFrameBodywikEd.frameBody.firstChild);
}
range.collapse(true);
Line 6,527 ⟶ 6,539:
 
// cycle through matches
var scrollTop = wikEdFrameBodywikEd.frameBody.scrollTop;
do {
 
// WikEdFindwikEd.Find(obj, findText, caseSensitive, backwards, wrap, useRegExp)
found = WikEdFindwikEd.Find(obj, findText, caseSensitive, false, false, useRegExp);
if (found == true) {
foundRanges.push(obj.changed.range.cloneRange());
Line 6,539 ⟶ 6,551:
// scroll back
if (regExpChecked == 'false') {
wikEdFrameBodywikEd.frameBody.scrollTop = scrollTop;
}
 
// add the found ranges, Webkit does not support multiple selections
WikEdRemoveAllRangeswikEd.RemoveAllRanges(obj.sel);
for (var i = 0; i < foundRanges.length; i ++) {
obj.sel.addRange(foundRanges[i]);
Line 6,554 ⟶ 6,566:
else {
obj.selectChanged = selectChanged;
WikEdFindwikEd.Find(obj, findText, caseSensitive, backwards, true, useRegExp);
selectChanged = obj.selectChanged;
}
Line 6,569 ⟶ 6,581:
// save search history to settings
if ( (buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdFindNext') || (buttonId == 'wikEdFindAll') ) {
WikEdAddToHistorywikEd.AddToHistory('find');
}
if ( (buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') || (buttonId == 'wikEdReplaceAll') ) {
WikEdAddToHistorywikEd.AddToHistory('find');
WikEdAddToHistorywikEd.AddToHistory('replace');
}
obj.changed.keepSel = true;
Line 6,581 ⟶ 6,593:
// to do: only certain changes in multiline tags: comments, tables, subst
case 'wikEdFixBasic':
WikEdFixBasicwikEd.FixBasic(obj.changed);
obj.changed.keepSel = true;
break;
case 'wikEdFixPunct':
WikEdFixPunctwikEd.FixPunct(obj.changed);
obj.changed.keepSel = true;
break;
case 'wikEdFixMath':
WikEdFixMathwikEd.FixMath(obj.changed);
obj.changed.keepSel = true;
break;
case 'wikEdFixChem':
WikEdFixChemwikEd.FixChem(obj.changed);
obj.changed.keepSel = true;
break;
case 'wikEdFixUnicode':
WikEdFixUnicodewikEd.FixUnicode(obj.changed);
obj.changed.keepSel = true;
break;
case 'wikEdFixRedirect':
WikEdFixRedirectCallwikEd.FixRedirectCall(obj.changed);
return;
case 'wikEdFixRedirectReplace':
WikEdFixRedirectReplacewikEd.FixRedirectReplace(obj.changed);
obj.changed.keepSel = true;
break;
case 'wikEdFixUnits':
WikEdFixUnitswikEd.FixUnits(obj.changed);
obj.changed.keepSel = true;
break;
case 'wikEdFixDashes':
WikEdFixDasheswikEd.FixDashes(obj.changed);
obj.changed.keepSel = true;
break;
case 'wikEdFixHtml':
WikEdFixHTMLwikEd.FixHTML(obj.changed);
obj.changed.keepSel = true;
break;
case 'wikEdFixRegExTypo':
if ( (wikEdConfig['wikEd.config.regExTypoFix'] == true) && (wikEdTypoRulesFindwikEd.typoRulesFind.length > 0) ) {
WikEdFixTyposwikEd.FixTypos(obj.changed);
}
else {
Line 6,629 ⟶ 6,641:
break;
case 'wikEdFixCaps':
WikEdFixCapswikEd.FixCaps(obj.changed);
obj.changed.keepSel = true;
break;
case 'wikEdFixAll':
WikEdFixAllwikEd.FixAll(obj.changed);
obj.changed.keepSel = true;
break;
Line 6,684 ⟶ 6,696:
case 'wikEdTablify':
obj.changed.keepSel = true;
if (wikEdTableModewikEd.tableMode == true) {
WikEdWikiTableToHtmlwikEd.WikiTableToHtml(obj.changed);
}
break;
Line 6,712 ⟶ 6,724:
// pause frame spellchecking
var pauseFrameSpellchecking = false;
var frameSpellchecking = wikEdFrameBodywikEd.frameBody.spellcheck;
if (frameSpellchecking == true) {
var wholeLength = 0;
Line 6,726 ⟶ 6,738:
if ( (changedLength > 10000) || (wholeLength > 10000) ) {
pauseFrameSpellchecking = true;
wikEdFrameBodywikEd.frameBody.spellcheck = false;
}
}
 
// get the scroll position
var frameScrollTop = wikEdFrameBodywikEd.frameBody.scrollTop;
var frameScrollLeft = wikEdFrameBodywikEd.frameBody.scrollLeft;
 
// update the selection ranges, do not add any text changes
if (obj.changed.plain == null) {
if (buttonId != 'wikEdFindAll') {
WikEdRemoveAllRangeswikEd.RemoveAllRanges(obj.sel);
obj.sel.addRange(obj.changed.range);
 
// scroll the selected text into the viewport
if (selectChanged != false) {
WikEdScrollToSelectionwikEd.ScrollToSelection();
}
}
Line 6,752 ⟶ 6,764:
// a text change erases the last version for redo all
if ( (buttonId != 'wikEdUndo') && (buttonId != 'wikEdRedo') && (buttonId != 'wikEdUndoAll') ) {
wikEdLastVersionwikEd.lastVersion = null;
}
 
Line 6,761 ⟶ 6,773:
obj.whole = true;
}
WikEdHighlightSyntaxwikEd.HighlightSyntax(obj, highlightNoTimeOut);
}
 
Line 6,779 ⟶ 6,791:
 
// make changed range text the current selection
WikEdRemoveAllRangeswikEd.RemoveAllRanges(obj.sel);
var range = obj.changed.range;
obj.sel.addRange(range);
Line 6,789 ⟶ 6,801:
var reselectAfter = '';
if (obj.changed.from != 'whole') {
wikEdInsertCounterwikEd.insertCounter ++;
reselectBefore = '<span class="wikEdScrollBefore" id="wikEdScrollBefore' + wikEdInsertCounterwikEd.insertCounter + '"></span>';
reselectAfter = '<span class="wikEdScrollAfter" id="wikEdScrollAfter' + wikEdInsertCounterwikEd.insertCounter + '"></span>';
}
WikEdFrameExecCommandwikEd.FrameExecCommand('inserthtml', reselectBefore + obj.html + reselectAfter);
}
else if (obj.sel.isCollapsed == false) {
WikEdFrameExecCommandwikEd.FrameExecCommand('delete');
}
 
// select the whole text after replacing the whole text and scroll to same height
if (obj.changed.from == 'whole') {
WikEdRemoveAllRangeswikEd.RemoveAllRanges(obj.sel);
wikEdFrameBodywikEd.frameBody.scrollTop = frameScrollTop;
var range = wikEdFrameDocumentwikEd.frameDocument.createRange();
range.setStartBefore(wikEdFrameBodywikEd.frameBody.firstChild);
range.setEndAfter(wikEdFrameBodywikEd.frameBody.lastChild);
obj.sel.addRange(range);
selectChanged = false;
Line 6,812 ⟶ 6,824:
// select the changed text and scroll it into the viewport
else if (selectChanged != false) {
WikEdRemoveAllRangeswikEd.RemoveAllRanges(obj.sel);
var range = wikEdFrameDocumentwikEd.frameDocument.createRange();
var startNodeReselect = wikEdFrameDocumentwikEd.frameDocument.getElementById('wikEdScrollBefore' + wikEdInsertCounterwikEd.insertCounter);
var endNodeReselect = wikEdFrameDocumentwikEd.frameDocument.getElementById('wikEdScrollAfter' + wikEdInsertCounterwikEd.insertCounter);
range.setStartAfter(startNodeReselect);
// should be range.setEndAfter, but that causes caret at start of next line due to https://bugzilla.mozilla.org/show_bug.cgi?id=587461
range.setEndBefore(endNodeReselect);
obj.sel.addRange(range);
WikEdScrollToNodeswikEd.ScrollToNodes(startNodeReselect, endNodeReselect);
}
}
Line 6,832 ⟶ 6,844:
) {
if (obj.sel.rangeCount == 0) {
obj.sel.collapse(wikEdFrameBodywikEd.frameBody, 0);
}
else {
Line 6,839 ⟶ 6,851:
 
// focus edit area to continue editing as there is no selection that would be overwritten
wikEdFrameWindowwikEd.frameWindow.focus();
}
 
Line 6,851 ⟶ 6,863:
 
// grey out inactive buttons
wikEd.InactiveButtons();
WikEdInactiveButtons();
 
// add event handlers to unhide refs and templates
Line 6,857 ⟶ 6,869:
 
// add ref and template names to hide buttons
wikEd.HighlightNamedHideButtons();
WikEdHighlightNamedHideButtons();
 
// add event handlers to unhide refs and templates
wikEd.HideAddHandlers();
WikEdHideAddHandlers();
 
// add event handlers to make highlighted frame links ctrl-clickable
wikEd.LinkifyAddHandlers();
WikEdLinkifyAddHandlers();
}
 
// resume frame spellchecking
if (pauseFrameSpellchecking == true) {
wikEdFrameBodywikEd.frameBody.spellcheck = true;
}
 
Line 6,876 ⟶ 6,888:
 
//
// WikEdLocalPreviewAjaxHandlerwikEd.LocalPreviewAjaxHandler: process the returned article preview
//
 
windowwikEd.WikEdLocalPreviewAjaxHandlerLocalPreviewAjaxHandler = function(ajax) {
 
wikEdPreviewIsAjaxwikEd.previewIsAjax = true;
 
// get response
Line 6,905 ⟶ 6,917:
while ( (regExpMatch = /<()style\b[^>]*?type=\"text\/css\">((.|\n)*?)<\/style>/gi.exec(html)) != null) {
var css = regExpMatch[2];
var stylesheet = new WikEdStyleSheetwikEd.StyleSheet(document);
stylesheet.WikEdAddRulesAddRules(css);
}
 
Line 6,927 ⟶ 6,939:
}
);
wikEdPreviewBoxwikEd.previewBox.innerHTML = html;
 
// init sortable tables (wikibits.js)
Line 6,940 ⟶ 6,952:
 
// scroll to button, textarea, or preview field
wikEd.ScrollToPreview();
WikEdScrollToPreview();
return;
};
Line 6,946 ⟶ 6,958:
 
//
// WikEdFilePreviewAjaxHandlerwikEd.FilePreviewAjaxHandler: process the returned image addresses
//
 
windowwikEd.WikEdFilePreviewAjaxHandlerFilePreviewAjaxHandler = function(ajax) {
 
// get response
Line 6,965 ⟶ 6,977:
 
// parse response into file url cache
var regExpFile = new RegExp('\\n((Image|File|' + wikEdConfig['wikEd.config.text']['wikicode Image'] + '|' + wikEdConfig['wikEd.config.text']['wikicode File'] + '):[^ ]+) +(\\d+) +(.*)', 'ig');
var regExpMatch;
while ( (regExpMatch = regExpFile.exec(html)) != null) {
Line 6,983 ⟶ 6,995:
}
else {
fileObj.url = wikEdConfig['wikEd.config.image']['noFile'];
fileObj.width = 16;
fileObj.height = 16;
}
wikEdFilePreviewCachewikEd.filePreviewCache['wikEd' + file + filePreviewSize] = fileObj;
}
 
// cycle through file preview spans and add missing images as background
for (var i = 0; i < wikEdFilePreviewNowikEd.filePreviewNo; i ++) {
if (wikEdFilePreviewIdswikEd.filePreviewIds[i] != '') {
var span = wikEdFrameDocumentwikEd.frameDocument.getElementById('wikEdFilePreview' + i);
var fileNameSize = wikEdFilePreviewIdswikEd.filePreviewIds[i];
var fileObj = wikEdFilePreviewCachewikEd.filePreviewCache['wikEd' + fileNameSize];
if (fileObj != null) {
span.style.backgroundImage = 'url(' + fileObj.url + ')';
Line 7,006 ⟶ 7,018:
span.style.display = 'block';
}
wikEdFilePreviewIdswikEd.filePreviewIds[i] = '';
}
}
Line 7,080 ⟶ 7,092:
 
//
// WikEdScrollToPreviewwikEd.ScrollToPreview: scroll to edit buttons, textarea, or preview field depending on current position
//
 
windowwikEd.WikEdScrollToPreviewScrollToPreview = function() {
 
// reset fixed height to auto
wikEdPreviewBoxwikEd.previewBox.style.height = 'auto';
 
var scrollOffset = window.pageYOffset || document.body.scrollTop;
var inputOffset = WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdInputWrapperwikEd.inputWrapper);
var editOffset = WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdEditWrapperwikEd.editWrapper);
var submitOffset = 0;
if (wikEdSaveButtonwikEd.saveButton != null) {
submitOffset = WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdSaveButtonwikEd.saveButton);
}
else if (wikEdPreviewButtonwikEd.previewButton != null) {
submitOffset = WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdPreviewButtonwikEd.previewButton);
}
else if (wikEdDiffPreviewButtonwikEd.diffPreviewButton != null) {
submitOffset = WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdDiffPreviewButtonwikEd.diffPreviewButton);
}
var editHeight = wikEdEditWrapperwikEd.editWrapper.clientHeight;
 
if (scrollOffset > submitOffset) {
Line 7,120 ⟶ 7,132:
 
//
// WikEdLinkifyAddHandlerswikEd.LinkifyAddHandlers: register click handlers to make highlighted frame links ctrl-clickable (linkify)
//
 
windowwikEd.WikEdLinkifyAddHandlersLinkifyAddHandlers = function() {
 
if (wikEd.config.linkify != true) {
// reset frame timeout
// window.clearTimeout(wikEdLinkifyTimeoutId);
// wikEdLinkifyTimeoutId = null;
if (wikEdConfig['linkify'] != true) {
return;
}
 
// much faster than individual getElementById in SeaMonkey 1.1.18
var spans = wikEdFrameDocumentwikEd.frameDocument.getElementsByTagName('span');
for (var i = 0; i < spans.length; i ++) {
var spanId = spans[i].id;
if (spanId != null) {
if (spanId.indexOf('wikEdLinkify') == 0) {
WikEdAddEventListenerwikEd.AddEventListener(spans[i], 'click', WikEdLinkifyHandlerwikEd.LinkifyHandler, true);
}
}
Line 7,147 ⟶ 7,156:
 
//
// WikEdHighlightNamedHideButtonswikEd.HighlightNamedHideButtons: register :before text for named hiding buttons
//
 
windowwikEd.WikEdHighlightNamedHideButtonsHighlightNamedHideButtons = function() {
 
if (wikEdRefHidewikEd.refHide != true) {
return;
}
Line 7,159 ⟶ 7,168:
 
// references
for (var i = 0; i < wikEdReferenceArraywikEd.referenceArray.length; i ++) {
if (wikEdReferenceArraywikEd.referenceArray[i].added == true) {
continue;
}
Line 7,167 ⟶ 7,176:
rules += '.wikEdRefButtonShow' + i + ' { border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; }\n';
 
rules += '.wikEdRefButton' + i + ':before, .wikEdRefButtonShow' + i + ':before { content: "' + wikEdConfig['wikEd.config.text']['hideRef'] + ' ' + wikEdReferenceArraywikEd.referenceArray[i].text + '"; line-height: 0.75em; font-size: 65%; color: #000; font-family: sans-serif; }\n';
 
wikEdReferenceArraywikEd.referenceArray[i].added = true;
}
 
// templates
for (var i = 0; i < wikEdTemplateArraywikEd.templateArray.length; i ++) {
if (wikEdTemplateArraywikEd.templateArray[i].added == true) {
continue;
}
Line 7,181 ⟶ 7,190:
rules += '.wikEdTemplButtonShow' + i + ' { border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; }\n';
 
rules += '.wikEdTemplButton' + i + ':before, .wikEdTemplButtonShow' + i + ':before { content: "' + wikEdConfig['wikEd.config.text']['hideTempl'] + ' ' + wikEdTemplateArraywikEd.templateArray[i].text + '"; line-height: 0.75em; font-size: 65%; color: #000; font-family: sans-serif; }\n';
 
wikEdTemplateArraywikEd.templateArray[i].added = true;
}
 
// character entities
for (var i = 0; i < wikEdCharEntityArraywikEd.charEntityArray.length; i ++) {
if (wikEdCharEntityArraywikEd.charEntityArray[i].added == true) {
continue;
}
var character = wikEdCharEntityArraywikEd.charEntityArray[i].text;
if (character == '"') {
character = '\\' + character;
Line 7,201 ⟶ 7,210:
rules += '.wikEdCharEntityButton' + i + ':before, .wikEdCharEntityButtonShow' + i + ':before { content: "' + character + '"; }\n';
 
wikEdCharEntityArraywikEd.charEntityArray[i].added = true;
}
 
// add or replace existing css rules
if (rules != '') {
wikEd.HighlightNamedHideButtonsStylesheet.AddRules(rules);
WikEdHighlightNamedHideButtonsStylesheet.WikEdAddRules(rules);
}
return;
Line 7,213 ⟶ 7,222:
 
//
// WikEdHideAddHandlerswikEd.HideAddHandlers: register mouseover handlers for tabs to unhide refs, templates, and character entities
//
 
windowwikEd.WikEdHideAddHandlersHideAddHandlers = function() {
 
if ( (wikEdConfig['wikEd.config.hideContent'] != true) || (wikEdRefHidewikEd.refHide != true) ) {
return;
}
var hideButton = wikEdFrameDocumentwikEd.frameDocument.getElementsByTagName('button');
for (var i = 0; i < hideButton.length; i ++) {
var tabClass = hideButton[i].className;
Line 7,229 ⟶ 7,238:
(tabClass.indexOf('wikEdCharEntityButton') == 0)
) {
WikEdAddEventListenerwikEd.AddEventListener(hideButton[i], 'click', WikEdHideShowHandlerwikEd.HideShowHandler, true);
if (
(tabClass.indexOf('wikEdRefButtonShow') == -1) &&
Line 7,235 ⟶ 7,244:
(tabClass.indexOf('wikEdCharEntityButtonShow') == -1)
) {
WikEdAddEventListenerwikEd.AddEventListener(hideButton[i], 'mouseover', WikEdHideShowHandlerwikEd.HideShowHandler, true);
}
}
Line 7,244 ⟶ 7,253:
 
//
// WikEdHideShowHandlerwikEd.HideShowHandler: display hidden ref or template on mouse over hide tab
//
 
windowwikEd.WikEdHideShowHandlerHideShowHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
Line 7,276 ⟶ 7,285:
 
// get hide text
hide = WikEdGetNextSiblingNodewikEd.GetNextSiblingNode(hideContainer);
if (hide != null) {
if (/^wikEd(Ref|Templ|TemplNs|CharEntity)(Show)?$/.test(hide.className) == false) {
Line 7,290 ⟶ 7,299:
 
hide = hideTarget;
hideContainer = WikEdGetPreviousSiblingNodewikEd.GetPreviousSiblingNode(hideTarget);
if (hideContainer != null) {
if (/^wikEd(Ref|Templ|CharEntity)Container$/.test(hideContainer.className) == false) {
Line 7,298 ⟶ 7,307:
 
// get button
hideButton = WikEdGetFirstChildNodewikEd.GetFirstChildNode(hideContainer);
if (hideButton != null) {
if (/^wikEd(Ref|Templ|CharEntity)Button(Show)?\d*$/.test(hideButton.className) == false) {
Line 7,327 ⟶ 7,336:
hide.style.display = 'inline';
}
WikEdRemoveEventListenerwikEd.RemoveEventListener(hideButton, 'mouseover', WikEdHideShowHandlerwikEd.HideShowHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(hide, 'mouseout', WikEdHideShowHandlerwikEd.HideShowHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(hideButton, 'mouseout', WikEdHideShowHandlerwikEd.HideShowHandler, true);
}
 
Line 7,339 ⟶ 7,348:
var node = hideInto;
while (node != null) {
if (node == wikEdFrameBodywikEd.frameBody) {
hideOut = true;
break;
Line 7,350 ⟶ 7,359:
if (hideOut == true) {
hide.style.display = 'none';
WikEdRemoveEventListenerwikEd.RemoveEventListener(hide, 'mouseout', WikEdHideShowHandlerwikEd.HideShowHandler, true);
WikEdRemoveEventListenerwikEd.RemoveEventListener(hideButton, 'mouseout', WikEdHideShowHandlerwikEd.HideShowHandler, true);
WikEdAddEventListenerwikEd.AddEventListener(hideButton, 'mouseover', WikEdHideShowHandlerwikEd.HideShowHandler, true);
 
// move cursor out of hidden text
WikEdUnhideCursorwikEd.UnhideCursor(hideContainer, hide);
}
}
Line 7,370 ⟶ 7,379:
 
hideButton.className = hideButtonClass;
hideButton.title = wikEdConfig['wikEd.config.text'][hideButtonClass.replace(/\d+$/g, '') + 'Tooltip'];
 
WikEdAddEventListenerwikEd.AddEventListener(hideButton, 'mouseover', WikEdHideShowHandlerwikEd.HideShowHandler, true);
 
// move cursor out of hidden text
WikEdUnhideCursorwikEd.UnhideCursor(hideContainer, hide);
}
 
Line 7,391 ⟶ 7,400:
 
hideButton.className = hideButtonClass;
hideButton.title = wikEdConfig['wikEd.config.text'][hideButtonClass.replace(/\d+$/g, '') + 'Tooltip'];
 
WikEdRemoveEventListenerwikEd.RemoveEventListener(hideButton, 'mouseover', WikEdHideShowHandlerwikEd.HideShowHandler, true);
WikEdRemoveEventListenerwikEd.RemoveEventListener(hide, 'mouseout', WikEdHideShowHandlerwikEd.HideShowHandler, true);
WikEdRemoveEventListenerwikEd.RemoveEventListener(hideButton, 'mouseout', WikEdHideShowHandlerwikEd.HideShowHandler, true);
}
}
Line 7,403 ⟶ 7,412:
 
//
// WikEdUnhideCursorwikEd.UnhideCursor: move cursor out of hidden element for WikEdHideShowHandlerwikEd.HideShowHandler
//
 
windowwikEd.WikEdUnhideCursorUnhideCursor = function(firstHiddenParent, lastHiddenParent) {
 
// get selection and clone range
var sel = WikEdGetSelectionwikEd.GetSelection();
var range = sel.getRangeAt(sel.rangeCount - 1);
if (range != null) {
Line 7,417 ⟶ 7,426:
var node = range.startContainer;
while (node != null) {
if (node == wikEdFrameBodywikEd.frameBody) {
break;
}
Line 7,429 ⟶ 7,438:
var node = range.endContainer;
while (node != null) {
if (node == wikEdFrameBodywikEd.frameBody) {
break;
}
Line 7,456 ⟶ 7,465:
 
//
// WikEdGetTextwikEd.GetText: get the text fragments to manipulate
//
 
windowwikEd.WikEdGetTextGetText = function(obj, whichFragment, wikify) {
 
// remove dynamically inserted nodes by other scripts
wikEd.CleanNodes(wikEd.frameDocument);
WikEdCleanNodes(wikEdFrameDocument);
 
// get selection object
if (obj.sel == null) {
obj.sel = WikEdGetSelectionwikEd.GetSelection();
}
 
Line 7,478 ⟶ 7,487:
 
// set cursor range
obj.cursor.range = wikEdFrameDocumentwikEd.frameDocument.createRange();
WikEdSetRangeStartwikEd.SetRangeStart(obj.cursor.range, obj.sel.focusNode, obj.sel.focusOffset);
obj.cursor.range.collapse(true);
}
Line 7,495 ⟶ 7,504:
 
// set whole range
obj.whole.range = wikEdFrameDocumentwikEd.frameDocument.createRange();
obj.whole.range.setStart(wikEdFrameBodywikEd.frameBody, 0);
obj.whole.range.setEnd(wikEdFrameBodywikEd.frameBody, wikEdFrameBodywikEd.frameBody.childNodes.length);
 
// get whole plain text
WikEdGetInnerHTMLwikEd.GetInnerHTML(obj.whole, wikEdFrameBodywikEd.frameBody);
obj.whole.code = obj.whole.html;
WikEdRemoveHighlightingWikifywikEd.RemoveHighlightingWikify(obj.whole, wikify);
obj.whole.plain = obj.whole.html;
obj.whole.plain = obj.whole.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*()/g, '\n');
Line 7,519 ⟶ 7,528:
// copy range to document fragment
if (obj.sel.rangeCount == 0) {
obj.sel.collapse(wikEdFrameBodywikEd.frameBody, 0);
}
obj.selection.range = obj.sel.getRangeAt(obj.sel.rangeCount - 1);
Line 7,525 ⟶ 7,534:
 
// get selected text
WikEdGetInnerHTMLwikEd.GetInnerHTML(obj.selection, documentFragment);
obj.selection.code = obj.selection.html;
WikEdRemoveHighlightingWikifywikEd.RemoveHighlightingWikify(obj.selection, wikify);
obj.selection.plain = obj.selection.html;
obj.selection.plain = obj.selection.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*()/g, '\n');
Line 7,540 ⟶ 7,549:
'from': 'focusWord',
'keepSel': false,
'range': wikEdFrameDocumentwikEd.frameDocument.createRange(),
'tableEdit': obj.tableEdit
};
Line 7,548 ⟶ 7,557:
'from': 'focusLine',
'keepSel': false,
'range': wikEdFrameDocumentwikEd.frameDocument.createRange(),
'tableEdit': obj.tableEdit
};
Line 7,556 ⟶ 7,565:
'from': 'focusPara',
'keepSel': false,
'range': wikEdFrameDocumentwikEd.frameDocument.createRange(),
'tableEdit': obj.tableEdit
};
 
// find the word and line boundaries
WikEdFindBoundarieswikEd.FindBoundaries(obj.focusWord, obj.focusLine, obj.focusPara, obj.whole, obj.cursor);
 
// get the wikified plain text for the word under the cursor
var documentFragment = obj.focusWord.range.cloneContents();
WikEdGetInnerHTMLwikEd.GetInnerHTML(obj.focusWord, documentFragment);
obj.focusWord.code = obj.focusWord.html;
WikEdRemoveHighlightingWikifywikEd.RemoveHighlightingWikify(obj.focusWord, wikify);
obj.focusWord.plain = obj.focusWord.html;
obj.focusWord.plain = obj.focusWord.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*()/g, '\n');
Line 7,574 ⟶ 7,583:
// get the wikified plain text for the line under the cursor
var documentFragment = obj.focusLine.range.cloneContents();
WikEdGetInnerHTMLwikEd.GetInnerHTML(obj.focusLine, documentFragment);
obj.focusLine.code = obj.focusLine.html;
WikEdRemoveHighlightingWikifywikEd.RemoveHighlightingWikify(obj.focusLine, wikify);
obj.focusLine.plain = obj.focusLine.html;
obj.focusLine.plain = obj.focusLine.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*()/g, '\n');
Line 7,583 ⟶ 7,592:
// get the wikified plain text for the paragraph under the cursor
var documentFragment = obj.focusPara.range.cloneContents();
WikEdGetInnerHTMLwikEd.GetInnerHTML(obj.focusPara, documentFragment);
obj.focusPara.code = obj.focusPara.html;
WikEdRemoveHighlightingWikifywikEd.RemoveHighlightingWikify(obj.focusPara, wikify);
obj.focusPara.plain = obj.focusPara.html;
obj.focusPara.plain = obj.focusPara.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*()/g, '\n');
Line 7,600 ⟶ 7,609:
'from': 'selectionWord',
'keepSel': false,
'range': wikEdFrameDocumentwikEd.frameDocument.createRange(),
'tableEdit': obj.tableEdit
};
Line 7,608 ⟶ 7,617:
'from': 'selectionLine',
'keepSel': false,
'range': wikEdFrameDocumentwikEd.frameDocument.createRange(),
'tableEdit': obj.tableEdit
};
Line 7,616 ⟶ 7,625:
'from': 'selectionPara',
'keepSel': false,
'range': wikEdFrameDocumentwikEd.frameDocument.createRange(),
'tableEdit': obj.tableEdit
};
 
// find the word and line boundaries
WikEdFindBoundarieswikEd.FindBoundaries(obj.selectionWord, obj.selectionLine, obj.selectionPara, obj.whole, obj.selection);
 
// get the wikified plain text for the words under the selection
var documentFragment = obj.selectionWord.range.cloneContents();
WikEdGetInnerHTMLwikEd.GetInnerHTML(obj.selectionWord, documentFragment);
obj.selectionWord.code = obj.selectionWord.html;
WikEdRemoveHighlightingWikifywikEd.RemoveHighlightingWikify(obj.selectionWord, wikify);
obj.selectionWord.plain = obj.selectionWord.html;
obj.selectionWord.plain = obj.selectionWord.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*()/g, '\n');
Line 7,634 ⟶ 7,643:
// get the wikified plain text for the lines under the selection
var documentFragment = obj.selectionLine.range.cloneContents();
WikEdGetInnerHTMLwikEd.GetInnerHTML(obj.selectionLine, documentFragment);
obj.selectionLine.code = obj.selectionLine.html;
WikEdRemoveHighlightingWikifywikEd.RemoveHighlightingWikify(obj.selectionLine, wikify);
obj.selectionLine.plain = obj.selectionLine.html;
obj.selectionLine.plain = obj.selectionLine.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*()/g, '\n');
Line 7,643 ⟶ 7,652:
// get the wikified plain text for the paragraph under the selection
var documentFragment = obj.selectionPara.range.cloneContents();
WikEdGetInnerHTMLwikEd.GetInnerHTML(obj.selectionPara, documentFragment);
obj.selectionPara.code = obj.selectionPara.html;
WikEdRemoveHighlightingWikifywikEd.RemoveHighlightingWikify(obj.selectionPara, wikify);
obj.selectionPara.plain = obj.selectionPara.html;
obj.selectionPara.plain = obj.selectionPara.plain.replace(/[\n ]*<br\b[^>]*>[\n ]*()/g, '\n');
Line 7,656 ⟶ 7,665:
 
//
// WikEdFindwikEd.Find: custom find function with regexp properties, sets obj.changed.range, uses obj ranges
//
 
windowwikEd.WikEdFindFind = function(obj, findText, caseSensitive, backwards, wrap, useRegExp) {
 
var found = false;
Line 7,665 ⟶ 7,674:
// get selection
if (obj.sel == null) {
obj.sel = WikEdGetSelectionwikEd.GetSelection();
}
if (obj.sel.rangeCount == 0) {
obj.sel.collapse(wikEdFrameBodywikEd.frameBody, 0);
}
var range = obj.sel.getRangeAt(obj.sel.rangeCount - 1);
Line 7,678 ⟶ 7,687:
 
// empty the range to avoid error messages for reverse direction ranges
obj.changed.range = wikEdFrameDocumentwikEd.frameDocument.createRange();
 
// regexp instead of plain text search for browser lacking .find (Opera), built in .find() ignores newlines
if (useRegExp != true) {
if (typeof(wikEdFrameWindowwikEd.frameWindow.find) != 'function') {
useRegExp = true;
findText = findText.replace(/([\\\^\$\*\+\?\.\(\)\[\]\{\}\:\=\!\|\,\-])/g, '\\$1');
Line 7,707 ⟶ 7,716:
 
// parameters: window.find(string, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog)
found = wikEdFrameWindowwikEd.frameWindow.find(findText, caseSensitive, backwards, wrap, false, true, false);
if (found == true) {
range = obj.sel.getRangeAt(obj.sel.rangeCount - 1);
Line 7,719 ⟶ 7,728:
// perform find
if (obj.plainArray === undefined) {
WikEdParseDOMwikEd.ParseDOM(obj, wikEdFrameBodywikEd.frameBody);
}
var regExpMatch = [];
Line 7,782 ⟶ 7,791:
var endNode = obj.plainNode[j];
var endOffset = regExpMatch.index + regExpMatch[0].length - obj.plainStart[j];
WikEdSetRangewikEd.SetRange(obj.changed.range, startNode, startOffset, endNode, endOffset);
obj.selectChanged = true;
}
Line 7,791 ⟶ 7,800:
 
//
// WikEdScrollToSelectionwikEd.ScrollToSelection: scroll iframe range into viewport
// for MSIE see http://www.webmasterworld.com/javascript/3820483.htm
// removig helper nodes gives Error: Node was not found = NS_ERROR_DOM_NOT_FOUND_ERR for certain undo actions
// adding nodes breaks the undo history in Chrome and Opera
 
windowwikEd.WikEdScrollToSelectionScrollToSelection = function(frameScrollTop, frameScrollLeft, removeHelperNodes) {
 
// get selection and clone range
var obj = {};
obj.sel = WikEdGetSelectionwikEd.GetSelection();
if (obj.sel.rangeCount == 0) {
return;
Line 7,808 ⟶ 7,817:
range = obj.sel.getRangeAt(obj.sel.rangeCount - 1);
var documentFragment = range.cloneContents();
WikEdGetInnerHTMLwikEd.GetInnerHTML(obj, documentFragment);
var plainText = obj.plain;
plainText = plainText.replace(/&lt;/g, '<');
Line 7,815 ⟶ 7,824:
 
// select using backwards built-in find
if ( (typeof(wikEdFrameWindowwikEd.frameWindow.find) == 'function') && (plainText.length > 0) ) {
obj.sel.collapseToEnd();
 
// Chrome; parameters: WikEdFindwikEd.Find(obj, findText, caseSensitive, backwards, wrap, useRegExp)
var found = WikEdFindwikEd.Find(obj, plainText, true, true, false, false);
 
// Firefox (\n removed, \xa0 as blank)
if ( (found == false) && (/\n/.test(plainText) == true) ) {
plainText = range.toString();
WikEdFindwikEd.Find(obj, plainText, true, true, false, false);
}
}
 
// select empty range using backwards built-in find for previous character
else if ( (typeof(wikEdFrameWindowwikEd.frameWindow.find) == 'function') && (plainText.length == 0) ) {
var backwards = true;
 
// get plain text from start to selection
var rangeClone = range.cloneRange();
rangeClone.setStartBefore(wikEdFrameBodywikEd.frameBody.firstChild);
var documentFragment = rangeClone.cloneContents();
WikEdGetInnerHTMLwikEd.GetInnerHTML(obj, documentFragment);
var plainText = obj.plain;
plainText = plainText.replace(/&lt;/g, '<');
Line 7,849 ⟶ 7,858:
 
var rangeClone = range.cloneRange();
rangeClone.setEndAfter(wikEdFrameBodywikEd.frameBody.lastChild);
var documentFragment = rangeClone.cloneContents();
WikEdGetInnerHTMLwikEd.GetInnerHTML(obj, documentFragment);
var plainText = obj.plain;
plainText = plainText.replace(/&lt;/g, '<');
Line 7,867 ⟶ 7,876:
}
 
// Chrome; parameters: WikEdFindwikEd.Find(obj, findText, caseSensitive, backwards, wrap, useRegExp)
var found = WikEdFindwikEd.Find(obj, plainText, true, backwards, false, false);
 
// Firefox
Line 7,874 ⟶ 7,883:
plainText = plainText.replace(/\n/g, '');
plainText = plainText.replace(/\xa0/g, ' ');
WikEdFindwikEd.Find(obj, plainText, true, backwards, false, false);
}
if (backwards == true) {
Line 7,890 ⟶ 7,899:
 
// spans to be temporarily inserted before and after selection range to get range position
wikEdInsertCounterwikEd.insertCounter ++;
var scrollStartNode = wikEdFrameDocumentwikEd.frameDocument.createElement('span');
scrollStartNode.className = 'wikEdScrollBefore';
scrollStartNode.id = 'wikEdScrollBefore' + wikEdInsertCounterwikEd.insertCounter;
var scrollEndNode = wikEdFrameDocumentwikEd.frameDocument.createElement('span');
scrollEndNode.className = 'wikEdScrollAfter';
scrollEndNode.id = 'wikEdScrollAfter' + wikEdInsertCounterwikEd.insertCounter;
 
// get the range border nodes and offsets
Line 7,951 ⟶ 7,960:
}
 
WikEdScrollToNodeswikEd.ScrollToNodes(scrollStartNode, scrollEndNode);
 
// set selection
range.setStartBefore(scrollStartNode);
range.setEndAfter(scrollEndNode);
WikEdRemoveAllRangeswikEd.RemoveAllRanges(sel);
sel.addRange(range);
}
Line 7,965 ⟶ 7,974:
 
//
// WikEdScrollToNodeswikEd.ScrollToNodes: scroll iframe range into viewport
//
 
windowwikEd.WikEdScrollToNodesScrollToNodes = function(scrollStartNode, scrollEndNode) {
 
// absolute span for line height detection (Opera and Chrome do not vertically align empty span at bottom)
var lineHeightNode = wikEdFrameDocumentwikEd.frameDocument.createElement('span');
lineHeightNode.innerHTML = '&nbsp;';
lineHeightNode.className = 'wikEdScrollLineHeight';
Line 7,982 ⟶ 7,991:
scrollStartNode.style.verticalAlign = 'top';
scrollEndNode.style.verticalAlign = 'top';
var startOffsetLeft = WikEdGetOffsetLeftwikEd.GetOffsetLeft(scrollStartNode);
var startOffsetTop = WikEdGetOffsetTopwikEd.GetOffsetTop(scrollStartNode);
var endOffsetRight = WikEdGetOffsetLeftwikEd.GetOffsetLeft(scrollEndNode);
var endOffsetBottom = WikEdGetOffsetTopwikEd.GetOffsetTop(scrollEndNode);
scrollStartNode.style.verticalAlign = 'baseline';
scrollEndNode.style.verticalAlign = 'baseline';
var frameScrollTop = wikEdFrameBodywikEd.frameBody.scrollTop;
var frameScrollLeft = wikEdFrameBodywikEd.frameBody.scrollLeft;
var x = frameScrollLeft;
var y = frameScrollTop;
Line 8,001 ⟶ 8,010:
 
// selection below viewport
else if (startOffsetTop > frameScrollTop + wikEdFrameBodywikEd.frameBody.clientHeight) {
y = endOffsetBottom - wikEdFrameBodywikEd.frameBody.clientHeight + lineHeight;
}
 
// selection left of viewport
if (endOffsetRight < frameScrollLeft) {
if (endOffsetRight <= wikEdFrameBodywikEd.frameBody.clientWidth) {
x = 0;
}
Line 8,016 ⟶ 8,025:
 
// selection right of viewport
else if (startOffsetLeft > frameScrollLeft + wikEdFrameBodywikEd.frameBody.clientWidth) {
x = endOffsetRight - wikEdFrameBodywikEd.frameBody.clientWidth;
}
 
// do scroll
wikEdFrameWindowwikEd.frameWindow.scrollTo(x, y);
 
return;
Line 8,028 ⟶ 8,037:
 
//
// WikEdWikiTableToHtmlwikEd.WikiTableToHtml: convert wiki tables to html // {{TABLE}}
//
 
windowwikEd.WikEdWikiTableToHtmlWikiTableToHtml = function(obj) {
 
////
Line 8,039 ⟶ 8,048:
 
//
// WikEdTextifywikEd.Textify: strip html off of text
//
 
windowwikEd.WikEdTextifyTextify = function(obj) {
 
// convert html to plain
Line 8,056 ⟶ 8,065:
 
// <div>...</div> to <br> for Safari, Chrome, WebKit
if ( (wikEdSafariwikEd.safari == true) || (wikEdChromewikEd.chrome == true) || (wikEdWebKitwikEd.webkit == true) ) {
var isRemove = [];
obj.plain = obj.plain.replace(/(<(\/?)div\b([^>]*)>)/g,
Line 8,120 ⟶ 8,129:
 
// tables
if (wikEdTableModewikEd.tableMode == true) {
 
// override pasted table class // {{TABLE}}
Line 8,143 ⟶ 8,152:
 
// textify table
else if (wikEdTableModewikEd.tableMode == false) {
obj.plain = obj.plain.replace(/<\/?(table|caption)\b.*?>/g, '\x00');
obj.plain = obj.plain.replace(/<\/(tr|th|td)>/g, '\x00');
Line 8,176 ⟶ 8,185:
 
//
// WikEdInactiveButtonswikEd.InactiveButtons: grey out inactive buttons, called after every change and click
//
 
windowwikEd.WikEdInactiveButtonsInactiveButtons = function() {
 
// undo
if (wikEdFrameDocumentwikEd.frameDocument.queryCommandEnabled('undo') == true ) {
document.getElementById('wikEdUndo').className = 'wikEdButton';
document.getElementById('wikEdUndoAll').className = 'wikEdButton';
Line 8,192 ⟶ 8,201:
 
// redo
if (wikEdFrameDocumentwikEd.frameDocument.queryCommandEnabled('redo') == true ) {
document.getElementById('wikEdRedo').className = 'wikEdButton';
}
Line 8,200 ⟶ 8,209:
 
// redo all
if (wikEdLastVersionwikEd.lastVersion != null) {
document.getElementById('wikEdRedoAll').className = 'wikEdButton';
}
Line 8,211 ⟶ 8,220:
 
//
// WikEdFixBasicwikEd.FixBasic: fix characters, spaces, empty lines, certain headings, needed for all fixing functions
//
 
//// change: double spaces ok after dot
 
windowwikEd.WikEdFixBasicFixBasic = function(obj) {
 
// non-breaking space character to normal space
Line 8,239 ⟶ 8,248:
 
// uppercase well known headings
var regExp = new RegExp('\\n=+ ' + wikEdConfig['wikEd.config.text']['External links'] + '? =+\\n', 'gi');
obj.plain = obj.plain.replace(regExp, '\n== ' + wikEdConfig['wikEd.config.text']['External links'] + ' ==\n');
regExp = new RegExp('\\n=+ ' + wikEdConfig['wikEd.config.text']['See also'] + ' =+\\n', 'gi');
obj.plain = obj.plain.replace(regExp, '\n== ' + wikEdConfig['wikEd.config.text']['See also'] + ' ==\n');
regExp = new RegExp('\\n=+ ' + wikEdConfig['wikEd.config.text']['References'] + '? =+\\n', 'gi');
obj.plain = obj.plain.replace(regExp, '\n== ' + wikEdConfig['wikEd.config.text']['References'] + ' ==\n');
 
// add space after * # : ; (list) and after {| |- |+ | (table), spare #REDIRECT
Line 8,289 ⟶ 8,298:
 
// empty line before and after images
var regExp = new RegExp('^(\\[\\[(Image|File|' + wikEdConfig['wikEd.config.text']['wikicode Image'] + '|' + wikEdConfig['wikEd.config.text']['wikicode File'] + '):.*?\\]\\])', 'ig');
line = line.replace(regExp, '\n$1');
 
regExp = new RegExp('(\\[\\[(Image|File|' + wikEdConfig['wikEd.config.text']['wikicode Image'] + '|' + wikEdConfig['wikEd.config.text']['wikicode File'] + '):.*?(\\[\\[.*?\\]\\].*?)*\\]\\])$', 'ig');
line = line.replace(regExp, '$1\n');
 
Line 8,335 ⟶ 8,344:
 
// empty line before and after categories
var regExp = new RegExp('( |\\n)*(\\[\\[(Category|' + wikEdConfig['wikEd.config.text']['wikicode Category'] + ')\\s*:[^\\n]*?\\]\\])( |\\n)*', 'gi');
obj.plain = obj.plain.replace(regExp, '\n\n$2\n\n');
 
// categories not separated by empty lines (lookahead)
regExp = new RegExp('(\\[\\[(Category|' + wikEdConfig['wikEd.config.text']['wikicode Category'] + ')\\s*:[^\\n]*?\\]\\])\\n*(?=\\[\\[(Category|' + wikEdConfig['wikEd.config.text']['wikicode Category'] + ')\\s*:[^\\n]*?\\]\\])', 'gi');
obj.plain = obj.plain.replace(regExp, '$1\n');
 
Line 8,354 ⟶ 8,363:
 
//
// WikEdFixPunctwikEd.FixPunct: remove (or add) space before .,:;
//
 
windowwikEd.WikEdFixPunctFixPunct = function(obj) {
 
WikEdFixBasicwikEd.FixBasic(obj);
 
// protect punctuation in charents
Line 8,383 ⟶ 8,392:
);
 
if (wikEdConfig['wikEd.config.fixPunctFrench'] == true) {
obj.plain = obj.plain.replace(/(«) *()/g, '$1 ');
obj.plain = obj.plain.replace(/ *(»)/g, ' $1');
Line 8,402 ⟶ 8,411:
 
//
// WikEdFixUnicodewikEd.FixUnicode: fix unicode character representations
//
 
windowwikEd.WikEdFixUnicodeFixUnicode = function(obj) {
 
// replace supported chars: change decimal, hex, and character entities into actual char
for (var i = 0; i < wikEdSupportedCharswikEd.supportedChars.length; i ++) {
var replaceChar = String.fromCharCode(parseInt(wikEdSupportedCharswikEd.supportedChars[i][0], 16));
 
// decimal representation
var regExpStr = '&amp;#0*' + parseInt(wikEdSupportedCharswikEd.supportedChars[i][0], 16) + ';|';
 
// hex representation
regExpStr += '&amp;#x0*' + wikEdSupportedCharswikEd.supportedChars[i][0] + ';';
 
// case insensitive replace
Line 8,422 ⟶ 8,431:
 
// character entity representation
regExpStr = '&amp;' + wikEdSupportedCharswikEd.supportedChars[i][1] + ';';
 
// case sensitive replace
Line 8,430 ⟶ 8,439:
 
// replace unsupported chars in IE6: change decimal, hex, and chars into character entities
for (var i = 0; i < wikEdProblemCharswikEd.problemChars.length; i ++) {
var replaceChar = '&amp;' + wikEdProblemCharswikEd.problemChars[i][1] + ';';
 
// decimal representation
var regExpStr = '&amp;#0*' + parseInt(wikEdProblemCharswikEd.problemChars[i][0], 16) + ';|';
 
// hex representation
regExpStr += '&amp;#x0*' + wikEdProblemCharswikEd.problemChars[i][0] + ';';
 
// case insensitive replace
Line 8,444 ⟶ 8,453:
 
// actual character representation
regExpStr = '\\u' + wikEdProblemCharswikEd.problemChars[i][0];
 
// case sensitive replace
Line 8,452 ⟶ 8,461:
 
// replace special chars (spaces and invisible characters): change decimal, hex, and chars into character entities
for (var i = 0; i < wikEdSpecialCharswikEd.specialChars.length; i ++) {
var replaceChar = '&amp;' + wikEdSpecialCharswikEd.specialChars[i][1] + ';';
 
// decimal representation
var regExpStr = '&amp;#0*' + parseInt(wikEdSpecialCharswikEd.specialChars[i][0], 16) + ';|';
 
// hex representation
regExpStr += '&amp;#x0*' + wikEdSpecialCharswikEd.specialChars[i][0] + ';';
 
// case insensitive replace
Line 8,466 ⟶ 8,475:
 
// actual character representation
regExpStr = '\\u' + wikEdSpecialCharswikEd.specialChars[i][0];
 
// case sensitive replace
Line 8,482 ⟶ 8,491:
 
//
// WikEdFixRedirectCallwikEd.FixRedirectCall: parse link targets into wikEdRedirectsCachewikEd.redirectsCache object using AJAX API call
//
 
windowwikEd.WikEdFixRedirectCallFixRedirectCall = function(obj) {
 
// check if api is enabled
if ( ( (wikEdWikiGlobals['wikEd.wikiGlobals.wgEnableAPI'] != true) && (wikEdWikiGlobals['wikEd.wikiGlobals.wgEnableAPI'] != 'true') ) || (wikEdScriptURLwikEd.scriptURL == '') ) {
return;
}
 
// reset redirects object
wikEdRedirectsCachewikEd.redirectsCache = {};
 
// get wiki links
Line 8,513 ⟶ 8,522:
postFields['format'] = 'xml';
postFields['action'] = 'query';
if (wikEdEdittimewikEd.edittime != null) {
postFields['wikEdEdittime'] = wikEdEdittimewikEd.edittime;
}
if (wikEdEditTokenwikEd.editToken != null) {
postFields['wpEditToken'] = wikEdEditTokenwikEd.editToken;
}
var requestUrl = wikEdScriptURLwikEd.scriptURL + 'api.php';
var requestMethod = 'POST';
var overrideMimeType = undefined;//'text/html';
 
// make the ajax request
WikEdAjaxRequestwikEd.AjaxRequest(requestMethod, requestUrl, postFields, overrideMimeType, function(ajax, obj) {
 
// get response
Line 8,537 ⟶ 8,546:
// parse redirects
var i = 0;
wikEdRedirectsCachewikEd.redirectsCache.from = [];
wikEdRedirectsCachewikEd.redirectsCache.to = [];
wikEdRedirectsCachewikEd.redirectsCache.allFrom = '';
 
var regExpRedir = /<(r|n) .*?\bfrom=\"([^\">]*)\".*?\bto=\"([^\"]*)\".*?>/g;
while ( (regExpMatch = regExpRedir.exec(txt)) != null) {
wikEdRedirectsCachewikEd.redirectsCache.from[i] = regExpMatch[2];
wikEdRedirectsCachewikEd.redirectsCache.allFrom += i + '="' + regExpMatch[2] + '"';
wikEdRedirectsCachewikEd.redirectsCache.to[i] = regExpMatch[3];
i ++;
}
 
// recurse through chained normalizations and redirects
wikEdRedirectsCachewikEd.redirectsCache.toIndex = [];
for (var i = 0; i < wikEdRedirectsCachewikEd.redirectsCache.to.length; i ++) {
wikEdRedirectsCachewikEd.redirectsCache.toIndex[i] = WikEdResolveRedirectswikEd.ResolveRedirects(i);
}
 
Line 8,558 ⟶ 8,567:
 
// replace links
WikEdEditButtonwikEd.EditButton(null, 'wikEdFixRedirectReplace');
 
return;
Line 8,569 ⟶ 8,578:
 
//
// WikEdResolveRedirectswikEd.ResolveRedirects: recursively follow redirects, called from WikEdFixRedirectCallwikEd.FixRedirectCall Ajax handler
// uses wikEdRedirectsCachewikEd.redirectsCache.allFrom as a regExp hash
 
windowwikEd.WikEdResolveRedirectsResolveRedirects = function(i) {
var toRegExp = wikEdRedirectsCachewikEd.redirectsCache.to[i].replace(/(\W)/g, '\\$1');
var regExp = new RegExp('(\\d+)=\\"' + toRegExp + '\\"');
if ( (regExpMatch = wikEdRedirectsCachewikEd.redirectsCache.allFrom.match(regExp)) != null) {
i = WikEdResolveRedirectswikEd.ResolveRedirects( parseInt(regExpMatch[1], 10) );
}
return(i);
Line 8,583 ⟶ 8,592:
 
//
// WikEdFixRedirectReplacewikEd.FixRedirectReplace: replace redirects using wikEdRedirectsCachewikEd.redirectsCache object prepared in WikEdFixRedirectCallwikEd.FixRedirectCall()
//
 
windowwikEd.WikEdFixRedirectReplaceFixRedirectReplace = function(obj) {
 
if (wikEdRedirectsCachewikEd.redirectsCache.from == null) {
return;
}
 
// cycle through parsed redirects
if (wikEdRedirectsCachewikEd.redirectsCache.from != null) {
for (var i = 0; i < wikEdRedirectsCachewikEd.redirectsCache.from.length; i ++) {
 
// 1 1 2 23 # 3 4 |56 6 54
var regExp = new RegExp('\\[\\[\\s*(:?)\\s*(' + wikEdRedirectsCachewikEd.redirectsCache.from[i] + ')(\\s*#[^\\n\\[\\]\\|]*?)?(\\s*\\|((.|\\s)*?))?\\s*\\]\\]', 'g');
obj.plain = obj.plain.replace(regExp,
function(p, p1, p2, p3, p4, p5) {
var prefix = p1;
var article = p2;
var redirect = wikEdRedirectsCachewikEd.redirectsCache.to[ wikEdRedirectsCachewikEd.redirectsCache.toIndex[i] ];
var fragmentId = p3 || '';
var linkText = p5 || '';
Line 8,610 ⟶ 8,619:
 
// lowercase link target if link text starts with lowercase (main space only)
if (wikEdConfig['wikEd.config.articlesCaseSensitive'] == false) {
if (/:/.test(linkTarget) != true) {
if (article.charAt(0).toLowerCase() == article.charAt(0)) {
Line 8,650 ⟶ 8,659:
 
//
// WikEdFixMathwikEd.FixMath: math character fixer, originally from User:Omegatron
//
 
windowwikEd.WikEdFixMathFixMath = function(obj) {
 
WikEdFixBasicwikEd.FixBasic(obj);
 
// change only outside <math> </math> wikicode
Line 8,694 ⟶ 8,703:
 
//
// WikEdFixChemwikEd.FixChem: fix chemical formulas
//
 
windowwikEd.WikEdFixChemFixChem = function(obj) {
 
WikEdFixBasicwikEd.FixBasic(obj);
 
var realElements = 'H|He|Li|Be|B|C|N|O|F|Ne|Na|Mg|Al|Si|P|S|Cl|Ar|K|Ca|Sc|Ti|V|Cr|Mn|Fe|Co|Ni|Cu|Zn|Ga|Ge|As|Se|Br|Kr|Rb|Sr|Y|Zr|Nb|Mo|Tc|Ru|Rh|Pd|Ag|Cd|In|Sn|Sb|Te|I|Xe|Cs|Ba|Hf|Ta|W|Re|Os|Ir|Pt|Au|Hg|Tl|Pb|Bi|Po|At|Rn|Fr|Ra|Rf|Db|Sg|Bh|Hs|Mt|Ds|Rg|La|Ce|Pr|Nd|Pm|Sm|Eu|Gd|Tb|Dy|Ho|Er|Tm|Yb|Lu|Ac|Th|Pa|U|Np|Pu|Am|Cm|Bk|Cf|Es|Fm|Md|No|Lr';
Line 8,756 ⟶ 8,765:
 
//
// WikEdFixUnitswikEd.FixUnits: unit formatter
//
 
windowwikEd.WikEdFixUnitsFixUnits = function(obj) {
 
WikEdFixBasicwikEd.FixBasic(obj);
 
// convert into actual characters
Line 8,839 ⟶ 8,848:
 
//
// WikEdFixDasheswikEd.FixDashes: fixes dashes and minus signs
//
 
windowwikEd.WikEdFixDashesFixDashes = function(obj) {
 
WikEdFixBasicwikEd.FixBasic(obj);
 
// convert html character entities into actual dash characters
Line 8,871 ⟶ 8,880:
 
//
// WikEdFixHTMLwikEd.FixHTML: fix html to wikicode
//
 
windowwikEd.WikEdFixHTMLFixHTML = function(obj) {
 
WikEdFixBasicwikEd.FixBasic(obj);
 
// remove syntax highlighting
obj.html = obj.plain;
obj.html = obj.html.replace(/\n/g, '<br>');
WikEdRemoveHighlightingwikEd.RemoveHighlighting(obj);
 
// keep <br> in blockquote
Line 8,958 ⟶ 8,967:
 
// wikify, keep user added attribute
WikEdWikifyHTMLwikEd.WikifyHTML(obj, true);
 
// turn real html into visible html code
Line 8,971 ⟶ 8,980:
 
//
// WikEdFixCapswikEd.FixCaps: fix capitalizing of lists, linklists, images, headings
//
 
windowwikEd.WikEdFixCapsFixCaps = function(obj) {
 
WikEdFixBasicwikEd.FixBasic(obj);
 
// uppercase lists
Line 9,035 ⟶ 9,044:
 
// uppercase images
var regExp = new RegExp('(\\[\\[)(Image|File|' + wikEdConfig['wikEd.config.text']['wikicode Image'] + '|' + wikEdConfig['wikEd.config.text']['wikicode File'] + '):([\\wŠŒŽšœžŸÀ-ÖØ-öø-\\u0220\\u0222-\\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\\u0400-\\u0481\\u048a-\\u04ce\\u04d0-\\u04f5\\u04f8\\u04f9])([^\\n]*\\]\\])', 'igm');
obj.plain = obj.plain.replace(regExp,
function (p, p1, p2, p3, p4) {
Line 9,049 ⟶ 9,058:
 
//
// WikEdFixTyposwikEd.FixTypos: fix typos using the AutoWikiBrowser/RegExTypoFix list (.test() is not faster)
//
 
windowwikEd.WikEdFixTyposFixTypos = function(obj) {
 
WikEdFixBasicwikEd.FixBasic(obj);
 
// split into alternating plain text and {{lang}} template fragments (does not support nested templates)
Line 9,068 ⟶ 9,077:
 
// cycle through the RegExTypoFix rules
for (var i = 0; i < wikEdTypoRulesFindwikEd.typoRulesFind.length; i ++) {
 
// cycle through the fragments, jump over {{lang}} templates
for (var j = 0; j < fragment.length; j = j + 2) {
fragment[j] = fragment[j].replace(wikEdTypoRulesFindwikEd.typoRulesFind[i], wikEdTypoRulesReplacewikEd.typoRulesReplace[i]);
}
}
Line 9,084 ⟶ 9,093:
 
//
// WikEdFixAllwikEd.FixAll:
//
 
windowwikEd.WikEdFixAllFixAll = function(obj) {
WikEdFixBasicwikEd.FixBasic(obj);
WikEdFixUnicodewikEd.FixUnicode(obj);
WikEdFixHTMLwikEd.FixHTML(obj);
WikEdFixCapswikEd.FixCaps(obj);
return;
};
Line 9,097 ⟶ 9,106:
 
//
// WikEdRemoveElementswikEd.RemoveElements: remove elements by tag name
//
 
windowwikEd.WikEdRemoveElementsRemoveElements = function(tagNameArray) {
 
// cycle through the element names
for (var i = 0; i < tagNameArray.length; i ++) {
var elementArray = wikEdFrameDocumentwikEd.frameDocument.getElementsByTagName(tagNameArray[i]);
for (var j = 0; j < elementArray.length; j ++) {
elementArray[j].parentNode.removeChild(elementArray[j]);
Line 9,114 ⟶ 9,123:
 
//
// WikEdFindBoundarieswikEd.FindBoundaries: find word boundaries and line boundaries starting from selection.range
//
 
windowwikEd.WikEdFindBoundariesFindBoundaries = function(word, line, para, whole, selection) {
 
// get the start node and offset
Line 9,195 ⟶ 9,204:
regExp.lastIndex = 0;
if (regExp.exec(plain) != null) {
WikEdSetRangeStartwikEd.SetRangeStart(word.range, whole.plainNode[i], regExp.lastIndex);
foundWord = true;
}
Line 9,256 ⟶ 9,265:
var regExpArray = regExp.exec(plain);
if (regExpArray != null) {
WikEdSetRangeEndwikEd.SetRangeEnd(word.range, whole.plainNode[i], regExp.lastIndex - 1);
foundWord = true;
}
Line 9,281 ⟶ 9,290:
//
 
windowwikEd.WikEdRemoveHighlightingWikifyRemoveHighlightingWikify = function(obj, wikify) {
 
if ( (obj.html != '') || (wikify == true) ) {
 
// <div>...</div> to <br> for Safari, Chrome, WebKit
if ( (wikEdSafariwikEd.safari == true) || (wikEdChromewikEd.chrome == true) || (wikEdWebKitwikEd.webkit == true) ) {
var isRemove = [];
obj.html = obj.html.replace(/(<(\/?)div\b([^>]*)>)/g,
Line 9,313 ⟶ 9,322:
 
// remove syntax highlighting
WikEdRemoveHighlightingwikEd.RemoveHighlighting(obj);
 
// wikify, don't allow many attributes
if ( (obj.htmlCode == true) && (wikify != false) ) {
WikEdWikifyHTMLwikEd.WikifyHTML(obj, false);
}
}
Line 9,325 ⟶ 9,334:
 
//
// wikEd.WikifyHTML:
// WikEdWikifyHTML:
// obj.html contains the text to be wikified
// expects < > &lt; &gt; &amp; spaces instead of &nbsp; <br> (not \n)
Line 9,347 ⟶ 9,356:
// gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references
 
windowwikEd.WikEdWikifyHTMLWikifyHTML = function(obj, relaxed) {
 
var regExpStr;
Line 9,430 ⟶ 9,439:
obj.html = obj.html.replace(/<(span|div|p)\b *(.*?) *\/?>/gi,
function (p, p1, p2) {
return('<' + p1 + WikEdSanitizeAttributeswikEd.SanitizeAttributes(p1, p2, relaxed) + '>');
}
);
Line 9,501 ⟶ 9,510:
// {{TABLE}}
// convert html tables to wikicode
if (wikEdTableModewikEd.tableMode == false) {
 
// remove <thead> <tbody> <tfoot>
Line 9,527 ⟶ 9,536:
obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\x00)*<(td) +([^>]*)>(\s|<br\b[^>]*>|\x00)*()/gi,
function (p, p1, p2, p3, p4) {
p3 = WikEdSanitizeAttributeswikEd.SanitizeAttributes(p2, p3, relaxed);
if (p3 == '') {
return('\x00| ');
Line 9,541 ⟶ 9,550:
obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\x00)*<(th) +([^>]*)>(\s|<br\b[^>]*>|\x00)*()/gi,
function (p, p1, p2, p3, p4) {
p3 = WikEdSanitizeAttributeswikEd.SanitizeAttributes(p2, p3, relaxed);
if (p3 == '') {
return('\x00| ');
Line 9,555 ⟶ 9,564:
obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\x00)*<(tr) +([^>]*)>(\s|<br\b[^>]*>|\x00)*()/gi,
function (p, p1, p2, p3, p4) {
return('\x00|-' + WikEdSanitizeAttributeswikEd.SanitizeAttributes(p2, p3, relaxed) + '\x00');
}
);
Line 9,563 ⟶ 9,572:
obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\x00)*<(caption) +([^>]*)>(\s|<br\b[^>]*>|\x00)*()/gi,
function (p, p1, p2, p3, p4) {
p3 = WikEdSanitizeAttributeswikEd.SanitizeAttributes(p2, p3, relaxed);
if (p3 == '') {
return('\x00|+ ');
Line 9,584 ⟶ 9,593:
function (p, p1, p2) {
var table = '\x00\x00{|';
if (wikEdConfig['wikEd.config.wikifyTableParameters'] != '') {
table += ' ' + wikEdConfig['wikEd.config.wikifyTableParameters'];
}
else {
table += WikEdSanitizeAttributeswikEd.SanitizeAttributes(p1, p2);
}
return(table);
Line 9,598 ⟶ 9,607:
 
// for table mode override pasted table class // {{TABLE}}
else if (wikEdTableModewikEd.tableMode == true) {
obj.html = obj.html.replace(/(<table\b)([^>]*)(>)/gi,
function (p, p1, p2, p3) {
Line 9,617 ⟶ 9,626:
 
// line breaks (continued)
if (wikEdTableModewikEd.tableMode == true) {
obj.html = obj.html.replace(/<br\b[^>]*>[\n ]*()/gi, '\x00');
}
Line 9,647 ⟶ 9,656:
 
// get absolute path from ./index.php and ../../index.php
hrefValue = WikEdRelativeToAbsolutePathwikEd.RelativeToAbsolutePath(hrefValue);
 
// check for wiki article link and get parameters
// 1 2 article 2 3article 314 anchor 4 6 7 8 urlpar 87539 anchor 9
regExpStr = wikEdServerwikEd.server + '(' + wikEdArticlePathwikEd.articlePath + '([^\\"\\?#]+)|' + wikEdScriptwikEd.script + '\\?([^\\"#]*))(#[^\\"]*)?';
regExp = new RegExp(regExpStr);
regExpMatch = regExp.exec(hrefValue);
Line 9,756 ⟶ 9,765:
 
// category link
var regExp = new RegExp('^(Category|' + wikEdConfig['wikEd.config.text']['wikicode Category'] + ')\\s*:(.*)', 'i');
regExpMatch = regExp.exec(linkArticle);
if (regExpMatch != null) {
return('[[' + wikEdConfig['wikEd.config.text']['wikicode Category'] + ':' + regExpMatch[1].charAt(0).toUpperCase() + linkText.substr(1) + ']]');
}
 
Line 9,820 ⟶ 9,829:
 
// clean up MediaWiki category list
var regExp = new RegExp('<span\\b[^>]*>(\\[\\[(Category|' + wikEdConfig['wikEd.config.text']['wikicode Category'] + ')\\s*:[^\\]]+\\]\\])<\\/span>[\\s\\x00\\|]*', 'gi');
obj.html = obj.html.replace(regExp, '$1\x00');
 
Line 9,860 ⟶ 9,869:
imgLink = regExpMatch[1];
if (imgLink != '') {
return('[[' + wikEdConfig['wikEd.config.text']['wikicode Image'] + ':' + imgLink + imgWidth + imgAlt + ']]');
}
}
Line 9,905 ⟶ 9,914:
obj.html = obj.html.replace(/(<\/?)(\/?)(\w+)(.*?>)/g,
function (p, p1, p2, p3, p4) {
if (wikEdTableModewikEd.tableMode == true) {
if ( /^(table|tr|td|th|thead|tbody|tfoot|col|colgroup|caption)$/i.test(p3) == true) {
var tag = p1 + p2 + p3 + p4;
Line 9,931 ⟶ 9,940:
p3 = ' ' + p3;
}
return('<' + p1 + WikEdSanitizeAttributeswikEd.SanitizeAttributes(p1, p2, relaxed) + p3 + '>');
}
);
Line 10,006 ⟶ 10,015:
 
//
// wikEd.RelativeToAbsolutePath
// WikEdRelativeToAbsolutePath
// broken for editing article names containing "/", https://bugzilla.mozilla.org/show_bug.cgi?id=430910
 
windowwikEd.WikEdRelativeToAbsolutePathRelativeToAbsolutePath = function(relativePath, fullPath) {
 
var absolutePath = '';
Line 10,045 ⟶ 10,054:
 
//
// WikEdSanitizeAttributeswikEd.SanitizeAttributes: see Sanitizer.php
//
 
windowwikEd.WikEdSanitizeAttributesSanitizeAttributes = function(tag, attributes, relaxed) {
var common;
var tablealign;
Line 10,298 ⟶ 10,307:
 
//
// WikEdRemoveHighlightingwikEd.RemoveHighlighting: remove syntax highlighting in obj.html; sets obj.htmlCode if text contains html code
// expects <br> instead of \n
 
windowwikEd.WikEdRemoveHighlightingRemoveHighlighting = function(obj) {
 
// remove highlighting error messages
if (wikEdConfig['wikEd.config.highlightError'] == true) {
obj.html = obj.html.replace(/<span\b[^>]*?\bclass=\"wikEdConfig['highlightError']wikEdHighlightError\"[^>]*>.*?<\/span><!--wikEdConfig['highlightError']wikEdHighlightError-->/g, '');
}
 
Line 10,433 ⟶ 10,442:
 
//
// WikEdHighlightSyntaxInitwikEd.HighlightSyntaxInit: initialize regExp for syntax highlighting and regExp-to-number array, called during start up
//
 
windowwikEd.WikEdHighlightSyntaxInitHighlightSyntaxInit = function() {
 
wikEdParseObjwikEd.parseObj.matchToTag = [''];
wikEdParseObjwikEd.parseObj.regExpTags = null;
 
// main regular expression search definitions
Line 10,481 ⟶ 10,490:
['(^\\s*)#REDIRECT(?=\\s*\\[\\[)', 'redirect', 'block'], // redirect
 
['\\[\\[(?=(Image|File|' + wikEdConfig['wikEd.config.text']['wikicode Image'] + '|' + wikEdConfig['wikEd.config.text']['wikicode File'] + ')\\s*:\\s*)', 'file', 'open'], // file link start /// add translation
['\\[\\[', 'link', 'open'], // wikilink, category start with interlink detection
['\\]\\]', 'doubleCloseBracket', 'close'], // wikilink, category, file link, redirect end
Line 10,493 ⟶ 10,502:
['\\\'{2,}', 'boldItalic', 'multi'], // bold, italic
 
['__(' + wikEdMagicWordswikEd.magicWords + ')__', 'magic', 'block'], // magic words
['~{3,5}', 'signature', 'block'], // signature
['(^|\\n)\\-{4,}', 'hr', 'block'], // hr
Line 10,517 ⟶ 10,526:
 
// save tag information for matched parenthesis
wikEdParseObjwikEd.parseObj.matchToTag.push( [tag, tagClass, tagStart] );
 
// add empty entry for all sub parentheses, ignore (? and \(
Line 10,524 ⟶ 10,533:
if (regExpSub.charAt(pos) != '?') {
if (regExpSub.charAt(pos - 2) != '\\') {
wikEdParseObjwikEd.parseObj.matchToTag.push( [] );
}
}
Line 10,531 ⟶ 10,540:
 
// create regExp from or-joined parenthesized sub regExps
wikEdParseObjwikEd.parseObj.regExpTags = new RegExp(regExpStrings.join('|'), 'gi');
 
return;
Line 10,538 ⟶ 10,547:
 
//
// WikEdHighlightSyntaxwikEd.HighlightSyntax: highlight syntax in obj.html;
// existing highlighting must have been removed using WikEdRemoveHighlightingwikEd.RemoveHighlighting
// expects < > &lt; &gt; &amp; \xa0 instead of &nbsp; \n instead of <br>
// Known bugs:
Line 10,559 ⟶ 10,568:
 
 
windowwikEd.WikEdHighlightSyntaxHighlightSyntax = function(obj, noTimeOut) {
 
// start timer to cancel after wikEdConfig['wikEd.config.maxHighlightTime'] ms
var highlightStartDate = new Date();
 
Line 10,603 ⟶ 10,612:
'secondLastOpenTagFiltered': null,
 
'tableMode': wikEdTableModewikEd.tableMode
};
 
Line 10,612 ⟶ 10,621:
if (obj.whole == true) {
parseObj.whole = true;
wikEdLinkifyArraywikEd.linkifyArray = [];
wikEdReferenceArraywikEd.referenceArray = [];
wikEdTemplateArraywikEd.templateArray = [];
wikEdCharEntityArraywikEd.charEntityArray = [];
wikEd.HighlightNamedHideButtonsStylesheet = new wikEd.StyleSheet(wikEd.frameDocument);
WikEdHighlightNamedHideButtonsStylesheet = new WikEdStyleSheet(wikEdFrameDocument);
wikEdFilePreviewNowikEd.filePreviewNo = 0;
wikEdFilePreviewIdswikEd.filePreviewIds = [];
}
 
Line 10,640 ⟶ 10,649:
 
// show main parsing regExp:
// WED('regExp', wikEdParseObjwikEd.parseObj.regExpTags.toString().replace(/\x00/g, '<').replace(/\x01/g, '>').replace(/\n/g, '\\n'));
 
// cycle through text and find tags with a regexp search
wikEdParseObjwikEd.parseObj.regExpTags.lastIndex = 0;
while ( (parseObj.regExpMatch = wikEdParseObjwikEd.parseObj.regExpTags.exec(obj.html)) != null) {
 
// cancel highlighting after wikEdConfig['wikEd.config.maxHighlightTime'] ms
if (noTimeOut != true) {
var currentDate = new Date();
if ( (currentDate - highlightStartDate) > wikEdConfig['wikEd.config.maxHighlightTime']) {
break;
}
Line 10,665 ⟶ 10,674:
var tagClass = '';
var tagStart = '';
for (var i = 1; i < wikEdParseObjwikEd.parseObj.matchToTag.length; i ++) {
if (typeof(parseObj.regExpMatch[i]) != 'undefined') {
 
// get tag information
tag = wikEdParseObjwikEd.parseObj.matchToTag[i][0];
tagClass = wikEdParseObjwikEd.parseObj.matchToTag[i][1];
tagStart = wikEdParseObjwikEd.parseObj.matchToTag[i][2];
tagMatchParenth = i;
break;
Line 10,681 ⟶ 10,690:
 
// move regExp pointer back if chew-up regExp fragment has eaten into the start of an inline link
if (obj.html.charAt(wikEdParseObjwikEd.parseObj.regExpTags.lastIndex) == ':') {
var regExpMatch = /(https?|ftp|irc|gopher)$/.exec(tagMatch);
if (regExpMatch != null) {
wikEdParseObjwikEd.parseObj.regExpTags.lastIndex = wikEdParseObjwikEd.parseObj.regExpTags.lastIndex - regExpMatch[0].length;
}
}
Line 10,702 ⟶ 10,711:
// newlines close or end certain tags
if (leadingNewline == true) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('newline', 'close', tagFrom, 0, parseObj);
}
 
Line 10,719 ⟶ 10,728:
var errorText;
if (parseObj.lastOpenTag == 'link') {
errorText = wikEdConfig['wikEd.config.text']['wikEdErrorCodeInLinkName'];
}
else if (parseObj.lastOpenTag == 'template') {
errorText = wikEdConfig['wikEd.config.text']['wikEdErrorCodeInTemplName'];
}
else if (parseObj.lastOpenTag == 'parameter') {
errorText = wikEdConfig['wikEd.config.text']['wikEdErrorCodeInParamName'];
}
WikEdHighlightMarkLastOpenNodewikEd.HighlightMarkLastOpenNode(errorText, parseObj);
WikEdHighlightGetLevelwikEd.HighlightGetLevel(parseObj);
}
}
Line 10,748 ⟶ 10,757:
case 'signature':
case 'hr':
WikEdHighlightBuildTreewikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj);
break;
 
Line 10,757 ⟶ 10,766:
switch(parseObj.lastOpenTagFiltered) {
case 'italic':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('italic', 'close', tagFrom, tagLength, parseObj);
break;
case 'boldItalic':
WikEdHighlightTreeRedefinewikEd.HighlightTreeRedefine(parseObj.lastOpenNodeFiltered, 'italic', 3, 2, parseObj);
WikEdHighlightTreeRedefinewikEd.HighlightTreeRedefine(parseObj.secondlastOpenNodeFiltered, 'bold', 0, 3, parseObj);
WikEdHighlightGetLevelwikEd.HighlightGetLevel(parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('italic', 'close', tagFrom, tagLength, parseObj);
break;
default:
WikEdHighlightBuildTreewikEd.HighlightBuildTree('italic', 'open', tagFrom, tagLength, parseObj);
}
break;
Line 10,772 ⟶ 10,781:
switch(parseObj.lastOpenTagFiltered) {
case 'bold':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('bold', 'close', tagFrom, tagLength, parseObj);
break;
case 'boldItalic':
WikEdHighlightTreeRedefinewikEd.HighlightTreeRedefine(parseObj.lastOpenNodeFiltered, 'bold', 2, 3, parseObj);
WikEdHighlightTreeRedefinewikEd.HighlightTreeRedefine(parseObj.secondlastOpenNodeFiltered, 'italic', 0, 2, parseObj);
WikEdHighlightGetLevelwikEd.HighlightGetLevel(parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('bold', 'close', tagFrom, tagLength, parseObj);
break;
default:
WikEdHighlightBuildTreewikEd.HighlightBuildTree('bold', 'open', tagFrom, tagLength, parseObj);
}
break;
Line 10,788 ⟶ 10,797:
case 'bold':
if (parseObj.secondLastOpenTagFiltered == 'italic') {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('bold', 'close', tagFrom, 3, parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('italic', 'close', tagFrom + 3, 2, parseObj);
}
else {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('bold', 'close', tagFrom, 3, parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('italic', 'open', tagFrom + 3, 2, parseObj);
}
break;
case 'italic':
if (parseObj.secondLastOpenTagFiltered == 'bold') {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('italic', 'close', tagFrom, 2, parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('bold', 'close', tagFrom + 2, 3, parseObj);
}
else {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('italic', 'close', tagFrom, 2, parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('bold', 'open', tagFrom + 2, 3, parseObj);
}
break;
case 'boldItalic':
WikEdHighlightTreeRedefinewikEd.HighlightTreeRedefine(parseObj.secondlastOpenNodeFiltered, 'bold', 0, 3, parseObj);
WikEdHighlightTreeRedefinewikEd.HighlightTreeRedefine(parseObj.lastOpenNodeFiltered, 'italic', 3, 2, parseObj);
WikEdHighlightGetLevelwikEd.HighlightGetLevel(parseObj);
parseObj.lastOpenTag == 'italic'
WikEdHighlightBuildTreewikEd.HighlightBuildTree('italic', 'close', tagFrom, 2, parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('bold', 'close', tagFrom + 2, 3, parseObj);
break;
default:
WikEdHighlightBuildTreewikEd.HighlightBuildTree('boldItalic', 'open', tagFrom, tagLength, parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('boldItalic', 'open', tagFrom, tagLength, parseObj);
}
break;
default:
parseObj.tree.push( { 'start': tagFrom, 'tagLength': tagLength, 'type': 'error', 'left': wikEdConfig['wikEd.config.text']['wikEdErrorBoldItalic'] } );
break;
}
Line 10,839 ⟶ 10,848:
// open paramTempl
if (tagClass == 'open') {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(paramTemplTag, tagClass, tagFrom, tagLength, parseObj);
 
// add spare elements for later disambiguation
if (paramTemplTag == 'paramTempl') {
for (var pos = 2; pos < tagLength - 1; pos = pos + 2) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(paramTemplTag, tagClass, tagFrom, tagLength, parseObj);
}
}
Line 10,854 ⟶ 10,863:
// no opening tag, delegate error handling
if ( (parseObj.lastOpenNode == 0) || (parseObj.lastOpenNode == null) ) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(paramTemplTag, tagClass, tagFrom, tagLength, parseObj);
break;
}
var openNode = parseObj.tree[parseObj.lastOpenNodeFiltered];
if (openNode == null) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(paramTemplTag, tagClass, tagFrom, tagLength, parseObj);
break;
}
Line 10,869 ⟶ 10,878:
( (paramTemplTag == 'parameter') && (parseObj.lastOpenTagFiltered == 'parameterPiped') )
) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(paramTemplTag, tagClass, tagFrom, tagLength, parseObj);
}
 
Line 10,880 ⟶ 10,889:
 
// redefine ambiguous opening
WikEdHighlightTreeRedefinewikEd.HighlightTreeRedefine(parseObj.lastOpenNodeFiltered, paramTemplTag, openNode.tagLength - tagLength, tagLength, parseObj);
 
// adjust all ambiguous parents
Line 10,908 ⟶ 10,917:
'tagLength': node.tagLength,
'type': 'error',
'left': wikEdConfig['wikEd.config.text']['wikEdErrorTemplParam']
} );
redefinedTag = 'spare';
Line 10,924 ⟶ 10,933:
 
// redefine parent
WikEdHighlightTreeRedefinewikEd.HighlightTreeRedefine(nodeNo, redefinedTag, null, redefinedLength, parseObj);
 
// all further opening paramTempl tags are spare
Line 10,935 ⟶ 10,944:
nodeNo = node.parent;
}
WikEdHighlightGetLevelwikEd.HighlightGetLevel(parseObj);
 
// and close innermost tag
WikEdHighlightBuildTreewikEd.HighlightBuildTree(paramTemplTag, tagClass, tagFrom, tagLength, parseObj);
}
 
Line 10,947 ⟶ 10,956:
(openNode.tag == 'parameterPiped') ) && (tagLength >= openNode.tagLength)
) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(openNode.tag, tagClass, tagFrom, openNode.tagLength, parseObj);
wikEdParseObjwikEd.parseObj.regExpTags.lastIndex = wikEdParseObjwikEd.parseObj.regExpTags.lastIndex - tagLength + openNode.tagLength;
}
 
Line 10,961 ⟶ 10,970:
'tagLength': openNode.tagLength,
'type': 'error',
'left': wikEdConfig['wikEd.config.text']['wikEdErrorTemplParamAmbig']
} );
parseObj.tree.push( {
Line 10,967 ⟶ 10,976:
'tagLength': tagLength,
'type': 'error',
'left': wikEdConfig['wikEd.config.text']['wikEdErrorTemplParamAmbig']
} );
}
Line 10,977 ⟶ 10,986:
'tagLength': openNode.tagLength,
'type': 'error',
'left': wikEdConfig['wikEd.config.text']['wikEdErrorTemplParam']
} );
parseObj.tree.push( {
Line 10,983 ⟶ 10,992:
'tagLength': tagLength,
'type': 'error',
'left': wikEdConfig['wikEd.config.text']['wikEdErrorTemplParam']
} );
}
Line 10,996 ⟶ 11,005:
case 'caption':
if (parseObj.lastOpenTagFiltered == 'table') {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj);
}
break;
Line 11,002 ⟶ 11,011:
// wikilink
case 'link':
WikEdHighlightBuildTreewikEd.HighlightBuildTree(tag, tagClass, tagFrom, 2, parseObj);
break;
 
Line 11,019 ⟶ 11,028:
}
if (regExpMatch != null) {
wikEdParseObjwikEd.parseObj.regExpTags.lastIndex = tagFrom + regExpMatch[1].length;
tagMatch = regExpMatch[1];
tagLength = tagMatch.length;
Line 11,035 ⟶ 11,044:
var regExpMatch;
if ( (regExpMatch = /^(.*?)(\}\}|\|)(.*?)$/.exec(tagMatch)) != null) {
wikEdParseObjwikEd.parseObj.regExpTags.lastIndex = tagFrom + tagMatch[1].length;
tagMatch = regExpMatch[1];
tagLength = tagMatch.length;
Line 11,047 ⟶ 11,056:
var regExpMatch;
if ( (regExpMatch = /^(.*?)(\}\}|\|)(.*?)$/.exec(tagMatch)) != null) {
wikEdParseObjwikEd.parseObj.regExpTags.lastIndex = tagFrom + tagMatch[1].length;
tagMatch = regExpMatch[1];
tagLength = tagMatch.length;
Line 11,063 ⟶ 11,072:
var url = parseObj.regExpMatch[tagMatchParenth + 1];
var spaces = parseObj.regExpMatch[tagMatchParenth + 5];
WikEdHighlightBuildTreewikEd.HighlightBuildTree(tag, tagClass, tagFrom, 1, parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('externalURL', 'block', tagFrom + 1, url.length, parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('externalText', tagClass, tagFrom + 1 + url.length + spaces.length, 0, parseObj);
}
 
Line 11,079 ⟶ 11,088:
if (node != null) {
if (node.parent != null) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('externalText', tagClass, tagFrom, 0, parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj);
}
}
Line 11,087 ⟶ 11,096:
}
 
WikEdHighlightBuildTreewikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj);
break;
 
Line 11,094 ⟶ 11,103:
var htmlTag = parseObj.regExpMatch[tagMatchParenth + 1].toLowerCase();
if (/^(ref|references|sub|sup|u|s|p)$/.test(htmlTag) == true) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(htmlTag, tagClass, tagFrom, tagLength, parseObj);
}
else if (/^(table|tr|td|th|col|thead|tfoot|tbody|colgroup|caption|big|blockquote|center|code|del|div|font|ins|small|span|strike|tt|rb|rp|rt|ruby|nowiki|math|noinclude|includeonly|gallery|categorytree|charinsert|hiero|imagemap|inputbox|poem|source|syntaxhighlight|timeline)$/.test(htmlTag) == true) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(htmlTag, tagClass, tagFrom, tagLength, parseObj);
}
else {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('htmlUnknown', 'block', tagFrom, tagLength, parseObj);
}
break;
Line 11,108 ⟶ 11,117:
var htmlTag = parseObj.regExpMatch[tagMatchParenth + 1];
if (/^(references|ref|br|p)$/i.test(htmlTag) == true) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(htmlTag, tagClass, tagFrom, tagLength, parseObj);
}
else {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj);
}
break;
Line 11,118 ⟶ 11,127:
case 'pipeTemplateEnd':
if (parseObj.lastOpenTagFiltered == 'table') {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('table', 'close', tagFrom, 2, parseObj);
}
else {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('templateParam', 'block', tagFrom, 1, parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('template', 'close', tagFrom + 1, 2, parseObj);
}
break;
Line 11,129 ⟶ 11,138:
case 'doubleCloseBracket':
if (parseObj.lastOpenTagFiltered == 'file') {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(parseObj.lastOpenTagFiltered, tagClass, tagFrom, tagLength, parseObj);
}
else {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('link', tagClass, tagFrom, tagLength, parseObj);
}
break;
Line 11,140 ⟶ 11,149:
switch (parseObj.lastOpenTagFiltered) {
case 'table':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('cell', tagClass, tagFrom, tagLength, parseObj);
break;
case 'link':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('linkParam', tagClass, tagFrom, tagLength, parseObj);
break;
case 'file':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('fileParam', tagClass, tagFrom, tagLength, parseObj);
break;
case 'template':
case 'paramTempl':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('templateParam', tagClass, tagFrom, tagLength, parseObj);
break;
}
Line 11,159 ⟶ 11,168:
switch (parseObj.lastOpenTagFiltered) {
case 'table':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('cellSep', tagClass, tagFrom, tagLength, parseObj);
break;
case 'link':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('linkParam', tagClass, tagFrom, 1, parseObj);
break;
case 'file':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('fileParam', tagClass, tagFrom, 1, parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('fileParam', tagClass, tagFrom + 1, 1, parseObj);
break;
case 'template':
case 'paramTempl':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('templateParam', tagClass, tagFrom, 1, parseObj);
WikEdHighlightBuildTreewikEd.HighlightBuildTree('templateParam', tagClass, tagFrom + 1, 1, parseObj);
break;
}
Line 11,180 ⟶ 11,189:
switch (parseObj.lastOpenTagFiltered) {
case 'table':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('cellParam', tagClass, tagFrom, tagLength, parseObj);
break;
case 'link':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('linkParam', tagClass, tagFrom, tagLength, parseObj);
break;
case 'file':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('fileParam', tagClass, tagFrom, tagLength, parseObj);
break;
case 'template':
case 'paramTempl':///// check later for parameterPiped
WikEdHighlightBuildTreewikEd.HighlightBuildTree('templateParam', tagClass, tagFrom, tagLength, parseObj);
break;
case 'parameter':
WikEdHighlightBuildTreewikEd.HighlightBuildTree('parameterDefault', tagClass, tagFrom, tagLength, parseObj);
break;
}
Line 11,203 ⟶ 11,212:
// ignore template parameters preceeded with newline-spaces
if (parseObj.lastOpenTagFiltered == 'template') {
wikEdParseObjwikEd.parseObj.regExpTags.lastIndex = tagFrom + tagLength - parseObj.regExpMatch[tagMatchParenth + 3].length;
break;
}
Line 11,209 ⟶ 11,218:
 
// highlight line
WikEdHighlightBuildTreewikEd.HighlightBuildTree(tag, tagClass, tagFrom, tagLength, parseObj);
 
// highlight tag
WikEdHighlightBuildTreewikEd.HighlightBuildTree(tag + 'Tag', tagClass, tagFrom, parseObj.regExpMatch[tagMatchParenth + 2].length, parseObj);
 
// move text pointer after tag
wikEdParseObjwikEd.parseObj.regExpTags.lastIndex = tagFrom + tagLength - parseObj.regExpMatch[tagMatchParenth + 3].length;
break;
 
// newline, old
case 'newline':
WikEdHighlightBuildTreewikEd.HighlightBuildTree(tag, 'close', tagFrom, 0, parseObj);
break;
 
// unrecognized tag
default:
parseObj.tree.push( { 'start': tagFrom, 'tagLength': tagLength, 'type': 'error', 'left': wikEdConfig['wikEd.config.text']['wikEdErrorNoHandler'] } );
}
 
Line 11,239 ⟶ 11,248:
// mark remaining unmatched opening tags
while ( (parseObj.lastOpenNode != 0) && (parseObj.lastOpenNode != null) ) {
WikEdHighlightMarkLastOpenNodewikEd.HighlightMarkLastOpenNode(wikEdConfig['wikEd.config.text']['wikEdErrorNoClose'], parseObj);
}
}
Line 11,250 ⟶ 11,259:
var regExpAutoLink = /((PMID)[ \xa0\t]+(\d+))|((RFC)[ \xa0\t]+(\d+))|((RFC)[ \xa0\t]+(\d+))|((ISBN)[ \xa0\t]+((97(8|9)( |-)?)?(\d( |-)?){9}(\d|x)))/g;
while ( (regExpMatch = regExpAutoLink.exec(obj.html) ) != null) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree(regExpMatch[2] || regExpMatch[5] || regExpMatch[8] || regExpMatch[11], 'block', regExpMatch.index, regExpMatch[0].length, parseObj);
}
 
Line 11,256 ⟶ 11,265:
var regExpColorLight = /(\'|\")(aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|blanchedalmond|burlywood|chartreuse|coral|cornsilk|cyan|darkgray|darkgrey|darkkhaki|darkorange|darksalmon|darkseagreen|floralwhite|fuchsia|gainsboro|ghostwhite|gold|goldenrod|greenyellow|honeydew|hotpink|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightskyblue|lightsteelblue|lightyellow|lime|linen|magenta|mediumaquamarine|mediumspringgreen|mediumturquoise|mintcream|mistyrose|moccasin|navajowhite|oldlace|orange|palegoldenrod|palegreen|paleturquoise|papayawhip|peachpuff|peru|pink|plum|powderblue|salmon|sandybrown|seashell|silver|skyblue|snow|springgreen|tan|thistle|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen)(\1)/gi;
while ( (regExpMatch = regExpColorLight.exec(obj.html) ) != null) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('colorLight', 'block', regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);
}
var regExpColorDark = /(\'|\")(black|blue|blueviolet|brown|cadetblue|chocolate|cornflowerblue|crimson|darkblue|darkcyan|darkgoldenrod|darkgreen|darkmagenta|darkolivegreen|darkorchid|darkred|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|forestgreen|gray|green|grey|indianred|indigo|lightseagreen|lightslategray|lightslategrey|limegreen|maroon|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumvioletred|midnightblue|navy|olive|olivedrab|orangered|orchid|palevioletred|purple|red|rosybrown|royalblue|saddlebrown|seagreen|sienna|slateblue|slategray|slategrey|steelblue|teal|tomato)(\1)/g;
while ( (regExpMatch = regExpColorDark.exec(obj.html) ) != null) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('colorDark', 'block', regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);
}
 
Line 11,266 ⟶ 11,275:
var regExpColor3 = /(^|[^\/\w&])(#[0-9a-f]{3})(?=([^\d\w]|$))/gi;
while ( (regExpMatch = regExpColor3.exec(obj.html) ) != null) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('colorHex3', 'block', regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);
}
 
Line 11,272 ⟶ 11,281:
var regExpColor6 = /(^|[^\/\w&])(#[0-9a-f]{6})(?=([^\d\w]|$))/gi;
while ( (regExpMatch = regExpColor6.exec(obj.html) ) != null) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('colorHex6', 'block', regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);
}
 
Line 11,278 ⟶ 11,287:
var regExpColorDec = /\brgb\(\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}\s*\)/gi;
while ( (regExpMatch = regExpColorDec.exec(obj.html) ) != null) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('colorDec', 'block', regExpMatch.index, regExpMatch[0].length, parseObj);
}
 
// single character highlighting: spaces, dashes
var regExpCharSpaceDash = new RegExp('[' + wikEdCharHighlightingStrwikEd.charHighlightingStr + ']', 'g');
while ( (regExpMatch = regExpCharSpaceDash.exec(obj.html) ) != null) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('char', 'block', regExpMatch.index, regExpMatch[0].length, parseObj);
}
 
// control character highlighting
var regExpCharCtrl = new RegExp('[' + wikEdControlCharHighlightingStrwikEd.controlCharHighlightingStr + ']', 'g');
while ( (regExpMatch = regExpCharCtrl.exec(obj.html) ) != null) {
if (regExpMatch[0].charCodeAt(0) > 2) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('ctrl', 'block', regExpMatch.index, regExpMatch[0].length, parseObj);
}
}
Line 11,298 ⟶ 11,307:
var regExpCharEntities = /&(\w+);/g;
while ( (regExpMatch = regExpCharEntities.exec(obj.html) ) != null) {
if (wikEdCharEntitiesByNamewikEd.charEntitiesByName[ regExpMatch[1] ] != null) {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('charEntity', 'block', regExpMatch.index, regExpMatch[0].length, parseObj);
}
}
 
// merge wiki syntax in
WikEdHighlightAddHtmlwikEd.HighlightAddHtml(parseObj, obj);
 
// get file previews
if ( (wikEdConfig['wikEd.config.filePreview'] == true) && (wikEdFilePreviewRequestwikEd.filePreviewRequest != '') ) {
wikEd.AjaxPreview(wikEd.filePreviewRequest, wikEd.FilePreviewAjaxHandler);
WikEdAjaxPreview(wikEdFilePreviewRequest, WikEdFilePreviewAjaxHandler);
wikEdFilePreviewRequestwikEd.filePreviewRequest = '';
}
 
// merge html and plain text
WikEdHighlightMergeHtmlwikEd.HighlightMergeHtml(parseObj, obj);
 
// free up array
Line 11,324 ⟶ 11,333:
 
// remove comments
if (wikEdConfig['wikEd.config.removeHighlightComments'] == true) {
obj.html = obj.html.replace(/<!--wikEd[\w\/]+-->/g, '');
}
Line 11,333 ⟶ 11,342:
 
//
// WikEdHighlightTreeRedefinewikEd.HighlightTreeRedefine: redefine opening tag, for bold / italic and template / parameter
//
 
windowwikEd.WikEdHighlightTreeRedefineHighlightTreeRedefine = function(openNodeIndex, tag, tagFromDiff, tagLength, parseObj) {
 
if (tag != null) {
Line 11,353 ⟶ 11,362:
 
//
// WikEdHighlightBuildTreewikEd.HighlightBuildTree: build an array based tree structure of text elements
// tag info: text pos, text length, tag type (root, open, close, block, error)
// connectivity info: parent, firstChild, nextSibling, paired opening/closing (all array indexes)
 
windowwikEd.WikEdHighlightBuildTreeHighlightBuildTree = function(tag, tagClass, tagFrom, tagLength, parseObj) {
 
// show parameters:
Line 11,428 ⟶ 11,437:
 
// get new top and second-to-top nodes, ignoring unpaired p tags
WikEdHighlightGetLevelwikEd.HighlightGetLevel(parseObj);
}
 
Line 11,467 ⟶ 11,476:
'tagLength': tagLength,
'type': 'error',
'left': wikEdConfig['wikEd.config.text']['wikEdErrorNoOpen']
} );
}
Line 11,500 ⟶ 11,509:
(node.tag == 'boldItalic')
) {
WikEdHighlightMarkLastOpenNodewikEd.HighlightMarkLastOpenNode(wikEdConfig['wikEd.config.text']['wikEdErrorNewline'], parseObj);
WikEdHighlightGetLevelwikEd.HighlightGetLevel(parseObj);
}
nodeNo = node.parent;
Line 11,555 ⟶ 11,564:
nodeNo = node.parent;
node.type = 'error';
node.left = wikEdConfig['wikEd.config.text']['wikEdErrorNoClose'];
node.parent = null;
}
WikEdHighlightGetLevelwikEd.HighlightGetLevel(parseObj);
}
 
Line 11,569 ⟶ 11,578:
'tagLength': tagLength,
'type': 'error',
'left': wikEdConfig['wikEd.config.text']['wikEdErrorNoOpen']
} );
break;
Line 11,601 ⟶ 11,610:
 
// convert opening tag to error
WikEdHighlightMarkLastOpenNodewikEd.HighlightMarkLastOpenNode(wikEdConfig['wikEd.config.text']['wikEdErrorTemplHeading'], parseObj);
 
parseObj.tree.push( {
Line 11,607 ⟶ 11,616:
'tagLength': tagLength,
'type': 'error',
'left': wikEdConfig['wikEd.config.text']['wikEdErrorTemplHeading']
} );
break;
Line 11,638 ⟶ 11,647:
 
// get new top and second-to-top nodes, ignoring unpaired p tags
WikEdHighlightGetLevelwikEd.HighlightGetLevel(parseObj);
}
return;
Line 11,645 ⟶ 11,654:
 
//
// WikEdHighlightMarkLastOpenNodewikEd.HighlightMarkLastOpenNode: redefine last open node as an error, ignore p and spare, handle pipe subnodes
//
 
windowwikEd.WikEdHighlightMarkLastOpenNodeHighlightMarkLastOpenNode = function(errorText, parseObj) {
 
var lastOpenNode = parseObj.lastOpenNode;
Line 11,681 ⟶ 11,690:
 
//
// WikEdHighlightGetLevelwikEd.HighlightGetLevel: get current innermost (top) element name from parse stack, ignoring unpaired p tags
//
 
windowwikEd.WikEdHighlightGetLevelHighlightGetLevel = function(parseObj) {
 
parseObj.lastOpenTag = null;
Line 11,725 ⟶ 11,734:
 
//
// WikEdHighlightAddCodewikEd.HighlightAddCode: add actual highlighting html code to parse tree elements
//
 
windowwikEd.WikEdHighlightAddHtmlHighlightAddHtml = function(parseObj, obj) {
 
// cycle through currently existing parse array
Line 11,815 ⟶ 11,824:
// detect cross-namespace links
linkClass = 'wikEdLink';
if (wikEdPageNamespacewikEd.pageNamespace != null) {
if (ns != wikEdPageNamespacewikEd.pageNamespace) {
linkClass = 'wikEdLinkCrossNs';
}
Line 11,832 ⟶ 11,841:
// highlight interwiki
if (inter != '') {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('linkInter', 'block', tagFrom + 2, inter.length, parseObj);
}
 
// highlight namespace
if (ns != '') {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('linkNamespace', 'block', tagFrom + 2 + inter.length, ns.length, parseObj);
}
 
// linkify
var regExpCasing = new RegExp('(^|\\:)' + wikEdConfig['wikEd.config.text']['wikicode Category'] + '(\\:|$)', 'i');
nsClean = nsClean.replace(regExpCasing, '$1' + wikEdConfig['wikEd.config.text']['wikicode Category'] + '$2');
if (nsClean == ':') {
nsClean = '';
}
follow = ' ' + WikEdHighlightLinkifywikEd.HighlightLinkify(interClean + nsClean, article);
}
}
if (nsClean.toLowerCase() == wikEdConfig['wikEd.config.text']['wikicode Category'].toLowerCase() + ':') {
insertLeft = '<span class="wikEdCat"' + follow + '><span class="wikEdLinkTag">';
insertRight = '</span><!--wikEdLinkTag--><span class="wikEdCatName">';
Line 11,863 ⟶ 11,872:
break;
case 'file':
 
var previewCode = '';
var regExpFile = new RegExp('^\\s*(Image|File|' + wikEdConfig['wikEd.config.text']['wikicode Image'] + '|' + wikEdConfig['wikEd.config.text']['wikicode File'] + ')\\s*:\\s*([^\\|\\n]*)', 'i');
var regExpMatch = regExpFile.exec(innerPlain);
if (regExpMatch == null) {
Line 11,873 ⟶ 11,883:
else {
var file = regExpMatch[1] + ':' + regExpMatch[2];
filevar filePlain = fileregExpMatch[1] + ':' + regExpMatch[2].replace(/ <.*?>/g, '_');
filePlain = filePlain.replace(/ /g,'_');
 
// add file preview box
if (wikEdConfig['wikEd.config.filePreview'] == true) {
 
// get image size
var filePreviewSize = wikEdConfig['wikEd.config.filePreviewSize'];
var regExpMatch;
if ( (regExpMatch = /\|(\d+)px(\||$)/.exec(innerPlain)) != null) {
var size = parseInt(regExpMatch[1]);
if ( (size > 0) && (size < wikEdConfig['wikEd.config.filePreviewSize']) ) {
filePreviewSize = size;
}
Line 11,890 ⟶ 11,901:
// get image url and size from cache
var style = '';
var fileObj = wikEdFilePreviewCachewikEd.filePreviewCache['wikEd' + filefilePlain + filePreviewSize];
if (fileObj != null) {
var filePreviewHeight = filePreviewSize;
Line 11,906 ⟶ 11,917:
else {
style = 'display: none; height: ' + filePreviewSize + 'px; width: ' + filePreviewSize + 'px;';
wikEdFilePreviewRequestwikEd.filePreviewRequest += '\n' + filefilePlain + ' ' + filePreviewSize + ' [[' + file + '|' + filePreviewSize + 'px|' + filePreviewSize + 'x' + filePreviewSize + 'px]]\n';
wikEdFilePreviewIdswikEd.filePreviewIds[wikEdFilePreviewNowikEd.filePreviewNo] = filefilePlain + filePreviewSize;
}
previewCode = '<span class="wikEdFilePreview" id="wikEdFilePreview' + wikEdFilePreviewNowikEd.filePreviewNo + '" style="' + style + '" title="' + wikEdConfig['wikEd.config.text']['wikEdFilePreview'] + ' (' + filefilePlain + ')"></span><!--wikEdFilePreview-->';
wikEdFilePreviewNowikEd.filePreviewNo ++;
}
insertLeft += '<span class="wikEdFile" ' + WikEdHighlightLinkifywikEd.HighlightLinkify('', filefilePlain) + '><span class="wikEdFileTag">';
}
insertRight = previewCode + '</span><!--wikEdLinkTag--><span class="wikEdFileName">';
Line 11,922 ⟶ 11,933:
url = regExpMatch[0];
}
insertLeft = '<span class="wikEdURL" ' + WikEdHighlightLinkifywikEd.HighlightLinkify('', '', url) + '><span class="wikEdLinkTag">';
insertRight = '</span><!--wikEdLinkTag-->';
break;
Line 11,930 ⟶ 11,941:
case 'template':
 
// do not hide templates if it has no parameters or if it shorter than wikEdConfig['wikEd.config.templNoHideLength'] chars
if ( (innerPlain.indexOf('|') == -1) || (innerPlain.length < wikEdConfig['wikEd.config.templNoHideLength']) ) {
node.noHide = true;
}
Line 11,944 ⟶ 11,955:
 
// 12 mod 2 : 1 34 : 4 5 namespace 53 6 template 6 7 89 param 98
var regExpTempl = new RegExp('^\\s*((' + wikEdTemplModifierwikEd.templModifier + ')\\:\\s*)?((\\:\\s*)?([^\\:\\|\\[\\]\\{\\}\\s\\x00\\x01]*\\s*\\:))?\\s*([^\\:\\n\\x00\\x01\\{\\}]+?)\\s*(\\|((.|\\n)*?))?\\s*$', 'gi');
 
// detect parser variables and functions, might slow main regexp down
Line 11,975 ⟶ 11,986:
if (parserVar == false) {
if ( (template != '') && (ns == '') && (param == '') ) {
var regExpParserVar = new RegExp('^(' + wikEdParserVariableswikEd.parserVariables + wikEdParserVariablesRwikEd.parserVariablesR + ')$', '');
if ( (regExpMatch = regExpParserVar.exec(template)) != null) {
parserVar = true;
WikEdHighlightBuildTreewikEd.HighlightBuildTree('templateParserFunct', 'block', tagFrom + 2, innerPlain.length, parseObj);
}
}
Line 11,986 ⟶ 11,997:
if (parserVar == false) {
if ( (ns != '') && (template == 'R') ) {
var regExpParserVar = new RegExp('^(' + wikEdParserVariablesRwikEd.parserVariablesR + ')$', '');
if ( (regExpMatch = regExpParserVar.exec(ns.substr(0, ns.length - 1))) != null) {
parserVar = true;
WikEdHighlightBuildTreewikEd.HighlightBuildTree('templateParserFunct', 'block', tagFrom + 2, innerPlain.indexOf(':') + 1, parseObj);
}
}
Line 11,997 ⟶ 12,008:
if (parserVar == false) {
if ( (ns != '') && ( (param == '') || (param == 'R') ) ) {
var regExpParserVar = new RegExp('^(' + wikEdParserFunctionsRwikEd.parserFunctionsR + ')$', '');
if ( (regExpMatch = regExpParserVar.exec(ns.substr(0, ns.length - 1))) != null) {
parserVar = true;
WikEdHighlightBuildTreewikEd.HighlightBuildTree('templateParserFunct', 'block', tagFrom + 2, innerPlain.indexOf(':') + 1, parseObj);
}
}
Line 12,008 ⟶ 12,019:
if (parserVar == false) {
if (ns != '') {
var regExpParserVar = new RegExp('^(' + wikEdParserFunctionswikEd.parserFunctions + ')$', 'i');
if ( (regExpMatch = regExpParserVar.exec(ns.substr(0, ns.length - 1))) != null) {
parserVar = true;
WikEdHighlightBuildTreewikEd.HighlightBuildTree('templateParserFunct', 'block', tagFrom + 2, innerPlain.indexOf(':') + 1, parseObj);
}
}
Line 12,019 ⟶ 12,030:
if (parserVar == false) {
if (ns != '') {
var regExpParserVar = new RegExp('^(#(' + wikEdParserFunctionsHashwikEd.parserFunctionsHash + '))$', 'i');
if ( (regExpMatch = regExpParserVar.exec(ns.substr(0, ns.length - 1))) != null) {
parserVar = true;
WikEdHighlightBuildTreewikEd.HighlightBuildTree('templateParserFunct', 'block', tagFrom + 2, innerPlain.indexOf(':') + 1, parseObj);
}
}
Line 12,032 ⟶ 12,043:
// highlight modifier
if (mod != '') {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('templateModifier', 'block', tagFrom + 2, mod.length, parseObj);
}
 
// highlight namespace
if (ns != '') {
WikEdHighlightBuildTreewikEd.HighlightBuildTree('templateNamespace', 'block', tagFrom + 2 + mod.length, ns.length, parseObj);
}
 
Line 12,048 ⟶ 12,059:
// no Template: addition for subpage linking
if (template.indexOf('/') != 0) {
ns = wikEdConfig['wikEd.config.text']['wikicode Template'] + ':';
}
}
follow = ' ' + WikEdHighlightLinkifywikEd.HighlightLinkify(ns, template);
}
}
Line 12,057 ⟶ 12,068:
var hideClass = 'wikEdTempl';
if ( (template != '') && (parserVar == false) && (node.noHide != true) ) {
if (wikEdRefHidewikEd.refHide == true) {
 
// show first template immediately following a template or reference
Line 12,074 ⟶ 12,085:
}
}
insertLeft = '<span class="wikEdTemplContainer"><button class="' + hideButtonClass + wikEdTemplateArraywikEd.templateArray.length + '" title="' + wikEdConfig['wikEd.config.text']['wikEdTemplButtonTooltip'] + '"></button><!--wikEdTemplButton--></span><!--wikEdTemplContainer-->';
wikEdTemplateArraywikEd.templateArray.push( {'text': template, 'added': false} );
}
}
Line 12,146 ⟶ 12,157:
break;
case 'p':
insertLeft = '<span class="wikEdHtmlUnknown" title="' + wikEdConfig['wikEd.config.text']['wikEdErrorHtmlUnknown'] + '">';
pushRight = '</span><!--wikEdHtmlUnknown-->';
break;
Line 12,164 ⟶ 12,175:
if ( (regExpMatch = /(\bname\s*=\s*(\'|\"))([^\x01]+?)\2/i.exec(tagMatch)) != null) {
refName = regExpMatch[3];
WikEdHighlightBuildTreewikEd.HighlightBuildTree('refName', 'block', tagFrom + regExpMatch.index + regExpMatch[1].length, regExpMatch[3].length, parseObj);
}
else if ( (regExpMatch = /(\bname\s*=\s*)(\w+)/i.exec(tagMatch)) != null) {
refName = regExpMatch[2];
WikEdHighlightBuildTreewikEd.HighlightBuildTree('refName', 'block', tagFrom + regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);
}
if (wikEdRefHidewikEd.refHide == true) {
if (refName != '') {
insertLeft = '<span class="wikEdRefContainer"><button class="wikEdRefButton' + wikEdReferenceArraywikEd.referenceArray.length + '" title="' + wikEdConfig['wikEd.config.text']['wikEdRefButtonTooltip'] + '"></button><!--wikEdRefButton--></span><!--wikEdRefContainer-->';
wikEdReferenceArraywikEd.referenceArray.push( {'text': refName, 'added': false} );
}
else {
insertLeft = '<span class="wikEdRefContainer"><button class="wikEdRefButton" title="' + wikEdConfig['wikEd.config.text']['wikEdRefButtonTooltip'] + '"></button><!--wikEdRefButton--></span><!--wikEdRefContainer-->';
}
}
Line 12,189 ⟶ 12,200:
case 'heading':
var heading = innerPlain.replace(/^\s+|\s+$/g, '');
if ( (heading == wikEdConfig['wikEd.config.text']['See also']) || (heading == wikEdConfig['wikEd.config.text']['References']) || (heading == wikEdConfig['wikEd.config.text']['External links']) ) {
insertLeft = '<span class="wikEdHeadingWP">';
}
Line 12,334 ⟶ 12,345:
break;
case 'p':
insertLeft = '<span class="wikEdHtmlUnknown" title="' + wikEdConfig['wikEd.config.text']['wikEdErrorHtmlUnknown'] + '">';
pushRight = '</span><!--wikEdHtmlUnknown-->';
break;
Line 12,378 ⟶ 12,389:
url = regExpMatch[0];
}
insertLeft = '<span class="wikEdURLName" ' + WikEdHighlightLinkifywikEd.HighlightLinkify('', '', url) + '>';
pushRight = '</span><!--wikEdURLName-->';
break;
Line 12,403 ⟶ 12,414:
idNumber = regExpMatch[0];
}
insertLeft = '<span class="wikEdPMID" ' + WikEdHighlightLinkifywikEd.HighlightLinkify('', '', 'http://www.ncbi.nlm.nih.gov/pubmed/' + idNumber) + '>';
insertRight = '</span><!--wikEdPMID-->';
break;
Line 12,412 ⟶ 12,423:
idNumber = regExpMatch[0].replace(/\D/g, '');
}
insertLeft = '<span class="wikEdISBN" ' + WikEdHighlightLinkifywikEd.HighlightLinkify('', 'Special:BookSources/' + idNumber) + '>';
pushRight = '</span><!--wikEdISBN-->';
break;
Line 12,421 ⟶ 12,432:
idNumber = regExpMatch[0].replace(/\D/g, '');
}
insertLeft = '<span class="wikEdISBN" ' + WikEdHighlightLinkifywikEd.HighlightLinkify('', '', 'http://tools.ietf.org/html/rfc' + idNumber) + '>';
pushRight = '</span><!--wikEdISBN-->';
break;
Line 12,429 ⟶ 12,440:
break;
case 'signature':
var title = wikEdConfig['wikEd.config.text']['wikEdSignature' + tagLength];
insertLeft = '<span class="wikEdSignature" title="' + title + '">';
insertRight = '</span><!--wikEdSignature-->';
Line 12,476 ⟶ 12,487:
break;
case 'htmlUnknown':
insertLeft = '<span class="wikEdHtmlUnknown" title="' + wikEdConfig['wikEd.config.text']['wikEdErrorHtmlUnknown'] + '">';
pushRight = '</span><!--wikEdHtmlUnknown-->';
break;
Line 12,484 ⟶ 12,495:
if ( (regExpMatch = /(\bname\s*=\s*(\'|\"))([^\x01]+?)\2/i.exec(tagMatch)) != null) {
refName = regExpMatch[3];
WikEdHighlightBuildTreewikEd.HighlightBuildTree('refName', 'block', tagFrom + regExpMatch.index + regExpMatch[1].length, regExpMatch[3].length, parseObj);
}
else if ( (regExpMatch = /(\bname\s*=\s*)(\w+)/i.exec(tagMatch)) != null) {
refName = regExpMatch[2];
WikEdHighlightBuildTreewikEd.HighlightBuildTree('refName', 'block', tagFrom + regExpMatch.index + regExpMatch[1].length, regExpMatch[2].length, parseObj);
}
if (wikEdRefHidewikEd.refHide == true) {
if (refName != '') {
insertLeft = '<span class="wikEdRefContainer"><button class="wikEdRefButton' + wikEdReferenceArraywikEd.referenceArray.length + '" title="' + wikEdConfig['wikEd.config.text']['wikEdRefButtonTooltip'] + '"></button><!--wikEdRefButton--></span><!--wikEdRefContainer-->';
wikEdReferenceArraywikEd.referenceArray.push( {'text': refName + ' ↑', 'added': false} );
}
else {
insertLeft = '<span class="wikEdRefContainer"><button class="wikEdRefButton" title="' + wikEdConfig['wikEd.config.text']['wikEdRefButtonTooltip'] + '"></button><!--wikEdRefButton--></span><!--wikEdRefContainer-->';
}
}
Line 12,632 ⟶ 12,643:
break;
case 'ctrl':
insertLeft = '<span class="wikEdCtrl" title="' + wikEdControlCharHighlightingwikEd.controlCharHighlighting[tagMatch.charCodeAt(0).toString()] + '">';
insertRight = '</span><!--wikEdCtrl-->';
break;
case 'char':
var titleClass = wikEdCharHighlightingwikEd.charHighlighting[tagMatch.charCodeAt(0).toString()];
insertLeft = '<span class="' + titleClass + '" title="' + titleClass + '">';
insertRight = '</span><!--' + titleClass + '-->';
Line 12,642 ⟶ 12,653:
case 'charEntity':
var regExpMatch = /&(\w+);/i.exec(tagMatch);
var character = wikEdCharEntitiesByNamewikEd.charEntitiesByName[ regExpMatch[1] ];
if (character != null) {
if (wikEdRefHidewikEd.refHide == true) {
insertLeft = '<span class="wikEdCharEntityContainer"><button class="wikEdCharEntityButton' + wikEdCharEntityArraywikEd.charEntityArray.length + '" title="' + wikEdConfig['wikEd.config.text']['wikEdCharEntityButtonTooltip'] + '"></button><!--wikEdCharEntityButton--></span><!--wikEdCharEntityContainer-->';
wikEdCharEntityArraywikEd.charEntityArray.push( {'text': character, 'added': false} );
}
insertLeft += '<span class="wikEdCharEntity">';
Line 12,659 ⟶ 12,670:
case 'error':
insertLeft = '<span class="wikEdError" title="' + node.left + '">';
if (wikEdConfig['wikEd.config.highlightError'] == true) {
insertLeft += '<span class="wikEdHighlightError">' + node.left + '</span><!--wikEdHighlightError-->';
}
Line 12,706 ⟶ 12,717:
 
//
// WikEdHighlightMergeHtmlwikEd.HighlightMergeHtml: merge parse tree highlighting html code with article text
//
 
windowwikEd.WikEdHighlightMergeHtmlHighlightMergeHtml = function(parseObj, obj) {
 
if (parseObj.tree.length <= 1) {
Line 12,788 ⟶ 12,799:
 
//
// WikEdHighlightLinkifywikEd.HighlightLinkify: prepare the span tag parameters for ctrl-click opening of highlighted links
//
 
windowwikEd.WikEdHighlightLinkifyHighlightLinkify = function(linkPrefix, linkTitle, linkUrl) {
 
if (wikEdConfig['wikEd.config.linkify'] != true) {
return('');
}
Line 12,812 ⟶ 12,823:
 
// remove control chars
var regExp = new RegExp('[' + wikEdControlCharHighlightingStrwikEd.controlCharHighlightingStr + '\t\n\r]', 'g');
linkPrefix = linkPrefix.replace(regExp, '');
linkTitle = linkTitle.replace(regExp, '');
Line 12,826 ⟶ 12,837:
linkTitle = linkTitle.replace(/^:+ *()/, '');
linkTitle = linkTitle.replace(/ +/g, '_');
 
linkName = linkPrefix + linkTitle;
 
// character accentuation for Esperanto, see [[Help:Special_characters#Esperanto]]
if (wikEdWikiGlobals['wikEd.wikiGlobals.wgContentLanguage'] == 'eo') {
linkTitle = linkTitle.replace(/([cghjsu])(x+)/gi,
function (p, p1, p2) {
Line 12,855 ⟶ 12,868:
// Wiktionary differentiates between lower and uppercased titles, interwiki should not be uppercased
if (subpage == true) {
linkUrl = linkPrefix + wikEdPageNamewikEd.pageName + linkTitle;
}
else {
linkUrl = linkPrefix + linkTitle;
}
 
linkUrl = encodeURI(linkUrl);
linkUrl = linkUrl.replace(/%25(\d\d)/g, '%$1');
linkUrl = linkUrl.replace(/\'/g, '%27');
linkUrl = linkUrl.replace(/#/g, '%23');
if (wikEdWikiGlobals['wgArticlePath']wikEd.config.LinkifyArticlePath =!= null) {
linkUrl = ''wikEd.config.LinkifyArticlePath.replace(/\$1/, linkUrl);
}
else if (wikEd.wikiGlobals.wgArticlePath != null){
linkUrl = wikEd.wikiGlobals.wgArticlePath.replace(/\$1/, linkUrl);
}
else {
linkUrl = wikEdWikiGlobals['wgArticlePath'].replace(/\$1/, linkUrl);
linkName = linkPrefix + linkTitle;
}
}
Line 12,888 ⟶ 12,902:
var linkPopup = linkName;
if (subpage == true) {
linkPopup = wikEdPageNamewikEd.pageName + linkPopup;
}
linkPopup = linkPopup.replace(/</g, '&lt;');
Line 12,896 ⟶ 12,910:
if (linkUrl != '') {
var titleClick;
if (wikEdPlatformwikEd.platform == 'mac') {
titleClick = wikEdConfig['wikEd.config.text']['followLinkMac'];
}
else {
titleClick = wikEdConfig['wikEd.config.text']['followLink'];
}
linkParam += 'id="wikEdLinkify' + wikEdLinkifyArraywikEd.linkifyArray.length + '" title="' + linkPopup + ' ' + titleClick + '"';
wikEdLinkifyArraywikEd.linkifyArray.push(linkUrl);
}
return(linkParam);
Line 12,910 ⟶ 12,924:
 
//
// WikEdUpdateTextareawikEd.UpdateTextarea: copy frame content to textarea
//
 
windowwikEd.WikEdUpdateTextareaUpdateTextarea = function() {
 
// remove dynamically inserted nodes by other scripts
wikEd.CleanNodes(wikEd.frameDocument);
WikEdCleanNodes(wikEdFrameDocument);
 
// get frame content
var obj = {};
obj.html = wikEdFrameBodywikEd.frameBody.innerHTML;
 
// remove trailing blanks and newlines at end of text
Line 12,929 ⟶ 12,943:
 
// textify so that no html formatting is submitted
WikEdTextifywikEd.Textify(obj);
obj.plain = obj.plain.replace(/&nbsp;|&#160;|\xa0/g, ' ');
obj.plain = obj.plain.replace(/&lt;/g, '<');
Line 12,936 ⟶ 12,950:
 
// copy to textarea
wikEdTextareawikEd.textarea.value = obj.plain;
 
// remember frame scroll position
wikEdFrameScrollTopwikEd.frameScrollTop = wikEdFrameBodywikEd.frameBody.scrollTop;
 
return;
Line 12,946 ⟶ 12,960:
 
//
// WikEdUpdateFramewikEd.UpdateFrame: copy textarea content to frame
//
 
windowwikEd.WikEdUpdateFrameUpdateFrame = function() {
 
// get textarea content
var obj = {};
obj.html = wikEdTextareawikEd.textarea.value;
obj.html = obj.html.replace(/&/g, '&amp;');
obj.html = obj.html.replace(/>/g, '&gt;');
Line 12,962 ⟶ 12,976:
 
// highlight the syntax
if (wikEdHighlightSyntaxwikEd.highlightSyntax == true) {
obj.whole = true;
WikEdHighlightSyntaxwikEd.HighlightSyntax(obj);
}
 
Line 12,982 ⟶ 12,996:
 
// select the whole text after replacing the whole text and scroll to same height
if (wikEdMSIEwikEd.msie == true) {
 
}
else {
obj.sel = WikEdGetSelectionwikEd.GetSelection();
WikEdRemoveAllRangeswikEd.RemoveAllRanges(obj.sel);
}
 
// insert content into empty frame
if ( (wikEdFrameBodywikEd.frameBody.firstChild == null) || (/^<br[^>]*>\s*$/.test(wikEdFrameBodywikEd.frameBody.innerHTML) == true) ) {
wikEdFrameBodywikEd.frameBody.innerHTML = obj.html;
}
 
// insert content into frame, preserve history
else {
var range = wikEdFrameDocumentwikEd.frameDocument.createRange();
range.setStartBefore(wikEdFrameBodywikEd.frameBody.firstChild);
range.setEndAfter(wikEdFrameBodywikEd.frameBody.lastChild);
obj.sel.addRange(range);
 
Line 13,005 ⟶ 13,019:
var scrollOffset = window.pageYOffset || document.body.scrollTop;
if (obj.html != '') {
WikEdFrameExecCommandwikEd.FrameExecCommand('inserthtml', obj.html);
}
else {
WikEdFrameExecCommandwikEd.FrameExecCommand('delete');
}
window.scroll(0, scrollOffset);
WikEdRemoveAllRangeswikEd.RemoveAllRanges(obj.sel);
 
// scroll to previous position
if (wikEdFrameScrollTopwikEd.frameScrollTop != null) {
wikEdFrameBodywikEd.frameBody.scrollTop = wikEdFrameScrollTopwikEd.frameScrollTop;
}
}
wikEdFrameScrollTopwikEd.frameScrollTop = null;
 
// add event handlers and labels
if (wikEdHighlightSyntaxwikEd.highlightSyntax == true) {
 
// name ref and template buttons
wikEd.HighlightNamedHideButtons();
WikEdHighlightNamedHideButtons();
 
// add event handlers to unhide refs and templates
wikEd.HideAddHandlers();
WikEdHideAddHandlers();
 
// add event handlers to make highlighted frame links ctrl-clickable
wikEd.LinkifyAddHandlers();
WikEdLinkifyAddHandlers();
}
 
Line 13,038 ⟶ 13,052:
 
//
// WikEdKeyHandlerwikEd.KeyHandler: event handler for keydown events in main document and frame
// detects emulated accesskey and traps enter in find/replace input elements
//
 
windowwikEd.WikEdKeyHandlerKeyHandler = function(event) {
 
// event compatibility fixes
event = WikEdEventwikEd.EventWrapper(event, this);
if (event == null) {
return;
}
 
if (wikEdUseWikEdwikEd.useWikEd == true) {
 
// trap enter in find/replace input elements
Line 13,058 ⟶ 13,072:
event.stopPropagation();
if (event.shiftKey == true) {
WikEdEditButtonwikEd.EditButton(null, 'wikEdFindPrev');
}
else if (event.ctrlKey == true) {
WikEdEditButtonwikEd.EditButton(null, 'wikEdFindAll');
}
else {
WikEdEditButtonwikEd.EditButton(null, 'wikEdFindNext');
}
}
Line 13,071 ⟶ 13,085:
event.stopPropagation();
if (event.shiftKey == true) {
WikEdEditButtonwikEd.EditButton(null, 'wikEdReplacePrev');
}
else if (event.ctrlKey == true) {
WikEdEditButtonwikEd.EditButton(null, 'wikEdReplaceAll');
}
else {
WikEdEditButtonwikEd.EditButton(null, 'wikEdReplaceNext');
}
}
Line 13,086 ⟶ 13,100:
 
// get wikEd button id from keycode
var buttonId = wikEdButtonKeyCodewikEd.buttonKeyCode[event.keyCode];
if (buttonId != null) {
event.preventDefault();
Line 13,094 ⟶ 13,108:
var obj = document.getElementById(buttonId);
objId = obj.id;
eval(wikEdEditButtonHandlerwikEd.editButtonHandler[buttonId]);
}
}
Line 13,103 ⟶ 13,117:
 
//
// WikEdFrameExecCommandwikEd.FrameExecCommand: wrapper for execCommand method
//
 
windowwikEd.WikEdFrameExecCommandFrameExecCommand = function(command, option) {
 
if (typeof(wikEdFrameDocumentwikEd.frameDocument.execCommand) == 'function') {
wikEdFrameDocumentwikEd.frameDocument.execCommand(command, false, option);
}
 
// MSIE workaround, breaks the undo history
else if (command == 'inserthtml') {
wikEdFrameDocumentwikEd.frameDocument.selection.createRange().pasteHTML(option);
}
return;
Line 13,121 ⟶ 13,135:
 
//
// WikEdFindAheadwikEd.FindAhead: find-as-you-type, event handler for find field, supports insensitive and regexp settings
//
 
windowwikEd.WikEdFindAheadFindAhead = function() {
 
if (WikEdGetAttributewikEd.GetAttribute(wikEdFindAheadwikEd.findAhead, 'checked') == 'true') {
 
// get the find text
var findText = wikEdFindTextwikEd.findText.value;
if (findText == '') {
return;
Line 13,135 ⟶ 13,149:
 
// remember input field selection
var findTextSelectionStart = wikEdFindTextwikEd.findText.selectionStart;
var findTextSelectionEnd = wikEdFindTextwikEd.findText.selectionEnd;
 
// remember frame selection
var sel = WikEdGetSelectionwikEd.GetSelection();
var range = sel.getRangeAt(sel.rangeCount - 1).cloneRange();
var rangeClone = range.cloneRange();
var scrollTop = wikEdFrameBodywikEd.frameBody.scrollTop;
 
// collapse selection to the left
WikEdRemoveAllRangeswikEd.RemoveAllRanges(sel);
range.collapse(true);
range = sel.addRange(range);
Line 13,153 ⟶ 13,167:
 
// get the replace text
var replaceText = wikEdInputElementwikEd.inputElement['replace'].value;
 
// get insensitive and regexp button states
var regExpChecked = WikEdGetAttributewikEd.GetAttribute(wikEdRegExpwikEd.regExp, 'checked');
var caseSensitiveChecked = WikEdGetAttributewikEd.GetAttribute(wikEdCaseSensitivewikEd.caseSensitive, 'checked');
 
// get case sensitive setting
Line 13,172 ⟶ 13,186:
 
// parameters: obj, findText, caseSensitive, backwards, wrap, useRegExp
found = WikEdFindwikEd.Find(obj, findText, caseSensitive, false, true, useRegExp);
 
// restore original frame selection
if (found == false) {
wikEdFrameBodywikEd.frameBody.scrollTop = scrollTop;
WikEdRemoveAllRangeswikEd.RemoveAllRanges(sel);
sel.addRange(rangeClone);
}
else {
WikEdRemoveAllRangeswikEd.RemoveAllRanges(obj.sel);
obj.sel.addRange(obj.changed.range);
 
// scroll to selection
WikEdScrollToSelectionwikEd.ScrollToSelection();
}
}
 
// restore input field selection (needed for FF 3.6)
wikEdFindTextwikEd.findText.select();
wikEdFindTextwikEd.findText.setSelectionRange(findTextSelectionStart, findTextSelectionEnd);
 
return;
Line 13,198 ⟶ 13,212:
 
//
// WikEdMainSwitchwikEd.MainSwitch: click handler for program logo
//
 
windowwikEd.WikEdMainSwitchMainSwitch = function() {
 
// disable function if browser is incompatible
if (wikEdBrowserNotSupportedwikEd.browserNotSupported == true) {
return;
}
 
// enable wikEd
if (wikEdDisabledwikEd.disabled == true) {
wikEdDisabledwikEd.disabled = false;
WikEdSetPersistentwikEd.SetPersistent('wikEdDisabled', '0', 0, '/');
 
// turn rich text frame on
if (wikEdTurnedOnwikEd.turnedOn == false) {
 
// setup wikEd
WikEdTurnOnwikEd.TurnOn(false);
}
else {
WikEdSetLogowikEd.SetLogo();
var useWikEd = false;
if (WikEdGetAttributewikEd.GetAttribute(document.getElementById('wikEdUseWikEd'), 'checked') == 'true') {
useWikEd = true;
}
WikEdSetEditAreawikEd.SetEditArea(useWikEd);
wikEdUseWikEdwikEd.useWikEd = useWikEd;
if (wikEdUseWikEdwikEd.useWikEd == true) {
WikEdUpdateFramewikEd.UpdateFrame();
}
wikEdButtonsWrapperwikEd.buttonsWrapper.style.display = 'block';
wikEdButtonBarPreviewwikEd.buttonBarPreview.style.display = 'block';
if (wikEdButtonBarJumpwikEd.buttonBarJump != null) {
wikEdButtonBarJumpwikEd.buttonBarJump.style.display = 'block';
}
 
// run scheduled custom functions
WikEdExecuteHookwikEd.ExecuteHook(wikEdConfig['wikEd.config.onHook']);
}
}
Line 13,243 ⟶ 13,257:
// disable wikEd
else {
WikEdSetPersistentwikEd.SetPersistent('wikEdDisabled', '1', 0, '/');
if (wikEdTurnedOnwikEd.turnedOn == false) {
wikEdUseWikEdwikEd.useWikEd = false;
wikEdDisabledwikEd.disabled = true;
WikEdSetLogowikEd.SetLogo();
}
else {
if (wikEdFullScreenModewikEd.fullScreenMode == true) {
WikEdFullScreenwikEd.FullScreen(false);
}
 
// turn classic textarea on
if (wikEdUseWikEdwikEd.useWikEd == true) {
WikEdUpdateTextareawikEd.UpdateTextarea();
}
WikEdSetEditAreawikEd.SetEditArea(false);
 
// reset textarea dimensions
wikEdTextareawikEd.textarea.style.height = (wikEdTextareaOffsetHeightInitialwikEd.textareaOffsetHeightInitial - wikEdFrameBorderHeightwikEd.frameBorderHeight) + 'px';
wikEdTextareawikEd.textarea.style.width = '100%';
 
wikEdFrameHeightwikEd.frameHeight = (wikEdTextareaOffsetHeightInitialwikEd.textareaOffsetHeightInitial - wikEdFrameBorderHeightwikEd.frameBorderHeight) + 'px';
wikEdFrameWidthwikEd.frameWidth = (wikEdEditorWrapperwikEd.editorWrapper.clientWidth - wikEdFrameBorderWidthwikEd.frameBorderWidth) + 'px';
wikEdFramewikEd.frame.style.height = wikEdFrameHeightwikEd.frameHeight;
wikEdFramewikEd.frame.style.width = wikEdFrameWidthwikEd.frameWidth;
 
wikEdButtonsWrapperwikEd.buttonsWrapper.style.display = 'none';
wikEdButtonBarPreviewwikEd.buttonBarPreview.style.display = 'none';
wikEdLocalPrevWrapperwikEd.localPrevWrapper.style.display = 'none';
wikEdPreviewBoxwikEd.previewBox.style.height = 'auto';
if (wikEdButtonBarJumpwikEd.buttonBarJump != null) {
wikEdButtonBarJumpwikEd.buttonBarJump.style.display = 'none';
}
 
wikEdUseWikEdwikEd.useWikEd = false;
wikEdDisabledwikEd.disabled = true;
WikEdSetLogowikEd.SetLogo();
 
// run scheduled custom functions
WikEdExecuteHookwikEd.ExecuteHook(wikEdConfig['wikEd.config.offHook']);
}
}
Line 13,290 ⟶ 13,304:
 
//
// WikEdFullScreenwikEd.FullScreen: change to fullscreen edit area or back to normal view
//
 
windowwikEd.WikEdFullScreenFullScreen = function(fullscreen, notFrame) {
 
// hide or show elements
Line 13,315 ⟶ 13,329:
 
// divs below input wrapper
var node = wikEdInputWrapperwikEd.inputWrapper.nextSibling;
while (node != null) {
if (node.nodeName == 'DIV') {
Line 13,338 ⟶ 13,352:
if (fullscreen == true) {
if (notFrame != true) {
wikEdInputWrapperwikEd.inputWrapper.className = 'wikEdInputWrapperFull';
}
wikEdButtonBarPreviewwikEd.buttonBarPreview.className = 'wikEdButtonBarPreviewFull';
}
else {
if (notFrame != true) {
wikEdInputWrapperwikEd.inputWrapper.className = 'wikEdInputWrapper';
}
wikEdButtonBarPreviewwikEd.buttonBarPreview.className = 'wikEdButtonBarPreview';
}
 
Line 13,353 ⟶ 13,367:
 
// end frame resizing
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mouseup', WikEdResizeStopHandlerwikEd.ResizeStopHandler, true);
WikEdRemoveEventListenerwikEd.RemoveEventListener(document, 'mouseup', WikEdResizeStopHandlerwikEd.ResizeStopHandler, true);
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mousemove', WikEdResizeDragHandlerFramewikEd.ResizeDragHandlerFrame, true);
WikEdRemoveEventListenerwikEd.RemoveEventListener(document, 'mousemove', WikEdResizeDragHandlerDocumentwikEd.ResizeDragHandlerDocument, true);
wikEdResizeFrameMouseOverGripwikEd.resizeFrameMouseOverGrip = false;
WikEdRemoveEventListenerwikEd.RemoveEventListener(wikEdFrameDocumentwikEd.frameDocument, 'mousedown', WikEdResizeStartHandlerwikEd.ResizeStartHandler, true);
wikEdFrameBodywikEd.frameBody.style.cursor = 'auto';
wikEdResizeFrameActivewikEd.resizeFrameActive = false;
 
var consoleTop = WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdConsoleWrapperwikEd.consoleWrapper);
var consoleHeight = wikEdConsoleWrapperwikEd.consoleWrapper.offsetHeight;
var frameHeight = wikEdFramewikEd.frame.offsetHeight;
var windowHeight = WikEdGetWindowInnerHeightwikEd.GetWindowInnerHeight();
 
wikEdFramewikEd.frame.style.height = (frameHeight + (windowHeight - (consoleTop + consoleHeight) ) - 2) + 'px';
wikEdFramewikEd.frame.style.width = (wikEdEditorWrapperwikEd.editorWrapper.clientWidth - wikEdFrameBorderWidthwikEd.frameBorderWidth) + 'px';
}
else {
if (wikEdFrameHeightwikEd.frameHeight == 0) {
wikEdFrameHeightwikEd.frameHeight = (wikEdTextareaOffsetHeightInitialwikEd.textareaOffsetHeightInitial - wikEdFrameBorderHeightwikEd.frameBorderHeight) + 'px';
wikEdFrameWidthwikEd.frameWidth = (wikEdEditorWrapperwikEd.editorWrapper.clientWidth - wikEdFrameBorderWidthwikEd.frameBorderWidth) + 'px';
}
wikEdFramewikEd.frame.style.height = wikEdFrameHeightwikEd.frameHeight;
wikEdFramewikEd.frame.style.width = wikEdFrameWidthwikEd.frameWidth;
}
 
// scroll to edit-frame
if (fullscreen == false) {
window.scroll(0, WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdInputWrapperwikEd.inputWrapper) - 2);
}
 
// set the fullscreen button state
WikEdButtonwikEd.Button(document.getElementById('wikEdFullScreen'), 'wikEdFullScreen', null, fullscreen);
 
// grey out or re-activate scroll-to buttons
Line 13,401 ⟶ 13,415:
 
// resize the summary field
wikEd.ResizeSummary();
WikEdResizeSummary();
 
wikEdFullScreenModewikEd.fullScreenMode = fullscreen;
 
return;
Line 13,410 ⟶ 13,424:
 
//
// WikEdResizeSummarywikEd.ResizeSummary: recalculate the summary width after resizing the window
//
 
windowwikEd.WikEdResizeSummaryResizeSummary = function() {
 
// check if combo field exists
if (wikEdSummarySelectwikEd.summarySelect == null) {
return;
}
 
wikEdSummaryTextwikEd.summaryText.style.width = '';
wikEdSummarySelectwikEd.summarySelect.style.width = '';
 
wikEdSummaryTextWidthwikEd.summaryTextWidth = wikEdSummaryWrapperwikEd.summaryWrapper.clientWidth - ( WikEdGetOffsetLeftwikEd.GetOffsetLeft(wikEdSummaryTextwikEd.summaryText) - WikEdGetOffsetLeftwikEd.GetOffsetLeft(wikEdSummaryWrapperwikEd.summaryWrapper) );
if (wikEdSummaryTextWidthwikEd.summaryTextWidth < 150) {
wikEdSummaryTextWidthwikEd.summaryTextWidth = 150;
}
wikEdSummaryTextwikEd.summaryText.style.width = wikEdSummaryTextWidthwikEd.summaryTextWidth + 'px';
WikEdResizeComboInputwikEd.ResizeComboInput('summary');
return;
};
Line 13,434 ⟶ 13,448:
 
//
// WikEdResizeComboInputwikEd.ResizeComboInput: set the size of the background select boxes so that the button is visible
// calculates the select button width as the difference between select and option width
// adjusts widths so that only the select button is visible behind the input field
//
 
windowwikEd.WikEdResizeComboInputResizeComboInput = function(field) {
 
// check if combo field exists
if (wikEdSelectElementwikEd.selectElement[field] == null) {
return;
}
Line 13,448 ⟶ 13,462:
// detect browser for MS IE fixes
var standardBrowser = true;
if (wikEdSelectElementwikEd.selectElement[field].options.offsetWidth != null ) {
standardBrowser = false;
}
Line 13,454 ⟶ 13,468:
// set select height and top
if (standardBrowser == false) {
wikEdSelectElementwikEd.selectElement[field].style.height = (wikEdInputElementwikEd.inputElement[field].clientHeight + 6) + 'px';
wikEdSelectElementwikEd.selectElement[field].style.top = '3px';
wikEdInputElementwikEd.inputElement[field].style.top = '3px';
}
 
Line 13,463 ⟶ 13,477:
var testOption = 1;
if (standardBrowser == true) {
if (wikEdSelectElementwikEd.selectElement[field].options.length == 0) {
testOption = 0;
wikEdSelectElementwikEd.selectElement[field].options[0] = new Option('');
dummy = true;
}
Line 13,472 ⟶ 13,486:
// set option widths to 0
if (standardBrowser == true) {
for (var i = 0; i < wikEdSelectElementwikEd.selectElement[field].options.length; i ++) {
wikEdSelectElementwikEd.selectElement[field].options[i].style.width = '0';
}
}
 
// get input width
var inputBorder = (wikEdInputElementwikEd.inputElement[field].offsetWidth - wikEdInputElementwikEd.inputElement[field].clientWidth);
var inputWidthInner = wikEdInputElementwikEd.inputElement[field].clientWidth;
var inputWidthOuter = wikEdInputElementwikEd.inputElement[field].offsetWidth;
 
// get select width
var selectWidthInner = wikEdSelectElementwikEd.selectElement[field].clientWidth;
var selectWidthOuter = wikEdSelectElementwikEd.selectElement[field].offsetWidth;
 
// get option width and calculate button width
Line 13,492 ⟶ 13,506:
 
// Firefox < 3.0
if ( typeof(wikEdSelectElementwikEd.selectElement[field].options[testOption].clientLeft) == 'undefined' ) {
optionWidthInner = wikEdSelectElementwikEd.selectElement[field].options[testOption].clientWidth;
buttonWidth = selectWidthInner - optionWidthInner - 6;
}
Line 13,499 ⟶ 13,513:
// Firefox >= 3.0
else {
optionWidthInner = wikEdSelectElementwikEd.selectElement[field].options[testOption].clientWidth;
buttonWidth = selectWidthInner - optionWidthInner;
}
Line 13,509 ⟶ 13,523:
// for long fields shorten input
if (inputWidthOuter + buttonWidth > 150) {
wikEdInputElementwikEd.inputElement[field].style.width = (inputWidthInner - inputBorder - buttonWidth) + 'px';
wikEdSelectElementwikEd.selectElement[field].style.width = (inputWidthInner) + 'px';
}
 
// otherwise increase select width
else {
wikEdSelectElementwikEd.selectElement[field].style.width = (inputWidthOuter + buttonWidth) + 'px';
}
 
// delete dummy option
if (dummy == true) {
wikEdSelectElementwikEd.selectElement[field].options[0] = null;
}
 
// set option widths to auto
if (standardBrowser == true) {
for (var i = 0; i < wikEdSelectElementwikEd.selectElement[field].options.length; i ++) {
wikEdSelectElementwikEd.selectElement[field].options[i].style.width = 'auto';
}
}
Line 13,534 ⟶ 13,548:
 
//
// WikEdChangeComboInputwikEd.ChangeComboInput: sets the input value to selected option; onchange event handler for select boxes
//
 
windowwikEd.WikEdChangeComboInputChangeComboInput = function(field) {
 
// get selection index (-1 for unselected)
var selected = wikEdSelectElementwikEd.selectElement[field].selectedIndex;
if (selected >= 0) {
wikEdSelectElementwikEd.selectElement[field].selectedIndex = -1;
 
// get selected option
var option = wikEdSelectElementwikEd.selectElement[field].options[selected];
if (option.text != '') {
 
Line 13,555 ⟶ 13,569:
 
// find and select heading text
var found = WikEdFindwikEd.Find(obj, findText, true, false, true, true);
WikEdRemoveAllRangeswikEd.RemoveAllRanges(obj.sel);
obj.sel.addRange(obj.changed.range);
 
// and scroll it into the viewport
WikEdScrollToSelectionwikEd.ScrollToSelection();
return;
}
Line 13,569 ⟶ 13,583:
// add a tag to the summary box
if (field == 'summary') {
wikEdInputElementwikEd.inputElement[field].value = WikEdAppendToSummarywikEd.AppendToSummary(wikEdInputElementwikEd.inputElement[field].value, option.text);
}
 
// add case and regexp checkboxes to find / replace fields
else if (option.value == 'setcheck') {
WikEdButtonwikEd.Button(document.getElementById('wikEdCaseSensitive'), 'wikEdCaseSensitive', null, (option.text.charAt(0) == wikEdCheckMarkerwikEd.checkMarker[true]) );
WikEdButtonwikEd.Button(document.getElementById('wikEdRegExp'), 'wikEdRegExp', null, (option.text.charAt(1) == wikEdCheckMarkerwikEd.checkMarker[true]) );
wikEdInputElementwikEd.inputElement[field].value = option.text.substr(3);
}
 
// add option text
else {
wikEdInputElementwikEd.inputElement[field].value = option.text;
}
 
// find the new text
if ( (field == 'find') && (WikEdGetAttributewikEd.GetAttribute(wikEdFindAheadwikEd.findAhead, 'checked') == 'true') ) {
WikEdFindAheadwikEd.FindAhead();
}
}
}
}
wikEdInputElementwikEd.inputElement[field].focus();
 
return;
Line 13,598 ⟶ 13,612:
 
//
// WikEdAppendToSummarywikEd.AppendToSummary: append a phrase to the summary text
//
 
windowwikEd.WikEdAppendToSummaryAppendToSummary = function(summary, append) {
 
summary = summary.replace(/^[, ]+/, '');
Line 13,626 ⟶ 13,640:
 
//
// WikEdAddToHistorywikEd.AddToHistory: add an input value to the saved history
//
 
windowwikEd.WikEdAddToHistoryAddToHistory = function(field) {
 
if (wikEdInputElementwikEd.inputElement[field].value != '') {
 
// load history from saved settings
WikEdLoadHistoryFromSettingswikEd.LoadHistoryFromSettings(field);
 
// add current value to history
wikEdFieldHistwikEd.fieldHist[field].unshift(wikEdInputElementwikEd.inputElement[field].value);
 
// add case and regexp checkboxes to find / replace value
if ( (field == 'find') || (field == 'replace') ) {
wikEdFieldHistwikEd.fieldHist[field][0] =
wikEdCheckMarkerwikEd.checkMarker[ (WikEdGetAttributewikEd.GetAttribute(wikEdCaseSensitivewikEd.caseSensitive, 'checked') == 'true') ] +
wikEdCheckMarkerwikEd.checkMarker[ (WikEdGetAttributewikEd.GetAttribute(wikEdRegExpwikEd.regExp, 'checked') == 'true') ] +
' ' + wikEdFieldHistwikEd.fieldHist[field][0];
}
 
// remove paragraph names from summary
if (field == 'summary') {
wikEdFieldHistwikEd.fieldHist[field][0] = wikEdFieldHistwikEd.fieldHist[field][0].replace(/^\/\* .*? \*\/ *()/, '');
}
 
// remove multiple old copies from history
var i = 1;
while (i < wikEdFieldHistwikEd.fieldHist[field].length) {
if (wikEdFieldHistwikEd.fieldHist[field][i] == wikEdFieldHistwikEd.fieldHist[field][0]) {
wikEdFieldHistwikEd.fieldHist[field].splice(i, 1);
}
else {
Line 13,664 ⟶ 13,678:
 
// remove new value if it is a preset value
if (wikEdConfig['wikEd.config.comboPresetOptions'][field] != null) {
var i = 0;
while (i < wikEdConfig['wikEd.config.comboPresetOptions'][field].length) {
if (wikEdConfig['wikEd.config.comboPresetOptions'][field][i] == wikEdFieldHistwikEd.fieldHist[field][0]) {
wikEdFieldHistwikEd.fieldHist[field].shift();
break;
}
Line 13,678 ⟶ 13,692:
 
// cut history number to maximal history length
wikEdFieldHistwikEd.fieldHist[field] = wikEdFieldHistwikEd.fieldHist[field].slice(0, wikEdConfig['wikEd.config.historyLength'][field]);
 
// save history to settings
if (wikEdFieldHistwikEd.fieldHist[field][0] != '') {
WikEdSaveHistoryToSettingwikEd.SaveHistoryToSetting(field);
}
}
Line 13,690 ⟶ 13,704:
 
//
// WikEdSetComboOptionswikEd.SetComboOptions: generate the select options from saved history; onfocus handler for select box
//
 
windowwikEd.WikEdSetComboOptionsSetComboOptions = function(field) {
 
// load history from saved settings
WikEdLoadHistoryFromSettingswikEd.LoadHistoryFromSettings(field);
 
var option = {};
Line 13,702 ⟶ 13,716:
 
// delete options
var options = wikEdSelectElementwikEd.selectElement[field].options;
for (var i = 0; i < options.length; i ++) {
wikEdSelectElementwikEd.selectElement[field].remove(i);
}
 
Line 13,710 ⟶ 13,724:
option = document.getElementById(field + 'Optgroup');
if (option != null) {
wikEdSelectElementwikEd.selectElement[field].removeChild(option);
}
 
Line 13,717 ⟶ 13,731:
option.style.display = 'none';
j = 0;
wikEdSelectElementwikEd.selectElement[field].options[j++] = option;
 
// add history entries
for (var i = 0; i < wikEdFieldHistwikEd.fieldHist[field].length; i ++) {
if (wikEdFieldHistwikEd.fieldHist[field][i] != null) {
if (wikEdFieldHistwikEd.fieldHist[field][i] == wikEdInputElementwikEd.inputElement[field].value) {
selectedOption = j;
}
Line 13,728 ⟶ 13,742:
 
// replace spaces with nbsp to allow for multiple, leading, and trailing spaces
option.text = wikEdFieldHistwikEd.fieldHist[field][i].replace(/ /g, '\xa0');
if ( (field == 'find') || (field == 'replace') ) {
option.value = 'setcheck';
}
wikEdSelectElementwikEd.selectElement[field].options[j++] = option;
}
}
Line 13,738 ⟶ 13,752:
// add preset entries
var startPreset = 0;
if (wikEdConfig['wikEd.config.comboPresetOptions'][field] != null) {
startPreset = j;
for (var i = 0; i < wikEdConfig['wikEd.config.comboPresetOptions'][field].length; i ++) {
if (wikEdConfig['wikEd.config.comboPresetOptions'][field][i] != null) {
 
// replace spaces with nbsp to allow for multiple, leading, and trailing spaces
wikEdConfig['wikEd.config.comboPresetOptions'][field][i] = wikEdConfig['wikEd.config.comboPresetOptions'][field][i].replace(/ /g, '\xa0');
 
// select a dropdown value
if (wikEdConfig['wikEd.config.comboPresetOptions'][field][i] == wikEdInputElementwikEd.inputElement[field].value) {
selectedOption = j;
}
 
option = document.createElement('option');
option.text = wikEdConfig['wikEd.config.comboPresetOptions'][field][i].replace(/ /g, '\xa0');
if (field == 'summary') {
option.text = option.text.replace(/\{wikEdUsingwikEd.using\}/g, wikEdConfig['wikEd.config.summaryUsing']);
}
wikEdSelectElementwikEd.selectElement[field].options[j++] = option;
}
}
Line 13,762 ⟶ 13,776:
 
// set the selection
wikEdSelectElementwikEd.selectElement[field].selectedIndex = selectedOption;
 
// add a blank preset separator
Line 13,769 ⟶ 13,783:
option.label = '\xa0';
option.id = field + 'Optgroup';
wikEdSelectElementwikEd.selectElement[field].insertBefore(option, wikEdSelectElementwikEd.selectElement[field].options[startPreset]);
}
 
Line 13,778 ⟶ 13,792:
 
// get the whole plain text
var plain = wikEdFrameBodywikEd.frameBody.innerHTML;
plain = plain.replace(/<br\b[^>]*>/g, '\n');
plain = plain.replace(/<.*?>/g, '');
Line 13,799 ⟶ 13,813:
option.text = '\u21d2' + headingIndent + headingMatch[3];
option.value = headingMatch[1];
wikEdSelectElementwikEd.selectElement[field].options[j++] = option;
}
}
Line 13,809 ⟶ 13,823:
option.label = '\xa0';
option.id = field + 'Optgroup';
wikEdSelectElementwikEd.selectElement[field].insertBefore(option, wikEdSelectElementwikEd.selectElement[field].options[startTOC]);
}
 
Line 13,817 ⟶ 13,831:
 
//
// WikEdClearHistorywikEd.ClearHistory: clear the history of combo input fields
//
 
windowwikEd.WikEdClearHistoryClearHistory = function(field) {
WikEdSetPersistentwikEd.SetPersistent(wikEdSavedNamewikEd.savedName[field], '', 0, '/');
WikEdSetComboOptionswikEd.SetComboOptions(field);
return;
};
Line 13,828 ⟶ 13,842:
 
//
// WikEdLoadHistoryFromSettingswikEd.LoadHistoryFromSettings: get the input box history from the respective saved settings
//
 
windowwikEd.WikEdLoadHistoryFromSettingsLoadHistoryFromSettings = function(field) {
var setting = WikEdGetPersistentwikEd.GetPersistent(wikEdSavedNamewikEd.savedName[field]);
if (setting != '') {
setting = decodeURIComponent(setting);
wikEdFieldHistwikEd.fieldHist[field] = setting.split('\n');
}
else {
wikEdFieldHistwikEd.fieldHist[field] = [];
}
return;
Line 13,845 ⟶ 13,859:
 
//
// WikEdSaveHistoryToSettingwikEd.SaveHistoryToSetting: save the input box history to the respective saved settings
//
 
windowwikEd.WikEdSaveHistoryToSettingSaveHistoryToSetting = function(field) {
 
var setting = '';
setting = wikEdFieldHistwikEd.fieldHist[field].join('\n');
setting = setting.replace(/\n$/, '');
setting = encodeURIComponent(setting);
WikEdSetPersistentwikEd.SetPersistent(wikEdSavedNamewikEd.savedName[field], setting, 0, '/');
return;
};
Line 13,860 ⟶ 13,874:
 
//
// WikEdGetSelectionwikEd.GetSelection: cross-browser method to get the current iframe selection
//
 
windowwikEd.WikEdGetSelectionGetSelection = function() {
 
// standard
var sel;
if (typeof(wikEdFrameWindowwikEd.frameWindow.getSelection) == 'function') {
sel = wikEdFrameWindowwikEd.frameWindow.getSelection();
}
 
// MS IE compatibility
else if (typeof(wikEdFrameDocumentwikEd.frameDocument.selection) == 'object') {
sel = wikEdFrameDocumentwikEd.frameDocument.selection;
}
 
// make sure there is at least an empty range
if (sel.rangeCount == 0) {
sel.collapse(wikEdFrameBodywikEd.frameBody, 0);
}
 
Line 13,886 ⟶ 13,900:
 
//
// WikEdClearSelectionwikEd.ClearSelection: cross-browser method to clear the currently selected text
//
 
windowwikEd.WikEdRemoveAllRangesRemoveAllRanges = function(sel) {
 
if (typeof(sel.removeAllRanges) == 'function') {
Line 13,904 ⟶ 13,918:
 
//
// WikEdSetRangewikEd.SetRange: set a range, control for non-text nodes (Opera 10.50 beta bug)
//
 
windowwikEd.WikEdSetRangeSetRange = function(range, startNode, startOffset, endNode, endOffset) {
 
WikEdSetRangeStartwikEd.SetRangeStart(range, startNode, startOffset);
WikEdSetRangeEndwikEd.SetRangeEnd(range, endNode, endOffset);
return;
};
Line 13,916 ⟶ 13,930:
 
//
// WikEdSetRangeStartwikEd.SetRangeStart: set range start
//
 
windowwikEd.WikEdSetRangeStartSetRangeStart = function(range, startNode, startOffset) {
 
if ( (startNode.childNodes.length > 0) && (startOffset < startNode.childNodes.length) ) {
Line 13,936 ⟶ 13,950:
 
//
// WikEdSetRangeEndwikEd.SetRangeEnd: set range end
//
 
windowwikEd.WikEdSetRangeEndSetRangeEnd = function(range, endNode, endOffset) {
 
if ( (endNode.childNodes.length > 0) && (endOffset < endNode.childNodes.length) ) {
Line 13,956 ⟶ 13,970:
 
//
// WikEdGetSavedSettingwikEd.GetSavedSetting: get a wikEd setting
//
 
windowwikEd.WikEdGetSavedSettingGetSavedSetting = function(settingName, preset) {
 
var setting = WikEdGetPersistentwikEd.GetPersistent(settingName);
if (setting == '') {
setting = preset;
Line 13,976 ⟶ 13,990:
 
//
// WikEdGetPersistentwikEd.GetPersistent: get a cookie or a Greasemonkey persistent value (code copied to wikEdDiff.js)
//
 
windowwikEd.WikEdGetPersistentGetPersistent = function(name) {
 
var getStr = '';
 
// get a value from web storage
if (wikEdWebStoragewikEd.webStorage == true) {
getStr = localStorage.getItem(name);
}
 
// get a Greasemonkey persistent value
else if (wikEdGreasemonkeywikEd.greasemonkey == true) {
getStr = GM_getValue(name, '');
}
Line 13,995 ⟶ 14,009:
// get a cookie value
else {
getStr = WikEdGetCookiewikEd.GetCookie(name);
}
return(getStr);
Line 14,002 ⟶ 14,016:
 
//
// WikEdSetPersistentwikEd.SetPersistent: set a cookie or a Greasemonkey persistent value, deletes the value for expire = -1
//
 
windowwikEd.WikEdSetPersistentSetPersistent = function(name, value, expires, path, ___domain, secure) {
 
 
// set a value in web storage
if (wikEdWebStoragewikEd.webStorage == true) {
if (expires == -1) {
localStorage.removeItem(name, '');
Line 14,019 ⟶ 14,033:
 
// set a Greasemonkey persistent value
else if (wikEdGreasemonkeywikEd.greasemonkey == true) {
if (expires == -1) {
GM_setValue(name, '');
Line 14,030 ⟶ 14,044:
// set a cookie value
else {
WikEdSetCookiewikEd.SetCookie(name, value, expires, path, ___domain, secure);
}
return;
Line 14,037 ⟶ 14,051:
 
//
// WikEdGetCookiewikEd.GetCookie: get a cookie (code copied to wikEdDiff.js)
//
 
windowwikEd.WikEdGetCookieGetCookie = function(cookieName) {
 
var cookie = ' ' + document.cookie;
Line 14,063 ⟶ 14,077:
 
//
// WikEdSetCookiewikEd.SetCookie: set a cookie, deletes a cookie for expire = -1
//
 
windowwikEd.WikEdSetCookieSetCookie = function(name, value, expires, path, ___domain, secure) {
 
var cookie = name + '=' + encodeURIComponent(value);
Line 14,082 ⟶ 14,096:
else if (expires == 0) {
var cookieExpire = new Date();
expires = cookieExpire.setTime(cookieExpire.getTime() + wikEdConfig['wikEd.config.cookieExpireSec'] * 1000);
expires = cookieExpire.toUTCString();
}
Line 14,102 ⟶ 14,116:
 
//
// WikEdGetOffsetTopwikEd.GetOffsetTop: get element offset relative to window top (code copied to wikEdDiff.js)
//
 
windowwikEd.WikEdGetOffsetTopGetOffsetTop = function(element) {
var offset = 0;
do {
Line 14,115 ⟶ 14,129:
 
//
// WikEdGetOffsetLeftwikEd.GetOffsetLeft: get element offset relative to left window border
//
 
windowwikEd.WikEdGetOffsetLeftGetOffsetLeft = function(element) {
var offset = 0;
do {
Line 14,128 ⟶ 14,142:
 
//
// WikEdAppendScriptwikEd.AppendScript: append script to head
//
 
windowwikEd.WikEdAppendScriptAppendScript = function(scriptUrl, onLoadFunction) {
 
var head = document.getElementsByTagName('head')[0];
Line 14,139 ⟶ 14,153:
head.appendChild(script);
if (onLoadFunction != null) {
WikEdAddEventListenerwikEd.AddEventListener(script, 'load', onLoadFunction, false);
}
return;
Line 14,146 ⟶ 14,160:
 
//
// WikEdCleanNodeswikEd.CleanNodes: remove DOM elements dynamically inserted by other scripts
//
 
windowwikEd.WikEdCleanNodesCleanNodes = function(node) {
 
if (wikEdCleanNodeswikEd.cleanNodes == false) {
return;
}
Line 14,188 ⟶ 14,202:
 
//
// WikEdParseDOMwikEd.ParseDOM: parses a DOM subtree into a linear array of plain text fragments
//
 
windowwikEd.WikEdParseDOMParseDOM = function(obj, topNode) {
 
obj.plainLength = 0;
Line 14,204 ⟶ 14,218:
var focusOffset = obj.sel.focusOffset;
 
WikEdParseDOMRecursivewikEd.ParseDOMRecursive(obj, topNode, anchorNode, anchorOffset, focusNode, focusOffset);
obj.plain = obj.plainArray.join('');
return;
Line 14,211 ⟶ 14,225:
 
//
// WikEdParseDOMRecursivewikEd.ParseDOMRecursive: parses a DOM subtree into a linear array of plain text fragments
//
 
windowwikEd.WikEdParseDOMRecursiveParseDOMRecursive = function(obj, currentNode, anchorNode, anchorOffset, focusNode, focusOffset) {
 
// cycle through the child nodes of currentNode
Line 14,243 ⟶ 14,257:
 
// skip hidden elements
if (WikEdGetStylewikEd.GetStyle(childNode, 'display') == 'none') {
continue;
}
if ( (childNode.childNodes.length == 0) && (wikEdLeafElementswikEd.leafElements[childNode.nodeName] == true) ) {
if (childNode.nodeName == 'BR') {
value = '\n';
Line 14,252 ⟶ 14,266:
}
else {
WikEdParseDOMRecursivewikEd.ParseDOMRecursive(obj, childNode, anchorNode, anchorOffset, focusNode, focusOffset);
}
break;
Line 14,288 ⟶ 14,302:
 
//
// WikEdGetInnerHTMLwikEd.GetInnerHTML: get the innerHTML of a document fragment
//
 
windowwikEd.WikEdGetInnerHTMLGetInnerHTML = function(obj, currentNode) {
 
// initialize string
Line 14,317 ⟶ 14,331:
}
}
if ( (childNode.childNodes.length == 0) && (wikEdLeafElementswikEd.leafElements[childNode.nodeName] == true) ) {
obj.html += '>';
if (childNode.nodeName == 'BR') {
Line 14,328 ⟶ 14,342:
else {
obj.html += '>';
WikEdGetInnerHTMLwikEd.GetInnerHTML(obj, childNode);
obj.html += '</' + childNode.nodeName.toLowerCase() + '>';
}
Line 14,366 ⟶ 14,380:
 
//
// WikEdGetNextNodewikEd.GetNextNode: recurse through DOM to next text-like node for anti-highlight bleeding
//
 
windowwikEd.WikEdGetNextTextNodeGetNextTextNode = function(obj, currentNode, currentLevel) {
 
// ascend until there is a sibling
while (currentNode != wikEdFrameBodywikEd.frameBody) {
 
// check for sibling
Line 14,391 ⟶ 14,405:
(currentNode.nodeName == '#text') ||
(currentNode.nodeType == currentNode.ENTITY_REFERENCE_NODE) ||
(wikEdLeafElementswikEd.leafElements[currentNode.nodeName] == true)
) {
obj.foundNode = currentNode;
Line 14,399 ⟶ 14,413:
 
// recurse into child nodes
if ( (currentNode.nodeType == currentNode.ELEMENT_NODE) && (/wikEdScrollwikEd.scroll(Before|After)/.test(currentNode.className) != true) ) {
WikEdGetNextTextNodeChildswikEd.GetNextTextNodeChilds(obj, currentNode, currentLevel - 1);
if (obj.foundNode != null) {
return;
Line 14,417 ⟶ 14,431:
 
 
// WikEdGetNextTextNodeChildswikEd.GetNextTextNodeChilds: recurse through child nodes to next text-like node for anti-highlight bleeding
 
windowwikEd.WikEdGetNextTextNodeChildsGetNextTextNodeChilds = function(obj, currentNode, currentLevel) {
 
// set direction
Line 14,441 ⟶ 14,455:
(currentNode.nodeName == '#text') ||
(currentNode.nodeType == currentNode.ENTITY_REFERENCE_NODE) ||
(wikEdLeafElementswikEd.leafElements[currentNode.nodeName] == true)
) {
obj.foundNode = currentNode;
Line 14,449 ⟶ 14,463:
 
// recurse into child nodes
if ( (currentNode.nodeType == currentNode.ELEMENT_NODE) && (/wikEdScrollwikEd.scroll(Before|After)/.test(currentNode.className) != true) ) {
WikEdGetNextTextNodeChildswikEd.GetNextTextNodeChilds(obj, currentNode, currentLevel - 1);
if (obj.foundNode != null) {
return;
Line 14,461 ⟶ 14,475:
 
//
// WikEdApplyCSSwikEd.ApplyCSS: Attach css rules to document
//
 
windowwikEd.WikEdApplyCSSApplyCSS = function(cssDocument, cssRules) {
 
var stylesheet = new WikEdStyleSheetwikEd.StyleSheet(cssDocument);
var rules = '';
for (var ruleName in cssRules) {
Line 14,473 ⟶ 14,487:
 
// replace {wikedImage:image} in css rules with image path
ruleStyle = ruleStyle.replace(/\{wikEdImagewikEd.image:(\w+)\}/g,
function (p, p1) {
return(wikEdConfig['wikEd.config.image'][p1]);
}
);
 
// replace {wikedText:text} in css rules with translation
ruleStyle = ruleStyle.replace(/\{wikEdTextwikEd.text:(\w+)\}/g,
function (p, p1) {
return(wikEdConfig['wikEd.config.text'][p1]);
}
);
Line 14,489 ⟶ 14,503:
}
}
stylesheet.WikEdAddRulesAddRules(rules);
return;
};
Line 14,495 ⟶ 14,509:
 
//
// WikEdStyleSheetwikEd.StyleSheet: create a new style sheet object (code copied to wikEdDiff.js)
//
 
windowwikEd.WikEdStyleSheetStyleSheet = function(contextObj) {
 
if (contextObj == null) {
Line 14,522 ⟶ 14,536:
 
//
// WikEdStyleSheetwikEd.WikEdAddRuleStyleSheet.AddRule: add one rule at the time using DOM method, very slow
//
 
this.WikEdAddRuleAddRule = function(selector, declaration) {
 
// MS IE compatibility
if (this.styleElement.WikEdAddRuleAddRule != null) {
if (declaration.length > 0) {
this.styleElement.WikEdAddRuleAddRule(selector, declaration);
}
}
Line 14,546 ⟶ 14,560:
 
//
// WikEdStyleSheetwikEd.WikEdAddRulesStyleSheet.AddRules: add or replace all rules at once, much faster
//
 
this.WikEdAddRulesAddRules = function(rules) {
 
// MS IE compatibility
Line 14,557 ⟶ 14,571:
 
// Safari, Chrome, WebKit
else if ( (wikEdSafariwikEd.safari == true) || (wikEdChromewikEd.chrome == true) || (wikEdWebKitwikEd.webkit == true) ) {
if (this.styleElement.firstChild != null) {
this.styleElement.removeChild(this.styleElement.firstChild);
Line 14,574 ⟶ 14,588:
 
//
// WikEdGetStylewikEd.GetStyle: get computed style properties for non-inline css definitions
//
 
windowwikEd.WikEdGetStyleGetStyle = function(element, styleProperty) {
 
var styleDocument = element.ownerDocument;
Line 14,593 ⟶ 14,607:
// recurse up trough the DOM tree
if (style == 'inherit') {
style = WikEdGetStylewikEd.GetStyle(element.parentNode, styleProperty);
}
}
Line 14,605 ⟶ 14,619:
 
//
// WikEdAjaxPreviewwikEd.AjaxPreview: get rendered page text using an Ajax non-api POST call
//
 
windowwikEd.WikEdAjaxPreviewAjaxPreview = function(textValue, ResponseHandler, livePreview) {
 
// prepare the url
var requestUrl;
if ( (wikEdUploadEditwikEd.uploadEdit == true) || (wikEdWatchlistEditwikEd.watchlistEdit == true) || (wikEdViewDeletedwikEd.viewDeleted == true) ) {
requestUrl = wikEdWikiGlobals['wikEd.wikiGlobals.wgServer'] + wikEdWikiGlobals['wikEd.wikiGlobals.wgScript'] + '?title=wikEdPreviewwikEd.preview&action=submit';
}
else {
requestUrl = wikEdEditFormwikEd.editForm.action;
}
 
Line 14,622 ⟶ 14,636:
var postFields = {};
postFields['wpTextbox1'] = textValue;
if (wikEdEdittimewikEd.edittime != null) {
postFields['wikEdEdittime'] = wikEdEdittimewikEd.edittime;
}
if (wikEdEditTokenwikEd.editToken != null) {
postFields['wpEditToken'] = wikEdEditTokenwikEd.editToken;
}
postFields['wpPreview'] = 'true';
Line 14,636 ⟶ 14,650:
var requestMethod = 'POST';
var overrideMimeType = 'text/html';
WikEdAjaxRequestwikEd.AjaxRequest(requestMethod, requestUrl, postFields, overrideMimeType, ResponseHandler);
 
return;
};
 
 
 
//
// WikEdAjaxRequestwikEd.AjaxRequest: cross browser wrapper for Ajax requests (code copied to wikEdDiff.js)
//
 
windowwikEd.WikEdAjaxRequestAjaxRequest = function(requestMethod, requestUrl, postFields, overrideMimeType, ResponseHandler) {
 
var request;
Line 14,658 ⟶ 14,671:
 
//create boundary
var boundary = WikEdCreateRandomStringwikEd.CreateRandomString(12);
 
// POST header
Line 14,676 ⟶ 14,689:
 
// use Greasemonkey GM_xmlhttpRequest
if (wikEdGreasemonkeywikEd.greasemonkey == true) {
var headerObj = { 'User-Agent': navigator.userAgent };
if (headerName != null) {
Line 14,707 ⟶ 14,720:
 
// allow ajax request from local copy for testing
if (wikEdConfig['wikEd.config.allowLocalAjax'] == true) {
if (typeof(netscape) == 'object') {
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
Line 14,714 ⟶ 14,727:
 
// new ajax request object
if (typeof(XMLHttpRequest) == 'objectfunction') {
request = new XMLHttpRequest();
}
Line 14,768 ⟶ 14,781:
 
//
// WikEdGetGlobalswikEd.GetGlobals: copy global context variables into Greasemonkey context (code copied to wikEdDiff.js)
// uses Greasemonkey postMessage ___location hack and JSON encoding
 
windowwikEd.WikEdGetGlobalsGetGlobals = function(names, gotGlobalsHook) {
 
if ( (typeof(window.postMessage) != 'function') || (typeof(JSON) != 'object') ) {
Line 14,780 ⟶ 14,793:
var locationHackCode = 'var globalObj = {};';
if (gotGlobalsHook != null) {
wikEdGotGlobalsHookwikEd.gotGlobalsHook.push(gotGlobalsHook);
locationHackCode += 'globalObj.hookNumber = ' + (wikEdGotGlobalsHookwikEd.gotGlobalsHook.length - 1) + ';';
}
locationHackCode += 'globalObj.wikEdGetGlobals = {};';
Line 14,787 ⟶ 14,800:
locationHackCode += ''
+ 'if (typeof(' + names[i] + ') != \'undefined\') {'
+ ' globalObj.wikEdGetGlobals[\'.' + names[i] + '\'] = ' + names[i] + ';'
+ '}';
}
locationHackCode += 'var globalObjStr = JSON.stringify(globalObj);';
if (window.___location.host != '') {
+ 'var globalObjStr = JSON.stringify(globalObj);'
locationHackCode += 'window.postMessage(globalObjStr, \'' + window.___location.protocol + '//' + window.___location.host + '\');'
}
+ 'void(0);';
else {
locationHackCode += 'window.postMessage(globalObjStr, \'*\');';
}
locationHackCode += 'void(0);';
___location.href = 'javascript:' + locationHackCode;
 
return;
};
Line 14,800 ⟶ 14,818:
 
//
// WikEdGetGlobalsReceiverwikEd.GetGlobalsReceiver: event handler for WikEdGetGlobalswikEd.GetGlobals postMessage
//
 
windowwikEd.WikEdGetGlobalsReceiverGetGlobalsReceiver = function(event) {
 
if (event.source != window) {
return;
}
if ( if(event.origin != null) && (event.origin != window.___location.protocol + '//' + window.___location.host) ) {
return;
}
if (event.data != '') {
var globalObj = JSON.parse(event.data);
Line 14,817 ⟶ 14,835:
for (var key in globals) {
if (globals.hasOwnProperty(key) == true) {
wikEdWikiGlobalswikEd.wikiGlobals[key] = globals[key];
}
}
Line 14,823 ⟶ 14,841:
// run scheduled functions only once
if (globalObj.hookNumber != null) {
WikEdExecuteHookwikEd.ExecuteHook(wikEdGotGlobalsHookwikEd.gotGlobalsHook[globalObj.hookNumber], true);
}
}
Line 14,832 ⟶ 14,850:
 
//
// WikEdGetAttributewikEd.GetAttribute: MS IE compatibility wrapper for element.getAttribute()
//
 
windowwikEd.WikEdGetAttributeGetAttribute = function(element, attribName) {
 
var attribValue = element.getAttribute(attribName);
Line 14,855 ⟶ 14,873:
 
//
// WikEdGetWindowInnerHeightwikEd.GetWindowInnerHeight: MS IE compatibility wrapper for window.innerHeight
//
 
windowwikEd.WikEdGetWindowInnerHeightGetWindowInnerHeight = function() {
 
var value = window.innerHeight;
Line 14,874 ⟶ 14,892:
 
//
// WikEdGetWindowInnerWidthwikEd.GetWindowInnerWidth: MS IE compatibility wrapper for window.innerWidth
//
 
windowwikEd.WikEdGetWindowInnerWidthGetWindowInnerWidth = function() {
 
var value = window.innerWidth;
Line 14,893 ⟶ 14,911:
 
//
// WikEdAddEventListenerwikEd.AddEventListener: wrapper for addEventListener (http://ejohn.org/projects/flexible-javascript-events/) (code copied to wikEdDiff.js)
//
 
windowwikEd.WikEdAddEventListenerAddEventListener = function(domElement, eventType, eventHandler, useCapture) {
 
if (domElement == null) {
Line 14,920 ⟶ 14,938:
 
//
// WikEdRemoveEventListenerwikEd.RemoveEventListener: wrapper for removeEventListener
//
 
windowwikEd.WikEdRemoveEventListenerRemoveEventListener = function(domElement, eventType, eventHandler, useCapture) {
 
if (domElement == null) {
Line 14,940 ⟶ 14,958:
 
//
// WikEdEventwikEd.EventWrapper: MS IE and Mozilla compatibility fix for event object
//
 
windowwikEd.WikEdEventEventWrapper = function(event, thisElement) {
 
var eventAlt;
Line 14,949 ⟶ 14,967:
eventAlt = window.event;
}
else if (wikEdFrameWindowwikEd.frameWindow != null) {
if (typeof(wikEdFrameWindowwikEd.frameWindow.event) != 'undefined') {
eventAlt = wikEdFrameWindowwikEd.frameWindow.event;
}
}
Line 14,981 ⟶ 14,999:
if ( (event.type == 'mouseout') || (event.type == 'mouseover') ) {
event.safeRelatedTarget = event.relatedTarget;
if (wikEdMozillawikEd.mozilla == true) {
try {
event.safeRelatedTarget.toString();
Line 14,995 ⟶ 15,013:
 
//
// WikEdGetElementsByClassNamewikEd.GetElementsByClassName: cross browser / backwards compatibility wrapper
//
 
windowwikEd.WikEdGetElementsByClassNameGetElementsByClassName = function(className, tagName, parent) {
 
if (parent == null) {
Line 15,029 ⟶ 15,047:
 
//
// WikEdGetPreviousSiblingNodewikEd.GetPreviousSiblingNode: getPreviousSibling, ignore non-element nodes such as comments
//
 
windowwikEd.WikEdGetPreviousSiblingNodeGetPreviousSiblingNode = function(node) {
 
while (node != null) {
Line 15,048 ⟶ 15,066:
 
//
// WikEdGetNextSiblingNodewikEd.GetNextSiblingNode: getNextSibling, ignore non-element nodes such as comments
//
 
windowwikEd.WikEdGetNextSiblingNodeGetNextSiblingNode = function(node) {
 
while (node != null) {
Line 15,067 ⟶ 15,085:
 
//
// WikEdGetFirstChildNodewikEd.GetFirstChildNode: getFirstChild, ignore non-element nodes such as comments
//
 
windowwikEd.WikEdGetFirstChildNodeGetFirstChildNode = function(node) {
 
if (node != null) {
node = node.firstChild;
WikEdGetNextSiblingNodewikEd.GetNextSiblingNode(node);
}
return(node);
Line 15,081 ⟶ 15,099:
 
//
// WikEdGetLastChildNodewikEd.GetLastChildNode: getLastChild, ignore non-element nodes such as comments
//
 
windowwikEd.WikEdGetLastChildNodeGetLastChildNode = function(node) {
 
if (node != null) {
node = node.lastChild;
WikEdGetPreviousSiblingNodewikEd.GetPreviousSiblingNode(node);
return(node);
}
Line 15,095 ⟶ 15,113:
 
//
// WikEdCreateRandomStringwikEd.CreateRandomString: create random string of specified length and character set (code copied to wikEdDiff.js)
//
 
windowwikEd.WikEdCreateRandomStringCreateRandomString = function(strLength, charSet) {
 
if (charSet == null) {
Line 15,112 ⟶ 15,130:
 
//
// WikEdDebugwikEd.Debug: print the value of variables
// use either a single value or a description followed by a value
// popup = true: use alert popup if debug textarea is not yet setup
//
 
windowwikEd.WikEdDebugDebug = function(objectName, object, usePopup) {
 
// string
Line 15,160 ⟶ 15,178:
// whole parse tree up
else if ( (typeof(object.tree) == 'object') && (typeof(object.lastOpenNode) == 'number') ) {
xxxx;
value = ': Parse tree upwards:\n';
var parseTreeIndex = object.lastOpenNode;
Line 15,214 ⟶ 15,231:
if ( (object.innerHTML != null) && (object.innerHTML != '') ) {
var html = object.innerHTML;
if (html.length > wikEdConfig['wikEd.config.debugInnerHtmlLength']) {
html = html.substr(0, wikEdConfig['wikEd.config.debugInnerHtmlLength'] - 3) + '...';
}
value += ', innerHTML: "' + html + '"';
Line 15,240 ⟶ 15,257:
// use debug textarea
var useDebug = false;
if (typeof(wikEdDebugwikEd.debug) != 'undefined') {
if (wikEdDebugwikEd.debug != null) {
useDebug = true;
}
}
if (useDebug == true) {
if (wikEdDebugOpenwikEd.debugOpen == false) {
wikEdDebugWrapperwikEd.debugWrapper.style.visibility = 'visible';
wikEdDebugwikEd.debug.style.display = 'block';
window.scroll(0, WikEdGetOffsetTopwikEd.GetOffsetTop(wikEdDebugwikEd.debug));
wikEdDebugOpenwikEd.debugOpen = true;
}
if (objectName == null) {
wikEdDebugwikEd.debug.value = '';
}
else {
Line 15,259 ⟶ 15,276:
// cut text if having reached maximum length
value = objectName + value + '\n';
if (wikEdDebugwikEd.debug.value.length > wikEdConfig['wikEd.config.debugMaxLength']) {
wikEdDebugwikEd.debug.value = value + wikEdDebugwikEd.debug.value.substr(0, wikEdConfig['wikEd.config.debugMaxLength'] * 2 / 3);
}
else {
wikEdDebugwikEd.debug.value = value + wikEdDebugwikEd.debug.value;
}
}
Line 15,288 ⟶ 15,305:
}
msg = msg.replace(/\'/g, '\\\'');
setTimeout('throw new Error(\'WikEdDebugwikEd.Debug: ' + msg + '\')', 0);
}
return;
Line 15,295 ⟶ 15,312:
 
//
// WikEdDebugTimerwikEd.DebugTimer: show all measured timepoints
// add a new time measurement: wikEdDebugTimerwikEd.debugTimer.push([1234, new Date]);
 
windowwikEd.WikEdDebugTimerDebugTimer = function() {
var times = '';
var start = wikEdDebugTimerwikEd.debugTimer[0][1].getTime();
var prev = 0;
for (var i = 0; i < wikEdDebugTimerwikEd.debugTimer.length; i ++) {
var curr = wikEdDebugTimerwikEd.debugTimer[i][1].getTime() - start;
var diff = curr - prev;
prev = curr;
times += wikEdDebugTimerwikEd.debugTimer[i][0] + ': ' + curr + ' ms (+ ' + diff + ' ms)\n';
}
WikEdDebugwikEd.Debug(times);
wikEdDebugTimerwikEd.debugTimer = [];
};
 
 
//
// WikEdInsertTagswikEd.InsertTags: overrides the insertTags function in wikibits.js used by the standard button toolbar and the editpage special chars
//
 
windowwikEd.WikEdInsertTagsInsertTags = function(openTag, closeTag, sampleText) {
 
if (wikEdUseWikEdwikEd.useWikEd == true) {
WikEdEditButtonwikEd.EditButton(document.getElementById('wikEdInsertTags'), 'wikEdInsertTags', [openTag, closeTag, sampleText]);
}
else if (WikEdInsertTagsOriginalwikEd.InsertTagsOriginal != null) {
WikEdInsertTagsOriginalwikEd.InsertTagsOriginal(openTag, closeTag, sampleText);
}
return;
Line 15,330 ⟶ 15,347:
 
//
// WikEdInsertAtCursorwikEd.InsertAtCursor: overrides the insertAtCursor function in wikia.com MediaWiki:Functions.js
//
 
windowwikEd.WikEdInsertAtCursorInsertAtCursor = function(myField, myValue) {
 
if (wikEdUseWikEdwikEd.useWikEd == true) {
if (myField == wikEdTextareawikEd.textarea) {
WikEdEditButtonwikEd.EditButton(document.getElementById('wikEdInsertTags'), 'wikEdInsertTags', [ myValue ]);
}
}
else if (WikEdInsertAtCursorOriginalwikEd.InsertAtCursorOriginal != null) {
WikEdInsertAtCursorOriginalwikEd.InsertAtCursorOriginal(myField, myValue);
}
return;
Line 15,348 ⟶ 15,365:
 
//
// WikEdExecuteHookwikEd.ExecuteHook: executes scheduled custom functions from functionsHook array (code copied to wikEdDiff.js)
//
 
windowwikEd.WikEdExecuteHookExecuteHook = function(functionsHook, onlyOnce) {
 
for (var i = 0; i < functionsHook.length; i ++) {
Line 15,364 ⟶ 15,381:
 
//
// WikEdInitUnicodewikEd.InitUnicode: define character tables used in WikedFixUnicodewikEd.FixUnicode()
// see http://kmi.open.ac.uk/projects/ceryle/doc/docs/NOTE-charents.html
 
windowwikEd.WikEdInitUnicodeInitUnicode = function() {
 
// define only once
if (wikEdSupportedCharswikEd.supportedChars != null) {
return;
}
 
// supported chars in Mozilla and IE
wikEd.supportedChars = [
wikEdSupportedChars = [
[ 'a1', 'iexcl'], // ¡
[ 'a2', 'cent'], // ¢
Line 15,595 ⟶ 15,612:
 
// reserved for internal wikEd use
wikEdReservedCharswikEd.reservedChars = [
[ '26', 'amp'], // &
[ '3c', 'lt'], // <
Line 15,603 ⟶ 15,620:
 
// special chars (spaces and invisible characters)
wikEdSpecialCharswikEd.specialChars = [
['2002', 'ensp'], //   en space
[ 'ad', 'shy'], // ­ soft hyphen
Line 15,615 ⟶ 15,632:
 
// unsupported chars in IE6
wikEdProblemCharswikEd.problemChars = [
[ '3d1', 'thetasym'], // ϑ
[ '3d2', 'upsih'], // ϒ
Line 15,645 ⟶ 15,662:
 
// index to all existing 253 HTML/XHTML character entities
var allCharEntities = wikEdSupportedCharswikEd.supportedChars.concat(wikEdReservedCharswikEd.reservedChars, wikEdSpecialCharswikEd.specialChars, wikEdProblemCharswikEd.problemChars);
for (var i = 0; i < allCharEntities.length; i ++) {
wikEdCharEntitiesByNamewikEd.charEntitiesByName[ allCharEntities[i][1] ] = String.fromCharCode(parseInt(allCharEntities[i][0], 16));
}
 
// syntax highlighting of ASCII control characters and invisibles (decimal value, title)
wikEd.controlCharHighlighting = {
wikEdControlCharHighlighting = {
'0': 'null',
'1': 'start of heading',
Line 15,688 ⟶ 15,705:
'8233': 'paragraph separator' // \u2028
};
for (var decimalValue in wikEdControlCharHighlightingwikEd.controlCharHighlighting) {
if (wikEdControlCharHighlightingwikEd.controlCharHighlighting.hasOwnProperty(decimalValue) == true) {
wikEdControlCharHighlightingStrwikEd.controlCharHighlightingStr += '\\' + String.fromCharCode(decimalValue);
}
}
 
// character syntax highlighting: strange spaces, hyphens, and dashes (decimal value, class = title)
wikEd.charHighlighting = {
wikEdCharHighlighting = {
'9': 'wikEdTab', // \u0009 ' '
'8194': 'wikEdEnSpace', // \u2002 ' '
Line 15,709 ⟶ 15,726:
'8722': 'wikEdMinusDash' // \u2212 '−'
};
for (var decimalValue in wikEdCharHighlightingwikEd.charHighlighting) {
if (wikEdCharHighlightingwikEd.charHighlighting.hasOwnProperty(decimalValue) == true) {
wikEdCharHighlightingStrwikEd.charHighlightingStr += '\\' + String.fromCharCode(decimalValue);
}
}
Line 15,719 ⟶ 15,736:
 
 
// call wikEd on startup, but not for the iframe under Greasemonkey
wikEd.Startup();
if (window == top) {
WikEdStartup();
}
 
 
// </nowiki></pre>