User:K1mm3/monobook.js

//

if (typeof(wikEd) == 'undefined') { window.wikEd = {}; }

// version info

wikEd.programVersion = '0.9.119c';

wikEd.programDate = 'October 06, 2013';

/*

Program description:

wikEd is a full-featured Wikipedia-integrated advanced text editor for regular to advanced wiki users.

wikEd features syntax highlighting with code check and reference and template folding,

on-page Show preview and Show changes, and advanced search and replace functions.

wikEd works under all web browsers except Internet Explorer and Opera.

The code has to be saved as UTF-8 in your editor to preserve Unicode characters like ♥ (heart symbol)

Greasemonkey metadata:

// ==UserScript==

// @name wikEd

// @namespace http://en.wikipedia.org/wiki/User:Cacycle/

// @description A full-featured in-browser editor for Wikipedia and other MediaWiki edit pages

// @include *

// @homepage http://en.wikipedia.org/wiki/User:Cacycle/wikEd

// @source http://en.wikipedia.org/wiki/User:Cacycle/wikEd.js

// @author Cacycle (http://en.wikipedia.org/wiki/User:Cacycle)

// @license Released into the public domain

// @grant GM_getValue

// @grant GM_log

// @grant GM_xmlhttpRequest

// ==/UserScript==

Installation:

PLEASE DO NOT COPY THE WHOLE PROGRAM in order to get the frequent updates and bug fixes and to save disk space!

See http://en.wikipedia.org/wiki/User:Cacycle/wikEd for installation instructions

  • /

'use strict';

//

// start of user configurable variables

//

//

// wikEd.InitGlobalsConfigs: initialize user configurable variables

//

wikEd.InitGlobalConfigs = function() {

// user readable texts, copy changes to http://en.wikipedia.org/wiki/User:Cacycle/wikEd_international_en.js, also defined in wikEdDiff.js

if (typeof(wikEd.config.text) == 'undefined') { wikEd.config.text = {}; }

// wikEd.InitText: define built-in user interface texts

wikEd.InitText = function() {

wikEd.InitObject(wikEd.config.text, {

// logo

'wikEdLogo alt': 'wikEd',

'wikEdLogo title': 'wikEd {wikEdProgramVersion} ({wikEdProgramDate}) Click to disable',

'wikEdLogo error alt': 'wikEd error',

'wikEdLogo error title': 'Loading error - wikEd {wikEdProgramVersion} ({wikEdProgramDate}) Click to disable',

'wikEdLogo browser alt': '(wikEd)',

'wikEdLogo browser title': 'Browser not supported - wikEd {wikEdProgramVersion} ({wikEdProgramDate})',

'wikEdLogo incompatible alt': '(wikEd)',

'wikEdLogo incompatible title': 'Incompatible script or gadget: {wikEdParameter} - wikEd {wikEdProgramVersion} ({wikEdProgramDate})',

'wikEdLogo disabled alt': '(wikEd)',

'wikEdLogo disabled title': 'Disabled - wikEd {wikEdProgramVersion} ({wikEdProgramDate}) Click to enable',

'wikEdLogo testVersion alt': 'wikEd_dev',

'wikEdLogo testVersion title': 'wikEd_dev (unstable test version) {wikEdProgramVersion} ({wikEdProgramDate}) Click to disable',

// top jumper

'wikEdScrollToEdit4 alt': 'Scroll to edit',

'wikEdScrollToEdit4 title': 'Scroll to edit field',

// button bar grip titles

'wikEdGripFormat title': 'Formatting buttons (click to hide or show)',

'wikEdGripTextify title': 'Textify and wikify buttons (click to hide or show)',

'wikEdGripCustom1 title': 'Custom buttons (click to hide or show)',

'wikEdGripFind title': 'Find buttons (click to hide or show)',

'wikEdGripFix title': 'Fixing buttons (click to hide or show)',

'wikEdGripCustom2 title': 'Custom buttons (click to hide or show)',

'wikEdGripControl title': 'wikEd control buttons (click to hide or show)',

// button bar background titles

'wikEdBarFormat title': '',

'wikEdBarTextify title': '',

'wikEdBarCustom1 title': '',

'wikEdBarFind title': '',

'wikEdBarFix title': '',

'wikEdBarCustom2 title': '',

'wikEdBarControl title': 'wikEd {wikEdProgramVersion} ({wikEdProgramDate})',

'wikEdBarPreview title': '',

'wikEdBarPreview2 title': '',

'wikEdBarJump title': '',

'wikEdBarPasted title': '',

// formatting buttons, top row

'wikEdUndo alt': 'Undo',

'wikEdUndo title': 'Undo',

'wikEdRedo alt': 'Redo',

'wikEdRedo title': 'Redo',

'wikEdBold alt': 'Bold',

'wikEdBold title': 'Bold text',

'wikEdItalic alt': 'Italic',

'wikEdItalic title': 'Italic text',

'wikEdUnderline alt': 'Underline',

'wikEdUnderline title': 'Underline text',

'wikEdStrikethrough alt': 'Strikethrough',

'wikEdStrikethrough title': 'Strikethrough text',

'wikEdNowiki alt': 'Nowiki',

'wikEdNowiki title': 'Nowiki markup text',

'wikEdSuperscript alt': 'Superscript',

'wikEdSuperscript title': 'Superscript text',

'wikEdSubscript alt': 'Subscript',

'wikEdSubscript title': 'Subscript text',

'wikEdRef alt': 'Ref',

'wikEdRef title': 'In-text reference (shift-click: named tag)',

'wikEdCase alt': 'Case',

'wikEdCase title': 'Toggle between lowercase, uppercase first, and uppercase',

'wikEdSort alt': 'Sort',

'wikEdSort title': 'Sort alphabetically',

'wikEdRedirect alt': 'Redirect',

'wikEdRedirect title': 'Create redirect, deletes whole text',

'wikEdUndoAll alt': 'Undo all',

'wikEdUndoAll title': 'Undo all changes',

'wikEdRedoAll alt': 'Redo all',

'wikEdRedoAll title': 'Redo all changes',

// formatting buttons, bottom row

'wikEdWikiLink alt': 'Link',

'wikEdWikiLink title': 'Wiki link',

'wikEdWebLink alt': 'Weblink',

'wikEdWebLink title': 'External weblink',

'wikEdHeading alt': 'Heading',

'wikEdHeading title': 'Increase heading levels (shift-click: decrease)',

'wikEdBulletList alt': 'Bullet list',

'wikEdBulletList title': 'Increase bulleted list level (shift-click: decrease)',

'wikEdNumberList alt': 'Number list',

'wikEdNumberList title': 'Increase numbered list level (shift-click: decrease)',

'wikEdIndentList alt': 'Indent list',

'wikEdIndentList title': 'Increase indention (shift-click: decrease)',

'wikEdDefinitionList alt': 'Def list',

'wikEdDefinitionList title': 'Definition list',

'wikEdImage alt': 'Image',

'wikEdImage title': 'Image',

'wikEdTable alt': 'Table',

'wikEdTable title': 'Table',

'wikEdReferences alt': 'References',

'wikEdReferences title': 'References location (shift-click: references section)',

'wikEdSign alt': 'Signature',

'wikEdSign title': 'Signature ~~~~ (shift-click: name only ~~~)',

// textify buttons

'wikEdWikify alt': 'Wikify',

'wikEdWikify title': 'Convert pasted content to wiki code, update highlighting',

'wikEdTextify alt': 'Textify',

'wikEdTextify title': 'Convert pasted content to plain text, update highlighting (shift-click: forced highlighting)',

'wikEdPastedWikify alt': 'Wikify pasted',

'wikEdPastedWikify title': 'Convert pasted content to wiki code',

'wikEdPastedTextify alt': 'Textify pasted',

'wikEdPastedTextify title': 'Convert pasted content to plain text',

'wikEdPastedClose alt': 'x',

'wikEdPastedClose title': 'Close',

// find and replace buttons, top row

'wikEdFindAll alt': 'Find all',

'wikEdFindAll title': 'Find all matches',

'wikEdFindPrev alt': 'Find prev',

'wikEdFindPrev title': 'Find previous match',

'wikEdFindSelect title': 'Select a previous search or jump to a heading',

'wikEdFindNext alt': 'Find next',

'wikEdFindNext title': 'Find next match (shift-click: get selection)',

'wikEdJumpPrev alt': 'Selected prev',

'wikEdJumpPrev title': 'Find the selected text backwards',

'wikEdJumpNext alt': 'Selected next',

'wikEdJumpNext title': 'Find the selected text forwards',

// find and replace buttons, bottom row

'wikEdReplaceAll alt': 'Replace all',

'wikEdReplaceAll title': 'Replace all matches in whole text or selection',

'wikEdReplacePrev alt': 'Replace prev',

'wikEdReplacePrev title': 'Replace previous match',

'wikEdReplaceSelect title': 'Select a previous replacement',

'wikEdReplaceNext alt': 'Replace next (shift-click: get selection)',

'wikEdReplaceNext title': 'Replace next match',

'wikEdCaseSensitive alt': 'Case sensitive',

'wikEdCaseSensitive title': 'Search is case sensitive',

'wikEdRegExp alt': 'RegExp',

'wikEdRegExp title': 'Search field is a regular expression',

'wikEdFindAhead alt': 'Find ahead',

'wikEdFindAhead title': 'Find ahead as you type (case-insensitive non-regexp search)',

// fix buttons, top row

'wikEdFixBasic alt': 'Fix basic',

'wikEdFixBasic title': 'Fix blanks and empty lines, also done by other fixing functions',

'wikEdFixHtml alt': 'Fix html',

'wikEdFixHtml title': 'Fix html to wikicode',

'wikEdFixCaps alt': 'Fix caps',

'wikEdFixCaps title': 'Fix caps in headers and lists',

'wikEdFixUnicode alt': 'Fix Unicode',

'wikEdFixUnicode title': 'Fix Unicode character representations',

'wikEdFixAll alt': 'Fix all',

'wikEdFixAll title': 'Fix basic, html, capitalization, and Unicode',

'wikEdFixRedirect alt': 'Fix redirects',

'wikEdFixRedirect title': 'Fix redirects',

// fix buttons, bottom row

'wikEdFixDashes alt': 'Fix dashes',

'wikEdFixDashes title': 'Fix dashes',

'wikEdFixPunct alt': 'Fix punctuation',

'wikEdFixPunct title': 'Fix spaces before punctuation',

'wikEdFixMath alt': 'Fix math',

'wikEdFixMath title': 'Fix math',

'wikEdFixChem alt': 'Fix chem',

'wikEdFixChem title': 'Fix chemical formulas',

'wikEdFixUnits alt': 'Fix units',

'wikEdFixUnits title': 'Fix units',

'wikEdFixRegExTypo alt': 'Fix typos',

'wikEdFixRegExTypo title': 'Fix typos using the AutoWikiBrowser RegExTypoFixer rules',

// wikEd control buttons, top row

'wikEdRefHide alt': '[REF, TEMPL]',

'wikEdRefHide title': 'Toggle [REF] and [TEMPL] hiding',

'wikEdRefButtonTooltip': 'Click to display hidden reference',

'wikEdTemplButtonTooltip': 'Click to display hidden template',

'wikEdCharEntityButtonTooltip': 'Click to display hidden character entity',

'wikEdRefButtonShowTooltip': 'Click to hide reference',

'wikEdTemplButtonShowTooltip': 'Click to hide template',

'wikEdCharEntityButtonShowTooltip': 'Click to hide character entity',

'wikEdTextZoom alt': 'Text zoom',

'wikEdTextZoom title': 'Text zoom cycling (shift-click: reverse)',

'wikEdClearHistory alt': 'Clear history',

'wikEdClearHistory title': 'Clear the find, replace, and summary history',

'wikEdScrollToPreview alt': 'Scroll to preview',

'wikEdScrollToPreview title': 'Scroll to preview field',

'wikEdScrollToEdit alt': 'Scroll to edit',

'wikEdScrollToEdit title': 'Scroll to edit field',

// wikEd control buttons, bottom row

'wikEdUseWikEd alt': 'Use wikEd',

'wikEdUseWikEd title': 'Toggle between classic text area and wikEd',

'wikEdHighlightSyntax alt': 'Syntax',

'wikEdHighlightSyntax title': 'Toggle automatic syntax highlighting',

'wikEdSource alt': 'Source',

'wikEdCloseToolbar title': 'Close the standard non-wikEd toolbar',

'wikEdCloseToolbar alt': 'Close toolbar',

'wikEdSource title': 'Show the source code for testing purposes',

'wikEdUsing alt': 'Using',

'wikEdUsing title': 'Automatically add \'\'…using wikEd\'\' to summaries',

'wikEdDiff alt': 'wikEdDiff',

'wikEdDiff title': 'Toggle automatic improved diff view',

'wikEdFullScreen alt': 'Fullscreen',

'wikEdFullScreen title': 'Toggle the fullscreen mode',

'wikEdTableMode alt': 'Table mode',

'wikEdTableMode title': 'Toggle table edit mode',

// summary buttons

'wikEdClearSummary alt': 'Clear summary',

'wikEdClearSummary title': 'Clear the summary field',

'wikEdSummarySelect title': 'Select a previous summary',

'wikEdPresetSummary': [

'/* */ ', 'copyedit', 'reply', 'article created', 'intro rewrite',

'linkfix', 'fixing typos', 'removing linkspam', 'reverting test',

'reverting vandalism', 'formatting source text', '{wikEdUsing}'

],

'wikEdSummaryUsing': '…using wikEd',

// button title acceskey

'alt-shift': 'alt-shift-',

// submit buttons

'wikEdLocalPreviewImg alt': 'Preview below',

'wikEdLocalPreview title': 'Show preview below',

'wikEdLocalDiffImg alt': 'Changes below',

'wikEdLocalDiff title': 'Show current changes below',

'wikEdHelpPageLink': ' | wikEd help', // use full link without {wikEdHomeBaseUrl} if the page is not on the English Wikipedia

// preview and changes buttons, top

'wikEdClose alt': 'Close',

'wikEdClose title': 'Close preview box',

'wikEdClose2 alt': 'Close',

'wikEdClose2 title': 'Close preview box',

'wikEdScrollToPreview2 alt': 'Scroll to preview',

'wikEdScrollToPreview2 title': 'Scroll to preview field',

'wikEdScrollToEdit2 alt': 'Scroll to edit',

'wikEdScrollToEdit2 title': 'Scroll to edit field',

// preview and changes buttons, bottom

'wikEdScrollToPreview3 alt': 'Scroll to preview',

'wikEdScrollToPreview3 title': 'Scroll to preview field',

'wikEdScrollToEdit3 alt': 'Scroll to edit',

'wikEdScrollToEdit3 title': 'Scroll to edit field',

// preview field

'wikEdPreviewLoading': '...',

'diffNotLoaded': 'Error: Local diff script not installed.',

// formatting functions

'image filename': 'filename',

'image width': 'width',

'table caption': 'caption',

'table heading': 'heading',

'table cell': 'cell',

'redirect article link': 'article link',

// fixing functions

'External links': 'External links',

'See also': 'See also',

'References': 'References',

// language specific wiki code

'wikicode Image': 'Image',

'wikicode File': 'File',

'wikicode Category': 'Category',

'wikicode Template': 'Template',

'wikEdReferencesSection': '\n== References ==\n\n\n',

'talk page': 'talk',

'history page': 'history',

'talk namespace': 'Talk',

'talk namespace suffix': '_talk', //// in French it is a prefix (Discussion_Utilisateur)

// hiding buttons

'hideRef': 'REF',

'hideTempl': 'TEMPL',

// shortened button texts

'shortenedPreview': 'Preview',

'shortenedChanges': 'Changes',

// follow link popup

'followLink': '(ctrl-click)',

'followLinkMac': '(cmd-click)',

// error message popups

'wikEdTableModeError': 'The table wikicode contains errors',

// auto updating

'wikEdGreasemonkeyAutoUpdate': 'wikEd Update:\n\nA new version of the GreaseMonkey script "wikEd" is available.\n\n\nIt will be downloaded from:\n\n{updateURL}',

// highlighting popups

'hyphenDash': 'Standard hyphen',

'figureDash': 'Figure dash',

'enDash': 'En dash',

'emDash': 'Em dash',

'barDash': 'Horizontal bar',

'minusDash': 'Minus sign',

'softHyphen': 'Soft hyphen',

'tab': 'Tab',

'enSpace': 'En space',

'emSpace': 'Em space',

'thinSpace': 'Thin space',

'ideographicSpace': 'Ideographic space',

// highlighting

'wikEdSignature3': 'Sign with username only',

'wikEdSignature4': 'Sign with user name and date',

'wikEdSignature5': 'Sign with date only',

// highlighting errors

'wikEdErrorHtmlUnknown': 'Unsupported HTML tag',

'wikEdErrorBoldItalic': 'Invalid bold / italic',

'wikEdErrorWrongClose': 'Close tag does not match',

'wikEdErrorNoOpen': 'Close tag has no match',

'wikEdErrorNoHandler': 'No handler',

'wikEdErrorNoClose': 'Open tag has no match',

'wikEdErrorNewline': 'Open tag closed by new line',

'wikEdErrorTemplHeading': 'Headings in templates are ignored',

'wikEdErrorTemplParam': 'Template/parameter tags do not match',

'wikEdErrorTemplParamAmbig': 'Template/parameter tags are ambiguous',

'wikEdErrorCodeInLinkName': 'Wikicode in link name',

'wikEdErrorCodeInTemplName': 'Wikicode in template name',

'wikEdErrorCodeInParamName': 'Wikicode in template parameter name',

// highlighting image preview

'wikEdFilePreview': 'Image preview',

// location search string functions

'iconPage': 'All icons and images used by wikEd. Save page as web page, complete to download all files into one folder.

',

// duplicated message

'clonedWarningsNote': 'Duplicated edit warnings (wikEd):'

}, wikEd.config.showMissingTranslations);

};

// define built-in user interface texts

wikEd.InitText();

// use local copies of images for testing (set to true in local copy of edit page), also defined in wikEdDiff.js

if (typeof(wikEd.config.useLocalImages) == 'undefined') { wikEd.config.useLocalImages = false; }

// path to local images for testing, also defined in wikEdDiff.js

if (typeof(wikEd.config.imagePathLocal) == 'undefined') { wikEd.config.imagePathLocal = 'file:///D:/wikEd/images/'; }

// path to images, also defined in wikEdDiff.js

if (typeof(wikEd.config.imagePath) == 'undefined') { wikEd.config.imagePath = '//upload.wikimedia.org/wikipedia/commons/'; }

// image filenames, also defined in wikEdDiff.js

if (typeof(wikEd.config.image) == 'undefined') { wikEd.config.image = {}; }

// wikEd.InitImages: define built-in image URLs

wikEd.InitImages = function() {

wikEd.InitImage(wikEd.config.image, {

'barDash': '5/52/WikEd_bar_dash.png',

'bold': '5/59/WikEd_bold.png',

'browser': '0/07/WikEd_disabled.png',

'bulletList': '6/62/WikEd_bullet_list.png',

'case': 'a/aa/WikEd_case.png',

'caseSensitive': '0/0d/WikEd_case_sensitive.png',

'clearHistory': 'c/c8/WikEd_clear_history.png',

'clearSummary': '2/2c/WikEd_clear_summary.png',

'close': '9/97/WikEd_close.png',

'closePasted': 'b/bc/WikEd_close_pasted.png',

'closeToolbar': '1/1d/WikEd_close_toolbar.png',

'ctrl': '1/10/WikEd_ctrl.png',

'definitionList': 'f/f5/WikEd_definition_list.png',

'diff': 'd/db/WikEd_diff.png',

'disabled': '0/07/WikEd_disabled.png',

'dummy': 'c/c5/WikEd_dummy.png',

'emDash': '5/58/WikEd_em_dash.png',

'emSpace': '3/3a/WikEd_em_space.png',

'enDash': 'f/fc/WikEd_en_dash.png',

'enSpace': '0/04/WikEd_en_space.png',

'error': '3/3e/WikEd_error.png',

'figureDash': '2/25/WikEd_figure_dash.png',

'findAhead': '3/34/WikEd_find_ahead.png',

'findAll': '7/75/WikEd_find_all.png',

'findNext': 'a/ad/WikEd_find_next.png',

'findPrev': 'f/f5/WikEd_find_prev.png',

'fixAll': '8/86/WikEd_fix_all.png',

'fixBasic': '3/30/WikEd_fix_basic.png',

'fixCaps': '0/00/WikEd_fix_caps.png',

'fixUnicode': 'd/d4/WikEd_fix_unicode.png',

'fixRedirect': 'f/f8/WikEd_fix_redirect.png',

'fixChem': 'e/e7/WikEd_fix_chem.png',

'fixDash': 'e/e5/WikEd_fix_dash.png',

'fixHtml': '0/05/WikEd_fix_html.png',

'fixMath': '3/3f/WikEd_fix_math.png',

'fixPunct': 'd/db/WikEd_fix_punct.png',

'fixRegExTypo': '9/94/WikEd_fix_reg-ex-typo.png',

'fixUnits': '6/69/WikEd_fix_units.png',

'textZoom': '7/71/WikEd_font_size.png',

'fullScreen': 'd/d3/WikEd_fullscreen.png',

'getFind': '9/96/WikEd_get_selection.png',

'grip': 'a/ad/WikEd_grip.png',

'heading': '0/07/WikEd_heading.png',

'highlightSyntax': '6/67/WikEd_syntax.png',

'ideographicSpace': 'c/c6/WikEd_ideographic_space.png',

'image': '3/37/WikEd_image.png',

'incompatible': '3/3e/WikEd_error.png',

'indentList': '7/7a/WikEd_indent_list.png',

'italic': 'd/d4/WikEd_italic.png',

'jumpNext': '5/54/WikEd_jump_next.png',

'logo': '6/67/WikEd_logo.png',

'minusDash': 'b/ba/WikEd_minus_dash.png',

'noFile': '8/88/WikEd_no_file.png',

'nowiki': '5/5a/WikEd_nowiki.png',

'numberList': '3/3b/WikEd_number_list.png',

'jumpPrev': 'c/c7/WikEd_jump_prev.png',

'preview': '3/31/WikEd_preview.png',

'redirect': 'f/fa/WikEd_redirect.png',

'redo': 'd/d7/WikEd_redo.png',

'ref': 'b/ba/WikEd_ref.png',

'refHide': '0/0b/WikEd_ref_hide.png',

'references': '6/66/WikEd_references.png',

'sign': 'd/d5/WikEd_sign.png',

'redoAll': '2/2d/WikEd_redo_all.png',

'resizeGrip': 'e/e1/WikEd_resize_grip.png',

'regExp': '6/6a/WikEd_regexp.png',

'replaceAll': '2/2a/WikEd_replace_all.png',

'replaceNext': 'b/b0/WikEd_replace_next.png',

'replacePrev': 'a/a1/WikEd_replace_prev.png',

'scrollToEdit': '1/13/WikEd_align_top.png',

'scrollToPreview': '3/37/WikEd_align_preview.png',

'scrollToEditDown': 'a/a8/WikEd_align_down.png',

'scrollToPreviewDown': '5/58/WikEd_align_preview_down.png',

'softHyphen': 'c/c7/WikEd_soft_hyphen.png',

'sort': '7/7c/WikEd_sort.png',

'source': '0/02/WikEd_source.png',

'strikethrough': '0/06/WikEd_strikethrough.png',

'subscript': '9/9e/WikEd_subscript.png',

'superscript': 'b/bf/WikEd_superscript.png',

'tab': 'e/e7/WikEd_tab.png',

'table': 'b/bd/WikEd_table.png',

'tableMode': 'e/ee/WikEd_table_edit.png',

'tableBG': '8/8a/WikEd_unknown.png',

'testVersion': '3/3e/WikEd_error.png',

'textify': 'c/cd/WikEd_textify.png',

'thinSpace': '5/56/WikEd_thin_space.png',

'underline': '2/21/WikEd_underline.png',

'undo': 'e/e6/WikEd_undo.png',

'undoAll': '0/08/WikEd_undo_all.png',

'unknown': '8/8a/WikEd_unknown.png',

'useWikEd': '6/67/WikEd_logo.png',

'using': 'e/e0/WikEd_using.png',

'webLink': '1/16/WikEd_weblink.png',

'wikEdDiff': 'c/c6/WikEdDiff.png',

'wikify': '9/9f/WikEd_wikify.png',

'wikiLink': '2/21/WikEd_wikilink.png'

});

};

// edit-frame css rules

if (typeof(wikEd.config.frameCSS) == 'undefined') { wikEd.config.frameCSS = {}; }

// wikEd.InitFrameCSS: define built-in edit frame css

wikEd.InitFrameCSS = function() {

wikEd.InitObject(wikEd.config.frameCSS, {

// frame

'.wikEdFrameHtml': 'height: 100%; width: 100%; padding: 0; margin: 0; background: transparent; background-image: url({wikEdImage:resizeGrip}); background-attachment: fixed; background-position: right bottom; background-repeat: no-repeat; line-height: normal;',

'.wikEdFrameBodyPlain': 'height: auto; min-height: 100%; width: auto; background: transparent; margin: 0; padding: 0; padding-left: 0.25em; overflow: auto; font-family: monospace;',

'.wikEdFrameBodySyntax': 'height: auto; min-height: 100%; width: auto; background: transparent; margin: 0; padding: 0; padding-left: 0.25em; overflow: auto; font-family: monospace; 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;',

'::selection': 'text-shadow: none; color: #fff; background: #006;',

'::-moz-selection': 'text-shadow: none; color: #fff; background: #006;',

'::-webkit-selection': 'text-shadow: none; color: #fff; background: #006;',

'.wikEdFrameBodyNewbie': 'height: auto; min-height: 100%; width: auto; background: transparent; margin: 0; padding: 0; padding-left: 0.25em; overflow: auto; font-family: monospace;',

// reselection / scroll to selection

'.wikEdScrollLineHeight': 'position: absolute;',

// syntax highlighting

'.wikEdError': 'background-image: url({wikEdImage: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;',

'.wikEdHtml': 'background: #e8e8e8; text-shadow: none;',

'.wikEdHtmlTag': 'color: #777;',

'.wikEdHtmlTagButtons': 'color: #777;',

'.wikEdHtmlUnknown': 'background-image: url({wikEdImage: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;',

'.wikEdSubscript': 'position: relative; top: 0.3em;',

'.wikEdSuperscript': 'position: relative; top: -0.3em;',

'.wikEdBold': 'font-weight: bold;',

'.wikEdItalic': 'font-style: italic;',

'.wikEdComment': 'background: #fff0d0; text-shadow: none; color: black; font-weight: normal; font-style: normal; text-decoration: none;',

'.wikEdKeep': '',

'.wikEdDel': 'text-decoration: line-through;',

'.wikEdIns': 'text-decoration: underline;',

'.wikEdPre': 'background: #f8e8e0; text-shadow: none;',

'.wikEdMath': 'background: #e8f0ff; text-shadow: none;',

'.wikEdScore': 'background: #fff8e0; text-shadow: none;',

'.wikEdNowiki': 'background: #f8e8e8; text-shadow: none;',

// horizontal rule

'.wikEdHr': 'background: #666; text-shadow: none; color: #ffffff;',

// wiki code

'.wikEdWiki': 'color: #777;',

'.wikEdRedir': 'color: #c00; font-weight: bold;',

'.wikEdSignature': 'color: #f00; font-weight: bold;',

'.wikEdMagic': 'color: #666; font-weight: bold; background: #e8e8e8; text-shadow: none;',

'.wikEdParserFunct': 'color: #f00;',

// headings

'.wikEdFrameBodySyntax .wikEdHeading': 'color: #000; font-weight: bold;',

'.wikEdFrameBodySyntax .wikEdHeadingWP': 'color: #000; font-weight: bold; background: #e8e8e8; text-shadow: none;',

'.wikEdFrameBodyNewbie .wikEdHeading':

'color: #000; font-weight: bold; color: #000; background: #eee; padding: 0 0.25em; border: 1px solid #ddd; font-size: larger; line-height: 1.5; text-shadow: white -1px -1px 0; ',

'.wikEdFrameBodyNewbie .wikEdHeadingWP':

'color: #000; font-weight: bold; color: #000; background: #ddd; padding: 0 0.25em; border: 1px solid #ccc; font-size: larger; line-height: 1.5; text-shadow: #eee -1px -1px 0; ',

// tables

'.wikEdTable': 'color: #000; background: #e8e8e8; text-shadow: none;',

'.wikEdTableTag': 'color: #777;',

// list

'.wikEdList': 'color: #000; background: #e8e8e8; text-shadow: none;',

'.wikEdListTag': 'font-weight: bold; font-family: monospace; vertical-align: text-bottom;',

// space-pre

'.wikEdSpace': 'color: #000; background: #e8e8e8; text-shadow: none;',

'.wikEdSpaceTag': 'background: #e8e8e8; text-shadow: none;',

// links

'.wikEdLinkTag': 'color: #777;',

// wiki links

'.wikEdLink': '',

'.wikEdLinkCrossNs': 'background: #ddd; text-shadow: none;',

'.wikEdLinkInter': 'color: #000; background: #ddd; text-shadow: none;',

'.wikEdLinkNs': 'color: #000; background: #ddd; text-shadow: none;',

'.wikEdLinkName': 'color: #00e; font-weight: bold;',

'.wikEdLinkTarget': 'color: #00e;',

'.wikEdLinkText': 'color: #00e; font-weight: bold;',

'.wikEdPMID': 'color: #00e;',

'.wikEdISBN': 'color: #00e;',

'.wikEdLinkInter span': 'font-weight: normal;',

'span.wikEdLinkText:hover': 'text-decoration: underline;',

'span.wikEdLinkName:hover': 'text-decoration: underline;',

'span.wikEdPMID:hover': 'text-decoration: underline;',

'span.wikEdISBN:hover': 'text-decoration: underline;',

// external links

'.wikEdURL': '',

'.wikEdURLName': 'color: #00e; font-weight: bold;',

'.wikEdURLTarget': 'color: #00e;',

'.wikEdURLText': 'color: #00e; font-weight: bold;',

'span.wikEdURLName:hover': 'text-decoration: underline;',

'span.wikEdURLText:hover': 'text-decoration: underline;',

// images

'.wikEdFile': 'background: rgb(213, 255, 176); background: rgba(199, 255, 149, 0.75); text-shadow: none;',

'.wikEdFrameBodyNewbie .wikEdFile':

'background: rgb(213, 255, 176); padding: 0.25em; margin-right: 0.25em; display: inline-block; border: 1px solid #082; margin: 1px;',

'.wikEdFileTag': 'color: #444;',

'.wikEdFileName': 'color: #00e;',

'.wikEdFileParam': 'color: #666;',

'.wikEdFileCaption': 'color: #000;',

'.wikEdFilePreview': 'border: 1px solid #c0ffa0; background: rgb(192, 192, 192) no-repeat 50% 50%; background: rgba(192, 192, 192, 0.75); text-shadow: none; position: absolute; right: 0; margin: 0.1em 0.25em; z-index: -1; border: none; padding: 1px; display: block;',

'.wikEdFrameBodyNewbie .wikEdFilePreview':

'position: static; float: right; clear: both; background: transparent; padding: 0; ',

// categories

'.wikEdCat': 'background: #ccc; text-shadow: none;',

'.wikEdCatName': 'color: #00e;',

'.wikEdCat .wikEdLinkInter': 'color: #000; background: #aaa; text-shadow: none;',

'.wikEdCat .wikEdLinkNs': 'color: #000; background: #ccc; text-shadow: none;',

'.wikEdCat .wikEdLinkText': 'color: #000; font-weight: normal;',

'.wikEdCat span.wikEdLinkText:hover': 'text-decoration: none;',

// refs

'.wikEdFrameBodySyntax .wikEdRefContainer': 'display: block; position: fixed; left: -10000em;',

'.wikEdRefContainer': 'position: relative; top: 1em;',

'.wikEdRefContainer button': 'padding: 0.1em; position: relative; top: -1em;',

'.wikEdRefButton': 'border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0; text-shadow: none;',

'.wikEdRefButtonShow': 'border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; text-shadow: none;',

'.wikEdRef, .wikEdRefShow': 'background: #e8e8e8; text-shadow: none; color: #666;',

'.wikEdReferences': 'background: #eee; text-shadow: none;',

'.wikEdReferencesTag': 'color: #444;',

'.wikEdFrameBodyNewbie .wikEdReferences':

'background: #eee; padding: 0.25em; display: inline-block; border: 1px solid black; vertical-align: middle;',

'.wikEdRefList': 'background: #eee; text-shadow: none;',

'.wikEdFrameBodyNewbie .wikEdRefList':

'background: #e8e8e8; padding: 0.25em; display: inline-block; border: 1px solid black; vertical-align: middle;',

'.wikEdRefName': 'color: #000;',

// templates

'.wikEdFrameBodySyntax .wikEdTemplContainer': 'display: block; position: fixed; left: -10000em;',

'.wikEdTemplContainer': 'position: relative; top: 1em;',

'.wikEdTemplContainer button': 'padding: 0.1em; position: relative; top: -1em;',

'.wikEdTemplButton': 'border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0; text-shadow: none;',

'.wikEdTemplButtonShow': 'border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; text-shadow: none;',

'.wikEdTempl, .wikEdTemplShow': 'background: #e8e8e8; text-shadow: none; color: #666;',

'.wikEdTemplNs, .wikEdTemplNsShow': 'background: #ccc; text-shadow: none;',

'.wikEdTemplTag': 'color: #777;',

'.wikEdTemplName': 'color: #509;',

'.wikEdTemplParam': '',

'.wikEdTemplMod': 'color: #f00; font-weight: bold;',

'.wikEdParam': 'background: #e8e8e8; text-shadow: none;',

'.wikEdParamName': 'color: #900;',

'.wikEdParamDefault': 'color: #000;',

// character entities

'.wikEdFrameBodySyntax .wikEdCharEntityContainer': 'display: block; position: fixed; left: -10000em;',

'.wikEdCharEntityContainer': 'position: relative; right: -0.25em;',

'.wikEdCharEntityContainer button':

'padding: 0; color: #000; font-weight: normal; font-family: monospace; position: relative; right: 0.25em; ',

'.wikEdCharEntityButton':

'border: 1px solid; border-color: #e8e8e8 #444 #444 #e8e8e8; background: #d8d4d0; border-color: rgba(255, 255, 255, 0.75) rgba(64, 64, 64, 0.5) rgba(64, 64, 64, 0.5) rgba(255, 255, 255, 0.75); background: rgba(192, 192, 192, 0.3); text-shadow: none;',

'.wikEdCharEntityButtonShow':

'border: 1px solid; border-color: #000 #e8e8e8 #e8e8e8 #000; background: #c8c4c0; border-color: rgba(64, 64, 64, 0.5) rgba(255, 255, 255, 0.75) rgba(255, 255, 255, 0.75) rgba(64, 64, 64, 0.5); background: rgba(192, 192, 192, 0.3); text-shadow: none;',

'.wikEdCharEntity, .wikEdCharEntityShow':

'color: #000; background: #e8e8e8; text-shadow: none;',

// links in references and templates

'.wikEdFrameBodySyntax .wikEdRef .wikEdURLName, .wikEdFrameBodySyntax .wikEdTempl .wikEdURLName, .wikEdFrameBodySyntax .wikEdRef .wikEdURLTarget, .wikEdFrameBodySyntax .wikEdTempl .wikEdURLTarget, .wikEdFrameBodySyntax .wikEdRef .wikEdURLText, .wikEdFrameBodySyntax .wikEdTempl .wikEdURLText': 'color: #66f; font-weight: normal;',

'.wikEdFrameBodySyntax .wikEdRef .wikEdLinkName, .wikEdFrameBodySyntax .wikEdTempl .wikEdLinkName, .wikEdFrameBodySyntax .wikEdRef .wikEdLinkTarget, .wikEdFrameBodySyntax .wikEdTempl .wikEdLinkTarget, .wikEdFrameBodySyntax .wikEdRef .wikEdLinkText, .wikEdFrameBodySyntax .wikEdTempl .wikEdLinkText': 'color: #66f; font-weight: normal;',

// wikEdFrameBodyNewbie ref and template hiding

'.wikEdFrameBodyNewbie .wikEdRefContainer + .wikEdRef, .wikEdFrameBodyNewbie .wikEdTemplContainer + .wikEdTempl, .wikEdFrameBodyNewbie .wikEdTemplContainer .wikEdTemplNs':

'position: fixed; left: -10000em;',

'.wikEdFrameBodyNewbie .wikEdRefContainer + .wikEdRefShow, .wikEdFrameBodyNewbie .wikEdTemplContainer + .wikEdTemplShow, .wikEdFrameBodyNewbie .wikEdTemplContainer + .wikEdTemplNsShow':

'display: block; position: relative; color: #000; background: #f8f8f8; font-weight: normal; border: 1px solid; border-color: #444 #ccc #ccc #444; padding: 1em 0.25em 1em 0.25em;',

'.wikEdFrameBodyNewbie .wikEdRefButton:before, .wikEdFrameBodyNewbie .wikEdTemplButton:before, .wikEdFrameBodyNewbie .wikEdRefButtonShow:before, .wikEdFrameBodyNewbie .wikEdTemplButtonShow:before':

'line-height: 0.75em; font-size: 65%; color: #000; font-family: sans-serif;',

'.wikEdRefButton:before, .wikEdTemplButton:before, .wikEdRefButtonShow:before, .wikEdTemplButtonShow:before':

'line-height: 0.75em; font-size: 65%; color: #000; font-family: sans-serif;',

'.wikEdFrameBodyNewbie .wikEdRefButton:before, .wikEdFrameBodyNewbie .wikEdRefButtonShow:before':

'content: "{wikEdText:hideRef}"',

'.wikEdFrameBodyNewbie .wikEdTemplButton:before, .wikEdFrameBodyNewbie .wikEdTemplButtonShow:before':

'content: "{wikEdText:hideTempl}";',

// wikEdFrameBodyNewbie char entity hiding

'.wikEdFrameBodyNewbie .wikEdCharEntity':

'position: fixed; left: -10000em;',

'.wikEdFrameBodyNewbie .wikEdCharEntityShow':

'display: inline; position: relative; color: #000; border: 1px solid; border-color: #444 #ccc #ccc #444; background: #f8f8f8; border-color: rgba(64, 64, 64, 0.5) rgba(255, 255, 255, 0.75) rgba(255, 255, 255, 0.75) rgba(64, 64, 64, 0.5); background: rgba(192, 192, 192, 0.3); font-weight: normal;',

'.wikEdCharEntityButton:before, .wikEdCharEntityButtonShow:before':

'',

// table edit

'.wikEdTableEdit': 'border: solid black; border-width: 1px 1px 0 0; background: red; text-shadow: none; background-image: url({wikEdImage: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;',

'.wikEdTableEdit tr': 'background: lightgrey; text-shadow: none; font-weight: bold;',

'.wikEdTableEdit caption': 'background: lightgrey; text-shadow: none; font-weight: normal;',////

// insert wikicode here

'.wikEdInsertHere': 'background: orange; text-shadow: none; font-style: italic;',

// colors

'.wikEdColorsLight': 'color: black; text-shadow: none;',

'.wikEdColorsDark': 'color: white; text-shadow: none;',

// dashes

'.wikEdFigureDash': 'background-image: url({wikEdImage:figureDash}); background-position: top right; background-repeat: no-repeat;',

'.wikEdEmDash': 'background-image: url({wikEdImage:emDash}); background-position: top left; background-repeat: no-repeat;',

'.wikEdEnDash': 'background-image: url({wikEdImage:enDash}); background-position: top left; background-repeat: no-repeat;',

'.wikEdBarDash': 'background-image: url({wikEdImage:barDash}); background-position: top left; background-repeat: no-repeat;',

'.wikEdMinusDash': 'background-image: url({wikEdImage:minusDash}); background-position: top left; background-repeat: no-repeat;',

'.wikEdSoftHyphen': 'background-image: url({wikEdImage: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({wikEdImage:tab}); background-position: bottom right; background-repeat: no-repeat;',

'.wikEdTabPlain': 'white-space: pre;',

'.wikEdCtrl': 'white-space: pre; background-image: url({wikEdImage:ctrl}); background-position: center center; background-repeat: no-repeat; margin: 0 1px;',

'.wikEdCtrl:before': 'content: \'\xa0\'',

'.wikEdEmSpace': 'background-image: url({wikEdImage:emSpace}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 3px;',

'.wikEdEnSpace': 'background-image: url({wikEdImage:enSpace}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 3px;',

'.wikEdThinSpace': 'background-image: url({wikEdImage:thinSpace}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 3px;',

'.wikEdIdeographicSpace': 'background-image: url({wikEdImage:ideographicSpace}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 3px;'

});

};

// main window css rules

if (typeof(wikEd.config.mainCSS) == 'undefined') { wikEd.config.mainCSS = {}; }

// wikEd.InitMainCSS: define built-in main window css

wikEd.InitMainCSS = function() {

wikEd.InitObject(wikEd.config.mainCSS, {

// logo

'.wikEdLogoList': 'list-style-type: none;',

'.wikEdLogo': 'margin-left: 0.5em;',

'.wikEdLogoFallBack': 'margin: 0.25em 0 0.25em 0.5em; float: right;'

});

};

// main window css rules for edit pages only

if (typeof(wikEd.config.mainEditCSS) == 'undefined') { wikEd.config.mainEditCSS = {}; }

// wikEd.InitMainEditCSS: define built-in main window css for edit pages only

wikEd.InitMainEditCSS = function() {

wikEd.InitObject(wikEd.config.mainEditCSS, {

// combo input box

'.wikEdCombo': '',

// wikEd button areas

// button bar margins

'.wikEdButtonBarFormat': 'margin: 0 8px 3px 1px; float: left;',

'.wikEdButtonBarTextify': 'margin: 0 8px 3px 1px; float: left;',

'.wikEdButtonBarCustom1': 'margin: 0 8px 3px 1px; float: left;',

'.wikEdButtonBarFind': 'margin: 0 8px 3px 1px; float: left;',

'.wikEdButtonBarFix': 'margin: 0 8px 3px 1px; float: left;',

'.wikEdButtonBarCustom2': 'margin: 0 8px 3px 1px; float: left;',

'.wikEdButtonBarControl': 'margin: 0 1px 3px 0; float: right;',

'.wikEdButtonBarPreview': 'margin: 0 0 0.15em 0.6em; float: right;',

'.wikEdButtonBarPreviewFull': 'margin: -0.2em 0 0 0.6em; float: right;',

'.wikEdButtonBarPreview2': 'margin: 0.2em 0 0.4em 0; float: right;',

'.wikEdButtonBarJump': 'margin: 0 0 0 0.6em; float: right;',

'.wikEdButtonBarPasted': 'position: absolute;',

// button bar inner wrapper: border (hidden: invisible)

'.wikEdButtonBarInnerWrapperVisible': 'border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; line-height: 1em; background: #d4d0cc;',

'.wikEdButtonBarInnerWrapperHidden': '',

// button bar grip wrapper: invisible (hidden: border)

'.wikEdButtonBarGripWrapperVisible': 'float: left;',

'.wikEdButtonBarGripWrapperHidden': 'float: left; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0;',

// button bar buttons wrapper: invisible (hidden: border)

'.wikEdButtonBarButtonsWrapperVisible': 'float: left;',

'.wikEdButtonBarButtonsWrapperHidden': 'float: left; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; z-index: 4;',

// button bar grip

'.wikEdButtonBarGrip': 'background: #d4d0cc; padding: 0; background-image: url({wikEdImage:grip}); background-repeat: repeat-y; cursor: pointer;',

// button bar buttons

'.wikEdButtonsFormat': 'padding: 2px 2px 0 0px;',

'.wikEdButtonsTextify': 'padding: 2px 2px 0 0px;',

'.wikEdButtonsCustom1': 'padding: 2px 2px 0 0px;',

'.wikEdButtonsFind': 'padding: 2px 2px 0 0px;',

'.wikEdButtonsFix': 'padding: 2px 2px 0 0px;',

'.wikEdButtonsCustom2': 'padding: 2px 2px 0 0px;',

'.wikEdButtonsControl': 'padding: 2px 2px 0 1px;',

'.wikEdButtonsPasted': 'padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; background: rgba(212, 208, 204, 0.6);',

'.wikEdButtonsPasted img': 'border-color: rgba(0, 0, 0, 0) !important; background-color: rgba(0, 0, 0, 0) !important;',

'.wikEdButtonsPasted img:hover': 'background-color: #e4e0dd !important;',

'.wikEdButtonsPreview': 'padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; background: #d4d0cc;',

'.wikEdButtonsPreviewFull': 'padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; background: #d4d0cc;',

'.wikEdButtonsPreview2': 'padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; background: #d4d0cc;',

'.wikEdButtonsJump': 'padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; background: #d4d0cc;',

// wikEd buttons (!important for devmo skin)

'.wikEdButton': 'vertical-align: text-top; font-size: small; text-decoration: underline; margin: 1px 2px; padding: 0; background: #d4d0cc; border: 1px #d4d0cc solid !important; cursor: pointer;',

'.wikEdButton:hover': 'background: #e4e0dd; border: 1px outset !important; cursor: pointer;',

'.wikEdButton:active': 'background: #e4e0dc; border: 1px inset !important; cursor: pointer;',

'.wikEdButtonSolo': 'vertical-align: text-top; font-size: small; text-decoration: underline; margin: 1px 2px; padding: 0; background: #d4d0cc; border: 1px #d4d0cc solid !important; cursor: pointer;',

'.wikEdButtonSolo:hover': 'background: #e4e0dd; border: 1px outset !important; cursor: pointer;',

'.wikEdButtonChecked': 'vertical-align: text-top; font-size: small; text-decoration: none; margin: 1px 2px; padding: 0; background: #ccc8c3; border: 1px solid !important; border-color: black white white black !important; cursor: pointer;',

'.wikEdButtonUnchecked': 'vertical-align: text-top; font-size: small; text-decoration: none; margin: 1px 2px; padding: 0; background: #ddd8d3; border: 1px solid !important; border-color: white black black white !important; cursor: pointer;',

'.wikEdButtonPressed': 'vertical-align: text-top; font-size: small; text-decoration: none; margin: 1px 2px; padding: 0; background: #ccc8c3; border: 1px solid !important; border-color: black white white black !important; cursor: wait;',

'.wikEdButtonInactive': 'vertical-align: text-top; font-size: small; text-decoration: underline; margin: 1px 2px; padding: 0; background: #c0c0c0; border: 1px #b0b0b0 solid !important; cursor: not-allowed',

'.wikEdLocalPreview': 'vertical-align: top; margin: 0 0.33em 0 0.15em; padding: 0;',

'.wikEdLocalDiff': 'vertical-align: top; margin: 0 0.33em 0 0.15em; padding: 0;',

'input#wpDiff, input#wpPreview': 'margin-right: 0;', // monobook fix

'.wikEdButtonDummy': 'vertical-align: text-top; margin: 1px 2px; padding: 1px; background: #d4d0cc;',

// preview box

'.wikEdPreviewBoxOuter': 'clear: both; margin: 0; border-width: 1px; border-style: solid; border-color: #808080 #d0d0d0 #d0d0d0 #808080;',

'.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 and replace fields

'.wikEdFindComboInput, .wikEdReplaceComboInput': 'position: relative; margin: 0 5px; top: -1px; white-space: nowrap; vertical-align: bottom; padding: 0; line-height: 1.5em;',

'#wikEdFindText, #wikEdReplaceText': 'font-family: monospace; margin: 0; position: absolute; left: 0; top: 0; z-index: 2; vertical-align: bottom; width: 170px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; height: 18px; ',

'#wikEdFindSelect, #wikEdReplaceSelect': 'font-family: monospace; margin: 0; position: relative; left: 0; top: 0; z-index: 1; vertical-align: bottom; width: 190px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; height: 18px; ',

// summary field

'.wikEdSummaryComboInput': 'position: relative; margin: 0 0 0 2px; top: 0; white-space: nowrap; vertical-align: bottom; padding: 0; line-height: 2em; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; ',

'.wikEdSummaryText': 'padding: 0; margin: 0; position: absolute; left: 0; top: 0; z-index: 2; vertical-align: bottom; width: auto; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; height: 21px; ',

'.wikEdSummarySelect': 'padding: 0; margin: 0; position: relative; left: 0; top: 0; z-index: 1; vertical-align: bottom; width: auto; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; height: 21px; ',

// space around submit buttons

'.editButtons': '',

// frame (frame container border will be removed if textarea has none; frame must not have a border)

'.wikEdFrameOuter': 'float: left; width: auto; border: 1px solid; border-color: #808080 #d0d0d0 #d0d0d0 #808080;',

'.wikEdFrameInner': 'float: left; width: auto; background: white; border: 1px solid; border-color: #404040 #ffffff #ffffff #404040; line-height: 0; position: relative;',

'.wikEdFrame': 'border: 0;',

// summary

'.wikEdSummaryWrapper': 'margin: 0 0 0.4em 0; width: 100%',

'.wikEdSummaryWrapperTop': 'margin: 0.1em 0 0.4em 0; width: 100%',

'#wpSummaryLabel': 'margin: 0;',

'.editOptions': 'position: relative; top: 0.1em;',

'.wikEdClearSummaryForm': 'display: inline;',

'.wikEdClearSummary': 'vertical-align: 0%; margin: 0 0 0 0.5em; padding: 1px; height: 21px; width: 18px; ',

'#wikEdClearSummaryImg': 'vertical-align: 5%;',

// input wrapper

'.wikEdInputWrapper': 'z-index: 100; clear: both; margin-top: 0.5em;',

'.wikEdInputWrapperFull': 'position: fixed; top: 0; left: 0; right: 0; padding: 4px; background: white; z-index: 100;',

// other wrappers

'.wikEdEditorWrapper': '',

'.wikEdToolbarWrapper': 'margin: 0 0 0.25em 0;',

'.wikEdButtonBarWrapper': '',

'.wikEdCaptchaWrapper': '',

'.wikEdDebugWrapper': 'clear: both; margin: 0 0 0.25em 0;',

'.wikEdEditWrapper': 'clear: both;',

'.wikEdTextareaWrapper': '',

'.wikEdFrameWrapper': '',

'.wikEdConsoleWrapper': 'clear: both; padding-top: 0.25em;',

'.wikEdButtonsWrapper': '',

'.wikEdSummaryInputWrapper': 'display: inline; white-space: nowrap;',

'.wikEdSubmitWrapper': '',

'.wikEdSubmitButtonsWrapper': 'float: left;',

'.wikEdEditOptionsWrapper': 'float: left; margin-right: 1em;',

'.wikEdEditHelp': 'float: left: display: inline-block; white-space: nowrap;',

'.wikEdLocalPrevWrapper': 'margin: 0.5em 0 0 0;',

'.wikEdInsertWrapper': '',

// various

'.wikEdEditOptions': 'display: inline-block; white-space: nowrap; vertical-align: text-top;',

'.wikEdEditOptions LABEL': 'vertical-align: text-bottom;',

'#editpage-specialchars': 'clear: both;',

'#wikEdClonedWarnings': '',

'#wikEdClonedWarningsNote': 'background: #fff; color: #888; font-size: 75%; display: inline;',

// wDiff

'.wDiffParagraph:before': 'content: "¶";'

});

};

// buttons

if (typeof(wikEd.config.button) == 'undefined') { wikEd.config.button = {}; }

// wikEd.InitButton: define built-in buttons

wikEd.InitButton = function() {

wikEd.InitObject(wikEd.config.button, {

// button number: [id, class, tooltip, image url, width, height, alt text, onclick handler code were obj is the button element]

// format top

1: ['wikEdUndo', 'wikEdButtonInactive', wikEd.config.text['wikEdUndo title'], wikEd.config.image['undo'], '16', '16', wikEd.config.text['wikEdUndo alt'], 'wikEd.EditButton(obj, obj.id);' ],

2: ['wikEdRedo', 'wikEdButtonInactive', wikEd.config.text['wikEdRedo title'], wikEd.config.image['redo'], '16', '16', wikEd.config.text['wikEdRedo alt'], 'wikEd.EditButton(obj, obj.id);' ],

3: ['wikEdBold', 'wikEdButton', wikEd.config.text['wikEdBold title'], wikEd.config.image['bold'], '16', '16', wikEd.config.text['wikEdBold alt'], 'wikEd.EditButton(obj, obj.id);' ],

4: ['wikEdItalic', 'wikEdButton', wikEd.config.text['wikEdItalic title'], wikEd.config.image['italic'], '16', '16', wikEd.config.text['wikEdItalic alt'], 'wikEd.EditButton(obj, obj.id);' ],

5: ['wikEdUnderline', 'wikEdButton', wikEd.config.text['wikEdUnderline title'], wikEd.config.image['underline'], '16', '16', wikEd.config.text['wikEdUnderline alt'], 'wikEd.EditButton(obj, obj.id);' ],

6: ['wikEdStrikethrough', 'wikEdButton', wikEd.config.text['wikEdStrikethrough title'], wikEd.config.image['strikethrough'], '16', '16', wikEd.config.text['wikEdStrikethrough alt'], 'wikEd.EditButton(obj, obj.id);' ],

7: ['wikEdNowiki', 'wikEdButton', wikEd.config.text['wikEdNowiki title'], wikEd.config.image['nowiki'], '16', '16', wikEd.config.text['wikEdNowiki alt'], 'wikEd.EditButton(obj, obj.id);' ],

8: ['wikEdSuperscript', 'wikEdButton', wikEd.config.text['wikEdSuperscript title'], wikEd.config.image['superscript'], '16', '16', wikEd.config.text['wikEdSuperscript alt'], 'wikEd.EditButton(obj, obj.id);' ],

9: ['wikEdSubscript', 'wikEdButton', wikEd.config.text['wikEdSubscript title'], wikEd.config.image['subscript'], '16', '16', wikEd.config.text['wikEdSubscript alt'], 'wikEd.EditButton(obj, obj.id);' ],

10: ['wikEdRef', 'wikEdButton', wikEd.config.text['wikEdRef title'], wikEd.config.image['ref'], '16', '16', wikEd.config.text['wikEdRef alt'], 'if (!event.shiftKey) { wikEd.EditButton(obj, \'wikEdRef\'); } else { wikEd.EditButton(obj, \'wikEdRefNamed\'); }' ],

12: ['wikEdCase', 'wikEdButton', wikEd.config.text['wikEdCase title'], wikEd.config.image['case'], '16', '16', wikEd.config.text['wikEdCase alt'], 'wikEd.EditButton(obj, obj.id);' ],

80: ['wikEdSort', 'wikEdButton', wikEd.config.text['wikEdSort title'], wikEd.config.image['sort'], '16', '16', wikEd.config.text['wikEdSort alt'], 'wikEd.EditButton(obj, obj.id);' ],

25: ['wikEdRedirect', 'wikEdButton', wikEd.config.text['wikEdRedirect title'], wikEd.config.image['redirect'], '16', '16', wikEd.config.text['wikEdRedirect alt'], 'wikEd.EditButton(obj, obj.id);' ],

13: ['wikEdUndoAll', 'wikEdButton', wikEd.config.text['wikEdUndoAll title'], wikEd.config.image['undoAll'], '16', '16', wikEd.config.text['wikEdUndoAll alt'], 'wikEd.EditButton(obj, obj.id);' ],

14: ['wikEdRedoAll', 'wikEdButtonInactive', wikEd.config.text['wikEdRedoAll title'], wikEd.config.image['redoAll'], '16', '16', wikEd.config.text['wikEdRedoAll alt'], 'wikEd.EditButton(obj, obj.id);' ],

// format bottom

15: ['wikEdWikiLink', 'wikEdButton', wikEd.config.text['wikEdWikiLink title'], wikEd.config.image['wikiLink'], '16', '16', wikEd.config.text['wikEdWikiLink alt'], 'wikEd.EditButton(obj, obj.id);' ],

16: ['wikEdWebLink', 'wikEdButton', wikEd.config.text['wikEdWebLink title'], wikEd.config.image['webLink'], '16', '16', wikEd.config.text['wikEdWebLink alt'], 'wikEd.EditButton(obj, obj.id);' ],

17: ['wikEdHeading', 'wikEdButton', wikEd.config.text['wikEdHeading title'], wikEd.config.image['heading'], '16', '16', wikEd.config.text['wikEdHeading alt'], 'if (!event.shiftKey) { wikEd.EditButton(obj, \'wikEdIncreaseHeading\'); } else { wikEd.EditButton(obj, \'wikEdDecreaseHeading\'); }' ],

19: ['wikEdBulletList', 'wikEdButton', wikEd.config.text['wikEdBulletList title'], wikEd.config.image['bulletList'], '16', '16', wikEd.config.text['wikEdBulletList alt'], 'if (!event.shiftKey) { wikEd.EditButton(obj, \'wikEdIncreaseBulletList\'); } else { wikEd.EditButton(obj, \'wikEdDecreaseBulletList\'); }' ],

20: ['wikEdNumberList', 'wikEdButton', wikEd.config.text['wikEdNumberList title'], wikEd.config.image['numberList'], '16', '16', wikEd.config.text['wikEdNumberList alt'], 'if (!event.shiftKey) { wikEd.EditButton(obj, \'wikEdIncreaseNumberList\'); } else { wikEd.EditButton(obj, \'wikEdDecreaseNumberList\'); }' ],

21: ['wikEdIndentList', 'wikEdButton', wikEd.config.text['wikEdIndentList title'], wikEd.config.image['indentList'], '16', '16', wikEd.config.text['wikEdIndentList alt'], 'if (!event.shiftKey) { wikEd.EditButton(obj, \'wikEdIncreaseIndentList\'); } else { wikEd.EditButton(obj, \'wikEdDecreaseIndentList\'); }' ],

22: ['wikEdDefinitionList', 'wikEdButton', wikEd.config.text['wikEdDefinitionList title'], wikEd.config.image['definitionList'], '16', '16', wikEd.config.text['wikEdDefinitionList alt'], 'wikEd.EditButton(obj, obj.id);' ],

23: ['wikEdImage', 'wikEdButton', wikEd.config.text['wikEdImage title'], wikEd.config.image['image'], '16', '16', wikEd.config.text['wikEdImage alt'], 'wikEd.EditButton(obj, obj.id);' ],

24: ['wikEdTable', 'wikEdButton', wikEd.config.text['wikEdTable title'], wikEd.config.image['table'], '16', '16', wikEd.config.text['wikEdTable alt'], 'wikEd.EditButton(obj, obj.id);' ],

11: ['wikEdReferences', 'wikEdButton', wikEd.config.text['wikEdReferences title'], wikEd.config.image['references'], '16', '16', wikEd.config.text['wikEdReferences alt'], 'if (!event.shiftKey) { wikEd.EditButton(obj, obj.id); } else { wikEd.EditButton(obj, \'wikEdReferencesSection\'); }' ],

84: ['wikEdSign', 'wikEdButton', wikEd.config.text['wikEdSign title'], wikEd.config.image['sign'], '16', '16', wikEd.config.text['wikEdSign alt'], 'if (!event.shiftKey) { wikEd.EditButton(obj, obj.id); } else { wikEd.EditButton(obj, \'wikEdSignName\'); }' ],

// wikify, textify

26: ['wikEdWikify', 'wikEdButton', wikEd.config.text['wikEdWikify title'], wikEd.config.image['wikify'], '16', '16', wikEd.config.text['wikEdWikify alt'], 'wikEd.EditButton(obj, obj.id);' ],

27: ['wikEdTextify', 'wikEdButton', wikEd.config.text['wikEdTextify title'], wikEd.config.image['textify'], '16', '16', wikEd.config.text['wikEdTextify alt'], 'if (event.shiftKey) { wikEd.EditButton(obj, obj.id, \'shift\'); } else { wikEd.EditButton(obj, obj.id); }' ],

// control top

77: ['wikEdRefHide', 'wikEdButtonUnchecked', wikEd.config.text['wikEdRefHide title'], wikEd.config.image['refHide'], '16', '16', wikEd.config.text['wikEdRefHide alt'], 'wikEd.Button(obj, obj.id, true);' ],

29: ['wikEdTextZoom', 'wikEdButton', wikEd.config.text['wikEdTextZoom title'], wikEd.config.image['textZoom'], '16', '16', wikEd.config.text['wikEdTextZoom alt'], 'if (!event.shiftKey) { wikEd.Button(obj, \'wikEdTextZoomDown\'); } else { wikEd.Button(obj, \'wikEdTextZoomUp\'); }' ],

30: ['wikEdClearHistory', 'wikEdButton', wikEd.config.text['wikEdClearHistory title'], wikEd.config.image['clearHistory'], '16', '16', wikEd.config.text['wikEdClearHistory alt'], 'wikEd.Button(obj, obj.id);' ],

31: ['wikEdScrollToPreview', 'wikEdButton', wikEd.config.text['wikEdScrollToPreview title'], wikEd.config.image['scrollToPreviewDown'], '16', '16', wikEd.config.text['wikEdScrollToPreview alt'], 'wikEd.Button(obj, obj.id);' ],

32: ['wikEdScrollToEdit', 'wikEdButton', wikEd.config.text['wikEdScrollToEdit title'], wikEd.config.image['scrollToEditDown'], '16', '16', wikEd.config.text['wikEdScrollToEdit alt'], 'wikEd.Button(obj, obj.id);' ],

// control bottom

33: ['wikEdUseWikEd', 'wikEdButtonChecked', wikEd.config.text['wikEdUseWikEd title'], wikEd.config.image['useWikEd'], '16', '16', wikEd.config.text['wikEdUseWikEd alt'], 'if (!event.ctrlKey) { wikEd.Button(obj, obj.id, true); } else { wikEd.DebugInfo(event); }' ],

34: ['wikEdHighlightSyntax', 'wikEdButtonUnchecked', wikEd.config.text['wikEdHighlightSyntax title'], wikEd.config.image['highlightSyntax'], '16', '16', wikEd.config.text['wikEdHighlightSyntax alt'], 'wikEd.Button(obj, obj.id, true);' ],

35: ['wikEdSource', 'wikEdButton', wikEd.config.text['wikEdSource title'], wikEd.config.image['source'], '16', '16', wikEd.config.text['wikEdSource alt'], 'wikEd.EditButton(obj, obj.id);' ],

75: ['wikEdCloseToolbar', 'wikEdButtonUnchecked', wikEd.config.text['wikEdCloseToolbar title'], wikEd.config.image['closeToolbar'], '16', '16', wikEd.config.text['wikEdCloseToolbar alt'], 'wikEd.Button(obj, obj.id, true);' ],

36: ['wikEdUsing', 'wikEdButtonUnchecked', wikEd.config.text['wikEdUsing title'], wikEd.config.image['using'], '16', '16', wikEd.config.text['wikEdUsing alt'], 'wikEd.Button(obj, obj.id, true);' ],

37: ['wikEdFullScreen', 'wikEdButtonUnchecked', wikEd.config.text['wikEdFullScreen title'], wikEd.config.image['fullScreen'], '16', '16', wikEd.config.text['wikEdFullScreen alt'], 'wikEd.Button(obj, obj.id, true);' ],

79: ['wikEdTableMode', 'wikEdButtonUnchecked', wikEd.config.text['wikEdTableMode title'], wikEd.config.image['tableMode'], '16', '16', wikEd.config.text['wikEdTableMode alt'], 'wikEd.Button(obj, obj.id, true);' ],

// find top

39: ['wikEdFindAll', 'wikEdButton', wikEd.config.text['wikEdFindAll title'], wikEd.config.image['findAll'], '16', '16', wikEd.config.text['wikEdFindAll alt'], 'wikEd.EditButton(obj, obj.id);' ],

40: ['wikEdFindPrev', 'wikEdButton', wikEd.config.text['wikEdFindPrev title'], wikEd.config.image['findPrev'], '16', '16', wikEd.config.text['wikEdFindPrev alt'], 'wikEd.EditButton(obj, obj.id);' ],

41: ['wikEdFindNext', 'wikEdButton', wikEd.config.text['wikEdFindNext title'], wikEd.config.image['findNext'], '16', '16', wikEd.config.text['wikEdFindNext alt'], 'if (event.shiftKey) { wikEd.EditButton(obj, obj.id, \'shift\'); } else { wikEd.EditButton(obj, obj.id); }' ],

43: ['wikEdJumpPrev', 'wikEdButton', wikEd.config.text['wikEdJumpPrev title'], wikEd.config.image['jumpPrev'], '16', '16', wikEd.config.text['wikEdJumpPrev alt'], 'wikEd.EditButton(obj, obj.id);' ],

44: ['wikEdJumpNext', 'wikEdButton', wikEd.config.text['wikEdJumpNext title'], wikEd.config.image['jumpNext'], '16', '16', wikEd.config.text['wikEdJumpNext alt'], 'wikEd.EditButton(obj, obj.id);' ],

// find bottom

46: ['wikEdReplaceAll', 'wikEdButton', wikEd.config.text['wikEdReplaceAll title'], wikEd.config.image['replaceAll'], '16', '16', wikEd.config.text['wikEdReplaceAll alt'], 'wikEd.EditButton(obj, obj.id);' ],

47: ['wikEdReplacePrev', 'wikEdButton', wikEd.config.text['wikEdReplacePrev title'], wikEd.config.image['replacePrev'], '16', '16', wikEd.config.text['wikEdReplacePrev alt'], 'wikEd.EditButton(obj, obj.id);' ],

48: ['wikEdReplaceNext', 'wikEdButton', wikEd.config.text['wikEdReplaceNext title'], wikEd.config.image['replaceNext'], '16', '16', wikEd.config.text['wikEdReplaceNext alt'], 'if (event.shiftKey) { wikEd.EditButton(obj, obj.id, \'shift\'); } else { wikEd.EditButton(obj, obj.id); }' ],

49: ['wikEdCaseSensitive', 'wikEdButtonUnchecked', wikEd.config.text['wikEdCaseSensitive title'], wikEd.config.image['caseSensitive'], '16', '16', wikEd.config.text['wikEdCaseSensitive alt'], 'wikEd.Button(obj, obj.id, true);' ],

50: ['wikEdRegExp', 'wikEdButtonUnchecked', wikEd.config.text['wikEdRegExp title'], wikEd.config.image['regExp'], '16', '16', wikEd.config.text['wikEdRegExp alt'], 'wikEd.Button(obj, obj.id, true);' ],

51: ['wikEdFindAhead', 'wikEdButtonUnchecked', wikEd.config.text['wikEdFindAhead title'], wikEd.config.image['findAhead'], '16', '16', wikEd.config.text['wikEdFindAhead alt'], 'wikEd.Button(obj, obj.id, true);' ],

// fix top

52: ['wikEdFixBasic', 'wikEdButton', wikEd.config.text['wikEdFixBasic title'], wikEd.config.image['fixBasic'], '16', '16', wikEd.config.text['wikEdFixBasic alt'], 'wikEd.EditButton(obj, obj.id);' ],

53: ['wikEdFixHtml', 'wikEdButton', wikEd.config.text['wikEdFixHtml title'], wikEd.config.image['fixHtml'], '16', '16', wikEd.config.text['wikEdFixHtml alt'], 'wikEd.EditButton(obj, obj.id);' ],

54: ['wikEdFixCaps', 'wikEdButton', wikEd.config.text['wikEdFixCaps title'], wikEd.config.image['fixCaps'], '16', '16', wikEd.config.text['wikEdFixCaps alt'], 'wikEd.EditButton(obj, obj.id);' ],

55: ['wikEdFixUnicode', 'wikEdButton', wikEd.config.text['wikEdFixUnicode title'], wikEd.config.image['fixUnicode'], '16', '16', wikEd.config.text['wikEdFixUnicode alt'], 'wikEd.EditButton(obj, obj.id);' ],

81: ['wikEdFixRedirect', 'wikEdButton', wikEd.config.text['wikEdFixRedirect title'], wikEd.config.image['fixRedirect'], '16', '16', wikEd.config.text['wikEdFixRedirect alt'], 'wikEd.EditButton(obj, obj.id);' ],

56: ['wikEdFixAll', 'wikEdButton', wikEd.config.text['wikEdFixAll title'], wikEd.config.image['fixAll'], '16', '16', wikEd.config.text['wikEdFixAll alt'], 'wikEd.EditButton(obj, obj.id);' ],

57: ['wikEdFixRegExTypo', 'wikEdButton', wikEd.config.text['wikEdFixRegExTypo title'], wikEd.config.image['fixRegExTypo'], '16', '16', wikEd.config.text['wikEdFixRegExTypo alt'], 'wikEd.EditButton(obj, obj.id);' ],

// fix bottom

58: ['wikEdFixDashes', 'wikEdButton', wikEd.config.text['wikEdFixDashes title'], wikEd.config.image['fixDash'], '16', '16', wikEd.config.text['wikEdFixDashes alt'], 'wikEd.EditButton(obj, obj.id);' ],

59: ['wikEdFixPunct', 'wikEdButton', wikEd.config.text['wikEdFixPunct title'], wikEd.config.image['fixPunct'], '16', '16', wikEd.config.text['wikEdFixPunct alt'], 'wikEd.EditButton(obj, obj.id);' ],

60: ['wikEdFixMath', 'wikEdButton', wikEd.config.text['wikEdFixMath title'], wikEd.config.image['fixMath'], '16', '16', wikEd.config.text['wikEdFixMath alt'], 'wikEd.EditButton(obj, obj.id);' ],

61: ['wikEdFixChem', 'wikEdButton', wikEd.config.text['wikEdFixChem title'], wikEd.config.image['fixChem'], '16', '16', wikEd.config.text['wikEdFixChem alt'], 'wikEd.EditButton(obj, obj.id);' ],

62: ['wikEdFixUnits', 'wikEdButton', wikEd.config.text['wikEdFixUnits title'], wikEd.config.image['fixUnits'], '16', '16', wikEd.config.text['wikEdFixUnits alt'], 'wikEd.EditButton(obj, obj.id);' ],

// preview top

65: ['wikEdClose', 'wikEdButton', wikEd.config.text['wikEdClose title'], wikEd.config.image['close'], '16', '16', wikEd.config.text['wikEdClose alt'], 'wikEd.Button(obj, obj.id);' ],

66: ['wikEdScrollToPreview2', 'wikEdButton', wikEd.config.text['wikEdScrollToPreview2 title'], wikEd.config.image['scrollToPreviewDown'], '16', '16', wikEd.config.text['wikEdScrollToPreview2 alt'], 'wikEd.Button(obj, obj.id);' ],

67: ['wikEdScrollToEdit2', 'wikEdButton', wikEd.config.text['wikEdScrollToEdit2 title'], wikEd.config.image['scrollToEdit'], '16', '16', wikEd.config.text['wikEdScrollToEdit2 alt'], 'wikEd.Button(obj, obj.id);' ],

// preview bottom

70: ['wikEdClose2', 'wikEdButton', wikEd.config.text['wikEdClose2 title'], wikEd.config.image['close'], '16', '16', wikEd.config.text['wikEdClose2 alt'], 'wikEd.Button(obj, obj.id);' ],

71: ['wikEdScrollToPreview3', 'wikEdButton', wikEd.config.text['wikEdScrollToPreview3 title'], wikEd.config.image['scrollToPreview'], '16', '16', wikEd.config.text['wikEdScrollToPreview3 alt'], 'wikEd.Button(obj, obj.id);' ],

72: ['wikEdScrollToEdit3', 'wikEdButton', wikEd.config.text['wikEdScrollToEdit3 title'], wikEd.config.image['scrollToEdit'], '16', '16', wikEd.config.text['wikEdScrollToEdit3 alt'], 'wikEd.Button(obj, obj.id);' ],

// jump

78: ['wikEdDiff', 'wikEdButtonUnchecked', wikEd.config.text['wikEdDiff title'], wikEd.config.image['wikEdDiff'], '16', '16', wikEd.config.text['wikEdDiff alt'], 'wikEd.Button(obj, obj.id, true);' ],

74: ['wikEdScrollToEdit4', 'wikEdButtonSolo', wikEd.config.text['wikEdScrollToEdit4 title'], wikEd.config.image['scrollToEditDown'], '16', '16', wikEd.config.text['wikEdScrollToEdit4 alt'], 'wikEd.Button(obj, obj.id);' ],

// dummy (empty placeholder)

76: ['wikEdDummy', 'wikEdButtonDummy', , wikEd.config.image['dummy'], '16', '16', , '' ],

// wikEd.InitButton: define built-in buttons (id, class, popup title, image src, width, height, alt text, click handler code were obj is the button element)

82: ['wikEdLocalPreview', 'wikEdLocalPreview', wikEd.config.text['wikEdLocalPreview title'], wikEd.config.image['preview'], '16', '16', wikEd.config.text['wikEdLocalPreviewImg alt'], 'wikEd.Button(obj, obj.id);' ],

83: ['wikEdLocalDiff', 'wikEdLocalDiff', wikEd.config.text['wikEdLocalDiff title'], wikEd.config.image['diff'], '16', '16', wikEd.config.text['wikEdLocalDiffImg alt'], 'wikEd.Button(obj, obj.id);' ],

// pasted

85: ['wikEdPastedTextify', 'wikEdButtonInactive', wikEd.config.text['wikEdPastedTextify title'], wikEd.config.image['textify'], '16', '16', wikEd.config.text['wikEdPastedTextify alt'], 'wikEd.EditButton(obj, obj.id);' ],

86: ['wikEdPastedWikify', 'wikEdButtonInactive', wikEd.config.text['wikEdPastedWikify title'], wikEd.config.image['wikify'], '16', '16', wikEd.config.text['wikEdPastedWikify alt'], 'wikEd.EditButton(obj, obj.id);' ],

87: ['wikEdPastedClose', 'wikEdButton', wikEd.config.text['wikEdPastedClose title'], wikEd.config.image['closePasted'], '16', '16', wikEd.config.text['wikEdPastedClose alt'], 'wikEd.PastedOff();' ]

});

};

// button access keys

if (typeof(wikEd.config.buttonKey) == 'undefined') { wikEd.config.buttonKey = {}; }

// wikEd.InitButtonKey: define accesskeys for edit buttons

wikEd.InitButtonKey = function() {

wikEd.InitObject(wikEd.config.buttonKey, {

// wikEd button number: [key string, JS key code]

26: ['b', 66], // wikify

27: ['o', 79], // textify

67: ['g', 71], // scrolltoedit2

72: ['g', 71], // scrolltoedit3

74: ['g', 71], // scrolltoedit4

32: ['g', 71] // scrolltoedit, overwrites previous wikEd buttons for same key

});

};

// button bars (id, class, button numbers)

if (typeof(wikEd.config.buttonBar) == 'undefined') { wikEd.config.buttonBar = {}; }

// wikEd.InitButtonBar: define built-in button bars

wikEd.InitButtonBar = function() {

wikEd.InitObject(wikEd.config.buttonBar, {

// button name: [id outer, class outer, id inner, class inner, height, grip title, button numbers, bar title

'format': ['wikEdButtonBarFormat', 'wikEdButtonBarFormat', 'wikEdButtonsFormat', 'wikEdButtonsFormat', 44, 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,84], wikEd.config.text['wikEdBarFormat title'] ],

'textify': ['wikEdButtonBarTextify', 'wikEdButtonBarTextify', 'wikEdButtonsTextify', 'wikEdButtonsTextify', 44, wikEd.config.text['wikEdGripTextify title'], [26,'br',27], wikEd.config.text['wikEdBarTextify title'] ],

'custom1': ['wikEdButtonBarCustom1', 'wikEdButtonBarCustom1', 'wikEdButtonsCustom1', 'wikEdButtonsCustom1', 44, wikEd.config.text['wikEdGripCustom1 title'], [ ], wikEd.config.text['wikEdBarCustom1 title'] ],

'find': ['wikEdButtonBarFind', 'wikEdButtonBarFind', 'wikEdButtonsFind', 'wikEdButtonsFind', 44, wikEd.config.text['wikEdGripFind title'], [39,40,'find',41,76,43,44,'br',46,47,'replace',48,49,50,51], wikEd.config.text['wikEdBarFind title'] ],

'fix': ['wikEdButtonBarFix', 'wikEdButtonBarFix', 'wikEdButtonsFix', 'wikEdButtonsFix', 44, wikEd.config.text['wikEdGripFix title'], [52,53,54,55,56,81,'br',58,59,60,61,62,57], wikEd.config.text['wikEdBarFix title'] ],

'custom2': ['wikEdButtonBarCustom2', 'wikEdButtonBarCustom2', 'wikEdButtonsCustom2', 'wikEdButtonsCustom2', 44, wikEd.config.text['wikEdGripCustom2 title'], [ ], wikEd.config.text['wikEdBarCustom2 title'] ],

'control': ['wikEdButtonBarControl', 'wikEdButtonBarControl', 'wikEdButtonsControl', 'wikEdButtonsControl', 44, wikEd.config.text['wikEdGripControl title'], [77,29,30,35,31,32,'br',33,34,79,75,36,78,37], wikEd.config.text['wikEdBarControl title'] ],

'preview': ['wikEdButtonBarPreview', 'wikEdButtonBarPreview', 'wikEdButtonsPreview', 'wikEdButtonsPreview', 0, null, [66,67,65], wikEd.config.text['wikEdBarPreview title'] ],

'preview2': ['wikEdButtonBarPreview2', 'wikEdButtonBarPreview2', 'wikEdButtonsPreview2', 'wikEdButtonsPreview2', 0, null, [71,72,70], wikEd.config.text['wikEdBarPreview2 title'] ],

'jump': ['wikEdButtonBarJump', 'wikEdButtonBarJump', 'wikEdButtonsJump', 'wikEdButtonsJump', 0, null, [74], wikEd.config.text['wikEdBarJump title'] ],

'pasted': ['wikEdButtonBarPasted', 'wikEdButtonBarPasted', 'wikEdButtonsPasted', 'wikEdButtonsPasted', 0, null, [85,86,87], wikEd.config.text['wikEdBarPasted title'] ]

});

};

// history length for find, replace, and summary fields

if (typeof(wikEd.config.historyLength) == 'undefined') { wikEd.config.historyLength = {}; }

wikEd.InitHistoryLength = function() {

wikEd.InitObject(wikEd.config.historyLength, {

'find': 10,

'replace': 10,

'summary': 10

});

};

// presets for combo input fields dropdown options, {wikEdUsing} appends a link to this script

if (typeof(wikEd.config.comboPresetOptions) == 'undefined') { wikEd.config.comboPresetOptions = {}; }

if (typeof(wikEd.config.comboPresetOptions.summary) == 'undefined') { wikEd.config.comboPresetOptions.summary = wikEd.config.text.wikEdPresetSummary; }

// text for summary link to this script

if (typeof(wikEd.config.summaryUsing) == 'undefined') { wikEd.config.summaryUsing = wikEd.config.text.wikEdSummaryUsing; }

// expiration time span for permanent cookies in seconds

if (typeof(wikEd.config.cookieExpireSec) == 'undefined') { wikEd.config.cookieExpireSec = 1 * 30 * 24 * 60 * 60; }

// disable wikEd preset

if (typeof(wikEd.config.disabledPreset) == 'undefined') { wikEd.config.disabledPreset = false; }

// find ahead as you type checkbox preset

if (typeof(wikEd.config.findAheadSelected) == 'undefined') { wikEd.config.findAheadSelected = true; }

// highlight syntax preset

if (typeof(wikEd.config.highlightSyntaxPreset) == 'undefined') { wikEd.config.highlightSyntaxPreset = true; }

// enable wikEd preset

if (typeof(wikEd.config.useWikEdPreset) == 'undefined') { wikEd.config.useWikEdPreset = true; }

// add '...using wikEd' to summary preset

if (typeof(wikEd.config.usingPreset) == 'undefined') { wikEd.config.usingPreset = false; }

// scroll to edit field on non-preview pages

if (typeof(wikEd.config.scrollToEdit) == 'undefined') { wikEd.config.scrollToEdit = true; }

// focus the edit field on non-preview pages

if (typeof(wikEd.config.focusEdit) == 'undefined') { wikEd.config.focusEdit = true; }

// wikEdDiff preset

if (typeof(wikEd.config.diffPreset) == 'undefined') { wikEd.config.diffPreset = false; }

// fullscreen mode preset

if (typeof(wikEd.config.fullScreenModePreset) == 'undefined') { wikEd.config.fullScreenModePreset = false; }

// show MediaWiki toolbar preset

if (typeof(wikEd.config.closeToolbarPreset) == 'undefined') { wikEd.config.closeToolbarPreset = false; }

// hide ref tags preset

if (typeof(wikEd.config.refHidePreset) == 'undefined') { wikEd.config.refHidePreset = false; }

// text size adjustment for edit window (percentage)

if (typeof(wikEd.config.textSizeAdjust) == 'undefined') { wikEd.config.textSizeAdjust = 100; }

// remove invisible syntax highlighting comments after closing tag

if (typeof(wikEd.config.removeHighlightComments) == 'undefined') { wikEd.config.removeHighlightComments = true; }

// show the text-to-source button for testing purposes

if (typeof(wikEd.config.showSourceButton) == 'undefined') { wikEd.config.showSourceButton = false; }

// show the using-wikEd button

if (typeof(wikEd.config.showUsingButton) == 'undefined') { 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(wikEd.config.helpPageLink) == 'undefined') { wikEd.config.helpPageLink = wikEd.config.text.wikEdHelpPageLink; }

// enable external diff script

if (typeof(wikEd.config.loadDiffScript) == 'undefined') { wikEd.config.loadDiffScript = true; }

// enable external wikEdDiff script

if (typeof(wikEd.config.loadDiff) == 'undefined') { wikEd.config.loadDiff = true; }

// enable external InstaView script

if (typeof(wikEd.config.loadInstaView) == 'undefined') { wikEd.config.loadInstaView = true; }

// enable external IERange script

if (typeof(wikEd.config.loadIERange) == 'undefined') { wikEd.config.loadIERange = true; }

// RegExTypoFix rules page, the address must have the exact same domain name as the used wiki

if (typeof(wikEd.config.regExTypoFixURL) == 'undefined') { wikEd.config.regExTypoFixURL = 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(wikEd.config.regExTypoFix) == 'undefined') { wikEd.config.regExTypoFix = false; }

// enable highlighting as links

if (typeof(wikEd.config.followHighlightedLinks) == 'undefined') { wikEd.config.followHighlightedLinks = false; }

// skip the browser detection to run wikEd under IE and Opera

if (typeof(wikEd.config.skipBrowserTest) == 'undefined') { wikEd.config.skipBrowserTest = false; }

// skip the script test that disables wikEd if certain scripts are present

if (typeof(wikEd.config.skipScriptTest) == 'undefined') { wikEd.config.skipScriptTest = false; }

// skip the read-only detection

if (typeof(wikEd.config.skipReadOnlyTest) == 'undefined') { wikEd.config.skipReadOnlyTest = false; }

// button access keys

if (typeof(wikEd.config.incompatibleScripts) == 'undefined') { wikEd.config.incompatibleScripts = {}; }

// wikEd.InitIncompatibleScripts: disable wikEd if incompatible scripts are active

// error message name: case insensitive regExp for script file name from URL w/o .js, use '\\' for '\'

wikEd.InitIncompatibleScripts = function() {

wikEd.InitObject(wikEd.config.incompatibleScripts, {

'CKEditor': '\\bckeditor',

'FCKEditor': 'fckeditor',

'less edit clutter': 'less.?edit.?clutter', // User:Magnus_Manske/less_edit_clutter.js

'MagnusEditBox': 'MagnusEditBox' // less_edit_clutter gadget on fr

});

};

// set the button bar grip width in px

if (typeof(wikEd.config.buttonBarGripWidth) == 'undefined') { wikEd.config.buttonBarGripWidth = 8; }

// enable local preview (Pilaf's InstaView)

if (typeof(wikEd.config.useLocalPreview) == 'undefined') { wikEd.config.useLocalPreview = true; }

// enable server preview (Ajax)

if (typeof(wikEd.config.useAjaxPreview) == 'undefined') { wikEd.config.useAjaxPreview = true; }

// enable appending ' for Ajax section previews

if (typeof(wikEd.config.SectionPreviewRefs) == 'undefined') { wikEd.config.SectionPreviewRefs = true; }

// enable auto update (Ajax)

if (typeof(wikEd.config.autoUpdate) == 'undefined') { wikEd.config.autoUpdate = true; }

// hours between update check (monobook.js)

if (typeof(wikEd.config.autoUpdateHours) == 'undefined') { wikEd.config.autoUpdateHours = 20; }

// hours between update check (Greasemonkey)

if (typeof(wikEd.config.autoUpdateHoursGM) == 'undefined') { wikEd.config.autoUpdateHoursGM = 40; }

// auto update: version url (Ajax)

if (typeof(wikEd.config.autoUpdateUrl) == 'undefined') { wikEd.config.autoUpdateUrl = 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(wikEd.config.autoUpdateScriptUrl) == 'undefined') { wikEd.config.autoUpdateScriptUrl = 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 wikEdDiff.js

if (typeof(wikEd.config.fullDiff) == 'undefined') { wikEd.config.fullDiff = false; }

// make links ctrl-clickable

if (typeof(wikEd.config.linkify) == 'undefined') { 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(wikEd.config.hideContent) == 'undefined') { wikEd.config.hideContent = true; }

// hide refs and templates in newbie mode

if (typeof(wikEd.config.unhideShift) == 'undefined') { wikEd.config.unhideShift = false; }

// wikify table parameters, replaces original table parameters with this string

if (typeof(wikEd.config.wikifyTableParameters) == 'undefined') { wikEd.config.wikifyTableParameters = ''; }

// do not rearrange page elements

if (typeof(wikEd.config.noRearrange) == 'undefined') { wikEd.config.noRearrange = false; }

// use French rules for fix punctuation

if (typeof(wikEd.config.fixPunctFrench) == 'undefined') { wikEd.config.fixPunctFrench = false; }

// wikEd.config.setupHook, executed after wikEd has been set up, usage: wikEd.config.setupHook.push(YourFunction);

if (typeof(wikEd.config.setupHook) == 'undefined') { wikEd.config.setupHook = []; }

// wikEd.config.onHook, executed after wikEd has been re-enabled by logo click, usage: wikEd.config.onHook.push(YourFunction);

if (typeof(wikEd.config.onHook) == 'undefined') { wikEd.config.onHook = []; }

// wikEd.config.offHook, executed after wikEd has been disabled by logo click, usage: wikEd.config.offHook.push(YourFunction);

if (typeof(wikEd.config.offHook) == 'undefined') { wikEd.config.offHook = []; }

// wikEd.config.textareaHook, executed after classic textarea has been enabled by user, usage: wikEd.config.textareaHook.push(YourFunction);

if (typeof(wikEd.config.textareaHook) == 'undefined') { wikEd.config.textareaHook = []; }

// wikEd.config.frameHook, executed after wikEd edit frame has been enabled by user, usage: wikEd.config.frameHook.push(YourFunction);

if (typeof(wikEd.config.frameHook) == 'undefined') { wikEd.config.frameHook = []; }

// wikEd.config.previewHook, executed after the local preview has been added to the page, usage: wikEd.config.previewHook.push(YourFunction);

if (typeof(wikEd.config.previewHook) == 'undefined') { wikEd.config.previewHook = []; }

// wikEd.config.diffHook, executed after the local changes diff has been added to the page, usage: wikEd.config.diffHook.push(YourFunction);

if (typeof(wikEd.config.dHook) == 'undefined') { wikEd.config.diffHook = []; }

// custom edit form id instead of 'editform'

if (typeof(wikEd.config.customEditFormId) == 'undefined') { wikEd.config.customEditFormId = ''; }

// custom textarea id instead of 'wpTextbox1'

if (typeof(wikEd.config.customTextAreaId) == 'undefined') { wikEd.config.customTextAreaId = ''; }

// custom save button id instead of 'wpSave'

if (typeof(wikEd.config.customSaveButtonId) == 'undefined') { wikEd.config.customSaveButtonId = ''; }

// show table mode togle button

if (typeof(wikEd.config.showTableModeButton) == 'undefined') { wikEd.config.showTableModeButton = false; }

// maximal time for syntax highlighting in ms

if (typeof(wikEd.config.maxHighlightTime) == 'undefined') { wikEd.config.maxHighlightTime = 3000; }

// first char of article names is case sensitive (e.g. Wiktionary)

if (typeof(wikEd.config.articlesCaseSensitive) == 'undefined') { wikEd.config.articlesCaseSensitive = false; }

// force immediate update if this version string is newer

if (typeof(wikEd.config.forcedUpdate) == 'undefined') { wikEd.config.forcedUpdate = ''; }

// display highlighting error messages in text

if (typeof(wikEd.config.highlightError) == 'undefined') { wikEd.config.highlightError = false; }

// display preview of files in text

if (typeof(wikEd.config.filePreview) == 'undefined') { wikEd.config.filePreview = true; }

// file preview image size in pixels

if (typeof(wikEd.config.filePreviewSize) == 'undefined') { wikEd.config.filePreviewSize = 75; }

// file preview image size in pixels

if (typeof(wikEd.config.antiHighlightBleeding) == 'undefined') { wikEd.config.antiHighlightBleeding = true; }

// debug window maximal length in chars

if (typeof(wikEd.config.debugMaxLength) == 'undefined') { wikEd.config.debugMaxLength = 50000; }

// debug display of DOM nodes: maximal length of innerHTML in chars

if (typeof(wikEd.config.debugInnerHtmlLength) == 'undefined') { wikEd.config.debugInnerHtmlLength = 150; }

// wikibase data repository url default

if (typeof(wikEd.config.wbRepoUrl) == 'undefined') { wikEd.config.wbRepoUrl = '//www.wikidata.org'; }

// wikibase data repository article path default

if (typeof(wikEd.config.wbRepoArticlePath) == 'undefined') { wikEd.config.wbRepoArticlePath = '/wiki/$1'; }

// interlanguage name of default wiki on wikibase data repository default

if (typeof(wikEd.config.wbGlobalSiteId) == 'undefined') { wikEd.config.wbGlobalSiteId = 'enwiki'; }

return;

};

// user configurable variables needed during start up

// init config

if (typeof(wikEd.config) == 'undefined') { wikEd.config = {}; }

// debug mode

if (typeof(wikEd.config.debugging) == 'undefined') { wikEd.config.debugging = false; }

// wikEd code home base URL, also defined in wikEdDiff.js

if (typeof(wikEd.config.homeBaseUrl) == 'undefined') { wikEd.config.homeBaseUrl = '//en.wikipedia.org/'; }

// diff script URL, also defined in wikEdDiff.js

if (typeof(wikEd.config.diffScriptSrc) == 'undefined') { wikEd.config.diffScriptSrc = wikEd.config.homeBaseUrl + 'w/index.php?title=User:Cacycle/diff.js&action=raw&ctype=text/javascript'; }

// wikEdDiff script URL, also defined in wikEdDiff.js

if (typeof(wikEd.config.diffSrc) == 'undefined') { wikEd.config.diffSrc = wikEd.config.homeBaseUrl + 'w/index.php?title=User:Cacycle/wikEdDiff.js&action=raw&ctype=text/javascript'; }

// InstaView script URL

if (typeof(wikEd.config.instaViewSrc) == 'undefined') { wikEd.config.instaViewSrc = 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(wikEd.config.IERangeSrc) == 'undefined') { wikEd.config.IERangeSrc = 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(wikEd.config.gadget) == 'undefined') { wikEd.config.gadget = null; }

// duplicate edit warnings from the top of the page to above the edit window

if (typeof(wikEd.config.doCloneWarnings) == 'undefined') { wikEd.config.doCloneWarnings = true; }

// startup debugging

if (typeof(wikEd.config.debugStartUp) == 'undefined') { wikEd.config.debugStartUp = ''; }

// show missing translations

if (typeof(wikEd.config.showMissingTranslations) == 'undefined') { wikEd.config.showMissingTranslations = false; }

// content language default, also used for wikEd UI localization

if (typeof(wikEd.config.languageDefault) == 'undefined') { wikEd.config.languageDefault = ''; }

// load external translation

if (typeof(wikEd.config.loadTranslation) == 'undefined') { wikEd.config.loadTranslation = true; }

// translation javascript URLs

if (typeof(wikEd.config.translations) == 'undefined') { wikEd.config.translations = {}; }

// wikEd.InitTranslations: define translation javascript URLs ('': internal default)

wikEd.InitTranslations = function() {

wikEd.InitObject(wikEd.config.translations, {

'en': '',

'ar': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:ترجمان05/wikEd_international_ar.js',

'zh-hans': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Shibo77/wikEd_international_zh.js',

'zh-hant': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Quest_for_Truth/wikEd_international_zh-hant.js',

'cs': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Sevela.p/wikEd_international_cs.js',

'nl': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Jeronevw/wikEd_international_nl.js',

'eo': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:ArnoLagrange/wikEd-eo.js',

'fi': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Ejs-80/wikEd international fi.js',

'fr': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Leag/wikEd-fr.js',

'gl': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Toliño/wikEd_international_gl.js',

'de': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Matthias_M./wikEd_international_de.js',

'he': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:שמוליק/wikEd_international_he.js',

'hr': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:SpeedyGonsales/wikEd_international_hr.js',

'hu': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Csörföly D/wikEd-hu.js',

'it': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Jalo/wikEd_international_it.js',

'ja': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Hatukanezumi/wikEd_international_ja.js',

'ko': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Ilovesabbath/wikEd_international_ko.js',

'dsb': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Michalwiki/wikEd_international_dsb.js',

'ms': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Aviator/wikEd_international_ms.js',

'no': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Dvyjones/wikEd_international_no.js',

'nn': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Frokor/wikEd_international_nn.js',

'fa': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Reza1615/wikEd_international_fa.js',

'pl': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Konradek/wikEd_international_pl.js',

'pt': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Mosca/wikEd_international_pt.js',

'ro': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Roamataa/wikEd_international_ro.js',

'ru': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:IGW/wikEd_international_ru.js',

'scn': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Meloscn/wikEd_international_scn.js',

'sk': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Helix84/wikEd_international_sk.js',

'sl': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Eleassar/wikEd_international_sl.js',

'es': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Axelei/wikEd_international_es.js',

'sv': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Where_next_Columbus?/wikEd_international_sv.js',

'tr': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Vito_Genovese/wikEd_international_tr.js',

'hsb': wikEd.config.homeBaseUrl + 'w/index.php?action=raw&ctype=text/javascript&title=User:Michalwiki/wikEd_international_hsb.js',

'vi': 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(wikEd.config.MediaWikiSkinIds) == 'undefined') { wikEd.config.MediaWikiSkinIds = {}; }

// wikEd.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], enable local preview / diff ],

wikEd.InitMediaWikiSkinIds = function() {

wikEd.InitObject(wikEd.config.MediaWikiSkinIds, {

// monobook, also detects simple and myskin

monobook: [ 'p-personal', true, true, ['column-content', 'content', 'bodyContent', 'siteSub', 'contentSub', 'column-one', 'p-cactions'] ],

// vector (see https://bugzilla.wikimedia.org/show_bug.cgi?id=19527)

vector_old: [ 'personal', true, true, ['content', 'bodyContent', 'contentSub', 'left-navigation', 'namespaces'] ],

vector_new: [ 'p-personal', true, true, ['content', 'bodyContent', 'contentSub', 'left-navigation', 'p-namespaces', 'p-cactions'] ],

// citizendium.org

pinkwich5: [ 'p-personal', true, true, ['column-content', 'content', 'bodycontent', 'sitesub', 'contentSub', 'column-one', 'p-cactions'] ],

// other MediaWiki skins

standard: [ 'quickbar', false, true, ['content', 'topbar', 'article', 'footer', 'pagestats'] ],

nostalgia: [ 'topbar', false, true, ['content', 'specialpages', 'article', 'footer'] ],

cologneblue: [ 'quickbar', false, true, ['content', 'topbar', 'sitetitle', 'sitesub', 'article', 'footer'] ],

modern: [ 'p-personal', true, true, ['mw_header', 'mw_main', 'mw_contentwrapper'] ],

// wikia.com

monaco: [ 'userData', false, false, ['background_strip', 'siteSub', 'contentSub', 'monaco_footer'] ],

quartz: [ 'welcome', false, true, ['articleWrapper', 'bodyContent', 'siteSub', 'contentSub', 'sidebar'] ],

searchwikia: [ 'header-li-buttons', false, true, ['header', 'header-container', 'header-go-button', 'article-container', 'article', 'article-text'] ],

oasis: [ 'AccountNavigation', false, false, ['WikiaHeader', 'WikiaPage'], false ],

// custom skins developed on wiki.mozilla.org and developer.mozilla.org

cavendish: [ '', false, true, ['internal', 'container', 'header', 'contentTop', 'mBody', 'side', 'nav', 'siteSub', 'contentSub'] ],

devmo: [ 'personal', false, true, ['developer-mozilla-org', 'container', 'header', 'navigation', 'bar', 'page', 'sidebar', 'sidebarslideup', 'contentTop', 'siteSub', 'contentSub'] ],

// custom skins

gumaxdd: [ 'gumax-p-login', true, true, ['gumax-header', 'gumax-content-body'] ],

pixeled: [ 'topright', true, true, ['contentwrapper', 'catnav', 'morefoot'] ],

// custom MediaWiki identifier

mediawiki: [ '', false, false, ['mediawiki'] ]

});

};

//

// end of user configurable variables

//

//

// wikEd.InitGlobals: initialize non-configurable variables

//

wikEd.InitGlobals = function() {

// global variables

wikEd.turnedOn = false;

wikEd.disabled = true;

wikEd.uploadEdit = false;

wikEd.viewDeleted = false;

wikEd.watchlistEdit = false;

wikEd.debugOpen = false;

wikEd.pageNamespace = null;

// history

wikEd.fieldHist = [];

wikEd.savedName = [];

wikEd.inputElement = [];

wikEd.selectElement = [];

wikEd.checkMarker = [];

wikEd.checkMarker[true] = '♦';

wikEd.checkMarker[false] = '◊';

// undo all, redo all

wikEd.origVersion = '';

wikEd.lastVersion = null;

// global dom elements

wikEd.logo = null;

wikEd.logoList = null;

wikEd.debug = null;

wikEd.wikiEditor = null;

wikEd.wikiEditorFrame = null;

wikEd.wikiEditorTop = null;

wikEd.wikiEditorBar = null;

wikEd.wikiEditorBottom = null;

wikEd.wikiEditorText = null;

wikEd.textareaContainer = null;

wikEd.toolbar = null;

wikEd.frameInner = null;

wikEd.frameOuter = null;

wikEd.frame = null;

wikEd.frameBody = null;

wikEd.frameDocument = null;

wikEd.frameWindow = null;

wikEd.inputWrapper = null;

wikEd.editorWrapper = null;

wikEd.toolbarWrapper = null;

wikEd.buttonBarWrapper = null;

wikEd.captchaWrapper = null;

wikEd.debugWrapper = null;

wikEd.editWrapper = null;

wikEd.textareaWrapper = null;

wikEd.frameWrapper = null;

wikEd.consoleWrapper = null;

wikEd.buttonsWrapper = null;

wikEd.summaryWrapper = null;

wikEd.summaryInputWrapper = null;

wikEd.editOptionsWrapper = null;

wikEd.submitWrapper = null;

wikEd.submitButtonsWrapper = null;

wikEd.localPrevWrapper = null;

wikEd.insertWrapper = null;

// edit form fields

wikEd.editForm = null;

wikEd.starttime = null;

wikEd.edittime = null;

wikEd.editToken = null;

wikEd.autoSummary

wikEd.textarea = null;

wikEd.buttonsWrapperWidth = {};

wikEd.buttonBarFormat = null;

wikEd.buttonBarTextify = null;

wikEd.buttonBarCustom1 = null;

wikEd.buttonBarFind = null;

wikEd.buttonBarFix = null;

wikEd.buttonBarCustom2 = null;

wikEd.buttonBarControl = null;

wikEd.buttonBarPreview = null;

wikEd.buttonBarPreview2 = null;

wikEd.buttonBarJump = null;

wikEd.buttonBarPasted = null;

wikEd.previewBox = null;

wikEd.clearSummary = null;

wikEd.clearSummaryImg = null;

wikEd.caseSensitive = null;

wikEd.regExp = null;

wikEd.findAhead = null;

wikEd.fixRegExTypo = null;

wikEd.findText = null;

wikEd.replaceText = null;

wikEd.summaryText = null;

wikEd.summarySelect = null;

wikEd.summaryTextWidth = null;

wikEd.editOptions = null;

wikEd.editHelp = null;

wikEd.saveButton = null;

wikEd.previewButton = null;

wikEd.lDiffButton = null;

wikEd.diffPreviewButton = null;

wikEd.summaryLabel = null;

wikEd.highlightNamedHideButtonsStylesheet = null;

// frame resizing

wikEd.resizeGripWidth = 16;

wikEd.resizeGripHeight = 16;

wikEd.resizeFramePageYStart = 0;

wikEd.resizeFramePageXStart = 0;

wikEd.resizeFrameOffsetHeight = 0;

wikEd.resizeFrameOffsetWidth = 0;

wikEd.resizeFrameMouseOverGrip = false;

wikEd.resizeFrameActive = false;

wikEd.frameHeight = '';

wikEd.frameWidth = '';

wikEd.textareaHeight = '';

wikEd.textareaWidth = '';

// various

wikEd.insertCounter = 0;

wikEd.editButtonHandler = {};

wikEd.textareaBorderHeight = 0;

wikEd.frameBorderHeight = 0;

wikEd.frameBorderWidth = 0;

wikEd.textareaOffsetHeightInitial = 0;

wikEd.clearSummaryWidth = null;

wikEd.fullScreenMode = false;

wikEd.addNewSection = null;

wikEd.browserNotSupported = false;

wikEd.frameScrollTop = null;

wikEd.textareaUpdated = null;

wikEd.previewIsAjax = null;

wikEd.buttonKeyCode = [];

wikEd.direction = null;

wikEd.textSize = 0;

wikEd.textSizeInit = 0;

wikEd.previewPage = false;

wikEd.clonedWarnings = false;

wikEd.geSHiCSS = [];

wikEd.loader = false;

wikEd.wikibase = {};

wikEd.keepSelRange = null;

// override site javascript functions

wikEd.insertTagsOriginal = null;

wikEd.insertAtCursorOriginal = null;

// wikEd settings

wikEd.refHide = false;

wikEd.using = false;

wikEd.closeToolbar = false;

wikEd.highlightSyntax = false;

wikEd.noSpellcheck = false;

wikEd.diff = false;

wikEd.tableMode = false;

wikEd.cleanNodes = false;

wikEd.readOnly = false;

// unicode fixing and char highlighting

wikEd.supportedChars = null;

wikEd.reservedChars = null;

wikEd.specialChars = null;

wikEd.problemChars = null;

wikEd.charEntitiesByName = {};

wikEd.controlCharHighlighting = null;

wikEd.controlCharHighlightingStr = '';

wikEd.charHighlighting = null;

wikEd.charHighlightingStr = '';

wikEd.letters = '';

// linkification and hiding

wikEd.linkifyIdNo = 0;

wikEd.linkifyArray = [];

wikEd.referenceArray = [];

wikEd.templateArray = [];

wikEd.charEntityArray = [];

wikEd.scheduledUnhide = null;

// RegExtypoFix rules

wikEd.typoRulesFind = [];

wikEd.typoRulesReplace = [];

// redirect fixing

wikEd.redirectsCache = {};

// file preview

wikEd.filePreviewCache = {};

wikEd.filePreviewRequest = '';

wikEd.filePreviewNo = 0;

wikEd.filePreviewIds = [];

// debugging time measurement, usage: wikEd.debugTimer.push([1234, new Date]); wikEd.DebugTimer();

wikEd.debugTimer = [];

// syntax highlighting

wikEd.parseObj = {};

// MediaWiki file paths for use in regexps

wikEd.server = '';

wikEd.articlePath = '';

wikEd.script = '';

wikEd.scriptPath = '';

wikEd.scriptName = '';

wikEd.scriptURL = '';

// pasting object

wikEd.paste = null;

// magic words and parser functions, see http://www.mediawiki.org/wiki/Help:Magic_words

// __MAGICWORDS__

wikEd.magicWords = '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

wikEd.templModifier = 'int|msg|msgnw|raw|subst';

// parser variables {{variable}}

wikEd.parserVariables = '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|NOEXTERNALLANGLINKS';

// parser variables {{variable:R}}

wikEd.parserVariablesR = 'NUMBEROFPAGES|NUMBEROFARTICLES|NUMBEROFFILES|NUMBEROFEDITS|NUMBEROFUSERS|NUMBEROFADMINS|NUMBEROFVIEWS|NUMBEROFACTIVEUSERS|PROTECTIONLEVEL';

// parser functions {{FUNCTION:parameter|R}}

wikEd.parserFunctionsR = 'NUMBERINGROUP|PAGESINNS|PAGESINNAMESPACE|PAGESINCATEGORY|PAGESINCAT|PAGESIZE|DEFAULTSORT|DISPLAYTITLE';

// parser functions {{function:param|param}}

wikEd.parserFunctions = 'localurl|localurle|fullurl|filepath|fullurle|urlencode|urldecode|anchorencode|ns|lc|lcfirst|uc|ucfirst|formatnum|padleft|padright|padright|plural|grammar|gender|int|noexternallanglinks';

// parser functions {{#function:param|param}}

wikEd.parserFunctionsHash = 'language|special|tag|tag|expr|if|ifeq|ifexist|ifexpr|switch|time|timel|rel2abs|titleparts|iferror|iferror|special|tag|categorytree|formatdate|property|invoke';

// define leaf elements for wikEd.GetInnerHTML

wikEd.leafElements = {

'IMG': true,

'HR': true,

'BR': true,

'INPUT': true

};

return;

};

// variables needed during startup, might be called multiple times

// hash of loaded scripts, also defined in wikEdDiff.js

if (typeof(wikEd.externalScripts) == 'undefined') { wikEd.externalScripts = null; }

if (typeof(wikEd.externalScriptsString) == 'undefined') { wikEd.externalScriptsString = ''; }

if (typeof(wikEd.pageLoaded) == 'undefined') { wikEd.pageLoaded = false; }

// browser and os identificationr

if (typeof(wikEd.browserName) == 'undefined') { wikEd.browserName = ''; }

if (typeof(wikEd.browserFlavor) == 'undefined') { wikEd.browserFlavor = ''; }

if (typeof(wikEd.browserVersion) == 'undefined') { wikEd.browserVersion = 0; }

if (typeof(wikEd.msie) == 'undefined') { wikEd.msie = false; }

if (typeof(wikEd.mozilla) == 'undefined') { wikEd.mozilla = false; }

if (typeof(wikEd.opera) == 'undefined') { wikEd.opera = false; }

if (typeof(wikEd.safari) == 'undefined') { wikEd.safari = false; }

if (typeof(wikEd.webkit) == 'undefined') { wikEd.webkit = false; }

if (typeof(wikEd.chrome) == 'undefined') { wikEd.chrome = false; }

if (typeof(wikEd.greasemonkey) == 'undefined') { wikEd.greasemonkey = false; }

if (typeof(wikEd.testVersion) == 'undefined') { wikEd.testVersion = false; }

if (typeof(wikEd.platform) == 'undefined') { wikEd.platform = null; }

if (typeof(wikEd.installationType) == 'undefined') { wikEd.installationType = ''; }

// global variables for Greasemonkey

if (typeof(wikEd.wikiGlobals) == 'undefined') { wikEd.wikiGlobals = {}; }

if (typeof(wikEd.text) == 'undefined') { wikEd.text = {}; }

// skins

if (typeof(wikEd.logoContainerId) == 'undefined') { wikEd.logoContainerId = ''; }

if (typeof(wikEd.rearrange) == 'undefined') { wikEd.rearrange = false; }

if (typeof(wikEd.logoToList) == 'undefined') { wikEd.logoToList = false; }

if (typeof(wikEd.enableLocalPreview) == 'undefined') { wikEd.enableLocalPreview = false; }

if (typeof(wikEd.skin) == 'undefined') { wikEd.skin = ''; }

// various

if (typeof(wikEd.gotGlobalsHook) == 'undefined') { wikEd.gotGlobalsHook = []; }

if (typeof(wikEd.getGlobalsCounter) == 'undefined') { wikEd.getGlobalsCounter = 0; }

if (typeof(wikEd.loadingTranslation) == 'undefined') { wikEd.loadingTranslation = false; }

if (typeof(wikEd.webStorage) == 'undefined') { wikEd.webStorage = null; }

// customization

if (typeof(wikEd.useWikEd) == 'undefined') { wikEd.useWikEd = false; }

if (typeof(wikEd.wikEdTextAdded) == 'undefined') { wikEd.wikEdTextAdded = false; }

if (typeof(wikEd.wikEdConfigAdded) == 'undefined') { wikEd.wikEdConfigAdded = false; }

// global dom elements, also defined in wikEdDiff.js

if (typeof(wikEd.pageOrigin) == 'undefined') { wikEd.pageOrigin = ''; }

if (typeof(wikEd.head) == 'undefined') { wikEd.head = null; }

// also defined in wikEdDiff.js

if (typeof(wikEd.pageName) == 'undefined') { wikEd.pageName = null; }

//

// wikEd.InitObject: initialize object, keep pre-defined values (code copied to wikEdDiff.js)

//

wikEd.InitObject = function(target, source, showMissing) {

if (typeof(target) == 'object') {

for (var key in source) {

if (typeof(target[key]) == 'undefined') {

target[key] = source[key];

// show missing array entries

if (showMissing == true) {

if (typeof(target[key]) == 'string') {

wikEd.config.debugStartUp += '\t\t\t\ + key + '\': \ + target[key].replace(/\n/g, '\\n') + '\',\n';

}

}

}

}

}

return;

};

//

// wikEd.AddToObject: add or replace properties, replace existing values (code copied to wikEdDiff.js)

//

wikEd.AddToObject = function(target, source, sourcePriority) {

var priority = sourcePriority;

if (typeof(priority) != 'object') {

priority = {};

}

if (typeof(target) == 'object') {

for (var key in source) {

if (priority[key] != null) {

target[key] = priority[key];

}

else {

target[key] = source[key];

}

}

}

return;

};

//

// wikEd.InitImage: initialize images, keep pre-defined values (code copied to wikEdDiff.js)

//

wikEd.InitImage = function(target, source) {

for (var key in source) {

if (typeof(target[key]) == 'undefined') {

// remove MediaWiki path prefixes and add local path

if (wikEd.config.useLocalImages == true) {

target[key] = wikEd.config.imagePathLocal + source[key].replace(/^[0-9a-f]+\/[0-9a-f]+\/()/, '');

}

// add path

else {

target[key] = wikEd.config.imagePath + source[key];

}

}

}

return;

};

//

// wikEd.Startup: wikEd startup code, called during page load

//

wikEd.Startup = function() {

// redirect WED shortcut to wikEd.Debug(objectName, object, popup)

window.WED = wikEd.Debug;

// MediaWiki pages always have their title set, filter out Greasemonkey running on created iframes

if (document.title == '') {

return;

}

// check if wikEd has already started up

if (document.getElementsByName('wikEdStartupFlag')[0] != null) {

return;

}

// define current window head

wikEd.head = document.getElementsByTagName('head')[0];

// set startup flag

var flag = document.createElement('meta');

flag.setAttribute('name', 'wikEdStartupFlag');

wikEd.head.appendChild(flag);

// get site of origin (window.location.href is about:blank if Firefox during page load)

var origin = wikEd.head.baseURI;

if (origin == null) {

origin = window.location.toString();

}

wikEd.pageOrigin = origin.replace(/^((https?|file):\/\/[^\/?#]*)?.*$/, '$1');

// 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) {

wikEd.browserName = 'Mozilla';

wikEd.browserFlavor = agentMatch[1];

wikEd.browserVersion = parseFloat(agentMatch[2]);

wikEd.mozilla = true;

}

// check for MSIE

else {

agentMatch = navigator.userAgent.match(/(MSIE)\W+(\d+\.\d+)/i);

if (agentMatch != null) {

wikEd.browserName = 'MSIE';

wikEd.browserVersion = parseFloat(agentMatch[2]);

wikEd.msie = true;

}

// check for Opera

else {

agentMatch = navigator.userAgent.match(/(Opera)\W+(\d+\.\d+)/i);

if (agentMatch != null) {

wikEd.browserName = 'Opera';

wikEd.browserVersion = parseFloat(agentMatch[2]);

if (wikEd.browserVersion == 9.80) {

var versionMatch = navigator.userAgent.match(/(Version)\W+(\d+\.\d+)/i);

if (versionMatch != null) {

wikEd.browserVersion = parseFloat(agentMatch[2]);

}

}

wikEd.opera = true;

}

// check for Google Chrome (AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.30 Safari/525.13)

else {

agentMatch = navigator.userAgent.match(/(Chrome)\W+(\d+\.\d+)/i);

if (agentMatch != null) {

wikEd.browserName = 'Chrome';

wikEd.browserVersion = parseFloat(agentMatch[2]);

wikEd.chrome = true;

}

// check for Safari

else {

agentMatch = navigator.userAgent.match(/(Safari)\W+(\d+\.\d+)/i);

if (agentMatch != null) {

wikEd.browserName = 'Safari';

wikEd.browserVersion = parseFloat(agentMatch[2]);

wikEd.safari = true;

}

// check for other WebKit

else {

agentMatch = navigator.userAgent.match(/(WebKit)(GTK\+)?\W+(\d+\.\d+)/i);

if (agentMatch != null) {

wikEd.browserName = 'WebKit';

wikEd.browserVersion = parseFloat(agentMatch[3]);

wikEd.webkit = true;

}

}

}

}

}

}

// check OS

var os = navigator.platform.match(/^(win|mac|unix|linux)/i);

if (os != null) {

wikEd.platform = os[1].toLowerCase();

}

// import customization (try now 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.config.text);

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') {

wikEd.greasemonkey = true;

}

// parse global-context (MediaWiki) variables into hash (for Greasemonkey)

var globalNames = ['skin', 'wgServer', 'wgTitle', 'wgCanonicalNamespace', 'wgArticlePath', 'wgScript', 'wgScriptPath', 'wgUserName', 'wgCurRevisionId', 'wgContentLanguage', 'wgUserLanguage', 'wgPageName', 'wgNamespaceIds', 'wgFormattedNamespaces', 'wgUseAutomaticEditSummaries', 'wgVersion', 'wgPageContentModel'];

if (wikEd.greasemonkey == true) {

globalNames.push('wikEdConfig', 'wikEdText');

}

// copy custom config settings and text after values have arrived

var gotGlobalsHook = [

function() {

if ( (typeof(wikEd.wikiGlobals.wikEdConfig) == 'object') && (wikEd.wikEdConfigAdded == false) ) {

wikEd.AddToObject(wikEd.config, wikEd.wikiGlobals.wikEdConfig);

wikEd.wikEdConfigAdded = true;

}

if ( (typeof(wikEd.wikiGlobals.wikEdText) == 'object') && (wikEd.wikEdTextAdded == false) ) {

wikEd.AddToObject(wikEd.text, wikEd.wikiGlobals.wikEdText, wikEd.config.text);

wikEd.wikEdTextAdded = true;

}

return;

}

];

// and load translations when done

if ( (wikEd.config.loadTranslation == true) && (wikEd.loadingTranslation == false) ) {

gotGlobalsHook.push(wikEd.LoadTranslations);

}

// set listener for GetGlobals messaging

wikEd.AddEventListener(window, 'message', wikEd.GetGlobalsReceiver, false);

// parse globals (asynchronous)

wikEd.GetGlobals(globalNames, gotGlobalsHook);

// schedule the setup routine; readyState interactive gives GM security error

if (document.readyState == 'complete') {

wikEd.Setup();

}

// with DOMContentLoaded event wikEd does not load for first (uncached) section edit

else {

wikEd.AddEventListener(window, 'load', wikEd.Setup, false);

}

return;

};

//

// wikEd.LoadTranslations: load external wikEd translation and language settings

//

wikEd.LoadTranslations = function() {

if ( (wikEd.config.loadTranslation == true) && (wikEd.loadingTranslation == false) ) {

var contentLang = wikEd.wikiGlobals.wgContentLanguage || '';

var userLang = wikEd.wikiGlobals.wgUserLanguage || '';

if ( (wikEd.config.languageDefault != ) || (userLang != ) || (contentLang != '') ) {

// simplified Chinese

if (contentLang == 'zh') {

contentLang = 'zh-hans';

}

if ( (userLang == 'zh') || (userLang == 'zh-cn') || (userLang == 'zh-sg') ) {

userLang = 'zh-hans';

}

// traditional Chinese

else if ( (userLang == 'zh-hk') || (userLang == 'zh-tw') ) {

userLang = 'zh-hant';

}

wikEd.InitTranslations();

var scriptUrl = wikEd.config.translations[wikEd.config.languageDefault] || '';

if (scriptUrl == '') {

scriptUrl = wikEd.config.translations[userLang] || '';

if (scriptUrl == '') {

scriptUrl = wikEd.config.translations[contentLang] || '';

}

}

if (scriptUrl != '') {

wikEd.AppendScript(scriptUrl, function() {

// copy custom text after values have arrived

var gotGlobalsHook = function() {

wikEd.AddToObject(wikEd.text, wikEd.wikiGlobals.wikEdText, wikEd.config.text);

return;

};

// parse globals (asynchronous)

wikEd.GetGlobals(['wikEdText'], [gotGlobalsHook]);

wikEd.loadingTranslation = true;

});

}

}

}

return;

};

//

// wikEd.Setup: basic setup routine, scheduled after DOM or page load

//

wikEd.Setup = function() {

wikEd.RemoveEventListener(document, 'DOMContentLoaded', wikEd.Setup, false);

wikEd.RemoveEventListener(window, 'load', wikEd.Setup, false);

// check if wikEd has already set up

if (document.getElementsByName('wikEdSetupFlag')[0] != null) {

return;

}

// set setup flag

var flag = document.createElement('meta');

flag.setAttribute('name', 'wikEdSetupFlag');

wikEd.head.appendChild(flag);

// 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.config.text);

wikEd.wikEdTextAdded = true;

}

// detect already loaded external scripts

if (wikEd.externalScripts == null) {

wikEd.externalScripts = [];

var pageScripts = document.getElementsByTagName('script');

for (var i = 0; i < pageScripts.length; i ++) {

var scriptSrc = pageScripts[i].src;

var nameMatch = scriptSrc.match(/\btitle=([^&]*)/);

if (nameMatch == null) {

nameMatch = scriptSrc.match(/\/([^\/]*?)($|\?)/);

}

if (nameMatch != null) {

var scriptName = nameMatch[1] || '';

if (scriptName != '') {

// ignore other diff.js scripts

if ( (scriptName == 'diff.js') && (scriptSrc != wikEd.config.diffScriptSrc) ) {

continue;

}

// ignore resource loader

if (scriptName == 'load.php') {

continue;

}

wikEd.externalScripts[scriptName] = true;

wikEd.externalScriptsString += scriptName + '\n';

}

}

}

}

// detect developer version

if (wikEd.externalScripts['wikEd_dev.js'] == true) {

wikEd.testVersion = true;

}

// exit if executed as Greasemonkey script if wiki user script is available

if (typeof(GM_getValue) == 'function') {

if (wikEd.externalScripts['wikEd.js'] == true) {

wikEd.greasemonkey = false;

return;

}

else {

wikEd.greasemonkey = true;

}

}

// redirect Greasemonkey debugging function to wikEd.Debug if run as a wiki user script

else {

window.GM_log = wikEd.Debug;

}

// detect wikEd running as a gadget

if (wikEd.config.gadget == null) {

if (wikEd.externalScripts['MediaWiki:Gadget-wikEd.js'] == true) {

wikEd.config.gadget = true;

}

}

// set installation type

if (wikEd.config.gadget == true) {

wikEd.installationType += ' G';

}

else if (wikEd.greasemonkey == true) {

wikEd.installationType += ' GM';

}

// detect MediaWiki page and its skin

wikEd.InitMediaWikiSkinIds();

for (var skin in wikEd.config.MediaWikiSkinIds) {

if (wikEd.config.MediaWikiSkinIds.hasOwnProperty(skin) == true) {

var logoContainerId = wikEd.config.MediaWikiSkinIds[skin][0];

var logoToList = wikEd.config.MediaWikiSkinIds[skin][1];

var rearrange = wikEd.config.MediaWikiSkinIds[skin][2];

var skinIds = wikEd.config.MediaWikiSkinIds[skin][3];

var enableLocalPreview = wikEd.config.MediaWikiSkinIds[skin][4];

for (var i = 0; i < skinIds.length; i ++) {

if (document.getElementById(skinIds[i]) == null) {

break;

}

}

if (i == skinIds.length) {

wikEd.logoContainerId = logoContainerId;

wikEd.skin = skin;

wikEd.rearrange = rearrange;

wikEd.logoToList = logoToList;

wikEd.enableLocalPreview = enableLocalPreview;

break;

}

}

}

// not a MediaWiki page

if (wikEd.skin == '') {

return;

}

// initialize user configurable variables

wikEd.InitGlobalConfigs();

// import custom text and translations

wikEd.AddToObject(wikEd.config.text, wikEd.text);

// do not rearrange page elements

if (wikEd.config.noRearrange != false) {

wikEd.rearrange = false;

}

// initialize non-configurable variables

wikEd.InitGlobals();

// check for updates

wikEd.AutoUpdate();

// initialize images (needed here for logo)

wikEd.InitImages();

// load css for edit and non-edit pages

wikEd.InitMainCSS();

// add stylesheet definitions

wikEd.ApplyCSS(document, wikEd.config.mainCSS);

// add image path to image filename

if (wikEd.logo == null) {

// create logo

wikEd.logo = document.createElement('img');

wikEd.logo.id = 'wikEdLogoImg';

// insert logo into page

var logoContainer;

if (wikEd.logoContainerId != '') {

logoContainer = document.getElementById(wikEd.logoContainerId);

}

if (logoContainer != null) {

// logo as last element of specified list (e.g. monobook, simple, myskin, gumax)

if (wikEd.logoToList == true) {

wikEd.logoList = document.createElement('li');

wikEd.logoList.id = 'wikEdLogoList';

wikEd.logoList.className = 'wikEdLogoList';

wikEd.logoList.appendChild(wikEd.logo);

var list;

var logo;

if (logoContainer.tagName == 'UL') {

list = logoContainer;

}

else {

list = logoContainer.getElementsByTagName('ul')[0];

}

if (list != null) {

list.appendChild(wikEd.logoList);

wikEd.logo.className = 'wikEdLogo';

}

}

// logo as last child of specified element

else {

logoContainer.appendChild(wikEd.logo);

wikEd.logo.className = 'wikEdLogo';

}

}

// logo as first page element, fallback for undetected skin

if (wikEd.logo.className == '') {

document.body.insertBefore(wikEd.logo, document.body.firstChild);

wikEd.logo.className = 'wikEdLogoFallBack';

}

// add event listeners to logo

wikEd.AddEventListener(wikEd.logo, 'click', wikEd.MainSwitch, true);

wikEd.AddEventListener(wikEd.logo, 'click', wikEd.DebugInfo, true);

}

// page loaded flag for dynamically loaded scripts

wikEd.pageLoaded = true;

// load the external diff script if not already done

if ( (wikEd.config.loadDiffScript == true) && (wikEd.externalScripts['diff.js'] == null) ) {

if (typeof(WDiffString) == 'undefined') {

var sep = '&';

if (wikEd.config.diffScriptSrc.indexOf('?') == -1) {

sep = '?';

}

wikEd.AppendScript(wikEd.config.diffScriptSrc + sep + wikEd.programVersion);

}

wikEd.externalScripts['diff.js'] = true;

}

// load the external wikEdDiff script if not already done

if ( (wikEd.config.loadDiff == true) && (wikEd.externalScripts['wikEdDiff.js'] == null) ) {

if (typeof(wikEd.Diff) == 'undefined') {

var sep = '&';

if (wikEd.config.diffSrc.indexOf('?') == -1) {

sep = '?';

}

wikEd.AppendScript(wikEd.config.diffSrc + sep + wikEd.programVersion);

}

wikEd.externalScripts['wikEdDiff.js'] = true;

}

// load the MS IE selection/range compatibility library IERange

if (wikEd.msie == true) {

if ( (wikEd.config.loadIERange == true) && (wikEd.externalScripts['ierange.js'] == null) ) {

if (typeof(DOMUtils) == 'undefined') {

var sep = '&';

if (wikEd.config.IERangeSrc.indexOf('?') == -1) {

sep = '?';

}

wikEd.AppendScript(wikEd.config.IERangeSrc + sep + wikEd.programVersion);

}

wikEd.externalScripts['ierange.js'] = true;

}

}

// init syntax highlighting regExp object

wikEd.HighlightSyntaxInit();

// check if disabled

wikEd.disabled = wikEd.GetSavedSetting('wikEdDisabled', wikEd.config.disabledPreset);

if (wikEd.disabled == true) {

wikEd.useWikEd = false;

wikEd.SetLogo();

return;

}

// location search string function: put all used images and icons on an empty page

if (/(\?|&)wikEd=iconPage\b/i.test(window.location.search) == true) {

var str = wikEd.config.text.iconPage;

for (var imageKey in wikEd.config.image) {

if (wikEd.config.image.hasOwnProperty(imageKey) == true) {

var imageAddress = wikEd.config.image[imageKey];

if (typeof(imageAddress) == 'string') {

str += ' ';

}

}

}

document.body.innerHTML = str;

return;

}

// continue setup

wikEd.TurnOn(true);

return;

};

//

// wikEd.TurnOn: continue setup, can be called repeatedly

//

wikEd.TurnOn = function(scrollToEditFocus) {

// check if setup was already run

if (wikEd.turnedOn == true) {

return;

}

// set error logo

wikEd.SetLogo('error');

// check for code editor

var codeEditor = null;

if (wikEd.wikiGlobals.wgPageContentModel == null) {

if (/\.js$/.test(wikEd.wikiGlobals.wgTitle) == true) {

codeEditor = wikEd.GetCookie('wikiEditor-0-codeEditor-enabled');

}

}

else if (wikEd.wikiGlobals.wgPageContentModel != 'wikitext') {

codeEditor = wikEd.GetCookie('wikiEditor-0-codeEditor-enabled');

}

// do not turn on when code editor is active

if (codeEditor == '1') {

wikEd.disabled = true;

wikEd.SetLogo('incompatible', 'Code Editor');

return;

}

// no id, no wikEd

if (navigator.appName == null) {

wikEd.browserNotSupported = true;

}

// check browser versions

switch (wikEd.browserName) {

// check Mozilla version

case 'Mozilla':

if (

(wikEd.browserFlavor == 'Firefox') && (wikEd.browserVersion < 1.5) ||

(wikEd.browserFlavor == 'Netscape') && (wikEd.browserVersion < 8.0) ||

(wikEd.browserFlavor == 'SeaMonkey') && (wikEd.browserVersion < 1.0)

) {

wikEd.browserNotSupported = true;

}

break;

// check MSIE version

case 'MSIE':

wikEd.browserNotSupported = true;

break;

// check Opera version

case 'Opera':

if (wikEd.browserVersion < 10.51) {

wikEd.browserNotSupported = true;

}

// 10.50 beta, 10.51 are too buggy (inserthtml, parentNode...)

wikEd.browserNotSupported = true;

break;

// check Google Chrome version

case 'Chrome':

if (wikEd.browserVersion < 0.2) {

wikEd.browserNotSupported = true;

}

break;

// check Safari version

case 'Safari':

if (wikEd.browserVersion < 500) {

wikEd.browserNotSupported = true;

}

break;

}

// browser or version not supported, set error message and exit

if ( (wikEd.browserNotSupported == true) && (wikEd.config.skipBrowserTest == false) ) {

wikEd.disabled = true;

wikEd.SetLogo('browser');

return;

}

// get form elements

var array;

array = document.getElementsByName('wpEdittime');

if (array[0] != null) {

wikEd.edittime = array[0].value

}

array = document.getElementsByName('wpStarttime');

if (array[0] != null) {

wikEd.starttime = array[0].value

}

array = document.getElementsByName('wpAutoSummary');

if (array[0] != null) {

wikEd.autoSummary = array[0].value

}

array = document.getElementsByName('wpEditToken');

if (array[0] != null) {

wikEd.editToken = array[0].value

}

// page type detection

// detect custom edit page

if (wikEd.config.customEditFormId != '') {

wikEd.editForm = document.getElementById(wikEd.config.customEditFormId);

}

if (wikEd.config.customTextAreaId != '') {

wikEd.textarea = document.getElementById(wikEd.config.customTextAreaId);

}

if (wikEd.config.customSaveButtonId != '') {

wikEd.saveButton = document.getElementById(wikEd.customwikEdSaveButtonId);

}

// detect standard edit page

if (wikEd.textarea == null) {

wikEd.textarea = document.getElementsByName('wpTextbox1')[0];

}

if (wikEd.editForm == null) {

wikEd.editForm = document.getElementById('editform');

}

if (wikEd.saveButton == null) {

wikEd.saveButton = document.getElementById('wpSave');

}

wikEd.diffPreviewButton = document.getElementById('wpDiff');

wikEd.previewButton = document.getElementById('wpPreview');

// detect MediaWiki Semantic Forms extension

if (wikEd.textarea == null) {

wikEd.editForm = document.getElementsByName('createbox')[0];

wikEd.textarea = document.getElementsByName('free_text')[0];

}

// detect edit raw watchlist page

if ( (wikEd.editForm == null) || (wikEd.textarea == null) ) {

wikEd.textarea = document.getElementById('titles');

if (wikEd.textarea != null) {

wikEd.watchlistEdit = true;

// get watchlist edit form

var node = wikEd.textarea;

while (node != null) {

node = node.parentNode;

if (node.tagName == 'FORM') {

break;

}

}

wikEd.editForm = node;

}

// get watchlist submit button

if (wikEd.editForm != null) {

var submits = wikEd.editForm.getElementsByTagName('input');

for (i = 0; i < submits.length; i ++) {

if (submits[i].type == 'submit') {

wikEd.saveButton = submits[i];

break;

}

}

}

}

// detect upload page

if ( (wikEd.textarea == null) || (wikEd.editForm == null) || (wikEd.saveButton == null) ) {

wikEd.textarea = document.getElementsByName('wpUploadDescription')[0];

wikEd.editForm = document.getElementById('mw-upload-form');

wikEd.saveButton = document.getElementsByName('wpUpload')[0];

if ( (wikEd.textarea != null) && (wikEd.editForm != null) && (wikEd.saveButton != null) ) {

wikEd.uploadEdit = true;

wikEd.rearrange = false;

}

}

// detect view and restore deleted pages

if ( (wikEd.textarea == null) || (wikEd.editForm == null) || (wikEd.saveButton == null) ) {

wikEd.textarea = document.getElementsByTagName('textarea')[0];

if (wikEd.textarea != null) {

// get form

var node = document.getElementsByName('preview')[0];

while (node != null) {

node = node.parentNode;

if (node.tagName == 'FORM') {

break;

}

}

wikEd.editForm = node;

if (wikEd.editForm != null) {

wikEd.previewButton = document.getElementsByName('preview')[0];

wikEd.viewDeleted = true;

wikEd.rearrange = false;

}

}

}

// set page detection error indicator

if ( (wikEd.textarea == null) || (wikEd.editForm == null) ) {

wikEd.SetLogo();

return;

}

// check if the textarea is read-only

if (wikEd.config.skipReadOnlyTest == false) {

if ( (wikEd.GetAttribute(wikEd.textarea, 'readonly') != null) || (wikEd.saveButton == null) ) {

wikEd.readOnly = true;

}

}

// get missing wg variables from footer link, fails on /subpages (code copied to wikEdDiff.js)

if (wikEd.wikiGlobals.wgArticlePath == null) {

var printfooter = wikEd.GetElementsByClassName('printfooter', 'div')[0];

if (printfooter != null) {

var articleLink = printfooter.getElementsByTagName('a')[0];

if (articleLink != null) {

var regExpMatch = /^(https?:\/\/[^\/]*)(\/([^\/]*\/)*)([^\/]*)$/.exec(articleLink.href);

if (regExpMatch != null) {

wikEd.wikiGlobals.wgServer = regExpMatch[1];

wikEd.wikiGlobals.wgArticlePath = regExpMatch[1] + regExpMatch[2] + '$1';

wikEd.wikiGlobals.wgPageName = regExpMatch[4] || '';

wikEd.wikiGlobals.wgTitle = decodeURIComponent( regExpMatch[4].replace(/_/g, ' ') );

}

}

}

}

// get missing wg variables from form action url

if (wikEd.wikiGlobals.wgScript == null) {

wikEd.wikiGlobals.wgScript = wikEd.editForm.action.replace(/^https?:\/\/[^\/]*|\?.*$/g, '');

wikEd.wikiGlobals.wgScriptPath = wikEd.wikiGlobals.wgScript.replace(/\/index\.php/, '');

}

// get current page name

wikEd.pageName = wikEd.wikiGlobals.wgPageName;

// get current namespace

if (wikEd.pageName != null) {

var colonPos = wikEd.pageName.indexOf(':');

if (colonPos == -1) {

wikEd.pageNamespace = '';

}

else {

wikEd.pageNamespace = wikEd.pageName.substr(0, colonPos);

}

}

// check if mw.loader is available

if ( (typeof(mw) == 'object') && (typeof(mw.loader) == 'object') && (typeof(mw.config) == 'object') ) {

wikEd.loader = true;

}

// get wikibase defaults for linkification

wikEd.wikibase.currentSite = {};

wikEd.wikibase.currentSite.globalSiteId = wikEd.config.wbGlobalSiteId;

wikEd.wikibase.repoUrl = wikEd.config.wbRepoUrl;

wikEd.wikibase.repoArticlePath = wikEd.config.wbRepoArticlePath;

// get wikibase infos

if (wikEd.loader == true) {

// prevent error if module is not installed

try {

mw.loader.using('wikibase.client.currentSite', function() {

wikEd.wikibase.currentSite = mw.config.get('wbCurrentSite');

});

}

catch (error) {

};

try {

mw.loader.using('wikibase.repoAccess', function() {

wikEd.wikibase.repoUrl = mw.config.get('wbRepoUrl');

wikEd.wikibase.repoArticlePath = mw.config.get('wbRepoArticlePath');

});

}

catch (error) {

};

}

// initialize frame css, main css, buttons, and button bars

wikEd.InitFrameCSS();

wikEd.InitMainEditCSS();

wikEd.InitButton();

wikEd.InitButtonKey();

wikEd.InitButtonBar();

wikEd.InitHistoryLength();

wikEd.InitIncompatibleScripts();

// check for incompatible scripts

if (wikEd.config.skipScriptTest == false) {

var scriptNames = '';

for (var key in wikEd.config.incompatibleScripts) {

if (wikEd.config.incompatibleScripts.hasOwnProperty(key) == true) {

var generalName = key;

var regExp = new RegExp(wikEd.config.incompatibleScripts[key].replace(/\.js$/g, ''), 'gim');

if (regExp.test(wikEd.externalScriptsString) == true) {

if (scriptNames != '') {

scriptNames += ', ';

}

scriptNames += generalName;

}

}

}

if (scriptNames != '') {

wikEd.disabled = true;

wikEd.SetLogo('incompatible', scriptNames);

return;

}

}

// define Unicode characters for fixing function

wikEd.InitUnicode();

// detect if we add a new section (+ tab)

if (/(\?|&)section=new\b/.test(window.location.search) == true) {

wikEd.addNewSection = true;

}

else {

var section = document.getElementsByName('wpSection');

if (section != null) {

if (section.length > 0) {

if (section[0].value == 'new') {

wikEd.addNewSection = true;

}

}

}

}

// load the external InstaView script

if ( (wikEd.greasemonkey == false) && (wikEd.config.loadInstaView == true) && (wikEd.externalScripts['instaview.js'] == null) ) {

if (typeof(InstaView) == 'undefined') {

var sep = '&';

if (wikEd.config.instaViewSrc.indexOf('?') == -1) {

sep = '?';

}

wikEd.AppendScript(wikEd.config.instaViewSrc + sep + wikEd.programVersion);

}

wikEd.externalScripts['instaview.js'] = true;

}

else if ( (wikEd.greasemonkey == false) || (wikEd.config.loadInstaView != true) ) {

wikEd.config.useLocalPreview = false;

}

// get initial textarea dimensions

wikEd.textareaBorderHeight = parseInt(wikEd.GetStyle(wikEd.textarea, 'borderTopWidth'), 10) + parseInt(wikEd.GetStyle(wikEd.textarea, 'borderBottomWidth'), 10);

if (wikEd.GetStyle(wikEd.textarea, 'display') != 'none') {

wikEd.textareaOffsetHeightInitial = wikEd.textarea.offsetHeight;

}

else {

wikEd.textareaOffsetHeightInitial = wikEd.textarea.parentNode.clientHeight;

}

wikEd.textareaOffsetHeightInitial = wikEd.textarea.offsetHeight;

wikEd.textareaHeight = (wikEd.textarea.offsetHeight - wikEd.textareaBorderHeight) + 'px';

wikEd.textareaWidth = '100%';

// remove frame border if textarea has none

var styleFrameContainer = '';

if (wikEd.textareaBorderHeight == 0) {

styleFrameContainer = 'border-width: 0;';

}

// setup the undo buffers and save the original text for local changes view

wikEd.origVersion = wikEd.textarea.value;

// Opera 0.9.51

wikEd.origVersion = wikEd.origVersion.replace(/\r\n|\n\r|\r/g, '\n');

// add stylesheet definitions

wikEd.ApplyCSS(document, wikEd.config.mainEditCSS);

// get button settings from saved settings

wikEd.using = wikEd.GetSavedSetting('wikEdSummaryUsing', wikEd.config.usingPreset);

wikEd.useWikEd = ! wikEd.GetSavedSetting('wikEdUseClassic', ! wikEd.config.useWikEdPreset);

wikEd.highlightSyntax = ! wikEd.GetSavedSetting('wikEdSyntaxOff', ! wikEd.config.highlightSyntaxPreset);

wikEd.fullScreenMode = wikEd.GetSavedSetting('wikEdFullscreen', wikEd.config.fullScreenModePreset);

wikEd.closeToolbar = wikEd.GetSavedSetting('wikEdCloseToolbar', wikEd.config.closeToolbarPreset);

wikEd.refHide = wikEd.GetSavedSetting('wikEdRefHide', wikEd.config.refHidePreset);

wikEd.diff = wikEd.GetSavedSetting('wikEdDiff', wikEd.config.diffPreset);

wikEd.tableMode = false;

// detect preview page

if (/(\?|&)action=submit\b/.test(window.location.search) == true) {

wikEd.previewPage = true;

}

// no fullscreen for preview and upload pages

if ( (wikEd.uploadEdit == true) || (wikEd.previewPage == true) ) {

wikEd.fullScreenMode = false;

}

// disable wikEd for Lupin's autoedit scripts

if (/(\?|&)autoedit=/.test(window.location.search) == true) {

wikEd.useWikEd = false;

}

// disable wikEd for js pages

if (/\.js$/.test(wikEd.wikiGlobals.wgTitle) == true) {

if ( (wikEd.wikiGlobals.wgCanonicalNamespace != 'User_talk') && (wikEd.wikiGlobals.wgCanonicalNamespace != 'Talk') ) {

wikEd.noSpellcheck = true;

if (wikEd.origVersion.length > 20000) {

wikEd.useWikEd = false;

}

else {

wikEd.highlightSyntax = false;

}

}

}

// no spellcheck for watchlist editing

if (wikEd.watchlistEdit == true) {

wikEd.noSpellcheck = true;

}

// disable spellchecker for textarea

if (wikEd.noSpellcheck == true) {

wikEd.textarea.setAttribute('spellcheck', false);

}

// preset frame related styles to avoid browser crashes

var styleFrameBody;

var styleFrameWrapperPosition;

var styleFrameWrapperVisibility;

var styleTextareaWrapperPosition;

var styleTextareaWrapperVisibility;

if (wikEd.useWikEd == true) {

styleFrameBody = 'display: block;';

styleFrameWrapperPosition = 'static';

styleFrameWrapperVisibility = 'visible';

styleTextareaWrapperPosition = 'absolute';

styleTextareaWrapperVisibility = 'hidden';

}

else {

styleFrameBody = 'display: none;';

styleFrameWrapperPosition = 'absolute';

styleFrameWrapperVisibility = 'hidden';

styleTextareaWrapperPosition = 'static';

styleTextareaWrapperVisibility = 'visible';

}

var inputWrapperClass;

if (wikEd.fullScreenMode == true) {

inputWrapperClass = 'wikEdInputWrapperFull';

}

else {

inputWrapperClass = 'wikEdInputWrapper';

}

// check if we use the wikEd.editor user interface of the vector skin or custom other

wikEd.wikiEditor = wikEd.GetElementsByClassName('wikiEditor-ui', 'div')[0];

if (wikEd.wikiEditor == null) {

var parent = wikEd.textarea.parentNode;

if ( (parent.nodeName == 'DIV') && (parent.firstChild == wikEd.textarea) ) {

wikEd.textareaContainer = parent;

}

else {

wikEd.textareaContainer = wikEd.textarea;

}

}

else {

wikEd.wikiEditorFrame = wikEd.wikiEditor.getElementsByTagName('IFRAME')[0];

wikEd.wikiEditorTop = wikEd.GetElementsByClassName('wikiEditor-ui-top', 'div')[0];

wikEd.wikiEditorBar = wikEd.GetElementsByClassName('wikiEditor-ui-toolbar', 'div')[0];

wikEd.wikiEditorBottom = wikEd.GetElementsByClassName('wikiEditor-ui-bottom', 'div')[0];

wikEd.wikiEditorText = wikEd.GetElementsByClassName('wikiEditor-ui-text', 'div')[0];

wikEd.textareaContainer = wikEd.wikiEditor;

}

// create input wrapper, contains the whole fullscreen content

wikEd.inputWrapper = document.createElement('div');

wikEd.inputWrapper.id = 'wikEdInputWrapper';

wikEd.inputWrapper.className = inputWrapperClass;

wikEd.textareaContainer.parentNode.insertBefore(wikEd.inputWrapper, wikEd.textareaContainer);

// create editor wrapper, contains toolbar, textarea, toc, but not the summary

if (wikEd.wikiEditor != null) {

wikEd.editorWrapper = wikEd.wikiEditor;

}

else {

wikEd.editorWrapper = document.createElement('div');

wikEd.editorWrapper.id = 'wikEdEditorWrapper';

wikEd.editorWrapper.className = 'wikEdEditorWrapper';

}

wikEd.inputWrapper.appendChild(wikEd.editorWrapper);

// create toolbar wrapper

wikEd.toolbarWrapper = document.createElement('div');

wikEd.toolbarWrapper.id = 'wikEdToolbarWrapper';

wikEd.toolbarWrapper.className = 'wikEdToolbarWrapper';

wikEd.toolbar = document.getElementById('toolbar');

if (wikEd.toolbar != null) {

wikEd.editorWrapper.appendChild(wikEd.toolbarWrapper);

wikEd.toolbarWrapper.appendChild(wikEd.toolbar);

}

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;

if (wikEd.rearrange == true) {

wikEd.captchaWrapper = document.createElement('div');

wikEd.captchaWrapper.id = 'wikEdCaptchaWrapper';

wikEd.captchaWrapper.className = 'wikEdCaptchaWrapper';

wikEd.editorWrapper.appendChild(wikEd.captchaWrapper);

// fill captcha wrapper with elements between form and textarea (table)

wikEd.textBoxTable = document.getElementById('textBoxTable');

if ( (wikEd.uploadEdit == false) && (wikEd.watchlistEdit == false) ) {

var node = wikEd.editForm.firstChild;

while (node != null) {

if ( (node == wikEd.inputWrapper) || (node == wikEd.wikiEditor) ) {

break;

}

var nextNode = node.nextSibling;

wikEd.captchaWrapper.appendChild(node);

node = nextNode;

}

}

}

// create debug textarea wrapper

wikEd.debugWrapper = document.createElement('div');

wikEd.debugWrapper.id = 'wikEdDebugWrapper';

wikEd.debugWrapper.className = 'wikEdDebugWrapper';

wikEd.debugWrapper.style.visibility = 'hidden';

wikEd.editorWrapper.appendChild(wikEd.debugWrapper);

// create edit wrapper for textarea and frame wrapper

wikEd.editWrapper = document.createElement('div');

wikEd.editWrapper.id = 'wikEdEditWrapper';

wikEd.editWrapper.className = 'wikEdEditWrapper';

wikEd.editorWrapper.appendChild(wikEd.editWrapper);

// create textarea wrapper

wikEd.textareaWrapper = document.createElement('div');

wikEd.textareaWrapper.id = 'wikEdTextareaWrapper';

wikEd.textareaWrapper.className = 'wikEdTextareaWrapper';

wikEd.textareaWrapper.style.position = styleTextareaWrapperPosition;

wikEd.textareaWrapper.style.visibility = styleTextareaWrapperVisibility;

wikEd.editWrapper.appendChild(wikEd.textareaWrapper);

// create frame wrapper

wikEd.frameWrapper = document.createElement('div');

wikEd.frameWrapper.id = 'wikEdFrameWrapper';

wikEd.frameWrapper.className = 'wikEdFrameWrapper';

wikEd.frameWrapper.style.position = styleFrameWrapperPosition;

wikEd.frameWrapper.style.visibility = styleFrameWrapperVisibility;

wikEd.editWrapper.appendChild(wikEd.frameWrapper);

// create console wrapper for buttons, summary, and submit

if (wikEd.rearrange == true) {

wikEd.consoleWrapper = document.createElement('div');

wikEd.consoleWrapper.id = 'wikEdConsoleWrapper';

wikEd.consoleWrapper.className = 'wikEdConsoleWrapper';

wikEd.inputWrapper.appendChild(wikEd.consoleWrapper);

}

// create buttons wrapper for toolbar and wikEd button bars

if (wikEd.wikiEditor != null) {

wikEd.buttonsWrapper = wikEd.wikiEditorTop;

}

else {

wikEd.buttonsWrapper = document.createElement('div');

wikEd.buttonsWrapper.id = 'wikEdButtonsWrapper';

wikEd.buttonsWrapper.className = 'wikEdButtonsWrapper';

}

wikEd.editorWrapper.insertBefore(wikEd.buttonsWrapper, wikEd.editWrapper);

// create button bar wrapper

wikEd.buttonBarWrapper = document.createElement('div');

wikEd.buttonBarWrapper.id = 'wikEdButtonBarWrapper';

wikEd.buttonBarWrapper.className = 'wikEdButtonBarWrapper';

wikEd.buttonsWrapper.appendChild(wikEd.buttonBarWrapper);

// create summary wrapper for summary, minor edit, and watch this page

if (wikEd.rearrange == true) {

wikEd.summaryWrapper = document.createElement('div');

wikEd.summaryWrapper.id = 'wikEdSummaryWrapper';

// add summary above the edit field if we add a new section (+ tab)

if (wikEd.addNewSection == true) {

wikEd.summaryWrapper.className = 'wikEdSummaryWrapperTop';

wikEd.inputWrapper.insertBefore(wikEd.summaryWrapper, wikEd.inputWrapper.firstChild);

}

else {

wikEd.summaryWrapper.className = 'wikEdSummaryWrapper';

wikEd.consoleWrapper.appendChild(wikEd.summaryWrapper);

}

// create summary input wrapper

wikEd.summaryInputWrapper = document.createElement('div');

wikEd.summaryInputWrapper.id = 'wikEdSummaryInputWrapper';

wikEd.summaryInputWrapper.className = 'wikEdSummaryInputWrapper';

wikEd.summaryWrapper.appendChild(wikEd.summaryInputWrapper);

// create minor edit and watch page wrapper

wikEd.editOptionsWrapper = document.createElement('div');

wikEd.editOptionsWrapper.id = 'wikEdEditOptionsWrapper';

wikEd.editOptionsWrapper.className = 'wikEdEditOptionsWrapper';

// create submit wrapper for submit elements

wikEd.submitWrapper = document.createElement('div');

wikEd.submitWrapper.id = 'wikEdSubmitWrapper';

wikEd.submitWrapper.className = 'wikEdSubmitWrapper';

wikEd.consoleWrapper.appendChild(wikEd.submitWrapper);

// create submit buttons wrapper for submit buttons and help links

wikEd.submitButtonsWrapper = document.createElement('div');

wikEd.submitButtonsWrapper.id = 'wikEdSubmitButtonsWrapper';

wikEd.submitButtonsWrapper.className = 'wikEdSubmitButtonsWrapper';

}

// create preview wrapper for preview and diff box

if (wikEd.enableLocalPreview != false) {

wikEd.localPrevWrapper = document.createElement('div');

wikEd.localPrevWrapper.id = 'wikEdLocalPrevWrapper';

wikEd.localPrevWrapper.className = 'wikEdLocalPrevWrapper';

wikEd.localPrevWrapper.style.display = 'none';

if (wikEd.rearrange == true) {

wikEd.inputWrapper.appendChild(wikEd.localPrevWrapper);

}

else if (wikEd.saveButton != null) {

wikEd.saveButton.parentNode.appendChild(wikEd.localPrevWrapper);

}

else if (wikEd.previewButton != null) {

wikEd.previewButton.parentNode.appendChild(wikEd.localPrevWrapper);

}

else if (wikEd.diffPreviewButton != null) {

wikEd.diffPreviewButton.parentNode.appendChild(wikEd.localPrevWrapper);

}

}

// create insert wrapper for insert special chars links

if (wikEd.rearrange == true) {

wikEd.insertWrapper = document.createElement('div');

wikEd.insertWrapper.id = 'wikEdInsertWrapper';

wikEd.insertWrapper.className = 'wikEdInsertWrapper';

wikEd.inputWrapper.appendChild(wikEd.insertWrapper);

}

// append input wrapper to document

if ( (wikEd.rearrange == true) && (wikEd.watchlistEdit == false) ) {

wikEd.editForm.insertBefore(wikEd.inputWrapper, wikEd.editForm.firstChild);

}

// fill the wrappers

// create debug textarea and add to debug wrapper

wikEd.debug = document.createElement('textarea');

wikEd.debug.rows = 20;

wikEd.debug.style.display = 'none';

wikEd.debug.setAttribute('spellcheck', false);

wikEd.debugWrapper.appendChild(wikEd.debug);

// display startup error messages

if (wikEd.config.debugStartUp != '') {

wikEd.Debug(wikEd.config.debugStartUp);

}

// wikEdDiff enhanced ajax diff

if (typeof(wikEd.diffTable) == 'object') {

if ( (wikEd.diffTable != null) && (wikEd.diff == true) ) {

if (typeof(wikEd.Diff) == 'function') {

wikEd.Diff();

}

}

}

// hide toolbar wrapper

if (wikEd.closeToolbar == true) {

wikEd.toolbarWrapper.style.display = 'none';

}

else {

wikEd.toolbarWrapper.style.display = 'block';

}

// call wikibits:mwSetupToolbar() now because it would terminate with an error after setting textarea to display: none

if (wikEd.toolbar != null) {

if (wikEd.toolbar.getElementsByTagName('IMG').length == 0) {

if (typeof(mwSetupToolbar) == 'function') {

mwSetupToolbar();

wikEd.RemoveEventListener(window, 'load', mwSetupToolbar, false);

}

}

}

// dropdowns from toolbar should go over wikEd toolbar

if (wikEd.wikiEditorBar != null) {

wikEd.wikiEditorBar.style.zIndex = '5';

}

// get edit options

wikEd.editOptions = wikEd.GetElementsByClassName('editCheckboxes', 'div', wikEd.editForm)[0];

// old MediaWiki versions

if (wikEd.editOptions == null) {

var wpSummary = document.getElementsByName('wpSummary')[0];

if (wpSummary != null) {

wikEd.editOptions = wpSummary.parentNode;

wikEd.editOptions.className = 'wikEdEditOptions';

}

}

// add summary elements to summary input wrapper

if (wikEd.rearrange == true) {

wikEd.summaryLabel = document.getElementById('wpSummaryLabel');

if (wikEd.summaryLabel != null) {

wikEd.summaryInputWrapper.appendChild(wikEd.summaryLabel);

}

wikEd.summaryText = document.getElementsByName('wpSummary')[0];

if (wikEd.summaryText != null) {

wikEd.summaryInputWrapper.appendChild(wikEd.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 (wikEd.rearrange == true) {

var copywarn = document.getElementById('editpage-copywarn');

if (copywarn != null) {

wikEd.inputWrapper.parentNode.insertBefore(copywarn, wikEd.inputWrapper.nextSibling);

}

}

// add submit buttons to submit wrapper

if (wikEd.rearrange == true) {

var wpEditButtons;

if (wikEd.saveButton != null) {

wpEditButtons = wikEd.saveButton.parentNode;

}

else if (wikEd.previewButton != null) {

wpEditButtons = wikEd.previewButton.parentNode;

}

else if (wikEd.diffPreviewButton != null) {

wpEditButtons = wikEd.diffPreviewButton.parentNode;

}

if (wpEditButtons != null) {

wikEd.submitButtonsWrapper.appendChild(wpEditButtons);

}

}

// add a link to the wikEd help page

if (wikEd.rearrange == true) {

if ( (wikEd.config.helpPageLink != '') && (wikEd.config.helpPageLink != null) ) {

var editHelpParent = wikEd.diffPreviewButton;

while (editHelpParent != null) {

if (editHelpParent.tagName == 'SPAN') {

break;

}

editHelpParent = editHelpParent.nextSibling;

}

if (editHelpParent != null) {

var editHelp = editHelpParent.lastChild;

while (editHelp != null) {

if (editHelp.tagName == 'A') {

break;

}

editHelp = editHelp.previousSibling;

}

if (editHelp != null) {

wikEd.helpSpan = document.createElement('span');

wikEd.helpSpan.id = 'wikEdHelpSpan';

wikEd.helpSpan.className = 'wikEdHelpSpan';

wikEd.helpSpan.innerHTML = wikEd.config.helpPageLink.replace(/\{wikEdHomeBaseUrl\}/g, wikEd.config.homeBaseUrl);

editHelpParent.insertBefore(wikEd.helpSpan, editHelp.nextSibling);

wikEd.editHelp = wikEd.helpSpan.parentNode;

wikEd.editHelp.id = 'wikEdEditHelp';

wikEd.editHelp.className = 'wikEdEditHelp';

}

}

}

}

// add submit buttons, edit options, and edit help to submit wrapper

if (wikEd.submitWrapper != null) {

if (wikEd.submitButtonsWrapper != null) {

wikEd.submitWrapper.appendChild(wikEd.submitButtonsWrapper);

}

if (wikEd.editOptionsWrapper != null) {

wikEd.submitWrapper.appendChild(wikEd.editOptionsWrapper);

if (wikEd.editOptions != null) {

wikEd.editOptionsWrapper.appendChild(wikEd.editOptions);

// remove linebreak before minor edit checkbox

var node = wikEd.editOptions.firstChild;

while (node != null) {

if (node.tagName != null) {

if (node.tagName == 'BR') {

node.parentNode.removeChild(node);

break;

}

}

node = node.nextSibling;

}

}

}

if (wikEd.editHelp != null) {

wikEd.submitWrapper.appendChild(wikEd.editHelp);

}

}

// add textBoxTable or textarea to edit wrapper

if (wikEd.textBoxTable != null) {

wikEd.textareaWrapper.appendChild(wikEd.textBoxTable);

}

else if (wikEd.wikiEditor != null) {

wikEd.textareaWrapper.appendChild(wikEd.wikiEditorBottom);

}

else {

wikEd.textareaWrapper.appendChild(wikEd.textarea);

}

// set frame font family

var classFrameBody;

if (wikEd.highlightSyntax == true) {

if (wikEd.refHide == true) {

classFrameBody = 'wikEdFrameBodyNewbie';

}

else {

classFrameBody = 'wikEdFrameBodySyntax';

}

}

else {

classFrameBody = 'wikEdFrameBodyPlain';

}

// add edit-frame to frame wrapper

// any DOM changes to a starting iframe in designmode may crash mozilla, including DOM move, display: none; and position: absolute;

// create the iframe

var html = '';

html += '

';

html += '

';

html += '';

html += '

';

html += '

';

wikEd.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 ( (wikEd.mozilla == true) && (

(wikEd.browserFlavor == 'Firefox') && (wikEd.browserVersion < 3.0) ||

(wikEd.browserFlavor == 'Netscape') && (wikEd.browserVersion < 9.0) ||

(wikEd.browserFlavor == 'SeaMonkey') && (wikEd.browserVersion < 2.0) ) ) {

onloadWorkaround = true;

}

// fill the frame with content

html = '';

html += '';

html += '

// disable spellchecker in iframe

if (wikEd.noSpellcheck == true) {

html += ' spellcheck="false"';

}

if (wikEd.readOnly == false) {

html += ' onload="var doc = window.document; doc.designMode = \'on\'; ';

}

html += 'try { doc.execCommand(\'styleWithCSS\', 0, false); } catch (error) { ';

html += 'try { doc.execCommand(\'useCSS\', 0, true); } catch (error) { ';

html += 'try { doc.execCommand(\'styleWithCSS\', false, false); } catch (error) { } } }"';

html += '>';

wikEd.frameOuter = document.getElementById('wikEdFrameOuter');

wikEd.frameInner = document.getElementById('wikEdFrameInner');

wikEd.frame = document.getElementById('wikEdFrame');

wikEd.frameWindow = wikEd.frame.contentWindow;

wikEd.frameDocument = wikEd.frameWindow.document;

// set frame height and width, border divs shrink around

wikEd.frameBorderHeight = parseInt(wikEd.GetStyle(wikEd.frameOuter, 'borderTopWidth'), 10) + parseInt(wikEd.GetStyle(wikEd.frameOuter, 'borderBottomWidth'), 10) + parseInt(wikEd.GetStyle(wikEd.frameInner, 'borderTopWidth'), 10) + parseInt(wikEd.GetStyle(wikEd.frameInner, 'borderBottomWidth'), 10);

wikEd.frameHeight = (wikEd.textareaOffsetHeightInitial - wikEd.frameBorderHeight) + 'px';

wikEd.frame.style.height = wikEd.frameHeight;

wikEd.frameBorderWidth = parseInt(wikEd.GetStyle(wikEd.frameOuter, 'borderLeftWidth'), 10) + parseInt(wikEd.GetStyle(wikEd.frameOuter, 'borderRightWidth'), 10) + parseInt(wikEd.GetStyle(wikEd.frameInner, 'borderLeftWidth'), 10) + parseInt(wikEd.GetStyle(wikEd.frameInner, 'borderRightWidth'), 10);

wikEd.frameWidth = (wikEd.editorWrapper.clientWidth - wikEd.frameBorderWidth) + 'px';

wikEd.frame.style.width = wikEd.frameWidth;

// do not remember size if started in fullscreen mode

if (wikEd.fullScreenMode == true) {

wikEd.frameHeight = 0;

wikEd.frameWidth = 0;

}

// turn on designmode before adding content

if ( (onloadWorkaround == false) && (wikEd.readOnly == false) ) {

wikEd.frameDocument.designMode = 'on';

try { wikEd.frameDocument.execCommand('styleWithCSS', 0, false); } catch (error) {

try { wikEd.frameDocument.execCommand('useCSS', 0, true); } catch (error) {

try { wikEd.frameDocument.execCommand('styleWithCSS', false, false); } catch (errror) {

}

}

}

}

// MS-IE needs styling for full width frame

if (wikEd.msie == true) {

//// wikEd.frame.style.width = wikEd.textareaWidth + 'px';// 100%

}

// fill iframe with content

wikEd.frameDocument.open();

wikEd.frameDocument.write(html);

wikEd.frameDocument.close();

wikEd.frameBody = wikEd.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 (wikEd.readOnly == false) {

wikEd.buttonBarFormat = wikEd.MakeButtonBar(wikEd.config.buttonBar.format);

wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarFormat);

wikEd.buttonBarTextify = wikEd.MakeButtonBar(wikEd.config.buttonBar.textify);

wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarTextify);

}

wikEd.buttonBarControl = wikEd.MakeButtonBar(wikEd.config.buttonBar.control);

wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarControl);

if (wikEd.config.buttonBar.custom1[6].length > 0) {

wikEd.buttonBarCustom1 = wikEd.MakeButtonBar(wikEd.config.buttonBar.custom1);

wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarCustom1);

}

wikEd.buttonBarFind = wikEd.MakeButtonBar(wikEd.config.buttonBar.find);

wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarFind);

if (wikEd.readOnly == false) {

wikEd.buttonBarFix = wikEd.MakeButtonBar(wikEd.config.buttonBar.fix);

wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarFix);

}

if (wikEd.config.buttonBar.custom2[6].length > 0) {

wikEd.buttonBarCustom2 = wikEd.MakeButtonBar(wikEd.config.buttonBar.custom2);

wikEd.buttonBarWrapper.appendChild(wikEd.buttonBarCustom2);

}

var br = document.createElement('br');

br.style.clear = 'both';

wikEd.buttonsWrapper.appendChild(br);

wikEd.caseSensitive = document.getElementById('wikEdCaseSensitive');

wikEd.regExp = document.getElementById('wikEdRegExp');

wikEd.findAhead = document.getElementById('wikEdFindAhead');

wikEd.findText = document.getElementById('wikEdFindText');

wikEd.replaceText = document.getElementById('wikEdReplaceText');

// add preview box top bar to submit wrapper

wikEd.buttonBarPreview = wikEd.MakeButtonBar(wikEd.config.buttonBar.preview);

if ( (wikEd.rearrange == true) && (wikEd.submitWrapper != null) ) {

wikEd.submitWrapper.insertBefore(wikEd.buttonBarPreview, wikEd.submitWrapper.firstChild);

}

// add pasted button bar to frame wrapper

wikEd.buttonBarPasted = wikEd.MakeButtonBar(wikEd.config.buttonBar.pasted);

wikEd.buttonBarPasted.style.visibility = 'hidden';

wikEd.frameInner.insertBefore(wikEd.buttonBarPasted, wikEd.frameInner.firstChild);

// add preview box and its bottom bar to preview wrapper

if (wikEd.localPrevWrapper != null) {

var div = document.createElement('div');

div.id = 'wikEdPreviewBoxOuter';

div.className = 'wikEdPreviewBoxOuter';

wikEd.localPrevWrapper.appendChild(div);

wikEd.previewBox = document.createElement('div');

wikEd.previewBox.id = 'wikEdPreviewBox';

wikEd.previewBox.className = 'wikEdPreviewBox';

div.appendChild(wikEd.previewBox);

wikEd.buttonBarPreview2 = wikEd.MakeButtonBar(wikEd.config.buttonBar.preview2);

wikEd.localPrevWrapper.appendChild(wikEd.buttonBarPreview2);

}

// add jump box to standard preview

var wikiPreview = document.getElementById('wikiPreview');

if (wikiPreview != null) {

if (wikiPreview.firstChild != null) {

wikEd.buttonBarJump = wikEd.MakeButtonBar(wikEd.config.buttonBar.jump);

wikiPreview.insertBefore(wikEd.buttonBarJump, wikiPreview.firstChild);

}

}

// add insert special chars to insert wrapper

if (wikEd.insertWrapper != null) {

var wpSpecialchars = document.getElementById('editpage-specialchars');

if (wpSpecialchars != null) {

wikEd.insertWrapper.appendChild(wpSpecialchars);

}

}

// wrappers filled

// add local preview button next to submit button

if (wikEd.enableLocalPreview != false) {

var previewSpan = document.createElement('span');

previewSpan.innerHTML = wikEd.MakeButtonCode(82, 'button');

if (wikEd.previewButton != null) {

wikEd.previewButton.parentNode.insertBefore(previewSpan, wikEd.previewButton.nextSibling);

}

else if (wikEd.saveButton != null) {

wikEd.saveButton.parentNode.insertBefore(previewSpan, wikEd.saveButton.nextSibling);

}

// add local diff button next to submit button

if ( ( (wikEd.diffPreviewButton != null) || (wikEd.watchlistEdit == true) ) && (wikEd.readOnly == false) ) {

var diffSpan = document.createElement('span');

diffSpan.innerHTML = wikEd.MakeButtonCode(83, 'button');

if (wikEd.diffPreviewButton != null) {

wikEd.diffPreviewButton.parentNode.insertBefore(diffSpan, wikEd.diffPreviewButton.nextSibling);

}

else if (previewSpan != null) {

previewSpan.parentNode.insertBefore(diffSpan, previewSpan.nextSibling);

}

else if (wikEd.previewButton != null) {

wikEd.previewButton.parentNode.insertBefore(diffSpan, wikEd.previewButton.nextSibling);

}

}

}

// correct tab order between check boxes and submits

wikEd.frame.tabIndex = wikEd.textarea.tabIndex;

// initialize image buttons

wikEd.Button(document.getElementById('wikEdDiff'), 'wikEdDiff', null, wikEd.diff);

wikEd.Button(document.getElementById('wikEdRefHide'), 'wikEdRefHide', null, wikEd.refHide);

wikEd.Button(document.getElementById('wikEdHighlightSyntax'), 'wikEdHighlightSyntax', null, wikEd.highlightSyntax);

wikEd.Button(document.getElementById('wikEdUseWikEd'), 'wikEdUseWikEd', null, wikEd.useWikEd);

wikEd.Button(document.getElementById('wikEdCloseToolbar'), 'wikEdCloseToolbar', null, wikEd.closeToolbar);

wikEd.Button(document.getElementById('wikEdFullScreen'), 'wikEdFullScreen', null, wikEd.fullScreenMode);

wikEd.Button(document.getElementById('wikEdUsing'), 'wikEdUsing', null, wikEd.using);

wikEd.Button(document.getElementById('wikEdCaseSensitive'), 'wikEdCaseSensitive', null, false);

wikEd.Button(document.getElementById('wikEdRegExp'), 'wikEdRegExp', null, false);

wikEd.Button(document.getElementById('wikEdFindAhead'), 'wikEdFindAhead', null, wikEd.config.findAheadSelected);

wikEd.Button(document.getElementById('wikEdClose'), 'wikEdClose', null, false, 'wikEdButton');

wikEd.Button(document.getElementById('wikEdClose2'), 'wikEdClose2', null, false, 'wikEdButton');

wikEd.Button(document.getElementById('wikEdTableMode'), 'wikEdTableMode', null, wikEd.tableMode);

// hide typo fix button until typo fix rules are loaded and parsed

wikEd.fixRegExTypo = document.getElementById('wikEdFixRegExTypo');

if (wikEd.fixRegExTypo != null) {

wikEd.fixRegExTypo.style.display = 'none';

}

// add a clear summary button left to the summary input field

if (wikEd.summaryText != null) {

var clearSummaryForm = document.createElement('form');

clearSummaryForm.id = 'wikEdClearSummaryForm';

clearSummaryForm.className = 'wikEdClearSummaryForm';

wikEd.summaryText.parentNode.insertBefore(clearSummaryForm, wikEd.summaryText);

wikEd.clearSummary = document.createElement('button');

wikEd.clearSummary.id = 'wikEdClearSummary';

wikEd.clearSummary.className = 'wikEdClearSummary';

wikEd.clearSummary.alt = wikEd.config.text['wikEdClearSummary alt'];

wikEd.clearSummary.title = wikEd.config.text['wikEdClearSummary title'];

clearSummaryForm.appendChild(wikEd.clearSummary);

wikEd.clearSummaryImg = document.createElement('img');

wikEd.clearSummaryImg.id = 'wikEdClearSummaryImg';

wikEd.clearSummaryImg.src = wikEd.config.image['clearSummary'];

wikEd.clearSummaryImg.alt = 'Clear summary';

wikEd.clearSummary.appendChild(wikEd.clearSummaryImg);

// remember button width, might be without image

wikEd.clearSummaryWidth = wikEd.clearSummary.offsetWidth;

// make the summary a combo box

var summaryComboInput = document.createElement('span');

summaryComboInput.id = 'wikEdSummaryComboInput';

summaryComboInput.className = 'wikEdSummaryComboInput';

summaryComboInput = wikEd.summaryText.parentNode.insertBefore(summaryComboInput, wikEd.summaryText);

wikEd.summaryText = wikEd.summaryText.parentNode.removeChild(wikEd.summaryText);

wikEd.summaryText.className = 'wikEdSummaryText';

wikEd.summaryTextWidth = wikEd.summaryWrapper.offsetWidth - wikEd.summaryInputWrapper.offsetWidth;

if (wikEd.summaryTextWidth < 150) {

wikEd.summaryTextWidth = 150;

}

wikEd.summaryText.style.width = wikEd.summaryTextWidth + 'px';

wikEd.summarySelect = document.createElement('select');

wikEd.summarySelect.id = 'wikEdSummarySelect';

wikEd.summarySelect.className = 'wikEdSummarySelect';

summaryComboInput.appendChild(wikEd.summaryText);

summaryComboInput.appendChild(wikEd.summarySelect);

}

// shorten submit button texts

if (wikEd.previewButton != null) {

wikEd.previewButton.value = wikEd.config.text.shortenedPreview;

}

if (wikEd.diffPreviewButton != null) {

wikEd.diffPreviewButton.value = wikEd.config.text.shortenedChanges;

}

// set up combo input boxes with history

wikEd.fieldHist ['find'] = [];

wikEd.savedName.find = 'wikEdFindHistory';

wikEd.inputElement.find = new Object(wikEd.findText);

wikEd.selectElement.find = new Object(document.getElementById('wikEdFindSelect'));

wikEd.selectElement.find.title = wikEd.config.text['wikEdFindSelect title'];

wikEd.fieldHist ['replace'] = [];

wikEd.savedName.replace = 'wikEdReplaceHistory';

wikEd.inputElement.replace = new Object(wikEd.replaceText);

wikEd.selectElement.replace = new Object(document.getElementById('wikEdReplaceSelect'));

wikEd.selectElement.replace.title = wikEd.config.text['wikEdReplaceSelect title'];

if (wikEd.summaryInputWrapper != null) {

wikEd.fieldHist ['summary'] = [];

wikEd.savedName.summary = 'wikEdSummaryHistory';

wikEd.inputElement.summary = new Object(wikEd.summaryText);

wikEd.selectElement.summary = new Object(document.getElementById('wikEdSummarySelect'));

wikEd.selectElement.summary.title = wikEd.config.text['wikEdSummarySelect title'];

}

// adjust the select field widths to that of the text input fields

wikEd.ResizeComboInput('find');

wikEd.ResizeComboInput('replace');

if (wikEd.summaryText != null) {

wikEd.ResizeComboInput('summary');

}

// hide the button bars per saved setting

if (wikEd.buttonBarFormat != null) {

wikEd.ButtonBarInit(wikEd.buttonBarFormat);

}

if (wikEd.buttonBarTextify != null) {

wikEd.ButtonBarInit(wikEd.buttonBarTextify);

}

if (wikEd.buttonBarControl != null) {

wikEd.ButtonBarInit(wikEd.buttonBarControl);

}

if (wikEd.buttonBarCustom1 != null) {

wikEd.ButtonBarInit(wikEd.buttonBarCustom1);

}

if (wikEd.buttonBarFind != null) {

wikEd.ButtonBarInit(wikEd.buttonBarFind);

}

if (wikEd.buttonBarFix != null) {

wikEd.ButtonBarInit(wikEd.buttonBarFix);

}

if (wikEd.buttonBarCustom2 != null) {

wikEd.ButtonBarInit(wikEd.buttonBarCustom2);

}

// display only the textarea or the iframe, dont change the frame

wikEd.SetEditArea(wikEd.useWikEd, true);

// copy page warnings above edit window

if (wikEd.config.doCloneWarnings == true) {

if ( (wikEd.clonedWarnings == false) && (wikEd.previewPage == false) && (/(.*\n){2}/.test(wikEd.origVersion) ) == true) {

var divs = document.getElementsByTagName('div');

var divWarnings = [];

var editnoticeArea = false;

for (var i = 0; i < divs.length; i ++) {

var div = divs[i];

if (/editnotice/.test(div.id) == true) {

if (editnoticeArea == false) {

divWarnings.push(div);

editnoticeArea = true;

}

}

else if (/mw-.*?warning/.test(div.className) == true) {

divWarnings.push(div);

}

}

// create clone wrapper

if (divWarnings.length > 0) {

var cloneWrapper = document.createElement('div');

cloneWrapper.id = 'wikEdClonedWarnings';

wikEd.editForm.insertBefore(cloneWrapper, wikEd.editForm.firstChild);

var cloneNote = document.createElement('div');

cloneNote.id = 'wikEdClonedWarningsNote';

cloneNote.innerHTML = wikEd.config.text['clonedWarningsNote'];

cloneWrapper.appendChild(cloneNote);

for (var i = 0; i < divWarnings.length; i ++) {

var clone = divWarnings[i].cloneNode(true);

cloneWrapper.appendChild(clone);

}

wikEd.clonedWarnings = true;

}

}

}

// add frame stylesheet definition

wikEd.direction = wikEd.GetStyle(document.body, 'direction');

wikEd.frameBody.style.direction = wikEd.direction;

wikEd.ApplyCSS(wikEd.frameDocument, wikEd.config.frameCSS);

wikEd.HighlightNamedHideButtonsStylesheet = new wikEd.StyleSheet(wikEd.frameDocument);

// copy textarea background

if (wikEd.GetStyle(wikEd.textarea, 'display') != 'none') {

wikEd.frameInner.style.backgroundColor = wikEd.GetStyle(wikEd.textarea, 'backgroundColor');

}

// adjust font size (px)

wikEd.textSizeInit = parseFloat(wikEd.GetStyle(wikEd.textarea, 'fontSize')) * wikEd.config.textSizeAdjust / 100;

wikEd.textSize = wikEd.textSizeInit;

wikEd.frameBody.style.fontSize = wikEd.textSize + 'px';

// copy the textarea content to the iframe

if (wikEd.useWikEd == true) {

wikEd.UpdateFrame();

}

// initialize IERange DOM range compatibility library

if (typeof(IERange) == 'function') {

IERange(wikEd.frameWindow, wikEd.frameDocument);

}

// scroll to edit window and focus if it is not a preview page

if ( (scrollToEditFocus == true) && (wikEd.previewPage == false) ) {

// focus the input field

if (wikEd.config.focusEdit == true) {

if (wikEd.useWikEd == true) {

wikEd.frameWindow.focus();

}

else {

if (wikEd.msie == true) {

wikEd.textarea.selection.empty();

}

else {

wikEd.textarea.setSelectionRange(0, 0);

}

wikEd.textarea.focus();

}

}

// scroll

if ( (wikEd.fullScreenMode == false) && (wikEd.config.scrollToEdit == true) ) {

window.scroll(0, wikEd.GetOffsetTop(wikEd.editForm) - 2);

}

}

// register edit button click events

for (var buttonId in wikEd.editButtonHandler) {

if (wikEd.editButtonHandler.hasOwnProperty(buttonId) == true) {

var buttonObj = document.getElementById(buttonId);

if (buttonObj != null) {

wikEd.AddEventListener(buttonObj, 'click', wikEd.EditButtonHandler, true);

}

}

}

// register summary shrinking event after loading the 'Clear summary' image handler

wikEd.AddEventListener(wikEd.clearSummaryImg, 'load', wikEd.ShrinkSummaryHandler, true);

// register summary resize event for window resizing (MS IE bug: fires once always)

wikEd.AddEventListener(window, 'resize', wikEd.ResizeWindowHandler, true);

// register frame events

wikEd.AddEventListener(wikEd.frameDocument, 'keydown', wikEd.KeyFrameHandler, true);

wikEd.AddEventListener(wikEd.frameDocument, 'keyup', wikEd.KeyFrameHandler, true);

wikEd.AddEventListener(wikEd.frameDocument, 'keypress', wikEd.KeyFrameHandler, true);

wikEd.AddEventListener(wikEd.frameDocument, 'mouseup', wikEd.KeyFrameHandler, true);

wikEd.AddEventListener(wikEd.frameDocument, 'keydown', wikEd.KeyHandler, true);

wikEd.AddEventListener(wikEd.frameDocument, 'mousemove', wikEd.ResizeGripHandler, true);

wikEd.AddEventListener(wikEd.frameDocument, 'dblclick', wikEd.ResizeFrameResetHandler, true);

// register paste events

wikEd.AddEventListener(wikEd.frameDocument, 'paste', wikEd.PasteFrameHandler, true);

wikEd.AddEventListener(wikEd.frameDocument, 'drop', wikEd.PasteFrameHandler, true);

wikEd.AddEventListener(wikEd.frameDocument, 'paste', wikEd.KeyFrameHandler, true);

// register document events

wikEd.AddEventListener(document, 'keydown', wikEd.KeyHandler, true);

// dblclick on wrapper events

wikEd.AddEventListener(wikEd.debugWrapper, 'dblclick', wikEd.DebugHandler, true);

wikEd.AddEventListener(wikEd.localPrevWrapper, 'dblclick', wikEd.PrevWrapperHandler, true);

// register find ahead events

wikEd.AddEventListener(wikEd.findText, 'keyup', wikEd.FindAhead, true);

// register submit button events

wikEd.AddEventListener(wikEd.saveButton, 'click', wikEd.SaveButtonHandler, true);

wikEd.AddEventListener(wikEd.previewButton, 'click', wikEd.PreviewButtonHandler, true);

wikEd.AddEventListener(wikEd.diffPreviewButton, 'click', wikEd.DiffPreviewButtonHandler, true);

// unload (leaving page) events

wikEd.AddEventListener(window, 'pagehide', wikEd.UnloadHandler, false);

// set button bar grip area events

if (wikEd.buttonBarFormat != null) {

wikEd.AddEventListener(wikEd.buttonBarFormat.firstChild.firstChild, 'click', wikEd.ButtonBarGripHandler, false);

}

if (wikEd.buttonBarTextify != null) {

wikEd.AddEventListener(wikEd.buttonBarTextify.firstChild.firstChild, 'click', wikEd.ButtonBarGripHandler, false);

}

if (wikEd.buttonBarControl != null) {

wikEd.AddEventListener(wikEd.buttonBarControl.firstChild.firstChild, 'click', wikEd.ButtonBarGripHandler, false);

}

if (wikEd.buttonBarCustom1 != null) {

if (wikEd.buttonBarCustom1.firstChild.firstChild != null) {

wikEd.AddEventListener(wikEd.buttonBarCustom1.firstChild.firstChild, 'click', wikEd.ButtonBarGripHandler, false);

}

}

if (wikEd.buttonBarFind != null) {

wikEd.AddEventListener(wikEd.buttonBarFind.firstChild.firstChild, 'click', wikEd.ButtonBarGripHandler, false);

}

if (wikEd.buttonBarFix != null) {

wikEd.AddEventListener(wikEd.buttonBarFix.firstChild.firstChild, 'click', wikEd.ButtonBarGripHandler, false);

}

if (wikEd.buttonBarCustom2 != null) {

if (wikEd.buttonBarCustom2.firstChild.firstChild != null) {

wikEd.AddEventListener(wikEd.buttonBarCustom2.firstChild.firstChild, 'click', wikEd.ButtonBarGripHandler, false);

}

}

// register combo box events

wikEd.AddEventListener(wikEd.summarySelect, 'change', function() { wikEd.ChangeComboInput('summary'); }, false);

wikEd.AddEventListener(wikEd.summarySelect, 'focus', function() { wikEd.SetComboOptions('summary'); }, false);

wikEd.AddEventListener(wikEd.selectElement.find, 'change', function() { wikEd.ChangeComboInput('find'); }, false);

wikEd.AddEventListener(wikEd.selectElement.find, 'focus', function() { wikEd.SetComboOptions('find'); }, false);

wikEd.AddEventListener(wikEd.selectElement.replace, 'change', function() { wikEd.ChangeComboInput('replace'); }, false);

wikEd.AddEventListener(wikEd.selectElement.replace, 'focus', function() { wikEd.SetComboOptions('replace'); }, false);

// register the clear summary click handler

wikEd.AddEventListener(wikEd.clearSummary, 'click', wikEd.ClearSummaryHandler, true);

// select the text on focus for find and replace fields

wikEd.AddEventListener(wikEd.findText, 'focus', wikEd.FindReplaceHandler, true);

wikEd.AddEventListener(wikEd.replaceText, 'focus', wikEd.FindReplaceHandler, true);

// tab / shift-tab between find and replace fields

wikEd.AddEventListener(wikEd.findText, 'keydown', wikEd.FindReplaceHandler, true);

wikEd.AddEventListener(wikEd.replaceText, 'keydown', wikEd.FindReplaceHandler, true);

// init MediaWiki file paths for use in regexps

if (wikEd.wikiGlobals.wgServer != null) {

wikEd.server = wikEd.wikiGlobals.wgServer;

}

if (wikEd.wikiGlobals.wgArticlePath != null) {

wikEd.articlePath = wikEd.wikiGlobals.wgArticlePath;

}

if (wikEd.wikiGlobals.wgScriptPath != null) {

wikEd.scriptPath = wikEd.wikiGlobals.wgScriptPath;

}

if (wikEd.wikiGlobals.wgScript != null) {

wikEd.script = wikEd.wikiGlobals.wgScript;

}

wikEd.articlePath = wikEd.articlePath.replace(wikEd.server, '');

wikEd.scriptPath = wikEd.scriptPath.replace(wikEd.server, '');

wikEd.articlePath = wikEd.articlePath.replace(/\$1$/, '');

wikEd.scriptPath = wikEd.scriptPath.replace(/\/?$/, '/');

wikEd.scriptName = wikEd.script.replace(wikEd.scriptPath, '');

wikEd.scriptURL = wikEd.server + wikEd.scriptPath;

// prepare for use in regexps

wikEd.server = wikEd.server.replace(/(\W)/g, '\\$1');

wikEd.articlePath = wikEd.articlePath.replace(/(\W)/g, '\\$1');

wikEd.script = wikEd.script.replace(/(\W)/g, '\\$1');

wikEd.scriptPath = wikEd.scriptPath.replace(/(\W)/g, '\\$1');

wikEd.scriptName = wikEd.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) {

wikEd.cleanNodes = true;

}

// fullscreen mode

if (wikEd.fullScreenMode == true) {

wikEd.FullScreen(wikEd.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 (wikEd.InsertTagsOriginal == null) {

wikEd.InsertTagsOriginal = insertTags;

}

insertTags = wikEd.InsertTags;

}

else {

window.insertTags = wikEd.InsertTags;

}

// hook wikEd into the enhanced new edit toolbar, not Greasemonkey compatible

if (typeof(jQuery) == 'function') {

jQuery('#wpTextbox1').bind('encapsulateSelection', function(e, before, inside, after) {

if (wikEd.useWikEd == true) {

wikEd.InsertTags(before, after, inside);

}

});

}

// update textarea before using UI LivePreview function, not Greasemonkey compatible

if ( (typeof(jQuery) == 'function') && (typeof(mw) == 'object') ) {

jQuery(mw).bind('LivePreviewPrepare', function(event) {

if (wikEd.useWikEd == true) {

wikEd.UpdateTextarea();

}

});

}

// override insertAtCursor function in wikia.com MediaWiki:Functions.js, not Greasemonkey compatible

if (typeof(insertAtCursor) == 'function') {

if (wikEd.InsertAtCursorOriginal == null) {

wikEd.InsertAtCursorOriginal = insertAtCursor;

}

insertAtCursor = wikEd.InsertAtCursor;

}

// reset error indicator

wikEd.SetLogo();

wikEd.turnedOn = true;

// get frame resize grip image dimensions

var resizeGripImage = document.createElement('img');

resizeGripImage.id = 'wikEdResizeGrip';

wikEd.AddEventListener(resizeGripImage, 'load', wikEd.ResizeGripLoadHandler, true);

resizeGripImage.src = wikEd.config.image['resizeGrip'];

// remove accesskeys that are defined in wikEd from page elements

wikEd.DeleteAccesskeys();

// run scheduled custom functions

wikEd.ExecuteHook(wikEd.config.setupHook);

// load and parse RegExTypoFix rules if the button is enabled

wikEd.LoadTypoFixRules();

// done with setup and turn-on

return;

};

//

// wikEd.deleteAccesskeys: remove accesskeys that are defined in wikEd from page elements

//

wikEd.DeleteAccesskeys = function() {

var accesskeyTags = ['textarea', 'input', 'a'];

for (var i = 0; i < accesskeyTags.length; i ++) {

var accesskeyElements = document.getElementsByTagName(accesskeyTags[i]);

for (var j = 0; j < accesskeyElements.length; j ++) {

var attribute = wikEd.GetAttribute(accesskeyElements[j], 'accesskey');

if (attribute != null) {

if (wikEd.buttonKeyCode[ attribute.toUpperCase().charCodeAt(0) ] != null) {

accesskeyElements[j].setAttribute('accesskey', null);

}

}

}

}

return;

};

//

// wikEd.AutoUpdate: check for the latest version and force-reload to update

//

wikEd.AutoUpdate = function() {

// check only on non-interaction pages

if (/(\?|&)action=/.test(window.location.search) == true) {

return;

}

// check if autoupdate is enabled

if (wikEd.config.autoUpdate != true) {

return;

}

// check for forced update check

var forcedUpdate = false;

if (wikEd.config.forcedUpdate != '') {

// get version numbers from strings

var currentVersion = wikEd.VersionToNumber(wikEd.programVersion);

var forcedVersion = wikEd.VersionToNumber(wikEd.config.forcedUpdate);

// schedule forced update check

if ( (currentVersion != null) && (forcedVersion != null) ) {

if (forcedVersion > currentVersion) {

forcedUpdate = true;

}

}

}

// check for regular update

var regularUpdate = false;

var currentDate = new Date();

if (forcedUpdate == false) {

// get date of last update check

var lastCheckStr = wikEd.GetPersistent('wikEdAutoUpdate');

var lastCheckDate = new Date(lastCheckStr);

// fix missing or corrupt saved setting

if (isNaN(lastCheckDate.valueOf()) == true) {

wikEd.SetPersistent('wikEdAutoUpdate', 'January 1, 1970', 0, '/');

return;

}

// get the hours since last update check

var diffHours = (currentDate - lastCheckDate) / 1000 / 60 / 60;

if (wikEd.greasemonkey == true) {

if (diffHours > wikEd.config.autoUpdateHoursGM) {

regularUpdate = true;

}

}

else if (diffHours > wikEd.config.autoUpdateHours) {

regularUpdate = true;

}

}

// perform AJAX request to get latest version number

if ( (forcedUpdate == true) || (regularUpdate == true) ) {

// save current update check date

wikEd.SetPersistent('wikEdAutoUpdate', currentDate.toUTCString(), 0, '/');

// make the ajax request

wikEd.AjaxRequest('GET', wikEd.config.autoUpdateUrl, null, 'text/plain', function(ajax, obj) {

// get response

var html = ajax.responseText;

// get version numbers from strings

var currentVersion = wikEd.VersionToNumber(wikEd.programVersion);

var newVersion = wikEd.VersionToNumber(html);

// check if downloaded version is newer and perform update

if ( (currentVersion != null) && (newVersion != null) ) {

if (newVersion > currentVersion) {

wikEd.DoUpdate();

}

}

});

}

return;

};

//

// wikEd.VersionToNumber: parse version string (1.22.333a) into number 122333097

//

wikEd.VersionToNumber = function(versionStr) {

var ver = versionStr.match(/(\d+)\.(\d+)\.(\d+)(\w?)/);

if (ver == null) {

return;

}

var versionNumber = Number(ver[1]) * 100000000 + Number(ver[2]) * 1000000 + Number(ver[3]) * 1000 + (ver[4] + '0').charCodeAt(0);

return(versionNumber);

};

//

// wikEd.DoUpdate: actually perform update

//

wikEd.DoUpdate = function() {

// update Greasemonkey script by navigating to the script code page

if (wikEd.greasemonkey == true) {

var updatePopup = wikEd.config.text.wikEdGreasemonkeyAutoUpdate;

updatePopup = updatePopup.replace(/\{updateURL\}/g, wikEd.config.autoUpdateUrl);

alert(updatePopup);

window.location.href = wikEd.config.autoUpdateScriptUrl;

}

// update wikEd by reloading the page with cache bypassing (equivalent to Shift-Reload or Shift-F5)

else {

window.location.reload(true);

}

return;

};

//

// wikEd.LoadTypoFixRules: load and parse RegExTypoFix rules if the button is enabled

//

wikEd.LoadTypoFixRules = function() {

// load RegExTypoFix rules per Ajax if enabled

if ( (wikEd.config.regExTypoFix == false) || (wikEd.readOnly == true) || (wikEd.typoRulesFind.length > 0) ) {

return;

}

// make the ajax request

var sep = '&';

if (wikEd.config.regExTypoFixURL.indexOf('?') == -1) {

sep = '?';

}

wikEd.AjaxRequest('GET', wikEd.config.regExTypoFixURL + sep + wikEd.programVersion, null, 'text/plain', function(ajax) {

// get response

var rulesTxt = ajax.responseText;

// parse regexp rules

var regExp = /<(?:Typo)?\s+(?:word="(.*?)"\s+)?find="(.*?)"\s+replace="(.*?)"\s*\/?>/g;

while ( (regExpMatch = regExp.exec(rulesTxt)) != null) {

// check if this is a valid regexp

var regExpFind;

try {

regExpFind = new RegExp(regExpMatch[2], 'gm');

}

catch (error) {

var msg = 'Invalid RegExTypoFix rule:\nfind=' + regExpMatch[2] + '\nreplace=' + regExpMatch[3];

wikEd.ConsoleLog(msg);

continue;

}

// save regexp and replace

wikEd.typoRulesFind.push(regExpFind);

wikEd.typoRulesReplace.push(regExpMatch[3]);

}

// display typo fix button

if (wikEd.typoRulesFind.length > 0) {

if (wikEd.fixRegExTypo != null) {

wikEd.fixRegExTypo.style.display = 'inline';

}

}

return;

});

return;

};

//

// wikEd.EditButtonHandler: handler for clicks on edit buttons

//

wikEd.EditButtonHandler = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

// execute the button click handler code

var obj;

if (event.currentTarget != null) {

obj = event.currentTarget;

}

// MS IE compatibility

else {

obj = event.srcElement;

}

eval(wikEd.editButtonHandler[obj.id]);

return;

};

//

// wikEd.ShrinkSummaryHandler: shrink the summary after loading the 'Clear summary' image

//

wikEd.ShrinkSummaryHandler = function(event) {

var diffWidth = wikEd.clearSummary.offsetWidth - wikEd.clearSummaryWidth;

wikEd.inputElement.summary.style.width = (wikEd.inputElement.summary.offsetWidth - diffWidth) + 'px';

wikEd.selectElement.summary.style.width = (wikEd.selectElement.summary.offsetWidth - diffWidth) + 'px';

wikEd.clearSummaryWidth = wikEd.clearSummary.offsetWidth;

return;

};

//

// wikEd.ResizeWindowHandler: adjust the summary width after resizing the window

//

wikEd.ResizeWindowHandler = function(event) {

// adjust frame size

wikEd.frameHeight = (wikEd.textareaOffsetHeightInitial - wikEd.frameBorderHeight) + 'px';

wikEd.frameWidth = (wikEd.editorWrapper.clientWidth - wikEd.frameBorderWidth) + 'px';

wikEd.frame.style.height = wikEd.frameHeight;

wikEd.frame.style.width = wikEd.frameWidth;

wikEd.ResizeSummary();

return;

};

//

// wikEd.UnloadHandler: save editing frame to cached textarea

//

wikEd.UnloadHandler = function(event) {

// update textarea if not already done in submit handlers

if (wikEd.useWikEd == true) {

if (wikEd.textareaUpdated != true) {

wikEd.UpdateTextarea();

}

}

return;

};

//

// wikEd.SaveButtonHandler: 'Save page' onsubmit click handler for submit button

//

wikEd.SaveButtonHandler = function(event) {

wikEd.RemoveEventListener(wikEd.saveButton, 'click', wikEd.SaveButtonHandler, true);

// update textarea

if (wikEd.useWikEd == true) {

wikEd.UpdateTextarea();

wikEd.textareaUpdated = true;

}

// check for interfering scripts or gadgets: mwEmbed for file uploads

if ( (wikEd.uploadEdit == true) && (typeof(MW_EMBED_VERSION) != 'undefined') ) {

wikEd.AddEventListener(wikEd.saveButton, 'click', wikEd.SaveButtonHandler, true);

return;

}

// add "using wikEd" to summary, not for adding a new section (+ tab)

if (wikEd.summaryText != null) {

var text = wikEd.summaryText.value;

text = text.replace(/^[, ]+/, '');

text = text.replace(/[, ]+$/, '');

wikEd.AddToHistory('summary');

if ( (wikEd.using == true) && (text != '') ) {

if (text.lastIndexOf(wikEd.config.summaryUsing) < 0) {

if (wikEd.addNewSection != true) {

text += ' ' + wikEd.config.summaryUsing;

}

}

}

wikEd.summaryText.value = text;

}

// submit

wikEd.saveButton.click();

// reinstate handler in case the browser back button will be used

wikEd.AddEventListener(wikEd.saveButton, 'click', wikEd.SaveButtonHandler, true);

return;

};

//

// wikEd.PreviewButtonHandler: 'Show preview' click handler

//

wikEd.PreviewButtonHandler = function(event) {

if (wikEd.useWikEd == true) {

wikEd.UpdateTextarea();

wikEd.textareaUpdated = true;

}

return;

};

//

// wikEd.DiffPreviewButtonHandler: 'Show changes' click handler

//

wikEd.DiffPreviewButtonHandler = function(event) {

if (wikEd.fullScreenMode == true) {

wikEd.FullScreen(false);

}

if (wikEd.useWikEd == true) {

wikEd.UpdateTextarea();

wikEd.textareaUpdated = true;

}

return;

};

//

// wikEd.LinkifyHandler: open innermost highlighted link in new window/tab on ctrl/meta-click

//

wikEd.LinkifyHandler = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

if ( (event.shiftKey == false) && ( (event.ctrlKey == true) || (event.metaKey == true) ) && (event.altKey == false) ) {

var node = event.target;

while (node != null) {

var linkId = node.id;

if (linkId != null) {

if (linkId.indexOf('wikEdLinkify') == 0) {

var linkIdNo = linkId.replace(/\D/g, '');

var linkUrl = wikEd.linkifyArray[linkIdNo];

if (linkUrl != null) {

event.stopPropagation();

window.open(linkUrl);

window.focus();

break;

}

}

}

node = node.parentNode;

}

}

return;

};

//

// wikEd.ButtonBarGripHandler: click, mouseover handler, see also wikEd.ButtonBarInit()

//

wikEd.ButtonBarGripHandler = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

event.stopPropagation();

var grip = event.target;

var gripWrapper = grip.parentNode;

var buttonsWrapper = gripWrapper.nextSibling;

var barInnerWrapper = gripWrapper.parentNode;

var bar = barInnerWrapper.parentNode;

if (event.type == 'click') {

buttonsWrapper.style.position = 'static';

// hide the buttons bar

if (buttonsWrapper.className != 'wikEdButtonBarButtonsWrapperHidden') {

buttonsWrapper.className = 'wikEdButtonBarButtonsWrapperHidden';

barInnerWrapper.className = 'wikEdButtonBarInnerWrapperHidden';

gripWrapper.className = 'wikEdButtonBarGripWrapperHidden';

wikEd.buttonsWrapperWidth[bar.id] = buttonsWrapper.offsetWidth;

buttonsWrapper.style.display = 'none';

wikEd.AddEventListener(grip, 'mouseover', wikEd.ButtonBarGripHandler, false);

wikEd.SetPersistent(bar.id + 'Hidden', '1', 0, '/');

}

// unhide the buttons bar

else {

buttonsWrapper.className = 'wikEdButtonBarButtonsWrapperVisible';

barInnerWrapper.className = 'wikEdButtonBarInnerWrapperVisible';

gripWrapper.className = 'wikEdButtonBarGripWrapperVisible';

buttonsWrapper.style.display = 'block';

wikEd.RemoveEventListener(grip, 'mouseover', wikEd.ButtonBarGripHandler, false);

wikEd.SetPersistent(bar.id + 'Hidden', '0', 0, '/');

}

}

// show the buttons bar on mouseover

else if (event.type == 'mouseover') {

if (buttonsWrapper.className == 'wikEdButtonBarButtonsWrapperHidden') {

wikEd.AddEventListener(bar, 'mouseout', wikEd.ButtonBarHandler, false);

// show buttons to the right

if (bar.offsetParent.clientWidth > grip.offsetLeft + grip.offsetWidth + wikEd.buttonsWrapperWidth[bar.id]) {

buttonsWrapper.style.left = (grip.offsetLeft + grip.offsetWidth) + 'px';

}

// show buttons to the left

else {

buttonsWrapper.style.left = (gripWrapper.offsetLeft - wikEd.buttonsWrapperWidth[bar.id]) + 'px';

}

// a mozilla bug sometimes gives offsetTop - 1 when the wikEd.toolbarWrapper is hidden

buttonsWrapper.style.top = gripWrapper.offsetTop + 'px';

buttonsWrapper.style.position = 'absolute';

buttonsWrapper.style.display = 'block';

}

}

return;

};

//

// wikEd.ButtonBarHandler: mouseout handler

//

wikEd.ButtonBarHandler = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

event.stopPropagation();

var bar = event.currentTarget;

var barInnerWrapper = bar.firstChild;

var gripWrapper = barInnerWrapper.firstChild;

var grip = gripWrapper.firstChild;

var buttonsWrapper = gripWrapper.nextSibling;

var buttons = buttonsWrapper.firstChild;

// hide the buttons

if (event.type == 'mouseout') {

if (buttonsWrapper.className == 'wikEdButtonBarButtonsWrapperHidden') {

// filter the events for mouseouts actually leaving the bar

if (

(

( (event.target == grip) || (event.target == gripWrapper) ) &&

(event.safeRelatedTarget != gripWrapper) && (event.safeRelatedTarget != buttonsWrapper) && (event.safeRelatedTarget != buttons) && (event.safeRelatedTarget.parentNode != buttons)

) ||

(

( (event.target.parentNode.parentNode == buttons) || (event.target.parentNode == buttons) || (event.target == buttons) || (event.target == buttonsWrapper) ) &&

(event.safeRelatedTarget.parentNode.parentNode != buttons) && (event.safeRelatedTarget.parentNode != buttons) && (event.safeRelatedTarget != buttons) && (event.safeRelatedTarget != buttonsWrapper) && (event.safeRelatedTarget != gripWrapper) && (event.safeRelatedTarget != grip)

)

) {

wikEd.RemoveEventListener(bar, 'mouseout', wikEd.ButtonBarHandler, false);

buttonsWrapper.style.display = 'none';

buttonsWrapper.style.position = 'static';

}

}

}

return;

};

//

// clear the summary click handler

//

wikEd.ClearSummaryHandler = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

event.preventDefault();

// clear the summary if it is only a paragraph name

if ( /^\/\* .*? \*\/ *$/.test(wikEd.summaryText.value) == true) {

wikEd.summaryText.value = '';

}

// clear the summary but leave paragraph names

else {

wikEd.summaryText.value = wikEd.summaryText.value.replace(/^((\/\* .*? \*\/ *)?).*()/,

function(p, p1, p2) {

if (p1.length > 0) {

p1 = p1 + ' ';

}

return(p1);

}

);

}

wikEd.summaryText.focus();

return;

};

//

// wikEd.FindReplaceHandler: find and replace: tab and shift-tab between fields, select on focus

//

wikEd.FindReplaceHandler = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

// tab / shift-tab between fields

if (event.type == 'keydown') {

if (event.keyCode == 9) {

if (event.target == wikEd.findText) {

event.preventDefault();

wikEd.RemoveEventListener(wikEd.replaceText, 'focus', wikEd.FindReplaceHandler, true);

wikEd.replaceText.focus();

wikEd.AddEventListener(wikEd.replaceText, 'focus', wikEd.FindReplaceHandler, true);

}

else if (event.target == wikEd.replaceText) {

event.preventDefault();

wikEd.RemoveEventListener(wikEd.findText, 'focus', wikEd.FindReplaceHandler, true);

wikEd.findText.focus();

wikEd.AddEventListener(wikEd.findText, 'focus', wikEd.FindReplaceHandler, true);

}

}

}

// select on focus

else if (event.type == 'focus') {

if (wikEd.msie == true) {

}

else {

event.target.setSelectionRange(0, this.textLength);

}

}

return;

};

//

// wikEd.KeyFrameHandler: event handler for key and mouse events in the frame

//

wikEd.KeyFrameHandler = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

if (wikEd.useWikEd == true) {

// invalidate wikify/textify of recently pasted text for printable char key presses

if ( (event.type == 'keydown') || (event.type == 'keypress') ) {

switch (event.keyCode) {

case 16: // shift

case 17: // ctrl

case 18: // alt

case 19: // pause/break

case 20: // caps lock

case 33: // page up

case 34: // page down

case 35: // end

case 36: // home

case 37: // left

case 38: // up

case 39: // right

case 40: // down

case 45: // insert

case 91: // windows left

case 91: // windows right

case 93: // select

case 112: // F1

case 113: // F2

case 114: // F3

case 115: // F4

case 116: // F5

case 117: // F6

case 118: // F7

case 119: // F8

case 120: // F9

case 121: // F10

case 122: // F11

case 123: // F12

case 144: // num lock

case 145: // scroll lock

case 182: // my computer

case 183: // my calculator

case 224: // apple

break;

default:

wikEd.PastedOff();

}

}

switch (event.type) {

// keydown event

case 'keydown':

switch (event.keyCode) {

// tab key, switch between form elements instead of adding multiple spaces

case 9:

if ( (event.shiftKey == false) && (event.ctrlKey == false) && (event.altKey == false) && (event.metaKey == false) ) {

event.preventDefault();

// focus the next form element

if (wikEd.addNewSection == true) {

document.getElementById('wpMinoredit').focus();

}

else {

wikEd.summaryText.focus();

}

// scroll to text input top

if (wikEd.fullScreenMode == false) {

window.scroll(0, wikEd.GetOffsetTop(wikEd.inputWrapper));

}

}

break;

}

break;

// after cursor movements set cursor position into closest highest text node so that highlighting does not bleed out

case 'keyup':

switch (event.keyCode) {

case 17: // ctrl-v

case 37: // left

case 38: // up

case 39: // right

case 40: // down

case 33: // page up

case 34: // page down

case 46: // del

case 8: // backspace

wikEd.AntiHighlightBleeding(new Object());

}

break;

case 'mouseup':

wikEd.AntiHighlightBleeding(new Object());

// invalidate wikify/textify of recently pasted text after selecting text

if ( (wikEd.paste != null) && (wikEd.paste.polling == false) ) {

var sel = wikEd.GetSelection();

if (sel.isCollapsed == false) {

// check if clicking into selected pasted text

var range = sel.getRangeAt(sel.rangeCount - 1);

if (range != wikEd.keepSelRange) {

wikEd.PastedOff();

}

}

}

case 'keypress':

case 'paste':

// grey out inactive buttons

wikEd.InactiveButtons();

}

}

return;

};

//

// wikEd.PasteFrameHandler: event handler for paste and drop events in the edit frame

//

wikEd.PasteFrameHandler = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

if (wikEd.useWikEd != true) {

event.stopPropagation();

wikEd.paste = null;

return;

}

// ignore if still processing previous event

if ( (wikEd.paste != null) && (wikEd.paste.polling == false) ) {

return;

}

wikEd.paste = {};

wikEd.paste.eventType = event.type;

wikEd.paste.atStart = false;

wikEd.paste.polling = true;

var sel = wikEd.GetSelection();

var range = sel.getRangeAt(sel.rangeCount - 1);

var startNode = range.startContainer;

var startOffset = range.startOffset;

var endNode = range.endContainer;

var endOffset = range.endOffset;

switch (event.type) {

// drop

case 'drop':

if (event.dataTransfer == null) {

return;

}

wikEd.paste.dropHtml = event.dataTransfer.getData('text/html');

break;

// paste

case 'paste':

// find first previous node up as anchor to recover start node after insertion

var node = startNode;

var offset = startOffset;

var prevNode = node.previousSibling;

// correct startNode into leaf node

if ( (node.nodeName != '#text') && (offset > 0) ) {

var childs = node.childNodes;

if ( (childs.length > 0) && (offset < childs.length) ) {

node = childs.item(offset);

offset = 0;

prevNode = node.previousSibling;

}

}

// correct
into previous text node

if ( (node.nodeName == 'BR') && (prevNode != null) && (prevNode.nodeName == '#text') ) {

node = prevNode;

offset = node.textContent.length;

prevNode = node.previousSibling;

}

// ascend to first node with a previous sibling

var prevUp = 0;

while ( (node != wikEd.frameBody) && (prevNode == null) ) {

node = node.parentNode;

prevUp ++;

prevNode = node.previousSibling;

}

// save paste location reference to drop object

if ( (node == wikEd.frameBody) && (offset == 0) ) {

wikEd.paste.atStart = true;

}

else {

wikEd.paste.offset = offset;

wikEd.paste.prevNode = prevNode;

wikEd.paste.prevUp = prevUp;

}

break;

}

wikEd.paste.sel = sel;

// needed to check if pasted content has been added to frame

wikEd.paste.startNode = startNode;

wikEd.paste.startOffset = startOffset;

wikEd.paste.endNode = endNode;

wikEd.paste.endOffset = endOffset;

wikEd.paste.startNodePreviousSibling = startNode.previousSibling;

wikEd.paste.startNodeNextSibling = startNode.nextSibling;

wikEd.paste.endNodePreviousSibling = endNode.previousSibling;

wikEd.paste.endNodeNextSibling = endNode.nextSibling;

// detect and process pasted content in edit frame by polling

wikEd.paste.pollCount = 1;

setTimeout(wikEd.PastePoll, 1);

return;

};

//

// wikEd.PastePoll: detect and process pasted content in edit frame by polling

//

wikEd.PastePoll = function() {

if (wikEd.paste == null) {

return;

}

if (wikEd.paste.pollCount > 100) {

wikEd.paste = null;

return;

}

var sel = wikEd.paste.sel;

var range = sel.getRangeAt(sel.rangeCount - 1);

var startNode = range.startContainer;

var startOffset = range.startOffset;

var endNode = range.endContainer;

var endOffset = range.endOffset;

// check if pasted content has already been added to frame

if (

(startNode == wikEd.paste.startNode) &&

(startOffset == wikEd.paste.startOffset) &&

(endNode == wikEd.paste.endNode) &&

(endOffset == wikEd.paste.endOffset) &&

(startNode.previousSibling == wikEd.paste.startNodePreviousSibling) &&

(startNode.nextSibling == wikEd.paste.startNodeNextSibling) &&

(endNode.previousSibling == wikEd.paste.endNodePreviousSibling) &&

(endNode.nextSibling == wikEd.paste.endNodeNextSibling)

) {

// schedule next poll, typically requires one or two polls

wikEd.paste.pollCount ++;

setTimeout(wikEd.PastePoll, 1);

return;

}

wikEd.paste.polling = false;

switch (wikEd.paste.eventType) {

// drop

case 'drop':

if (wikEd.paste.dropHtml != null) {

var div = document.createElement('div');

div.innerHTML = wikEd.paste.dropHtml;

var obj = {};

wikEd.GetInnerHTML(obj, div);

wikEd.Textify(obj);

plainText = obj.plain;

// select using backwards built-in find

if ( (typeof(wikEd.frameWindow.find) == 'function') && (plainText.length > 0) ) {

// Chrome; parameters: wikEd.Find(obj, findText, caseSensitive, backwards, wrap, useRegExp)

var found = wikEd.Find(obj, plainText, true, true, false, false);

// Firefox (removes \n)

if (found == false) {

wikEd.Find(obj, plainText, true, true, false, false);

}

// reinstate original range if it starts or ends with \n or spaces

if (/^(\n| )|(\n| )$/.test(plainText) == true) {

wikEd.RemoveAllRanges(obj.sel);

obj.sel.addRange(range);

}

}

// under construction, to do: select by search back for html ////

wikEd.paste = null;

return;

break;

}

// paste

case 'paste':

// select pasted text

// does not work good for Chromium that normalized ranges into text nodes, see https://code.google.com/p/chromium/issues/detail?id=271445

wikEd.paste.pasteAtEndOfLine = false;

// insert at start

if (wikEd.paste.atStart == true) {

range.setStart(wikEd.frameBody, 0);

}

// recover start node from saved previous node

else {

var offset = wikEd.paste.offset;

// reverse navigate back down to start node, start at prevNode, then descend prevUp levels

var preStartNode = null;

var node = wikEd.paste.prevNode;

var up = wikEd.paste.prevUp;

if (node.nextSibling != null) {

node = node.nextSibling;

for (var i = 0; i < up; i ++) {

var child = node.firstChild;

if (child == null) {

wikEd.paste = null;

return;

}

node = child;

}

preStartNode = node;

}

// move up to first next node when element has been inserted at top level

else {

while ( (node.nextSibling == null) && (node.nodeName != 'BODY') ) {

node = node.parentNode;

}

if (node.nodeName != 'BODY') {

preStartNode = node.nextSibling;

}

}

// set range start

if ( (preStartNode.nodeName == '#text') || (offset > 0) ) {

// handle paste at end of line after br

if (

(offset >= preStartNode.textContent.length) &&

(preStartNode.nextSibling != null) &&

(preStartNode.nextSibling.nodeName == 'BR')

) {

range.setStart(preStartNode, offset);

wikEd.paste.pasteAtEndOfLine = true;

}

// start in text node

else {

range.setStart(preStartNode, offset);

}

}

// start after prevNode

else {

range.setStartAfter(wikEd.paste.prevNode);

}

}

break;

}

// return if no content is selected

if (range.collapsed == true) {

wikEd.paste = null;

return;

}

// needed for Chrome

sel.addRange(range);

wikEd.EditButton(null, 'wikEdPasting');

// display floating pasted toolbar

var sel = wikEd.GetSelection();

var range = sel.getRangeAt(sel.rangeCount - 1).cloneRange();

if (range.getClientRects == null) {

wikEd.buttonBarPasted.style.left = '1px';

wikEd.buttonBarPasted.style.top = '1px';

}

// get cursor rectangle position

else {

var barWidth = wikEd.buttonBarPasted.offsetWidth;

var barHeight = wikEd.buttonBarPasted.offsetHeight;

// extend collapsed caret range to start, get last line coords

range.setStart(wikEd.frameBody, 0);

var rectList = range.getClientRects();

var rect = rectList[rectList.length - 1];

// vertical pos

if (rect.bottom + barHeight <= parseInt(wikEd.frameHeight)) {

wikEd.buttonBarPasted.style.top = rect.bottom + 'px';

}

else {

wikEd.buttonBarPasted.style.bottom = '1px';

}

// horizontal pos

if (rect.right + barWidth <= parseInt(wikEd.frameWidth)) {

wikEd.buttonBarPasted.style.left = rect.right + 'px';

}

else {

wikEd.buttonBarPasted.style.right = '1px';

}

}

wikEd.PastedSwitch();

return;

};

//

// wikEd.PastedSwitch: set wikify/textify indicator after pasting wikified text

//

wikEd.PastedSwitch = function() {

if ( (wikEd.paste == null) || (wikEd.paste.polling == true) ) {

wikEd.PastedOff();

}

else {

if (wikEd.paste.last == 'wikify') {

document.getElementById('wikEdPastedTextify').className = 'wikEdButton';

document.getElementById('wikEdPastedWikify').className = 'wikEdButtonInactive';

}

else if (wikEd.paste.last == 'textify') {

document.getElementById('wikEdPastedTextify').className = 'wikEdButtonInactive';

document.getElementById('wikEdPastedWikify').className = 'wikEdButton';

}

document.getElementById('wikEdPastedTextify').style.cursor = '';

document.getElementById('wikEdPastedWikify').style.cursor = '';

wikEd.buttonBarPasted.style.visibility = 'visible';

}

return;

};

//

// wikEd.PastedOff: invalidate wikify/textify of recently pasted wikified text

//

wikEd.PastedOff = function() {

wikEd.paste = null;

wikEd.buttonBarPasted.style.visibility = 'hidden';

return;

};

//

// wikEd.AntiHighlightBleeding: set cursor position into closest highest text node so that highlighting does not bleed out

// does not work under Google Chrome that forces the cursor into the previous node

//

wikEd.AntiHighlightBleeding = function(obj, editButtonInsert) {

// check if disabled

if (wikEd.config.antiHighlightBleeding != true) {

return;

}

// get selection object

if (obj.sel == null) {

obj.sel = wikEd.GetSelection();

}

// only if no text is selected

var range = obj.sel.getRangeAt(obj.sel.rangeCount - 1);

if ( (obj.sel.isCollapsed != true) || (range.collapsed != true) ) {

return;

}

// correct focusNode to actual (deepest) node

var focusNode = obj.sel.focusNode;

var focusOffset = obj.sel.focusOffset;

if (focusNode == null) {

return;

}

// set focus into deepest node

if (focusNode.childNodes != null) {

if ( (focusNode.childNodes.length > 0) && (focusOffset < focusNode.childNodes.length) ) {

focusNode = focusNode.childNodes.item(focusOffset);

focusOffset = 0;

if (focusNode.tagName != 'BR') {

range.setStart(focusNode, focusOffset);

range.setEnd(focusNode, focusOffset);

}

}

}

// do not further correct if focus is linebreak if key but not if edit button

if ( (focusNode.tagName == 'BR') && (editButtonInsert != true) ) {

return;

}

// get next text-like node to the left if we are not in the middle of a text node

var leftNode = focusNode;

var leftLevel = 0;

var objLeft = {

'backwards': true

};

if ( (focusNode.nodeName != '#text') || (focusOffset == 0) ) {

wikEd.GetNextTextNode(objLeft, focusNode, 0);

}

if (objLeft.foundNode != null) {

leftNode = objLeft.foundNode;

leftLevel = objLeft.foundLevel;

}

// get next text-like node to the right if we are not in the middle of a text node

var objRight = {

'backwards': false

};

var rightNode = focusNode;

var rightLevel = 0;

if ( (focusNode.nodeName != '#text') || (focusOffset == focusNode.textContent.length) ) {

wikEd.GetNextTextNode(objRight, focusNode, 0);

}

if (objRight.foundNode != null) {

rightNode = objRight.foundNode;

rightLevel = objRight.foundLevel;

}

// check if we need to correct the focus node to higher level text-like node

var correctTo = '';

if (leftNode != rightNode) {

if ( (focusNode.tagName == 'BR') && (editButtonInsert == true) ) {

correctTo = 'left';

}

else if ( (leftLevel > rightLevel) && (leftNode != focusNode) ) {

correctTo = 'left';

}

else if ( (leftLevel < rightLevel) && (rightNode != focusNode) ) {

correctTo = 'right';

}

// same level, set focus outside tag markups (class names contains 'Tag'): [ [[ | || <

else if (leftLevel == rightLevel) {

// get class names

var leftClass = '';

if (leftNode.nodeName == '#text') {

leftClass = leftNode.parentNode.className;

}

else {

leftClass = leftNode.className;

}

var rightClass = '';

if (rightNode.nodeName == '#text') {

rightClass = rightNode.parentNode.className;

}

else {

rightClass = rightNode.className;

}

if ( (/wikEd.*?Tag/.test(leftClass) != true) && (/wikEd.*?Tag/.test(rightClass) == true) && (leftNode != focusNode) ) {

correctTo = 'left';

}

else if ( (/wikEd.*?Tag/.test(leftClass) == true) && (/wikEd.*?Tag/.test(rightClass) != true) && (rightNode != focusNode) ) {

correctTo = 'right';

}

}

}

// set focus to the next left node

if (correctTo == 'left') {

var node;

// insert new text node after linebreak and focus

if (leftNode.tagName == 'BR') {

node = wikEd.frameDocument.createTextNode('');

leftNode.parentNode.insertBefore(node, leftNode.nextSibling);

range.setStart(node, 0);

range.setEnd(node, 0);

}

else {

node = leftNode;

if (node.nodeName == '#text') {

range.setStart(node, node.textContent.length);

range.setEnd(node, node.textContent.length);

}

else {

range.setStartAfter(node);

range.setEndAfter(node);

}

}

}

// set focus to the next right node

else if (correctTo == 'right') {

var node;

// insert new text node before linebreak

if (rightNode.tagName == 'BR') {

var node = wikEd.frameDocument.createTextNode('');

rightNode.parentNode.insertBefore(node, rightNode);

range.setStart(node, 0);

range.setEnd(node, 0);

}

else {

node = rightNode;

if (node.nodeName == '#text') {

range.setStart(node, 0);

range.setEnd(node, 0);

}

else {

range.setStartBefore(node);

range.setEndBefore(node);

}

}

}

return;

};

//

// wikEd.ResizeGripLoadHandler: event handler to determine grip background image size

//

wikEd.ResizeGripLoadHandler = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

wikEd.resizeGripWidth = event.currentTarget.width;

wikEd.resizeGripHeight = event.currentTarget.height;

return;

};

//

// wikEd.ResizeGripHandler: event handler for mouse over resize grip background image

//

wikEd.ResizeGripHandler = function(event) {

// Firefox bug during startup ("WikEdEvent is not defined")

if (typeof(wikEd.EventWrapper) != 'function' ) {

return;

}

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

if (wikEd.useWikEd == true) {

if (event.type == 'mousemove') {

if ( (event.shiftKey == false) && (event.ctrlKey == false) && (event.altKey == false) && (event.metaKey == false) ) {

// move into grip

if (wikEd.resizeFrameMouseOverGrip == false) {

if (event.clientY >= wikEd.frameBody.clientHeight - wikEd.resizeGripHeight) {

if (event.clientX >= wikEd.frameBody.clientWidth - wikEd.resizeGripWidth) {

if ( (event.clientY < wikEd.frameBody.clientHeight) && (event.clientX < wikEd.frameBody.clientWidth) ) {

wikEd.resizeFrameMouseOverGrip = true;

if (wikEd.fullScreenMode == true) {

wikEd.frameBody.style.cursor = 'alias';

}

else {

wikEd.AddEventListener(wikEd.frameDocument, 'mousedown', wikEd.ResizeStartHandler, true);

wikEd.frameBody.style.cursor = 'move';

}

}

}

}

}

// move out of grip

else if (wikEd.resizeFrameActive == false) {

if (

(event.clientY < wikEd.frameBody.clientHeight - wikEd.resizeGripHeight) ||

(event.clientX < wikEd.frameBody.clientWidth - wikEd.resizeGripWidth)

) {

wikEd.resizeFrameMouseOverGrip = false;

wikEd.RemoveEventListener(wikEd.frameDocument, 'mousedown', wikEd.ResizeStartHandler, true);

wikEd.frameBody.style.cursor = 'auto';

}

}

}

}

}

return;

};

//

// wikEd.ResizeStartHandler: event handler to start the resizing of the editing frame

//

wikEd.ResizeStartHandler = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

if (wikEd.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 >= wikEd.frameBody.clientHeight - wikEd.resizeGripHeight) {

if (event.clientX >= wikEd.frameBody.clientWidth - wikEd.resizeGripWidth) {

if ( (event.clientY < wikEd.frameBody.clientHeight) && (event.clientX < wikEd.frameBody.clientWidth) ) {

event.preventDefault();

wikEd.resizeFrameActive = true;

wikEd.resizeFramePageYStart = event.pageY;

wikEd.resizeFramePageXStart = event.pageX;

wikEd.resizeFrameOffsetHeight = wikEd.frame.offsetHeight;

wikEd.resizeFrameOffsetWidth = wikEd.frame.offsetWidth;

wikEd.AddEventListener(wikEd.frameDocument, 'mouseup', wikEd.ResizeStopHandler, true);

wikEd.AddEventListener(document, 'mouseup', wikEd.ResizeStopHandler, true);

wikEd.AddEventListener(wikEd.frameDocument, 'mousemove', wikEd.ResizeDragHandlerFrame, true);

wikEd.AddEventListener(document, 'mousemove', wikEd.ResizeDragHandlerDocument, true);

}

}

}

}

}

}

return;

};

//

// wikEd.ResizeStopHandler: event handler to stop the resizing of the editing frame

//

wikEd.ResizeStopHandler = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

if (wikEd.useWikEd == true) {

if (event.type == 'mouseup') {

wikEd.RemoveEventListener(wikEd.frameDocument, 'mouseup', wikEd.ResizeStopHandler, true);

wikEd.RemoveEventListener(document, 'mouseup', wikEd.ResizeStopHandler, true);

wikEd.RemoveEventListener(wikEd.frameDocument, 'mousemove', wikEd.ResizeDragHandlerFrame, true);

wikEd.RemoveEventListener(document, 'mousemove', wikEd.ResizeDragHandlerDocument, true);

if (

(event.clientY < wikEd.frameBody.clientHeight - wikEd.resizeGripHeight) ||

(event.clientX < wikEd.frameBody.clientWidth - wikEd.resizeGripWidth)

) {

wikEd.resizeFrameMouseOverGrip = false;

wikEd.RemoveEventListener(wikEd.frameDocument, 'mousedown', wikEd.ResizeStartHandler, true);

wikEd.frameBody.style.cursor = 'auto';

}

}

wikEd.resizeFrameActive = false;

}

return;

};

//

// wikEd.ResizeDragHandlerFrame: event handler for editing frame resizing by mouse dragging (frame event)

//

wikEd.ResizeDragHandlerFrame = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

if (event.type == 'mousemove') {

var diffY = event.pageY - wikEd.resizeFramePageYStart;

var diffX = event.pageX - wikEd.resizeFramePageXStart;

var frameHeightNew = wikEd.resizeFrameOffsetHeight + diffY;

var frameWidthNew = wikEd.resizeFrameOffsetWidth + diffX;

if (frameHeightNew >= 100) {

wikEd.frameHeight = frameHeightNew + 'px';

wikEd.frame.style.height = wikEd.frameHeight;

}

if (frameWidthNew >= 100) {

wikEd.frameWidth = frameWidthNew + 'px';

wikEd.frame.style.width = wikEd.frameWidth;

}

}

return;

};

//

// wikEd.ResizeDragHandlerDocument: event handler for editing frame resizing by mouse dragging (document event)

//

wikEd.ResizeDragHandlerDocument = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

if (event.type == 'mousemove') {

var diffY = event.pageY - wikEd.resizeFramePageYStart - wikEd.GetOffsetTop(wikEd.frame);

var diffX = event.pageX - wikEd.resizeFramePageXStart - wikEd.GetOffsetLeft(wikEd.frame);

var frameHeightNew = wikEd.resizeFrameOffsetHeight + diffY;

var frameWidthNew = wikEd.resizeFrameOffsetWidth + diffX;

if (frameHeightNew >= 100) {

wikEd.frameHeight = frameHeightNew + 'px';

wikEd.frame.style.height = wikEd.frameHeight;

}

if (frameWidthNew >= 100) {

wikEd.frameWidth = frameWidthNew + 'px';

wikEd.frame.style.width = wikEd.frameWidth;

}

}

return;

};

//

// wikEd.ResizeFrameResetHandler: event handler to reset the editing frame size

//

wikEd.ResizeFrameResetHandler = function(event) {

// event compatibility fixes

event = wikEd.EventWrapper(event, this);

if (event == null) {

return;

}

if (wikEd.useWikEd == true) {

if (event.type == 'dblclick') {

if ( (event.shiftKey == false) && (event.ctrlKey == false) && (event.altKey == false) && (event.metaKey == false) ) {

if (event.clientY > wikEd.frameBody.clientHeight - wikEd.resizeGripHeight) {

if (event.clientX > wikEd.frameBody.clientWidth - wikEd.resizeGripWidth) {

if ( (event.clientY < wikEd.frameBody.clientHeight) && (event.clientX < wikEd.frameBody.clientWidth) ) {

// end fullscreen mode

if (wikEd.fullScreenMode == true) {

wikEd.FullScreen(false);

}

// reset size to default

wikEd.frameHeight = (wikEd.textareaOffsetHeightInitial - wikEd.frameBorderHeight) + 'px';

wikEd.frameWidth = (wikEd.editorWrapper.clientWidth - wikEd.frameBorderWidth) + 'px';

wikEd.frame.style.height = wikEd.frameHeight;

wikEd.frame.style.width = wikEd.frameWidth;

// end resizing

wikEd.RemoveEventListener(wikEd.frameDocument, 'mouseup', wikEd.ResizeStopHandler, true);

wikEd.RemoveEventListener(document, 'mouseup', wikEd.ResizeStopHandler, true);

wikEd.RemoveEventListener(wikEd.frameDocument, 'mousemove', wikEd.ResizeDragHandlerFrame, true);

wikEd.RemoveEventListener(document, 'mousemove', wikEd.ResizeDragHandlerDocument, true);

wikEd.resizeFrameMouseOverGrip = false;

wikEd.RemoveEventListener(wikEd.frameDocument, 'mousedown', wikEd.ResizeStartHandler, true);

wikEd.frameBody.style.cursor = 'auto';

wikEd.resizeFrameActive = false;

}

}

}

}

}

}

return;

};

//

// wikEd.DebugHandler: event handler to clear or hide the debug textarea on (shift/ctrl/alt) double click

//

wikEd.DebugHandler = function(event) {

if ( (event.shiftKey == true) || (event.ctrlKey == true) || (event.altKey == true) || (event.metaKey == true) ) {

wikEd.debugWrapper.style.visibility = 'hidden';

wikEd.debug.style.display = 'none';

wikEd.debugOpen = false;

}

else {

wikEd.debug.value = '';

}

return;

};

//

// wikEd.PrevWrapperHandler: event handler to close preview / diff box on double click

//

wikEd.PrevWrapperHandler = function(event) {

wikEd.localPrevWrapper.style.display = 'none';

return;

};

//

// wikEd.SetLogo: set the logo on top of the page

//

wikEd.SetLogo = function(state, parameter) {

var src = '';

var alt = '';

var title = '';

if (state == 'error') {

src = wikEd.config.image['error'];

alt = wikEd.config.text['wikEdLogo error alt'];

title = wikEd.config.text['wikEdLogo error title'];

}

else if (state == 'browser') {

src = wikEd.config.image['browser'];

alt = wikEd.config.text['wikEdLogo browser alt'];

title = wikEd.config.text['wikEdLogo browser title'];

}

else if (state == 'incompatible') {

src = wikEd.config.image['incompatible'];

alt = wikEd.config.text['wikEdLogo incompatible alt'];

title = wikEd.config.text['wikEdLogo incompatible title'];

}

else {

if (wikEd.disabled == true) {

src = wikEd.config.image['disabled'];

alt = wikEd.config.text['wikEdLogo disabled alt'];

title = wikEd.config.text['wikEdLogo disabled title'];

}

else if (wikEd.testVersion == true) {

src = wikEd.config.image['testVersion'];

alt = wikEd.config.text['wikEdLogo testVersion alt'];

title = wikEd.config.text['wikEdLogo testVersion title'];

}

else {

src = wikEd.config.image['logo'];

alt = wikEd.config.text['wikEdLogo alt'];

title = wikEd.config.text['wikEdLogo title'];

}

}

title = title.replace(/\{wikEdParameter\}/g, parameter);

title = title.replace(/\{wikEdProgramVersion\}/g, wikEd.programVersion + wikEd.installationType);

title = title.replace(/\{wikEdProgramDate\}/g, wikEd.programDate);

wikEd.logo.src = src;

wikEd.logo.alt = alt;

wikEd.logo.title = title;

return;

};

//

// wikEd.MakeButtonBar: generate button bar div element

//

wikEd.MakeButtonBar = function(bar) {

// id outer, class outer, id inner, class inner, alt, button numbers

var barId = bar[0];

var barClass = bar[1];

var buttonsId = bar[2];

var buttonsClass = bar[3];

var barHeight = bar[4];

var gripTitle = bar[5];

var buttonNumbers = bar[6];

var barTitle = bar[7];

// collect the buttons

var buttons = '';

for (var i = 0; i < buttonNumbers.length; i ++) {

var buttonNo = buttonNumbers[i];

switch (buttonNo) {

case 'br':

buttons += '
';

break;

case 'find':

buttons += '';

buttons += '';

buttons += '';

buttons += '';

break;

case 'replace':

buttons += '';

buttons += '';

buttons += '';

buttons += '';

break;

default:

var currButton = wikEd.config.button[buttonNo];

if (typeof(currButton) != 'object') {

alert('Loading error: The button "' + buttonNumbers[i] + '" is not defined.');

}

if ( (currButton[0] == 'wikEdSource') && (wikEd.config.showSourceButton != true) && (wikEd.config.debug != true) ) {

break;

}

else if ( (currButton[0] == 'wikEdUsing') && (wikEd.config.showUsingButton != true) ) {

break;

}

else if ( (currButton[0] == 'wikEdTableMode') && (wikEd.config.showTableModeButton != true) ) {

break;

}

// add button html code

buttons += '';

}

}

// create the button bar div

var div = document.createElement('div');

div.id = barId;

div.className = barClass;

if ( (barTitle != null) && (barTitle != '') ) {

barTitle = barTitle.replace(/\{wikEdProgramVersion\}/g, wikEd.programVersion + wikEd.installationType);

barTitle = barTitle.replace(/\{wikEdProgramDate\}/g, wikEd.programDate);

div.title = barTitle;

}

var buttonsStyle = '';

if (barHeight > 0) {

buttonsStyle = ' style="height: ' + barHeight + 'px;"';

}

// make a grip bar

var html = '';

if (gripTitle != null) {

var gripStyle = 'width: ' + wikEd.config.buttonBarGripWidth + 'px; ';

if (barHeight > 0) {

gripStyle += 'height: ' + barHeight + 'px; ';

}

if (gripStyle.length > 0){

gripStyle = ' style="' + gripStyle + '"';

}

html += '

';

html += '

';

html += '

';

html += ' ';

html += '

';

html += '

';

html += '

';

html += '

';

html += buttons;

html += '

';

html += '

';

html += '

';

}

// make a standard no-grip bar

else {

html += '

';

html += buttons;

html += '

';

}

div.innerHTML = html;

return(div);

};

//

// wikEd.MakeButtonCode: create button code and register

//

wikEd.MakeButtonCode = function(buttonNo, type) {

var currButton = wikEd.config.button[buttonNo];

// add accesskey information to button title and

var accessKey = '';

if (wikEd.config.buttonKey[buttonNo] != null) {

accessKey = ' [' + wikEd.config.text['alt-shift'] + wikEd.config.buttonKey[buttonNo][0] + ']';

// initialize wikEd.buttonKeyCode[keyCode] = id

wikEd.buttonKeyCode[ (wikEd.config.buttonKey[buttonNo][1]) ] = currButton[0];

}

// add button html code

var html;

if (type == 'button') {

html = '';

}

else {

html = '' + currButton[6] + '

}

// collect click event info

wikEd.editButtonHandler[ currButton[0] ] = currButton[7];

return(html);

};

//

// wikEd.ButtonBarInit: hide buttons bar, see also wikEd.ButtonBarGripHandler()

//

wikEd.ButtonBarInit = function(bar) {

if (wikEd.GetPersistent(bar.id + 'Hidden') == '1') {

var barInnerWrapper = bar.firstChild;

var gripWrapper = barInnerWrapper.firstChild;

var grip = gripWrapper.firstChild;

var buttonsWrapper = gripWrapper.nextSibling;

barInnerWrapper.className = 'wikEdButtonBarInnerWrapperHidden';

gripWrapper.className = 'wikEdButtonBarGripWrapperHidden';

buttonsWrapper.className = 'wikEdButtonBarButtonsWrapperHidden';

wikEd.buttonsWrapperWidth[bar.id] = buttonsWrapper.offsetWidth;

buttonsWrapper.style.display = 'none';

wikEd.AddEventListener(grip, 'mouseover', wikEd.ButtonBarGripHandler, true);

}

return;

};

//

// wikEd.SetEditArea: apply css changes to switch between classic textarea and rich text frame

//

wikEd.SetEditArea = function(useFrame, notFrame) {

var scrollRatio;

// turn rich text frame on

if (useFrame == true) {

scrollRatio = wikEd.textarea.scrollTop / wikEd.textarea.scrollHeight;

// remember resized textarea dimensions

wikEd.textareaHeight = (wikEd.textarea.offsetHeight - wikEd.textareaBorderHeight) + 'px';

wikEd.textareaWidth = '100%';

wikEd.textareaWrapper.style.position = 'absolute';

wikEd.textareaWrapper.style.visibility = 'hidden';

wikEd.textarea.style.display = 'none';

if (notFrame != true) {

wikEd.frameWrapper.style.position = 'static';

wikEd.frameWrapper.style.visibility = 'visible';

wikEd.frameBody.style.display = 'block';

}

// set visibility of native toolbar

if (wikEd.closeToolbar == true) {

wikEd.toolbarWrapper.style.display = 'none';

}

else {

wikEd.toolbarWrapper.style.display = 'block';

}

if (wikEd.buttonBarFormat != null) {

wikEd.buttonBarFormat.style.display = 'block';

}

if (wikEd.buttonBarTextify != null) {

wikEd.buttonBarTextify.style.display = 'block';

}

if (wikEd.buttonBarCustom1 != null) {

wikEd.buttonBarCustom1.style.display = 'block';

}

if (wikEd.buttonBarFind != null) {

wikEd.buttonBarFind.style.display = 'block';

}

if (wikEd.buttonBarFix != null) {

wikEd.buttonBarFix.style.display = 'block';

}

if (wikEd.buttonBarCustom2 != null) {

wikEd.buttonBarCustom2.style.display = 'block';

}

if (wikEd.buttonBarControl != null) {

wikEd.buttonBarControl.style.display = 'block';

}

wikEd.frameBody.scrollTop = scrollRatio * wikEd.frameBody.scrollHeight;

}

// turn classic textarea on

else {

scrollRatio = wikEd.frameBody.scrollTop / wikEd.frameBody.scrollHeight;

if (notFrame != true) {

// get resized frame dimensions for textarea

if (wikEd.useWikEd == true) {

wikEd.textareaHeight = wikEd.frameHeight;

wikEd.textareaWidth = '100%';

}

wikEd.frameWrapper.style.position = 'absolute';

wikEd.frameWrapper.style.visibility = 'hidden';

// Mozilla or wikEd bug:
insertion before text a while after setting display to 'none', test with setTimeout('alert(wikEd.frameBody.innerHTML)', 1000);

// wikEd.frameBody.style.display = 'none';

}

wikEd.textareaWrapper.style.position = 'static';

wikEd.textareaWrapper.style.visibility = 'visible';

wikEd.textarea.style.height = wikEd.textareaHeight;

wikEd.textarea.style.width = wikEd.textareaWidth;

wikEd.textarea.style.display = 'block';

// force visibility of native toolbar

if (wikEd.toolbarWrapper != null) {

wikEd.toolbarWrapper.style.display = 'block';

}

if (wikEd.buttonBarFormat != null) {

wikEd.buttonBarFormat.style.display = 'none';

}

if (wikEd.buttonBarTextify != null) {

wikEd.buttonBarTextify.style.display = 'none';

}

if (wikEd.buttonBarCustom1 != null) {

wikEd.buttonBarCustom1.style.display = 'none';

}

if (wikEd.buttonBarFind != null) {

wikEd.buttonBarFind.style.display = 'none';

}

if (wikEd.buttonBarFix != null) {

wikEd.buttonBarFix.style.display = 'none';

}

if (wikEd.buttonBarCustom2 != null) {

wikEd.buttonBarCustom2.style.display = 'none';

}

if (wikEd.buttonBarControl != null) {

wikEd.buttonBarControl.style.display = 'block';

}

wikEd.textarea.scrollTop = scrollRatio * wikEd.textarea.scrollHeight;

}

return;

};

//

// wikEd.Button: toggle or set button checked state

// used for buttons that do not require nor change the text. Faster than wikEd.EditButton()

//

wikEd.Button = function(buttonObj, buttonId, toggleButton, setButton, classButton, doButton) {

if (buttonObj != null) {

// check if the button is disabled

if (buttonObj.className == 'wikEdButtonInactive') {

return;

}

// set button to pressed, set cursor to hourglass

buttonObj.style.cursor = 'wait';

// init the button

if (setButton != null) {

if (setButton == false) {

buttonObj.setAttribute('checked', false);

if (classButton == null) {

buttonObj.className = 'wikEdButtonUnchecked';

}

}

else {

buttonObj.setAttribute('checked', true);

if (classButton == null) {

buttonObj.className = 'wikEdButtonChecked';

}

}

}

else if (classButton != null) {

buttonObj.className = classButton;

}

// toggle the button

if (toggleButton != null) {

if (toggleButton == true) {

if (wikEd.GetAttribute(buttonObj, 'checked') == 'true') {

buttonObj.setAttribute('checked', false);

buttonObj.className = 'wikEdButtonUnchecked';

}

else {

buttonObj.setAttribute('checked', true);

buttonObj.className = 'wikEdButtonChecked';

}

}

}

}

// perform specific actions

var focusFrame = false;

if ( ( (setButton == null) && (classButton == null) ) || (doButton == true) ) {

// remove active content

wikEd.RemoveElements(['script', 'object', 'applet', 'embed']);

switch (buttonId) {

// switch between syntax highlighting and plain text

case 'wikEdHighlightSyntax':

if (wikEd.GetAttribute(buttonObj, 'checked') == 'true') {

wikEd.highlightSyntax = true;

wikEd.SetPersistent('wikEdSyntaxOff', '0', 0, '/');

if (wikEd.refHide == true) {

wikEd.frameBody.className = 'wikEdFrameBodyNewbie';

}

else {

wikEd.frameBody.className = 'wikEdFrameBodySyntax';

}

}

else {

wikEd.highlightSyntax = false;

wikEd.SetPersistent('wikEdSyntaxOff', '1', 0, '/');

wikEd.frameBody.className = 'wikEdFrameBodyPlain';

}

// do not keep whole text selected

wikEd.EditButton( null, 'wikEdUpdateAll', {'keepSel': false} );

break;

// toggle table mode // {{TABLE}}

case 'wikEdTableMode':

if (wikEd.GetAttribute(buttonObj, 'checked') != 'true') {

wikEd.tableMode = false;

wikEd.EditButton(null, 'wikEdUpdateAll');

}

else {

wikEd.tableMode = true;

wikEd.EditButton(null, 'wikEdTablify');

}

break;

// align textbox with display top

case 'wikEdScrollToPreview':

case 'wikEdScrollToPreview2':

case 'wikEdScrollToPreview3':

window.scroll(0, wikEd.GetOffsetTop(wikEd.saveButton));

focusFrame = true;

break;

// align edit buttons with display top

case 'wikEdScrollToEdit':

case 'wikEdScrollToEdit2':

case 'wikEdScrollToEdit3':

case 'wikEdScrollToEdit4':

window.scroll(0, wikEd.GetOffsetTop(wikEd.inputWrapper));

focusFrame = true;

break;

// cycle through different font sizes

case 'wikEdTextZoomDown':

wikEd.textSize = wikEd.textSize / 1.2;

if (wikEd.textSize < wikEd.textSizeInit / 1.2 / 1.2) {

wikEd.textSize = wikEd.textSizeInit * 1.2 * 1.2;

}

wikEd.frameBody.style.fontSize = wikEd.textSize + 'px';

focusFrame = true;

break;

// cycle through different font sizes

case 'wikEdTextZoomUp':

wikEd.textSize = wikEd.textSize * 1.2;

if (wikEd.textSize > wikEd.textSizeInit * 1.2 * 1.2) {

wikEd.textSize = wikEd.textSizeInit / 1.2 / 1.2;

}

wikEd.frameBody.style.fontSize = wikEd.textSize + 'px';

focusFrame = true;

break;

// display local preview box

case 'wikEdLocalPreview':

if (wikEd.fullScreenMode == true) {

wikEd.FullScreen(false);

}

if (wikEd.useWikEd == true) {

wikEd.UpdateTextarea();

}

// clear box to display loading indicator, keep wrapper height to prevent scrolling

var previewHeight = wikEd.previewBox.offsetHeight;

if ( (wikEd.previewBox.innerHTML != '') && (previewHeight > 0) ) {

wikEd.previewBox.style.height = previewHeight + 'px';

}

wikEd.previewBox.innerHTML = wikEd.config.text.wikEdPreviewLoading;

wikEd.localPrevWrapper.style.display = 'inline';

// load MathJax

if (typeof(MathJax) == 'undefined') {

if (wikEd.loader == true) {

// prevent error if module is not installed

try {

mw.loader.using('ext.math.mathjax.enabler', function() {

wikEd.previewBox.renderTeX();

});

}

catch (error) {

}

}

}

// prepare ajax preview

wikEd.previewIsAjax = false;

var bodyData = wikEd.textarea.value;

// Opera 0.9.51

bodyData = bodyData.replace(/\r\n|\n\r|\r/g, '\n');

if (wikEd.config.useAjaxPreview == true) {

var livePreview = true;

// articles on watchlist preview page

if (wikEd.watchlistEdit == true) {

bodyData = bodyData.replace(/\n{1}/g, '\n\n');

bodyData = bodyData.replace(/(.+)/g,

function(p, p1) {

if (/[#<>\[\]\|\{\}]/.test(p1) == true) {

return(p1);

}

var article = p1;

var talk;

if (/:/.test(article) == true) {

// 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(wikEd.config.text['talk namespace suffix']) == true) {

talk = article.replace(/([^:]*)/, wikEd.config.text['talk namespace suffix'] + '$1');

}

else {

talk = article.replace(/([^:]*)/, '$1' + wikEd.config.text['talk namespace suffix']);

}

}

else {

talk = wikEd.config.text['talk namespace'] + ':' + article;

}

var uriArticle = wikEd.EncodeTitle(article);

var hist = wikEd.wikiGlobals.wgServer + wikEd.wikiGlobals.wgScript + '?title=' + uriArticle + '&action=history';

return(':' + p1 + ' • (' + wikEd.config.text['talk page'] + ', [' + hist + ' ' + wikEd.config.text['history page'] + '])');

}

);

}

// normal article edit page

else {

// append references section for section edits

var section = document.getElementsByName('wpSection');

if (section != null) {

if (section.length > 0) {

if (/\d+/.test(section[0].value) == true) {

if (/\/]*>(.|\n)*?<\/ref[^>]*>/i.test(bodyData) == true) {

if (/]*>/i.test(bodyData) == false) {

bodyData += '

';

}

}

}

}

}

// GesHI syntax highlighting support, GeSHi css is only provided dynamically and not for &live

// so request a full preview and attach css to page, remember already loaded GeSHi languages

var regExp = /<(syntaxhighlight|source)\b[^>]*?lang\s*=\s*("|')(\w+)\2/gi;

while ( (regExpMatch = regExp.exec(bodyData)) != null) {

var lang = regExpMatch[3];

if (wikEd.geSHiCSS['wikEd' + lang] == null) {

livePreview = false;

wikEd.geSHiCSS['wikEd' + lang] = true;

break;

}

}

}

// make the ajax request

wikEd.AjaxPreview(bodyData, wikEd.LocalPreviewAjaxHandler, livePreview);

}

// prepare a local preview (Pilaf's InstaView), will be overwritten by Ajax version

if ( (wikEd.config.useLocalPreview == true) && (typeof(InstaView) == 'object') ) {

InstaView.conf.user.name = wikEd.wikiGlobals.wgUserName;

var text = wikEd.textarea.value;

// Opera 0.9.51

text = text.replace(/\r\n|\n\r|\r/g, '\n');

var instaView = InstaView.convert(text);

if (wikEd.previewIsAjax != true) {

wikEd.previewBox.innerHTML = instaView;

// init sortable tables (wikibits.js)

if (typeof(sortables_init) == 'function') {

sortables_init();

}

// init collapsible tables (common.js)

if (typeof(createCollapseButtons) == 'function') {

createCollapseButtons();

}

}

}

focusFrame = true;

break;

// display local diff box

case 'wikEdLocalDiff':

if (typeof(WDiffString) != 'function') {

var diffTextLinkified = '';

wikEd.previewBox.innerHTML = '

' + wikEd.config.text.diffNotLoaded + '
';

wikEd.localPrevWrapper.style.display = 'block';

break;

}

if (wikEd.fullScreenMode == true) {

wikEd.FullScreen(false);

}

if (wikEd.useWikEd == true) {

wikEd.UpdateTextarea();

}

// add trailing newline

var currentVersion = wikEd.textarea.value;

// Opera 0.9.51

currentVersion = currentVersion.replace(/\r\n|\n\r|\r/g, '\n');

// call external diff program

wikEd.previewBox.innerHTML = wikEd.DiffResponse(wikEd.origVersion, currentVersion);

// display diff, keep wrapper height to prevent scrolling

var previewHeight = wikEd.previewBox.offsetHeight;

if ( (wikEd.previewBox.innerHTML != '') && (previewHeight > 0) ) {

wikEd.previewBox.style.height = previewHeight + 'px';

}

wikEd.localPrevWrapper.style.display = 'block';

// scroll to button, textarea, or preview field

wikEd.ScrollToPreview();

// run scheduled custom functions

wikEd.ExecuteHook(wikEd.config.diffHook);

break;

// toggle wikEdDiff

case 'wikEdDiff':

// turn wikEdDiff off

if (wikEd.GetAttribute(buttonObj, 'checked') != 'true') {

wikEd.diff = false;

wikEd.SetPersistent('wikEdDiff', '0', 0, '/');

if (typeof(wikEd.diffDiv) == 'object') {

if (wikEd.diffDiv != null) {

wikEd.diffDiv.style.display = 'none';

}

}

window.scroll(0, wikEd.GetOffsetTop(wikEd.inputWrapper));

}

// turn wikEdDiff on

else {

wikEd.diff = true;

wikEd.SetPersistent('wikEdDiff', '1', 0, '/');

if (typeof(wikEd.diffDiv) == 'object') {

if (wikEd.diffDiv != null) {

wikEd.diffDiv.style.display = 'block';

window.scroll(0, wikEd.GetOffsetTop(wikEd.diffDiv));

wikEd.Diff();

}

}

}

focusFrame = true;

break;

// close the preview / diff box

case 'wikEdClose':

case 'wikEdClose2':

window.scroll(0, wikEd.GetOffsetTop(wikEd.inputWrapper));

wikEd.localPrevWrapper.style.display = 'none';

wikEd.previewBox.style.height = 'auto';

focusFrame = true;

break;

// switch between textarea and frame display

// switching an iframe in design mode immediately after initialization between absolute/static may crash mozilla

case 'wikEdUseWikEd':

// enble wikEd

if (wikEd.GetAttribute(buttonObj, 'checked') == 'true') {

wikEd.UpdateFrame();

// turn rich text frame on

wikEd.SetEditArea(true);

wikEd.useWikEd = true;

wikEd.SetPersistent('wikEdUseClassic', '0', 0, '/');

// run scheduled custom functions

wikEd.ExecuteHook(wikEd.config.frameHook);

}

// turn classic textarea on, disable wikEd

else {

wikEd.UpdateTextarea();

wikEd.SetEditArea(false);

wikEd.useWikEd = false;

wikEd.SetPersistent('wikEdUseClassic', '1', 0, '/');

// run scheduled custom functions

wikEd.ExecuteHook(wikEd.config.textareaHook);

}

break;

// add "using wikEd" to summaries

case 'wikEdUsing':

if (wikEd.GetAttribute(buttonObj, 'checked') == 'true') {

wikEd.using = true;

wikEd.SetPersistent('wikEdSummaryUsing', '1', 0, '/');

}

else {

wikEd.using = false;

wikEd.SetPersistent('wikEdSummaryUsing', '0', 0, '/');

}

break;

// hide ref tags

case 'wikEdRefHide':

if (wikEd.GetAttribute(buttonObj, 'checked') == 'true') {

wikEd.refHide = true;

wikEd.SetPersistent('wikEdRefHide', '1', 0, '/');

}

else {

wikEd.refHide = false;

wikEd.SetPersistent('wikEdRefHide', '0', 0, '/');

}

if (wikEd.useWikEd == true) {

if (wikEd.refHide == true) {

wikEd.frameBody.className = 'wikEdFrameBodyNewbie';

}

else {

wikEd.frameBody.className = 'wikEdFrameBodySyntax';

}

wikEd.EditButton(null, 'wikEdWikify', 'whole');

}

break;

// close the toolbar

case 'wikEdCloseToolbar':

if (wikEd.GetAttribute(buttonObj, 'checked') == 'true') {

wikEd.closeToolbar = true;

wikEd.toolbarWrapper.style.display = 'none';

wikEd.SetPersistent('wikEdCloseToolbar', '1', 0, '/');

}

else {

wikEd.closeToolbar = false;

wikEd.toolbarWrapper.style.display = 'block';

wikEd.SetPersistent('wikEdCloseToolbar', '0', 0, '/');

}

if (wikEd.fullScreenMode == true) {

wikEd.FullScreen(wikEd.fullScreenMode);

}

break;

// just toggle the case sensitive search button

case 'wikEdCaseSensitive':

break;

// just toggle the regexp search button

case 'wikEdRegExp':

break;

// just toggle the find-ahead-as-you-type search button

case 'wikEdFindAhead':

break;

// switch to fullscreen edit area

case 'wikEdFullScreen':

if (wikEd.rearrange == true) {

if (wikEd.GetAttribute(buttonObj, 'checked') == 'true') {

wikEd.FullScreen(true);

wikEd.SetPersistent('wikEdFullscreen', '1', 0, '/');

}

else {

wikEd.FullScreen(false);

wikEd.SetPersistent('wikEdFullscreen', '0', 0, '/');

}

}

break;

// clear the saved settings for find, replace, and summary history

case 'wikEdClearHistory':

wikEd.ClearHistory('find');

wikEd.ClearHistory('replace');

wikEd.ClearHistory('summary');

focusFrame = true;

break;

// for testing

case 'wikEdPlaceholder':

break;

}

}

// reset cursor to normal

if (buttonObj != null) {

buttonObj.style.cursor = '';

}

// focus the frame

if ( (wikEd.useWikEd == true) && (focusFrame == true) ) {

wikEd.frameWindow.focus();

}

return;

};

//

// wikEd.EditButton: editing functions

// used for buttons that require or change the text, more time consuming than wikEd.Button()

//

wikEd.EditButton = function(buttonObj, buttonId, parameters, CustomHandler) {

// check if iframe is enabled

if (wikEd.UseWikEd == false) {

return;

}

// check if button is disabled

if (buttonObj != null) {

if (buttonObj.className == 'wikEdButtonInactive') {

return;

}

}

// remove active and non-text content

wikEd.RemoveElements(['script', 'object', 'applet', 'embed', 'textarea']);

// select the appropriate text change targets (whole, selection, cursor, focusWord, focusLine, selectionWord, or selectionLine)

var obj = {};

obj.changed = {};

var highlightNoTimeOut = false;

// set cursor position into closest highest text node so that highlighting does not bleed out

wikEd.AntiHighlightBleeding(obj, true);

// invalidate wikify/textify of recently pasted text

if ( (buttonId != 'wikEdPastedWikify') && (buttonId != 'wikEdPastedTextify') && (buttonId != 'wikEdPasting') ) {

wikEd.PastedOff();

}

// switch the button

switch (buttonId) {

// undo, redo: whole

case 'wikEdUndo':

case 'wikEdRedo':

case 'wikEdUndoAll':

case 'wikEdRedoAll':

wikEd.GetText(obj, 'whole');

obj.changed = obj.whole;

break;

// basic wiki character formatting: selection / focusWord / cursor

case 'wikEdBold':

case 'wikEdItalic':

case 'wikEdUnderline':

case 'wikEdStrikethrough':

case 'wikEdNowiki':

case 'wikEdSuperscript':

case 'wikEdSubscript':

case 'wikEdWikiLink':

case 'wikEdWebLink':

wikEd.GetText(obj, 'selection, cursor');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

wikEd.GetText(obj, 'focusWord');

if (obj.focusWord.plain != '') {

obj.changed = obj.focusWord;

}

else {

obj.changed = obj.cursor;

}

}

break;

// reference: selection / cursor

case 'wikEdRef':

case 'wikEdRefNamed':

wikEd.GetText(obj, 'selection, cursor');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

obj.changed = obj.cursor;

}

break;

// references and small references: selection / cursor

case 'wikEdReferences':

case 'wikEdReferencesSection':

wikEd.GetText(obj, 'selection, cursor');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

obj.changed = obj.cursor;

}

break;

// signature and name only signature: selection / cursor

case 'wikEdSign':

case 'wikEdSignName':

wikEd.GetText(obj, 'selection, cursor');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

obj.changed = obj.cursor;

}

break;

// character formatting: selection / focusWord / cursor

case 'wikEdCase':

wikEd.GetText(obj, 'selection, cursor');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

wikEd.GetText(obj, 'focusWord');

if (obj.focusWord.plain != '') {

obj.changed = obj.focusWord;

}

else {

obj.changed = obj.cursor;

}

}

break;

// multiple line changes: selectionLine / focusLine / cursor

case 'wikEdDecreaseHeading':

case 'wikEdIncreaseHeading':

case 'wikEdIncreaseBulletList':

case 'wikEdDecreaseBulletList':

case 'wikEdIncreaseNumberList':

case 'wikEdDecreaseNumberList':

case 'wikEdIncreaseIndentList':

case 'wikEdDecreaseIndentList':

case 'wikEdDefinitionList':

wikEd.GetText(obj, 'selection, cursor');

if (obj.selection.plain != '') {

wikEd.GetText(obj, 'selectionLine');

obj.changed = obj.selectionLine;

}

else {

wikEd.GetText(obj, 'focusLine');

if (obj.focusLine.plain != '') {

obj.changed = obj.focusLine;

}

else {

obj.changed = obj.cursor;

}

}

break;

// sort: selectionLine / focusLine

case 'wikEdSort':

wikEd.GetText(obj, 'selection, cursor, selectionLine');

if (obj.selection.plain == '') {

obj.changed = obj.selectionLine;

}

else if (/\n./.test(obj.selection.plain) == false) {

obj.changed = obj.selection;

}

else {

obj.changed = obj.selectionLine;

}

break;

// image: selectionWord (if text is selected) / cursor

case 'wikEdImage':

wikEd.GetText(obj, 'selection, cursor');

if (obj.selection.plain != '') {

wikEd.GetText(obj, 'selectionWord');

obj.changed = obj.selectionWord;

}

else {

obj.changed = obj.cursor;

}

break;

// table: selectionLine / cursor

case 'wikEdTable':

wikEd.GetText(obj, 'selection, cursor');

if (obj.selection.plain != '') {

wikEd.GetText(obj, 'selectionLine');

obj.changed = obj.selectionLine;

}

else {

wikEd.GetText(obj, 'focusLine');

obj.changed = obj.cursor;

}

break;

// wikify pasted: cursor

case 'wikEdPastedWikify':

wikEd.GetText(obj, 'cursor');

obj.changed = obj.cursor;

break;

// textify during pasting: selection

case 'wikEdPasting':

// get text, do not wikify

wikEd.GetText(obj, 'selection', false);

obj.changed = obj.selection;

break;

// textify pasted: cursor

case 'wikEdPastedTextify':

wikEd.GetText(obj, 'cursor');

obj.changed = obj.cursor;

break;

// wikify: selection / whole

case 'wikEdWikify':

if (parameters == 'whole') {

wikEd.GetText(obj, 'whole');

obj.changed = obj.whole;

}

else {

wikEd.GetText(obj, 'selection');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

wikEd.GetText(obj, 'whole');

obj.changed = obj.whole;

}

}

break;

// textify: selection / whole, without wikifying

case 'wikEdTextify':

wikEd.GetText(obj, 'selection', false);

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

wikEd.GetText(obj, 'whole', false);

obj.changed = obj.whole;

}

break;

// redirect: whole

case 'wikEdRedirect':

wikEd.GetText(obj, 'whole, selection, cursor');

if (obj.selection.plain == '') {

wikEd.GetText(obj, 'selectionWord');

}

obj.changed = obj.whole;

break;

// find and replace: selection / focusWord / cursor

case 'wikEdFindPrev':

case 'wikEdFindNext':

case 'wikEdJumpPrev':

case 'wikEdJumpNext':

case 'wikEdReplacePrev':

case 'wikEdReplaceNext':

case 'wikEdFindAll':

wikEd.GetText(obj, 'selection');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

wikEd.GetText(obj, 'focusWord');

if (obj.focusWord.plain != '') {

obj.changed = obj.focusWord;

}

else {

obj.changed = obj.cursor;

}

}

break;

// replace all: selection / whole

case 'wikEdReplaceAll':

wikEd.GetText(obj, 'selection');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

wikEd.GetText(obj, 'whole');

obj.changed = obj.whole;

}

break;

// fixing buttons: selection / whole

case 'wikEdFixBasic':

case 'wikEdFixUnicode':

case 'wikEdFixAll':

case 'wikEdFixHtml':

case 'wikEdFixRegExTypo':

case 'wikEdFixRedirect':

case 'wikEdFixRedirectReplace':

wikEd.GetText(obj, 'selection, cursor');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

wikEd.GetText(obj, 'whole');

obj.changed = obj.whole;

}

break;

// fixing buttons: selection / focusPara / cursor

case 'wikEdFixPunct':

case 'wikEdFixMath':

case 'wikEdFixUnits':

case 'wikEdFixDashes':

case 'wikEdFixCaps':

case 'wikEdFixChem':

wikEd.GetText(obj, 'selection, cursor');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

wikEd.GetText(obj, 'focusPara');

if (obj.focusPara.plain != '') {

obj.changed = obj.focusPara;

}

else {

obj.changed = obj.cursor;

}

}

break;

// fixing buttons: selection / focusLine / cursor

case 'wikEdFixChem':

wikEd.GetText(obj, 'selection, cursor');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

wikEd.GetText(obj, 'focusLine');

if (obj.focusPara.plain != '') {

obj.changed = obj.focusLine;

}

else {

obj.changed = obj.cursor;

}

}

break;

// source: selection / whole

case 'wikEdSource':

wikEd.GetText(obj, 'selection');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

wikEd.GetText(obj, 'whole');

obj.changed = obj.whole;

}

break;

// insert tags: selection / cursor

case 'wikEdInsertTags':

wikEd.GetText(obj, 'selection, cursor');

if (obj.selection.plain != '') {

obj.changed = obj.selection;

}

else {

obj.changed = obj.cursor;

}

break;

// convert wiki tables to html

case 'wikEdTablify':

wikEd.GetText(obj, 'whole');

obj.changed = obj.whole;

break;

// update text view using current control button settings

case 'wikEdUpdateAll':

wikEd.GetText(obj, 'whole');

obj.changed = obj.whole;

break;

// custom edit functions have to call wikEd.GetText() themselves

default:

wikEd.GetText(obj, 'cursor');

obj.changed = obj.cursor;

break;

}

// exit

if (obj.changed == null) {

wikEd.frameWindow.focus();

// reset button to active, reset cursor

if (buttonObj != null) {

if (buttonObj.className != 'wikEdButtonInactive') {

buttonObj.className = 'wikEdButton';

}

}

return;

}

// set local syntax highlighting flag

var highlightSyntax = wikEd.highlightSyntax;

// apply selected action

var selectChanged = true;

var selectChangedText = '';

var emptyOrSpaces = /^ *$/.test(obj.changed.plain);

switch (buttonId) {

// undo

case 'wikEdUndo':

if (wikEd.lastVersion == null) {

wikEd.lastVersion = obj.changed.plain;

}

wikEd.FrameExecCommand('undo');

if (obj.sel.rangeCount == 0) {

obj.sel.collapse(wikEd.frameBody, 0);

}

obj.changed.range = obj.sel.getRangeAt(obj.sel.rangeCount - 1);

obj.changed.plain = null;

obj.changed.keepSel = true;

break;

// redo

case 'wikEdRedo':

wikEd.FrameExecCommand('redo');

if (obj.sel.rangeCount == 0) {

obj.sel.collapse(wikEd.frameBody, 0);

}

obj.changed.range = obj.sel.getRangeAt(obj.sel.rangeCount - 1);

obj.changed.plain = null;

obj.changed.keepSel = true;

break;

// bold

case 'wikEdBold':

// remove markup

if (/^(\s*)((.|\n)*?)(\s*)$/.test(obj.changed.plain) ) {

obj.changed.plain = obj.changed.plain.replace(/^(\s*)((.|\n)*?)(\s*)$/g, '$1$2$4');

}

// add markup

else {

obj.changed.plain = '\'\'\ + obj.changed.plain + '\'\'\;

if (emptyOrSpaces == false) {

// move spaces outside markup

obj.changed.plain = obj.changed.plain.replace(/^()(\s*)((.|\n)*?)(\s*)()$/, '$2$1$3$6$5');

// trim to maximal number of ' (bold + italic)

obj.changed.plain = obj.changed.plain.replace(/^'{6,}((.|\n)*)'{6,}$/g, '\'\'\'\'\'$1\'\'\'\'\'');

}

}

obj.changed.keepSel = true;

break;

// italic

case 'wikEdItalic':

// remove markup

if (/^(\s*)((.|\n)*?)(\s*)$/.test(obj.changed.plain) ) {

obj.changed.plain = obj.changed.plain.replace(/^(\s*)((.|\n)*?)(\s*)$/g, '$1$2$4');

}

// add markup

else {

obj.changed.plain = '\'\ + obj.changed.plain + '\'\;

if (emptyOrSpaces == false) {

// move spaces outside markup

obj.changed.plain = obj.changed.plain.replace(/^()(\s*)((.|\n)*?)(\s*)()$/, '$2$1$3$6$5');

// trim to maximal number of ' (bold + italic)

obj.changed.plain = obj.changed.plain.replace(/^'{6,}((.|\n)*)'{6,}$/g, '\'\'\'\'\'$1\'\'\'\'\'');

}

}

obj.changed.keepSel = true;

break;

// underline

case 'wikEdUnderline':

// remove markup

if ( /<u>((.|\n)*?)<\/u>/i.test(obj.changed.plain) ) {

obj.changed.plain = obj.changed.plain.replace(/<u>((.|\n)*?)<\/u>/gi, '$1');

}

// add markup

else {

obj.changed.plain = '<u>' + obj.changed.plain + '<\/u>';

if (emptyOrSpaces == false) {

obj.changed.plain = obj.changed.plain.replace(/^(<u>)(\s*)((.|\n)*?)(\s*)(<\/u>)$/, '$2$1$3$6$5');

}

}

obj.changed.keepSel = true;

break;

// strikethrough

case 'wikEdStrikethrough':

if ( /<s>((.|\n)*?)<\/s>/i.test(obj.changed.plain) ) {

obj.changed.plain = obj.changed.plain.replace(/<s>((.|\n)*?)<\/s>/gi, '$1');

}

else {

obj.changed.plain = '<s>' + obj.changed.plain + '<\/s>';

if (emptyOrSpaces == false) {

obj.changed.plain = obj.changed.plain.replace(/^(<s>)(\s*)((.|\n)*?)(\s*)(<\/s>)$/, '$2$1$3$6$5');

}

}

obj.changed.keepSel = true;

break;

// nowiki

case 'wikEdNowiki':

if ( /<nowiki>((.|\n)*?)<\/nowiki>/i.test(obj.changed.plain) ) {

obj.changed.plain = obj.changed.plain.replace(/<nowiki>((.|\n)*?)<\/nowiki>/gi, '$1');

}

else {

obj.changed.plain = '<nowiki>' + obj.changed.plain + '<\/nowiki>';

if (emptyOrSpaces == false) {

obj.changed.plain = obj.changed.plain.replace(/^(<nowiki>)(\s*)((.|\n)*?)(\s*)(<\/nowiki>)$/, '$2$1$3$6$5');

}

}

obj.changed.keepSel = true;

break;

// superscript

case 'wikEdSuperscript':

obj.changed.plain = obj.changed.plain.replace(/^(\s*)<sub>((.|\n)*?)<\/sub>(\s*)$/, '$1$2$4');

if ( /<sup>((.|\n)*?)<\/sup>/i.test(obj.changed.plain) ) {

obj.changed.plain = obj.changed.plain.replace(/<sup>((.|\n)*?)<\/sup>/gi, '$1');

}

else {

obj.changed.plain = '<sup>' + obj.changed.plain + '</sup>';

if (emptyOrSpaces == false) {

obj.changed.plain = obj.changed.plain.replace(/^(<sup>)(\s*)((.|\n)*?)(\s*)(<\/sup>)$/, '$2$1$3$6$5');

}

}

obj.changed.keepSel = true;

break;

// subscript

case 'wikEdSubscript':

obj.changed.plain = obj.changed.plain.replace(/^(\s*)<sup>((.|\n)*?)<\/sup>(\s*)$/, '$1$2$4');

if ( /<sub>((.|\n)*?)<\/sub>/i.test(obj.changed.plain) ) {

obj.changed.plain = obj.changed.plain.replace(/<sub>((.|\n)*?)<\/sub>/gi, '$1');

}

else {

obj.changed.plain = '<sub>' + obj.changed.plain + '</sub>';

if (emptyOrSpaces == false) {

obj.changed.plain = obj.changed.plain.replace(/^(<sub>)(\s*)((.|\n)*?)(\s*)(<\/sub>)$/, '$2$1$3$6$5');

}

}

obj.changed.keepSel = true;

break;

// in-text reference

case 'wikEdRef':

case 'wikEdRefNamed':

if (obj.changed.plain == '') {

if (buttonId == 'wikEdRef') {

obj.changed.plain = '<ref><\/ref>';

}

else {

obj.changed.plain = '<ref name="" \/>';

}

}

else if ( /<ref( name="")? ?\/>/i.test(obj.changed.plain) ) {

obj.changed.plain = '';

}

else if ( /<ref( name="")?>((.|\n)*?)<\/ref>/i.test(obj.changed.plain) ) {

obj.changed.plain = obj.changed.plain.replace(/<ref( name="")?>((.|\n)*?)<\/ref>/gi, '$2');

}

else {

if (buttonId == 'wikEdRef') {

obj.changed.plain = '<ref>' + obj.changed.plain + '</ref>';

}

else {

obj.changed.plain = '<ref name="">' + obj.changed.plain + '</ref>';

}

if (emptyOrSpaces == false) {

obj.changed.plain = obj.changed.plain.replace(/^(<ref( name="")?>)(\s*)((.|\n)*?)(\s*)(<\/ref>)$/, '$3$1$4$7$6');

}

}

obj.changed.keepSel = true;

break;

// signature ~~~~

case 'wikEdSign':

if (obj.changed.plain == '~~~~') {

obj.changed.plain = '';

}

else {

obj.changed.plain = '~~~~';

}

obj.changed.keepSel = true;

break;

// name only signature ~~~

case 'wikEdSignName':

if (obj.changed.plain == '~~~') {

obj.changed.plain = '';

}

else {

obj.changed.plain = '~~~';

}

obj.changed.keepSel = true;

break;

// references location

case 'wikEdReferences':

case 'wikEdReferencesSection':

var ref = wikEd.config.text.wikEdReferencesSection;

ref = ref.replace(/

ref = ref.replace(/>/g, '>');

var refEscaped = ref;

refEscaped = refEscaped.replace(/([^\w\s;&])/g, '\\$1');

refEscaped = refEscaped.replace(/^\n|\n$/g, '\\n*');

refEscaped = refEscaped.replace(/(\n)/g, '\\n');

var regExp = new RegExp(refEscaped, 'gi');

// plain references tag

if (buttonId == 'wikEdReferences') {

if (obj.changed.plain == '') {

obj.changed.plain = '<references/>';

}

else if (regExp.test(obj.changed.plain) == true) {

obj.changed.plain = obj.changed.plain.replace(regExp, '');

}

else if (/<references ?\/>/i.test(obj.changed.plain) ) {

obj.changed.plain = obj.changed.plain.replace(/<references ?\/>/gi, '');

}

else {

obj.changed = obj.cursor;

obj.changed.plain = '<references/>';

}

}

// complete references code

else {

if (obj.changed.plain == '') {

obj.changed.plain = ref;

}

else if (regExp.test(obj.changed.plain) == true) {

obj.changed.plain = obj.changed.plain.replace(regExp, '');

}

else if ( /<references ?\/>/i.test(obj.changed.plain) ) {

obj.changed.plain = obj.changed.plain.replace(/<references ?\/>/gi, '');

}

else {

obj.changed = obj.cursor;

obj.changed.plain = ref;

}

}

obj.changed.keepSel = true;

break;

// toggle lowercase / uppercase

case 'wikEdCase':

if (obj.changed.plain == '') {

obj.changed.plain = null;

}

// lowercase all uppercased text

else {

// html character entities to chars

var plain = obj.changed.plain;

plain = plain.replace(/>/g, '>');

plain = plain.replace(/</g, '<');

plain = plain.replace(/&/g, '&');

if (plain.toUpperCase() == plain) {

plain = plain.toLowerCase();

}

// first-letter-uppercase all lowercased text

else if (plain.toLowerCase() == plain) {

var regExp = new RegExp('(^|[^' + wikEd.letters + '_])([' + wikEd.letters + '_])([' + wikEd.letters + '_\']*)', 'g')

plain = plain.replace(regExp,

function(p, p1, p2, p3) {

return(p1 + p2.toUpperCase() + p3.toLowerCase());

}

);

}

// uppercase mixed upper and lowercased text

else {

plain = plain.toUpperCase();

}

// chars back to html character entities

plain = plain.replace(/&/g, '&');

plain = plain.replace(/

plain = plain.replace(/>/g, '>');

obj.changed.plain = plain;

}

obj.changed.keepSel = true;

break;

// sort alphabetically by visible words, case insensitive, and numerically

case 'wikEdSort':

// fix unicode and character entities

wikEd.FixUnicode(obj.changed);

// sort a single line

if (/\n./.test(obj.changed.plain) == false) {

// Normalize(): normalize strings for sorting

var Normalize = function(text) {

// [ [ |( ) ] ]

text = text.replace(/\[\^\[\]\*)\]\]/g, '$1');

// [ [( ) ] ]

text = text.replace(/\[\[([^\[\]\|]*)\]\]/g, '$1');

// start with first letter

var regExp = new RegExp('^[^' + wikEd.letters + '_]+', 'g');

text = text.replace(regExp, '');

// sort numerically by adding preceeding 0s to numbers

text = text.replace(/0*(\d+)(\.\d*)?/g,

function(p, p1, p2) {

return('000000000000000'.substr(p1.length) + p1 + p2);

}

);

// case insensitive

text = text.toLowerCase();

return(text);

}

// SplitSortJoin(): sort list items in one line

var SplitSortJoin = function(regExp, text) {

var sorted = null;

// split text into array of element / separator pairs

var array = [];

var regExpMatch;

var lastMatch = 0;

while ( (regExpMatch = regExp.exec(text)) != null) {

var element = text.substring(lastMatch, regExpMatch.index);

var separator = regExpMatch[0];

array.push([element, separator, Normalize(element)]);

lastMatch = regExp.lastIndex;

}

if (array.length > 0) {

var element = text.substring(lastMatch);

if (element != '') {

array.push([element, '', Normalize(element)]);

}

// sort array after normalized elements

array.sort(function(a, b) {

return(a[2] > b[2]);

});

// join, keep separator next to element if possible, otherwise use last separator

sorted = '';

for (var i = 0; i < array.length; i ++) {

if ( (array[i][1] == '') && (i < array.length - 1) ) {

array[i][1] = array[array.length - 1][1];

array[array.length - 1][1] = '';

}

sorted += array[i][0] + array[i][1];

}

}

return(sorted);

}

// extract sortable text

var pre = '';

var sortable = obj.changed.plain;

var post = '';

// 123 3 4 4 2 15 56 6

var regExpMatch = /^(((\|[\w ]+\=)|\||!|(:*;)+) *)(.*?)( *\n*)$/.exec(obj.changed.plain);

if (regExpMatch != null) {

pre = regExpMatch[1];

sortable = regExpMatch[5];

post = regExpMatch[6];

}

// sortable text enclosed in html

regExpMatch = /^(<[^>]>+)(.*?)(<\/[^>]>+)$/.exec(sortable);

if (regExpMatch != null) {

pre = pre + regExpMatch[1];

sortable = regExpMatch[2];

post = regExpMatch[3] + post;

}

// table cells

var sorted = SplitSortJoin(/ *((\||!){2,2}) *()/g, sortable);

if ( (sorted == null) || (/^(\|{1,1}|!{1,1})/.test(pre) == false) ) {

// bullets, dots, dashes, \|/:-,; in spaces

sorted = SplitSortJoin(/((&nbsp;| )+((\\|\||\/|:|-|,|;)+)(&nbsp;| )+|(&nbsp;| )*(•|•|•|•|·|·|�*xb7;|�*183;|–|–|–|–|—|—|―|―)(&nbsp;| )*)()/gi, sortable);

if (sorted == null) {

// ,;:

sorted = SplitSortJoin(/(&nbsp;| )*(,|;|:)(&nbsp;| )+/g, sortable);

if (sorted == null) {

// multiple spaces with  

sorted = SplitSortJoin(/( +&nbsp;|&nbsp;&nbsp;|&nbsp; )(&nbsp;| )*()/g, sortable);

// simple spaces

if (sorted == null) {

sorted = SplitSortJoin(/ +/g, sortable);

}

}

}

}

// join pre, sorted, and post

if (sorted != null) {

sorted = sorted.replace(/ {2,}/, ' ');

sorted = sorted.replace(/ +$/, '');

post = post.replace(/ +(\n*|$)/, '$1');

obj.changed.plain = pre + sorted + post;

}

break;

}

// keep leading and trailing empty lines and table syntax

var pre = '';

var main = '';

var post = '';

var regExpMatch = /^(((\{\|.*|!.*|\|\+.*|\|\-.*|)\n)*)((.|\n)*?)(((\|\}.*|\|\-.*|)\n)*)$/.exec(obj.changed.plain);

if (regExpMatch != null) {

pre = regExpMatch[1];

main = regExpMatch[4];

post = regExpMatch[6];

}

else {

main = obj.changed.plain;

}

// join cells in table rows

main = main.replace(/(^|\n)(\|[^\-\+\}](.|\n)*?(?=(\|\-|\{\||\|\}|$)|$))/g,

function(p, p1, p2, p3) {

p2 = p2.replace(/\n/g, '\x00');

return(p1 + p2);

}

);

// cycle through lines

var lines = main.split('\n');

var sortArray = [];

for (var i = 0; i < lines.length; i ++) {

var line = lines[i];

var sortKey = line;

// remove empty lines

if (line == '') {

continue;

}

sortKey = sortKey.replace(/\x00/g, '\n');

// remove html

sortKey = sortKey.replace(/<.*>/g, '');

// lowercase

sortKey = sortKey.toLowerCase();

// keep visible text of wikilinks only

sortKey = sortKey.replace(/\[\\[\*\|/g, '');

sortKey = sortKey.replace(/\[\[|\]\]/g, '');

// keep visible text of external links only

sortKey = sortKey.replace(/\[(https?|ftp|irc|gopher):\S+/g, '');

// keep visible cell content only

sortKey = sortKey.replace(/((^|\n)(\||\!))(?![\+\-\}\|\!])[^\|\!]*(\||\!)(?!\4)/g, '$1');

sortKey = sortKey.replace(/(^|\n)\|-.*?(\n|$)/g, '$2');

// keep single ' only

sortKey = sortKey.replace(/'{2,}/g, '');

// remove decimal commas

sortKey = sortKey.replace(/(\d)\,(?=\d\d\d(\D|$))/g, '$1');

// sort numerically by adding preceeding 0s to numbers

sortKey = sortKey.replace(/0*(\d+)(\.\d*)?/g,

function(p, p1, p2) {

return('000000000000000'.substr(p1.length) + p1 + p2);

}

);

// non-breaking and other spaces

sortKey = sortKey.replace(/ |\s/g, ' ');

// remove umlauts (just guessing, but probably better than not doing it)

sortKey = sortKey.replace(/[à-æ]/g, 'a');

sortKey = sortKey.replace(/[ç]/g, 'c');

sortKey = sortKey.replace(/[ð]/g, 'd');

sortKey = sortKey.replace(/[è-ë]/g, 'e');

sortKey = sortKey.replace(/[ì-ï]/g, 'i');

sortKey = sortKey.replace(/[ñ]/g, 'n');

sortKey = sortKey.replace(/[ò-öø]/g, 'o');

sortKey = sortKey.replace(/[ß]/g, 'ss');

sortKey = sortKey.replace(/[ù-ü]/g, 'u');

sortKey = sortKey.replace(/[ýÿ]/g, 'y');

// remove non-chars

sortKey = sortKey.replace(/[^$@.,:;\-\w\s'\u007f-\uffff]/g, '');

// join multiple spaces

sortKey = sortKey.replace(/ +/g, ' ');

// remove leading and trailing spaces

sortKey = sortKey.replace(/^ +| +$/g, '');

sortArray.push( [line, sortKey] );

}

// sort lines

sortArray = sortArray.sort(

function(a, b) {

if (a[1] <= b[1]) {

return(-1);

}

else {

return(1);

}

}

);

// join lines

var joined = '';

for (var i = 0; i < sortArray.length; i ++) {

joined += sortArray[i][0];

if (i < sortArray.length - 1) {

joined += '\n';

}

}

joined = joined.replace(/\x00/g, '\n');

obj.changed.plain = pre + joined + post;

obj.changed.keepSel = true;

break;

// undo all

case 'wikEdUndoAll':

if (wikEd.lastVersion == null) {

wikEd.lastVersion = obj.changed.plain;

}

obj.changed.plain = wikEd.origVersion;

obj.changed.plain = obj.changed.plain.replace(/&/g, '&');

obj.changed.plain = obj.changed.plain.replace(/>/g, '>');

obj.changed.plain = obj.changed.plain.replace(/

break;

// redo all

case 'wikEdRedoAll':

if (wikEd.lastVersion != null) {

obj.changed.plain = wikEd.lastVersion;

}

break;

// create wikilink

case 'wikEdWikiLink':

if ( /\[\[((.|\n)*?)\]\]/.test(obj.changed.plain) ) {

obj.changed.plain = obj.changed.plain.replace(/\[\[(.*?)\|\s*(.*?)\s*\]\]/g, '$2');

obj.changed.plain = obj.changed.plain.replace(/\[\[((.|\n)*?)\]\]/g, '$1');

}

else {

obj.changed.plain = '' + obj.changed.plain + '';

if (emptyOrSpaces == false) {

obj.changed.plain = obj.changed.plain.replace(/^(\[\[)(\s*)((.|\n)*?)(\s*)(\]\])$/, '$2$1$3$6$5');

}

}

obj.changed.keepSel = true;

break;

// create weblink

case 'wikEdWebLink':

if ( /\[((.|\n)*?)\]/.test(obj.changed.plain) ) {

obj.changed.plain = obj.changed.plain.replace(/\[((.|\n)*?)\]/g, '$1');

}

else {

obj.changed.plain = '[' + obj.changed.plain + ']';

if (emptyOrSpaces == false) {

obj.changed.plain = obj.changed.plain.replace(/^(\[)(\s*)((.|\n)*?)(\s*)(\])$/, '$2$1$3$6$5');

}

}

obj.changed.keepSel = true;

break;

// decrease heading level

case 'wikEdDecreaseHeading':

// decrease heading

obj.changed.plain = obj.changed.plain.replace(/(^|\n)=(=+) *(.*?) *=+(?=\n|$)/g, '$1$2 $3 $2');

// remove heading

obj.changed.plain = obj.changed.plain.replace(/(^|\n)=(?!=) *(.*?) *=+(?=\n|$)/g, '$1$2');

// adjust closing tags

obj.changed.plain = obj.changed.plain.replace(/(^|\n)(=+) *(.*?) *=+(?=\n|$)/g, '$1$2 $3 $2');

obj.changed.keepSel = true;

break;

// increase heading level

case 'wikEdIncreaseHeading':

// increase heading

obj.changed.plain = obj.changed.plain.replace(/(^|\n)(=+) *(.*?) *=+(?=\n|$)/g, '$1=$2 $3 $2=');

// create new heading

if (/\n/.test(obj.changed.plain) == false) {

obj.changed.plain = obj.changed.plain.replace(/(^|\n)([^=\s].*?)(?=\n|$)/g, '$1== $2 ==');

}

// adjust closing tags

obj.changed.plain = obj.changed.plain.replace(/(^|\n)(=+) *(.*?) *=+(?=\n|$)/g, '$1$2 $3 $2');

obj.changed.keepSel = true;

break;

// increase bullet list

case 'wikEdIncreaseBulletList':

obj.changed.plain = obj.changed.plain.replace(/(.+)/g,

function(p, p1) {

p1 = p1.replace(/^ *([*#:;]*) *()/g, '*$1 ');

return(p1);

}

);

obj.changed.keepSel = true;

break;

// decrease bullet list

case 'wikEdDecreaseBulletList':

obj.changed.plain = obj.changed.plain.replace(/(.+)/g,

function(p, p1) {

p1 = p1.replace(/^[*#:;] *()/g, '');

return(p1);

}

);

obj.changed.keepSel = true;

break;

// increase numbered list

case 'wikEdIncreaseNumberList':

obj.changed.plain = obj.changed.plain.replace(/(.+)/g,

function(p, p1) {

p1 = p1.replace(/^ *([*#:;]*) *()/g, '#$1 ');

return(p1);

}

);

obj.changed.keepSel = true;

break;

// decrease numbered list

case 'wikEdDecreaseNumberList':

obj.changed.plain = obj.changed.plain.replace(/(.+)/g,

function(p, p1) {

p1 = p1.replace(/^[*#:;] *()/g, '');

return(p1);

}

);

obj.changed.keepSel = true;

break;

// increase indented list

case 'wikEdIncreaseIndentList':

obj.changed.plain = obj.changed.plain.replace(/(.+)/g,

function(p, p1) {

p1 = p1.replace(/^ *([*#:;]*) *()/g, ':$1 ');

return(p1);

}

);

obj.changed.keepSel = true;

break;

// decrease indented list

case 'wikEdDecreaseIndentList':

obj.changed.plain = obj.changed.plain.replace(/(.+)/g,

function(p, p1) {

p1 = p1.replace(/^[*#:;] *()/g, '');

return(p1);

}

);

obj.changed.keepSel = true;

break;

// create definition list

case 'wikEdDefinitionList':

obj.changed.plain = obj.changed.plain.replace(/(.+)/g,

function(p, p1) {

p1 = p1.replace(/^ *([^\s;]+) *()/g, '; $1 : ');

return(p1);

}

);

break;

// create image

case 'wikEdImage':

if (obj.changed.plain != '') {

obj.changed.plain = 'Image:' + wikEd.config.text['image filename'] + '';

}

else {

obj.changed.plain = 'Image:' + wikEd.config.text['image filename'] + '';

if (obj.focusWord != null) {

if (obj.focusWord.plain != '') {

obj.changed.plain = ' ' + obj.changed.plain + ' ';

}

}

}

break;

// create table

case 'wikEdTable':

if (obj.changed.plain != '') {

obj.changed.plain = obj.changed.plain.replace(/(^|\n) *()/g, '\n|-\n| ');

obj.changed.plain = obj.changed.plain.replace(/^\n\|\-\n/, '\n

class="wikitable" border="1"\n');

obj.changed.plain = obj.changed.plain.replace(/$/g, '\n

\n');

}

else if (wikEd.tableMode == true) {

obj.changed.plain = '\n

' + wikEd.config.text['table caption'] + '
' + wikEd.config.text['table heading'] + '' + wikEd.config.text['table heading'] + '
' + wikEd.config.text['table cell'] + '' + wikEd.config.text['table cell'] + '
' + wikEd.config.text['table cell'] + '' + wikEd.config.text['table cell'] + '
\n';

if (obj.focusLine.plain != '') {

obj.changed.plain = '\n' + obj.changed.plain + '\n';

}

}

else {

obj.changed.plain = '\n

class="wikitable" border="1"\n|+ ' + wikEd.config.text['table caption'] + '\n! ' + wikEd.config.text['table heading'] + ' !! ' + wikEd.config.text['table heading'] + '\n
\n| ' + wikEd.config.text['table cell'] + '' + wikEd.config.text['table cell'] + '\n
\n| ' + wikEd.config.text['table cell'] + '' + wikEd.config.text['table cell'] + '\n
\n';

if (obj.focusLine.plain != '') {

obj.changed.plain = '\n' + obj.changed.plain + '\n';

}

}

break;

// wikify pasted

case 'wikEdPastedWikify':

// wikify already pasted content

if ( (wikEd.paste != null) && (wikEd.paste.polling == false) ) {

wikEd.paste.last = 'wikify';

wikEd.FrameExecCommand('undo');

obj = {};

wikEd.GetText(obj, 'selection', false);

obj.changed = obj.selection;

obj.changed.plain = wikEd.paste.wikified;

wikEd.PastedSwitch();

obj.changed.keepSel = true;

}

break;

// textify during pasting

case 'wikEdPasting':

if ( (wikEd.paste == null) || (wikEd.paste.polling == true) ) {

wikEd.PastedOff();

return

}

// textify, not changing obj.html

wikEd.Textify(obj.changed);

wikEd.paste.textified = obj.changed.plain;

wikEd.paste.last = 'textify';

// wikify, not changing obj.plain

wikEd.RemoveEmbracingTags(obj.changed);

wikEd.WikifyHTML(obj.changed, false);

var wikified = obj.changed.html;

wikified = wikified.replace(/\s*]*>\s*/g, '\n');

wikified = wikified.replace(/\xa0/g, ' ');

wikEd.paste.wikified = wikified;

// no textify/wikify option when pasting plain text

if (wikEd.paste.textified == wikEd.paste.wikified) {

wikEd.PastedOff();

}

obj.changed.keepSel = true;

break;

// textify pasted: strip html from recently pasted content

case 'wikEdPastedTextify':

if ( (wikEd.paste == null) || (wikEd.paste.polling == true) ) {

wikEd.PastedOff();

return

}

wikEd.FrameExecCommand('undo');

obj = {};

wikEd.GetText(obj, 'selection', false);

obj.changed = obj.selection;

obj.changed.plain = wikEd.paste.textified;

wikEd.paste.last = 'textify';

wikEd.PastedSwitch();

obj.changed.keepSel = true;

break;

// wikify

case 'wikEdWikify':

// wikify already done in wikEd.GetText()

break;

// textify: strip html from pasted content

case 'wikEdTextify':

wikEd.Textify(obj.changed);

if (parameters == 'shift') {

highlightNoTimeOut = true;

}

break;

// redirect

case 'wikEdRedirect':

var linkTarget;

if (obj.selection.plain != '') {

linkTarget = obj.selection.plain;

}

else if (obj.selectionWord.plain != '') {

linkTarget = obj.selectionWord.plain;

}

else {

linkTarget = '' + wikEd.config.text['redirect article link'] + '';

}

// remove link text after |

linkTarget = linkTarget.replace(/\|(.|\n)*()/, '');

// remove formatting and spaces

linkTarget = linkTarget.replace(/^(=+|'+|<[^>]*>|\s+|\[)+((.|\n)*?)(=+|'+|<[^>]*>|\s+|\])+$/g, '$2');

linkTarget = linkTarget.replace(/</g, '<');

linkTarget = linkTarget.replace(/>/g, '>');

linkTarget = linkTarget.replace(/\s+/g, ' ');

linkTarget = linkTarget.replace(/^\s+|\s+$/g, '');

obj.changed.plain = '#REDIRECT ' + linkTarget + '';

// append to summary

if (wikEd.wikiGlobals.wgUseAutomaticEditSummaries != true) {

if (wikEd.inputElement.summary != null) {

if ( (obj.selection.plain != ) || (obj.selectionWord.plain != ) ) {

wikEd.inputElement.summary.value = wikEd.inputElement.summary.value.replace(/#REDIRECT( \[\^\*\]\])?(, *)?/g, '');

wikEd.inputElement.summary.value = wikEd.AppendToSummary(wikEd.inputElement.summary.value, '#REDIRECT ' + linkTarget + '');

}

else {

wikEd.inputElement.summary.value = wikEd.AppendToSummary(wikEd.inputElement.summary.value, '#REDIRECT');

}

}

}

selectChanged = false;

break;

// find and replace

case 'wikEdFindPrev':

case 'wikEdFindNext':

case 'wikEdJumpPrev':

case 'wikEdJumpNext':

case 'wikEdReplacePrev':

case 'wikEdReplaceNext':

case 'wikEdFindAll':

case 'wikEdReplaceAll':

// get the find text

var findText;

// unescape <, >, and &

obj.changed.plain = obj.changed.plain.replace(/</g, '<');

obj.changed.plain = obj.changed.plain.replace(/>/g, '>');

obj.changed.plain = obj.changed.plain.replace(/&/g, '&');

// copy selection/word under cursor to find field

if ( (parameters == 'shift') && ( (buttonId == 'wikEdFindNext') || (buttonId == 'wikEdReplaceNext') ) ) {

if (/\n/.test(obj.changed.plain) == false) {

if (buttonId == 'wikEdFindNext') {

wikEd.inputElement.find.value = obj.changed.plain;

}

else {

wikEd.inputElement.replace.value = obj.changed.plain;

}

obj.changed.keepSel = true;

obj.changed.plain = null;

break;

}

}

// get the find text from the selection

if ( (buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdJumpNext') ) {

findText = obj.changed.plain;

if (obj.selection.plain == '') {

obj.changed.keepSel = true;

obj.changed.plain = null;

break;

}

}

// get the find text from the find field

else {

if (wikEd.inputElement.find.value != '') {

findText = wikEd.inputElement.find.value;

}

else {

obj.changed.plain = null;

break;

}

}

// get button status

var regExpChecked = wikEd.GetAttribute(wikEd.regExp, 'checked');

var caseSensitiveChecked = wikEd.GetAttribute(wikEd.caseSensitive, 'checked');

// get the replace text

var replaceText = wikEd.inputElement.replace.value;

// format the find and replace texts for a plain text search

var useRegExp = true;

if ( (regExpChecked == 'false') || (buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdJumpNext') ) {

useRegExp = false;

}

// format the replace text for a regular expression search

if ( (buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') || (buttonId == 'wikEdReplaceAll') ) {

if (useRegExp == true) {

// substitute \\ \n \r \t \' \" \127 \x1f \u12ef

replaceText = replaceText.replace(/\\\\/g, '\x00');

replaceText = replaceText.replace(/\\n/g, '\n');

replaceText = replaceText.replace(/\\r/g, '\r');

replaceText = replaceText.replace(/\\t/g, '\t');

replaceText = replaceText.replace(/\\'/g, '\'');

replaceText = replaceText.replace(/\\"/g, '\"');

replaceText = replaceText.replace(/\\([0-7]{3})/g,

function(p, p1) {

return(String.fromCharCode(parseInt(p1, 8)));

}

);

replaceText = replaceText.replace(/\\x([0-9a-fA-F]{2})/g,

function(p, p1) {

return(String.fromCharCode(parseInt(p1, 16)));

}

);

replaceText = replaceText.replace(/\\u([0-9a-fA-F]{4})/g,

function(p, p1) {

return(String.fromCharCode(parseInt(p1, 16)));

}

);

replaceText = replaceText.replace(/\x00/g, '\\');

}

}

// check the regexp

var replacedFlag = false;

var regExpFind;

if (

(buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') || (buttonId == 'wikEdReplaceAll') ||

(buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdFindNext') || (buttonId == 'wikEdFindAll')

) {

var regExpFindText = findText;

if (useRegExp != true){

regExpFindText = regExpFindText.replace(/([\\^$*+?.()\[\]{}:=!|,\-])/g, '\\$1');

}

var regExpFlags = 'gm';

if (caseSensitive != true) {

regExpFlags += 'i';

}

try {

regExpFind = new RegExp(regExpFindText, regExpFlags);

}

catch (error) {

return;

}

}

// replace all

if (buttonId == 'wikEdReplaceAll') {

if (regExpFind.test(obj.changed.plain)) {

obj.changed.plain = obj.changed.plain.replace(regExpFind, replaceText);

replacedFlag = true;

}

else {

obj.changed.plain = null;

}

}

// replace an existing selection

else if ( (buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') ) {

if (regExpFind.test(obj.selection.plain)) {

var replaced = obj.selection.plain.replace(regExpFind, replaceText);

if (obj.changed.plain != replaced) {

obj.changed.plain = replaced;

replacedFlag = true;

}

else {

obj.changed.plain = null;

}

}

else {

obj.changed.plain = null;

}

}

else if (

(buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdFindNext') ||

(buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdJumpNext')

) {

obj.changed.plain = null;

}

if (

(buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdFindNext') ||

(buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdJumpNext') ||

(buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') ||

(buttonId == 'wikEdFindAll')

) {

if (replacedFlag == false) {

// get direction

var backwards = false;

if ( (buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdReplacePrev') ) {

backwards = true;

}

// get case sensitive

var caseSensitive = false;

if (caseSensitiveChecked == 'true') {

caseSensitive = true;

}

// find all

if (buttonId == 'wikEdFindAll') {

var found;

var foundRanges = [];

// start at top of text

wikEd.RemoveAllRanges(obj.sel);

var range = wikEd.frameDocument.createRange();

if (wikEd.frameBody.firstChild != null) {

range.setStartBefore(wikEd.frameBody.firstChild);

}

range.collapse(true);

range = obj.sel.addRange(range);

// cycle through matches

var scrollTop = wikEd.frameBody.scrollTop;

do {

// wikEd.Find(obj, findText, caseSensitive, backwards, wrap, useRegExp)

found = wikEd.Find(obj, findText, caseSensitive, false, false, useRegExp);

if (found == true) {

foundRanges.push(obj.changed.range.cloneRange());

}

} while (found == true);

// scroll back

if (regExpChecked == 'false') {

wikEd.frameBody.scrollTop = scrollTop;

}

// add the found ranges, Webkit does not support multiple selections

wikEd.RemoveAllRanges(obj.sel);

for (var i = 0; i < foundRanges.length; i ++) {

obj.sel.addRange(foundRanges[i]);

}

obj.changed.plain = null;

selectChanged = false;

}

// normal find

else {

obj.selectChanged = selectChanged;

wikEd.Find(obj, findText, caseSensitive, backwards, true, useRegExp);

selectChanged = obj.selectChanged;

}

}

}

// escape <, >, and &

if (obj.changed.plain != null) {

obj.changed.plain = obj.changed.plain.replace(/&/g, '&');

obj.changed.plain = obj.changed.plain.replace(/

obj.changed.plain = obj.changed.plain.replace(/>/g, '>');

}

// save search history to settings

if ( (buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdFindNext') || (buttonId == 'wikEdFindAll') ) {

wikEd.AddToHistory('find');

}

if ( (buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') || (buttonId == 'wikEdReplaceAll') ) {

wikEd.AddToHistory('find');

wikEd.AddToHistory('replace');

}

obj.changed.keepSel = true;

break;

// fixbasic: fix characters, spaces, empty lines, certain headings, needed for all fixing functions

// to do: only certain changes in multiline tags: comments, tables, subst

case 'wikEdFixBasic':

wikEd.FixBasic(obj.changed);

obj.changed.keepSel = true;

break;

case 'wikEdFixPunct':

wikEd.FixPunct(obj.changed);

obj.changed.keepSel = true;

break;

case 'wikEdFixMath':

wikEd.FixMath(obj.changed);

obj.changed.keepSel = true;

break;

case 'wikEdFixChem':

wikEd.FixChem(obj.changed);

obj.changed.keepSel = true;

break;

case 'wikEdFixUnicode':

wikEd.FixUnicode(obj.changed);

obj.changed.keepSel = true;

break;

case 'wikEdFixRedirect':

wikEd.FixRedirectCall(obj.changed);

return;

case 'wikEdFixRedirectReplace':

wikEd.FixRedirectReplace(obj.changed);

obj.changed.keepSel = true;

break;

case 'wikEdFixUnits':

wikEd.FixUnits(obj.changed);

obj.changed.keepSel = true;

break;

case 'wikEdFixDashes':

wikEd.FixDashes(obj.changed);

obj.changed.keepSel = true;

break;

case 'wikEdFixHtml':

wikEd.FixHTML(obj.changed);

obj.changed.keepSel = true;

break;

case 'wikEdFixRegExTypo':

if ( (wikEd.config.regExTypoFix == true) && (wikEd.typoRulesFind.length > 0) ) {

wikEd.FixTypos(obj.changed);

}

else {

obj.changed.plain = null;

}

obj.changed.keepSel = true;

break;

case 'wikEdFixCaps':

wikEd.FixCaps(obj.changed);

obj.changed.keepSel = true;

break;

case 'wikEdFixAll':

wikEd.FixAll(obj.changed);

obj.changed.keepSel = true;

break;

// source on

case 'wikEdSource':

obj.changed.plain = obj.changed.code;

obj.changed.plain = obj.changed.plain.replace(/(<(br|p)\b[^>]*>)/g, '$1\n\n');

obj.changed.plain = obj.changed.plain.replace(/&/g, '&');

obj.changed.plain = obj.changed.plain.replace(/

obj.changed.plain = obj.changed.plain.replace(/>/g, '>');

highlightSyntax = false;

break;

// insert tags

case 'wikEdInsertTags':

var tagOpen = parameters[0] || '';

var tagClose = parameters[1] || '';

var sampleText = parameters[2] || '';

tagOpen = tagOpen.replace(/&/g, '&');

tagOpen = tagOpen.replace(/

tagOpen = tagOpen.replace(/>/g, '>');

tagClose = tagClose.replace(/&/g, '&');

tagClose = tagClose.replace(/

tagClose = tagClose.replace(/>/g, '>');

sampleText = sampleText.replace(/&/g, '&');

sampleText = sampleText.replace(/

sampleText = sampleText.replace(/>/g, '>');

// single string to insert

if ( (tagOpen.length > 0) && (tagClose.length == 0) && (sampleText.length == 0) ) {

obj.changed = obj.cursor;

obj.changed.plain = tagOpen;

}

else if ( (tagOpen.length == 0) && (tagClose.length == 0) && (sampleText.length > 0) ) {

obj.changed = obj.cursor;

obj.changed.plain = sampleText;

}

// opening and closing strings

else if ( (obj.changed.plain == '') && (sampleText.length > 0) ) {

obj.changed.plain = tagOpen + sampleText + tagClose;

// select sample text

selectChangedText = sampleText;

obj.changed.keepSel = true;

}

else {

obj.changed.plain = tagOpen + obj.changed.plain + tagClose;

}

break;

// convert wiki tables to html // {{TABLE}}

case 'wikEdTablify':

obj.changed.keepSel = true;

if (wikEd.tableMode == true) {

wikEd.WikiTableToHtml(obj.changed);

}

break;

// update text view using current control button settings // {{TABLE}}

case 'wikEdUpdateAll':

obj.changed.keepSel = true;

if ( (parameters != null) && (parameters.keepSel == false) ) {

obj.changed.keepSel = false;

}

break;

// custom edit functions

default:

if (CustomHandler != null) {

CustomHandler(obj);

}

else {

alert('Unknown edit function \ + buttonId + '\);

}

break;

}

// pause frame spellchecking

var pauseFrameSpellchecking = false;

var frameSpellchecking = wikEd.frameBody.spellcheck;

if (frameSpellchecking == true) {

var wholeLength = 0;

var changedLength = 0;

if (obj.whole != null) {

if (obj.whole.plain != null) {

wholeLength = obj.whole.plain.length;

}

}

if (obj.changed.plain != null) {

changedLength = obj.changed.plain.length;

}

if ( (changedLength > 10000) || (wholeLength > 10000) ) {

pauseFrameSpellchecking = true;

wikEd.frameBody.spellcheck = false;

}

}

// get the scroll position

var frameScrollTop = wikEd.frameBody.scrollTop;

var frameScrollLeft = wikEd.frameBody.scrollLeft;

// update the selection ranges, do not add any text changes

if (obj.changed.plain == null) {

if (buttonId != 'wikEdFindAll') {

wikEd.RemoveAllRanges(obj.sel);

obj.sel.addRange(obj.changed.range);

// scroll the selected text into the viewport

if (selectChanged != false) {

wikEd.ScrollToSelection();

}

}

}

// apply text changes

else {

// a text change erases the last version for redo all

if ( (buttonId != 'wikEdUndo') && (buttonId != 'wikEdRedo') && (buttonId != 'wikEdUndoAll') ) {

wikEd.lastVersion = null;

}

// highlight the syntax

obj.html = obj.changed.plain;

if (highlightSyntax == true) {

if (obj.changed.from == 'whole') {

obj.whole = true;

}

wikEd.HighlightSyntax(obj, highlightNoTimeOut);

}

// at least highlight tab characters

else {

obj.html = obj.html.replace(/(\t)/g, '$1');

}

// display multiple blanks as blank- 

obj.html = obj.html.replace(/(^|\n) /g, '$1 ');

obj.html = obj.html.replace(/ (\n|$)/g, ' $1');

obj.html = obj.html.replace(/ {2}/g, '  ');

obj.html = obj.html.replace(/ {2}/g, '  ');

// newlines to

obj.html = obj.html.replace(/\n/g, '
');

// make changed range text the current selection

wikEd.RemoveAllRanges(obj.sel);

var range = obj.changed.range;

obj.sel.addRange(range);

// replace the selection with changed text

// Opera 9.50beta bug: inserthtml removes blanks and generates consecutive text nodes

if ( (obj.changed.keepSel == false) && (obj.html == '') && (obj.sel.isCollapsed == false) ) {

wikEd.FrameExecCommand('delete');

}

else if ( (obj.changed.keepSel == false) || (obj.changed.from == 'whole') ) {

wikEd.FrameExecCommand('inserthtml', obj.html);

}

else {

wikEd.insertCounter ++;

var reselectBefore = '';

var reselectAfter = '';

wikEd.FrameExecCommand('inserthtml', reselectBefore + obj.html + reselectAfter);

}

// select the whole text after replacing the whole text and scroll to same height

if (obj.changed.from == 'whole') {

wikEd.RemoveAllRanges(obj.sel);

var range = wikEd.frameDocument.createRange();

range.setStartBefore(wikEd.frameBody.firstChild);

range.setEndAfter(wikEd.frameBody.lastChild);

obj.sel.addRange(range);

selectChanged = false;

// scheduling needed for Firefox 9.0.1

setTimeout( function() { wikEd.frameBody.scrollTop = frameScrollTop; }, 0);

}

// select the changed text and scroll it into the viewport

else if (selectChanged != false) {

wikEd.RemoveAllRanges(obj.sel);

var range = wikEd.frameDocument.createRange();

var startNodeReselect = wikEd.frameDocument.getElementById('wikEdScrollBefore' + wikEd.insertCounter);

var endNodeReselect = wikEd.frameDocument.getElementById('wikEdScrollAfter' + wikEd.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.setEndAfter(endNodeReselect);

obj.sel.addRange(range);

wikEd.ScrollToNodes(startNodeReselect, endNodeReselect);

}

}

// remove selection, keep whole text auto-selection as warning

if (

( (obj.changed.keepSel != true) && (obj.changed.from != 'whole') ) ||

(obj.changed.keepSel == false) ||

(buttonId == 'wikEdRedirect') ||

( (buttonId == 'wikEdWikify') && (parameters == 'whole') )

) {

if (obj.sel.rangeCount == 0) {

obj.sel.collapse(wikEd.frameBody, 0);

}

else {

obj.sel.collapseToEnd();

}

// focus edit area to continue editing as there is no selection that would be overwritten

wikEd.frameWindow.focus();

wikEd.keepSelRange = null;

}

// save curently selected range

else {

wikEd.keepSelRange = obj.sel.getRangeAt(obj.sel.rangeCount - 1);

}

// reset button to active, reset cursor

if (buttonObj != null) {

if (buttonObj.className != 'wikEdButtonInactive') {

buttonObj.className = 'wikEdButton';

}

buttonObj.style.cursor = '';

}

// grey out inactive buttons

wikEd.InactiveButtons();

// add event handlers to unhide refs and templates

if ( (highlightSyntax == true) && (obj.changed.plain != null) ) {

// add ref and template names to hide buttons

wikEd.HighlightNamedHideButtons();

// add event handlers to unhide refs and templates

wikEd.HideAddHandlers();

// add event handlers to make highlighted frame links ctrl-clickable

wikEd.LinkifyAddHandlers();

}

// resume frame spellchecking

if (pauseFrameSpellchecking == true) {

wikEd.frameBody.spellcheck = true;

}

return;

};

//

// wikEd.LocalPreviewAjaxHandler: process the returned article preview

//

wikEd.LocalPreviewAjaxHandler = function(ajax) {

wikEd.previewIsAjax = true;

// get response

var html = ajax.responseText;

// livepreview

if (html.indexOf('') != -1) {

html = html.replace(/\s*<\/livepreview>\s*()/, '');

html = html.replace(/\s*<\/preview>\s*()/, '');

html = html.replace(/</g, '<');

html = html.replace(/>/g, '>');

html = html.replace(/"/g, '"');

html = html.replace(/'/g, '\'');

html = html.replace(/&/g, '&');

html = html.replace(/(.|\n)*

(.|\n)*?<\/div>/, '');

}

// full preview page

else {

// attach