Index: plugins/dcCKEditor/js/ckeditor/CHANGES.md
===================================================================
--- plugins/dcCKEditor/js/ckeditor/CHANGES.md	(revision 3410)
+++ plugins/dcCKEditor/js/ckeditor/CHANGES.md	(revision 3464)
@@ -1,4 +1,17 @@
 CKEditor 4 Changelog
 ====================
+
+## CKEditor 4.6.1
+
+New Features:
+
+* [#16639](http://dev.ckeditor.com/ticket/16639): The `callback` parameter in the [CKEDITOR.ajax.post](http://docs.ckeditor.com/#!/api/CKEDITOR.ajax-method-post) method became optional.
+
+Fixed Issues:
+
+* [#11064](http://dev.ckeditor.com/ticket/11064): [Blink, WebKit] Fixed: Cannot select all editor content when a widget or a non-editable element is the first or last element of the content. Also fixes this issue in the [Select All](http://ckeditor.com/addon/selectall) plugin.
+* [#14755](http://dev.ckeditor.com/ticket/14755): [Blink, WebKit, IE8] Fixed: Browser hangs when a table is inserted in the place of a selected list with an empty last item.
+* [#16624](http://dev.ckeditor.com/ticket/16624): Fixed: Improved the [Color Button](http://ckeditor.com/addon/colorbutton) plugin which will now normalize the CSS `background` property if it only contains a color value. This fixes missing background colors when using [Paste from Word](http://ckeditor.com/addon/pastefromword).
+* [#16600](http://dev.ckeditor.com/ticket/16600): [Blink, WebKit] Fixed: Error thrown occasionally by an uninitialized editable for multiple CKEditor instances on the same page.
 
 ## CKEditor 4.6
@@ -13,5 +26,5 @@
 	* Major improvements in preservation of list numbering, styling and indentation (nested lists with multiple levels).
 	* Major improvements in document structure parsing that fix plenty of issues with distorted or missing content after paste.
-* Added new translation: Occitan. Thanks to Cédric Valmary!
+* Added new translation: Occitan. Thanks to [Cédric Valmary](https://totenoc.eu/)!
 * [#10015](http://dev.ckeditor.com/ticket/10015): Keyboard shortcuts (relevant to the operating system in use) will now be displayed in tooltips and context menus.
 * [#13794](http://dev.ckeditor.com/ticket/13794): The [Upload Image](http://ckeditor.com/addon/uploadimage) feature now uses `uploaded.width/height` if set.
Index: plugins/dcCKEditor/js/ckeditor/ckeditor.js
===================================================================
--- plugins/dcCKEditor/js/ckeditor/ckeditor.js	(revision 3413)
+++ plugins/dcCKEditor/js/ckeditor/ckeditor.js	(revision 3464)
@@ -47,5 +47,5 @@
 			// for each release and generated by the releaser.
 			// (Base 36 value of each component of YYMMDDHH - 4 chars total - e.g. 87bm == 08071122)
-			timestamp: 'GAKA',
+			timestamp: 'GBLA',
 
 			/**
@@ -54,5 +54,5 @@
 			 *		alert( CKEDITOR.version ); // e.g. 'CKEditor 3.4.1'
 			 */
-			version: '4.6.0',
+			version: '4.6.1',
 
 			/**
@@ -2806,4 +2806,352 @@
 
 			return selector;
+		},
+
+		/**
+		 * A set of functions for operations on styles.
+		 *
+		 * @property {CKEDITOR.tools.style}
+		 */
+		style: {
+			/**
+			 * Methods to parse miscellaneous CSS properties.
+			 *
+			 * @property {CKEDITOR.tools.style.parse}
+			 * @member CKEDITOR.tools.style
+			 */
+			parse: {
+				// Color list based on https://www.w3.org/TR/css-color-4/#named-colors.
+				_colors: {
+					aliceblue: '#F0F8FF',
+					antiquewhite: '#FAEBD7',
+					aqua: '#00FFFF',
+					aquamarine: '#7FFFD4',
+					azure: '#F0FFFF',
+					beige: '#F5F5DC',
+					bisque: '#FFE4C4',
+					black: '#000000',
+					blanchedalmond: '#FFEBCD',
+					blue: '#0000FF',
+					blueviolet: '#8A2BE2',
+					brown: '#A52A2A',
+					burlywood: '#DEB887',
+					cadetblue: '#5F9EA0',
+					chartreuse: '#7FFF00',
+					chocolate: '#D2691E',
+					coral: '#FF7F50',
+					cornflowerblue: '#6495ED',
+					cornsilk: '#FFF8DC',
+					crimson: '#DC143C',
+					cyan: '#00FFFF',
+					darkblue: '#00008B',
+					darkcyan: '#008B8B',
+					darkgoldenrod: '#B8860B',
+					darkgray: '#A9A9A9',
+					darkgreen: '#006400',
+					darkgrey: '#A9A9A9',
+					darkkhaki: '#BDB76B',
+					darkmagenta: '#8B008B',
+					darkolivegreen: '#556B2F',
+					darkorange: '#FF8C00',
+					darkorchid: '#9932CC',
+					darkred: '#8B0000',
+					darksalmon: '#E9967A',
+					darkseagreen: '#8FBC8F',
+					darkslateblue: '#483D8B',
+					darkslategray: '#2F4F4F',
+					darkslategrey: '#2F4F4F',
+					darkturquoise: '#00CED1',
+					darkviolet: '#9400D3',
+					deeppink: '#FF1493',
+					deepskyblue: '#00BFFF',
+					dimgray: '#696969',
+					dimgrey: '#696969',
+					dodgerblue: '#1E90FF',
+					firebrick: '#B22222',
+					floralwhite: '#FFFAF0',
+					forestgreen: '#228B22',
+					fuchsia: '#FF00FF',
+					gainsboro: '#DCDCDC',
+					ghostwhite: '#F8F8FF',
+					gold: '#FFD700',
+					goldenrod: '#DAA520',
+					gray: '#808080',
+					green: '#008000',
+					greenyellow: '#ADFF2F',
+					grey: '#808080',
+					honeydew: '#F0FFF0',
+					hotpink: '#FF69B4',
+					indianred: '#CD5C5C',
+					indigo: '#4B0082',
+					ivory: '#FFFFF0',
+					khaki: '#F0E68C',
+					lavender: '#E6E6FA',
+					lavenderblush: '#FFF0F5',
+					lawngreen: '#7CFC00',
+					lemonchiffon: '#FFFACD',
+					lightblue: '#ADD8E6',
+					lightcoral: '#F08080',
+					lightcyan: '#E0FFFF',
+					lightgoldenrodyellow: '#FAFAD2',
+					lightgray: '#D3D3D3',
+					lightgreen: '#90EE90',
+					lightgrey: '#D3D3D3',
+					lightpink: '#FFB6C1',
+					lightsalmon: '#FFA07A',
+					lightseagreen: '#20B2AA',
+					lightskyblue: '#87CEFA',
+					lightslategray: '#778899',
+					lightslategrey: '#778899',
+					lightsteelblue: '#B0C4DE',
+					lightyellow: '#FFFFE0',
+					lime: '#00FF00',
+					limegreen: '#32CD32',
+					linen: '#FAF0E6',
+					magenta: '#FF00FF',
+					maroon: '#800000',
+					mediumaquamarine: '#66CDAA',
+					mediumblue: '#0000CD',
+					mediumorchid: '#BA55D3',
+					mediumpurple: '#9370DB',
+					mediumseagreen: '#3CB371',
+					mediumslateblue: '#7B68EE',
+					mediumspringgreen: '#00FA9A',
+					mediumturquoise: '#48D1CC',
+					mediumvioletred: '#C71585',
+					midnightblue: '#191970',
+					mintcream: '#F5FFFA',
+					mistyrose: '#FFE4E1',
+					moccasin: '#FFE4B5',
+					navajowhite: '#FFDEAD',
+					navy: '#000080',
+					oldlace: '#FDF5E6',
+					olive: '#808000',
+					olivedrab: '#6B8E23',
+					orange: '#FFA500',
+					orangered: '#FF4500',
+					orchid: '#DA70D6',
+					palegoldenrod: '#EEE8AA',
+					palegreen: '#98FB98',
+					paleturquoise: '#AFEEEE',
+					palevioletred: '#DB7093',
+					papayawhip: '#FFEFD5',
+					peachpuff: '#FFDAB9',
+					peru: '#CD853F',
+					pink: '#FFC0CB',
+					plum: '#DDA0DD',
+					powderblue: '#B0E0E6',
+					purple: '#800080',
+					rebeccapurple: '#663399',
+					red: '#FF0000',
+					rosybrown: '#BC8F8F',
+					royalblue: '#4169E1',
+					saddlebrown: '#8B4513',
+					salmon: '#FA8072',
+					sandybrown: '#F4A460',
+					seagreen: '#2E8B57',
+					seashell: '#FFF5EE',
+					sienna: '#A0522D',
+					silver: '#C0C0C0',
+					skyblue: '#87CEEB',
+					slateblue: '#6A5ACD',
+					slategray: '#708090',
+					slategrey: '#708090',
+					snow: '#FFFAFA',
+					springgreen: '#00FF7F',
+					steelblue: '#4682B4',
+					tan: '#D2B48C',
+					teal: '#008080',
+					thistle: '#D8BFD8',
+					tomato: '#FF6347',
+					turquoise: '#40E0D0',
+					violet: '#EE82EE',
+					wheat: '#F5DEB3',
+					white: '#FFFFFF',
+					whitesmoke: '#F5F5F5',
+					yellow: '#FFFF00',
+					yellowgreen: '#9ACD32'
+				},
+
+				_rgbaRegExp: /rgba?\(\s*\d+%?\s*,\s*\d+%?\s*,\s*\d+%?\s*(?:,\s*[0-9.]+\s*)?\)/gi,
+
+				_hslaRegExp: /hsla?\(\s*[0-9.]+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[0-9.]+\s*)?\)/gi,
+
+				/**
+				 * Parses the `value` used as a `background` property shorthand and returns information as an object.
+				 *
+				 * **Note:** Currently only the `color` property is extracted. Any other parts will go into the `unprocessed` property.
+				 *
+				 *		var background = CKEDITOR.tools.style.parse.background( '#0C0 url(foo.png)' );
+				 *		console.log( background );
+				 *		// Logs: { color: '#0C0', unprocessed: 'url(foo.png)' }
+				 *
+				 * @param {String} value The value of the `background` property.
+				 * @returns {Object} An object with information extracted from the background.
+				 * @returns {String} return.color The **first** color value found. The color format remains the same as in input.
+				 * @returns {String} return.unprocessed The remaining part of the `value` that has not been processed.
+				 * @member CKEDITOR.tools.style.parse
+				 */
+				background: function( value ) {
+					var ret = [],
+						colors = [];
+
+					colors = this._findColor( value );
+
+					if ( colors.length ) {
+						ret.color = colors[ 0 ];
+
+						CKEDITOR.tools.array.forEach( colors, function( colorToken ) {
+							value = value.replace( colorToken, '' );
+						} );
+					}
+
+					value = CKEDITOR.tools.trim( value );
+
+					if ( value ) {
+						// If anything was left unprocessed include it as unprocessed part.
+						ret.unprocessed = value;
+					}
+
+					return ret;
+				},
+
+				/**
+				 * Parses the `margin` CSS property shorthand format.
+				 *
+				 *		console.log( CKEDITOR.tools.parse.margin( '3px 0 2' ) );
+				 *		// Logs: { top: "3px", right: "0", bottom: "2", left: "0" }
+				 *
+				 * @param {String} value The `margin` property value.
+				 * @returns {Object}
+				 * @returns {Number} return.top Top margin.
+				 * @returns {Number} return.right Right margin.
+				 * @returns {Number} return.bottom Bottom margin.
+				 * @returns {Number} return.left Left margin.
+				 * @member CKEDITOR.tools.style.parse
+				 */
+				margin: function( value ) {
+					var ret = {};
+
+					var widths = value.match( /(?:\-?[\.\d]+(?:%|\w*)|auto|inherit|initial|unset)/g ) || [ '0px' ];
+
+					switch ( widths.length ) {
+						case 1:
+							// element.styles.margin = widths[0];
+							mapStyles( [ 0, 0, 0, 0 ] );
+							break;
+						case 2:
+							mapStyles( [ 0, 1, 0, 1 ] );
+							break;
+						case 3:
+							mapStyles( [ 0, 1, 2, 1 ] );
+							break;
+						case 4:
+							mapStyles( [ 0, 1, 2, 3 ] );
+							break;
+					}
+
+					function mapStyles( map ) {
+						ret.top = widths[ map[ 0 ] ];
+						ret.right = widths[ map[ 1 ] ];
+						ret.bottom = widths[ map[ 2 ] ];
+						ret.left = widths[ map[ 3 ] ];
+					}
+
+					return ret;
+				},
+
+				/**
+				 * Searches the `value` for any CSS color occurrences and returns it.
+				 *
+				 * @private
+				 * @param {String} value
+				 * @returns {String[]} An array of matched results.
+				 * @member CKEDITOR.tools.style.parse
+				 */
+				_findColor: function( value ) {
+					var ret = [],
+						arrayTools = CKEDITOR.tools.array;
+
+
+					// Check for rgb(a).
+					ret = ret.concat( value.match( this._rgbaRegExp ) || [] );
+
+					// Check for hsl(a).
+					ret = ret.concat( value.match( this._hslaRegExp ) || [] );
+
+					ret = ret.concat( arrayTools.filter( value.split( /\s+/ ), function( colorEntry ) {
+						// Check for hex format.
+						if ( colorEntry.match( /^\#[a-f0-9]{3}(?:[a-f0-9]{3})?$/gi ) ) {
+							return true;
+						}
+
+						// Check for preset names.
+						return colorEntry.toLowerCase() in CKEDITOR.tools.style.parse._colors;
+					} ) );
+
+					return ret;
+				}
+			}
+		},
+
+		/**
+		 * A set of array helpers.
+		 *
+		 * @property {CKEDITOR.tools.array}
+		 * @member CKEDITOR.tools
+		 */
+		array: {
+			/**
+			 * Returns a copy of `array` filtered using the `fn` function. Any elements that the `fn` will return `false` for
+			 * will get removed from the returned array.
+			 *
+			 *		var filtered = this.array.filter( [ 0, 1, 2, 3 ], function( value ) {
+			 *			// Leave only values equal or greater than 2.
+			 *			return value >= 2;
+			 *		} );
+			 *		console.log( filtered );
+			 *		// Logs: [ 2, 3 ]
+			 *
+			 * @param {Array} array
+			 * @param {Function} fn A function that gets called with each `array` item. Any item that `fn`
+			 * returned a `false`-alike value for will be filtered out of the `array`.
+			 * @param {Mixed} fn.value The currently iterated array value.
+			 * @param {Number} fn.index The index of the currently iterated value in an array.
+			 * @param {Array} fn.array The original array passed as the `array` variable.
+			 * @param {Mixed} [thisArg=undefined] A context object for `fn`.
+			 * @returns {Array} The filtered array.
+			 * @member CKEDITOR.tools.array
+			 */
+			filter: function( array, fn, thisArg ) {
+				var ret = [];
+
+				this.forEach( array, function( val, i ) {
+					if ( fn.call( thisArg, val, i, array ) ) {
+						ret.push( val );
+					}
+				} );
+
+				return ret;
+			},
+
+			/**
+			 * Iterates over every element in the `array`.
+			 *
+			 * @param {Array} array An array to be iterated over.
+			 * @param {Function} fn The function called for every `array` element.
+			 * @param {Mixed} fn.value The currently iterated array value.
+			 * @param {Number} fn.index The index of the currently iterated value in an array.
+			 * @param {Array} fn.array The original array passed as an `array` variable.
+			 * @param {Mixed} [thisArg=undefined] The context object for `fn`.
+			 * @member CKEDITOR.tools.array
+			 */
+			forEach: function( array, fn, thisArg ) {
+				var len = array.length,
+					i;
+
+				for ( i = 0; i < len; i++ ) {
+					fn.call( thisArg, array[ i ], i, array );
+				}
+			}
 		}
 	};
@@ -2834,4 +3182,41 @@
 		return result;
 	}
+
+	/**
+	 * @member CKEDITOR.tools.array
+	 * @method indexOf
+	 * @inheritdoc CKEDITOR.tools#indexOf
+	 */
+	CKEDITOR.tools.array.indexOf = CKEDITOR.tools.indexOf;
+
+	/**
+	 * @member CKEDITOR.tools.array
+	 * @method isArray
+	 * @inheritdoc CKEDITOR.tools#isArray
+	 */
+	CKEDITOR.tools.array.isArray = CKEDITOR.tools.isArray;
+
+
+
+	/**
+	 * The namespace containing functions to work on CSS properties.
+	 *
+	 * @since 4.6.1
+	 * @class CKEDITOR.tools.style
+	 */
+
+	/**
+	 * The namespace with helper functions to parse some common CSS properties.
+	 *
+	 * @since 4.6.1
+	 * @class CKEDITOR.tools.style.parse
+	 */
+
+	/**
+	 * The namespace with helper functions and polyfills for arrays.
+	 *
+	 * @since 4.6.1
+	 * @class CKEDITOR.tools.array
+	 */
 } )();
 
@@ -7023,5 +7408,5 @@
 					editable = instance.editable();
 
-					if ( editable.equals( this ) || editable.contains( this ) ) {
+					if ( editable && ( editable.equals( this ) || editable.contains( this ) ) ) {
 						return instance;
 					}
@@ -22416,5 +22801,5 @@
 ( function() {
 	var isNotWhitespace, isNotBookmark, isEmpty, isBogus, emptyParagraphRegexp,
-		insert, fixTableAfterContentsDeletion, getHtmlFromRangeHelpers, extractHtmlFromRangeHelpers;
+		insert, fixTableAfterContentsDeletion, fixListAfterContentsDelete, getHtmlFromRangeHelpers, extractHtmlFromRangeHelpers;
 
 	/**
@@ -22840,10 +23225,17 @@
 				range.deleteContents( 1 );
 
-				// If range is placed in inermediate element (not td or th), we need to do three things:
-				// * fill emptied <td/th>s with if browser needs them,
-				// * remove empty text nodes so IE8 won't crash (http://dev.ckeditor.com/ticket/11183#comment:8),
-				// * fix structure and move range into the <td/th> element.
-				if ( range.startContainer.type == CKEDITOR.NODE_ELEMENT && range.startContainer.is( { tr: 1, table: 1, tbody: 1, thead: 1, tfoot: 1 } ) )
-					fixTableAfterContentsDeletion( range );
+				if ( range.startContainer.type == CKEDITOR.NODE_ELEMENT ) {
+					// If range is placed in intermediate element (not td or th), we need to do three things:
+					// * fill emptied <td/th>s with if browser needs them,
+					// * remove empty text nodes so IE8 won't crash
+					// (http://dev.ckeditor.com/ticket/11183#comment:8),
+					// * fix structure and move range into the <td/th> element.
+					if ( range.startContainer.is( { tr: 1, table: 1, tbody: 1, thead: 1, tfoot: 1 } ) ) {
+						fixTableAfterContentsDeletion( range );
+					} else if ( range.startContainer.is( CKEDITOR.dtd.$list ) ) {
+						// Similarly there's a need for lists.
+						fixListAfterContentsDelete( range );
+					}
+				}
 
 				// If we're inserting a block at dtd-violated position, split
@@ -24780,4 +25172,63 @@
 
 			range.moveToPosition( deeperSibling, appendToStart ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END );
+		};
+	} )();
+
+	fixListAfterContentsDelete = ( function() {
+		// Creates an element walker which operates only within lists.
+		function getFixListSelectionWalker( testRange ) {
+			var walker = new CKEDITOR.dom.walker( testRange );
+			walker.guard = function( node, isMovingOut ) {
+				if ( isMovingOut )
+					return false;
+				if ( node.type == CKEDITOR.NODE_ELEMENT )
+					return node.is( CKEDITOR.dtd.$list ) || node.is( CKEDITOR.dtd.$listItem );
+			};
+			walker.evaluator = function( node ) {
+				return node.type == CKEDITOR.NODE_ELEMENT && node.is( CKEDITOR.dtd.$listItem );
+			};
+
+			return walker;
+		}
+
+		return function( range ) {
+			var container = range.startContainer,
+				appendToStart = false,
+				testRange,
+				deeperSibling;
+
+			// Look left.
+			testRange = range.clone();
+			testRange.setStart( container, 0 );
+			deeperSibling = getFixListSelectionWalker( testRange ).lastBackward();
+
+			// If left is empty, look right.
+			if ( !deeperSibling ) {
+				testRange = range.clone();
+				testRange.setEndAt( container, CKEDITOR.POSITION_BEFORE_END );
+				deeperSibling = getFixListSelectionWalker( testRange ).lastForward();
+				appendToStart = true;
+			}
+
+			// If there's no deeper nested element in both direction - container is empty - we'll use it then.
+			if ( !deeperSibling )
+				deeperSibling = container;
+
+			// We found a list what means that it's empty - remove it completely.
+			if ( deeperSibling.is( CKEDITOR.dtd.$list ) ) {
+				range.setStartAt( deeperSibling, CKEDITOR.POSITION_BEFORE_START );
+				range.collapse( true );
+				deeperSibling.remove();
+				return;
+			}
+
+			// To avoid setting selection after bogus, remove it from the target list item.
+			// We can safely do that, because we'll insert element into that cell.
+			var bogus = deeperSibling.getBogus();
+			if ( bogus )
+				bogus.remove();
+
+			range.moveToPosition( deeperSibling, appendToStart ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END );
+			range.select();
 		};
 	} )();
@@ -36208,5 +36659,5 @@
 		// List of available localizations.
 		// jscs:disable
-		availableLangs: { af:1,ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,'de-ch':1,el:1,en:1,'en-gb':1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,fr:1,'fr-ca':1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,pl:1,pt:1,'pt-br':1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,'sr-latn':1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,'zh-cn':1 },
+		availableLangs: { af:1,ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,'de-ch':1,el:1,en:1,'en-gb':1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,fr:1,'fr-ca':1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,oc:1,pl:1,pt:1,'pt-br':1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,'sr-latn':1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,'zh-cn':1 },
 		// jscs:enable
 
@@ -41017,5 +41468,46 @@
 				]
 			} );
-			addButton( 'BGColor', 'back', lang.bgColorTitle, 20 );
+
+			var  bgOptions = {},
+				normalizeBackground = editor.config.colorButton_normalizeBackground;
+
+			if ( normalizeBackground === undefined || normalizeBackground ) {
+				// If background contains only color, then we want to convert it into background-color so that it's
+				// correctly picked by colorbutton plugin.
+				bgOptions.contentTransformations = [
+					[
+						{
+							// Transform span that specify background with color only to background-color.
+							element: 'span',
+							left: function( element ) {
+								var tools = CKEDITOR.tools;
+								if ( element.name != 'span' || !element.styles || !element.styles.background ) {
+									return false;
+								}
+
+								var background = tools.style.parse.background( element.styles.background );
+
+								// We return true only if background specifies **only** color property, and there's only one background directive.
+								return background.color && tools.objectKeys( background ).length === 1;
+							},
+							right: function( element ) {
+								var style = new CKEDITOR.style( editor.config.colorButton_backStyle, {
+										color: element.styles.background
+									} ),
+									definition = style.getDefinition();
+
+								// Align the output object with the template used in config.
+								element.name = definition.element;
+								element.styles = definition.styles;
+								element.attributes = definition.attributes || {};
+
+								return element;
+							}
+						}
+					]
+				];
+			}
+
+			addButton( 'BGColor', 'back', lang.bgColorTitle, 20, bgOptions );
 		}
 
@@ -41312,4 +41804,15 @@
  *
  * @cfg {Boolean} [colorButton_enableAutomatic=true]
+ * @member CKEDITOR.config
+ */
+
+/**
+ * Whether the plugin should convert `background` CSS properties with color only, to a `background-color` property,
+ * allowing the [Color Button](http://ckeditor.com/addon/colorbutton) plugin to edit these styles.
+ *
+ *		config.colorButton_normalizeBackground = false;
+ *
+ * @since 4.6.1
+ * @cfg {Boolean} [colorButton_normalizeBackground=true]
  * @member CKEDITOR.config
  */
@@ -51627,5 +52130,5 @@
 	// List of available localizations.
 	// jscs:disable
-	availableLangs: { af:1,ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,'de-ch':1,el:1,en:1,'en-gb':1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fr:1,'fr-ca':1,gl:1,he:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,nb:1,nl:1,no:1,pl:1,pt:1,'pt-br':1,ru:1,si:1,sk:1,sl:1,sq:1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,'zh-cn':1 },
+	availableLangs: { af:1,ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,'de-ch':1,el:1,en:1,'en-gb':1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fr:1,'fr-ca':1,gl:1,he:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,nb:1,nl:1,no:1,oc:1,pl:1,pt:1,'pt-br':1,ru:1,si:1,sk:1,sl:1,sq:1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,'zh-cn':1 },
 	// jscs:enable
 	requires: 'dialog',
Index: plugins/dcCKEditor/js/ckeditor/lang/da.js
===================================================================
--- plugins/dcCKEditor/js/ckeditor/lang/da.js	(revision 3410)
+++ plugins/dcCKEditor/js/ckeditor/lang/da.js	(revision 3464)
@@ -500,14 +500,14 @@
     	{
     		'8' : 'Backspace',
-    		'13' : 'Enter',
+    		'13' : 'Retur',
     		'16' : 'Shift',
     		'17' : 'Ctrl',
     		'18' : 'Alt',
-    		'32' : 'Space',
+    		'32' : 'Mellemrum',
     		'35' : 'End',
     		'36' : 'Home',
-    		'46' : 'Delete',
+    		'46' : 'Slet',
     		'224' : 'Command'
     	},
-    	keyboardShortcut : 'Keyboard shortcut'
+    	keyboardShortcut : 'Tastatur genvej'
     } }; 
Index: plugins/dcCKEditor/js/ckeditor/lang/ja.js
===================================================================
--- plugins/dcCKEditor/js/ckeditor/lang/ja.js	(revision 3410)
+++ plugins/dcCKEditor/js/ckeditor/lang/ja.js	(revision 3464)
@@ -510,4 +510,4 @@
     		'224' : 'Command'
     	},
-    	keyboardShortcut : 'Keyboard shortcut'
+    	keyboardShortcut : 'キーボードショートカット'
     } }; 
Index: plugins/dcCKEditor/js/ckeditor/lang/nb.js
===================================================================
--- plugins/dcCKEditor/js/ckeditor/lang/nb.js	(revision 3410)
+++ plugins/dcCKEditor/js/ckeditor/lang/nb.js	(revision 3464)
@@ -162,5 +162,5 @@
     {
     	armenian : 'Armensk nummerering',
-    	bulletedTitle : 'Egenskaper for punktmerket liste',
+    	bulletedTitle : 'Egenskaper for punktliste',
     	circle : 'Sirkel',
     	decimal : 'Tall (1, 2, 3, osv.)',
@@ -183,5 +183,5 @@
     list : 
     {
-    	bulletedlist : 'Legg til / fjern punktmerket liste',
+    	bulletedlist : 'Legg til / fjern punktliste',
     	numberedlist : 'Legg til / fjern nummerert liste'
     },
@@ -194,6 +194,6 @@
     	anchor : 
     	{
-    		toolbar : 'Sett inn/Rediger anker',
-    		menu : 'Egenskaper for anker',
+    		toolbar : 'Anker',
+    		menu : 'Rediger anker',
     		title : 'Egenskaper for anker',
     		name : 'Ankernavn',
@@ -205,5 +205,5 @@
     	charset : 'Lenket tegnsett',
     	cssClasses : 'Stilarkklasser',
-    	download : 'Force Download',
+    	download : 'Tving nedlasting',
     	displayText : 'Tekst som skal vises',
     	emailAddress : 'E-postadresse',
@@ -214,6 +214,6 @@
     	langCode : 'Språkkode',
     	langDir : 'Språkretning',
-    	langDirLTR : 'Venstre til høyre (VTH)',
-    	langDirRTL : 'Høyre til venstre (HTV)',
+    	langDirLTR : 'Venstre til høyre (LTR)',
+    	langDirRTL : 'Høyre til venstre (RTL)',
     	menu : 'Rediger lenke',
     	name : 'Navn',
@@ -246,5 +246,5 @@
     	toEmail : 'E-post',
     	toUrl : 'URL',
-    	toolbar : 'Sett inn/Rediger lenke',
+    	toolbar : 'Lenke',
     	type : 'Lenketype',
     	unlink : 'Fjern lenke',
@@ -324,7 +324,7 @@
     	edit : 'Rediger Div',
     	inlineStyleInputLabel : 'Inlinestiler',
-    	langDirLTRLabel : 'Venstre til høyre (VTH)',
+    	langDirLTRLabel : 'Venstre til høyre (LTR)',
     	langDirLabel : 'Språkretning',
-    	langDirRTLLabel : 'Høyre til venstre (HTV)',
+    	langDirRTLLabel : 'Høyre til venstre (RTL)',
     	languageCodeInputLabel : ' Språkkode',
     	remove : 'Fjern Div',
@@ -348,5 +348,5 @@
     		'2F4F4F' : 'Grønnsvart',
     		'008080' : 'Blågrønn',
-    		'000080' : 'Marineblått',
+    		'000080' : 'Marineblå',
     		'4B0082' : 'Indigo',
     		'696969' : 'Mørk grå',
@@ -372,5 +372,5 @@
     		'00FF00' : 'Lime',
     		AFEEEE : 'Svak turkis',
-    		ADD8E6 : 'Lys Blå',
+    		ADD8E6 : 'Lys blå',
     		DDA0DD : 'Plomme',
     		D3D3D3 : 'Lys grå',
@@ -379,5 +379,5 @@
     		FFFFE0 : 'Lys gul',
     		F0FFF0 : 'Honningmelon',
-    		F0FFFF : 'Svakt asurblått',
+    		F0FFFF : 'Svak asurblå',
     		F0F8FF : 'Svak cyan',
     		E6E6FA : 'Lavendel',
@@ -451,6 +451,6 @@
     	name : 'Navn',
     	langDir : 'Språkretning',
-    	langDirLtr : 'Venstre til høyre (VTH)',
-    	langDirRtl : 'Høyre til venstre (HTV)',
+    	langDirLtr : 'Venstre til høyre (LTR)',
+    	langDirRtl : 'Høyre til venstre (RTL)',
     	langCode : 'Språkkode',
     	longDescr : 'Utvidet beskrivelse',
@@ -471,5 +471,5 @@
     	target : 'Mål',
     	targetNew : 'Nytt vindu (_blank)',
-    	targetTop : 'Hele vindu (_top)',
+    	targetTop : 'Hele vinduet (_top)',
     	targetSelf : 'Samme vindu (_self)',
     	targetParent : 'Foreldrevindu (_parent)',
@@ -504,5 +504,5 @@
     		'17' : 'Ctrl',
     		'18' : 'Alt',
-    		'32' : 'Space',
+    		'32' : 'Mellomrom',
     		'35' : 'End',
     		'36' : 'Home',
@@ -510,4 +510,4 @@
     		'224' : 'Command'
     	},
-    	keyboardShortcut : 'Keyboard shortcut'
+    	keyboardShortcut : 'Tastatursnarvei'
     } }; 
Index: plugins/dcCKEditor/js/ckeditor/lang/nl.js
===================================================================
--- plugins/dcCKEditor/js/ckeditor/lang/nl.js	(revision 3410)
+++ plugins/dcCKEditor/js/ckeditor/lang/nl.js	(revision 3464)
@@ -205,6 +205,6 @@
     	charset : 'Karakterset van gelinkte bron',
     	cssClasses : 'Stylesheet-klassen',
-    	download : 'Force Download',
-    	displayText : 'Display Text',
+    	download : 'Download forceren',
+    	displayText : 'Weergavetekst',
     	emailAddress : 'E-mailadres',
     	emailBody : 'Inhoud bericht',
@@ -504,5 +504,5 @@
     		'17' : 'Ctrl',
     		'18' : 'Alt',
-    		'32' : 'Space',
+    		'32' : 'Spatie',
     		'35' : 'End',
     		'36' : 'Home',
@@ -510,4 +510,4 @@
     		'224' : 'Command'
     	},
-    	keyboardShortcut : 'Keyboard shortcut'
+    	keyboardShortcut : 'Sneltoets'
     } }; 
Index: plugins/dcCKEditor/js/ckeditor/lang/pt-br.js
===================================================================
--- plugins/dcCKEditor/js/ckeditor/lang/pt-br.js	(revision 3410)
+++ plugins/dcCKEditor/js/ckeditor/lang/pt-br.js	(revision 3464)
@@ -205,6 +205,6 @@
     	charset : 'Charset do Link',
     	cssClasses : 'Classe de CSS',
-    	download : 'Force Download',
-    	displayText : 'Display Text',
+    	download : 'Forçar Download',
+    	displayText : 'Exibir Texto',
     	emailAddress : 'Endereço E-Mail',
     	emailBody : 'Corpo da Mensagem',
@@ -499,15 +499,15 @@
     	keyboard : 
     	{
-    		'8' : 'Backspace',
+    		'8' : 'Tecla Retroceder',
     		'13' : 'Enter',
     		'16' : 'Shift',
     		'17' : 'Ctrl',
     		'18' : 'Alt',
-    		'32' : 'Space',
+    		'32' : 'Tecla Espaço',
     		'35' : 'End',
     		'36' : 'Home',
     		'46' : 'Delete',
-    		'224' : 'Command'
-    	},
-    	keyboardShortcut : 'Keyboard shortcut'
+    		'224' : 'Comando'
+    	},
+    	keyboardShortcut : 'Atalho do teclado'
     } }; 
Index: plugins/dcCKEditor/js/ckeditor/lang/ru.js
===================================================================
--- plugins/dcCKEditor/js/ckeditor/lang/ru.js	(revision 3410)
+++ plugins/dcCKEditor/js/ckeditor/lang/ru.js	(revision 3464)
@@ -510,4 +510,4 @@
     		'224' : 'Command'
     	},
-    	keyboardShortcut : 'Keyboard shortcut'
+    	keyboardShortcut : 'Комбинация клавиш'
     } }; 
Index: plugins/dcCKEditor/js/ckeditor/lang/sv.js
===================================================================
--- plugins/dcCKEditor/js/ckeditor/lang/sv.js	(revision 3410)
+++ plugins/dcCKEditor/js/ckeditor/lang/sv.js	(revision 3464)
@@ -27,5 +27,5 @@
     		tools : 'Verktyg'
     	},
-    	toolbars : 'Redigera verktygsfält'
+    	toolbars : 'Editorns verktygsfält'
     },
     templates : 
@@ -114,9 +114,9 @@
     stylescombo : 
     {
-    	label : 'Anpassad stil',
-    	panelTitle : 'Formatmallar',
-    	panelTitle1 : 'Blockstil',
-    	panelTitle2 : 'Inbäddad stil',
-    	panelTitle3 : 'Objektets stil'
+    	label : 'Stilar',
+    	panelTitle : 'Formateringsstilar',
+    	panelTitle1 : 'Blockstilar',
+    	panelTitle2 : 'Inbäddade stilar',
+    	panelTitle3 : 'Objektstilar'
     },
     specialchar : 
@@ -205,6 +205,6 @@
     	charset : 'Teckenuppställning',
     	cssClasses : 'Stilmall',
-    	download : 'Force Download',
-    	displayText : 'Display Text',
+    	download : 'Tvinga nerladdning',
+    	displayText : 'Visningstext',
     	emailAddress : 'E-postadress',
     	emailBody : 'Innehåll',
@@ -228,5 +228,5 @@
     	popupLocationBar : 'Adressfält',
     	popupMenuBar : 'Menyfält',
-    	popupResizable : 'Resizable',
+    	popupResizable : 'Skalbart',
     	popupScrollBars : 'Scrolllista',
     	popupStatusBar : 'Statusfält',
@@ -422,10 +422,10 @@
     	dlgTitle : 'Om CKEditor',
     	help : 'Se $1 för hjälp.',
-    	moreInfo : 'För information av licensiering besök vår hemsida:',
+    	moreInfo : 'För information om licensiering besök vår hemsida:',
     	title : 'Om CKEditor',
-    	userGuide : 'CKEditor User\'s Guide'
-    },
-    editor : 'Rich Text Editor',
-    editorPanel : 'Rich Text Editor panel',
+    	userGuide : 'CKEditor användarmanual'
+    },
+    editor : 'Rich Text-editor',
+    editorPanel : 'Panel till Rich Text-editor',
     common : 
     {
@@ -510,4 +510,4 @@
     		'224' : 'Kommando'
     	},
-    	keyboardShortcut : 'Keyboard shortcut'
+    	keyboardShortcut : 'Kortkommando'
     } }; 
Index: plugins/dcCKEditor/js/ckeditor/plugins/a11yhelp/dialogs/lang/da.js
===================================================================
--- plugins/dcCKEditor/js/ckeditor/plugins/a11yhelp/dialogs/lang/da.js	(revision 3410)
+++ plugins/dcCKEditor/js/ckeditor/plugins/a11yhelp/dialogs/lang/da.js	(revision 3464)
@@ -23,16 +23,16 @@
 
 			{
-			name: 'Editor Context Menu', // MISSING
-			legend: 'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.' // MISSING
+			name: 'Redaktør kontekstmenu',
+			legend: 'Tryk ${contextMenu} eller APPLICATION KEY for at åbne kontekstmenuen. Flyt derefter til næste menuvalg med TAB eller PIL NED. Flyt til forrige valg med SHIFT+TAB eller PIL OP. Tryk MELLEMRUM eller RETUR for at vælge menu-muligheder. Åben under-menu af aktuelle valg med MELLEMRUM eller RETUR eller HØJRE PIL. Gå tilbage til overliggende menu-emne med ESC eller VENSTRE PIL. Luk kontekstmenu med ESC.'
 		},
 
 			{
-			name: 'Editor List Box', // MISSING
-			legend: 'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.' // MISSING
+			name: 'Redaktør listeboks',
+			legend: 'Flyt til næste emne med TAB eller PIL NED inde i en listeboks. Flyt til forrige listeemne med SHIFT+TAB eller PIL OP. Tryk MELLEMRUM eller RETUR for at vælge liste-muligheder. Tryk ESC for at lukke liste-boksen.'
 		},
 
 			{
-			name: 'Editor Element Path Bar', // MISSING
-			legend: 'Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.' // MISSING
+			name: 'Redaktør elementsti-bar',
+			legend: 'Tryk ${elementsPathFocus} for at navigere til elementernes sti-bar. Flyt til næste element-knap med TAB eller HØJRE PIL. Flyt til forrige knap med SHIFT+TAB eller VENSTRE PIL. Klik MELLEMRUM eller RETUR for at vælge element i editoren.'
 		}
 		]
@@ -66,9 +66,9 @@
 		},
 			{
-			name: ' Toolbar Collapse command', // MISSING
+			name: 'Klap værktøjslinje sammen kommando ',
 			legend: 'Klik ${toolbarCollapse}'
 		},
 			{
-			name: ' Access previous focus space command', // MISSING
+			name: 'Adgang til forrige fokusområde kommando',
 			legend: 'Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING
 		},
Index: plugins/dcCKEditor/js/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js
===================================================================
--- plugins/dcCKEditor/js/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js	(revision 3410)
+++ plugins/dcCKEditor/js/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js	(revision 3464)
@@ -19,5 +19,5 @@
 			name: 'Dialoog tekstverwerker',
 			legend:
-				'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.'  // MISSING
+				'In een dialoogvenster, druk op TAB om te navigeren naar het volgende veld. Druk op SHIFT+TAB om naar het vorige veld te navigeren. Druk op ENTER om het dialoogvenster te verzenden. Druk op ESC om het dialoogvenster te sluiten. Bij dialoogvensters met meerdere tabbladen kan de tabset bereikt worden met ALT+F10 of met TAB als onderdeel van de tabvolgorde in het dialoogvenster. Als de tabset focus heeft, kun je schakalen naar het volgende en vorige tabblad met respectievelijk PIJL RECHTS en PIJL LINKS.'
 		},
 
Index: plugins/dcCKEditor/js/ckeditor/plugins/templates/templates/default.js
===================================================================
--- plugins/dcCKEditor/js/ckeditor/plugins/templates/templates/default.js	(revision 3175)
+++ plugins/dcCKEditor/js/ckeditor/plugins/templates/templates/default.js	(revision 3464)
@@ -27,5 +27,5 @@
 		title: 'Strange Template',
 		image: 'template2.gif',
-		description: 'A template that defines two colums, each one with a title, and some text.',
+		description: 'A template that defines two columns, each one with a title, and some text.',
 		html: '<table cellspacing="0" cellpadding="0" style="width:100%" border="0">' +
 			'<tr>' +
Index: plugins/dcCKEditor/js/ckeditor/skins/moono/editor.css
===================================================================
--- plugins/dcCKEditor/js/ckeditor/skins/moono/editor.css	(revision 3450)
+++ plugins/dcCKEditor/js/ckeditor/skins/moono/editor.css	(revision 3464)
