changeset 5619:92e6d4ce7049

Merge
author Eugene Syromyatnikov <evgsyr@gmail.com>
date Tue, 09 Mar 2010 18:06:25 +0300
parents b86af2e26465 (current diff) 9c27b8589342 (diff)
children a02d87f66ce7
files
diffstat 341 files changed, 8042 insertions(+), 2776 deletions(-) [+]
line wrap: on
line diff
--- a/MoinMoin/Page.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/Page.py	Tue Mar 09 18:06:25 2010 +0300
@@ -41,7 +41,6 @@
 
 from MoinMoin import config, caching, user, util, wikiutil
 from MoinMoin.logfile import eventlog
-from MoinMoin.util import filesys
 
 def is_cache_exception(e):
     args = e.args
@@ -1405,7 +1404,7 @@
         if self.page_name:
             rev_dir = self.getPagePath('revisions', check_create=0)
             if os.path.isdir(rev_dir):
-                for rev in filesys.dclistdir(rev_dir):
+                for rev in os.listdir(rev_dir):
                     try:
                         revint = int(rev)
                         revisions.append(revint)
@@ -1826,7 +1825,7 @@
         @return: dict of page names using file system encoding
         """
         pages = {}
-        for name in filesys.dclistdir(path):
+        for name in os.listdir(path):
             # Filter non-pages in quoted wiki names
             # List all pages in pages directory - assume flat namespace.
             # We exclude everything starting with '.' to get rid of . and ..
--- a/MoinMoin/_tests/test_user.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/_tests/test_user.py	Tue Mar 09 18:06:25 2010 +0300
@@ -11,7 +11,6 @@
 import py
 
 from MoinMoin import user, caching
-from MoinMoin.util import filesys
 
 
 class TestEncodePassword(object):
@@ -46,8 +45,6 @@
         self.request.cookies = {}
         self.request.user = user.User(self.request)
 
-        # Prevent user list caching - we create and delete users too fast for that.
-        filesys.dcdisable()
         self.user = None
 
     def teardown_method(self, method):
@@ -75,9 +72,6 @@
         except:
             pass
 
-        # Prevent user list caching - we create and delete users too fast for that.
-        filesys.dcdisable()
-
     def testAsciiPassword(self):
         """ user: login with ascii password """
         # Create test user
--- a/MoinMoin/caching.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/caching.py	Tue Mar 09 18:06:25 2010 +0300
@@ -41,7 +41,7 @@
 def get_cache_list(request, arena, scope):
     arena_dir = get_arena_dir(request, arena, scope)
     try:
-        return filesys.dclistdir(arena_dir)
+        return os.listdir(arena_dir)
     except OSError:
         return []
 
--- a/MoinMoin/support/pygments/__init__.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/__init__.py	Tue Mar 09 18:06:25 2010 +0300
@@ -26,13 +26,13 @@
     :license: BSD, see LICENSE for details.
 """
 
-__version__ = '1.2.2'
+__version__ = '1.3.1'
 __docformat__ = 'restructuredtext'
 
 __all__ = ['lex', 'format', 'highlight']
 
 
-import sys, os
+import sys
 
 from pygments.util import StringIO, BytesIO
 
--- a/MoinMoin/support/pygments/filters/__init__.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/filters/__init__.py	Tue Mar 09 18:06:25 2010 +0300
@@ -9,17 +9,14 @@
     :copyright: Copyright 2006-2010 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
-try:
-    set
-except NameError:
-    from sets import Set as set
 
 import re
+
 from pygments.token import String, Comment, Keyword, Name, Error, Whitespace, \
     string_to_tokentype
 from pygments.filter import Filter
-from pygments.util import get_list_opt, get_int_opt, get_bool_opt, get_choice_opt, \
-     ClassNotFound, OptionError
+from pygments.util import get_list_opt, get_int_opt, get_bool_opt, \
+     get_choice_opt, ClassNotFound, OptionError
 from pygments.plugin import find_plugin_filters
 
 
--- a/MoinMoin/support/pygments/formatters/__init__.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/formatters/__init__.py	Tue Mar 09 18:06:25 2010 +0300
@@ -13,7 +13,7 @@
 
 from pygments.formatters._mapping import FORMATTERS
 from pygments.plugin import find_plugin_formatters
-from pygments.util import docstring_headline, ClassNotFound
+from pygments.util import ClassNotFound
 
 ns = globals()
 for fcls in FORMATTERS:
--- a/MoinMoin/support/pygments/formatters/html.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/formatters/html.py	Tue Mar 09 18:06:25 2010 +0300
@@ -8,13 +8,10 @@
     :copyright: Copyright 2006-2010 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
-import sys, os
-import StringIO
 
-try:
-    set
-except NameError:
-    from sets import Set as set
+import os
+import sys
+import StringIO
 
 from pygments.formatter import Formatter
 from pygments.token import Token, Text, STANDARD_TYPES
--- a/MoinMoin/support/pygments/lexer.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexer.py	Tue Mar 09 18:06:25 2010 +0300
@@ -10,11 +10,6 @@
 """
 import re
 
-try:
-    set
-except NameError:
-    from sets import Set as set
-
 from pygments.filter import apply_filters, Filter
 from pygments.filters import get_filter_by_name
 from pygments.token import Error, Text, Other, _TokenType
@@ -23,7 +18,7 @@
 
 
 __all__ = ['Lexer', 'RegexLexer', 'ExtendedRegexLexer', 'DelegatingLexer',
-           'LexerContext', 'include', 'flags', 'bygroups', 'using', 'this']
+           'LexerContext', 'include', 'bygroups', 'using', 'this']
 
 
 _default_analyse = staticmethod(lambda x: 0.0)
@@ -51,6 +46,10 @@
     ``stripall``
         Strip all leading and trailing whitespace from the input
         (default: False).
+    ``ensurenl``
+        Make sure that the input ends with a newline (default: True).  This
+        is required for some lexers that consume input linewise.
+        *New in Pygments 1.3.*
     ``tabsize``
         If given and greater than 0, expand tabs in the input (default: 0).
     ``encoding``
@@ -82,6 +81,7 @@
         self.options = options
         self.stripnl = get_bool_opt(options, 'stripnl', True)
         self.stripall = get_bool_opt(options, 'stripall', False)
+        self.ensurenl = get_bool_opt(options, 'ensurenl', True)
         self.tabsize = get_int_opt(options, 'tabsize', 0)
         self.encoding = options.get('encoding', 'latin1')
         # self.encoding = options.get('inencoding', None) or self.encoding
@@ -155,7 +155,7 @@
             text = text.strip('\n')
         if self.tabsize > 0:
             text = text.expandtabs(self.tabsize)
-        if not text.endswith('\n'):
+        if self.ensurenl and not text.endswith('\n'):
             text += '\n'
 
         def streamer():
@@ -646,9 +646,15 @@
         realpos += len(v) - oldi
 
     # leftover tokens
-    if insleft:
+    while insleft:
         # no normal tokens, set realpos to zero
         realpos = realpos or 0
         for p, t, v in itokens:
             yield realpos, t, v
             realpos += len(v)
+        try:
+            index, itokens = insertions.next()
+        except StopIteration:
+            insleft = False
+            break  # not strictly necessary
+
--- a/MoinMoin/support/pygments/lexers/__init__.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexers/__init__.py	Tue Mar 09 18:06:25 2010 +0300
@@ -8,16 +8,12 @@
     :copyright: Copyright 2006-2010 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
+
 import sys
+import types
 import fnmatch
-import types
 from os.path import basename
 
-try:
-    set
-except NameError:
-    from sets import Set as set
-
 from pygments.lexers._mapping import LEXERS
 from pygments.plugin import find_plugin_lexers
 from pygments.util import ClassNotFound, bytes
@@ -223,7 +219,6 @@
         raise AttributeError(name)
 
 
-import sys
 oldmod = sys.modules['pygments.lexers']
 newmod = _automodule('pygments.lexers')
 newmod.__dict__.update(oldmod.__dict__)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/support/pygments/lexers/_asybuiltins.py	Tue Mar 09 18:06:25 2010 +0300
@@ -0,0 +1,1645 @@
+# -*- coding: utf-8 -*-
+"""
+    pygments.lexers._asybuiltins
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    This file contains the asy-function names and asy-variable names of
+    Asymptote.
+
+    Do not edit the ASYFUNCNAME and ASYVARNAME sets by hand.
+    TODO: perl/python script in Asymptote SVN similar to asy-list.pl but only
+    for function and variable names.
+
+    :copyright: Copyright 2006-2010 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+ASYFUNCNAME = set([
+    'AND',
+    'Arc',
+    'ArcArrow',
+    'ArcArrows',
+    'Arrow',
+    'Arrows',
+    'Automatic',
+    'AvantGarde',
+    'BBox',
+    'BWRainbow',
+    'BWRainbow2',
+    'Bar',
+    'Bars',
+    'BeginArcArrow',
+    'BeginArrow',
+    'BeginBar',
+    'BeginDotMargin',
+    'BeginMargin',
+    'BeginPenMargin',
+    'Blank',
+    'Bookman',
+    'Bottom',
+    'BottomTop',
+    'Bounds',
+    'Break',
+    'Broken',
+    'BrokenLog',
+    'Ceil',
+    'Circle',
+    'CircleBarIntervalMarker',
+    'Cos',
+    'Courier',
+    'CrossIntervalMarker',
+    'DefaultFormat',
+    'DefaultLogFormat',
+    'Degrees',
+    'Dir',
+    'DotMargin',
+    'DotMargins',
+    'Dotted',
+    'Draw',
+    'Drawline',
+    'Embed',
+    'EndArcArrow',
+    'EndArrow',
+    'EndBar',
+    'EndDotMargin',
+    'EndMargin',
+    'EndPenMargin',
+    'Fill',
+    'FillDraw',
+    'Floor',
+    'Format',
+    'Full',
+    'Gaussian',
+    'Gaussrand',
+    'Gaussrandpair',
+    'Gradient',
+    'Grayscale',
+    'Helvetica',
+    'Hermite',
+    'HookHead',
+    'InOutTicks',
+    'InTicks',
+    'J',
+    'Label',
+    'Landscape',
+    'Left',
+    'LeftRight',
+    'LeftTicks',
+    'Legend',
+    'Linear',
+    'Link',
+    'Log',
+    'LogFormat',
+    'Margin',
+    'Margins',
+    'Mark',
+    'MidArcArrow',
+    'MidArrow',
+    'NOT',
+    'NewCenturySchoolBook',
+    'NoBox',
+    'NoMargin',
+    'NoModifier',
+    'NoTicks',
+    'NoTicks3',
+    'NoZero',
+    'NoZeroFormat',
+    'None',
+    'OR',
+    'OmitFormat',
+    'OmitTick',
+    'OutTicks',
+    'Ox',
+    'Oy',
+    'Palatino',
+    'PaletteTicks',
+    'Pen',
+    'PenMargin',
+    'PenMargins',
+    'Pentype',
+    'Portrait',
+    'RadialShade',
+    'Rainbow',
+    'Range',
+    'Relative',
+    'Right',
+    'RightTicks',
+    'Rotate',
+    'Round',
+    'SQR',
+    'Scale',
+    'ScaleX',
+    'ScaleY',
+    'ScaleZ',
+    'Seascape',
+    'Shift',
+    'Sin',
+    'Slant',
+    'Spline',
+    'StickIntervalMarker',
+    'Straight',
+    'Symbol',
+    'Tan',
+    'TeXify',
+    'Ticks',
+    'Ticks3',
+    'TildeIntervalMarker',
+    'TimesRoman',
+    'Top',
+    'TrueMargin',
+    'UnFill',
+    'UpsideDown',
+    'Wheel',
+    'X',
+    'XEquals',
+    'XOR',
+    'XY',
+    'XYEquals',
+    'XYZero',
+    'XYgrid',
+    'XZEquals',
+    'XZZero',
+    'XZero',
+    'XZgrid',
+    'Y',
+    'YEquals',
+    'YXgrid',
+    'YZ',
+    'YZEquals',
+    'YZZero',
+    'YZero',
+    'YZgrid',
+    'Z',
+    'ZX',
+    'ZXgrid',
+    'ZYgrid',
+    'ZapfChancery',
+    'ZapfDingbats',
+    '_cputime',
+    '_draw',
+    '_eval',
+    '_image',
+    '_labelpath',
+    '_projection',
+    '_strokepath',
+    '_texpath',
+    'aCos',
+    'aSin',
+    'aTan',
+    'abort',
+    'abs',
+    'accel',
+    'acos',
+    'acosh',
+    'acot',
+    'acsc',
+    'add',
+    'addArrow',
+    'addMargins',
+    'addSaveFunction',
+    'addnode',
+    'addnodes',
+    'addpenarc',
+    'addpenline',
+    'addseg',
+    'adjust',
+    'alias',
+    'align',
+    'all',
+    'altitude',
+    'angabscissa',
+    'angle',
+    'angpoint',
+    'animate',
+    'annotate',
+    'anticomplementary',
+    'antipedal',
+    'apply',
+    'approximate',
+    'arc',
+    'arcarrowsize',
+    'arccircle',
+    'arcdir',
+    'arcfromcenter',
+    'arcfromfocus',
+    'arclength',
+    'arcnodesnumber',
+    'arcpoint',
+    'arcsubtended',
+    'arcsubtendedcenter',
+    'arctime',
+    'arctopath',
+    'array',
+    'arrow',
+    'arrow2',
+    'arrowbase',
+    'arrowbasepoints',
+    'arrowsize',
+    'asec',
+    'asin',
+    'asinh',
+    'ask',
+    'assert',
+    'asy',
+    'asycode',
+    'asydir',
+    'asyfigure',
+    'asyfilecode',
+    'asyinclude',
+    'asywrite',
+    'atan',
+    'atan2',
+    'atanh',
+    'atbreakpoint',
+    'atexit',
+    'atime',
+    'attach',
+    'attract',
+    'atupdate',
+    'autoformat',
+    'autoscale',
+    'autoscale3',
+    'axes',
+    'axes3',
+    'axialshade',
+    'axis',
+    'axiscoverage',
+    'azimuth',
+    'babel',
+    'background',
+    'bangles',
+    'bar',
+    'barmarksize',
+    'barsize',
+    'basealign',
+    'baseline',
+    'bbox',
+    'beep',
+    'begin',
+    'beginclip',
+    'begingroup',
+    'beginpoint',
+    'between',
+    'bevel',
+    'bezier',
+    'bezierP',
+    'bezierPP',
+    'bezierPPP',
+    'bezulate',
+    'bibliography',
+    'bibliographystyle',
+    'binarytree',
+    'binarytreeNode',
+    'binomial',
+    'binput',
+    'bins',
+    'bisector',
+    'bisectorpoint',
+    'blend',
+    'boutput',
+    'box',
+    'bqe',
+    'breakpoint',
+    'breakpoints',
+    'brick',
+    'buildRestoreDefaults',
+    'buildRestoreThunk',
+    'buildcycle',
+    'bulletcolor',
+    'canonical',
+    'canonicalcartesiansystem',
+    'cartesiansystem',
+    'case1',
+    'case2',
+    'case3',
+    'cbrt',
+    'cd',
+    'ceil',
+    'center',
+    'centerToFocus',
+    'centroid',
+    'cevian',
+    'change2',
+    'changecoordsys',
+    'checkSegment',
+    'checkconditionlength',
+    'checker',
+    'checklengths',
+    'checkposition',
+    'checktriangle',
+    'choose',
+    'circle',
+    'circlebarframe',
+    'circlemarkradius',
+    'circlenodesnumber',
+    'circumcenter',
+    'circumcircle',
+    'clamped',
+    'clear',
+    'clip',
+    'clipdraw',
+    'close',
+    'cmyk',
+    'code',
+    'colatitude',
+    'collect',
+    'collinear',
+    'color',
+    'colorless',
+    'colors',
+    'colorspace',
+    'comma',
+    'compassmark',
+    'complement',
+    'complementary',
+    'concat',
+    'concurrent',
+    'cone',
+    'conic',
+    'conicnodesnumber',
+    'conictype',
+    'conj',
+    'connect',
+    'containmentTree',
+    'contains',
+    'contour',
+    'contour3',
+    'controlSpecifier',
+    'convert',
+    'coordinates',
+    'coordsys',
+    'copy',
+    'cos',
+    'cosh',
+    'cot',
+    'countIntersections',
+    'cputime',
+    'crop',
+    'cropcode',
+    'cross',
+    'crossframe',
+    'crosshatch',
+    'crossmarksize',
+    'csc',
+    'cubicroots',
+    'curabscissa',
+    'curlSpecifier',
+    'curpoint',
+    'currentarrow',
+    'currentexitfunction',
+    'currentmomarrow',
+    'currentpolarconicroutine',
+    'curve',
+    'cut',
+    'cutafter',
+    'cutbefore',
+    'cyclic',
+    'cylinder',
+    'debugger',
+    'deconstruct',
+    'defaultdir',
+    'defaultformat',
+    'defaultpen',
+    'defined',
+    'degenerate',
+    'degrees',
+    'delete',
+    'deletepreamble',
+    'determinant',
+    'diagonal',
+    'diamond',
+    'diffdiv',
+    'dir',
+    'dirSpecifier',
+    'dirtime',
+    'display',
+    'distance',
+    'divisors',
+    'do_overpaint',
+    'dot',
+    'dotframe',
+    'dotsize',
+    'downcase',
+    'draw',
+    'drawAll',
+    'drawDoubleLine',
+    'drawFermion',
+    'drawGhost',
+    'drawGluon',
+    'drawMomArrow',
+    'drawPhoton',
+    'drawScalar',
+    'drawVertex',
+    'drawVertexBox',
+    'drawVertexBoxO',
+    'drawVertexBoxX',
+    'drawVertexO',
+    'drawVertexOX',
+    'drawVertexTriangle',
+    'drawVertexTriangleO',
+    'drawVertexX',
+    'drawarrow',
+    'drawarrow2',
+    'drawline',
+    'drawtick',
+    'duplicate',
+    'elle',
+    'ellipse',
+    'ellipsenodesnumber',
+    'embed',
+    'embed3',
+    'empty',
+    'enclose',
+    'end',
+    'endScript',
+    'endclip',
+    'endgroup',
+    'endl',
+    'endpoint',
+    'endpoints',
+    'eof',
+    'eol',
+    'equation',
+    'equations',
+    'erase',
+    'erasestep',
+    'erf',
+    'erfc',
+    'error',
+    'errorbar',
+    'errorbars',
+    'eval',
+    'excenter',
+    'excircle',
+    'exit',
+    'exitXasyMode',
+    'exitfunction',
+    'exp',
+    'expfactors',
+    'expi',
+    'expm1',
+    'exradius',
+    'extend',
+    'extension',
+    'extouch',
+    'fabs',
+    'factorial',
+    'fermat',
+    'fft',
+    'fhorner',
+    'figure',
+    'file',
+    'filecode',
+    'fill',
+    'filldraw',
+    'filloutside',
+    'fillrule',
+    'filltype',
+    'find',
+    'finite',
+    'finiteDifferenceJacobian',
+    'firstcut',
+    'firstframe',
+    'fit',
+    'fit2',
+    'fixedscaling',
+    'floor',
+    'flush',
+    'fmdefaults',
+    'fmod',
+    'focusToCenter',
+    'font',
+    'fontcommand',
+    'fontsize',
+    'foot',
+    'format',
+    'frac',
+    'frequency',
+    'fromCenter',
+    'fromFocus',
+    'fspline',
+    'functionshade',
+    'gamma',
+    'generate_random_backtrace',
+    'generateticks',
+    'gergonne',
+    'getc',
+    'getint',
+    'getpair',
+    'getreal',
+    'getstring',
+    'gettriple',
+    'gluon',
+    'gouraudshade',
+    'graph',
+    'graphic',
+    'gray',
+    'grestore',
+    'grid',
+    'grid3',
+    'gsave',
+    'halfbox',
+    'hatch',
+    'hdiffdiv',
+    'hermite',
+    'hex',
+    'histogram',
+    'history',
+    'hline',
+    'hprojection',
+    'hsv',
+    'hyperbola',
+    'hyperbolanodesnumber',
+    'hyperlink',
+    'hypot',
+    'identity',
+    'image',
+    'incenter',
+    'incentral',
+    'incircle',
+    'increasing',
+    'incrementposition',
+    'indexedTransform',
+    'indexedfigure',
+    'initXasyMode',
+    'initdefaults',
+    'input',
+    'inradius',
+    'insert',
+    'inside',
+    'integrate',
+    'interactive',
+    'interior',
+    'interp',
+    'interpolate',
+    'intersect',
+    'intersection',
+    'intersectionpoint',
+    'intersectionpoints',
+    'intersections',
+    'intouch',
+    'inverse',
+    'inversion',
+    'invisible',
+    'is3D',
+    'isDuplicate',
+    'isogonal',
+    'isogonalconjugate',
+    'isotomic',
+    'isotomicconjugate',
+    'isparabola',
+    'italic',
+    'item',
+    'key',
+    'kurtosis',
+    'kurtosisexcess',
+    'label',
+    'labelaxis',
+    'labelmargin',
+    'labelpath',
+    'labels',
+    'labeltick',
+    'labelx',
+    'labelx3',
+    'labely',
+    'labely3',
+    'labelz',
+    'labelz3',
+    'lastcut',
+    'latex',
+    'latitude',
+    'latticeshade',
+    'layer',
+    'layout',
+    'ldexp',
+    'leastsquares',
+    'legend',
+    'legenditem',
+    'length',
+    'lift',
+    'light',
+    'limits',
+    'line',
+    'linear',
+    'linecap',
+    'lineinversion',
+    'linejoin',
+    'linemargin',
+    'lineskip',
+    'linetype',
+    'linewidth',
+    'link',
+    'list',
+    'lm_enorm',
+    'lm_evaluate_default',
+    'lm_lmdif',
+    'lm_lmpar',
+    'lm_minimize',
+    'lm_print_default',
+    'lm_print_quiet',
+    'lm_qrfac',
+    'lm_qrsolv',
+    'locale',
+    'locate',
+    'locatefile',
+    'location',
+    'log',
+    'log10',
+    'log1p',
+    'logaxiscoverage',
+    'longitude',
+    'lookup',
+    'magnetize',
+    'makeNode',
+    'makedraw',
+    'makepen',
+    'map',
+    'margin',
+    'markangle',
+    'markangleradius',
+    'markanglespace',
+    'markarc',
+    'marker',
+    'markinterval',
+    'marknodes',
+    'markrightangle',
+    'markuniform',
+    'mass',
+    'masscenter',
+    'massformat',
+    'math',
+    'max',
+    'max3',
+    'maxbezier',
+    'maxbound',
+    'maxcoords',
+    'maxlength',
+    'maxratio',
+    'maxtimes',
+    'mean',
+    'medial',
+    'median',
+    'midpoint',
+    'min',
+    'min3',
+    'minbezier',
+    'minbound',
+    'minipage',
+    'minratio',
+    'mintimes',
+    'miterlimit',
+    'momArrowPath',
+    'momarrowsize',
+    'monotonic',
+    'multifigure',
+    'nativeformat',
+    'natural',
+    'needshipout',
+    'newl',
+    'newpage',
+    'newslide',
+    'newton',
+    'newtree',
+    'nextframe',
+    'nextnormal',
+    'nextpage',
+    'nib',
+    'nodabscissa',
+    'none',
+    'norm',
+    'normalvideo',
+    'notaknot',
+    'nowarn',
+    'numberpage',
+    'nurb',
+    'object',
+    'offset',
+    'onpath',
+    'opacity',
+    'opposite',
+    'orientation',
+    'orig_circlenodesnumber',
+    'orig_circlenodesnumber1',
+    'orig_draw',
+    'orig_ellipsenodesnumber',
+    'orig_ellipsenodesnumber1',
+    'orig_hyperbolanodesnumber',
+    'orig_parabolanodesnumber',
+    'origin',
+    'orthic',
+    'orthocentercenter',
+    'outformat',
+    'outline',
+    'outprefix',
+    'output',
+    'overloadedMessage',
+    'overwrite',
+    'pack',
+    'pad',
+    'pairs',
+    'palette',
+    'parabola',
+    'parabolanodesnumber',
+    'parallel',
+    'partialsum',
+    'path',
+    'path3',
+    'pattern',
+    'pause',
+    'pdf',
+    'pedal',
+    'periodic',
+    'perp',
+    'perpendicular',
+    'perpendicularmark',
+    'phantom',
+    'phi1',
+    'phi2',
+    'phi3',
+    'photon',
+    'piecewisestraight',
+    'point',
+    'polar',
+    'polarconicroutine',
+    'polargraph',
+    'polygon',
+    'postcontrol',
+    'postscript',
+    'pow10',
+    'ppoint',
+    'prc',
+    'prc0',
+    'precision',
+    'precontrol',
+    'prepend',
+    'print_random_addresses',
+    'project',
+    'projection',
+    'purge',
+    'pwhermite',
+    'quadrant',
+    'quadraticroots',
+    'quantize',
+    'quarticroots',
+    'quotient',
+    'radialshade',
+    'radians',
+    'radicalcenter',
+    'radicalline',
+    'radius',
+    'rand',
+    'randompath',
+    'rd',
+    'readline',
+    'realmult',
+    'realquarticroots',
+    'rectangle',
+    'rectangular',
+    'rectify',
+    'reflect',
+    'relabscissa',
+    'relative',
+    'relativedistance',
+    'reldir',
+    'relpoint',
+    'reltime',
+    'remainder',
+    'remark',
+    'removeDuplicates',
+    'rename',
+    'replace',
+    'report',
+    'resetdefaultpen',
+    'restore',
+    'restoredefaults',
+    'reverse',
+    'reversevideo',
+    'rf',
+    'rfind',
+    'rgb',
+    'rgba',
+    'rgbint',
+    'rms',
+    'rotate',
+    'rotateO',
+    'rotation',
+    'round',
+    'roundbox',
+    'roundedpath',
+    'roundrectangle',
+    'samecoordsys',
+    'sameside',
+    'sample',
+    'save',
+    'savedefaults',
+    'saveline',
+    'scale',
+    'scale3',
+    'scaleO',
+    'scaleT',
+    'scaleless',
+    'scientific',
+    'search',
+    'searchtree',
+    'sec',
+    'secondaryX',
+    'secondaryY',
+    'seconds',
+    'section',
+    'sector',
+    'seek',
+    'seekeof',
+    'segment',
+    'sequence',
+    'setpens',
+    'sgn',
+    'sgnd',
+    'sharpangle',
+    'sharpdegrees',
+    'shift',
+    'shiftless',
+    'shipout',
+    'shipout3',
+    'show',
+    'side',
+    'simeq',
+    'simpson',
+    'sin',
+    'single',
+    'sinh',
+    'size',
+    'size3',
+    'skewness',
+    'skip',
+    'slant',
+    'sleep',
+    'slope',
+    'slopefield',
+    'solve',
+    'solveBVP',
+    'sort',
+    'sourceline',
+    'sphere',
+    'split',
+    'sqrt',
+    'square',
+    'srand',
+    'standardizecoordsys',
+    'startScript',
+    'startTrembling',
+    'stdev',
+    'step',
+    'stickframe',
+    'stickmarksize',
+    'stickmarkspace',
+    'stop',
+    'straight',
+    'straightness',
+    'string',
+    'stripdirectory',
+    'stripextension',
+    'stripfile',
+    'strokepath',
+    'subdivide',
+    'subitem',
+    'subpath',
+    'substr',
+    'sum',
+    'surface',
+    'symmedial',
+    'symmedian',
+    'system',
+    'tab',
+    'tableau',
+    'tan',
+    'tangent',
+    'tangential',
+    'tangents',
+    'tanh',
+    'tell',
+    'tensionSpecifier',
+    'tensorshade',
+    'tex',
+    'texcolor',
+    'texify',
+    'texpath',
+    'texpreamble',
+    'texreset',
+    'texshipout',
+    'texsize',
+    'textpath',
+    'thick',
+    'thin',
+    'tick',
+    'tickMax',
+    'tickMax3',
+    'tickMin',
+    'tickMin3',
+    'ticklabelshift',
+    'ticklocate',
+    'tildeframe',
+    'tildemarksize',
+    'tile',
+    'tiling',
+    'time',
+    'times',
+    'title',
+    'titlepage',
+    'topbox',
+    'transform',
+    'transformation',
+    'transpose',
+    'tremble',
+    'trembleFuzz',
+    'tremble_circlenodesnumber',
+    'tremble_circlenodesnumber1',
+    'tremble_draw',
+    'tremble_ellipsenodesnumber',
+    'tremble_ellipsenodesnumber1',
+    'tremble_hyperbolanodesnumber',
+    'tremble_marknodes',
+    'tremble_markuniform',
+    'tremble_parabolanodesnumber',
+    'triangle',
+    'triangleAbc',
+    'triangleabc',
+    'triangulate',
+    'tricoef',
+    'tridiagonal',
+    'trilinear',
+    'trim',
+    'trueMagnetize',
+    'truepoint',
+    'tube',
+    'uncycle',
+    'unfill',
+    'uniform',
+    'unit',
+    'unitrand',
+    'unitsize',
+    'unityroot',
+    'unstraighten',
+    'upcase',
+    'updatefunction',
+    'uperiodic',
+    'upscale',
+    'uptodate',
+    'usepackage',
+    'usersetting',
+    'usetypescript',
+    'usleep',
+    'value',
+    'variance',
+    'variancebiased',
+    'vbox',
+    'vector',
+    'vectorfield',
+    'verbatim',
+    'view',
+    'vline',
+    'vperiodic',
+    'vprojection',
+    'warn',
+    'warning',
+    'windingnumber',
+    'write',
+    'xaxis',
+    'xaxis3',
+    'xaxis3At',
+    'xaxisAt',
+    'xequals',
+    'xinput',
+    'xlimits',
+    'xoutput',
+    'xpart',
+    'xscale',
+    'xscaleO',
+    'xtick',
+    'xtick3',
+    'xtrans',
+    'yaxis',
+    'yaxis3',
+    'yaxis3At',
+    'yaxisAt',
+    'yequals',
+    'ylimits',
+    'ypart',
+    'yscale',
+    'yscaleO',
+    'ytick',
+    'ytick3',
+    'ytrans',
+    'zaxis3',
+    'zaxis3At',
+    'zero',
+    'zero3',
+    'zlimits',
+    'zpart',
+    'ztick',
+    'ztick3',
+    'ztrans'
+])
+
+ASYVARNAME = set([
+    'AliceBlue',
+    'Align',
+    'Allow',
+    'AntiqueWhite',
+    'Apricot',
+    'Aqua',
+    'Aquamarine',
+    'Aspect',
+    'Azure',
+    'BeginPoint',
+    'Beige',
+    'Bisque',
+    'Bittersweet',
+    'Black',
+    'BlanchedAlmond',
+    'Blue',
+    'BlueGreen',
+    'BlueViolet',
+    'Both',
+    'Break',
+    'BrickRed',
+    'Brown',
+    'BurlyWood',
+    'BurntOrange',
+    'CCW',
+    'CW',
+    'CadetBlue',
+    'CarnationPink',
+    'Center',
+    'Centered',
+    'Cerulean',
+    'Chartreuse',
+    'Chocolate',
+    'Coeff',
+    'Coral',
+    'CornflowerBlue',
+    'Cornsilk',
+    'Crimson',
+    'Crop',
+    'Cyan',
+    'Dandelion',
+    'DarkBlue',
+    'DarkCyan',
+    'DarkGoldenrod',
+    'DarkGray',
+    'DarkGreen',
+    'DarkKhaki',
+    'DarkMagenta',
+    'DarkOliveGreen',
+    'DarkOrange',
+    'DarkOrchid',
+    'DarkRed',
+    'DarkSalmon',
+    'DarkSeaGreen',
+    'DarkSlateBlue',
+    'DarkSlateGray',
+    'DarkTurquoise',
+    'DarkViolet',
+    'DeepPink',
+    'DeepSkyBlue',
+    'DefaultHead',
+    'DimGray',
+    'DodgerBlue',
+    'Dotted',
+    'Draw',
+    'E',
+    'ENE',
+    'EPS',
+    'ESE',
+    'E_Euler',
+    'E_PC',
+    'E_RK2',
+    'E_RK3BS',
+    'Emerald',
+    'EndPoint',
+    'Euler',
+    'Fill',
+    'FillDraw',
+    'FireBrick',
+    'FloralWhite',
+    'ForestGreen',
+    'Fuchsia',
+    'Gainsboro',
+    'GhostWhite',
+    'Gold',
+    'Goldenrod',
+    'Gray',
+    'Green',
+    'GreenYellow',
+    'Honeydew',
+    'HookHead',
+    'Horizontal',
+    'HotPink',
+    'I',
+    'IgnoreAspect',
+    'IndianRed',
+    'Indigo',
+    'Ivory',
+    'JOIN_IN',
+    'JOIN_OUT',
+    'JungleGreen',
+    'Khaki',
+    'LM_DWARF',
+    'LM_MACHEP',
+    'LM_SQRT_DWARF',
+    'LM_SQRT_GIANT',
+    'LM_USERTOL',
+    'Label',
+    'Lavender',
+    'LavenderBlush',
+    'LawnGreen',
+    'LeftJustified',
+    'LeftSide',
+    'LemonChiffon',
+    'LightBlue',
+    'LightCoral',
+    'LightCyan',
+    'LightGoldenrodYellow',
+    'LightGreen',
+    'LightGrey',
+    'LightPink',
+    'LightSalmon',
+    'LightSeaGreen',
+    'LightSkyBlue',
+    'LightSlateGray',
+    'LightSteelBlue',
+    'LightYellow',
+    'Lime',
+    'LimeGreen',
+    'Linear',
+    'Linen',
+    'Log',
+    'Logarithmic',
+    'Magenta',
+    'Mahogany',
+    'Mark',
+    'MarkFill',
+    'Maroon',
+    'Max',
+    'MediumAquamarine',
+    'MediumBlue',
+    'MediumOrchid',
+    'MediumPurple',
+    'MediumSeaGreen',
+    'MediumSlateBlue',
+    'MediumSpringGreen',
+    'MediumTurquoise',
+    'MediumVioletRed',
+    'Melon',
+    'MidPoint',
+    'MidnightBlue',
+    'Min',
+    'MintCream',
+    'MistyRose',
+    'Moccasin',
+    'Move',
+    'MoveQuiet',
+    'Mulberry',
+    'N',
+    'NE',
+    'NNE',
+    'NNW',
+    'NW',
+    'NavajoWhite',
+    'Navy',
+    'NavyBlue',
+    'NoAlign',
+    'NoCrop',
+    'NoFill',
+    'NoSide',
+    'OldLace',
+    'Olive',
+    'OliveDrab',
+    'OliveGreen',
+    'Orange',
+    'OrangeRed',
+    'Orchid',
+    'Ox',
+    'Oy',
+    'PC',
+    'PaleGoldenrod',
+    'PaleGreen',
+    'PaleTurquoise',
+    'PaleVioletRed',
+    'PapayaWhip',
+    'Peach',
+    'PeachPuff',
+    'Periwinkle',
+    'Peru',
+    'PineGreen',
+    'Pink',
+    'Plum',
+    'PowderBlue',
+    'ProcessBlue',
+    'Purple',
+    'RK2',
+    'RK3',
+    'RK3BS',
+    'RK4',
+    'RK5',
+    'RK5DP',
+    'RK5F',
+    'RawSienna',
+    'Red',
+    'RedOrange',
+    'RedViolet',
+    'Rhodamine',
+    'RightJustified',
+    'RightSide',
+    'RosyBrown',
+    'RoyalBlue',
+    'RoyalPurple',
+    'RubineRed',
+    'S',
+    'SE',
+    'SSE',
+    'SSW',
+    'SW',
+    'SaddleBrown',
+    'Salmon',
+    'SandyBrown',
+    'SeaGreen',
+    'Seashell',
+    'Sepia',
+    'Sienna',
+    'Silver',
+    'SimpleHead',
+    'SkyBlue',
+    'SlateBlue',
+    'SlateGray',
+    'Snow',
+    'SpringGreen',
+    'SteelBlue',
+    'Suppress',
+    'SuppressQuiet',
+    'Tan',
+    'TeXHead',
+    'Teal',
+    'TealBlue',
+    'Thistle',
+    'Ticksize',
+    'Tomato',
+    'Turquoise',
+    'UnFill',
+    'VERSION',
+    'Value',
+    'Vertical',
+    'Violet',
+    'VioletRed',
+    'W',
+    'WNW',
+    'WSW',
+    'Wheat',
+    'White',
+    'WhiteSmoke',
+    'WildStrawberry',
+    'XYAlign',
+    'YAlign',
+    'Yellow',
+    'YellowGreen',
+    'YellowOrange',
+    'addpenarc',
+    'addpenline',
+    'align',
+    'allowstepping',
+    'angularsystem',
+    'animationdelay',
+    'appendsuffix',
+    'arcarrowangle',
+    'arcarrowfactor',
+    'arrow2sizelimit',
+    'arrowangle',
+    'arrowbarb',
+    'arrowdir',
+    'arrowfactor',
+    'arrowhookfactor',
+    'arrowlength',
+    'arrowsizelimit',
+    'arrowtexfactor',
+    'authorpen',
+    'axis',
+    'axiscoverage',
+    'axislabelfactor',
+    'background',
+    'backgroundcolor',
+    'backgroundpen',
+    'barfactor',
+    'barmarksizefactor',
+    'basealign',
+    'baselinetemplate',
+    'beveljoin',
+    'bigvertexpen',
+    'bigvertexsize',
+    'black',
+    'blue',
+    'bm',
+    'bottom',
+    'bp',
+    'brown',
+    'bullet',
+    'byfoci',
+    'byvertices',
+    'camerafactor',
+    'chartreuse',
+    'circlemarkradiusfactor',
+    'circlenodesnumberfactor',
+    'circleprecision',
+    'circlescale',
+    'cm',
+    'codefile',
+    'codepen',
+    'codeskip',
+    'colorPen',
+    'coloredNodes',
+    'coloredSegments',
+    'conditionlength',
+    'conicnodesfactor',
+    'count',
+    'cputimeformat',
+    'crossmarksizefactor',
+    'currentcoordsys',
+    'currentlight',
+    'currentpatterns',
+    'currentpen',
+    'currentpicture',
+    'currentposition',
+    'currentprojection',
+    'curvilinearsystem',
+    'cuttings',
+    'cyan',
+    'darkblue',
+    'darkbrown',
+    'darkcyan',
+    'darkgray',
+    'darkgreen',
+    'darkgrey',
+    'darkmagenta',
+    'darkolive',
+    'darkred',
+    'dashdotted',
+    'dashed',
+    'datepen',
+    'dateskip',
+    'debuggerlines',
+    'debugging',
+    'deepblue',
+    'deepcyan',
+    'deepgray',
+    'deepgreen',
+    'deepgrey',
+    'deepmagenta',
+    'deepred',
+    'default',
+    'defaultControl',
+    'defaultS',
+    'defaultbackpen',
+    'defaultcoordsys',
+    'defaultfilename',
+    'defaultformat',
+    'defaultmassformat',
+    'defaultpen',
+    'diagnostics',
+    'differentlengths',
+    'dot',
+    'dotfactor',
+    'dotframe',
+    'dotted',
+    'doublelinepen',
+    'doublelinespacing',
+    'down',
+    'duplicateFuzz',
+    'ellipsenodesnumberfactor',
+    'eps',
+    'epsgeo',
+    'epsilon',
+    'evenodd',
+    'extendcap',
+    'fermionpen',
+    'figureborder',
+    'figuremattpen',
+    'firstnode',
+    'firststep',
+    'foregroundcolor',
+    'fuchsia',
+    'fuzz',
+    'gapfactor',
+    'ghostpen',
+    'gluonamplitude',
+    'gluonpen',
+    'gluonratio',
+    'gray',
+    'green',
+    'grey',
+    'hatchepsilon',
+    'havepagenumber',
+    'heavyblue',
+    'heavycyan',
+    'heavygray',
+    'heavygreen',
+    'heavygrey',
+    'heavymagenta',
+    'heavyred',
+    'hline',
+    'hwratio',
+    'hyperbolanodesnumberfactor',
+    'identity4',
+    'ignore',
+    'inXasyMode',
+    'inch',
+    'inches',
+    'includegraphicscommand',
+    'inf',
+    'infinity',
+    'institutionpen',
+    'intMax',
+    'intMin',
+    'invert',
+    'invisible',
+    'itempen',
+    'itemskip',
+    'itemstep',
+    'labelmargin',
+    'landscape',
+    'lastnode',
+    'left',
+    'legendhskip',
+    'legendlinelength',
+    'legendmargin',
+    'legendmarkersize',
+    'legendmaxrelativewidth',
+    'legendvskip',
+    'lightblue',
+    'lightcyan',
+    'lightgray',
+    'lightgreen',
+    'lightgrey',
+    'lightmagenta',
+    'lightolive',
+    'lightred',
+    'lightyellow',
+    'linemargin',
+    'lm_infmsg',
+    'lm_shortmsg',
+    'longdashdotted',
+    'longdashed',
+    'magenta',
+    'magneticPoints',
+    'magneticRadius',
+    'mantissaBits',
+    'markangleradius',
+    'markangleradiusfactor',
+    'markanglespace',
+    'markanglespacefactor',
+    'mediumblue',
+    'mediumcyan',
+    'mediumgray',
+    'mediumgreen',
+    'mediumgrey',
+    'mediummagenta',
+    'mediumred',
+    'mediumyellow',
+    'middle',
+    'minDistDefault',
+    'minblockheight',
+    'minblockwidth',
+    'mincirclediameter',
+    'minipagemargin',
+    'minipagewidth',
+    'minvertexangle',
+    'miterjoin',
+    'mm',
+    'momarrowfactor',
+    'momarrowlength',
+    'momarrowmargin',
+    'momarrowoffset',
+    'momarrowpen',
+    'monoPen',
+    'morepoints',
+    'nCircle',
+    'newbulletcolor',
+    'ngraph',
+    'nil',
+    'nmesh',
+    'nobasealign',
+    'nodeMarginDefault',
+    'nodesystem',
+    'nomarker',
+    'nopoint',
+    'noprimary',
+    'nullpath',
+    'nullpen',
+    'numarray',
+    'ocgindex',
+    'oldbulletcolor',
+    'olive',
+    'orange',
+    'origin',
+    'overpaint',
+    'page',
+    'pageheight',
+    'pagemargin',
+    'pagenumberalign',
+    'pagenumberpen',
+    'pagenumberposition',
+    'pagewidth',
+    'paleblue',
+    'palecyan',
+    'palegray',
+    'palegreen',
+    'palegrey',
+    'palemagenta',
+    'palered',
+    'paleyellow',
+    'parabolanodesnumberfactor',
+    'perpfactor',
+    'phi',
+    'photonamplitude',
+    'photonpen',
+    'photonratio',
+    'pi',
+    'pink',
+    'plain',
+    'plus',
+    'preamblenodes',
+    'pt',
+    'purple',
+    'r3',
+    'r4a',
+    'r4b',
+    'randMax',
+    'realDigits',
+    'realEpsilon',
+    'realMax',
+    'realMin',
+    'red',
+    'relativesystem',
+    'reverse',
+    'right',
+    'roundcap',
+    'roundjoin',
+    'royalblue',
+    'salmon',
+    'saveFunctions',
+    'scalarpen',
+    'sequencereal',
+    'settings',
+    'shipped',
+    'signedtrailingzero',
+    'solid',
+    'springgreen',
+    'sqrtEpsilon',
+    'squarecap',
+    'squarepen',
+    'startposition',
+    'stdin',
+    'stdout',
+    'stepfactor',
+    'stepfraction',
+    'steppagenumberpen',
+    'stepping',
+    'stickframe',
+    'stickmarksizefactor',
+    'stickmarkspacefactor',
+    'textpen',
+    'ticksize',
+    'tildeframe',
+    'tildemarksizefactor',
+    'tinv',
+    'titlealign',
+    'titlepagepen',
+    'titlepageposition',
+    'titlepen',
+    'titleskip',
+    'top',
+    'trailingzero',
+    'treeLevelStep',
+    'treeMinNodeWidth',
+    'treeNodeStep',
+    'trembleAngle',
+    'trembleFrequency',
+    'trembleRandom',
+    'tremblingMode',
+    'undefined',
+    'unitcircle',
+    'unitsquare',
+    'up',
+    'urlpen',
+    'urlskip',
+    'version',
+    'vertexpen',
+    'vertexsize',
+    'viewportmargin',
+    'viewportsize',
+    'vline',
+    'white',
+    'wye',
+    'xformStack',
+    'yellow',
+    'ylabelwidth',
+    'zerotickfuzz',
+    'zerowinding'
+])
--- a/MoinMoin/support/pygments/lexers/_mapping.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexers/_mapping.py	Tue Mar 09 18:06:25 2010 +0300
@@ -17,6 +17,7 @@
     'ABAPLexer': ('pygments.lexers.other', 'ABAP', ('abap',), ('*.abap',), ('text/x-abap',)),
     'ActionScript3Lexer': ('pygments.lexers.web', 'ActionScript 3', ('as3', 'actionscript3'), ('*.as',), ('application/x-actionscript', 'text/x-actionscript', 'text/actionscript')),
     'ActionScriptLexer': ('pygments.lexers.web', 'ActionScript', ('as', 'actionscript'), ('*.as',), ('application/x-actionscript', 'text/x-actionscript', 'text/actionscript')),
+    'AdaLexer': ('pygments.lexers.compiled', 'Ada', ('ada', 'ada95ada2005'), ('*.adb', '*.ads', '*.ada'), ('text/x-ada',)),
     'AntlrActionScriptLexer': ('pygments.lexers.parsers', 'ANTLR With ActionScript Target', ('antlr-as', 'antlr-actionscript'), ('*.G', '*.g'), ()),
     'AntlrCSharpLexer': ('pygments.lexers.parsers', 'ANTLR With C# Target', ('antlr-csharp', 'antlr-c#'), ('*.G', '*.g'), ()),
     'AntlrCppLexer': ('pygments.lexers.parsers', 'ANTLR With CPP Target', ('antlr-cpp',), ('*.G', '*.g'), ()),
@@ -28,10 +29,10 @@
     'AntlrRubyLexer': ('pygments.lexers.parsers', 'ANTLR With Ruby Target', ('antlr-ruby', 'antlr-rb'), ('*.G', '*.g'), ()),
     'ApacheConfLexer': ('pygments.lexers.text', 'ApacheConf', ('apacheconf', 'aconf', 'apache'), ('.htaccess', 'apache.conf', 'apache2.conf'), ('text/x-apacheconf',)),
     'AppleScriptLexer': ('pygments.lexers.other', 'AppleScript', ('applescript',), ('*.applescript',), ()),
-    'AsymptoteLexer': ('pygments.lexers.other', 'Asymptote', ('asy',), ('*.asy',), ('text/x-asymptote',)),
+    'AsymptoteLexer': ('pygments.lexers.other', 'Asymptote', ('asy', 'asymptote'), ('*.asy',), ('text/x-asymptote',)),
     'BBCodeLexer': ('pygments.lexers.text', 'BBCode', ('bbcode',), (), ('text/x-bbcode',)),
     'BaseMakefileLexer': ('pygments.lexers.text', 'Makefile', ('basemake',), (), ()),
-    'BashLexer': ('pygments.lexers.other', 'Bash', ('bash', 'sh'), ('*.sh', '*.ebuild', '*.eclass'), ('application/x-sh', 'application/x-shellscript')),
+    'BashLexer': ('pygments.lexers.other', 'Bash', ('bash', 'sh', 'ksh'), ('*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass'), ('application/x-sh', 'application/x-shellscript')),
     'BashSessionLexer': ('pygments.lexers.other', 'Bash Session', ('console',), ('*.sh-session',), ('application/x-shell-session',)),
     'BatchLexer': ('pygments.lexers.other', 'Batchfile', ('bat',), ('*.bat', '*.cmd'), ('application/x-dos-batch',)),
     'BefungeLexer': ('pygments.lexers.other', 'Befunge', ('befunge',), ('*.befunge',), ('application/x-befunge',)),
@@ -47,6 +48,9 @@
     'CheetahLexer': ('pygments.lexers.templates', 'Cheetah', ('cheetah', 'spitfire'), ('*.tmpl', '*.spt'), ('application/x-cheetah', 'application/x-spitfire')),
     'CheetahXmlLexer': ('pygments.lexers.templates', 'XML+Cheetah', ('xml+cheetah', 'xml+spitfire'), (), ('application/xml+cheetah', 'application/xml+spitfire')),
     'ClojureLexer': ('pygments.lexers.agile', 'Clojure', ('clojure', 'clj'), ('*.clj',), ('text/x-clojure', 'application/x-clojure')),
+    'CoffeeScriptLexer': ('pygments.lexers.web', 'CoffeeScript', ('coffee-script', 'coffeescript'), ('*.coffee',), ('text/coffeescript',)),
+    'ColdfusionHtmlLexer': ('pygments.lexers.templates', 'Coldufsion HTML', ('cfm',), ('*.cfm', '*.cfml', '*.cfc'), ('application/x-coldfusion',)),
+    'ColdfusionLexer': ('pygments.lexers.templates', 'cfstatement', ('cfs',), (), ()),
     'CommonLispLexer': ('pygments.lexers.functional', 'Common Lisp', ('common-lisp', 'cl'), ('*.cl', '*.lisp', '*.el'), ('text/x-common-lisp',)),
     'CppLexer': ('pygments.lexers.compiled', 'C++', ('cpp', 'c++'), ('*.cpp', '*.hpp', '*.c++', '*.h++', '*.cc', '*.hh', '*.cxx', '*.hxx'), ('text/x-c++hdr', 'text/x-c++src')),
     'CppObjdumpLexer': ('pygments.lexers.asm', 'cpp-objdump', ('cpp-objdump', 'c++-objdumb', 'cxx-objdump'), ('*.cpp-objdump', '*.c++-objdump', '*.cxx-objdump'), ('text/x-cpp-objdump',)),
@@ -71,6 +75,7 @@
     'EvoqueHtmlLexer': ('pygments.lexers.templates', 'HTML+Evoque', ('html+evoque',), ('*.html',), ('text/html+evoque',)),
     'EvoqueLexer': ('pygments.lexers.templates', 'Evoque', ('evoque',), ('*.evoque',), ('application/x-evoque',)),
     'EvoqueXmlLexer': ('pygments.lexers.templates', 'XML+Evoque', ('xml+evoque',), ('*.xml',), ('application/xml+evoque',)),
+    'FelixLexer': ('pygments.lexers.compiled', 'Felix', ('felix', 'flx'), ('*.flx', '*.flxh'), ('text/x-felix',)),
     'FortranLexer': ('pygments.lexers.compiled', 'Fortran', ('fortran',), ('*.f', '*.f90'), ('text/x-fortran',)),
     'GLShaderLexer': ('pygments.lexers.compiled', 'GLSL', ('glsl',), ('*.vert', '*.frag', '*.geo'), ('text/x-glslsrc',)),
     'GasLexer': ('pygments.lexers.asm', 'GAS', ('gas',), ('*.s', '*.S'), ('text/x-gas',)),
@@ -81,7 +86,9 @@
     'GnuplotLexer': ('pygments.lexers.other', 'Gnuplot', ('gnuplot',), ('*.plot', '*.plt'), ('text/x-gnuplot',)),
     'GoLexer': ('pygments.lexers.compiled', 'Go', ('go',), ('*.go',), ('text/x-gosrc',)),
     'GroffLexer': ('pygments.lexers.text', 'Groff', ('groff', 'nroff', 'man'), ('*.[1234567]', '*.man'), ('application/x-troff', 'text/troff')),
+    'HamlLexer': ('pygments.lexers.web', 'Haml', ('haml', 'HAML'), ('*.haml',), ('text/x-haml',)),
     'HaskellLexer': ('pygments.lexers.functional', 'Haskell', ('haskell', 'hs'), ('*.hs',), ('text/x-haskell',)),
+    'HaxeLexer': ('pygments.lexers.web', 'haXe', ('hx', 'haXe'), ('*.hx',), ('text/haxe',)),
     'HtmlDjangoLexer': ('pygments.lexers.templates', 'HTML+Django/Jinja', ('html+django', 'html+jinja'), (), ('text/html+django', 'text/html+jinja')),
     'HtmlGenshiLexer': ('pygments.lexers.templates', 'HTML+Genshi', ('html+genshi', 'html+kid'), (), ('text/html+genshi',)),
     'HtmlLexer': ('pygments.lexers.web', 'HTML', ('html',), ('*.html', '*.htm', '*.xhtml', '*.xslt'), ('text/html', 'application/xhtml+xml')),
@@ -114,6 +121,7 @@
     'MatlabSessionLexer': ('pygments.lexers.math', 'Matlab session', ('matlabsession',), (), ()),
     'MiniDLexer': ('pygments.lexers.agile', 'MiniD', ('minid',), ('*.md',), ('text/x-minidsrc',)),
     'ModelicaLexer': ('pygments.lexers.other', 'Modelica', ('modelica',), ('*.mo',), ('text/x-modelica',)),
+    'Modula2Lexer': ('pygments.lexers.compiled', 'Modula-2', ('modula2', 'm2'), ('*.def', '*.mod'), ('text/x-modula2',)),
     'MoinWikiLexer': ('pygments.lexers.text', 'MoinMoin/Trac Wiki markup', ('trac-wiki', 'moin'), (), ('text/x-trac-wiki',)),
     'MuPADLexer': ('pygments.lexers.math', 'MuPAD', ('mupad',), ('*.mu',), ()),
     'MxmlLexer': ('pygments.lexers.web', 'MXML', ('mxml',), ('*.mxml',), ()),
@@ -129,6 +137,7 @@
     'NumPyLexer': ('pygments.lexers.math', 'NumPy', ('numpy',), (), ()),
     'ObjdumpLexer': ('pygments.lexers.asm', 'objdump', ('objdump',), ('*.objdump',), ('text/x-objdump',)),
     'ObjectiveCLexer': ('pygments.lexers.compiled', 'Objective-C', ('objective-c', 'objectivec', 'obj-c', 'objc'), ('*.m',), ('text/x-objective-c',)),
+    'ObjectiveJLexer': ('pygments.lexers.web', 'Objective-J', ('objective-j', 'objectivej', 'obj-j', 'objj'), ('*.j',), ('text/x-objective-j',)),
     'OcamlLexer': ('pygments.lexers.compiled', 'OCaml', ('ocaml',), ('*.ml', '*.mli', '*.mll', '*.mly'), ('text/x-ocaml',)),
     'OcamlLexer': ('pygments.lexers.functional', 'OCaml', ('ocaml',), ('*.ml', '*.mli', '*.mll', '*.mly'), ('text/x-ocaml',)),
     'OocLexer': ('pygments.lexers.compiled', 'Ooc', ('ooc',), ('*.ooc',), ('text/x-ooc',)),
@@ -139,8 +148,9 @@
     'Python3Lexer': ('pygments.lexers.agile', 'Python 3', ('python3', 'py3'), (), ('text/x-python3', 'application/x-python3')),
     'Python3TracebackLexer': ('pygments.lexers.agile', 'Python 3.0 Traceback', ('py3tb',), ('*.py3tb',), ('text/x-python3-traceback',)),
     'PythonConsoleLexer': ('pygments.lexers.agile', 'Python console session', ('pycon',), (), ('text/x-python-doctest',)),
-    'PythonLexer': ('pygments.lexers.agile', 'Python', ('python', 'py'), ('*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript'), ('text/x-python', 'application/x-python')),
+    'PythonLexer': ('pygments.lexers.agile', 'Python', ('python', 'py'), ('*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript', '*.tac'), ('text/x-python', 'application/x-python')),
     'PythonTracebackLexer': ('pygments.lexers.agile', 'Python Traceback', ('pytb',), ('*.pytb',), ('text/x-python-traceback',)),
+    'RConsoleLexer': ('pygments.lexers.math', 'RConsole', ('rconsole', 'rout'), ('*.Rout',), ()),
     'RagelCLexer': ('pygments.lexers.parsers', 'Ragel in C Host', ('ragel-c',), ('*.rl',), ()),
     'RagelCppLexer': ('pygments.lexers.parsers', 'Ragel in CPP Host', ('ragel-cpp',), ('*.rl',), ()),
     'RagelDLexer': ('pygments.lexers.parsers', 'Ragel in D Host', ('ragel-d',), ('*.rl',), ()),
@@ -157,6 +167,7 @@
     'RubyConsoleLexer': ('pygments.lexers.agile', 'Ruby irb session', ('rbcon', 'irb'), (), ('text/x-ruby-shellsession',)),
     'RubyLexer': ('pygments.lexers.agile', 'Ruby', ('rb', 'ruby'), ('*.rb', '*.rbw', 'Rakefile', '*.rake', '*.gemspec', '*.rbx'), ('text/x-ruby', 'application/x-ruby')),
     'SLexer': ('pygments.lexers.math', 'S', ('splus', 's', 'r'), ('*.S', '*.R'), ('text/S-plus', 'text/S', 'text/R')),
+    'SassLexer': ('pygments.lexers.web', 'Sass', ('sass', 'SASS'), ('*.sass',), ('text/x-sass',)),
     'ScalaLexer': ('pygments.lexers.compiled', 'Scala', ('scala',), ('*.scala',), ('text/x-scala',)),
     'SchemeLexer': ('pygments.lexers.functional', 'Scheme', ('scheme', 'scm'), ('*.scm',), ('text/x-scheme', 'application/x-scheme')),
     'SmalltalkLexer': ('pygments.lexers.other', 'Smalltalk', ('smalltalk', 'squeak'), ('*.st',), ('text/x-smalltalk',)),
--- a/MoinMoin/support/pygments/lexers/agile.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexers/agile.py	Tue Mar 09 18:06:25 2010 +0300
@@ -10,10 +10,6 @@
 """
 
 import re
-try:
-    set
-except NameError:
-    from sets import Set as set
 
 from pygments.lexer import Lexer, RegexLexer, ExtendedRegexLexer, \
      LexerContext, include, combined, do_insertions, bygroups, using
@@ -41,7 +37,7 @@
 
     name = 'Python'
     aliases = ['python', 'py']
-    filenames = ['*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript']
+    filenames = ['*.py', '*.pyw', '*.sc', 'SConstruct', 'SConscript', '*.tac']
     mimetypes = ['text/x-python', 'application/x-python']
 
     tokens = {
@@ -659,7 +655,7 @@
                  r'(?<=^match\s)|'
                  r'(?<=^if\s)|'
                  r'(?<=^elsif\s)'
-             r')(\s*)(/)(?!=)', bygroups(Text, String.Regex), 'multiline-regex'),
+             r')(\s*)(/)', bygroups(Text, String.Regex), 'multiline-regex'),
             # multiline regex (in method calls)
             (r'(?<=\(|,)/', String.Regex, 'multiline-regex'),
             # multiline regex (this time the funny no whitespace rule)
@@ -835,7 +831,6 @@
             (r'@(\\\\|\\\@|[^\@])*@[egimosx]*', String.Regex, '#pop'),
             (r'%(\\\\|\\\%|[^\%])*%[egimosx]*', String.Regex, '#pop'),
             (r'\$(\\\\|\\\$|[^\$])*\$[egimosx]*', String.Regex, '#pop'),
-            (r'!(\\\\|\\!|[^!])*![egimosx]*', String.Regex, '#pop'),
         ],
         'root': [
             (r'\#.*?$', Comment.Single),
@@ -859,6 +854,7 @@
             (r's\((\\\\|\\\)|[^\)])*\)\s*', String.Regex, 'balanced-regex'),
 
             (r'm?/(\\\\|\\/|[^/\n])*/[gcimosx]*', String.Regex),
+            (r'm(?=[/!\\{<\[\(@%\$])', String.Regex, 'balanced-regex'),
             (r'((?<==~)|(?<=\())\s*/(\\\\|\\/|[^/])*/[gcimosx]*', String.Regex),
             (r'\s+', Text),
             (r'(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|'
@@ -906,7 +902,7 @@
             (r'(q|qq|qw|qr|qx)\(', String.Other, 'rb-string'),
             (r'(q|qq|qw|qr|qx)\[', String.Other, 'sb-string'),
             (r'(q|qq|qw|qr|qx)\<', String.Other, 'lt-string'),
-            (r'(q|qq|qw|qr|qx)(.)[.\n]*?\1', String.Other),
+            (r'(q|qq|qw|qr|qx)([^a-zA-Z0-9])(.|\n)*?\2', String.Other),
             (r'package\s+', Keyword, 'modulename'),
             (r'sub\s+', Keyword, 'funcname'),
             (r'(\[\]|\*\*|::|<<|>>|>=|<=|<=>|={3}|!=|=~|'
@@ -970,7 +966,7 @@
             (r'\\', String.Other),
             (r'\<', String.Other, 'lt-string'),
             (r'\>', String.Other, '#pop'),
-            (r'[^\<\>]]+', String.Other)
+            (r'[^\<\>]+', String.Other)
         ],
         'end-part': [
             (r'.+', Comment.Preproc, '#pop')
@@ -1015,6 +1011,11 @@
 
     tokens = {
         'root': [
+            # lua allows a file to start with a shebang
+            (r'#!(.*?)$', Comment.Preproc),
+            (r'', Text, 'base'),
+        ],
+        'base': [
             (r'(?s)--\[(=*)\[.*?\]\1\]', Comment.Multiline),
             ('--.*$', Comment.Single),
 
@@ -1263,6 +1264,7 @@
             include('command'),
             include('basic'),
             include('data'),
+            (r'}', Keyword),  # HACK: somehow we miscounted our braces
         ],
         'command': _gen_command_rules(keyword_cmds_re, builtin_cmds_re),
         'command-in-brace': _gen_command_rules(keyword_cmds_re,
@@ -1441,7 +1443,7 @@
             # strings, symbols and characters
             (r'"(\\\\|\\"|[^"])*"', String),
             (r"'" + valid_name, String.Symbol),
-            (r"\\([()/'\".'_!§$%& ?;=+-]{1}|[a-zA-Z0-9]+)", String.Char),
+            (r"\\([()/'\".'_!§$%& ?;=#+-]{1}|[a-zA-Z0-9]+)", String.Char),
 
             # constants
             (r'(#t|#f)', Name.Constant),
--- a/MoinMoin/support/pygments/lexers/asm.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexers/asm.py	Tue Mar 09 18:06:25 2010 +0300
@@ -10,10 +10,6 @@
 """
 
 import re
-try:
-    set
-except NameError:
-    from sets import Set as set
 
 from pygments.lexer import RegexLexer, include, bygroups, using, DelegatingLexer
 from pygments.lexers.compiled import DLexer, CppLexer, CLexer
--- a/MoinMoin/support/pygments/lexers/compiled.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexers/compiled.py	Tue Mar 09 18:06:25 2010 +0300
@@ -10,10 +10,6 @@
 """
 
 import re
-try:
-    set
-except NameError:
-    from sets import Set as set
 
 from pygments.scanner import Scanner
 from pygments.lexer import Lexer, RegexLexer, include, bygroups, using, \
@@ -29,7 +25,8 @@
 __all__ = ['CLexer', 'CppLexer', 'DLexer', 'DelphiLexer', 'JavaLexer',
            'ScalaLexer', 'DylanLexer', 'OcamlLexer', 'ObjectiveCLexer',
            'FortranLexer', 'GLShaderLexer', 'PrologLexer', 'CythonLexer',
-           'ValaLexer', 'OocLexer', 'GoLexer']
+           'ValaLexer', 'OocLexer', 'GoLexer', 'FelixLexer', 'AdaLexer',
+           'Modula2Lexer']
 
 
 class CLexer(RegexLexer):
@@ -63,6 +60,7 @@
             (r'0x[0-9a-fA-F]+[Ll]?', Number.Hex),
             (r'0[0-7]+[Ll]?', Number.Oct),
             (r'\d+[Ll]?', Number.Integer),
+            (r'\*/', Error),
             (r'[~!%^&*+=|?:<>/-]', Operator),
             (r'[()\[\],.]', Punctuation),
             (r'\b(case)(.+?)(:)', bygroups(Keyword, using(this), Text)),
@@ -187,6 +185,7 @@
             (r'0x[0-9a-fA-F]+[Ll]?', Number.Hex),
             (r'0[0-7]+[Ll]?', Number.Oct),
             (r'\d+[Ll]?', Number.Integer),
+            (r'\*/', Error),
             (r'[~!%^&*+=|?:<>/-]', Operator),
             (r'[()\[\],.;]', Punctuation),
             (r'(asm|auto|break|case|catch|const|const_cast|continue|'
@@ -929,6 +928,7 @@
         ],
     }
 
+
 class ScalaLexer(RegexLexer):
     """
     For `Scala <http://www.scala-lang.org>`_ source code.
@@ -1122,14 +1122,14 @@
             (r'__(asm|int8|based|except|int16|stdcall|cdecl|fastcall|int32|'
              r'declspec|finally|int64|try|leave)\b', Keyword.Reserved),
             (r'(TRUE|FALSE|nil|NULL)\b', Name.Builtin),
-            ('[a-zA-Z_][a-zA-Z0-9_]*:(?!:)', Name.Label),
-            ('[a-zA-Z_][a-zA-Z0-9_]*', Name),
+            ('[a-zA-Z$_][a-zA-Z0-9$_]*:(?!:)', Name.Label),
+            ('[a-zA-Z$_][a-zA-Z0-9$_]*', Name),
         ],
         'root': [
             include('whitespace'),
             # functions
             (r'((?:[a-zA-Z0-9_*\s])+?(?:\s|[*]))'    # return arguments
-             r'([a-zA-Z_][a-zA-Z0-9_]*)'             # method name
+             r'([a-zA-Z$_][a-zA-Z0-9$_]*)'           # method name
              r'(\s*\([^;]*?\))'                      # signature
              r'(' + _ws + r')({)',
              bygroups(using(this), Name.Function,
@@ -1137,7 +1137,7 @@
              'function'),
             # function declarations
             (r'((?:[a-zA-Z0-9_*\s])+?(?:\s|[*]))'    # return arguments
-             r'([a-zA-Z_][a-zA-Z0-9_]*)'             # method name
+             r'([a-zA-Z$_][a-zA-Z0-9$_]*)'           # method name
              r'(\s*\([^;]*?\))'                      # signature
              r'(' + _ws + r')(;)',
              bygroups(using(this), Name.Function,
@@ -1151,18 +1151,18 @@
         ],
         'classname' : [
             # interface definition that inherits
-            ('([a-zA-Z_][a-zA-Z0-9_]*)(\s*:\s*)([a-zA-Z_][a-zA-Z0-9_]*)?',
+            ('([a-zA-Z$_][a-zA-Z0-9$_]*)(\s*:\s*)([a-zA-Z$_][a-zA-Z0-9$_]*)?',
              bygroups(Name.Class, Text, Name.Class), '#pop'),
             # interface definition for a category
-            ('([a-zA-Z_][a-zA-Z0-9_]*)(\s*)(\([a-zA-Z_][a-zA-Z0-9_]*\))',
+            ('([a-zA-Z$_][a-zA-Z0-9$_]*)(\s*)(\([a-zA-Z$_][a-zA-Z0-9$_]*\))',
              bygroups(Name.Class, Text, Name.Label), '#pop'),
             # simple interface / implementation
-            ('([a-zA-Z_][a-zA-Z0-9_]*)', Name.Class, '#pop')
+            ('([a-zA-Z$_][a-zA-Z0-9$_]*)', Name.Class, '#pop')
         ],
         'forward_classname' : [
-          ('([a-zA-Z_][a-zA-Z0-9_]*)(\s*,\s*)',
+          ('([a-zA-Z$_][a-zA-Z0-9$_]*)(\s*,\s*)',
            bygroups(Name.Class, Text), 'forward_classname'),
-          ('([a-zA-Z_][a-zA-Z0-9_]*)(\s*;?)',
+          ('([a-zA-Z$_][a-zA-Z0-9$_]*)(\s*;?)',
            bygroups(Name.Class, Text), '#pop')
         ],
         'statement' : [
@@ -1790,3 +1790,576 @@
             (r'[a-zA-Z_]\w*', Name),
         ]
     }
+
+
+class FelixLexer(RegexLexer):
+    """
+    For `Felix <http://www.felix-lang.org>`_ source code.
+
+    *New in Pygments 1.2.*
+    """
+
+    name = 'Felix'
+    aliases = ['felix', 'flx']
+    filenames = ['*.flx', '*.flxh']
+    mimetypes = ['text/x-felix']
+
+    preproc = [
+        'elif', 'else', 'endif', 'if', 'ifdef', 'ifndef',
+    ]
+
+    keywords = [
+        '_', '_deref', 'all', 'as',
+        'assert', 'attempt', 'call', 'callback', 'case', 'caseno', 'cclass',
+        'code', 'compound', 'ctypes', 'do', 'done', 'downto', 'elif', 'else',
+        'endattempt', 'endcase', 'endif', 'endmatch', 'enum', 'except',
+        'exceptions', 'expect', 'finally', 'for', 'forall', 'forget', 'fork',
+        'functor', 'goto', 'ident', 'if', 'incomplete', 'inherit', 'instance',
+        'interface', 'jump', 'lambda', 'loop', 'match', 'module', 'namespace',
+        'new', 'noexpand', 'nonterm', 'obj', 'of', 'open', 'parse', 'raise',
+        'regexp', 'reglex', 'regmatch', 'rename', 'return', 'the', 'then',
+        'to', 'type', 'typecase', 'typedef', 'typematch', 'typeof', 'upto',
+        'when', 'whilst', 'with', 'yield',
+    ]
+
+    keyword_directives = [
+        '_gc_pointer', '_gc_type', 'body', 'comment', 'const', 'export',
+        'header', 'inline', 'lval', 'macro', 'noinline', 'noreturn',
+        'package', 'private', 'pod', 'property', 'public', 'publish',
+        'requires', 'todo', 'virtual', 'use',
+    ]
+
+    keyword_declarations = [
+        'def', 'let', 'ref', 'val', 'var',
+    ]
+
+    keyword_types = [
+        'unit', 'void', 'any', 'bool',
+        'byte',  'offset',
+        'address', 'caddress', 'cvaddress', 'vaddress',
+        'tiny', 'short', 'int', 'long', 'vlong',
+        'utiny', 'ushort', 'vshort', 'uint', 'ulong', 'uvlong',
+        'int8', 'int16', 'int32', 'int64',
+        'uint8', 'uint16', 'uint32', 'uint64',
+        'float', 'double', 'ldouble',
+        'complex', 'dcomplex', 'lcomplex',
+        'imaginary', 'dimaginary', 'limaginary',
+        'char', 'wchar', 'uchar',
+        'charp', 'charcp', 'ucharp', 'ucharcp',
+        'string', 'wstring', 'ustring',
+        'cont',
+        'array', 'varray', 'list',
+        'lvalue', 'opt', 'slice',
+    ]
+
+    keyword_constants = [
+        'false', 'true',
+    ]
+
+    operator_words = [
+        'and', 'not', 'in', 'is', 'isin', 'or', 'xor',
+    ]
+
+    name_builtins = [
+        '_svc', 'while',
+    ]
+
+    name_pseudo = [
+        'root', 'self', 'this',
+    ]
+
+    decimal_suffixes = '([tTsSiIlLvV]|ll|LL|([iIuU])(8|16|32|64))?'
+
+    tokens = {
+        'root': [
+            include('whitespace'),
+
+            # Keywords
+            (r'(axiom|ctor|fun|gen|proc|reduce|union)\b', Keyword,
+             'funcname'),
+            (r'(class|cclass|cstruct|obj|struct)\b', Keyword, 'classname'),
+            (r'(instance|module|typeclass)\b', Keyword, 'modulename'),
+
+            (r'(%s)\b' % '|'.join(keywords), Keyword),
+            (r'(%s)\b' % '|'.join(keyword_directives), Name.Decorator),
+            (r'(%s)\b' % '|'.join(keyword_declarations), Keyword.Declaration),
+            (r'(%s)\b' % '|'.join(keyword_types), Keyword.Type),
+            (r'(%s)\b' % '|'.join(keyword_constants), Keyword.Constant),
+
+            # Operators
+            include('operators'),
+
+            # Float Literal
+            # -- Hex Float
+            (r'0[xX]([0-9a-fA-F_]*\.[0-9a-fA-F_]+|[0-9a-fA-F_]+)'
+             r'[pP][+\-]?[0-9_]+[lLfFdD]?', Number.Float),
+            # -- DecimalFloat
+            (r'[0-9_]+(\.[0-9_]+[eE][+\-]?[0-9_]+|'
+             r'\.[0-9_]*|[eE][+\-]?[0-9_]+)[lLfFdD]?', Number.Float),
+            (r'\.(0|[1-9][0-9_]*)([eE][+\-]?[0-9_]+)?[lLfFdD]?',
+             Number.Float),
+
+            # IntegerLiteral
+            # -- Binary
+            (r'0[Bb][01_]+%s' % decimal_suffixes, Number),
+            # -- Octal
+            (r'0[0-7_]+%s' % decimal_suffixes, Number.Oct),
+            # -- Hexadecimal
+            (r'0[xX][0-9a-fA-F_]+%s' % decimal_suffixes, Number.Hex),
+            # -- Decimal
+            (r'(0|[1-9][0-9_]*)%s' % decimal_suffixes, Number.Integer),
+
+            # Strings
+            ('([rR][cC]?|[cC][rR])"""', String, 'tdqs'),
+            ("([rR][cC]?|[cC][rR])'''", String, 'tsqs'),
+            ('([rR][cC]?|[cC][rR])"', String, 'dqs'),
+            ("([rR][cC]?|[cC][rR])'", String, 'sqs'),
+            ('[cCfFqQwWuU]?"""', String, combined('stringescape', 'tdqs')),
+            ("[cCfFqQwWuU]?'''", String, combined('stringescape', 'tsqs')),
+            ('[cCfFqQwWuU]?"', String, combined('stringescape', 'dqs')),
+            ("[cCfFqQwWuU]?'", String, combined('stringescape', 'sqs')),
+
+            # Punctuation
+            (r'[\[\]{}:(),;?]', Punctuation),
+
+            # Labels
+            (r'[a-zA-Z_]\w*:>', Name.Label),
+
+            # Identifiers
+            (r'(%s)\b' % '|'.join(name_builtins), Name.Builtin),
+            (r'(%s)\b' % '|'.join(name_pseudo), Name.Builtin.Pseudo),
+            (r'[a-zA-Z_]\w*', Name),
+        ],
+        'whitespace': [
+            (r'\n', Text),
+            (r'\s+', Text),
+
+            include('comment'),
+
+            # Preprocessor
+            (r'#\s*if\s+0', Comment.Preproc, 'if0'),
+            (r'#', Comment.Preproc, 'macro'),
+        ],
+        'operators': [
+            (r'(%s)\b' % '|'.join(operator_words), Operator.Word),
+            (r'!=|==|<<|>>|\|\||&&|[-~+/*%=<>&^|.$]', Operator),
+        ],
+        'comment': [
+            (r'//(.*?)\n', Comment.Single),
+            (r'/[*]', Comment.Multiline, 'comment2'),
+        ],
+        'comment2': [
+            (r'[^\/*]', Comment.Multiline),
+            (r'/[*]', Comment.Multiline, '#push'),
+            (r'[*]/', Comment.Multiline, '#pop'),
+            (r'[\/*]', Comment.Multiline),
+        ],
+        'if0': [
+            (r'^\s*#if.*?(?<!\\)\n', Comment, '#push'),
+            (r'^\s*#endif.*?(?<!\\)\n', Comment, '#pop'),
+            (r'.*?\n', Comment),
+        ],
+        'macro': [
+            include('comment'),
+            (r'(import|include)(\s+)(<[^>]*?>)',
+             bygroups(Comment.Preproc, Text, String), '#pop'),
+            (r'(import|include)(\s+)("[^"]*?")',
+             bygroups(Comment.Preproc, Text, String), '#pop'),
+            (r"(import|include)(\s+)('[^']*?')",
+             bygroups(Comment.Preproc, Text, String), '#pop'),
+            (r'[^/\n]+', Comment.Preproc),
+            ##(r'/[*](.|\n)*?[*]/', Comment),
+            ##(r'//.*?\n', Comment, '#pop'),
+            (r'/', Comment.Preproc),
+            (r'(?<=\\)\n', Comment.Preproc),
+            (r'\n', Comment.Preproc, '#pop'),
+        ],
+        'funcname': [
+            include('whitespace'),
+            (r'[a-zA-Z_]\w*', Name.Function, '#pop'),
+            # anonymous functions
+            (r'(?=\()', Text, '#pop'),
+        ],
+        'classname': [
+            include('whitespace'),
+            (r'[a-zA-Z_]\w*', Name.Class, '#pop'),
+            # anonymous classes
+            (r'(?=\{)', Text, '#pop'),
+        ],
+        'modulename': [
+            include('whitespace'),
+            (r'\[', Punctuation, ('modulename2', 'tvarlist')),
+            (r'', Error, 'modulename2'),
+        ],
+        'modulename2': [
+            include('whitespace'),
+            (r'([a-zA-Z_]\w*)', Name.Namespace, '#pop:2'),
+        ],
+        'tvarlist': [
+            include('whitespace'),
+            include('operators'),
+            (r'\[', Punctuation, '#push'),
+            (r'\]', Punctuation, '#pop'),
+            (r',', Punctuation),
+            (r'(with|where)\b', Keyword),
+            (r'[a-zA-Z_]\w*', Name),
+        ],
+        'stringescape': [
+            (r'\\([\\abfnrtv"\']|\n|N{.*?}|u[a-fA-F0-9]{4}|'
+             r'U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape)
+        ],
+        'strings': [
+            (r'%(\([a-zA-Z0-9]+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?'
+             '[hlL]?[diouxXeEfFgGcrs%]', String.Interpol),
+            (r'[^\\\'"%\n]+', String),
+            # quotes, percents and backslashes must be parsed one at a time
+            (r'[\'"\\]', String),
+            # unhandled string formatting sign
+            (r'%', String)
+            # newlines are an error (use "nl" state)
+        ],
+        'nl': [
+            (r'\n', String)
+        ],
+        'dqs': [
+            (r'"', String, '#pop'),
+            # included here again for raw strings
+            (r'\\\\|\\"|\\\n', String.Escape),
+            include('strings')
+        ],
+        'sqs': [
+            (r"'", String, '#pop'),
+            # included here again for raw strings
+            (r"\\\\|\\'|\\\n", String.Escape),
+            include('strings')
+        ],
+        'tdqs': [
+            (r'"""', String, '#pop'),
+            include('strings'),
+            include('nl')
+        ],
+        'tsqs': [
+            (r"'''", String, '#pop'),
+            include('strings'),
+            include('nl')
+        ],
+     }
+
+
+class AdaLexer(RegexLexer):
+    """
+    For Ada source code.
+
+    *New in Pygments 1.3.*
+    """
+
+    name = 'Ada'
+    aliases = ['ada', 'ada95' 'ada2005']
+    filenames = ['*.adb', '*.ads', '*.ada']
+    mimetypes = ['text/x-ada']
+
+    flags = re.MULTILINE | re.I  # Ignore case
+
+    _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'
+
+    tokens = {
+        'root': [
+            (r'[^\S\n]+', Text),
+            (r'--.*?\n', Comment.Single),
+            (r'[^\S\n]+', Text),
+            (r'function|procedure|entry', Keyword.Declaration, 'subprogram'),
+            (r'(subtype|type)(\s+)([a-z0-9_]+)',
+             bygroups(Keyword.Declaration, Text, Keyword.Type), 'type_def'),
+            (r'task|protected', Keyword.Declaration),
+            (r'(subtype)(\s+)', bygroups(Keyword.Declaration, Text)),
+            (r'(end)(\s+)', bygroups(Keyword.Reserved, Text), 'end'),
+            (r'(pragma)(\s+)([a-zA-Z0-9_]+)', bygroups(Keyword.Reserved, Text,
+                                                       Comment.Preproc)),
+            (r'(true|false|null)\b', Keyword.Constant),
+            (r'(Byte|Character|Float|Integer|Long_Float|Long_Integer|'
+             r'Long_Long_Float|Long_Long_Integer|Natural|Positive|Short_Float|'
+             r'Short_Integer|Short_Short_Float|Short_Short_Integer|String|'
+             r'Wide_String|Duration)\b', Keyword.Type),
+            (r'(and(\s+then)?|in|mod|not|or(\s+else)|rem)\b', Operator.Word),
+            (r'generic|private', Keyword.Declaration),
+            (r'package', Keyword.Declaration, 'package'),
+            (r'array\b', Keyword.Reserved, 'array_def'),
+            (r'(with|use)(\s+)', bygroups(Keyword.Namespace, Text), 'import'),
+            (r'([a-z0-9_]+)(\s*)(:)(\s*)(constant)',
+             bygroups(Name.Constant, Text, Punctuation, Text,
+                      Keyword.Reserved)),
+            (r'<<[a-z0-9_]+>>', Name.Label),
+            (r'([a-z0-9_]+)(\s*)(:)(\s*)(declare|begin|loop|for|while)',
+             bygroups(Name.Label, Text, Punctuation, Text, Keyword.Reserved)),
+            (r'\b(abort|abs|abstract|accept|access|aliased|all|array|at|begin|'
+             r'body|case|constant|declare|delay|delta|digits|do|else|elsif|end|'
+             r'entry|exception|exit|interface|for|goto|if|is|limited|loop|new|'
+             r'null|of|or|others|out|overriding|pragma|protected|raise|range|'
+             r'record|renames|requeue|return|reverse|select|separate|subtype|'
+             r'synchronized|task|tagged|terminate|then|type|until|when|while|'
+             r'xor)\b',
+             Keyword.Reserved),
+            (r'"[^"]*"', String),
+            include('attribute'),
+            include('numbers'),
+            (r"'[^']'", String.Character),
+            (r'([a-z0-9_]+)(\s*|[(,])', bygroups(Name, using(this))),
+            (r"(<>|=>|:=|[\(\)\|:;,.'])", Punctuation),
+            (r'[*<>+=/&-]', Operator),
+            (r'\n+', Text),
+        ],
+        'numbers' : [
+            (r'[0-9_]+#[0-9a-f]+#', Number.Hex),
+            (r'[0-9_]+\.[0-9_]*', Number.Float),
+            (r'[0-9_]+', Number.Integer),
+        ],
+        'attribute' : [
+            (r"(')([a-zA-Z0-9_]+)", bygroups(Punctuation, Name.Attribute)),
+        ],
+        'subprogram' : [
+            (r'\(', Punctuation, ('#pop', 'formal_part')),
+            (r';', Punctuation, '#pop'),
+            (r'is\b', Keyword.Reserved, '#pop'),
+            (r'"[^"]+"|[a-z0-9_]+', Name.Function),
+            include('root'),
+        ],
+        'end' : [
+            ('(if|case|record|loop|select)', Keyword.Reserved),
+            ('"[^"]+"|[a-zA-Z0-9_]+', Name.Function),
+            ('[\n\s]+', Text),
+            (';', Punctuation, '#pop'),
+        ],
+        'type_def': [
+            (r';', Punctuation, '#pop'),
+            (r'\(', Punctuation, 'formal_part'),
+            (r'with|and|use', Keyword.Reserved),
+            (r'array\b', Keyword.Reserved, ('#pop', 'array_def')),
+            (r'record\b', Keyword.Reserved, ('formal_part')),
+            include('root'),
+        ],
+        'array_def' : [
+            (r';', Punctuation, '#pop'),
+            (r'([a-z0-9_]+)(\s+)(range)', bygroups(Keyword.Type, Text,
+                                                   Keyword.Reserved)),
+            include('root'),
+        ],
+        'import': [
+            (r'[a-z0-9_.]+', Name.Namespace, '#pop'),
+        ],
+        'formal_part' : [
+            (r'\)', Punctuation, '#pop'),
+            (r'([a-z0-9_]+)(\s*)(,|:[^=])', bygroups(Name.Variable,
+                                                     Text, Punctuation)),
+            (r'(in|not|null|out|access)\b', Keyword.Reserved),
+            include('root'),
+        ],
+        'package': [
+            ('body', Keyword.Declaration),
+            ('is\s+new|renames', Keyword.Reserved),
+            ('is', Keyword.Reserved, '#pop'),
+            (';', Punctuation, '#pop'),
+            ('\(', Punctuation, 'package_instantiation'),
+            ('([a-zA-Z0-9_.]+)', Name.Class),
+            include('root'),
+        ],
+        'package_instantiation': [
+            (r'("[^"]+"|[a-z0-9_]+)(\s+)(=>)', bygroups(Name.Variable,
+                                                        Text, Punctuation)),
+            (r'[a-z0-9._\'"]', Text),
+            (r'\)', Punctuation, '#pop'),
+            include('root'),
+        ],
+    }
+
+
+class Modula2Lexer(RegexLexer):
+    """
+    For `Modula-2 <http://www.modula2.org/>`_ source code.
+
+    Additional options that determine which keywords are highlighted:
+
+    `pim`
+        Select PIM Modula-2 dialect (default: True).
+    `iso`
+        Select ISO Modula-2 dialect (default: False).
+    `objm2`
+        Select Objective Modula-2 dialect (default: False).
+    `gm2ext`
+        Also highlight GNU extensions (default: False).
+
+    *New in Pygments 1.3.*
+    """
+    name = 'Modula-2'
+    aliases = ['modula2', 'm2']
+    filenames = ['*.def', '*.mod']
+    mimetypes = ['text/x-modula2']
+
+    flags = re.MULTILINE | re.DOTALL
+
+    tokens = {
+        'whitespace': [
+            (r'\n+', Text), # blank lines
+            (r'\s+', Text), # whitespace
+        ],
+        'identifiers': [
+            (r'([a-zA-Z_\$][a-zA-Z0-9_\$]*)', Name),
+        ],
+        'numliterals': [
+            (r'[01]+B', Number.Binary),        # binary number (ObjM2)
+            (r'[0-7]+B', Number.Oct),          # octal number (PIM + ISO)
+            (r'[0-7]+C', Number.Oct),          # char code (PIM + ISO)
+            (r'[0-9A-F]+C', Number.Hex),       # char code (ObjM2)
+            (r'[0-9A-F]+H', Number.Hex),       # hexadecimal number
+            (r'[0-9]+\.[0-9]+E[+-][0-9]+', Number.Float), # real number
+            (r'[0-9]+\.[0-9]+', Number.Float), # real number
+            (r'[0-9]+', Number.Integer),       # decimal whole number
+        ],
+        'strings': [
+            (r"'(\\\\|\\'|[^'])*'", String), # single quoted string
+            (r'"(\\\\|\\"|[^"])*"', String), # double quoted string
+        ],
+        'operators': [
+            (r'[*/+=#~&<>\^-]', Operator),
+            (r':=', Operator),   # assignment
+            (r'@', Operator),    # pointer deref (ISO)
+            (r'\.\.', Operator), # ellipsis or range
+            (r'`', Operator),    # Smalltalk message (ObjM2)
+            (r'::', Operator),   # type conversion (ObjM2)
+        ],
+        'punctuation': [
+            (r'[\(\)\[\]{},.:;|]', Punctuation),
+        ],
+        'comments': [
+            (r'//.*?\n', Comment.Single),       # ObjM2
+            (r'/\*(.*?)\*/', Comment.Multiline), # ObjM2
+            (r'\(\*([^\$].*?)\*\)', Comment.Multiline),
+            # TO DO: nesting of (* ... *) comments
+        ],
+        'pragmas': [
+            (r'\(\*\$(.*?)\*\)', Comment.Preproc), # PIM
+            (r'<\*(.*?)\*>', Comment.Preproc),     # ISO + ObjM2
+        ],
+        'root': [
+            include('whitespace'),
+            include('comments'),
+            include('pragmas'),
+            include('identifiers'),
+            include('numliterals'),
+            include('strings'),
+            include('operators'),
+            include('punctuation'),
+        ]
+    }
+
+    pim_reserved_words = [
+        # 40 reserved words
+        'AND', 'ARRAY', 'BEGIN', 'BY', 'CASE', 'CONST', 'DEFINITION',
+        'DIV', 'DO', 'ELSE', 'ELSIF', 'END', 'EXIT', 'EXPORT', 'FOR',
+        'FROM', 'IF', 'IMPLEMENTATION', 'IMPORT', 'IN', 'LOOP', 'MOD',
+        'MODULE', 'NOT', 'OF', 'OR', 'POINTER', 'PROCEDURE', 'QUALIFIED',
+        'RECORD', 'REPEAT', 'RETURN', 'SET', 'THEN', 'TO', 'TYPE',
+        'UNTIL', 'VAR', 'WHILE', 'WITH',
+    ]
+
+    pim_pervasives = [
+        # 31 pervasives
+        'ABS', 'BITSET', 'BOOLEAN', 'CAP', 'CARDINAL', 'CHAR', 'CHR', 'DEC',
+        'DISPOSE', 'EXCL', 'FALSE', 'FLOAT', 'HALT', 'HIGH', 'INC', 'INCL',
+        'INTEGER', 'LONGINT', 'LONGREAL', 'MAX', 'MIN', 'NEW', 'NIL', 'ODD',
+        'ORD', 'PROC', 'REAL', 'SIZE', 'TRUE', 'TRUNC', 'VAL',
+    ]
+
+    iso_reserved_words = [
+        # 46 reserved words
+        'AND', 'ARRAY', 'BEGIN', 'BY', 'CASE', 'CONST', 'DEFINITION', 'DIV',
+        'DO', 'ELSE', 'ELSIF', 'END', 'EXCEPT', 'EXIT', 'EXPORT', 'FINALLY',
+        'FOR', 'FORWARD', 'FROM', 'IF', 'IMPLEMENTATION', 'IMPORT', 'IN',
+        'LOOP', 'MOD', 'MODULE', 'NOT', 'OF', 'OR', 'PACKEDSET', 'POINTER',
+        'PROCEDURE', 'QUALIFIED', 'RECORD', 'REPEAT', 'REM', 'RETRY',
+        'RETURN', 'SET', 'THEN', 'TO', 'TYPE', 'UNTIL', 'VAR', 'WHILE',
+        'WITH',
+    ]
+
+    iso_pervasives = [
+        # 42 pervasives
+        'ABS', 'BITSET', 'BOOLEAN', 'CAP', 'CARDINAL', 'CHAR', 'CHR', 'CMPLX',
+        'COMPLEX', 'DEC', 'DISPOSE', 'EXCL', 'FALSE', 'FLOAT', 'HALT', 'HIGH',
+        'IM', 'INC', 'INCL', 'INT', 'INTEGER', 'INTERRUPTIBLE', 'LENGTH',
+        'LFLOAT', 'LONGCOMPLEX', 'LONGINT', 'LONGREAL', 'MAX', 'MIN', 'NEW',
+        'NIL', 'ODD', 'ORD', 'PROC', 'PROTECTION', 'RE', 'REAL', 'SIZE',
+        'TRUE', 'TRUNC', 'UNINTERRUBTIBLE', 'VAL',
+    ]
+
+    objm2_reserved_words = [
+        # base language, 42 reserved words
+        'AND', 'ARRAY', 'BEGIN', 'BY', 'CASE', 'CONST', 'DEFINITION', 'DIV',
+        'DO', 'ELSE', 'ELSIF', 'END', 'ENUM', 'EXIT', 'FOR', 'FROM', 'IF',
+        'IMMUTABLE', 'IMPLEMENTATION', 'IMPORT', 'IN', 'IS', 'LOOP', 'MOD',
+        'MODULE', 'NOT', 'OF', 'OPAQUE', 'OR', 'POINTER', 'PROCEDURE',
+        'RECORD', 'REPEAT', 'RETURN', 'SET', 'THEN', 'TO', 'TYPE',
+        'UNTIL', 'VAR', 'VARIADIC', 'WHILE',
+        # OO extensions, 16 reserved words
+        'BYCOPY', 'BYREF', 'CLASS', 'CONTINUE', 'CRITICAL', 'INOUT', 'METHOD',
+        'ON', 'OPTIONAL', 'OUT', 'PRIVATE', 'PROTECTED', 'PROTOCOL', 'PUBLIC',
+        'SUPER', 'TRY',
+    ]
+
+    objm2_pervasives = [
+        # base language, 38 pervasives
+        'ABS', 'BITSET', 'BOOLEAN', 'CARDINAL', 'CHAR', 'CHR', 'DISPOSE',
+        'FALSE', 'HALT', 'HIGH', 'INTEGER', 'INRANGE', 'LENGTH', 'LONGCARD',
+        'LONGINT', 'LONGREAL', 'MAX', 'MIN', 'NEG', 'NEW', 'NEXTV', 'NIL',
+        'OCTET', 'ODD', 'ORD', 'PRED', 'PROC', 'READ', 'REAL', 'SUCC', 'TMAX',
+        'TMIN', 'TRUE', 'TSIZE', 'UNICHAR', 'VAL', 'WRITE', 'WRITEF',
+        # OO extensions, 3 pervasives
+        'OBJECT', 'NO', 'YES',
+    ]
+
+    gnu_reserved_words = [
+        # 10 additional reserved words
+        'ASM', '__ATTRIBUTE__', '__BUILTIN__', '__COLUMN__', '__DATE__',
+        '__FILE__', '__FUNCTION__', '__LINE__', '__MODULE__', 'VOLATILE',
+    ]
+
+    gnu_pervasives = [
+        # 21 identifiers, actually from pseudo-module SYSTEM
+        # but we will highlight them as if they were pervasives
+        'BITSET8', 'BITSET16', 'BITSET32', 'CARDINAL8', 'CARDINAL16',
+        'CARDINAL32', 'CARDINAL64', 'COMPLEX32', 'COMPLEX64', 'COMPLEX96',
+        'COMPLEX128', 'INTEGER8', 'INTEGER16', 'INTEGER32', 'INTEGER64',
+        'REAL8', 'REAL16', 'REAL32', 'REAL96', 'REAL128', 'THROW',
+    ]
+
+    def __init__(self, **options):
+        self.reserved_words = set()
+        self.pervasives = set()
+        # ISO Modula-2
+        if get_bool_opt(options, 'iso', False):
+            self.reserved_words.update(self.iso_reserved_words)
+            self.pervasives.update(self.iso_pervasives)
+        # Objective Modula-2
+        elif get_bool_opt(options, 'objm2', False):
+            self.reserved_words.update(self.objm2_reserved_words)
+            self.pervasives.update(self.objm2_pervasives)
+        # PIM Modula-2 (DEFAULT)
+        else:
+            self.reserved_words.update(self.pim_reserved_words)
+            self.pervasives.update(self.pim_pervasives)
+        # GNU extensions
+        if get_bool_opt(options, 'gm2ext', False):
+            self.reserved_words.update(self.gnu_reserved_words)
+            self.pervasives.update(self.gnu_pervasives)
+        # initialise
+        RegexLexer.__init__(self, **options)
+
+    def get_tokens_unprocessed(self, text):
+        for index, token, value in \
+            RegexLexer.get_tokens_unprocessed(self, text):
+            # check for reserved words and pervasives
+            if token is Name:
+                if value in self.reserved_words:
+                    token = Keyword.Reserved
+                elif value in self.pervasives:
+                    token = Keyword.Pervasive
+            # return result
+            yield index, token, value
--- a/MoinMoin/support/pygments/lexers/functional.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexers/functional.py	Tue Mar 09 18:06:25 2010 +0300
@@ -10,10 +10,6 @@
 """
 
 import re
-try:
-    set
-except NameError:
-    from sets import Set as set
 
 from pygments.lexer import Lexer, RegexLexer, bygroups, include, do_insertions
 from pygments.token import Text, Comment, Operator, Keyword, Name, \
@@ -474,7 +470,7 @@
 
         style = self.options.get('litstyle')
         if style is None:
-            style = (text.lstrip()[0] in '%\\') and 'latex' or 'bird'
+            style = (text.lstrip()[0:1] in '%\\') and 'latex' or 'bird'
 
         code = ''
         insertions = []
--- a/MoinMoin/support/pygments/lexers/math.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexers/math.py	Tue Mar 09 18:06:25 2010 +0300
@@ -10,10 +10,6 @@
 """
 
 import re
-try:
-    set
-except NameError:
-    from sets import Set as set
 
 from pygments.lexer import Lexer, RegexLexer, bygroups, include, do_insertions
 from pygments.token import Comment, String, Punctuation, Keyword, Name, \
@@ -22,7 +18,7 @@
 from pygments.lexers.agile import PythonLexer
 
 __all__ = ['MuPADLexer', 'MatlabLexer', 'MatlabSessionLexer', 'NumPyLexer',
-           'SLexer']
+           'RConsoleLexer', 'SLexer']
 
 
 class MuPADLexer(RegexLexer):
@@ -340,6 +336,52 @@
                 yield index, token, value
 
 
+class RConsoleLexer(Lexer):
+    """
+    For R console transcripts or R CMD BATCH output files.
+    """
+
+    name = 'RConsole'
+    aliases = ['rconsole', 'rout']
+    filenames = ['*.Rout']
+
+    def get_tokens_unprocessed(self, text):
+        slexer = SLexer(**self.options)
+
+        current_code_block = ''
+        insertions = []
+
+        for match in line_re.finditer(text):
+            line = match.group()
+            if line.startswith('>') or line.startswith('+'):
+                # Colorize the prompt as such,
+                # then put rest of line into current_code_block
+                insertions.append((len(current_code_block),
+                                   [(0, Generic.Prompt, line[:2])]))
+                current_code_block += line[2:]
+            else:
+                # We have reached a non-prompt line!
+                # If we have stored prompt lines, need to process them first.
+                if current_code_block:
+                    # Weave together the prompts and highlight code.
+                    for item in do_insertions(insertions,
+                          slexer.get_tokens_unprocessed(current_code_block)):
+                        yield item
+                    # Reset vars for next code block.
+                    current_code_block = ''
+                    insertions = []
+                # Now process the actual line itself, this is output from R.
+                yield match.start(), Generic.Output, line
+
+        # If we happen to end on a code block with nothing after it, need to
+        # process the last code block. This is neither elegant nor DRY so
+        # should be changed.
+        if current_code_block:
+            for item in do_insertions(insertions,
+                    slexer.get_tokens_unprocessed(current_code_block)):
+                yield item
+
+
 class SLexer(RegexLexer):
     """
     For S, S-plus, and R source code.
--- a/MoinMoin/support/pygments/lexers/other.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexers/other.py	Tue Mar 09 18:06:25 2010 +0300
@@ -321,14 +321,14 @@
 
 class BashLexer(RegexLexer):
     """
-    Lexer for (ba)sh shell scripts.
+    Lexer for (ba|k|)sh shell scripts.
 
     *New in Pygments 0.6.*
     """
 
     name = 'Bash'
-    aliases = ['bash', 'sh']
-    filenames = ['*.sh', '*.ebuild', '*.eclass']
+    aliases = ['bash', 'sh', 'ksh']
+    filenames = ['*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass']
     mimetypes = ['application/x-sh', 'application/x-shellscript']
 
     tokens = {
@@ -633,11 +633,11 @@
         ],
         '_parenth_helper' : [
             include('whitespaces'),
+            (r'(\d+r)?-?\d+(\.\d+)?(e-?\d+)?', Number),
             (r'[-+*/\\~<>=|&#!?,@%\w+:]+', String.Symbol),
             # literals
             (r'\'[^\']*\'', String),
             (r'\$.', String.Char),
-            (r'(\d+r)?-?\d+(\.\d+)?(e-?\d+)?', Number),
             (r'#*\(', String.Symbol, 'inner_parenth'),
         ],
         'parenth' : [
@@ -2107,45 +2107,45 @@
     feature_keywords_regexp  = ur'^(기능|機能|功能|フィーチャ|خاصية|תכונה|Функционалност|Функционал|Особина|Могућност|Özellik|Właściwość|Tính năng|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalidade|Fonctionnalité|Fitur|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd)(:)(.*)$'
     scenario_keywords_regexp = ur'^(\s*)(시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|سيناريو مخطط|سيناريو|الخلفية|תרחיש|תבנית תרחיש|רקע|Тарих|Сценарио|Сценарий структураси|Сценарий|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Пример|Предыстория|Предистория|Позадина|Основа|Концепт|Контекст|Założenia|Tình huống|Tausta|Taust|Tapausaihio|Tapaus|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenario Outline|Scenario Amlinellol|Scenario|Scenarijus|Scenarijaus šablonas|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l\'escenari|Escenario|Escenari|Dasar|Contexto|Contexte|Contesto|Condiţii|Conditii|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y\'all|Achtergrond|Abstrakt Scenario|Abstract Scenario)(:)(.*)$'
     examples_regexp          = ur'^(\s*)(예|例子|例|サンプル|امثلة|דוגמאות|Сценарији|Примери|Мисоллар|Значения|Örnekler|Voorbeelden|Variantai|Tapaukset|Scenarios|Scenariji|Scenarijai|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Piemēri|Pavyzdžiai|Paraugs|Juhtumid|Exemplos|Exemples|Exemplele|Exempel|Examples|Esempi|Enghreifftiau|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Contoh|Cobber|Beispiele)(:)(.*)$'
-    step_keywords_regexp     = ur'^(\s*)(하지만|조건|만일|그리고|그러면|那麼|那么|而且|當|当|前提|假設|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|و |متى |لكن |عندما |ثم |بفرض |اذاً |כאשר |וגם |בהינתן |אזי |אז |אבל |Унда |То |Онда |Но |Лекин |Когато |Када |Кад |К тому же |И |Задато |Задати |Задате |Если |Допустим |Дадено |Ва |Бирок |Аммо |Али |Агар |А |Și |És |anrhegedig a |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Yna |Ya know how |Ya gotta |Y |Wtedy |When y\'all |When |Wenn |WEN |Và |Ve |Und |Un |Thì |Then y\'all |Then |Tapi |Tak |Tada |Tad |Så |Soit |Siis |Si |Quando |Quand |Quan |Pryd |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Når |När |Niin |Nhưng |N |Mutta |Men |Mas |Maka |Majd |Mais |Maar |Ma |Lorsque |Lorsqu\'|Kun |Kuid |Kui |Khi |Keď |Ketika |Když |Kai |Kada |Kad |Jeżeli |Ja |Ir |I CAN HAZ |I |Ha |Givet |Given y\'all |Given |Gitt |Gegeven |Gegeben sei |Fakat |Eğer ki |Etant donné |Et |Então |Entonces |Entao |En |Eeldades |E |Duota |Donat |Donada |Diyelim ki |Dengan |De |Dato |Dar |Dann |Dan |Dado |Dacă |Daca |DEN |Când |Cuando |Cho |Cept |Cand |But y\'all |But |Biết |Bet |BUT |Atunci |And y\'all |And |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Aber |AN |A také |A )'
+    step_keywords_regexp     = ur'^(\s*)(하지만|조건|만일|그리고|그러면|那麼|那么|而且|當|当|前提|假設|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|و |متى |لكن |عندما |ثم |بفرض |اذاً |כאשר |וגם |בהינתן |אזי |אז |אבל |Унда |То |Онда |Но |Лекин |Когато |Када |Кад |К тому же |И |Задато |Задати |Задате |Если |Допустим |Дадено |Ва |Бирок |Аммо |Али |Агар |А |Și |És |anrhegedig a |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Yna |Ya know how |Ya gotta |Y |Wtedy |When y\'all |When |Wenn |WEN |Và |Ve |Und |Un |Thì |Then y\'all |Then |Tapi |Tak |Tada |Tad |Så |Stel |Soit |Siis |Si |Quando |Quand |Quan |Pryd |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Når |När |Niin |Nhưng |N |Mutta |Men |Mas |Maka |Majd |Mais |Maar |Ma |Lorsque |Lorsqu\'|Kun |Kuid |Kui |Khi |Keď |Ketika |Když |Kai |Kada |Kad |Jeżeli |Ja |Ir |I CAN HAZ |I |Ha |Givet |Given y\'all |Given |Gitt |Gegeven |Gegeben sei |Fakat |Eğer ki |Etant donné |Et |Então |Entonces |Entao |En |Eeldades |E |Duota |Donat |Donada |Diyelim ki |Dengan |De |Dato |Dar |Dann |Dan |Dado |Dacă |Daca |DEN |Când |Cuando |Cho |Cept |Cand |But y\'all |But |Biết |Bet |BUT |Atunci |And y\'all |And |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Aber |AN |A také |A |\* )'
 
     tokens = {
         'comments': [
-            (r'#.*$', Comment),
+            (r'#.*$', Comment)
           ],
         'multiline_descriptions' : [
             (step_keywords_regexp, Keyword, "#pop"),
             include('comments'),
-            (r"(\s|.)", Name.Constant),
+            (r"(\s|.)", Name.Constant)
           ],
         'multiline_descriptions_on_stack' : [
             (step_keywords_regexp, Keyword, "#pop:2"),
             include('comments'),
-            (r"(\s|.)", Name.Constant),
+            (r"(\s|.)", Name.Constant)
           ],
         'scenario_table_description': [
             (r"\s+\|", Text, 'scenario_table_header'),
             include('comments'),
-            (r"(\s|.)", Name.Constant),
+            (r"(\s|.)", Name.Constant)
           ],
         'scenario_table_header': [
             (r"\s+\|\s*$", Text, "#pop:2"),
             (r"(\s+\|\s*)(#.*)$", bygroups(Text, Comment), "#pop:2"),
             include('comments'),
             (r"\s+\|", Text),
-            (r"[^\|]", Name.Variable),
+            (r"[^\|]", Name.Variable)
           ],
         'scenario_sections_on_stack': [
             (scenario_keywords_regexp,
              bygroups(Text, Name.Class, Name.Class, Name.Constant),
-             "multiline_descriptions_on_stack"),
+             "multiline_descriptions_on_stack")
             ],
         'narrative': [
             include('scenario_sections_on_stack'),
-            (r"(\s|.)", Name.Builtin),
+            (r"(\s|.)", Name.Builtin)
           ],
         'table_vars': [
-            (r'(<[^>]*>)', bygroups(Name.Variable)),
+            (r'(<[^>]*>)', bygroups(Name.Variable))
           ],
         'string': [
             include('table_vars'),
@@ -2159,16 +2159,11 @@
             (r'"', String, "#pop"),
             include('string'),
           ],
-        'single_string': [
-            (r"'", String, "#pop"),
-            include('string'),
-          ],
         'root': [
             (r'\n', Text),
             include('comments'),
             (r'"""', String, "py_string"),
             (r'"', String, "double_string"),
-            (r"'", String, "single_string"),
             include('table_vars'),
             (r'@[^@\s]+', Name.Namespace),
             (step_keywords_regexp, bygroups(Text, Keyword)),
@@ -2180,7 +2175,7 @@
             (examples_regexp,
              bygroups(Text, Name.Class, Name.Class, Name.Constant),
              "scenario_table_description"),
-            (r'(\s|.)', Text),
+            (r'(\s|.)', Text)
         ]
     }
 
--- a/MoinMoin/support/pygments/lexers/parsers.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexers/parsers.py	Tue Mar 09 18:06:25 2010 +0300
@@ -12,17 +12,15 @@
 import re
 
 from pygments.lexer import RegexLexer, DelegatingLexer, \
-    include, bygroups, using, this
-from pygments.token import Error, Punctuation, Generic, Other, \
-    Text, Comment, Operator, Keyword, Name, String, Number, Whitespace
+    include, bygroups, using
+from pygments.token import Punctuation, Other, Text, Comment, Operator, \
+     Keyword, Name, String, Number, Whitespace
 from pygments.lexers.compiled import JavaLexer, CLexer, CppLexer, \
     ObjectiveCLexer, DLexer
 from pygments.lexers.dotnet import CSharpLexer
 from pygments.lexers.agile import RubyLexer, PythonLexer, PerlLexer
 from pygments.lexers.web import ActionScriptLexer
-# Use TextLexer during development to just focus on one part of a delegating
-# lexer.
-from pygments.lexers.special import TextLexer
+
 
 __all__ = ['RagelLexer', 'RagelEmbeddedLexer', 'RagelCLexer', 'RagelDLexer',
            'RagelCppLexer', 'RagelObjectiveCLexer', 'RagelRubyLexer',
--- a/MoinMoin/support/pygments/lexers/templates.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexers/templates.py	Tue Mar 09 18:06:25 2010 +0300
@@ -10,10 +10,6 @@
 """
 
 import re
-try:
-    set
-except NameError:
-    from sets import Set as set
 
 from pygments.lexers.web import \
      PhpLexer, HtmlLexer, XmlLexer, JavascriptLexer, CssLexer
@@ -38,7 +34,8 @@
            'MakoHtmlLexer', 'MakoXmlLexer', 'MakoJavascriptLexer',
            'MakoCssLexer', 'JspLexer', 'CheetahLexer', 'CheetahHtmlLexer',
            'CheetahXmlLexer', 'CheetahJavascriptLexer',
-           'EvoqueLexer', 'EvoqueHtmlLexer', 'EvoqueXmlLexer']
+           'EvoqueLexer', 'EvoqueHtmlLexer', 'EvoqueXmlLexer',
+           'ColdfusionLexer', 'ColdfusionHtmlLexer']
 
 
 class ErbLexer(Lexer):
@@ -246,7 +243,7 @@
             (r'\.[a-zA-Z0-9_]+', Name.Variable),
             (r':?"(\\\\|\\"|[^"])*"', String.Double),
             (r":?'(\\\\|\\'|[^'])*'", String.Single),
-            (r'([{}()\[\]+\-*/,:]|[><=]=?)', Operator),
+            (r'([{}()\[\]+\-*/,:~]|[><=]=?)', Operator),
             (r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
              r"0[xX][0-9a-fA-F]+[Ll]?", Number),
         ],
@@ -1294,3 +1291,97 @@
     def __init__(self, **options):
         super(EvoqueXmlLexer, self).__init__(XmlLexer, EvoqueLexer,
                                              **options)
+
+class ColdfusionLexer(RegexLexer):
+    """
+    Coldfusion statements
+    """
+    name = 'cfstatement'
+    aliases = ['cfs']
+    filenames = []
+    mimetypes = []
+    flags = re.IGNORECASE | re.MULTILINE
+
+    tokens = {
+        'root': [
+            (r'//.*', Comment),
+            (r'\+\+|--', Operator),
+            (r'[-+*/^&=!]', Operator),
+            (r'<=|>=|<|>', Operator),
+            (r'mod\b', Operator),
+            (r'(eq|lt|gt|lte|gte|not|is|and|or)\b', Operator),
+            (r'\|\||&&', Operator),
+            (r'"', String.Double, 'string'),
+            # There is a special rule for allowing html in single quoted
+            # strings, evidently.
+            (r"'.*?'", String.Single),
+            (r'\d+', Number),
+            (r'(if|else|len|var|case|default|break|switch)\b', Keyword),
+            (r'([A-Za-z_$][A-Za-z0-9_.]*)\s*(\()', bygroups(Name.Function, Punctuation)),
+            (r'[A-Za-z_$][A-Za-z0-9_.]*', Name.Variable),
+            (r'[()\[\]{};:,.\\]', Punctuation),
+            (r'\s+', Text),
+        ],
+        'string': [
+            (r'""', String.Double),
+            (r'#.+?#', String.Interp),
+            (r'[^"#]+', String.Double),
+            (r'#', String.Double),
+            (r'"', String.Double, '#pop'),
+        ],
+    }
+
+class ColdfusionMarkupLexer(RegexLexer):
+    """
+    Coldfusion markup only
+    """
+    name = 'Coldfusion'
+    aliases = ['cf']
+    filenames = []
+    mimetypes = []
+
+    tokens = {
+        'root': [
+            (r'[^<]+', Other),
+            include('tags'),
+            (r'<[^<>]*', Other),
+        ],
+        'tags': [
+            (r'(?s)<!---.*?--->', Comment.Multiline),
+            (r'(?s)<!--.*?-->', Comment),
+            (r'<cfoutput.*?>', Name.Builtin, 'cfoutput'),
+            (r'(?s)(<cfscript.*?>)(.+?)(</cfscript.*?>)',
+             bygroups(Name.Builtin, using(ColdfusionLexer), Name.Builtin)),
+            # negative lookbehind is for strings with embedded >
+            (r'(?s)(</?cf(?:component|include|if|else|elseif|loop|return|'
+             r'dbinfo|dump|abort|location|invoke|throw|file|savecontent|'
+             r'mailpart|mail|header|content|zip|image|lock|argument|try|'
+             r'catch|break|directory|http|set|function|param)\b)(.*?)((?<!\\)>)',
+             bygroups(Name.Builtin, using(ColdfusionLexer), Name.Builtin)),
+        ],
+        'cfoutput': [
+            (r'[^#<]+', Other),
+            (r'(#)(.*?)(#)', bygroups(Punctuation, using(ColdfusionLexer),
+                                      Punctuation)),
+            #(r'<cfoutput.*?>', Name.Builtin, '#push'),
+            (r'</cfoutput.*?>', Name.Builtin, '#pop'),
+            include('tags'),
+            (r'(?s)<[^<>]*', Other),
+            (r'#', Other),
+        ],
+    }
+
+
+class ColdfusionHtmlLexer(DelegatingLexer):
+    """
+    Coldfusion markup in html
+    """
+    name = 'Coldufsion HTML'
+    aliases = ['cfm']
+    filenames = ['*.cfm', '*.cfml', '*.cfc']
+    mimetypes = ['application/x-coldfusion']
+
+    def __init__(self, **options):
+        super(ColdfusionHtmlLexer, self).__init__(HtmlLexer, ColdfusionMarkupLexer,
+                                                  **options)
+
--- a/MoinMoin/support/pygments/lexers/text.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexers/text.py	Tue Mar 09 18:06:25 2010 +0300
@@ -10,10 +10,6 @@
 """
 
 import re
-try:
-    set
-except NameError:
-    from sets import Set as set
 from bisect import bisect
 
 from pygments.lexer import Lexer, LexerContext, RegexLexer, ExtendedRegexLexer, \
@@ -638,7 +634,8 @@
     tokens = {
         'root': [
             # Heading with overline
-            (r'^(=+|-+|`+|:+|\.+|\'+|"+|~+|\^+|_+|\*+|\++|#+)([ \t]*\n)(.+)(\n)(\1)(\n)',
+            (r'^(=+|-+|`+|:+|\.+|\'+|"+|~+|\^+|_+|\*+|\++|#+)([ \t]*\n)'
+             r'(.+)(\n)(\1)(\n)',
              bygroups(Generic.Heading, Text, Generic.Heading,
                       Text, Generic.Heading, Text)),
             # Plain heading
@@ -658,24 +655,33 @@
              bygroups(Text, Number, using(this, state='inline'))),
             (r'^(\s*)(\(?[A-Za-z]+\))( .+\n(?:\1  .+\n)+)',
              bygroups(Text, Number, using(this, state='inline'))),
+            # Line blocks
+            (r'^(\s*)(\|)( .+\n(?:\|  .+\n)*)',
+             bygroups(Text, Operator, using(this, state='inline'))),
             # Sourcecode directives
             (r'^( *\.\.)(\s*)((?:source)?code)(::)([ \t]*)([^\n]+)'
              r'(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\8.*|)\n)+)',
              _handle_sourcecode),
             # A directive
-            (r'^( *\.\.)(\s*)([\w-]+)(::)(?:([ \t]*)(.+))?',
-             bygroups(Punctuation, Text, Operator.Word, Punctuation, Text, Keyword)),
+            (r'^( *\.\.)(\s*)([\w:-]+?)(::)(?:([ \t]*)(.*))',
+             bygroups(Punctuation, Text, Operator.Word, Punctuation, Text,
+                      using(this, state='inline'))),
             # A reference target
             (r'^( *\.\.)(\s*)([\w\t ]+:)(.*?)$',
              bygroups(Punctuation, Text, Name.Tag, using(this, state='inline'))),
             # A footnote target
             (r'^( *\.\.)(\s*)(\[.+\])(.*?)$',
              bygroups(Punctuation, Text, Name.Tag, using(this, state='inline'))),
+            # A substitution def
+            (r'^( *\.\.)(\s*)(\|.+\|)(\s*)([\w:-]+?)(::)(?:([ \t]*)(.*))',
+             bygroups(Punctuation, Text, Name.Tag, Text, Operator.Word,
+                      Punctuation, Text, using(this, state='inline'))),
             # Comments
             (r'^ *\.\..*(\n( +.*\n|\n)+)?', Comment.Preproc),
             # Field list
-            (r'^( *)(:.*?:)([ \t]+)(.*?)$', bygroups(Text, Name.Class, Text,
-                                                     Name.Function)),
+            (r'^( *)(:[a-zA-Z-]+:)(\s*)$', bygroups(Text, Name.Class, Text)),
+            (r'^( *)(:.*?:)([ \t]+)(.*?)$',
+             bygroups(Text, Name.Class, Text, Name.Function)),
             # Definition list
             (r'^([^ ].*(?<!::)\n)((?:(?: +.*)\n)+)',
              bygroups(using(this, state='inline'), using(this, state='inline'))),
@@ -687,12 +693,13 @@
         'inline': [
             (r'\\.', Text), # escape
             (r'``', String, 'literal'), # code
-            (r'(`)(.+?)(`__?)',
-             bygroups(Punctuation, using(this), Punctuation)), # reference
-            (r'(`.+?`)(:[a-zA-Z0-9-]+?:)?',
+            (r'(`.+?)(<.+?>)(`__?)',  # reference with inline target
+             bygroups(String, String.Interpol, String)),
+            (r'`.+?`__?', String), # reference
+            (r'(`.+?`)(:[a-zA-Z0-9:-]+?:)?',
              bygroups(Name.Variable, Name.Attribute)), # role
-            (r'(:[a-zA-Z0-9-]+?:)(`.+?`)',
-             bygroups(Name.Attribute, Name.Variable)), # user-defined role
+            (r'(:[a-zA-Z0-9:-]+?:)(`.+?`)',
+             bygroups(Name.Attribute, Name.Variable)), # role (content first)
             (r'\*\*.+?\*\*', Generic.Strong), # Strong emphasis
             (r'\*.+?\*', Generic.Emph), # Emphasis
             (r'\[.*?\]_', String), # Footnote or citation
@@ -1013,6 +1020,7 @@
             (r'[}]', Text),
             (r'[^,]$', Name.Function, '#pop'),
             (r'([\+\.a-zA-Z0-9-][\s\n]*)', Name.Function),
+            (r'\[.*?\]', Name.Entity),
         ],
         'depend_vers': [
             (r'\),', Text, '#pop'),
@@ -1503,6 +1511,7 @@
             (r'[^\s;#{}$]+', String), # catch all
             (r'/[^\s;#]*', Name), # pathname
             (r'\s+', Text),
+            (r'[$;]', Text),  # leftover characters
         ],
     }
 
--- a/MoinMoin/support/pygments/lexers/web.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/lexers/web.py	Tue Mar 09 18:06:25 2010 +0300
@@ -10,21 +10,20 @@
 """
 
 import re
-try:
-    set
-except NameError:
-    from sets import Set as set
 
-from pygments.lexer import RegexLexer, bygroups, using, include, this
+from pygments.lexer import RegexLexer, ExtendedRegexLexer, bygroups, using, \
+     include, this
 from pygments.token import \
      Text, Comment, Operator, Keyword, Name, String, Number, Other, Punctuation
 from pygments.util import get_bool_opt, get_list_opt, looks_like_xml, \
                           html_doctype_matches
+from pygments.lexers.agile import RubyLexer
 
 
 __all__ = ['HtmlLexer', 'XmlLexer', 'JavascriptLexer', 'CssLexer',
            'PhpLexer', 'ActionScriptLexer', 'XsltLexer', 'ActionScript3Lexer',
-           'MxmlLexer']
+           'MxmlLexer', 'HaxeLexer', 'HamlLexer', 'SassLexer',
+           'ObjectiveJLexer', 'CoffeeScriptLexer']
 
 
 class JavascriptLexer(RegexLexer):
@@ -312,7 +311,7 @@
              r'list-style|margin-bottom|margin-left|margin-right|'
              r'margin-top|margin|marker-offset|marks|max-height|max-width|'
              r'min-height|min-width|opacity|orphans|outline|outline-color|'
-             r'outline-style|outline-width|overflow|padding-bottom|'
+             r'outline-style|outline-width|overflow(?:-x|-y|)|padding-bottom|'
              r'padding-left|padding-right|padding-top|padding|page|'
              r'page-break-after|page-break-before|page-break-inside|'
              r'pause-after|pause-before|pause|pitch|pitch-range|'
@@ -390,6 +389,229 @@
     }
 
 
+class ObjectiveJLexer(RegexLexer):
+    """
+    For Objective-J source code with preprocessor directives.
+
+    *New in Pygments 1.3.*
+    """
+
+    name = 'Objective-J'
+    aliases = ['objective-j', 'objectivej', 'obj-j', 'objj']
+    filenames = ['*.j']
+    mimetypes = ['text/x-objective-j']
+
+    #: optional Comment or Whitespace
+    _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)*'
+
+    flags = re.DOTALL | re.MULTILINE
+
+    tokens = {
+        'root': [
+            include('whitespace'),
+
+            # function definition
+            (r'^(' + _ws + r'[\+-]' + _ws + r')([\(a-zA-Z_].*?[^\(])(' + _ws + '{)',
+             bygroups(using(this), using(this, state='function_signature'),
+                      using(this))),
+
+            # class definition
+            (r'(@interface|@implementation)(\s+)', bygroups(Keyword, Text),
+             'classname'),
+            (r'(@class|@protocol)(\s*)', bygroups(Keyword, Text),
+             'forward_classname'),
+            (r'(\s*)(@end)(\s*)', bygroups(Text, Keyword, Text)),
+
+            include('statements'),
+            ('[{\(\)}]', Punctuation),
+            (';', Punctuation),
+        ],
+        'whitespace': [
+            (r'(@import)(\s+)("(\\\\|\\"|[^"])*")',
+             bygroups(Comment.Preproc, Text, String.Double)),
+            (r'(@import)(\s+)(<(\\\\|\\>|[^>])*>)',
+             bygroups(Comment.Preproc, Text, String.Double)),
+            (r'(#(?:include|import))(\s+)("(\\\\|\\"|[^"])*")',
+             bygroups(Comment.Preproc, Text, String.Double)),
+            (r'(#(?:include|import))(\s+)(<(\\\\|\\>|[^>])*>)',
+             bygroups(Comment.Preproc, Text, String.Double)),
+
+            (r'#if\s+0', Comment.Preproc, 'if0'),
+            (r'#', Comment.Preproc, 'macro'),
+
+            (r'\n', Text),
+            (r'\s+', Text),
+            (r'\\\n', Text), # line continuation
+            (r'//(\n|(.|\n)*?[^\\]\n)', Comment.Single),
+            (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline),
+            (r'<!--', Comment),
+        ],
+        'slashstartsregex': [
+            include('whitespace'),
+            (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
+             r'([gim]+\b|\B)', String.Regex, '#pop'),
+            (r'(?=/)', Text, ('#pop', 'badregex')),
+            (r'', Text, '#pop'),
+        ],
+        'badregex': [
+            ('\n', Text, '#pop'),
+        ],
+        'statements': [
+            (r'(L|@)?"', String, 'string'),
+            (r"(L|@)?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'",
+             String.Char),
+            (r'"(\\\\|\\"|[^"])*"', String.Double),
+            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?', Number.Float),
+            (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
+            (r'0x[0-9a-fA-F]+[Ll]?', Number.Hex),
+            (r'0[0-7]+[Ll]?', Number.Oct),
+            (r'\d+[Ll]?', Number.Integer),
+
+            (r'^(?=\s|/|<!--)', Text, 'slashstartsregex'),
+
+            (r'\+\+|--|~|&&|\?|:|\|\||\\(?=\n)|'
+             r'(<<|>>>?|==?|!=?|[-<>+*%&\|\^/])=?',
+             Operator, 'slashstartsregex'),
+            (r'[{(\[;,]', Punctuation, 'slashstartsregex'),
+            (r'[})\].]', Punctuation),
+
+            (r'(for|in|while|do|break|return|continue|switch|case|default|if|'
+             r'else|throw|try|catch|finally|new|delete|typeof|instanceof|void|'
+             r'prototype|__proto__)\b', Keyword, 'slashstartsregex'),
+
+            (r'(var|with|function)\b', Keyword.Declaration, 'slashstartsregex'),
+
+            (r'(@selector|@private|@protected|@public|@encode|'
+             r'@synchronized|@try|@throw|@catch|@finally|@end|@property|'
+             r'@synthesize|@dynamic|@for|@accessors|new)\b', Keyword),
+
+            (r'(int|long|float|short|double|char|unsigned|signed|void|'
+             r'id|BOOL|bool|boolean|IBOutlet|IBAction|SEL|@outlet|@action)\b',
+             Keyword.Type),
+
+            (r'(self|super)\b', Name.Builtin),
+
+            (r'(TRUE|YES|FALSE|NO|Nil|nil|NULL)\b', Keyword.Constant),
+            (r'(true|false|null|NaN|Infinity|undefined)\b', Keyword.Constant),
+            (r'(ABS|ASIN|ACOS|ATAN|ATAN2|SIN|COS|TAN|EXP|POW|CEIL|FLOOR|ROUND|'
+             r'MIN|MAX|RAND|SQRT|E|LN2|LN10|LOG2E|LOG10E|PI|PI2|PI_2|SQRT1_2|'
+             r'SQRT2)\b', Keyword.Constant),
+
+            (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
+             r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
+             r'decodeURIComponent|encodeURI|encodeURIComponent|'
+             r'Error|eval|isFinite|isNaN|parseFloat|parseInt|document|this|'
+             r'window)\b', Name.Builtin),
+
+            (r'([$a-zA-Z_][a-zA-Z0-9_]*)(' + _ws + r')(?=\()',
+             bygroups(Name.Function, using(this))),
+
+            (r'[$a-zA-Z_][a-zA-Z0-9_]*', Name),
+        ],
+        'classname' : [
+            # interface definition that inherits
+            (r'([a-zA-Z_][a-zA-Z0-9_]*)(' + _ws + r':' + _ws +
+             r')([a-zA-Z_][a-zA-Z0-9_]*)?',
+             bygroups(Name.Class, using(this), Name.Class), '#pop'),
+            # interface definition for a category
+            (r'([a-zA-Z_][a-zA-Z0-9_]*)(' + _ws + r'\()([a-zA-Z_][a-zA-Z0-9_]*)(\))',
+             bygroups(Name.Class, using(this), Name.Label, Text), '#pop'),
+            # simple interface / implementation
+            (r'([a-zA-Z_][a-zA-Z0-9_]*)', Name.Class, '#pop'),
+        ],
+        'forward_classname' : [
+            (r'([a-zA-Z_][a-zA-Z0-9_]*)(\s*,\s*)',
+             bygroups(Name.Class, Text), '#push'),
+            (r'([a-zA-Z_][a-zA-Z0-9_]*)(\s*;?)',
+             bygroups(Name.Class, Text), '#pop'),
+        ],
+        'function_signature': [
+            include('whitespace'),
+
+            # start of a selector w/ parameters
+            (r'(\(' + _ws + r')'                # open paren
+             r'([a-zA-Z_][a-zA-Z0-9_]+)'        # return type
+             r'(' + _ws + r'\)' + _ws + r')'    # close paren
+             r'([$a-zA-Z_][a-zA-Z0-9_]+' + _ws + r':)', # function name
+             bygroups(using(this), Keyword.Type, using(this),
+                 Name.Function), 'function_parameters'),
+
+            # no-param function
+            (r'(\(' + _ws + r')'                # open paren
+             r'([a-zA-Z_][a-zA-Z0-9_]+)'        # return type
+             r'(' + _ws + r'\)' + _ws + r')'    # close paren
+             r'([$a-zA-Z_][a-zA-Z0-9_]+)',      # function name
+             bygroups(using(this), Keyword.Type, using(this),
+                 Name.Function), "#pop"),
+
+            # no return type given, start of a selector w/ parameters
+            (r'([$a-zA-Z_][a-zA-Z0-9_]+' + _ws + r':)', # function name
+             bygroups (Name.Function), 'function_parameters'),
+
+            # no return type given, no-param function
+            (r'([$a-zA-Z_][a-zA-Z0-9_]+)',      # function name
+             bygroups(Name.Function), "#pop"),
+
+            ('', Text, '#pop'),
+        ],
+        'function_parameters': [
+            include('whitespace'),
+
+            # parameters
+            (r'(\(' + _ws + ')'                 # open paren
+             r'([^\)]+)'                        # type
+             r'(' + _ws + r'\)' + _ws + r')+'   # close paren
+             r'([$a-zA-Z_][a-zA-Z0-9_]+)',      # param name
+             bygroups(using(this), Keyword.Type, using(this), Text)),
+
+            # one piece of a selector name
+            (r'([$a-zA-Z_][a-zA-Z0-9_]+' + _ws + r':)',     # function name
+             Name.Function),
+
+            # smallest possible selector piece
+            (r'(:)', Name.Function),
+
+            # var args
+            (r'(,' + _ws + r'...)', using(this)),
+
+            # param name
+            (r'([$a-zA-Z_][a-zA-Z0-9_]+)', Text),
+        ],
+        'expression' : [
+            (r'([$a-zA-Z_][a-zA-Z0-9_]*)(\()', bygroups(Name.Function,
+                                                        Punctuation)),
+            (r'(\))', Punctuation, "#pop"),
+        ],
+        'string': [
+            (r'"', String, '#pop'),
+            (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),
+            (r'[^\\"\n]+', String), # all other characters
+            (r'\\\n', String), # line continuation
+            (r'\\', String), # stray backslash
+        ],
+        'macro': [
+            (r'[^/\n]+', Comment.Preproc),
+            (r'/[*](.|\n)*?[*]/', Comment.Multiline),
+            (r'//.*?\n', Comment.Single, '#pop'),
+            (r'/', Comment.Preproc),
+            (r'(?<=\\)\n', Comment.Preproc),
+            (r'\n', Comment.Preproc, '#pop'),
+        ],
+        'if0': [
+            (r'^\s*#if.*?(?<!\\)\n', Comment.Preproc, '#push'),
+            (r'^\s*#endif.*?(?<!\\)\n', Comment.Preproc, '#pop'),
+            (r'.*?\n', Comment),
+        ]
+    }
+
+    def analyse_text(text):
+        if re.search('^\s*@import\s+[<"]', text, re.MULTILINE):
+            # special directive found in most Objective-J files
+            return True
+        return False
+
+
 class HtmlLexer(RegexLexer):
     """
     For HTML 4 and XHTML 1 markup. Nested JavaScript and CSS is highlighted
@@ -493,7 +715,7 @@
         ],
         'php': [
             (r'\?>', Comment.Preproc, '#pop'),
-            (r'<<<([a-zA-Z_][a-zA-Z0-9_]*)\n.*?\n\1\;?\n', String),
+            (r'<<<(\'?)([a-zA-Z_][a-zA-Z0-9_]*)\1\n.*?\n\2\;?\n', String),
             (r'\s+', Text),
             (r'#.*?\n', Comment.Single),
             (r'//.*?\n', Comment.Single),
@@ -507,6 +729,7 @@
             (r'[~!%^&*+=|:.<>/?@-]+', Operator),
             (r'[\[\]{}();,]+', Punctuation),
             (r'(class)(\s+)', bygroups(Keyword, Text), 'classname'),
+            (r'(function)(\s*)(?=\()', bygroups(Keyword, Text)),
             (r'(function)(\s+)(&?)(\s*)',
               bygroups(Keyword, Text, Operator, Text), 'functionname'),
             (r'(const)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)',
@@ -520,11 +743,11 @@
              r'endif|list|__LINE__|endswitch|new|__sleep|endwhile|not|'
              r'array|__wakeup|E_ALL|NULL|final|php_user_filter|interface|'
              r'implements|public|private|protected|abstract|clone|try|'
-             r'catch|throw|this)\b', Keyword),
+             r'catch|throw|this|use|namespace)\b', Keyword),
             ('(true|false|null)\b', Keyword.Constant),
             (r'\$\{\$+[a-zA-Z_][a-zA-Z0-9_]*\}', Name.Variable),
             (r'\$+[a-zA-Z_][a-zA-Z0-9_]*', Name.Variable),
-            ('[a-zA-Z_][a-zA-Z0-9_]*', Name.Other),
+            (r'[\\a-zA-Z_][\\a-zA-Z0-9_]*', Name.Other),
             (r"[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|"
              r"0[xX][0-9a-fA-F]+[Ll]?", Number),
             (r"'([^'\\]*(?:\\.[^'\\]*)*)'", String.Single),
@@ -532,7 +755,7 @@
             (r'"', String.Double, 'string'),
         ],
         'classname': [
-            (r'[a-zA-Z_][a-zA-Z0-9_]*', Name.Class, '#pop')
+            (r'[a-zA-Z_][\\a-zA-Z0-9_]*', Name.Class, '#pop')
         ],
         'functionname': [
             (r'[a-zA-Z_][a-zA-Z0-9_]*', Name.Function, '#pop')
@@ -680,7 +903,6 @@
             return 0.8
 
 
-
 class MxmlLexer(RegexLexer):
     """
     For MXML markup.
@@ -721,3 +943,677 @@
                 (r'[^\s>]+', String, '#pop'),
             ],
         }
+
+
+class HaxeLexer(RegexLexer):
+    """
+    For haXe source code (http://haxe.org/).
+    """
+
+    name = 'haXe'
+    aliases = ['hx', 'haXe']
+    filenames = ['*.hx']
+    mimetypes = ['text/haxe']
+
+    ident = r'(?:[a-zA-Z_][a-zA-Z0-9_]*)'
+    typeid = r'(?:(?:[a-z0-9_\.])*[A-Z_][A-Za-z0-9_]*)'
+    key_prop = r'(?:default|null|never)'
+    key_decl_mod = r'(?:public|private|override|static|inline|extern|dynamic)'
+
+    flags = re.DOTALL | re.MULTILINE
+
+    tokens = {
+        'root': [
+            include('whitespace'),
+            include('comments'),
+            (key_decl_mod, Keyword.Declaration),
+            include('enumdef'),
+            include('typedef'),
+            include('classdef'),
+            include('imports'),
+        ],
+
+        # General constructs
+        'comments': [
+            (r'//.*?\n', Comment.Single),
+            (r'/\*.*?\*/', Comment.Multiline),
+            (r'#[^\n]*', Comment.Preproc),
+        ],
+        'whitespace': [
+            include('comments'),
+            (r'\s+', Text),
+        ],
+        'codekeywords': [
+            (r'\b(if|else|while|do|for|in|break|continue|'
+             r'return|switch|case|try|catch|throw|null|trace|'
+             r'new|this|super|untyped|cast|callback|here)\b',
+             Keyword.Reserved),
+        ],
+        'literals': [
+            (r'0[xX][0-9a-fA-F]+', Number.Hex),
+            (r'[0-9]+', Number.Integer),
+            (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
+            (r"'(\\\\|\\'|[^'])*'", String.Single),
+            (r'"(\\\\|\\"|[^"])*"', String.Double),
+            (r'~/([^\n])*?/[gisx]*', String.Regex),
+            (r'\b(true|false|null)\b', Keyword.Constant),
+        ],
+        'codeblock': [
+          include('whitespace'),
+          include('new'),
+          include('case'),
+          include('anonfundef'),
+          include('literals'),
+          include('vardef'),
+          include('codekeywords'),
+          (r'[();,\[\]]', Punctuation),
+          (r'(?:=|\+=|-=|\*=|/=|%=|&=|\|=|\^=|<<=|>>=|>>>=|\|\||&&|'
+           r'\.\.\.|==|!=|>|<|>=|<=|\||&|\^|<<|>>|>>>|\+|\-|\*|/|%|'
+           r'!|\+\+|\-\-|~|\.|\?|\:)',
+           Operator),
+          (ident, Name),
+
+          (r'}', Punctuation,'#pop'),
+          (r'{', Punctuation,'#push'),
+        ],
+
+        # Instance/Block level constructs
+        'propertydef': [
+            (r'(\()(' + key_prop + ')(,)(' + key_prop + ')(\))',
+             bygroups(Punctuation, Keyword.Reserved, Punctuation,
+                      Keyword.Reserved, Punctuation)),
+        ],
+        'new': [
+            (r'\bnew\b', Keyword, 'typedecl'),
+        ],
+        'case': [
+            (r'\b(case)(\s+)(' + ident + ')(\s*)(\()',
+             bygroups(Keyword.Reserved, Text, Name, Text, Punctuation),
+             'funargdecl'),
+        ],
+        'vardef': [
+            (r'\b(var)(\s+)(' + ident + ')',
+             bygroups(Keyword.Declaration, Text, Name.Variable), 'vardecl'),
+        ],
+        'vardecl': [
+            include('whitespace'),
+            include('typelabel'),
+            (r'=', Operator,'#pop'),
+            (r';', Punctuation,'#pop'),
+        ],
+        'instancevardef': [
+            (key_decl_mod,Keyword.Declaration),
+            (r'\b(var)(\s+)(' + ident + ')',
+             bygroups(Keyword.Declaration, Text, Name.Variable.Instance),
+             'instancevardecl'),
+        ],
+        'instancevardecl': [
+            include('vardecl'),
+            include('propertydef'),
+        ],
+
+        'anonfundef': [
+            (r'\bfunction\b', Keyword.Declaration, 'fundecl'),
+        ],
+        'instancefundef': [
+            (key_decl_mod, Keyword.Declaration),
+            (r'\b(function)(\s+)(' + ident + ')',
+             bygroups(Keyword.Declaration, Text, Name.Function), 'fundecl'),
+        ],
+        'fundecl': [
+            include('whitespace'),
+            include('typelabel'),
+            include('generictypedecl'),
+            (r'\(',Punctuation,'funargdecl'),
+            (r'(?=[a-zA-Z0-9_])',Text,'#pop'),
+            (r'{',Punctuation,('#pop','codeblock')),
+            (r';',Punctuation,'#pop'),
+        ],
+        'funargdecl': [
+            include('whitespace'),
+            (ident, Name.Variable),
+            include('typelabel'),
+            include('literals'),
+            (r'=', Operator),
+            (r',', Punctuation),
+            (r'\?', Punctuation),
+            (r'\)', Punctuation, '#pop'),
+        ],
+
+        'typelabel': [
+            (r':', Punctuation, 'type'),
+        ],
+        'typedecl': [
+            include('whitespace'),
+            (typeid, Name.Class),
+            (r'<', Punctuation, 'generictypedecl'),
+            (r'(?=[{}()=,a-z])', Text,'#pop'),
+        ],
+        'type': [
+            include('whitespace'),
+            (typeid, Name.Class),
+            (r'<', Punctuation, 'generictypedecl'),
+            (r'->', Keyword.Type),
+            (r'(?=[{}(),;=])', Text, '#pop'),
+        ],
+        'generictypedecl': [
+            include('whitespace'),
+            (typeid, Name.Class),
+            (r'<', Punctuation, '#push'),
+            (r'>', Punctuation, '#pop'),
+            (r',', Punctuation),
+        ],
+
+        # Top level constructs
+        'imports': [
+            (r'(package|import|using)(\s+)([^;]+)(;)',
+             bygroups(Keyword.Namespace, Text, Name.Namespace,Punctuation)),
+        ],
+        'typedef': [
+            (r'typedef', Keyword.Declaration, ('typedefprebody', 'typedecl')),
+        ],
+        'typedefprebody': [
+            include('whitespace'),
+            (r'(=)(\s*)({)', bygroups(Punctuation, Text, Punctuation),
+             ('#pop', 'typedefbody')),
+        ],
+        'enumdef': [
+            (r'enum', Keyword.Declaration, ('enumdefprebody', 'typedecl')),
+        ],
+        'enumdefprebody': [
+            include('whitespace'),
+            (r'{', Punctuation, ('#pop','enumdefbody')),
+        ],
+        'classdef': [
+            (r'class', Keyword.Declaration, ('classdefprebody', 'typedecl')),
+        ],
+        'classdefprebody': [
+            include('whitespace'),
+            (r'(extends|implements)', Keyword.Declaration,'typedecl'),
+            (r'{', Punctuation, ('#pop', 'classdefbody')),
+        ],
+        'interfacedef': [
+            (r'interface', Keyword.Declaration,
+             ('interfacedefprebody', 'typedecl')),
+        ],
+        'interfacedefprebody': [
+            include('whitespace'),
+            (r'(extends)', Keyword.Declaration, 'typedecl'),
+            (r'{', Punctuation, ('#pop', 'classdefbody')),
+        ],
+
+        'typedefbody': [
+          include('whitespace'),
+          include('instancevardef'),
+          include('instancefundef'),
+          (r'>', Punctuation, 'typedecl'),
+          (r',', Punctuation),
+          (r'}', Punctuation, '#pop'),
+        ],
+        'enumdefbody': [
+          include('whitespace'),
+          (ident, Name.Variable.Instance),
+          (r'\(', Punctuation, 'funargdecl'),
+          (r';', Punctuation),
+          (r'}', Punctuation, '#pop'),
+        ],
+        'classdefbody': [
+          include('whitespace'),
+          include('instancevardef'),
+          include('instancefundef'),
+          (r'}', Punctuation, '#pop'),
+          include('codeblock'),
+        ],
+    }
+
+    def analyse_text(text):
+        if re.match(r'\w+\s*:\s*\w', text): return 0.3
+
+
+def _indentation(lexer, match, ctx):
+    indentation = match.group(0)
+    yield match.start(), Text, indentation
+    ctx.last_indentation = indentation
+    ctx.pos = match.end()
+
+    if hasattr(ctx, 'block_state') and ctx.block_state and \
+            indentation.startswith(ctx.block_indentation) and \
+            indentation != ctx.block_indentation:
+        ctx.stack.append(ctx.block_state)
+    else:
+        ctx.block_state = None
+        ctx.block_indentation = None
+        ctx.stack.append('content')
+
+def _starts_block(token, state):
+    def callback(lexer, match, ctx):
+        yield match.start(), token, match.group(0)
+
+        if hasattr(ctx, 'last_indentation'):
+            ctx.block_indentation = ctx.last_indentation
+        else:
+            ctx.block_indentation = ''
+
+        ctx.block_state = state
+        ctx.pos = match.end()
+
+    return callback
+
+
+class HamlLexer(ExtendedRegexLexer):
+    """
+    For Haml markup.
+
+    *New in Pygments 1.3.*
+    """
+
+    name = 'Haml'
+    aliases = ['haml', 'HAML']
+    filenames = ['*.haml']
+    mimetypes = ['text/x-haml']
+
+    flags = re.IGNORECASE
+    # Haml can include " |\n" anywhere,
+    # which is ignored and used to wrap long lines.
+    # To accomodate this, use this custom faux dot instead.
+    _dot = r'(?: \|\n(?=.* \|)|.)'
+    tokens = {
+        'root': [
+            (r'[ \t]*\n', Text),
+            (r'[ \t]*', _indentation),
+        ],
+
+        'css': [
+            (r'\.[a-z0-9_:-]+', Name.Class, 'tag'),
+            (r'\#[a-z0-9_:-]+', Name.Function, 'tag'),
+        ],
+
+        'eval-or-plain': [
+            (r'[&!]?==', Punctuation, 'plain'),
+            (r'([&!]?[=~])(' + _dot + '*\n)',
+             bygroups(Punctuation, using(RubyLexer)),
+             'root'),
+            (r'', Text, 'plain'),
+        ],
+
+        'content': [
+            include('css'),
+            (r'%[a-z0-9_:-]+', Name.Tag, 'tag'),
+            (r'!!!' + _dot + '*\n', Name.Namespace, '#pop'),
+            (r'(/)(\[' + _dot + '*?\])(' + _dot + '*\n)',
+             bygroups(Comment, Comment.Special, Comment),
+             '#pop'),
+            (r'/' + _dot + '*\n', _starts_block(Comment, 'html-comment-block'),
+             '#pop'),
+            (r'-#' + _dot + '*\n', _starts_block(Comment.Preproc,
+                                                 'haml-comment-block'), '#pop'),
+            (r'(-)(' + _dot + '*\n)',
+             bygroups(Punctuation, using(RubyLexer)),
+             '#pop'),
+            (r':' + _dot + '*\n', _starts_block(Name.Decorator, 'filter-block'),
+             '#pop'),
+            include('eval-or-plain'),
+        ],
+
+        'tag': [
+            include('css'),
+            (r'\{(,\n|' + _dot + ')*?\}', using(RubyLexer)),
+            (r'\[' + _dot + '*?\]', using(RubyLexer)),
+            (r'\(', Text, 'html-attributes'),
+            (r'/[ \t]*\n', Punctuation, '#pop:2'),
+            (r'[<>]{1,2}(?=[ \t=])', Punctuation),
+            include('eval-or-plain'),
+        ],
+
+        'plain': [
+            (r'([^#\n]|#[^{\n]|(\\\\)*\\#\{)+', Text),
+            (r'(#\{)(' + _dot + '*?)(\})',
+             bygroups(String.Interpol, using(RubyLexer), String.Interpol)),
+            (r'\n', Text, 'root'),
+        ],
+
+        'html-attributes': [
+            (r'\s+', Text),
+            (r'[a-z0-9_:-]+[ \t]*=', Name.Attribute, 'html-attribute-value'),
+            (r'[a-z0-9_:-]+', Name.Attribute),
+            (r'\)', Text, '#pop'),
+        ],
+
+        'html-attribute-value': [
+            (r'[ \t]+', Text),
+            (r'[a-z0-9_]+', Name.Variable, '#pop'),
+            (r'@[a-z0-9_]+', Name.Variable.Instance, '#pop'),
+            (r'\$[a-z0-9_]+', Name.Variable.Global, '#pop'),
+            (r"'(\\\\|\\'|[^'\n])*'", String, '#pop'),
+            (r'"(\\\\|\\"|[^"\n])*"', String, '#pop'),
+        ],
+
+        'html-comment-block': [
+            (_dot + '+', Comment),
+            (r'\n', Text, 'root'),
+        ],
+
+        'haml-comment-block': [
+            (_dot + '+', Comment.Preproc),
+            (r'\n', Text, 'root'),
+        ],
+
+        'filter-block': [
+            (r'([^#\n]|#[^{\n]|(\\\\)*\\#\{)+', Name.Decorator),
+            (r'(#\{)(' + _dot + '*?)(\})',
+             bygroups(String.Interpol, using(RubyLexer), String.Interpol)),
+            (r'\n', Text, 'root'),
+        ],
+    }
+
+
+class SassLexer(ExtendedRegexLexer):
+    """
+    For Sass stylesheets.
+
+    *New in Pygments 1.3.*
+    """
+
+    name = 'Sass'
+    aliases = ['sass', 'SASS']
+    filenames = ['*.sass']
+    mimetypes = ['text/x-sass']
+
+    flags = re.IGNORECASE
+    tokens = {
+        'root': [
+            (r'[ \t]*\n', Text),
+            (r'[ \t]*', _indentation),
+        ],
+
+        'content': [
+            (r'//[^\n]*', _starts_block(Comment.Single, 'single-comment'),
+             'root'),
+            (r'/\*[^\n]*', _starts_block(Comment.Multiline, 'multi-comment'),
+             'root'),
+            (r'@import', Keyword, 'import'),
+            (r'@for', Keyword, 'for'),
+            (r'@(debug|if|while)', Keyword, 'script'),
+            (r'@[a-z0-9_-]+', Keyword, 'selector'),
+            (r'=[\w-]+', Name.Function, 'script'),
+            (r'\+[\w-]+', Name.Decorator, 'script'),
+            (r'(![a-z_]\w*)([ \t]*(?:\|\|)?=)',
+             bygroups(Name.Variable, Operator), 'script'),
+            (r':', Name.Attribute, 'old-style-attr'),
+            (r'(?=[^\s:"\[]+\s*[=:]([ \t]|$))', Name.Attribute, 'new-style-attr'),
+            (r'', Text, 'selector'),
+        ],
+
+        'single-comment': [
+            (r'.+', Comment.Single),
+            (r'\n', Text, 'root'),
+        ],
+
+        'multi-comment': [
+            (r'.+', Comment.Multiline),
+            (r'\n', Text, 'root'),
+        ],
+
+        'import': [
+            (r'[ \t]+', Text),
+            (r'[^\s]+', String),
+            (r'\n', Text, 'root'),
+        ],
+
+        'for': [
+            (r'(from|to|through)', Operator.Word),
+            include('script'),
+        ],
+
+        'old-style-attr': [
+            (r'[^\s:="\[]+', Name.Attribute),
+            (r'#{', String.Interpol, 'interpolation'),
+            (r'[ \t]*=', Operator, 'script'),
+            (r'', Text, 'value'),
+        ],
+
+        'new-style-attr': [
+            (r'[^\s:="\[]+', Name.Attribute),
+            (r'#{', String.Interpol, 'interpolation'),
+            (r'[ \t]*=', Operator, 'script'),
+            (r':', Name.Attribute, 'value'),
+        ],
+
+        'value': [
+            (r'[ \t]+', Text),
+            (r'url\(', String.Other, 'string-url'),
+            (r'(azimuth|background-attachment|background-color|'
+             r'background-image|background-position|background-repeat|'
+             r'background|border-bottom-color|border-bottom-style|'
+             r'border-bottom-width|border-left-color|border-left-style|'
+             r'border-left-width|border-right|border-right-color|'
+             r'border-right-style|border-right-width|border-top-color|'
+             r'border-top-style|border-top-width|border-bottom|'
+             r'border-collapse|border-left|border-width|border-color|'
+             r'border-spacing|border-style|border-top|border|caption-side|'
+             r'clear|clip|color|content|counter-increment|counter-reset|'
+             r'cue-after|cue-before|cue|cursor|direction|display|'
+             r'elevation|empty-cells|float|font-family|font-size|'
+             r'font-size-adjust|font-stretch|font-style|font-variant|'
+             r'font-weight|font|height|letter-spacing|line-height|'
+             r'list-style-type|list-style-image|list-style-position|'
+             r'list-style|margin-bottom|margin-left|margin-right|'
+             r'margin-top|margin|marker-offset|marks|max-height|max-width|'
+             r'min-height|min-width|opacity|orphans|outline|outline-color|'
+             r'outline-style|outline-width|overflow|padding-bottom|'
+             r'padding-left|padding-right|padding-top|padding|page|'
+             r'page-break-after|page-break-before|page-break-inside|'
+             r'pause-after|pause-before|pause|pitch|pitch-range|'
+             r'play-during|position|quotes|richness|right|size|'
+             r'speak-header|speak-numeral|speak-punctuation|speak|'
+             r'speech-rate|stress|table-layout|text-align|text-decoration|'
+             r'text-indent|text-shadow|text-transform|top|unicode-bidi|'
+             r'vertical-align|visibility|voice-family|volume|white-space|'
+             r'widows|width|word-spacing|z-index|bottom|left|'
+             r'above|absolute|always|armenian|aural|auto|avoid|baseline|'
+             r'behind|below|bidi-override|blink|block|bold|bolder|both|'
+             r'capitalize|center-left|center-right|center|circle|'
+             r'cjk-ideographic|close-quote|collapse|condensed|continuous|'
+             r'crop|crosshair|cross|cursive|dashed|decimal-leading-zero|'
+             r'decimal|default|digits|disc|dotted|double|e-resize|embed|'
+             r'extra-condensed|extra-expanded|expanded|fantasy|far-left|'
+             r'far-right|faster|fast|fixed|georgian|groove|hebrew|help|'
+             r'hidden|hide|higher|high|hiragana-iroha|hiragana|icon|'
+             r'inherit|inline-table|inline|inset|inside|invert|italic|'
+             r'justify|katakana-iroha|katakana|landscape|larger|large|'
+             r'left-side|leftwards|level|lighter|line-through|list-item|'
+             r'loud|lower-alpha|lower-greek|lower-roman|lowercase|ltr|'
+             r'lower|low|medium|message-box|middle|mix|monospace|'
+             r'n-resize|narrower|ne-resize|no-close-quote|no-open-quote|'
+             r'no-repeat|none|normal|nowrap|nw-resize|oblique|once|'
+             r'open-quote|outset|outside|overline|pointer|portrait|px|'
+             r'relative|repeat-x|repeat-y|repeat|rgb|ridge|right-side|'
+             r'rightwards|s-resize|sans-serif|scroll|se-resize|'
+             r'semi-condensed|semi-expanded|separate|serif|show|silent|'
+             r'slow|slower|small-caps|small-caption|smaller|soft|solid|'
+             r'spell-out|square|static|status-bar|super|sw-resize|'
+             r'table-caption|table-cell|table-column|table-column-group|'
+             r'table-footer-group|table-header-group|table-row|'
+             r'table-row-group|text|text-bottom|text-top|thick|thin|'
+             r'transparent|ultra-condensed|ultra-expanded|underline|'
+             r'upper-alpha|upper-latin|upper-roman|uppercase|url|'
+             r'visible|w-resize|wait|wider|x-fast|x-high|x-large|x-loud|'
+             r'x-low|x-small|x-soft|xx-large|xx-small|yes)\b', Name.Constant),
+            (r'(indigo|gold|firebrick|indianred|yellow|darkolivegreen|'
+             r'darkseagreen|mediumvioletred|mediumorchid|chartreuse|'
+             r'mediumslateblue|black|springgreen|crimson|lightsalmon|brown|'
+             r'turquoise|olivedrab|cyan|silver|skyblue|gray|darkturquoise|'
+             r'goldenrod|darkgreen|darkviolet|darkgray|lightpink|teal|'
+             r'darkmagenta|lightgoldenrodyellow|lavender|yellowgreen|thistle|'
+             r'violet|navy|orchid|blue|ghostwhite|honeydew|cornflowerblue|'
+             r'darkblue|darkkhaki|mediumpurple|cornsilk|red|bisque|slategray|'
+             r'darkcyan|khaki|wheat|deepskyblue|darkred|steelblue|aliceblue|'
+             r'gainsboro|mediumturquoise|floralwhite|coral|purple|lightgrey|'
+             r'lightcyan|darksalmon|beige|azure|lightsteelblue|oldlace|'
+             r'greenyellow|royalblue|lightseagreen|mistyrose|sienna|'
+             r'lightcoral|orangered|navajowhite|lime|palegreen|burlywood|'
+             r'seashell|mediumspringgreen|fuchsia|papayawhip|blanchedalmond|'
+             r'peru|aquamarine|white|darkslategray|ivory|dodgerblue|'
+             r'lemonchiffon|chocolate|orange|forestgreen|slateblue|olive|'
+             r'mintcream|antiquewhite|darkorange|cadetblue|moccasin|'
+             r'limegreen|saddlebrown|darkslateblue|lightskyblue|deeppink|'
+             r'plum|aqua|darkgoldenrod|maroon|sandybrown|magenta|tan|'
+             r'rosybrown|pink|lightblue|palevioletred|mediumseagreen|'
+             r'dimgray|powderblue|seagreen|snow|mediumblue|midnightblue|'
+             r'paleturquoise|palegoldenrod|whitesmoke|darkorchid|salmon|'
+             r'lightslategray|lawngreen|lightgreen|tomato|hotpink|'
+             r'lightyellow|lavenderblush|linen|mediumaquamarine|green|'
+             r'blueviolet|peachpuff)\b', Name.Entity),
+            (r'\!important', Name.Exception),
+            (r'/\*', Comment, 'inline-comment'),
+            (r'\#[a-z0-9]{1,6}', Number.Hex),
+            (r'(-?\d+)(\%|[a-z]+)?', bygroups(Number.Integer, Keyword.Type)),
+            (r'(-?\d*\.\d+)(\%|[a-z]+)?', bygroups(Number.Float, Keyword.Type)),
+            (r'#{', String.Interpol, 'interpolation'),
+            (r'[~\^\*!&%<>\|+=@:,./?-]+', Operator),
+            (r'[\[\]();]+', Punctuation),
+            (r'"', String.Double, 'string-double'),
+            (r"'", String.Single, 'string-single'),
+            (r'[a-z][\w-]*', Name),
+            (r'\n', Text, 'root'),
+        ],
+
+        'script': [
+            (r'[ \t]+', Text),
+            (r'![\w_]+', Name.Variable),
+            (r'[+\-*/%=(),!><]', Operator),
+            (r'"', String.Double, 'string-double'),
+            (r"'", String.Single, 'string-single'),
+            (r'\#[a-z0-9]{1,6}', Number.Hex),
+            (r'(-?\d+)(\%|[a-z]+)?', bygroups(Number.Integer, Keyword.Type)),
+            (r'(-?\d*\.\d+)(\%|[a-z]+)?', bygroups(Number.Float, Keyword.Type)),
+            (r'(black|silver|gray|white|maroon|red|purple|fuchsia|green|'
+             r'lime|olive|yellow|navy|blue|teal|aqua)\b', Name.Builtin),
+            (r'(true|false)', Name.Pseudo),
+            (r'(and|or|not)', Operator.Word),
+            (r'(\\.|[^\s\\+*\/%(),=!])+(?=[ \t]*\()', Name.Function),
+            (r'(\\.|[^\s\\+*\/%(),=!])+', Name),
+            (r'\n', Text, 'root'),
+        ],
+
+        'interpolation': [
+            (r'\}', String.Interpol, '#pop'),
+            include('script'),
+        ],
+
+        'selector': [
+            (r'[ \t]+', Text),
+            (r'\:', Name.Decorator, 'pseudo-class'),
+            (r'\.', Name.Class, 'class'),
+            (r'\#', Name.Namespace, 'id'),
+            (r'[a-zA-Z0-9_-]+', Name.Tag),
+            (r'#\{', String.Interpol, 'interpolation'),
+            (r'&', Keyword),
+            (r'[~\^\*!&\[\]\(\)<>\|+=@:;,./?-]', Operator),
+            (r'"', String.Double, 'string-double'),
+            (r"'", String.Single, 'string-single'),
+            (r'\n', Text, 'root'),
+        ],
+
+        'string-double': [
+            (r'(\\.|#(?=[^\n{])|[^\n"#])+', String.Double),
+            (r'#\{', String.Interpol, 'interpolation'),
+            (r'"', String.Double, '#pop'),
+        ],
+
+        'string-single': [
+            (r"(\\.|#(?=[^\n{])|[^\n'#])+", String.Double),
+            (r'#\{', String.Interpol, 'interpolation'),
+            (r"'", String.Double, '#pop'),
+        ],
+
+        'string-url': [
+            (r'(\\#|#(?=[^\n{])|[^\n#)])+', String.Other),
+            (r'#\{', String.Interpol, 'interpolation'),
+            (r'\)', String.Other, '#pop'),
+        ],
+
+        'inline-comment': [
+            (r"(\\#|#(?=[^\n{])|\*(?=[^\n/])|[^\n#*])+", Comment),
+            (r'#\{', String.Interpol, 'interpolation'),
+            (r"\*/", Comment, '#pop'),
+        ],
+
+        'pseudo-class': [
+            (r'[\w-]+', Name.Decorator),
+            (r'#\{', String.Interpol, 'interpolation'),
+            (r'', Text, '#pop'),
+        ],
+
+        'class': [
+            (r'[\w-]+', Name.Class),
+            (r'#\{', String.Interpol, 'interpolation'),
+            (r'', Text, '#pop'),
+        ],
+
+        'id': [
+            (r'[\w-]+', Name.Namespace),
+            (r'#\{', String.Interpol, 'interpolation'),
+            (r'', Text, '#pop'),
+        ],
+    }
+
+
+class CoffeeScriptLexer(RegexLexer):
+    """
+    For `CoffeeScript`_ source code.
+
+    .. _CoffeeScript: http://jashkenas.github.com/coffee-script/
+
+    *New in Pygments 1.3.*
+    """
+
+    name = 'CoffeeScript'
+    aliases = ['coffee-script', 'coffeescript']
+    filenames = ['*.coffee']
+    mimetypes = ['text/coffeescript']
+
+    flags = re.DOTALL
+    tokens = {
+        'commentsandwhitespace': [
+            (r'\s+', Text),
+            (r'#.*?\n', Comment.Single),
+        ],
+        'slashstartsregex': [
+            include('commentsandwhitespace'),
+            (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/'
+             r'([gim]+\b|\B)', String.Regex, '#pop'),
+            (r'(?=/)', Text, ('#pop', 'badregex')),
+            (r'', Text, '#pop'),
+        ],
+        'badregex': [
+            ('\n', Text, '#pop'),
+        ],
+        'root': [
+            (r'^(?=\s|/|<!--)', Text, 'slashstartsregex'),
+            include('commentsandwhitespace'),
+            (r'\+\+|--|~|&&|\band\b|\bor\b|\bis\b|\bisnt\b|\bnot\b|\?|:|'
+             r'\|\||\\(?=\n)|(<<|>>>?|==?|!=?|[-<>+*`%&\|\^/])=?',
+             Operator, 'slashstartsregex'),
+            (r'[{(\[;,]', Punctuation, 'slashstartsregex'),
+            (r'[})\].]', Punctuation),
+            (r'(for|in|of|while|break|return|continue|switch|when|then|if|else|'
+             r'throw|try|catch|finally|new|delete|typeof|instanceof|super|'
+             r'extends|this)\b', Keyword, 'slashstartsregex'),
+            (r'(true|false|yes|no|on|off|null|NaN|Infinity|undefined)\b',
+             Keyword.Constant),
+            (r'(Array|Boolean|Date|Error|Function|Math|netscape|'
+             r'Number|Object|Packages|RegExp|String|sun|decodeURI|'
+             r'decodeURIComponent|encodeURI|encodeURIComponent|'
+             r'Error|eval|isFinite|isNaN|parseFloat|parseInt|document|this|'
+             r'window)\b', Name.Builtin),
+            (r'[$a-zA-Z_][a-zA-Z0-9_\.:]*:\s', Name.Variable,
+             'slashstartsregex'),
+            (r'[$a-zA-Z_][a-zA-Z0-9_]*', Name.Other),
+            (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),
+            (r'0x[0-9a-fA-F]+', Number.Hex),
+            (r'[0-9]+', Number.Integer),
+            (r'"(\\\\|\\"|[^"])*"', String.Double),
+            (r"'(\\\\|\\'|[^'])*'", String.Single),
+        ]
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/support/pygments/styles/monokai.py	Tue Mar 09 18:06:25 2010 +0300
@@ -0,0 +1,106 @@
+# -*- coding: utf-8 -*-
+"""
+    pygments.styles.monokai
+    ~~~~~~~~~~~~~~~~~~~~~~~
+
+    Mimic the Monokai color scheme. Based on tango.py.
+
+    http://www.monokai.nl/blog/2006/07/15/textmate-color-theme/
+
+    :copyright: Copyright 2006-2010 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+from pygments.style import Style
+from pygments.token import Keyword, Name, Comment, String, Error, Text, \
+     Number, Operator, Generic, Whitespace, Punctuation, Other, Literal
+
+class MonokaiStyle(Style):
+    """
+    This style mimics the Monokai color scheme.
+    """
+
+    background_color = "#272822"
+    highlight_color = "#49483e"
+
+    styles = {
+        # No corresponding class for the following:
+        Text:                      "#f8f8f2", # class:  ''
+        Whitespace:                "",        # class: 'w'
+        Error:                     "#960050 bg:#1e0010", # class: 'err'
+        Other:                     "",        # class 'x'
+
+        Comment:                   "#75715e", # class: 'c'
+        Comment.Multiline:         "",        # class: 'cm'
+        Comment.Preproc:           "",        # class: 'cp'
+        Comment.Single:            "",        # class: 'c1'
+        Comment.Special:           "",        # class: 'cs'
+
+        Keyword:                   "#66d9ef", # class: 'k'
+        Keyword.Constant:          "",        # class: 'kc'
+        Keyword.Declaration:       "",        # class: 'kd'
+        Keyword.Namespace:         "#f92672", # class: 'kn'
+        Keyword.Pseudo:            "",        # class: 'kp'
+        Keyword.Reserved:          "",        # class: 'kr'
+        Keyword.Type:              "",        # class: 'kt'
+
+        Operator:                  "#f92672", # class: 'o'
+        Operator.Word:             "",        # class: 'ow' - like keywords
+
+        Punctuation:               "#f8f8f2", # class: 'p'
+
+        Name:                      "#f8f8f2", # class: 'n'
+        Name.Attribute:            "#a6e22e", # class: 'na' - to be revised
+        Name.Builtin:              "",        # class: 'nb'
+        Name.Builtin.Pseudo:       "",        # class: 'bp'
+        Name.Class:                "#a6e22e", # class: 'nc' - to be revised
+        Name.Constant:             "#66d9ef", # class: 'no' - to be revised
+        Name.Decorator:            "#a6e22e", # class: 'nd' - to be revised
+        Name.Entity:               "",        # class: 'ni'
+        Name.Exception:            "#a6e22e", # class: 'ne'
+        Name.Function:             "#a6e22e", # class: 'nf'
+        Name.Property:             "",        # class: 'py'
+        Name.Label:                "",        # class: 'nl'
+        Name.Namespace:            "",        # class: 'nn' - to be revised
+        Name.Other:                "#a6e22e", # class: 'nx'
+        Name.Tag:                  "#f92672", # class: 'nt' - like a keyword
+        Name.Variable:             "",        # class: 'nv' - to be revised
+        Name.Variable.Class:       "",        # class: 'vc' - to be revised
+        Name.Variable.Global:      "",        # class: 'vg' - to be revised
+        Name.Variable.Instance:    "",        # class: 'vi' - to be revised
+
+        Number:                    "#ae81ff", # class: 'm'
+        Number.Float:              "",        # class: 'mf'
+        Number.Hex:                "",        # class: 'mh'
+        Number.Integer:            "",        # class: 'mi'
+        Number.Integer.Long:       "",        # class: 'il'
+        Number.Oct:                "",        # class: 'mo'
+
+        Literal:                   "#ae81ff", # class: 'l'
+        Literal.Date:              "#e6db74", # class: 'ld'
+
+        String:                    "#e6db74", # class: 's'
+        String.Backtick:           "",        # class: 'sb'
+        String.Char:               "",        # class: 'sc'
+        String.Doc:                "",        # class: 'sd' - like a comment
+        String.Double:             "",        # class: 's2'
+        String.Escape:             "#ae81ff", # class: 'se'
+        String.Heredoc:            "",        # class: 'sh'
+        String.Interpol:           "",        # class: 'si'
+        String.Other:              "",        # class: 'sx'
+        String.Regex:              "",        # class: 'sr'
+        String.Single:             "",        # class: 's1'
+        String.Symbol:             "",        # class: 'ss'
+
+        Generic:                   "",        # class: 'g'
+        Generic.Deleted:           "",        # class: 'gd',
+        Generic.Emph:              "italic",  # class: 'ge'
+        Generic.Error:             "",        # class: 'gr'
+        Generic.Heading:           "",        # class: 'gh'
+        Generic.Inserted:          "",        # class: 'gi'
+        Generic.Output:            "",        # class: 'go'
+        Generic.Prompt:            "",        # class: 'gp'
+        Generic.Strong:            "bold",    # class: 'gs'
+        Generic.Subheading:        "",        # class: 'gu'
+        Generic.Traceback:         "",        # class: 'gt'
+    }
--- a/MoinMoin/support/pygments/token.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/token.py	Tue Mar 09 18:06:25 2010 +0300
@@ -8,11 +8,6 @@
     :copyright: Copyright 2006-2010 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
-try:
-    set
-except NameError:
-    from sets import Set as set
-
 
 class _TokenType(tuple):
     parent = None
--- a/MoinMoin/support/pygments/util.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/support/pygments/util.py	Tue Mar 09 18:06:25 2010 +0300
@@ -8,8 +8,10 @@
     :copyright: Copyright 2006-2010 by the Pygments team, see AUTHORS.
     :license: BSD, see LICENSE for details.
 """
+
 import re
 import sys
+import codecs
 
 
 split_path_re = re.compile(r'[/\\ ]')
@@ -206,6 +208,7 @@
     import StringIO, cStringIO
     BytesIO = cStringIO.StringIO
     StringIO = StringIO.StringIO
+    uni_open = codecs.open
 else:
     import builtins
     bytes = builtins.bytes
@@ -220,3 +223,4 @@
     import io
     BytesIO = io.BytesIO
     StringIO = io.StringIO
+    uni_open = builtins.open
--- a/MoinMoin/user.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/user.py	Tue Mar 09 18:06:25 2010 +0300
@@ -24,7 +24,7 @@
 from MoinMoin.support.python_compatibility import hash_new, hmac_new
 
 from MoinMoin import config, caching, wikiutil, i18n, events
-from MoinMoin.util import timefuncs, filesys, random_string
+from MoinMoin.util import timefuncs, random_string
 from MoinMoin.wikiutil import url_quote_plus
 
 
@@ -37,7 +37,7 @@
     """
     import re
     user_re = re.compile(r'^\d+\.\d+(\.\d+)?$')
-    files = filesys.dclistdir(request.cfg.user_dir)
+    files = os.listdir(request.cfg.user_dir)
     userlist = [f for f in files if user_re.match(f)]
     return userlist
 
--- a/MoinMoin/util/filesys.py	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/util/filesys.py	Tue Mar 09 18:06:25 2010 +0300
@@ -9,6 +9,7 @@
 
 import sys, os, shutil, time, errno
 from stat import S_ISDIR, ST_MODE, S_IMODE
+import warnings
 
 from MoinMoin import log
 logging = log.getLogger(__name__)
@@ -402,21 +403,29 @@
     def realPathCase(path):
         return None
 
-# dircache stuff seems to be broken on win32 (at least for FAT32, maybe NTFS)
-DCENABLED = 1 # set to 0 to disable dirchache usage
+# dircache stuff seems to be broken on win32 (at least for FAT32, maybe NTFS).
+# dircache stuff is also broken on POSIX if updates happen too fast (< 1s).
+DCENABLED = 0 # set to 0 to completely disable dircache usage
+
+# Note: usage of the dc* functions below is deprecated, they'll get removed soon.
+dc_deprecated = "dircache function calls (dcdisable,dclistdir,dcreset) are deprecated, please fix caller"
+
 def dcdisable():
+    warnings.warn(dc_deprecated, DeprecationWarning, stacklevel=2)
     global DCENABLED
     DCENABLED = 0
 
 import dircache
 
 def dclistdir(path):
+    warnings.warn(dc_deprecated, DeprecationWarning, stacklevel=2)
     if sys.platform == 'win32' or not DCENABLED:
         return os.listdir(path)
     else:
         return dircache.listdir(path)
 
 def dcreset():
+    warnings.warn(dc_deprecated, DeprecationWarning, stacklevel=2)
     if sys.platform == 'win32' or not DCENABLED:
         return
     else:
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/_documentation.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/_documentation.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/_upgrade.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/_upgrade.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/_whatsnew.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/_whatsnew.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -33,143 +33,28 @@
 	<h1>
 		FCKeditor ChangeLog - What's New?</h1>
 	<h3>
-		Version 2.6.4.1</h3>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li><strong>Security release, upgrade is highly recommended.</strong></li>
-	</ul>
-	<h3>
-		Version 2.6.4</h3>
-	<p>
-		Fixed Bugs:</p>
-	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2777">#2777</a>] Merging
-			cells between table header and body is no longer possible.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2815">#2815</a>] Fixed
-			WSC issues at slow connection speed. Added SSL support.</li>
-		<li>Language file updates for the following languages:
-			<ul>
-				<li>Chinese (Traditional)</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2846">#2846</a>] French</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2801">#2801</a>] Hebrew</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2824">#2824</a>] Russian</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2811">#2811</a>] Turkish</li>
-			</ul>
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2757">#2757</a>] Fixed
-			a minor bug which causes selection positions to be improperly restored during undos
-			and redos.</li>
-	</ul>
-	<h3>
-		Version 2.6.4 Beta</h3>
+		Version 2.6.6</h3>
 	<p>
 		New Features and Improvements:</p>
 	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2685">#2685</a>] Integration
-			with "WebSpellChecker", a <strong>zero installation and free spell checker</strong>
-			provided by SpellChecker.net. This is now the default spell checker in the editor
-			(requires internet connection). All previous spell checking solutions are still
-			available.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2430">#2430</a>] In the
-			table dialog it's possible to create header cells in the first row (included in
-			a thead element) or the first column of the table. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/822">#822</a>] The table
-			cell dialog allows switching between normal data cells or header cells (TD vs. TH).
-		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2515">#2515</a>] New language
-			file for Icelandic.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/5104">#5104</a>] Fixed
+			compatibility with Gecko browsers released in 2010 in the ColdFusion server side integration files.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4765">#4765</a>] Fixed
+			a potential function name clash in the built-in file browser with future versions of ColdFusion.</li>
 	</ul>
 	<p>
 		Fixed Bugs:</p>
 	<ul>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2381">#2381</a>] Protected
-			the editor from duplicate iframes</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1752">#1752</a>] Fixed
-			the issue with tablecommands plugin and undefined tagName.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2333">#2333</a>] The &amp;gt;
-			character inside text wasn't encoded in Opera and Safari.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2467">#2467</a>] Fixed
-			JavaScript error with the fit window command in source mode.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2472">#2472</a>] Splitting
-			a TH will create a two TH, not a TH and a TD.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1891">#1891</a>] Removed
-			unnecessary name attributes in dialogs. </li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/798">#798</a>, <a target="_blank"
-			href="http://dev.fckeditor.net/ticket/2495">#2495</a>] If an image was placed inside
-			a container with dimensions or floating it wasn't possible to edit its properties
-			from the toolbar or context menu.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1982">#1982</a>] Submenus
-			in IE7 now are shown properly.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2496">#2496</a>] Using
-			the Paste dialogs in IE might insert the content at the start of the editor.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2349">#2496</a>] Fixed
-			RTL dialog layout in Internet Explorer.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2488">#2488</a>] Fixed
-			the issue where email links in IE would take the browser to a new page in addition
-			to calling up the email client.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2519">#2519</a>] Fixed
-			race condition at registering the FCKeditorAPI object in multiple editor scenarios.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2525">#2525</a>] Fixed
-			JavaScript error in Google Chrome when StartupShowBlocks is set to true.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4642">#4642</a>] Avoided infinite 
+			loop in IE with invalid HTML.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4487">#4487</a>] The editor was not loading properly in Safari 3.</li>
 		<li>Language file updates for the following languages:
 			<ul>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2440">#2440</a>] Dutch</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2451">#2451</a>] Basque</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2451">#2650</a>] Danish</li>
-				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2208">#2535</a>] German
-				</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4465">#4465</a>] Czech </li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4759">#4759</a>] Swedish </li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2939">#2939</a>] Finnish </li>
 			</ul>
 		</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2531">#2531</a>] The ENTER
-			key will properly scroll to the cursor position when breaking long paragraphs.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2573">#2573</a>] The type
-			name in configurations for the ASP connector are now case sensitive.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2503">#2503</a>] DL, DT
-			and DD where missing the formatting in the generated HTML.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2516">#2516</a>] Replaced
-			the extension AddItem of Array with the standard "push" method.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2486">#2486</a>] Vertically
-			splitting cell with colspan &gt; 1 breaks table layout.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2597">#2597</a>] Fixed
-			the issue where dropping contents from outside of the editor doesn't work in Safari.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2412">#2412</a>] Fixed
-			the issue where FCK.InsertHtml() is no longer removing selected contents after content
-			insertion in Firefox.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2407">#2407</a>] Fixed
-			the issue where the Div container command and the blockquote command would break
-			lists.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2469">#2469</a>] Fixed
-			a minor issue where FCK.SetData() may cause the editor to become unresponsive to
-			the first click after being defocused.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2611">#2611</a>] Fixed
-			an extra slash on quickupload of the asp connector.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2616">#2616</a>] Fixed
-			another situation where new elements were inserted at the beginning of the content
-			in IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2634">#2634</a>] Fixed
-			two obsolete references to Array::AddItem() instances still in the code.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2679">#2679</a>] Fixed
-			infinite loop problems with FCKDomRangeIterator class which causes some commands
-			to hang when applied to certain document structures.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2649">#2649</a>] Fixed
-			a JavaScript error in IE when user tries to search with the "Match whole word" option
-			enabled and the matched word is at exactly the end of document.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2603">#2603</a>] Changed
-			the <a href="http://docs.fckeditor.net/EMailProtection">EMailProtection</a> to "none"
-			for better compatibility.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2612">#2612</a>] The 'ForcePasteAsPlainText'
-			configuration option didn't work correctly in Safari and Chrome.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2696">#2696</a>] Fixed
-			non-working autogrow plugin.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2753">#2753</a>] Fixed
-			occasional exceptions in the dragersizetable plugin with IE.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2653">#2653</a>] and [<a
-			target="_blank" href="http://dev.fckeditor.net/ticket/2733">#2733</a>] Enable undo
-			of changes to tables and table cells.</li>
-		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1865">#1865</a>] The context
-			menu is now working properly over the last row in a table with thead. Thanks to
-			Koen Willems.</li>
 	</ul>
 	<p>
 		<a href="_whatsnew_history.html">See previous versions history</a></p>
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/_whatsnew_history.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/_whatsnew_history.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -33,6 +33,214 @@
 	<h1>
 		FCKeditor ChangeLog - What's New?</h1>
 	<h3>
+		Version 2.6.5</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>Introduced the Spell Check As You Type (SCAYT) spell checking option.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li><strong>Security release, upgrade is highly recommended</strong> (fixed security issues in ASP and ColdFusion scripts).
+			</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2856">#2856</a>] Fixed
+			problem with inches in paste dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3120">#3120</a>]
+			# (pound sign) is not correctly escaped in file urls.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2915">#2915</a>]
+			About plugin shows misleading user language.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2821">#2821</a>] Configuration
+			items that used floating point numbers were parsed as integers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2604">#2064</a>] The asp
+			connector didn't work correctly in windows 2000 servers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3429">#3429</a>] Fixed
+			problem in IE8 with XHTML doctype. Thanks to duncansimey.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3446">#3446</a>] Fixed self-closed
+ 			&lt;option&gt; in the table cell dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3181">#3181</a>] Node selection
+			could raise an error in IE8.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2156">#2156</a>]
+			After calling GetData() the style removal operations didn't work in IE. Thanks to
+			Compendium Blogware.</li>
+	  <li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3427">#3427</a>] Improved
+ 			compatibility of Document properties dialog with Eclipse.</li>
+		<li>Language file updates for the following languages:
+			<ul>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2908">#2908</a>] Czech </li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2849">#2849</a>] Lithuanian</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3636">#3636</a>] Polish</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3741">#3741</a>] Korean</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2861">#2861</a>] Slovenian</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3439">#3439</a>] IgnoreEmptyParagraphValue
+			had no effect if ProcessHTMLEntities is false.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3880">#3880</a>] Fixed some minor
+			logical and typing mistakes in fckdomrange_ie.js.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2689">#2689</a>] If a
+			custom connector tried to use the "url" attribute for files it was always reencoded.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1537">#1537</a>] Fixed extra
+			&lt;p&gt; tag added before pasted contents from Paste From Word dialog.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2874">#2874</a>] Fixed wrong position
+			of caption tag in tables with table headers.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3818">#3818</a>] Fixed layout error
+			in text and background color popups when more colors button is disabled.</li>
+ 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3481">#3481</a>] Fixed an issue in
+ 			WebKit where paste actions inside table cells may leak outside of the table cell.</li>
+ 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3677">#3677</a>] Fixed JavaScript
+ 			error when trying to create link for images inside floating div containers.</li>
+ 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3925">#3925</a>] Removed obsolete
+ 			parentWindow reference from FCKDialog.OpenDialog().</li>
+ 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2936">#2936</a>] Added protection
+			in the PHP upload if the destination folder is placed at the root and doesn't exit.</li>
+ 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/4357">#4357</a>] Avoid problem in
+			the paste dialog if IIS is set to process HTML files as Asp.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2201">#2201</a>] Fixed a crash in IE
+ 			in an object is selected (with handles) on unload of the editor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3053">#3053</a>] Fixed problems with
+			the height of the content area in Safari and Chrome.</li>
+	</ul>
+	<h3>
+		Version 2.6.4.1</h3>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li><strong>Security release, upgrade is highly recommended.</strong></li>
+	</ul>
+	<h3>
+		Version 2.6.4</h3>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2777">#2777</a>] Merging
+			cells between table header and body is no longer possible.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2815">#2815</a>] Fixed
+			WSC issues at slow connection speed. Added SSL support.</li>
+		<li>Language file updates for the following languages:
+			<ul>
+				<li>Chinese (Traditional)</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2846">#2846</a>] French</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2801">#2801</a>] Hebrew</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2824">#2824</a>] Russian</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2811">#2811</a>] Turkish</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2757">#2757</a>] Fixed
+			a minor bug which causes selection positions to be improperly restored during undos
+			and redos.</li>
+	</ul>
+	<h3>
+		Version 2.6.4 Beta</h3>
+	<p>
+		New Features and Improvements:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2685">#2685</a>] Integration
+			with "WebSpellChecker", a <strong>zero installation and free spell checker</strong>
+			provided by SpellChecker.net. This is now the default spell checker in the editor
+			(requires internet connection). All previous spell checking solutions are still
+			available.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2430">#2430</a>] In the
+			table dialog it's possible to create header cells in the first row (included in
+			a thead element) or the first column of the table. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/822">#822</a>] The table
+			cell dialog allows switching between normal data cells or header cells (TD vs. TH).
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2515">#2515</a>] New language
+			file for Icelandic.</li>
+	</ul>
+	<p>
+		Fixed Bugs:</p>
+	<ul>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2381">#2381</a>] Protected
+			the editor from duplicate iframes</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1752">#1752</a>] Fixed
+			the issue with tablecommands plugin and undefined tagName.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2333">#2333</a>] The &amp;gt;
+			character inside text wasn't encoded in Opera and Safari.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2467">#2467</a>] Fixed
+			JavaScript error with the fit window command in source mode.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2472">#2472</a>] Splitting
+			a TH will create a two TH, not a TH and a TD.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1891">#1891</a>] Removed
+			unnecessary name attributes in dialogs. </li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/798">#798</a>, <a target="_blank"
+			href="http://dev.fckeditor.net/ticket/2495">#2495</a>] If an image was placed inside
+			a container with dimensions or floating it wasn't possible to edit its properties
+			from the toolbar or context menu.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1982">#1982</a>] Submenus
+			in IE7 now are shown properly.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2496">#2496</a>] Using
+			the Paste dialogs in IE might insert the content at the start of the editor.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2349">#2496</a>] Fixed
+			RTL dialog layout in Internet Explorer.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2488">#2488</a>] Fixed
+			the issue where email links in IE would take the browser to a new page in addition
+			to calling up the email client.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2519">#2519</a>] Fixed
+			race condition at registering the FCKeditorAPI object in multiple editor scenarios.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2525">#2525</a>] Fixed
+			JavaScript error in Google Chrome when StartupShowBlocks is set to true.</li>
+		<li>Language file updates for the following languages:
+			<ul>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2440">#2440</a>] Dutch</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2451">#2451</a>] Basque</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2451">#2650</a>] Danish</li>
+				<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2208">#2535</a>] German
+				</li>
+			</ul>
+		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2531">#2531</a>] The ENTER
+			key will properly scroll to the cursor position when breaking long paragraphs.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2573">#2573</a>] The type
+			name in configurations for the ASP connector are now case sensitive.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2503">#2503</a>] DL, DT
+			and DD where missing the formatting in the generated HTML.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2516">#2516</a>] Replaced
+			the extension AddItem of Array with the standard "push" method.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2486">#2486</a>] Vertically
+			splitting cell with colspan &gt; 1 breaks table layout.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2597">#2597</a>] Fixed
+			the issue where dropping contents from outside of the editor doesn't work in Safari.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2412">#2412</a>] Fixed
+			the issue where FCK.InsertHtml() is no longer removing selected contents after content
+			insertion in Firefox.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2407">#2407</a>] Fixed
+			the issue where the Div container command and the blockquote command would break
+			lists.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2469">#2469</a>] Fixed
+			a minor issue where FCK.SetData() may cause the editor to become unresponsive to
+			the first click after being defocused.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2611">#2611</a>] Fixed
+			an extra slash on quickupload of the asp connector.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2616">#2616</a>] Fixed
+			another situation where new elements were inserted at the beginning of the content
+			in IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2634">#2634</a>] Fixed
+			two obsolete references to Array::AddItem() instances still in the code.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2679">#2679</a>] Fixed
+			infinite loop problems with FCKDomRangeIterator class which causes some commands
+			to hang when applied to certain document structures.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2649">#2649</a>] Fixed
+			a JavaScript error in IE when user tries to search with the "Match whole word" option
+			enabled and the matched word is at exactly the end of document.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2603">#2603</a>] Changed
+			the <a href="http://docs.fckeditor.net/EMailProtection">EMailProtection</a> to "none"
+			for better compatibility.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2612">#2612</a>] The 'ForcePasteAsPlainText'
+			configuration option didn't work correctly in Safari and Chrome.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2696">#2696</a>] Fixed
+			non-working autogrow plugin.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2753">#2753</a>] Fixed
+			occasional exceptions in the dragersizetable plugin with IE.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/2653">#2653</a>] and [<a
+			target="_blank" href="http://dev.fckeditor.net/ticket/2733">#2733</a>] Enable undo
+			of changes to tables and table cells.</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/1865">#1865</a>] The context
+			menu is now working properly over the last row in a table with thead. Thanks to
+			Koen Willems.</li>
+	</ul>
+	<h3>
 		Version 2.6.3</h3>
 	<p>
 		Fixed Bugs:</p>
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckcontextmenu.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckcontextmenu.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdataprocessor.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdataprocessor.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdocumentfragment_gecko.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdocumentfragment_gecko.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdocumentfragment_ie.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdocumentfragment_ie.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdomrange.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdomrange.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdomrange_gecko.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdomrange_gecko.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdomrange_ie.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdomrange_ie.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -77,7 +77,7 @@
 FCKDomRange.prototype.SelectBookmark = function( bookmark, forceExpand )
 {
 	var bIsCollapsed = this.CheckIsCollapsed() ;
-	var bIsStartMakerAlone ;
+	var bIsStartMarkerAlone ;
 	var dummySpan ;
 
 	// Create marker tags for the start and end boundaries.
@@ -111,7 +111,7 @@
 	}
 	else
 	{
-		bIsStartMakerAlone = ( forceExpand || !eStartMarker.previousSibling || eStartMarker.previousSibling.nodeName.toLowerCase() == 'br' ) && !eStartMarker.nextSibing ;
+		bIsStartMarkerAlone = forceExpand || !eStartMarker.previousSibling || eStartMarker.previousSibling.nodeName.toLowerCase() == 'br';
 
 		// Append a temporary <span>&#65279;</span> before the selection.
 		// This is needed to avoid IE destroying selections inside empty
@@ -122,7 +122,7 @@
 		dummySpan.innerHTML = '&#65279;' ;	// Zero Width No-Break Space (U+FEFF). See #1359.
 		eStartMarker.parentNode.insertBefore( dummySpan, eStartMarker ) ;
 
-		if ( bIsStartMakerAlone )
+		if ( bIsStartMarkerAlone )
 		{
 			// To expand empty blocks or line spaces after <br>, we need
 			// instead to have any char, which will be later deleted using the
@@ -141,7 +141,7 @@
 
 	if ( bIsCollapsed )
 	{
-		if ( bIsStartMakerAlone )
+		if ( bIsStartMarkerAlone )
 		{
 			// Move the selection start to include the temporary &#65279;.
 			oIERange.moveStart( 'character', -1 ) ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdomrangeiterator.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckdomrangeiterator.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckeditingarea.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckeditingarea.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -354,7 +354,11 @@
 function FCKEditingArea_Cleanup()
 {
 	if ( this.Document )
+	{
+		// Avoid IE crash if an object is selected on unload #2201
+		this.Document.selection.empty() ;
 		this.Document.body.innerHTML = "" ;
+	}
 	this.TargetElement = null ;
 	this.IFrame = null ;
 	this.Document = null ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckelementpath.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckelementpath.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckenterkey.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckenterkey.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckevents.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckevents.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckhtmliterator.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckhtmliterator.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -71,7 +71,7 @@
 } ;
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckicon.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckicon.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckiecleanup.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckiecleanup.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckimagepreloader.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckimagepreloader.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckkeystrokehandler.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckkeystrokehandler.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckmenublock.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckmenublock.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckmenublockpanel.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckmenublockpanel.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckmenuitem.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckmenuitem.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckpanel.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckpanel.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -231,6 +231,9 @@
 			this.RelativeElement = relElement ;
 		}
 
+		// Save the popup related arguments so they can be used by others (e.g. SCAYT).
+		this._PopupArgs = [x, y, iMainWidth, eMainNode.offsetHeight, relElement];
+
 		// Second call: Show the Popup at the specified location, with the correct size.
 		this._Popup.show( x, y, iMainWidth, eMainNode.offsetHeight, relElement ) ;
 
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckplugin.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckplugin.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckspecialcombo.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckspecialcombo.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckstyle.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckstyle.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbar.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbar.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarbreak_gecko.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarbreak_gecko.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarbreak_ie.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarbreak_ie.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarbutton.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarbutton.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarbuttonui.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarfontformatcombo.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarfontformatcombo.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarfontscombo.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarfontscombo.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarfontsizecombo.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarfontsizecombo.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarpanelbutton.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarpanelbutton.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarspecialcombo.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarspecialcombo.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarstylecombo.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fcktoolbarstylecombo.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckw3crange.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckw3crange.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckxml.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckxml.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckxml_gecko.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckxml_gecko.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckxml_ie.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/classes/fckxml_ie.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fck_othercommands.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fck_othercommands.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -40,7 +40,7 @@
 
 FCKDialogCommand.prototype.Execute = function()
 {
-	FCKDialog.OpenDialog( 'FCKDialog_' + this.Name , this.Title, this.Url, this.Width, this.Height, this.CustomValue, null, this.Resizable ) ;
+	FCKDialog.OpenDialog( 'FCKDialog_' + this.Name , this.Title, this.Url, this.Width, this.Height, this.CustomValue, this.Resizable ) ;
 }
 
 FCKDialogCommand.prototype.GetState = function()
@@ -186,7 +186,7 @@
 	{
 		var iWidth	= FCKConfig.ScreenWidth * 0.65 ;
 		var iHeight	= FCKConfig.ScreenHeight * 0.65 ;
-		FCKDialog.OpenDialog( 'FCKDialog_Source', FCKLang.Source, 'dialog/fck_source.html', iWidth, iHeight, null, null, true ) ;
+		FCKDialog.OpenDialog( 'FCKDialog_Source', FCKLang.Source, 'dialog/fck_source.html', iWidth, iHeight, null, true ) ;
 	}
 	else
 	    FCK.SwitchEditMode() ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckblockquotecommand.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckblockquotecommand.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckcorestylecommand.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckcorestylecommand.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckfitwindow.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckfitwindow.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckindentcommands.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckindentcommands.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckjustifycommands.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckjustifycommands.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fcklistcommands.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fcklistcommands.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fcknamedcommand.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fcknamedcommand.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckpasteplaintextcommand.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckpastewordcommand.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckpastewordcommand.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckremoveformatcommand.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckremoveformatcommand.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckshowblocks.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckshowblocks.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_gecko.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckspellcheckcommand_ie.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckstylecommand.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fckstylecommand.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fcktablecommand.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fcktablecommand.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fcktextcolorcommand.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/commandclasses/fcktextcolorcommand.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -193,9 +193,9 @@
 		oDiv.innerHTML = '<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td nowrap align="center">' + FCKLang.ColorMoreColors + '</td></tr></table>' ;
 
 		FCKTools.AddEventListenerEx( oDiv, 'click', FCKTextColorCommand_MoreOnClick, this ) ;
-	}
 
-	// Dirty hack for Opera, Safari and Firefox 3.
-	if ( !FCKBrowserInfo.IsIE )
-		oDiv.style.width = '96%' ;
+		// Dirty hack for Opera, Safari and Firefox 3.
+		if ( !FCKBrowserInfo.IsIE )
+			oDiv.style.width = '96%' ;
+	}
 }
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/fckconstants.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/fckconstants.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/fckeditorapi.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/fckeditorapi.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -40,8 +40,8 @@
 		// objects that aren't really FCKeditor instances.
 		var sScript =
 			'window.FCKeditorAPI = {' +
-				'Version : "2.6.4.1",' +
-				'VersionBuild : "23187",' +
+				'Version : "2.6.6",' +
+				'VersionBuild : "25427",' +
 				'Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},' +
 
 				'GetInstance : function( name )' +
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/fckjscoreextensions.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/fckjscoreextensions.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/fckscriptloader.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/fckscriptloader.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fck.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fck.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -235,6 +235,8 @@
 
 	GetData : function( format )
 	{
+		FCK.Events.FireEvent("OnBeforeGetData") ;
+
 		// We assume that if the user is in source editing, the editor value must
 		// represent the exact contents of the source, as the user wanted it to be.
 		if ( FCK.EditMode == FCK_EDITMODE_SOURCE )
@@ -270,7 +272,11 @@
 				data = FCK.XmlDeclaration + '\n' + data ;
 		}
 
-		return FCKConfig.ProtectedSource.Revert( data ) ;
+		data = FCKConfig.ProtectedSource.Revert( data ) ;
+
+		setTimeout( function() { FCK.Events.FireEvent("OnAfterGetData") ; }, 0 ) ;
+
+		return data ;
 	},
 
 	UpdateLinkedField : function()
@@ -494,7 +500,7 @@
 			FCK.Events.FireEvent( 'OnAfterSetHTML' ) ;
 		}
 
-		if ( FCKBrowserInfo.IsGecko )
+		if ( window.onresize )
 			window.onresize() ;
 	},
 
@@ -955,6 +961,38 @@
 	FCKTools.AddEventListener( FCK.EditorDocument, 'mousemove', _FCK_MouseEventsListener ) ;
 	FCKTools.AddEventListener( FCK.EditorDocument, 'mousedown', _FCK_MouseEventsListener ) ;
 	FCKTools.AddEventListener( FCK.EditorDocument, 'mouseup', _FCK_MouseEventsListener ) ;
+	if ( FCKBrowserInfo.IsSafari )
+	{
+		// #3481: WebKit has a bug with paste where the paste contents may leak
+		// outside table cells. So add padding nodes before and after the paste.
+		FCKTools.AddEventListener( FCK.EditorDocument, 'paste', function( evt )
+		{
+			var range = new FCKDomRange( FCK.EditorWindow );
+			var nodeBefore = FCK.EditorDocument.createTextNode( '\ufeff' );
+			var nodeAfter = FCK.EditorDocument.createElement( 'a' );
+			nodeAfter.id = 'fck_paste_padding';
+			nodeAfter.innerHTML = '&#65279;';
+			range.MoveToSelection();
+			range.DeleteContents();
+
+			// Insert padding nodes.
+			range.InsertNode( nodeBefore );
+			range.Collapse();
+			range.InsertNode( nodeAfter );
+
+			// Move the selection to between the padding nodes.
+			range.MoveToPosition( nodeAfter, 3 );
+			range.Select();
+
+			// Remove the padding nodes after the paste is done.
+			setTimeout( function()
+				{
+					nodeBefore.parentNode.removeChild( nodeBefore );
+					nodeAfter = FCK.EditorDocument.getElementById( 'fck_paste_padding' );
+					nodeAfter.parentNode.removeChild( nodeAfter );
+				}, 0 );
+		} );
+	}
 
 	// Most of the CTRL key combos do not work under Safari for onkeydown and onkeypress (See #1119)
 	// But we can use the keyup event to override some of these...
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fck_contextmenu.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fck_contextmenu.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fck_gecko.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fck_gecko.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -375,6 +375,16 @@
 
 		range = new FCKDomRange( this.EditorWindow ) ;
 		range.MoveToSelection() ;
+
+		// If the first element (if exists) of the document fragment is a block
+		// element, then split the current block. (#1537)
+		var currentNode = docFrag.RootNode.firstChild ;
+		while ( currentNode && currentNode.nodeType != 1 )
+			currentNode = currentNode.nextSibling ;
+
+		if ( currentNode && FCKListsLib.BlockElements[ currentNode.nodeName.toLowerCase() ] )
+			range.SplitBlock() ;
+
 		range.DeleteContents() ;
 		range.InsertNode( docFrag.RootNode ) ;
 
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fck_ie.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fck_ie.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -172,7 +172,12 @@
 	oSel.createRange().pasteHTML( html ) ;
 
 	// Remove the fake node
-	FCK.EditorDocument.getElementById('__fakeFCKRemove__').removeNode( true ) ;
+	var fake = FCK.EditorDocument.getElementById('__fakeFCKRemove__') ;
+	// If the span is the only child of a node (so the inserted HTML is beyond that),
+	// remove also that parent that isn't needed. #1537
+	if (fake.parentNode.childNodes.length == 1)
+		fake = fake.parentNode ;
+	fake.removeNode( true ) ;
 
 	FCKDocumentProcessor.Process( FCK.EditorDocument ) ;
 
@@ -373,22 +378,27 @@
 {
 	// Creates the array that will be returned. It contains one or more created links (see #220).
 	var aCreatedLinks = new Array() ;
+	var isControl = FCKSelection.GetType() == 'Control' ;
+	var selectedElement = isControl && FCKSelection.GetSelectedElement() ;
 
 	// Remove any existing link in the selection.
-	FCK.ExecuteNamedCommand( 'Unlink', null, false, !!noUndo ) ;
+	// IE BUG: Unlinking a floating control selection that is not inside a link
+	// will collapse the selection. (#3677)
+	if ( !( isControl && !FCKTools.GetElementAscensor( selectedElement, 'a' ) ) )
+		FCK.ExecuteNamedCommand( 'Unlink', null, false, !!noUndo ) ;
 
 	if ( url.length > 0 )
 	{
 		// If there are several images, and you try to link each one, all the images get inside the link:
 		// <img><img> -> <a><img></a><img> -> <a><img><img></a> due to the call to 'CreateLink' (bug in IE)
-		if (FCKSelection.GetType() == 'Control')
+		if ( isControl )
 		{
 			// Create a link
 			var oLink = this.EditorDocument.createElement( 'A' ) ;
 			oLink.href = url ;
 
 			// Get the selected object
-			var oControl = FCKSelection.GetSelectedElement() ;
+			var oControl = selectedElement ;
 			// Put the link just before the object
 			oControl.parentNode.insertBefore(oLink, oControl) ;
 			// Move the object inside the link
@@ -448,7 +458,7 @@
 	// Radio buttons and checkboxes should not be allowed to be triggered in IE
 	// in editable mode. Otherwise the whole browser window may be locked by
 	// the buttons. (#1782)
-	if ( e.nodeName.IEquals( 'input' ) && e.type.IEquals( ['radio', 'checkbox'] ) && !e.disabled )
+	if ( e.nodeName && e.nodeName.IEquals( 'input' ) && e.type.IEquals( ['radio', 'checkbox'] ) && !e.disabled )
 	{
 		e.disabled = true ;
 		FCKTools.SetTimeout( _FCK_RemoveDisabledAtt, 1, e ) ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckbrowserinfo.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckbrowserinfo.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -58,4 +58,8 @@
 			browserInfo.IsGecko19 = ( geckoVersion > 1.8 ) ;
 		}
 	}
+
+	if ( browserInfo.IsSafari )
+		browserInfo.IsSafari3 = ( parseFloat( s.match( / applewebkit\/(\d+)/ )[1] ) < 526 ) ;
+
 })(FCKBrowserInfo) ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckcodeformatter.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckcodeformatter.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckcommands.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckcommands.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -142,6 +142,9 @@
 		// Generic Undefined command (usually used when a command is under development).
 		case 'Undefined'	: oCommand = new FCKUndefinedCommand() ; break ;
 
+		case 'Scayt' : oCommand = FCKScayt.CreateCommand() ; break ;
+		case 'ScaytContext' : oCommand = FCKScayt.CreateContextCommand() ; break ;
+
 		// By default we assume that it is a named command.
 		default:
 			if ( FCKRegexLib.NamedCommands.test( commandName ) )
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckconfig.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckconfig.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -97,7 +97,7 @@
 			this.PageConfig[ sKey ] = false ;
 
 		else if ( sVal.length > 0 && !isNaN( sVal ) )	// If it is a number.
-			this.PageConfig[ sKey ] = parseInt( sVal, 10 ) ;
+			this.PageConfig[ sKey ] = parseFloat( sVal ) ;
 
 		else										// In any other case it is a string.
 			this.PageConfig[ sKey ] = sVal ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckdebug.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckdebug.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckdebug_empty.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckdebug_empty.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckdialog.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckdialog.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -79,7 +79,7 @@
 		/**
 		 * Opens a dialog window using the standard dialog template.
 		 */
-		OpenDialog : function( dialogName, dialogTitle, dialogPage, width, height, customValue, parentWindow, resizable )
+		OpenDialog : function( dialogName, dialogTitle, dialogPage, width, height, customValue, resizable )
 		{
 			if ( !topDialog )
 				this.DisplayMainCover() ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckdocumentprocessor.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckdocumentprocessor.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckdomtools.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckdomtools.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -488,18 +488,46 @@
 
 		for ( var i = 0 ; i < attributes.length ; i++ )
 		{
-			if ( FCKBrowserInfo.IsIE && attributes[i].nodeName == 'class' )
+			if ( FCKBrowserInfo.IsIE )
 			{
-				// IE has a strange bug. If calling removeAttribute('className'),
-				// the attributes collection will still contain the "class"
-				// attribute, which will be marked as "specified", even if the
-				// outerHTML of the element is not displaying the class attribute.
-				// Note : I was not able to reproduce it outside the editor,
-				// but I've faced it while working on the TC of #1391.
-				if ( element.className.length > 0 )
-					return true ;
+				var attributeNodeName = attributes[i].nodeName ;
+
+				if ( attributeNodeName.StartsWith( '_fck' ) )
+				{
+					/**
+					 * There are places in the FCKeditor code where HTML element objects
+					 * get values stored as properties (e.g. _fckxhtmljob).  In Internet
+					 * Explorer, these are interpreted as attempts to set attributes on
+					 * the element.
+					 *
+					 * http://msdn.microsoft.com/en-us/library/ms533026(VS.85).aspx#Accessing_Element_Pr
+					 *
+					 * Counting these as HTML attributes cripples
+					 * FCK.Style.RemoveFromRange() once FCK.GetData() has been called.
+					 *
+					 * The above conditional prevents these internal properties being
+					 * counted as attributes.
+					 *
+					 * refs #2156 and #2834
+					 */
+
+					continue ;
+				}
+
+				if ( attributeNodeName == 'class' )
+				{
+					// IE has a strange bug. If calling removeAttribute('className'),
+					// the attributes collection will still contain the "class"
+					// attribute, which will be marked as "specified", even if the
+					// outerHTML of the element is not displaying the class attribute.
+					// Note : I was not able to reproduce it outside the editor,
+					// but I've faced it while working on the TC of #1391.
+					if ( element.className.length > 0 )
+						return true ;
+					continue ;
+				}
 			}
-			else if ( attributes[i].specified )
+			if ( attributes[i].specified )
 				return true ;
 		}
 
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcklanguagemanager.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcklanguagemanager.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcklisthandler.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcklisthandler.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcklistslib.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcklistslib.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckplugins.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckplugins.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckregexlib.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckregexlib.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -63,7 +63,7 @@
 // Empty elements may be <p></p> or even a simple opening <p> (see #211).
 EmptyParagraph	: /^<(p|div|address|h\d|center)(?=[ >])[^>]*>\s*(<\/\1>)?$/ ,
 
-EmptyOutParagraph : /^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;)(<\/\1>)?$/ ,
+EmptyOutParagraph : /^<(p|div|address|h\d|center)(?=[ >])[^>]*>(?:\s*|&nbsp;|&#160;)(<\/\1>)?$/ ,
 
 TagBody			: /></ ,
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckscayt.js	Tue Mar 09 18:06:25 2010 +0300
@@ -0,0 +1,447 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ */
+
+var FCKScayt;
+
+(function()
+{
+	var scaytOnLoad = [] ;
+	var isEngineLoaded = ( FCK && FCK.EditorWindow && FCK.EditorWindow.parent.parent.scayt)
+						? true : false ;
+	var scaytEnable = false;
+	var scaytReady  = false;
+
+	function ScaytEngineLoad( callback )
+	{
+		if ( isEngineLoaded )
+			return ;
+
+		isEngineLoaded = true ;
+		var top = FCK.EditorWindow.parent.parent;
+
+		var init = function ()
+		{
+			window.scayt = top.scayt ;
+			InitScayt() ;
+			var ScaytCombobox =  FCKToolbarItems.LoadedItems[ 'ScaytCombobox' ] ;
+			ScaytCombobox && ScaytCombobox.SetEnabled( scyt_control && scyt_control.disabled ) ;
+			InitSetup() ;
+		};
+
+		if ( top.scayt )
+		{
+			init() ;
+			return ;
+		}
+
+		// Compose the scayt url.
+		if (FCK.Config.ScaytCustomUrl)
+			FCK.Config.ScaytCustomUrl = new String(FCK.Config.ScaytCustomUrl).replace( new RegExp( "^http[s]*:\/\/"),"") ;
+
+		var protocol	= document.location.protocol ;
+		var baseUrl		= FCK.Config.ScaytCustomUrl ||'svc.spellchecker.net/spellcheck3/lf/scayt/scayt4.js' ;
+		var scaytUrl	= protocol + '//' + baseUrl ;
+		var scaytConfigBaseUrl =  ParseUrl( scaytUrl ).path +  '/' ;
+
+		// SCAYT is targetted to CKEditor, so we need this trick to make it work here.
+		var CKEDITOR = top.window.CKEDITOR || ( top.window.CKEDITOR = {} ) ;
+		CKEDITOR._djScaytConfig =
+		{
+			baseUrl : scaytConfigBaseUrl,
+			addOnLoad : function()
+			{
+				init();
+			},
+			isDebug : false
+		};
+
+
+		if ( callback )
+			scaytOnLoad.push( callback ) ;
+
+		DoLoadScript( scaytUrl ) ;
+	}
+
+	/**
+	 * DoLoadScript - load scripts with dinamic tag script creating
+	 * @param string url
+	 */
+	function DoLoadScript( url )
+	{
+		if (!url)
+            return false ;
+		var top = FCK.EditorWindow.parent.parent;
+        var s = top.document.createElement('script') ;
+        s.type = 'text/javascript' ;
+        s.src = url ;
+        top.document.getElementsByTagName('head')[0].appendChild(s) ;
+
+        return true ;
+	}
+
+	function ParseUrl( data )
+	{
+		var m = data.match(/(.*)[\/\\]([^\/\\]+\.\w+)$/) ;
+		return m ? { path: m[1], file: m[2] } : data ;
+	}
+
+	function createScaytControl ()
+	{
+		// Get public scayt params.
+		var oParams = {} ;
+		var top = FCK.EditorWindow.parent.parent;
+		oParams.srcNodeRef				= FCK.EditingArea.IFrame; 		// Get the iframe.
+		// syntax : AppName.AppVersion@AppRevision
+		//oParams.assocApp  = "FCKEDITOR." + FCKeditorAPI.Varsion + "@" + FCKeditorAPI.VersionBuild;
+		oParams.customerid 				= FCK.Config.ScaytCustomerid ;
+		oParams.customDictionaryName 	= FCK.Config.ScaytCustomDictionaryName ;
+		oParams.userDictionaryName 		= FCK.Config.ScaytUserDictionaryName ;
+		oParams.defLang 				= FCK.Config.ScaytDefLang ;
+
+		var scayt = top.scayt;
+		var scayt_control = window.scayt_control = new scayt( oParams ) ;
+	}
+
+	function InitScayt()
+	{
+		createScaytControl();
+
+		var scayt_control = window.scayt_control ;
+
+		if ( scayt_control )
+		{
+			scayt_control.setDisabled( false ) ;
+			scaytReady = true;
+			scaytEnable = !scayt_control.disabled ;
+
+			// set default scayt status
+			var ScaytCombobox = FCKToolbarItems.LoadedItems[ 'ScaytCombobox' ] ;
+			ScaytCombobox && ScaytCombobox.Enable() ;
+			ShowScaytState() ;
+		}
+
+		for ( var i = 0 ; i < scaytOnLoad.length ; i++ )
+		{
+			try
+			{
+				scaytOnLoad[i].call( this ) ;
+			}
+			catch(err)
+			{}
+		}
+	}
+
+	// ###
+	// SCAYT command class.
+	var ScaytCommand  = function()
+	{
+		name = 'Scayt' ;
+	}
+
+	ScaytCommand.prototype.Execute = function( action )
+	{
+		switch ( action )
+		{
+			case 'Options' :
+			case 'Langs' :
+			case 'About' :
+				if ( isEngineLoaded && scaytReady && !scaytEnable )
+				{
+					ScaytMessage( 'SCAYT is not enabled' );
+					break;
+				}
+
+				if ( isEngineLoaded && scaytReady )
+					FCKDialog.OpenDialog( 'Scayt', 'SCAYT Settings', 'dialog/fck_scayt.html?' + action.toLowerCase(), 343, 343 );
+				break;
+
+			default :
+				if ( !isEngineLoaded )
+				{
+					var me = this;
+					ScaytEngineLoad( function ()
+						{
+							me.SetEnabled( !window.scayt_control.disabled ) ;
+						}) ;
+
+					return true;
+				}
+				else if ( scaytReady )
+				{
+					// Switch the current scayt state.
+					if ( scaytEnable )
+						this.Disable() ;
+					else
+						this.Enable() ;
+
+					ShowScaytState() ;
+				}
+
+		}
+
+		if ( !isEngineLoaded )
+			return ScaytMessage( 'SCAYT is not loaded' ) || false;
+
+		if ( !scaytReady )
+			return ScaytMessage( 'SCAYT is not ready' ) || false;
+
+
+		return true;
+	}
+
+	ScaytCommand.prototype.Enable = function()
+	{
+		window.scayt_control.setDisabled( false ) ;
+		scaytEnable = true;
+	}
+
+	ScaytCommand.prototype.Disable = function()
+	{
+		window.scayt_control.setDisabled( true ) ;
+		scaytEnable = false;
+	}
+
+	ScaytCommand.prototype.SetEnabled = function( state )
+	{
+		if ( state )
+			this.Enable() ;
+		else
+			this.Disable() ;
+
+		ShowScaytState() ;
+		return true;
+	}
+
+	ScaytCommand.prototype.GetState = function()
+	{
+		return FCK_TRISTATE_OFF;
+	}
+
+	function ShowScaytState()
+	{
+		var combo = FCKToolbarItems.GetItem( 'SpellCheck' ) ;
+
+		if ( !combo || !combo._Combo || !combo._Combo._OuterTable )
+			return;
+
+		var bItem = combo._Combo._OuterTable.getElementsByTagName( 'img' )[1] ;
+		var dNode = combo._Combo.Items['trigger'] ;
+
+		if ( scaytEnable )
+		{
+			bItem.style.opacity = '1' ;
+			dNode.innerHTML = GetStatusLabel() ;
+		}
+		else
+		{
+			bItem.style.opacity = '0.5' ;
+			dNode.innerHTML = GetStatusLabel() ;
+		}
+	}
+
+	function GetStatusLabel()
+	{
+		if ( !scaytReady )
+			return  '<b>Enable SCAYT</b>' ;
+
+		return scaytEnable ? '<b>Disable SCAYT</b>' : '<b>Enable SCAYT</b>' ;
+	}
+
+	// ###
+	// Class for the toolbar item.
+	var ToolbarScaytComboBox = function( tooltip, style )
+	{
+		this.Command = FCKCommands.GetCommand( 'Scayt' ) ;
+		this.CommandName = 'Scayt' ;
+		this.Label = this.GetLabel() ;
+		this.Tooltip = FCKLang.ScaytTitle ;
+		this.Style = FCK_TOOLBARITEM_ONLYTEXT ; //FCK_TOOLBARITEM_ICONTEXT OR FCK_TOOLBARITEM_ONLYTEXT
+	}
+
+	ToolbarScaytComboBox.prototype = new FCKToolbarSpecialCombo ;
+
+	//Add the items to the combo list
+	ToolbarScaytComboBox.prototype.CreateItems = function()
+	{
+		this._Combo.AddItem( 'Trigger', '<b>Enable SCAYT</b>' );
+		this._Combo.AddItem( 'Options', FCKLang.ScaytTitleOptions || "Options"  );
+		this._Combo.AddItem( 'Langs', FCKLang.ScaytTitleLangs || "Languages");
+		this._Combo.AddItem( 'About', FCKLang.ScaytTitleAbout || "About");
+	}
+
+	// Label shown in the toolbar.
+	ToolbarScaytComboBox.prototype.GetLabel = function()
+	{
+		var strip = FCKConfig.SkinPath + 'fck_strip.gif';
+
+		return FCKBrowserInfo.IsIE ?
+				'<div class="TB_Button_Image"><img src="' + strip + '" style="top:-192px"></div>'
+			:
+				'<img class="TB_Button_Image" src="' + FCK_SPACER_PATH + '" style="background-position: 0px -192px;background-image: url(' + strip + ');">';
+	}
+
+	function ScaytMessage( m )
+	{
+		m && alert( m ) ;
+	}
+
+	var ScaytContextCommand = function()
+	{
+		name = 'ScaytContext' ;
+	}
+
+	ScaytContextCommand.prototype.Execute = function( contextInfo )
+	{
+		var action = contextInfo && contextInfo.action,
+			node = action && contextInfo.node,
+			scayt_control = window.scayt_control;
+
+		if ( node )
+		{
+			switch ( action )
+			{
+				case 'Suggestion' :
+					scayt_control.replace( node, contextInfo.suggestion ) ;
+					break ;
+				case 'Ignore' :
+					scayt_control.ignore( node ) ;
+					break ;
+				case 'Ignore All' :
+					scayt_control.ignoreAll( node ) ;
+					break ;
+				case 'Add Word' :
+					var top = FCK.EditorWindow.parent.parent ;
+					top.scayt.addWordToUserDictionary( node ) ;
+					break ;
+			}
+		}
+	}
+
+	// Register context menu listeners.
+	function InitSetup()
+	{
+		FCK.ContextMenu.RegisterListener(
+			{
+				AddItems : function( menu )
+				{
+					var top = FCK.EditorWindow.parent.parent;
+
+					var scayt_control = window.scayt_control,
+						scayt = top.scayt;
+
+					if ( !scayt_control )
+						return;
+
+					var node = scayt_control.getScaytNode() ;
+
+					if ( !node )
+						return;
+
+					var suggestions = scayt.getSuggestion( scayt_control.getWord( node ), scayt_control.getLang() ) ;
+
+					if ( !suggestions || !suggestions.length )
+						return;
+
+					menu.AddSeparator() ;
+
+					var maxSuggestions = FCK.Config.ScaytMaxSuggestions || 5 ;
+					var suggAveCount = ( maxSuggestions == -1 ) ? suggestions.length : maxSuggestions ;
+
+					for ( var i = 0 ; i < suggAveCount ; i += 1 )
+					{
+						if ( suggestions[i] )
+						{
+							menu.AddItem( 'ScaytContext', suggestions[i], null, false, {
+								'action' : 'Suggestion',
+								'node' : node,
+								'suggestion' : suggestions[i] } ) ;
+						}
+					}
+
+					menu.AddSeparator() ;
+
+					menu.AddItem( 'ScaytContext', 'Ignore', null, false, { 'action' : 'Ignore', 'node' : node } );
+					menu.AddItem( 'ScaytContext', 'Ignore All', null, false, { 'action' : 'Ignore All', 'node' : node } );
+					menu.AddItem( 'ScaytContext', 'Add Word', null, false, { 'action' : 'Add Word', 'node' : node } );
+					try
+					{
+						if (scaytReady && scaytEnable)
+							scayt_control.fireOnContextMenu( null, FCK.ContextMenu._InnerContextMenu);
+
+					}
+					catch( err ) {}
+				}
+			}) ;
+
+		FCK.Events.AttachEvent( 'OnPaste', function()
+			{
+					window.scayt_control.refresh() ;
+					return true;
+			} ) ;
+	}
+
+	// ##
+	// Register event listeners.
+
+ 	FCK.Events.AttachEvent( 'OnAfterSetHTML', function()
+		{
+			if ( FCKConfig.SpellChecker == 'SCAYT' )
+			{
+				if ( !isEngineLoaded && FCK.Config.ScaytAutoStartup )
+					ScaytEngineLoad() ;
+
+				if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG && isEngineLoaded && scaytReady )
+					createScaytControl();
+
+				ShowScaytState() ;
+			}
+		} ) ;
+
+	FCK.Events.AttachEvent( 'OnBeforeGetData', function()
+		{
+			scaytReady && window.scayt_control.reset();
+		} ) ;
+
+	FCK.Events.AttachEvent( 'OnAfterGetData', function()
+		{
+			scaytReady && window.scayt_control.refresh();
+		} ) ;
+
+	// ###
+	// The main object that holds the SCAYT interaction in the code.
+	FCKScayt =
+	{
+		CreateCommand : function()
+		{
+			return new ScaytCommand();
+		},
+
+		CreateContextCommand : function()
+		{
+			return new ScaytContextCommand();
+		},
+
+		CreateToolbarItem : function()
+		{
+			return new ToolbarScaytComboBox() ;
+		}
+	} ;
+})() ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckselection.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckselection.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckselection_gecko.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckselection_gecko.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckselection_ie.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckselection_ie.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -108,15 +108,16 @@
 		// Try to select the node as a control.
 		oRange = FCK.EditorDocument.body.createControlRange() ;
 		oRange.addElement( node ) ;
+		oRange.select() ;
 	}
 	catch(e)
 	{
 		// If failed, select it as a text range.
 		oRange = FCK.EditorDocument.body.createTextRange() ;
 		oRange.moveToElementText( node ) ;
+		oRange.select() ;
 	}
 
-	oRange.select() ;
 } ;
 
 FCKSelection.Collapse = function( toStart )
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckstyles.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckstyles.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktablehandler.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktablehandler.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktablehandler_gecko.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktablehandler_gecko.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktablehandler_ie.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktablehandler_ie.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktoolbaritems.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktoolbaritems.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -52,7 +52,6 @@
 		case 'PasteText'		: oItem = new FCKToolbarButton( 'PasteText'	, FCKLang.PasteText, null, null, false, true, 10 ) ; break ;
 		case 'PasteWord'		: oItem = new FCKToolbarButton( 'PasteWord'	, FCKLang.PasteWord, null, null, false, true, 11 ) ; break ;
 		case 'Print'			: oItem = new FCKToolbarButton( 'Print'		, FCKLang.Print, null, null, false, true, 12 ) ; break ;
-		case 'SpellCheck'		: oItem = new FCKToolbarButton( 'SpellCheck', FCKLang.SpellCheck, null, null, null, null, 13 ) ; break ;
 		case 'Undo'				: oItem = new FCKToolbarButton( 'Undo'		, FCKLang.Undo, null, null, false, true, 14 ) ; break ;
 		case 'Redo'				: oItem = new FCKToolbarButton( 'Redo'		, FCKLang.Redo, null, null, false, true, 15 ) ; break ;
 		case 'SelectAll'		: oItem = new FCKToolbarButton( 'SelectAll'	, FCKLang.SelectAll, null, null, true, null, 18 ) ; break ;
@@ -113,6 +112,14 @@
 		case 'ImageButton'		: oItem = new FCKToolbarButton( 'ImageButton'	, FCKLang.ImageButton, null, null, null, null, 55 ) ; break ;
 		case 'ShowBlocks'		: oItem = new FCKToolbarButton( 'ShowBlocks'	, FCKLang.ShowBlocks, null, null, null, true, 72 ) ; break ;
 
+		case 'SpellCheck' :
+			if ( FCKConfig.SpellChecker == 'SCAYT' )
+				oItem = FCKScayt.CreateToolbarItem() ;
+			else
+				oItem = new FCKToolbarButton( 'SpellCheck', FCKLang.SpellCheck, null, null, null, null, 13 ) ;
+
+			 break ;
+
 		default:
 			alert( FCKLang.UnknownToolbarItem.replace( /%1/g, itemName ) ) ;
 			return null ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktoolbarset.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktoolbarset.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -239,7 +239,7 @@
 	this._Document.getElementById( 'xCollapsed' ).style.display = collapse ? '' : 'none' ;
 	this._Document.getElementById( 'xExpanded' ).style.display = collapse ? 'none' : '' ;
 
-	if ( FCKBrowserInfo.IsGecko )
+	if ( window.onresize )
 	{
 		// I had to use "setTimeout" because Gecko was not responding in a right
 		// way when calling window.onresize() directly.
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktools.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktools.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktools_gecko.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktools_gecko.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktools_ie.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fcktools_ie.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckundo.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckundo.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckurlparams.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckurlparams.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckxhtml.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckxhtml.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -56,6 +56,23 @@
 	else
 		this._AppendChildNodes( this.MainNode, node, false ) ;
 
+	/**
+	 * FCKXHtml._AppendNode() marks DOM element objects it has
+	 * processed by adding a property called _fckxhtmljob,
+	 * setting it equal to the value of FCKXHtml.CurrentJobNum.
+	 * On Internet Explorer, if an element object has such a
+	 * property,  it will show up in the object's attributes
+	 * NamedNodeMap, and the corresponding Attr object in
+	 * that collection  will have is specified property set
+	 * to true.  This trips up code elsewhere that checks to
+	 * see if an element is free of attributes before proceeding
+	 * with an edit operation (c.f. FCK.Style.RemoveFromRange())
+	 *
+	 * refs #2156 and #2834
+	 */
+	if ( FCKBrowserInfo.IsIE )
+		FCKXHtml._RemoveXHtmlJobProperties( node ) ;
+
 	// Get the resulting XHTML as a string.
 	var sXHTML = this._GetMainXmlString() ;
 
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckxhtml_gecko.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckxhtml_gecko.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckxhtml_ie.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckxhtml_ie.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -92,6 +92,48 @@
 	}
 }
 
+/**
+ * Used to clean up HTML that has been processed FCKXHtml._AppendNode().
+ *
+ * For objects corresponding to HTML elements, Internet Explorer will
+ * treat a property as if it were an attribute set on that element.
+ *
+ * http://msdn.microsoft.com/en-us/library/ms533026(VS.85).aspx#Accessing_Element_Pr
+ *
+ * FCKXHtml._AppendNode() sets the property _fckxhtmljob on node objects
+ * corresponding HTML elements to mark them as having been processed.
+ * Counting these properties as attributes will cripple style removal
+ * because FCK.Styles.RemoveFromSelection() will not remove an element
+ * as long as it still has attributes.
+ *
+ * refs #2156 and #2834
+ */
+
+FCKXHtml._RemoveXHtmlJobProperties = function ( node )
+{
+	// Select only nodes of type ELEMENT_NODE
+	if (!node || !node.nodeType || node.nodeType != 1)
+		return ;
+
+	// Clear the _fckhtmljob attribute.
+	if ( typeof node._fckxhtmljob == 'undefined' && node.tagName !== 'BODY')
+		return;
+
+	node.removeAttribute('_fckxhtmljob') ;
+	// Recurse upon child nodes.
+	if ( node.hasChildNodes() )
+	{
+		var childNodes = node.childNodes ;
+		for ( var i = childNodes.length - 1 ; i >= 0 ; i-- )
+		{
+			var child = childNodes[i];
+			// Funny IE. #4642. It say that it has child nodes but their parent is not this node. Skip them
+			if (child.parentNode == node)
+				FCKXHtml._RemoveXHtmlJobProperties( child ) ;
+		}
+	}
+}
+
 // On very rare cases, IE is loosing the "align" attribute for DIV. (right align and apply bulleted list)
 FCKXHtml.TagProcessors['div'] = function( node, htmlNode )
 {
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckxhtmlentities.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/_source/internals/fckxhtmlentities.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/css/fck_editorarea.css	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/css/fck_editorarea.css	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/css/fck_internal.css	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/css/fck_internal.css	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/css/fck_showtableborders_gecko.css	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/css/fck_showtableborders_gecko.css	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/common/fck_dialog_common.css	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/common/fck_dialog_common.css	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/common/fck_dialog_common.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/common/fck_dialog_common.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_about.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_about.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -78,8 +78,8 @@
 								border-left: #000000 1px solid; border-bottom: #000000 1px solid">
 								<span fcklang="DlgAboutVersion">version</span>
 								<br />
-								<b>2.6.4.1</b><br />
-								Build 23187</td>
+								<b>2.6.6</b><br />
+								Build 25427</td>
 						</tr>
 					</table>
 				</td>
@@ -105,7 +105,7 @@
 					<span fcklang="DlgAboutInfo">For further information go to</span> <a href="http://www.fckeditor.net/?About"
 						target="_blank">http://www.fckeditor.net/</a>.
 					<br />
-					Copyright &copy; 2003-2009 <a href="#" onclick="SendEMail();">Frederico Caldeira Knabben</a>
+					Copyright &copy; 2003-2010 <a href="#" onclick="SendEMail();">Frederico Caldeira Knabben</a>
 				</td>
 				<td align="center">
 					<a href="http://www.fckeditor.net/sponsors/apply" target="_blank">Become a Sponsor</a>
@@ -146,11 +146,11 @@
 var sUserLang = '?' ;
 
 if ( window.navigator.language )
-	sUserLang = window.navigator.language.toLowerCase() ;
+	sUserLang = window.navigator.language ;
 else if ( window.navigator.userLanguage )
-	sUserLang = window.navigator.userLanguage.toLowerCase() ;
+	sUserLang = window.navigator.userLanguage ;
 
-document.write( '<b>User Language<\/b><br />' + sUserLang ) ;
+document.write( '<b>Language<\/b><br />' + sUserLang ) ;
 //-->
 					</script>
 				</td>
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_anchor.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_anchor.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_button.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_button.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_checkbox.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_checkbox.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_colorselector.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_colorselector.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_div.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_div.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_docprops.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_docprops.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -21,11 +21,11 @@
  *
  * Link dialog window.
 -->
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html>
 <head>
 	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-	<meta content="noindex, nofollow" name="robots" />
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
+	<meta content="noindex, nofollow" name="robots" >
 	<script src="common/fck_dialog_common.js" type="text/javascript"></script>
 	<script type="text/javascript">
 
@@ -374,11 +374,11 @@
 {
 	switch ( wich )
 	{
-		case 'Back'			: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectBackColor, window ) ; return ;
-		case 'ColorText'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorText, window ) ; return ;
-		case 'ColorLink'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorLink, window ) ; return ;
-		case 'ColorVisited'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorVisited, window ) ; return ;
-		case 'ColorActive'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorActive, window ) ; return ;
+		case 'Back'			: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectBackColor ) ; return ;
+		case 'ColorText'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorText ) ; return ;
+		case 'ColorLink'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorLink ) ; return ;
+		case 'ColorVisited'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorVisited ) ; return ;
+		case 'ColorActive'	: oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, SelectColorActive ) ; return ;
 	}
 }
 
@@ -458,22 +458,22 @@
 								<span fcklang="DlgDocDocType">Document Type Heading</span><br />
 								<select id="selDocType" onchange="CheckOther( this, 'txtDocType' );">
 									<option value="" selected="selected"></option>
-									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'>HTML
+									<option value='&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;'>HTML
 										4.01 Transitional</option>
-									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'>
+									<option value='&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;'>
 										HTML 4.01 Strict</option>
-									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'>
+									<option value='&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"&gt;'>
 										HTML 4.01 Frameset</option>
-									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'>
+									<option value='&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;'>
 										XHTML 1.0 Transitional</option>
-									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'>
+									<option value='&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;'>
 										XHTML 1.0 Strict</option>
-									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'>
+									<option value='&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&gt;'>
 										XHTML 1.0 Frameset</option>
-									<option value='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'>
+									<option value='&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;'>
 										XHTML 1.1</option>
-									<option value='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'>HTML 3.2</option>
-									<option value='<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">'>HTML 2.0</option>
+									<option value='&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"&gt;'>HTML 3.2</option>
+									<option value='&lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"&gt;'>HTML 2.0</option>
 									<option value="..." fcklang="DlgOpOther">&lt;Other&gt;</option>
 								</select>
 							</td>
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_docprops/fck_document_preview.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -26,7 +26,7 @@
 		<title>Document Properties - Preview</title>
 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 		<meta name="robots" content="noindex, nofollow">
-		<script language="javascript">
+		<script type="text/javascript">
 
 var eBase = parent.FCK.EditorDocument.getElementsByTagName( 'BASE' ) ;
 if ( eBase.length > 0 && eBase[0].href.length > 0 )
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_flash.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_flash.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_flash/fck_flash.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_flash/fck_flash.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_flash/fck_flash_preview.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_form.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_form.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_hiddenfield.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_hiddenfield.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_image.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_image.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_image/fck_image.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_image/fck_image.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_image/fck_image_preview.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_image/fck_image_preview.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_link.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_link.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_link/fck_link.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_link/fck_link.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_listprop.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_listprop.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_paste.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_paste.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -56,7 +56,7 @@
 			'javascript:void( (function(){' +
 				'document.open() ;' +
 				'document.domain=\'' + document.domain + '\' ;' +
-				'document.write(\'<html><head><script>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>\') ;' +
+				'document.write(\'<html><head><scr' + 'ipt>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>\') ;' +
 				'document.close() ;' +
 				'document.body.contentEditable = true ;' +
 				'window.focus() ;' +
@@ -73,7 +73,7 @@
 			// Avoid errors if the pasted content has any script that fails: #389
 			var oDoc = oFrame.contentWindow.document ;
 			oDoc.open() ;
-			oDoc.write('<html><head><script>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>') ;
+			oDoc.write('<html><head><scr' + 'ipt>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>') ;
 			oDoc.close() ;
 
 			if ( FCKBrowserInfo.IsIE )
@@ -194,11 +194,11 @@
 	html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '' ) ;
 
 	// Remove margin styles.
-	html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, '' ) ;
-	html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ;
+	html = html.replace( /\s*MARGIN: 0(?:cm|in) 0(?:cm|in) 0pt\s*;/gi, '' ) ;
+	html = html.replace( /\s*MARGIN: 0(?:cm|in) 0(?:cm|in) 0pt\s*"/gi, "\"" ) ;
 
-	html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, '' ) ;
-	html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;
+	html = html.replace( /\s*TEXT-INDENT: 0(?:cm|in)\s*;/gi, '' ) ;
+	html = html.replace( /\s*TEXT-INDENT: 0(?:cm|in)\s*"/gi, "\"" ) ;
 
 	html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
 
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_radiobutton.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_radiobutton.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_replace.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_replace.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_scayt.html	Tue Mar 09 18:06:25 2010 +0300
@@ -0,0 +1,746 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+-->
+<html>
+	<head>
+		<title>SCAYT Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="common/fck_dialog_common.js" type="text/javascript"></script>
+		<link type="text/css" href="fck_scayt/scayt_dialog.css" rel="stylesheet" />
+		<script type="text/javascript">
+
+			var dialog	= window.parent ;
+			var oEditor	= dialog.InnerDialogLoaded() ;
+			var FCKLang = oEditor.FCKLang;
+			var scayt = oEditor.scayt;
+			var scayt_control = oEditor.scayt_control;
+			var lang_list = {};
+            var	sLang;
+			var	fckLang;
+            var chosed_lang;
+			var options;
+			var	tabs = scayt_control.uiTags || [1,1,0,1];
+			var	userDicActive = tabs[2] == 1;
+			var	captions;
+			var dic_buttons = [
+				// [0] contains buttons for creating
+				"dic_create,dic_restore",
+				// [1] contains buton for manipulation
+				"dic_rename,dic_delete"
+			];
+
+			var get =
+				new function(){
+
+					var mergeObjs = function(obj1, obj2)
+					{
+						for (var k in obj1)
+							obj2[k] = obj1[k];
+
+						return obj2;
+					};
+
+					var removeWhitespaces = function( s )
+					{
+						s = s.replace( new RegExp("^ +| +$"), '' ) ;
+						return s ;
+					};
+
+					var addEvent = function( el ,sEventName, fTodo )
+					{
+						if (el.addEventListener) {
+							el.addEventListener (sEventName,fTodo,false);
+
+						} else if (el.attachEvent) {
+							el.attachEvent ("on"+sEventName,fTodo);
+
+						} else {
+							el["on"+sEventName] = fTodo;
+						}
+					};
+
+					var getElementsByClassName = function (node,classname ,strTag) {
+						strTag = strTag || "*";
+					  	node = node || document;
+						if (node.getElementsByClassName)
+							return node.getElementsByClassName(classname);
+						else {
+							var objColl = node.getElementsByTagName(strTag);
+							if (!objColl.length &&  strTag == "*" &&  node.all) objColl = node.all;
+							var arr = new Array();
+							var delim = classname.indexOf('|') != -1  ? '|' : ' ';
+							var arrClass = classname.split(delim);
+							for (var i = 0, j = objColl.length; i < j; i++) {
+								var arrObjClass = objColl[i].className.split(' ');
+								if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
+								var c = 0;
+								comparisonLoop:
+									for ( var k = 0, l = arrObjClass.length ; k < l ; k++ )
+									{
+										for ( var m = 0, n = arrClass.length ; m < n ; m++ )
+										{
+											if ( arrClass[m] == arrObjClass[k] )
+												c++ ;
+
+											if ( ( delim == '|' && c == 1 ) || ( delim == ' ' && c == arrClass.length ) )
+											{
+												arr.push( objColl[i] ) ;
+												break comparisonLoop ;
+											}
+										}
+									}
+							}
+							return arr;
+						}
+					};
+
+					var hasClassName = function ( sClassName, elem ) {
+						//.split(/\s+/);
+						var aCnames = elem.className.split(/\s+/) || [];
+						for (var i=0, l=aCnames.length; i<l ; i++){
+							if (sClassName == aCnames[i])
+								return true;
+						}
+						return false;
+					}
+
+					var single = {
+						addClass 	: function ( sClassName ) {
+							//console.info( sClassName, this.className, );
+							if ( hasClassName(sClassName , this) )
+								return this;
+							var s = removeWhitespaces(this.className + " " +sClassName);
+							this.className = s;
+							return this;
+
+						},
+						removeClass : function ( sClassName ) {
+							var s = removeWhitespaces(this.className.replace(sClassName,""));
+							this.className = s;
+							return this;
+						},
+						setStyle : function( oStyles )
+						{
+							for ( var style in oStyles )
+							{
+								this.style[style] = oStyles[style] ;
+							}
+							return this ;
+						},
+						bindOnclick		: function ( handler ) {
+							//addEvent( this, "click" , handler);
+							this.onclick = handler;
+							return this;
+						},
+						bindOnchange	: function ( handler ) {
+							//addEvent( this, "change" , handler);
+							this.onchange = handler;
+							return this;
+						},
+						getAttr : function ( sAttrName )
+						{
+							if ( !sAttrName )
+								return null;
+
+							return this[sAttrName];
+						},
+						setAttr : function ( sAttrName , attrVal )
+						{
+							if ( !sAttrName || !attrVal )
+								return null;
+
+							this[sAttrName] = attrVal;
+
+							return this;
+						},
+						remAttr : function ( sAttrName )
+						{
+							if ( !sAttrName )
+								return null;
+						}
+					};
+
+					var singleCaller = function ( sMethod,args ) {
+						for ( var i=0, l=this.length; i<l ; i++ ){
+							var oItem = mergeObjs( single, this[i] );
+							oItem[sMethod].apply(this[i],args);
+						}
+					};
+
+
+					var collection = {
+
+						addClass 	: function ( sClassName ){
+							singleCaller.call(this, "addClass", [sClassName])
+							return this;
+						},
+						removeClass 	: function ( sClassName ) {
+							singleCaller.call(this, "removeClass", [sClassName])
+							return this;
+						},
+						setStyle		: function ( oStyles ) {
+							singleCaller.call(this, "setStyle", [oStyles])
+							return this;
+						},
+						bindOnclick		: function ( f ) {
+							singleCaller.call(this, "bindOnclick", [f])
+							return this;
+						},
+						bindOnchange	: function ( f ) {
+							singleCaller.call(this, "bindOnchange", [f])
+							return this;
+						},
+
+						forEach : function ( fTodo ) {
+							//el,i
+							for (var i=0, l=this.length; i<l ; i++){
+								fTodo.apply(this[i], [this[i],i ]);
+							}
+							return this;
+						}
+
+					};
+
+
+
+					this.byClass = function( sClassName ){
+						var o = getElementsByClassName(document, sClassName );
+						return o ? mergeObjs( collection, o ) : o;
+					};
+
+					this.byId = function( sId ){
+						var o = document.getElementById( sId );
+						return o ? mergeObjs( single, o ) : o;
+					};
+
+					this.gup = function ( name ){
+				        name = name.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' ) ;
+				        var regexS = '[\\?&]' + name + '=([^&#]*)' ;
+				        var regex = new RegExp( regexS ) ;
+				        var results = regex.exec( window.location.href ) ;
+
+				        if( results == null )
+				            return '' ;
+				        else
+				            return results[ 1 ] ;
+					};
+					this.wrap = function ( o ) {
+						return o ? mergeObjs( single, o ) : o;
+					};
+					this.forEach = function ( oScope, fTodo ){
+						collection.forEach.apply( oScope,[fTodo] );
+					};
+
+				 };
+
+
+
+			// Add the dialog tabs.
+			tabs[0] == 1 && dialog.AddTab( 'options', 'Options' ) ;
+			tabs[1] == 1 && dialog.AddTab( 'langs', 'Languages' ) ;
+			tabs[2] == 1 && dialog.AddTab( 'dictionary', 'Dictionary' ) ;
+			tabs[3] == 1 && dialog.AddTab( 'about', 'About' ) ;
+
+			// Function called when a dialog tab is selected.
+			function OnDialogTabChange( tabCode )
+			{
+				ShowE('inner_options'	, ( tabCode == 'options' ) ) ;
+				ShowE('inner_langs'	, ( tabCode == 'langs' ) ) ;
+				ShowE('inner_dictionary'		, ( tabCode == 'dictionary' ) ) ;
+				ShowE('inner_about'	, ( tabCode == 'about' ) ) ;
+			}
+
+
+
+
+
+			window.onload = function()
+			{
+				// Things to do when the page is loaded.
+
+				if ( document.location.search.length )
+					dialog.SetSelectedTab( document.location.search.substr(1) ) ;
+
+				dialog.SetOkButton( true ) ;
+
+
+	                if (!scayt) throw "SCAYT is undefined";
+	                if (!scayt_control) throw "SCAYT_CONTROL is undefined";
+
+					// show alowed tabs
+					tabs = scayt_control.uiTags || [1,1,1,0];
+
+
+					sLang = scayt_control.getLang();
+	                fckLang = "en";
+					options = scayt_control.option();
+					// apply captions
+					scayt.getCaption( fckLang, function( caps )
+					{
+						//console.info( "scayt.getCaption runned" )
+						captions = caps;
+						apllyCaptions();
+						//lang_list = scayt.getLangList();
+		                lang_list = scayt.getLangList() ;//|| {ltr: {"en_US" : "English","en_GB" : "British English","pt_BR" : "Brazilian Portuguese","da_DK" : "Danish","nl_NL" : "Dutch","en_CA" : "English Canadian","fi_FI" : "Finnish","fr_FR" : "French","fr_CA" : "French Canadian","de_DE" : "German","el_GR" : "Greek","hu_HU" : "Hungarian","it_IT" : "Italian","nb_NO" : "Norwegian","pl_PL" : "Polish","pt_PT" : "Portuguese","ru_RU" : "Russian","es_ES" : "Spanish","sv_SE" : "Swedish","tr_TR" : "Turkish","uk_UA" : "Ukrainian","cy_GB" : "Welsh"},rtl: {"ar_EG" : "Arabic"}};
+
+
+
+
+		                // ** animate options
+		                get.byClass("_scayt_option").forEach(function(el,i){
+
+							if ('undefined' != typeof(options[el.name])) {
+		                        // *** set default values
+
+		                        if ( 1 == options[ el.name ] ){
+		                           //el.setAttribute("checked","true");
+								   get.wrap(el).setAttr("checked" ,true)
+								   //document.all_options[el.name].checked = "true";
+								   //el.checked = true;
+								   //alert( options[ dojo.attr(el ,'name') ] + " el " )
+		                        }
+								//console.info(options)
+		                        // *** bind events
+		                        get.wrap(el).bindOnclick( function(ev){
+
+									var that = get.wrap(this);
+									var isCheck = that.getAttr("checked");
+									//console.info(isCheck)
+		                            if ( isCheck == false ) {
+
+										//that.setAttr("checked",false);
+										options[ this.name ] = 0;
+		                            }else{
+		                                //that.setAttr("checked",true);
+										options[ this.name ] = 1;
+		                            }
+									//console.info(options)
+		                        });
+		                    }
+		                });
+
+
+		                // * Create languages tab
+		                // ** convert langs obj to array
+		                var lang_arr = [];
+
+		                for (var k in lang_list.rtl){
+		                    // find curent lang
+		                    if ( k == sLang)
+		                        chosed_lang = lang_list.rtl[k] + "::" + k;
+		                    lang_arr[lang_arr.length] = lang_list.rtl[k] + "::" + k;
+
+		                }
+		                for (var k in lang_list.ltr){
+		                     // find curent lang
+		                     if ( k == sLang)
+		                        chosed_lang = lang_list.ltr[k] + "::" + k;
+		                    lang_arr[lang_arr.length] = lang_list.ltr[k] + "::" + k;
+		                }
+		                lang_arr.sort();
+
+		                // ** find lang containers
+
+		                var lcol = get.byId("lcolid");
+		                var rcol = get.byId("rcolid");
+		                // ** place langs in DOM
+
+		                get.forEach(lang_arr , function( l , i ){
+
+							//console.info( l,i );
+
+							var l_arr = l.split('::');
+		                    var l_name = l_arr[0];
+		                    var l_code = l_arr[1];
+		                    var row = document.createElement('div');
+		                    row.id = l_code;
+		                    row.className = "li";
+		                    // split langs on half
+		                    var col = ( i < lang_arr.length/2 ) ? lcol:rcol ;
+
+		                    // append row
+		                    //console.dir( col )
+		                    col.appendChild(row);
+		                    var row_dom = get.byId( l_code )
+		                    row_dom.innerHTML = l_name;
+
+		                    var checkActiveLang = function( id ){
+		                        return chosed_lang.split("::")[1] == id;
+		                    };
+		                    // bind click
+		                    row_dom.bindOnclick(function(ev){
+
+		                        if ( checkActiveLang(this.id) ) return false;
+		                        var elId = this.id;
+								get.byId(this.id)
+	                            	.addClass("Button")
+	                            	.removeClass("DarkBackground");
+
+		                        window.setTimeout( function (){ get.byId(elId).setStyle({opacity:"0.5",cursor:"no-drop"});  } ,300 );
+
+		                        get.byId(chosed_lang.split("::")[1])
+		                            .addClass("DarkBackground")
+		                            .removeClass("Button")
+		                            .setStyle({opacity:"1",cursor:"pointer"});
+
+		                        chosed_lang = this.innerHTML + "::" + this.id;
+		                        return true;
+		                    })
+							.setStyle({
+		                        cursor:"pointer"
+		                    });
+		                    // select current lang
+		                    if (l == chosed_lang)
+		                        row_dom.addClass("Button").setStyle({opacity:"0.5",cursor:"no-drop"});
+		                    else
+		                        row_dom.addClass("DarkBackground").setStyle({opacity:"1"});
+
+		                });
+						// * user dictionary
+						if ( userDicActive ){
+							initUserDictionary()
+
+						}
+					});
+
+
+
+			}
+
+
+
+
+			var buttons = [ 'dic_create','dic_delete','dic_rename','dic_restore' ];
+			var labels  = [ 'mixedCase','mixedWithDigits','allCaps','ignoreDomainNames' ];
+
+
+			function apllyCaptions ( )
+			{
+
+				// fill tabs headers
+				// add missing captions
+
+				get.byClass("PopupTab").forEach(function(el,i){
+
+					if ( tabs[i] == 1 ){
+						el.style.display = "block";
+					}
+					el.innerHTML = captions['tab_'+el.id];
+
+				});
+
+				// Fill options labels.
+				for ( i in labels )
+				{
+					var label = 'label_' + labels[ i ],
+						labelElement = document.getElementById( label );
+
+					if (  'undefined' != typeof labelElement
+					   && 'undefined' != typeof captions[ label ] && captions[ label ] !== ""
+					   && 'undefined' != typeof options[labels[ i ]] )
+					{
+						labelElement.innerHTML = captions[ label ];
+						var labelParent = labelElement.parentNode;
+						labelParent.style.display = "block";
+					}
+				}
+				// fill dictionary section
+				for ( var i in buttons )
+				{
+					var button = buttons[ i ];
+					get.byId( button ).innerHTML = '<span>' + captions[ 'button_' + button]  +'</span>' ;
+				}
+				get.byId("dname").innerHTML = captions['label_dname'];
+				get.byId( 'dic_info' ).innerHTML = captions[ 'dic_info' ];
+
+				// fill about tab
+				var about = '<p>' + captions[ 'about_throwt_image' ] + '</p>'+
+					'<p>' + captions[ 'version' ]  + scayt.version.toString() + '</p>' +
+					'<p>' + captions[ 'about_throwt_copy' ] + '</p>';
+
+				get.byId( 'scayt_about' ).innerHTML = about;
+
+			}
+
+
+			function initUserDictionary () {
+
+				scayt.getNameUserDictionary(
+					function( o )
+					{
+						var dic_name = o.dname;
+						if ( dic_name )
+						{
+							get.byId( 'dic_name' ).value = dic_name;
+							display_dic_buttons( dic_buttons[1] );
+						}
+						else
+							display_dic_buttons( dic_buttons[0] );
+
+					},
+					function ()
+					{
+						get.byId( 'dic_name' ).value("");
+						dic_error_message(captions["err_dic_enable"] || "Used dictionary are unaveilable now.")
+					}
+				);
+
+				dic_success_message("");
+
+				 // ** bind event listeners
+                get.byClass("button").bindOnclick(function( ){
+
+					// get dic name
+					var dic_name = get.byId('dic_name').value ;
+					// check common dictionary rules
+					if (!dic_name) {
+						dic_error_message(" Dictionary name should not be empty. ");
+						return false;
+					}
+					//apply handler
+					window[this.id].apply( window, [this, dic_name, dic_buttons ] );
+
+					//console.info( typeof window[this.id], window[this.id].calle )
+					return false;
+				});
+
+			}
+
+			dic_create = function( el, dic_name , dic_buttons )
+			{
+				// comma separated button's ids include repeats if exists
+				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
+
+				var err_massage = captions["err_dic_create"];
+				var suc_massage = captions["succ_dic_create"];
+				//console.info("--plugin ");
+
+				scayt.createUserDictionary(dic_name,
+					function(arg)
+						{
+							//console.info( "dic_create callback called with args" , arg );
+							hide_dic_buttons ( all_buttons );
+							display_dic_buttons ( dic_buttons[1] );
+							suc_massage = suc_massage.replace("%s" , arg.dname );
+							dic_success_message (suc_massage);
+						},
+					function(arg)
+						{
+							//console.info( "dic_create errorback called with args" , arg )
+							err_massage = err_massage.replace("%s" ,arg.dname );
+							dic_error_message ( err_massage + "( "+ (arg.message || "") +")");
+						});
+
+			};
+
+			dic_rename = function( el, dic_name , dic_buttons )
+			{
+				//
+				// try to rename dictionary
+				// @TODO: rename dict
+				//console.info ( captions["err_dic_rename"] )
+				var err_massage = captions["err_dic_rename"] || "";
+				var suc_massage = captions["succ_dic_rename"] || "";
+				scayt.renameUserDictionary(dic_name,
+					function(arg)
+						{
+							//console.info( "dic_rename callback called with args" , arg );
+							suc_massage = suc_massage.replace("%s" , arg.dname );
+							set_dic_name( dic_name );
+							dic_success_message ( suc_massage );
+						},
+					function(arg)
+						{
+							//console.info( "dic_rename errorback called with args" , arg )
+							err_massage = err_massage.replace("%s" , arg.dname  );
+							set_dic_name( dic_name );
+							dic_error_message( err_massage + "( " + ( arg.message || "" ) + " )" );
+						});
+			};
+
+			dic_delete = function ( el, dic_name , dic_buttons )
+			{
+				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
+				var err_massage = captions["err_dic_delete"];
+				var suc_massage = captions["succ_dic_delete"];
+
+				// try to delete dictionary
+				// @TODO: delete dict
+				scayt.deleteUserDictionary(
+					function(arg)
+						{
+							//console.info( "dic_delete callback " , dic_name ,arg );
+							suc_massage = suc_massage.replace("%s" , arg.dname );
+							hide_dic_buttons ( all_buttons );
+							display_dic_buttons ( dic_buttons[0] );
+							set_dic_name( "" ); // empty input field
+							dic_success_message( suc_massage );
+						},
+					function(arg)
+						{
+							//console.info( " dic_delete errorback called with args" , arg )
+							err_massage = err_massage.replace("%s" , arg.dname );
+							dic_error_message(err_massage);
+						});
+			};
+
+			dic_restore = dialog.dic_restore || function ( el, dic_name , dic_buttons )
+			{
+				// try to restore existing dictionary
+				var all_buttons = dic_buttons[0] + ',' + dic_buttons[1];
+				var err_massage = captions["err_dic_restore"];
+				var suc_massage = captions["succ_dic_restore"];
+
+				scayt.restoreUserDictionary(dic_name,
+					function(arg)
+						{
+							//console.info( "dic_restore callback called with args" , arg );
+							suc_massage = suc_massage.replace("%s" , arg.dname );
+							hide_dic_buttons ( all_buttons );
+							display_dic_buttons(dic_buttons[1]);
+							dic_success_message( suc_massage );
+						},
+					function(arg)
+						{
+							//console.info( " dic_restore errorback called with args" , arg )
+							err_massage = err_massage.replace("%s" , arg.dname );
+							dic_error_message( err_massage );
+						});
+			};
+
+			function dic_error_message( m )
+			{
+				if ( !m )
+					return ;
+
+				get.byId('dic_message').innerHTML =  '<span class="error">' + m + '</span>' ;
+			}
+
+            function dic_success_message( m )
+            {
+				if ( !m )
+					return ;
+
+				get.byId('dic_message').innerHTML = '<span class="success">' + m + '</span>' ;
+			}
+
+			function display_dic_buttons ( sIds ){
+				sIds = new String( sIds );
+				get.forEach( sIds.split(','), function ( id,i) {
+					get.byId(id).setStyle({display:"inline"});
+				});
+			}
+			function hide_dic_buttons ( sIds ){
+				sIds = new String( sIds );
+				get.forEach( sIds.split(','), function ( id,i) {
+					get.byId(id).setStyle({display:"none"});
+				});
+			}
+			function set_dic_name ( dic_name ) {
+				get.byId('dic_name').value = dic_name;
+			}
+			function display_dic_tab () {
+				get.byId("dic_tab").style.display = "block";
+			}
+
+			function Ok()
+			{
+				// Things to do when the Ok button is clicked.
+				var c = 0;
+			    // set upp options if any was set
+			    var o = scayt_control.option();
+				//console.info(options)
+			    for ( var oN in options ) {
+
+			        if ( o[oN] != options[oN] && c == 0){
+						//console.info( "set option " )
+			            scayt_control.option( options );
+			            c++;
+			        }
+			    }
+			    //setup languge if it was change
+			    var csLang = chosed_lang.split("::")[1];
+			    if ( csLang && sLang != csLang ){
+			        scayt_control.setLang( csLang );
+					//console.info(sLang+" -> "+csLang , scayt_control)
+			        c++;
+			    }
+
+			    if ( c > 0 )  scayt_control.refresh();
+
+			    return dialog.Cancel();
+
+			}
+
+		</script>
+	</head>
+	<body style="OVERFLOW: hidden" scroll="no">
+		<div class="tab_container" id="inner_options">
+
+           <ul id="scayt_options">
+               <li class="_scayt_options">
+                   <input class="_scayt_option" type="checkbox" value="0" name="allCaps" />
+                   <label for="allCaps" id="label_allCaps"></label>
+               </li>
+               <li>
+                   <input class="_scayt_option" type="checkbox" value="0" name="ignoreDomainNames" />
+                   <label for="ignoreDomainNames" id="label_ignoreDomainNames"></label>
+               </li>
+               <li>
+                   <input class="_scayt_option" type="checkbox" value="0" name="mixedCase" />
+                   <label for="mixedCase" id="label_mixedCase"></label>
+               </li>
+               <li>
+                   <input class="_scayt_option" type="checkbox" value="0" name="mixedWithDigits" />
+                   <label for="mixedWithDigits" id="label_mixedWithDigits"></label>
+               </li>
+           </ul>
+		</div>
+		<div class="tab_container" id="inner_langs">
+
+		   <div class="lcol" id="lcolid"></div>
+           <div class="rcol" id="rcolid"></div>
+		</div>
+		<div class="tab_container" id="inner_dictionary">
+
+		   <div id="dic_message"></div>
+			<div id="_off_dic_tab" class="dictionary" >
+				<div style="padding-left:10px;">
+							<label id="dname" for="dname"></label>
+							<input type="text" size="14" maxlength="15" value="" id="dic_name" name="dic_name"/>
+						</div>
+						<div class="dic_buttons">
+							<a href="#" id="dic_create" class="button">  </a>
+							<a href="#" id="dic_delete" class="button">  </a>
+							<a href="#" id="dic_rename" class="button">  </a>
+							<a href="#" id="dic_restore" class="button">  </a>
+						</div>
+
+						<div id="dic_info"></div>
+
+			</div>
+		</div>
+		<div id="inner_about" class="tab_container">
+		   <div id="scayt_about"></div>
+		</div>
+	</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_scayt/scayt_dialog.css	Tue Mar 09 18:06:25 2010 +0300
@@ -0,0 +1,169 @@
+html, body
+{
+	background-color: transparent;
+	margin: 0px;
+	padding: 0px;
+}
+
+body
+{
+	padding: 10px;
+}
+
+body, td, input, select, textarea
+{
+	font-size: 11px;
+	font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;
+}
+
+.midtext
+{
+	padding:0px;
+	margin:10px;
+}
+
+.midtext p
+{
+	padding:0px;
+	margin:10px;
+}
+
+.Button
+{
+	border: #737357 1px solid;
+	color: #3b3b1f;
+	background-color: #c7c78f;
+}
+
+.PopupTabArea , .button
+{
+	color: #737357;
+	background-color: #e3e3c7;
+}
+
+.PopupTitleBorder
+{
+	border-bottom: #d5d59d 1px solid;
+}
+.PopupTabEmptyArea
+{
+	padding-left: 10px;
+	border-bottom: #d5d59d 1px solid;
+}
+
+.PopupTab, .PopupTabSelected
+{
+	border-right: #d5d59d 1px solid;
+	border-top: #d5d59d 1px solid;
+	border-left: #d5d59d 1px solid;
+	padding: 3px 5px 3px 5px;
+	color: #737357;
+}
+
+.PopupTab
+{
+	margin-top: 1px;
+	border-bottom: #d5d59d 1px solid;
+	cursor: pointer;
+	cursor: hand;
+}
+
+.PopupTabSelected
+{
+	font-weight: bold;
+	cursor: default;
+	padding-top: 4px;
+	border-bottom: #f1f1e3 1px solid;
+	background-color: #f1f1e3;
+}
+
+ul {
+    padding:0;
+    margin:0px 0px 12px 0px;
+    list-style-type:none;
+}
+ul.tabs {
+    height:20px;
+    margin:10px 0px;
+}
+ul.tabs li {
+    float: left;
+	display:none;
+}
+div.tab_container {
+    /*display:none;*/
+    padding: 0px 5px ;
+}
+.lcol {
+    float:left;
+    width:47%;
+    margin-left:5px;
+}
+.rcol {
+    float:right;
+    width:47%;
+    margin-right:5px;
+}
+div.tabs-container{
+	height:220px;
+	overflow-x:hidden;
+	overflow-y:auto;
+}
+
+div.tabs-container h3{
+    margin:5px 15px 7px 15px;
+    background-color:transparent;
+    font-size: 14px ;
+}
+
+.li {
+    border: 1px solid transparent;
+}
+
+#dic_message{
+	height: 24px;
+}
+#dic_message .error{
+	color: red ;
+}
+#dic_message .success{
+	color: blue ;
+}
+
+.dic_buttons {
+	margin-top: 5px;
+	padding-left:10px;
+}
+.dic_buttons a {
+	display: none;
+}
+a.button {
+	border: #d5d59d 1px solid;
+	padding: 2px 4px;
+	margin-right: 4px;
+	text-decoration: none;
+}
+
+a.button:hover,
+a.button:active,
+a.button:visited{
+	padding: 2px 4px;
+	margin-right: 4px;
+	text-decoration: none;
+}
+a.button:hover {
+	border: #d5d59d 1px solid;
+	color: #e3e3c7;
+	background-color: #737357;
+}
+
+#scayt_options li {
+	display: none;
+}
+
+#dic_info {
+	margin:10px;
+}
+#dic_tab {
+	display:none;
+}
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_select.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_select.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_select/fck_select.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_select/fck_select.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_smiley.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_smiley.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_source.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_source.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_specialchar.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_specialchar.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_spellerpages.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_spellerpages.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl	Tue Mar 09 18:06:25 2010 +0300
@@ -1,181 +1,181 @@
-#!/usr/bin/perl
-
-use CGI qw/ :standard /;
-use File::Temp qw/ tempfile tempdir /;
-
-# my $spellercss = '/speller/spellerStyle.css';					# by FredCK
-my $spellercss = '../spellerStyle.css';							# by FredCK
-# my $wordWindowSrc = '/speller/wordWindow.js';					# by FredCK
-my $wordWindowSrc = '../wordWindow.js';							# by FredCK
-my @textinputs = param( 'textinputs[]' ); # array
-# my $aspell_cmd = 'aspell';									# by FredCK (for Linux)
-my $aspell_cmd = '"C:\Program Files\Aspell\bin\aspell.exe"';	# by FredCK (for Windows)
-my $lang = 'en_US';
-# my $aspell_opts = "-a --lang=$lang --encoding=utf-8";			# by FredCK
-my $aspell_opts = "-a --lang=$lang --encoding=utf-8 -H --rem-sgml-check=alt";		# by FredCK
-my $input_separator = "A";
-
-# set the 'wordtext' JavaScript variable to the submitted text.
-sub printTextVar {
-	for( my $i = 0; $i <= $#textinputs; $i++ ) {
-	        print "textinputs[$i] = decodeURIComponent('" . escapeQuote( $textinputs[$i] ) . "')\n";
-	}
-}
-
-sub printTextIdxDecl {
-	my $idx = shift;
-	print "words[$idx] = [];\n";
-	print "suggs[$idx] = [];\n";
-}
-
-sub printWordsElem {
-	my( $textIdx, $wordIdx, $word ) = @_;
-	print "words[$textIdx][$wordIdx] = '" . escapeQuote( $word ) . "';\n";
-}
-
-sub printSuggsElem {
-	my( $textIdx, $wordIdx, @suggs ) = @_;
-	print "suggs[$textIdx][$wordIdx] = [";
-	for my $i ( 0..$#suggs ) {
-		print "'" . escapeQuote( $suggs[$i] ) . "'";
-		if( $i < $#suggs ) {
-			print ", ";
-		}
-	}
-	print "];\n";
-}
-
-sub printCheckerResults {
-	my $textInputIdx = -1;
-	my $wordIdx = 0;
-	my $unhandledText;
-	# create temp file
-	my $dir = tempdir( CLEANUP => 1 );
-	my( $fh, $tmpfilename ) = tempfile( DIR => $dir );
-
-	# temp file was created properly?
-
-	# open temp file, add the submitted text.
-	for( my $i = 0; $i <= $#textinputs; $i++ ) {
-		$text = url_decode( $textinputs[$i] );
-		# Strip all tags for the text. (by FredCK - #339 / #681)
-		$text =~ s/<[^>]+>/ /g;
-		@lines = split( /\n/, $text );
-		print $fh "\%\n"; # exit terse mode
-		print $fh "^$input_separator\n";
-		print $fh "!\n";  # enter terse mode
-		for my $line ( @lines ) {
-			# use carat on each line to escape possible aspell commands
-			print $fh "^$line\n";
-		}
-
-	}
-	# exec aspell command
-	my $cmd = "$aspell_cmd $aspell_opts < $tmpfilename 2>&1";
-	open ASPELL, "$cmd |" or handleError( "Could not execute `$cmd`\\n$!" ) and return;
-	# parse each line of aspell return
-	for my $ret ( <ASPELL> ) {
-		chomp( $ret );
-		# if '&', then not in dictionary but has suggestions
-		# if '#', then not in dictionary and no suggestions
-		# if '*', then it is a delimiter between text inputs
-		if( $ret =~ /^\*/ ) {
-			$textInputIdx++;
-			printTextIdxDecl( $textInputIdx );
-			$wordIdx = 0;
-
-		} elsif( $ret =~ /^(&|#)/ ) {
-			my @tokens = split( " ", $ret, 5 );
-			printWordsElem( $textInputIdx, $wordIdx, $tokens[1] );
-			my @suggs = ();
-			if( $tokens[4] ) {
-				@suggs = split( ", ", $tokens[4] );
-			}
-			printSuggsElem( $textInputIdx, $wordIdx, @suggs );
-			$wordIdx++;
-		} else {
-			$unhandledText .= $ret;
-		}
-	}
-	close ASPELL or handleError( "Error executing `$cmd`\\n$unhandledText" ) and return;
-}
-
-sub escapeQuote {
-	my $str = shift;
-	$str =~ s/'/\\'/g;
-	return $str;
-}
-
-sub handleError {
-	my $err = shift;
-	print "error = '" . escapeQuote( $err ) . "';\n";
-}
-
-sub url_decode {
-	local $_ = @_ ? shift : $_;
-	defined or return;
-	# change + signs to spaces
-	tr/+/ /;
-	# change hex escapes to the proper characters
-	s/%([a-fA-F0-9]{2})/pack "H2", $1/eg;
-	return $_;
-}
-
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-# Display HTML
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-
-print <<EOF;
-Content-type: text/html; charset=utf-8
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<link rel="stylesheet" type="text/css" href="$spellercss"/>
-<script src="$wordWindowSrc"></script>
-<script type="text/javascript">
-var suggs = new Array();
-var words = new Array();
-var textinputs = new Array();
-var error;
-EOF
-
-printTextVar();
-
-printCheckerResults();
-
-print <<EOF;
-var wordWindowObj = new wordWindow();
-wordWindowObj.originalSpellings = words;
-wordWindowObj.suggestions = suggs;
-wordWindowObj.textInputs = textinputs;
-
-
-function init_spell() {
-	// check if any error occured during server-side processing
-	if( error ) {
-		alert( error );
-	} else {
-		// call the init_spell() function in the parent frameset
-		if (parent.frames.length) {
-			parent.init_spell( wordWindowObj );
-		} else {
-			error = "This page was loaded outside of a frameset. ";
-			error += "It might not display properly";
-			alert( error );
-		}
-	}
-}
-
-</script>
-
-</head>
-<body onLoad="init_spell();">
-
-<script type="text/javascript">
-wordWindowObj.writeBody();
-</script>
-
-</body>
-</html>
-EOF
+#!/usr/bin/perl
+
+use CGI qw/ :standard /;
+use File::Temp qw/ tempfile tempdir /;
+
+# my $spellercss = '/speller/spellerStyle.css';					# by FredCK
+my $spellercss = '../spellerStyle.css';							# by FredCK
+# my $wordWindowSrc = '/speller/wordWindow.js';					# by FredCK
+my $wordWindowSrc = '../wordWindow.js';							# by FredCK
+my @textinputs = param( 'textinputs[]' ); # array
+# my $aspell_cmd = 'aspell';									# by FredCK (for Linux)
+my $aspell_cmd = '"C:\Program Files\Aspell\bin\aspell.exe"';	# by FredCK (for Windows)
+my $lang = 'en_US';
+# my $aspell_opts = "-a --lang=$lang --encoding=utf-8";			# by FredCK
+my $aspell_opts = "-a --lang=$lang --encoding=utf-8 -H --rem-sgml-check=alt";		# by FredCK
+my $input_separator = "A";
+
+# set the 'wordtext' JavaScript variable to the submitted text.
+sub printTextVar {
+	for( my $i = 0; $i <= $#textinputs; $i++ ) {
+	        print "textinputs[$i] = decodeURIComponent('" . escapeQuote( $textinputs[$i] ) . "')\n";
+	}
+}
+
+sub printTextIdxDecl {
+	my $idx = shift;
+	print "words[$idx] = [];\n";
+	print "suggs[$idx] = [];\n";
+}
+
+sub printWordsElem {
+	my( $textIdx, $wordIdx, $word ) = @_;
+	print "words[$textIdx][$wordIdx] = '" . escapeQuote( $word ) . "';\n";
+}
+
+sub printSuggsElem {
+	my( $textIdx, $wordIdx, @suggs ) = @_;
+	print "suggs[$textIdx][$wordIdx] = [";
+	for my $i ( 0..$#suggs ) {
+		print "'" . escapeQuote( $suggs[$i] ) . "'";
+		if( $i < $#suggs ) {
+			print ", ";
+		}
+	}
+	print "];\n";
+}
+
+sub printCheckerResults {
+	my $textInputIdx = -1;
+	my $wordIdx = 0;
+	my $unhandledText;
+	# create temp file
+	my $dir = tempdir( CLEANUP => 1 );
+	my( $fh, $tmpfilename ) = tempfile( DIR => $dir );
+
+	# temp file was created properly?
+
+	# open temp file, add the submitted text.
+	for( my $i = 0; $i <= $#textinputs; $i++ ) {
+		$text = url_decode( $textinputs[$i] );
+		# Strip all tags for the text. (by FredCK - #339 / #681)
+		$text =~ s/<[^>]+>/ /g;
+		@lines = split( /\n/, $text );
+		print $fh "\%\n"; # exit terse mode
+		print $fh "^$input_separator\n";
+		print $fh "!\n";  # enter terse mode
+		for my $line ( @lines ) {
+			# use carat on each line to escape possible aspell commands
+			print $fh "^$line\n";
+		}
+
+	}
+	# exec aspell command
+	my $cmd = "$aspell_cmd $aspell_opts < $tmpfilename 2>&1";
+	open ASPELL, "$cmd |" or handleError( "Could not execute `$cmd`\\n$!" ) and return;
+	# parse each line of aspell return
+	for my $ret ( <ASPELL> ) {
+		chomp( $ret );
+		# if '&', then not in dictionary but has suggestions
+		# if '#', then not in dictionary and no suggestions
+		# if '*', then it is a delimiter between text inputs
+		if( $ret =~ /^\*/ ) {
+			$textInputIdx++;
+			printTextIdxDecl( $textInputIdx );
+			$wordIdx = 0;
+
+		} elsif( $ret =~ /^(&|#)/ ) {
+			my @tokens = split( " ", $ret, 5 );
+			printWordsElem( $textInputIdx, $wordIdx, $tokens[1] );
+			my @suggs = ();
+			if( $tokens[4] ) {
+				@suggs = split( ", ", $tokens[4] );
+			}
+			printSuggsElem( $textInputIdx, $wordIdx, @suggs );
+			$wordIdx++;
+		} else {
+			$unhandledText .= $ret;
+		}
+	}
+	close ASPELL or handleError( "Error executing `$cmd`\\n$unhandledText" ) and return;
+}
+
+sub escapeQuote {
+	my $str = shift;
+	$str =~ s/'/\\'/g;
+	return $str;
+}
+
+sub handleError {
+	my $err = shift;
+	print "error = '" . escapeQuote( $err ) . "';\n";
+}
+
+sub url_decode {
+	local $_ = @_ ? shift : $_;
+	defined or return;
+	# change + signs to spaces
+	tr/+/ /;
+	# change hex escapes to the proper characters
+	s/%([a-fA-F0-9]{2})/pack "H2", $1/eg;
+	return $_;
+}
+
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# Display HTML
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+print <<EOF;
+Content-type: text/html; charset=utf-8
+
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="$spellercss"/>
+<script src="$wordWindowSrc"></script>
+<script type="text/javascript">
+var suggs = new Array();
+var words = new Array();
+var textinputs = new Array();
+var error;
+EOF
+
+printTextVar();
+
+printCheckerResults();
+
+print <<EOF;
+var wordWindowObj = new wordWindow();
+wordWindowObj.originalSpellings = words;
+wordWindowObj.suggestions = suggs;
+wordWindowObj.textInputs = textinputs;
+
+
+function init_spell() {
+	// check if any error occured during server-side processing
+	if( error ) {
+		alert( error );
+	} else {
+		// call the init_spell() function in the parent frameset
+		if (parent.frames.length) {
+			parent.init_spell( wordWindowObj );
+		} else {
+			error = "This page was loaded outside of a frameset. ";
+			error += "It might not display properly";
+			alert( error );
+		}
+	}
+}
+
+</script>
+
+</head>
+<body onLoad="init_spell();">
+
+<script type="text/javascript">
+wordWindowObj.writeBody();
+</script>
+
+</body>
+</html>
+EOF
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_table.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_table.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -155,28 +155,6 @@
 	SetAttribute( table, 'cellSpacing'	, GetE('txtCellSpacing').value ) ;
 	SetAttribute( table, 'summary'		, GetE('txtSummary').value ) ;
 
-	var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ;
-
-	if ( document.getElementById('txtCaption').value != '')
-	{
-		if ( !eCaption )
-		{
-			eCaption = oDoc.createElement( 'CAPTION' ) ;
-			table.insertBefore( eCaption, table.firstChild ) ;
-		}
-
-		eCaption.innerHTML = document.getElementById('txtCaption').value ;
-	}
-	else if ( bExists && eCaption )
-	{
-		// TODO: It causes an IE internal error if using removeChild or
-		// table.deleteCaption() (see #505).
-		if ( oEditor.FCKBrowserInfo.IsIE )
-			eCaption.innerHTML = '' ;
-		else
-			eCaption.parentNode.removeChild( eCaption ) ;
-	}
-
 	var headers = GetE('selHeaders').value ;
 	if ( bExists )
 	{
@@ -307,6 +285,29 @@
 		oEditor.FCK.InsertElement( table ) ;
 	}
 
+	var eCaption = oEditor.FCKDomTools.GetFirstChild( table, 'CAPTION' ) ;
+
+	if ( eCaption && !oEditor.FCKBrowserInfo.IsIE )
+		eCaption.parentNode.removeChild( eCaption ) ;
+
+	if ( document.getElementById('txtCaption').value != '' )
+	{
+		if ( !eCaption || !oEditor.FCKBrowserInfo.IsIE )
+		{
+			eCaption = oDoc.createElement( 'CAPTION' ) ;
+			table.insertBefore( eCaption, table.firstChild ) ;
+		}
+
+		eCaption.innerHTML = document.getElementById('txtCaption').value ;
+	}
+	else if ( bExists && eCaption )
+	{
+		// TODO: It causes an IE internal error if using removeChild or
+		// table.deleteCaption() (see #505).
+		if ( oEditor.FCKBrowserInfo.IsIE )
+			eCaption.innerHTML = '' ;
+	}
+
 	return true ;
 }
 
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_tablecell.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_tablecell.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -139,7 +139,7 @@
 
 function SelectColor( wich )
 {
-	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, wich == 'Back' ? SelectBackColor : SelectBorderColor, window ) ;
+	oEditor.FCKDialog.OpenDialog( 'FCKDialog_Color', oEditor.FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 410, 320, wich == 'Back' ? SelectBackColor : SelectBorderColor ) ;
 }
 
 	</script>
@@ -224,8 +224,8 @@
 									 <span fcklang="DlgCellType">Cell Type</span>:</td>
 									<td colspan="2">
 										&nbsp; <select id="selCellType">
-											<option fcklang="DlgCellTypeData" value="td" />Data
-											<option fcklang="DlgCellTypeHeader" value="th" />Header
+											<option fcklang="DlgCellTypeData" value="td">Data</option>
+											<option fcklang="DlgCellTypeHeader" value="th">Header</option>
 										</select>
 								</tr>
 								<tr>
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_template.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_template.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_textarea.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_textarea.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_textfield.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dialog/fck_textfield.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dtd/fck_xhtml10strict.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dtd/fck_xhtml10strict.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dtd/fck_xhtml10transitional.js	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/dtd/fck_xhtml10transitional.js	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/fckdebug.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/fckdebug.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/fckdialog.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/fckdialog.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/fckeditor.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/fckeditor.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -265,16 +265,16 @@
 	}
 }
 
-// Gecko browsers doesn't calculate well the IFRAME size so we must
+// Gecko and Webkit browsers don't calculate well the IFRAME size so we must
 // recalculate it every time the window size changes.
-if ( FCKBrowserInfo.IsGecko && !FCKBrowserInfo.IsOpera )
+if ( FCKBrowserInfo.IsGecko || ( FCKBrowserInfo.IsSafari && !FCKBrowserInfo.IsSafari3 ) )
 {
 	window.onresize = function( e )
 	{
-		// Running in Chrome makes the window receive the event including subframes.
+		// Running in Firefox's chrome makes the window receive the event including subframes.
 		// we care only about this window. Ticket #1642.
 		// #2002: The originalTarget from the event can be the current document, the window, or the editing area.
-		if ( e && e.originalTarget !== document && e.originalTarget !== window && (!e.originalTarget.ownerDocument || e.originalTarget.ownerDocument != document ))
+		if ( e && e.originalTarget && e.originalTarget !== document && e.originalTarget !== window && (!e.originalTarget.ownerDocument || e.originalTarget.ownerDocument != document ))
 			return ;
 
 		var oCell = document.getElementById( 'xEditingArea' ) ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/fckeditor.original.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/fckeditor.original.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -202,6 +202,7 @@
 LoadScript( '_source/classes/fcktoolbarfontscombo.js' ) ;
 LoadScript( '_source/classes/fcktoolbarfontsizecombo.js' ) ;
 LoadScript( '_source/classes/fcktoolbarpanelbutton.js' ) ;
+LoadScript( '_source/internals/fckscayt.js' ) ;
 LoadScript( '_source/internals/fcktoolbaritems.js' ) ;
 LoadScript( '_source/classes/fcktoolbar.js' ) ;
 LoadScript( '_source/classes/fcktoolbarbreak_' + sSuffix + '.js' ) ;
@@ -372,16 +373,16 @@
 	}
 }
 
-// Gecko browsers doesn't calculate well the IFRAME size so we must
+// Gecko and Webkit browsers don't calculate well the IFRAME size so we must
 // recalculate it every time the window size changes.
-if ( FCKBrowserInfo.IsGecko && !FCKBrowserInfo.IsOpera )
+if ( FCKBrowserInfo.IsGecko || ( FCKBrowserInfo.IsSafari && !FCKBrowserInfo.IsSafari3 ) )
 {
 	window.onresize = function( e )
 	{
-		// Running in Chrome makes the window receive the event including subframes.
+		// Running in Firefox's chrome makes the window receive the event including subframes.
 		// we care only about this window. Ticket #1642.
 		// #2002: The originalTarget from the event can be the current document, the window, or the editing area.
-		if ( e && e.originalTarget !== document && e.originalTarget !== window && (!e.originalTarget.ownerDocument || e.originalTarget.ownerDocument != document ))
+		if ( e && e.originalTarget && e.originalTarget !== document && e.originalTarget !== window && (!e.originalTarget.ownerDocument || e.originalTarget.ownerDocument != document ))
 			return ;
 
 		var oCell = document.getElementById( 'xEditingArea' ) ;
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/browser.css	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/browser.css	Tue Mar 09 18:06:25 2010 +0300
@@ -1,6 +1,6 @@
 /*
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/browser.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/browser.html	Tue Mar 09 18:06:25 2010 +0300
@@ -2,7 +2,7 @@
    "http://www.w3.org/TR/html4/frameset.dtd">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/frmactualfolder.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/frmactualfolder.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/frmcreatefolder.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/frmcreatefolder.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/frmfolders.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/frmfolders.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/frmresourceslist.html	Tue Mar 09 18:02:44 2010 +0300
+++ b/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/frmresourceslist.html	Tue Mar 09 18:06:25 2010 +0300
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <!--
  * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2009 Frederico Caldeira Knabben
+ * Copyright (C) 2003-2010 Frederico Caldeira Knabben
  *
  * == BEGIN LICENSE ==
  *
@@ -89,7 +89,7 @@
 
 function OpenFile( fileUrl )
 {
-	window.top.opener.SetUrl( encodeURI( fileUrl ).replace( '#', '%23' ) ) ;
+	window.top.opener.SetUrl( fileUrl ) ;
 	window.top.close() ;
 	window.top.opener.focus() ;
 }
@@ -145,7 +145,7 @@
 
 		// Get the optional "url" attribute. If not available, build the url.
 		var oFileUrlAtt = oNodes[j].attributes.getNamedItem('url') ;
-		var sFileUrl = oFileUrlAtt != null ? oFileUrlAtt.value : sCurrentFolderUrl + sFileName ;
+		var sFileUrl = oFileUrlAtt != null ? oFileUrlAtt.value : encodeURI( sCurrentFolderUrl + sFileName ).replace( /#/g, '%23' ) ;
 
 		oHtml.Append( oListManager.GetFileRowHtml( sFileName, sFileUrl, sFileSize ) ) ;
 	}
--- a/MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/browser/default/frmresourcetype.html	Tue Mar