/*
Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/

(function() {
	var a = function(b, c) {
			var d = 1,
				e = 2,
				f = 4,
				g = 8,
				h = /^\s*(\d+)((px)|\%)?\s*$/i,
				i = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i,
				j = /^\d+px$/,
				k = function() {
					var B = this.getValue(),
						C = this.getDialog(),
						D = B.match(h);
					if (D) {
						if (D[2] == '%') p(C, false);
						B = D[1];
					}
					if (C.lockRatio) {
						var E = C.originalElement;
						if (E.getCustomData('isReady') == 'true') if (this.id == 'txtHeight') {
							if (B && B != '0') B = Math.round(E.$.width * (B / E.$.height));
							//if (!isNaN(B)) C.setValueOf('info', 'txtWidth', B);
						} else {
							if (B && B != '0') B = Math.round(E.$.height * (B / E.$.width));
							//if (!isNaN(B)) C.setValueOf('info', 'txtHeight', B);
						}
					}
					l(C);
				},
				l = function(B) {
					if (!B.originalElement || !B.preview) return 1;
					B.commitContent(f, B.preview);
					return 0;
				};

			function m() {
				var B = arguments,
					C = this.getContentElement('advanced', 'txtdlgGenStyle');
				C && C.commit.apply(C, B);
				this.foreach(function(D) {
					if (D.commit && D.id != 'txtdlgGenStyle') D.commit.apply(D, B);
				});
			};
			var n;

			function o(B) {
				if (n) return;
				n = 1;
				var C = this.getDialog(),
					D = C.imageElement;
				if (D) {
					this.commit(d, D);
					B = [].concat(B);
					var E = B.length,
						F;
					for (var G = 0; G < E; G++) {
						F = C.getContentElement.apply(C, B[G].split(':'));
						F && F.setup(d, D);
					}
				}
				n = 0;
			};
			var p = function(B, C) {
					if (!B.getContentElement('info', 'ratioLock')) return null;
					var D = B.originalElement;
					if (!D) return null;
					if (C == 'check') {
						if (!B.userlockRatio && D.getCustomData('isReady') == 'true') {
/*
							var E = B.getValueOf('info', 'txtWidth'),
								F = B.getValueOf('info', 'txtHeight'),
								G = D.$.width * 1000 / D.$.height,
								H = E * 1000 / F;
*/
							B.lockRatio = false;
							if (!E && !F) B.lockRatio = true;
							else if (!isNaN(G) && !isNaN(H)) if (Math.round(G) == Math.round(H)) B.lockRatio = true;
						}
					} else if (C != undefined) B.lockRatio = C;
					else {
						B.userlockRatio = 1;
						B.lockRatio = !B.lockRatio;
					}
					var I = CKEDITOR.document.getById(w);
					if (B.lockRatio) I.removeClass('cke_btn_unlocked');
					else I.addClass('cke_btn_unlocked');
					I.setAttribute('aria-checked', B.lockRatio);
					if (CKEDITOR.env.hc) {
						var J = I.getChild(0);
						J.setHtml(B.lockRatio ? CKEDITOR.env.ie ? '■' : '▣' : CKEDITOR.env.ie ? '□' : '▢');
					}
					return B.lockRatio;
				},
				q = function(B) {
					var C = B.originalElement;
					if (C.getCustomData('isReady') == 'true') {
						var D = B.getContentElement('info', 'txtWidth'),
							E = B.getContentElement('info', 'txtHeight');
						//D && D.setValue(C.$.width);
						//E && E.setValue(C.$.height);
					}
					l(B);
				},
				r = function(B, C) {
					if (B != d) return;

					function D(I, J) {
						var K = I.match(h);
						if (K) {
							if (K[2] == '%') {
								K[1] += '%';
								p(E, false);
							}
							return K[1];
						}
						return J;
					};
					var E = this.getDialog(),
						F = '',
						G = this.id == 'txtWidth' ? 'width' : 'height',
						H = C.getAttribute(G);
					if (H) F = D(H, F);
					F = D(C.getStyle(G), F);
					//this.setValue(F);
				},
				s, t = function() {
					var B = this.originalElement;
					B.setCustomData('isReady', 'true');
					B.removeListener('load', t);
					B.removeListener('error', u);
					B.removeListener('abort', u);
					CKEDITOR.document.getById(y).setStyle('display', 'none');
					if (!this.dontResetSize) q(this);
					if (this.firstLoad) CKEDITOR.tools.setTimeout(function() {
						p(this, 'check');
					}, 0, this);
					this.firstLoad = false;
					this.dontResetSize = false;
				},
				u = function() {
					var D = this;
					var B = D.originalElement;
					B.removeListener('load', t);
					B.removeListener('error', u);
					B.removeListener('abort', u);
					var C = CKEDITOR.getUrl(b.skinPath + 'images/noimage.png');
					if (D.preview) D.preview.setAttribute('src', C);
					CKEDITOR.document.getById(y).setStyle('display', 'none');
					p(D, false);
				},
				v = function(B) {
					return CKEDITOR.tools.getNextId() + '_' + B;
				},
				w = v('btnLockSizes'),
				x = v('btnResetSize'),
				y = v('ImagePreviewLoader'),
				z = v('previewLink'),
				A = v('previewImage');
			return {
				title: b.lang.image[c == 'image' ? 'title' : 'titleButton'],
				minWidth: 420,
				minHeight: 360,
				onShow: function() {
					var H = this;
					H.imageElement = false;
					H.linkElement = false;
					H.imageEditMode = false;
					H.linkEditMode = false;
					H.lockRatio = true;
					H.userlockRatio = 0;
					H.dontResetSize = false;
					H.firstLoad = true;
					H.addLink = false;
					var B = H.getParentEditor(),
						C = B.getSelection(),
						D = C && C.getSelectedElement(),
						E = D && D.getAscendant('a');
					CKEDITOR.document.getById(y).setStyle('display', 'none');
					s = new CKEDITOR.dom.element('img', B.document);
					H.preview = CKEDITOR.document.getById(A);
					H.originalElement = B.document.createElement('img');
					H.originalElement.setAttribute('alt', '');
					H.originalElement.setCustomData('isReady', 'false');
					if (E) {
						H.linkElement = E;
						H.linkEditMode = true;
						var F = E.getChildren();
						if (F.count() == 1) {
							var G = F.getItem(0).getName();
							if (G == 'img' || G == 'input') {
								H.imageElement = F.getItem(0);
								if (H.imageElement.getName() == 'img') H.imageEditMode = 'img';
								else if (H.imageElement.getName() == 'input') H.imageEditMode = 'input';
							}
						}
						if (c == 'image') H.setupContent(e, E);
					}
					if (D && D.getName() == 'img' && !D.data('cke-realelement') || D && D.getName() == 'input' && D.getAttribute('type') == 'image') {
						H.imageEditMode = D.getName();
						H.imageElement = D;
					}
					if (H.imageEditMode) {
						H.cleanImageElement = H.imageElement;
						H.imageElement = H.cleanImageElement.clone(true, true);
						H.setupContent(d, H.imageElement);
					} else H.imageElement = B.document.createElement('img');
					p(H, true);
					if (!CKEDITOR.tools.trim(H.getValueOf('info', 'txtUrl'))) {
						H.preview.removeAttribute('src');
						H.preview.setStyle('display', 'none');
					}
				},
				onOk: function() {
					var C = this;
					if (C.imageEditMode) {
						var B = C.imageEditMode;
						if (c == 'image' && B == 'input' && confirm(b.lang.image.button2Img)) {
							B = 'img';
							C.imageElement = b.document.createElement('img');
							C.imageElement.setAttribute('alt', '');
							b.insertElement(C.imageElement);
						} else if (c != 'image' && B == 'img' && confirm(b.lang.image.img2Button)) {
							B = 'input';
							C.imageElement = b.document.createElement('input');
							C.imageElement.setAttributes({
								type: 'image',
								alt: ''
							});
							b.insertElement(C.imageElement);
						} else {
							C.imageElement = C.cleanImageElement;
							delete C.cleanImageElement;
						}
					} else {
						if (c == 'image') C.imageElement = b.document.createElement('img');
						else {
							C.imageElement = b.document.createElement('input');
							C.imageElement.setAttribute('type', 'image');
						}
						C.imageElement.setAttribute('alt', '');
					}
					if (!C.linkEditMode) C.linkElement = b.document.createElement('a');
					C.commitContent(d, C.imageElement);
					C.commitContent(e, C.linkElement);
					if (!C.imageElement.getAttribute('style')) C.imageElement.removeAttribute('style');
					if (!C.imageEditMode) {
						if (C.addLink) {
							if (!C.linkEditMode) {
								b.insertElement(C.linkElement);
								C.linkElement.append(C.imageElement, false);
							} else b.insertElement(C.imageElement);
						} else b.insertElement(C.imageElement);
					} else if (!C.linkEditMode && C.addLink) {
						b.insertElement(C.linkElement);
						C.imageElement.appendTo(C.linkElement);
					} else if (C.linkEditMode && !C.addLink) {
						b.getSelection().selectElement(C.linkElement);
						b.insertElement(C.imageElement);
					}
				},
				onLoad: function() {
					var C = this;
					if (c != 'image') C.hidePage('Link');
					var B = C._.element.getDocument();
					if (C.getContentElement('info', 'ratioLock')) {
						C.addFocusable(B.getById(x), 5);
						C.addFocusable(B.getById(w), 5);
					}
					C.commitContent = m;
				},
				onHide: function() {
					var B = this;
					if (B.preview) B.commitContent(g, B.preview);
					if (B.originalElement) {
						B.originalElement.removeListener('load', t);
						B.originalElement.removeListener('error', u);
						B.originalElement.removeListener('abort', u);
						B.originalElement.remove();
						B.originalElement = false;
					}
					delete B.imageElement;
				},
				contents: [{
					id: 'info',
					label: b.lang.image.infoTab,
					accessKey: 'I',
					elements: [{
						type: 'vbox',
						padding: 0,
						children: [{
							type: 'hbox',
							widths: ['280px', '110px'],
							align: 'right',
							children: [{
								id: 'txtUrl',
								type: 'text',
								label: b.lang.common.url,
								required: true,
								onChange: function() {
									var B = this.getDialog(),
										C = this.getValue();
									if (C.length > 0) {
										B = this.getDialog();
										var D = B.originalElement;
										B.preview.removeStyle('display');
										D.setCustomData('isReady', 'false');
										var E = CKEDITOR.document.getById(y);
										if (E) E.setStyle('display', '');
										D.on('load', t, B);
										D.on('error', u, B);
										D.on('abort', u, B);
										D.setAttribute('src', C);
										s.setAttribute('src', C);
										B.preview.setAttribute('src', s.$.src);
										l(B);
									} else if (B.preview) {
										B.preview.removeAttribute('src');
										B.preview.setStyle('display', 'none');
									}
								},
								setup: function(B, C) {
									if (B == d) {
										var D = C.data('cke-saved-src') || C.getAttribute('src'),
											E = this;
										this.getDialog().dontResetSize = true;
										E.setValue(D);
										E.setInitValue();
									}
								},
								commit: function(B, C) {
									var D = this;
									if (B == d && (D.getValue() || D.isChanged())) {
										C.data('cke-saved-src', D.getValue());
										C.setAttribute('src', D.getValue());
									} else if (B == g) {
										C.setAttribute('src', '');
										C.removeAttribute('src');
									}
								},
								validate: CKEDITOR.dialog.validate.notEmpty(b.lang.image.urlMissing)
							}, {
								type: 'button',
								id: 'browse',
								style: 'display:inline-block;margin-top:10px;',
								align: 'center',
								label: b.lang.common.browseServer,
								hidden: true,
								filebrowser: 'info:txtUrl'
							}]
						}]
					}, {
						id: 'txtAlt',
						type: 'text',
						label: b.lang.image.alt,
						accessKey: 'T',
						'default': '',
						onChange: function() {
							l(this.getDialog());
						},
						setup: function(B, C) {
							if (B == d) this.setValue(C.getAttribute('alt'));
						},
						commit: function(B, C) {
							var D = this;
							if (B == d) {
								if (D.getValue() || D.isChanged()) C.setAttribute('alt', D.getValue());
							} else if (B == f) C.setAttribute('alt', D.getValue());
							else if (B == g) C.removeAttribute('alt');
						}
					}, {
						type: 'hbox',
						children: [{
							id: 'basic',
							type: 'vbox',
							children: [{
								type: 'hbox',
								widths: ['50%', '50%'],
								children: [{
									type: 'vbox',
									padding: 1,
									children: [{
										type: 'text',
										width: '40px',
										id: 'txtWidth',
										label: b.lang.common.width,
										onKeyUp: k,
										onChange: function() {
											o.call(this, 'advanced:txtdlgGenStyle');
										},
										validate: function() {
											var B = this.getValue().match(i),
												C = !! (B && parseInt(B[1], 10) !== 0);
											if (!C) alert(b.lang.common.invalidWidth);
											return C;
										},
										setup: r,
										commit: function(B, C, D) {
											var E = this.getValue();
											if (B == d) {
												if (E) C.setStyle('width', CKEDITOR.tools.cssLength(E));
												else C.removeStyle('width');
												!D && C.removeAttribute('width');
											} else if (B == f) {
												var F = E.match(h);
												if (!F) {
													var G = this.getDialog().originalElement;
													if (G.getCustomData('isReady') == 'true') C.setStyle('width', G.$.width + 'px');
												} else C.setStyle('width', CKEDITOR.tools.cssLength(E));
											} else if (B == g) {
												C.removeAttribute('width');
												C.removeStyle('width');
											}
										}
									}, {
										type: 'text',
										id: 'txtHeight',
										width: '40px',
										label: b.lang.common.height,
										onKeyUp: k,
										onChange: function() {
											o.call(this, 'advanced:txtdlgGenStyle');
										},
										validate: function() {
											var B = this.getValue().match(i),
												C = !! (B && parseInt(B[1], 10) !== 0);
											if (!C) alert(b.lang.common.invalidHeight);
											return C;
										},
										setup: r,
										commit: function(B, C, D) {
											var E = this.getValue();
											if (B == d) {
												if (E) C.setStyle('height', CKEDITOR.tools.cssLength(E));
												else C.removeStyle('height');
												!D && C.removeAttribute('height');
											} else if (B == f) {
												var F = E.match(h);
												if (!F) {
													var G = this.getDialog().originalElement;
													if (G.getCustomData('isReady') == 'true') C.setStyle('height', G.$.height + 'px');
												} else C.setStyle('height', CKEDITOR.tools.cssLength(E));
											} else if (B == g) {
												C.removeAttribute('height');
												C.removeStyle('height');
											}
										}
									}]
								}, {
									id: 'ratioLock',
									type: 'html',
									style: 'margin-top:30px;width:40px;height:40px;',
									onLoad: function() {
										var B = CKEDITOR.document.getById(x),
											C = CKEDITOR.document.getById(w);
										if (B) {
											B.on('click', function(D) {
												q(this);
												D.data && D.data.preventDefault();
											}, this.getDialog());
											B.on('mouseover', function() {
												this.addClass('cke_btn_over');
											}, B);
											B.on('mouseout', function() {
												this.removeClass('cke_btn_over');
											}, B);
										}
										if (C) {
											C.on('click', function(D) {
												var I = this;
												var E = p(I),
													F = I.originalElement,
													G = I.getValueOf('info', 'txtWidth');
												if (F.getCustomData('isReady') == 'true' && G) {
													var H = F.$.height / F.$.width * G;
													if (!isNaN(H)) {
														I.setValueOf('info', 'txtHeight', Math.round(H));
														l(I);
													}
												}
												D.data && D.data.preventDefault();
											}, this.getDialog());
											C.on('mouseover', function() {
												this.addClass('cke_btn_over');
											}, C);
											C.on('mouseout', function() {
												this.removeClass('cke_btn_over');
											}, C);
										}
									},
									html: '<div><a href="javascript:void(0)" tabindex="-1" title="' + b.lang.image.lockRatio + '" class="cke_btn_locked" id="' + w + '" role="checkbox"><span class="cke_icon"></span><span class="cke_label">' + b.lang.image.lockRatio + '</span></a>' + '<a href="javascript:void(0)" tabindex="-1" title="' + b.lang.image.resetSize + '" class="cke_btn_reset" id="' + x + '" role="button"><span class="cke_label">' + b.lang.image.resetSize + '</span></a>' + '</div>'
								}]
							}, {
								type: 'vbox',
								padding: 1,
								children: [{
									type: 'text',
									id: 'txtBorder',
									width: '60px',
									label: b.lang.image.border,
									'default': '',
									onKeyUp: function() {
										l(this.getDialog());
									},
									onChange: function() {
										o.call(this, 'advanced:txtdlgGenStyle');
									},
									validate: CKEDITOR.dialog.validate.integer(b.lang.image.validateBorder),
									setup: function(B, C) {
										if (B == d) {
											var D, E = C.getStyle('border-width');
											E = E && E.match(/^(\d+px)(?: \1 \1 \1)?$/);
											D = E && parseInt(E[1], 10);
											isNaN(parseInt(D, 10)) && (D = C.getAttribute('border'));
											this.setValue(D);
										}
									},
									commit: function(B, C, D) {
										var E = parseInt(this.getValue(), 10);
										if (B == d || B == f) {
											if (!isNaN(E)) {
												C.setStyle('border-width', CKEDITOR.tools.cssLength(E));
												C.setStyle('border-style', 'solid');
											} else if (!E && this.isChanged()) C.removeStyle('border');
											if (!D && B == d) C.removeAttribute('border');
										} else if (B == g) {
											C.removeAttribute('border');
											C.removeStyle('border-width');
											C.removeStyle('border-style');
											C.removeStyle('border-color');
										}
									}
								}, {
									type: 'text',
									id: 'txtHSpace',
									width: '60px',
									label: b.lang.image.hSpace,
									'default': '',
									onKeyUp: function() {
										l(this.getDialog());
									},
									onChange: function() {
										o.call(this, 'advanced:txtdlgGenStyle');
									},
									validate: CKEDITOR.dialog.validate.integer(b.lang.image.validateHSpace),
									setup: function(B, C) {
										if (B == d) {
											var D, E, F, G = C.getStyle('margin-left'),
												H = C.getStyle('margin-right');
											G = G && G.match(j);
											H = H && H.match(j);
											E = parseInt(G, 10);
											F = parseInt(H, 10);
											D = E == F && E;
											isNaN(parseInt(D, 10)) && (D = C.getAttribute('hspace'));
											this.setValue(D);
										}
									},
									commit: function(B, C, D) {
										var E = parseInt(this.getValue(), 10);
										if (B == d || B == f) {
											if (!isNaN(E)) {
												C.setStyle('margin-left', CKEDITOR.tools.cssLength(E));
												C.setStyle('margin-right', CKEDITOR.tools.cssLength(E));
											} else if (!E && this.isChanged()) {
												C.removeStyle('margin-left');
												C.removeStyle('margin-right');
											}
											if (!D && B == d) C.removeAttribute('hspace');
										} else if (B == g) {
											C.removeAttribute('hspace');
											C.removeStyle('margin-left');
											C.removeStyle('margin-right');
										}
									}
								}, {
									type: 'text',
									id: 'txtVSpace',
									width: '60px',
									label: b.lang.image.vSpace,
									'default': '',
									onKeyUp: function() {
										l(this.getDialog());
									},
									onChange: function() {
										o.call(this, 'advanced:txtdlgGenStyle');
									},
									validate: CKEDITOR.dialog.validate.integer(b.lang.image.validateVSpace),
									setup: function(B, C) {
										if (B == d) {
											var D, E, F, G = C.getStyle('margin-top'),
												H = C.getStyle('margin-bottom');
											G = G && G.match(j);
											H = H && H.match(j);
											E = parseInt(G, 10);
											F = parseInt(H, 10);
											D = E == F && E;
											isNaN(parseInt(D, 10)) && (D = C.getAttribute('vspace'));
											this.setValue(D);
										}
									},
									commit: function(B, C, D) {
										var E = parseInt(this.getValue(), 10);
										if (B == d || B == f) {
											if (!isNaN(E)) {
												C.setStyle('margin-top', CKEDITOR.tools.cssLength(E));
												C.setStyle('margin-bottom', CKEDITOR.tools.cssLength(E));
											} else if (!E && this.isChanged()) {
												C.removeStyle('margin-top');
												C.removeStyle('margin-bottom');
											}
											if (!D && B == d) C.removeAttribute('vspace');
										} else if (B == g) {
											C.removeAttribute('vspace');
											C.removeStyle('margin-top');
											C.removeStyle('margin-bottom');
										}
									}
								}, {
									id: 'cmbAlign',
									type: 'select',
									widths: ['35%', '65%'],
									style: 'width:90px',
									label: b.lang.common.align,
									'default': '',
									items: [
										[b.lang.common.notSet, ''],
										[b.lang.common.alignLeft, 'left'],
										[b.lang.common.alignRight, 'right']
									],
									onChange: function() {
										l(this.getDialog());
										o.call(this, 'advanced:txtdlgGenStyle');
									},
									setup: function(B, C) {
										if (B == d) {
											var D = C.getStyle('float');
											switch (D) {
											case 'inherit':
											case 'none':
												D = '';
											}!D && (D = (C.getAttribute('align') || '').toLowerCase());
											this.setValue(D);
										}
									},
									commit: function(B, C, D) {
										var E = this.getValue();
										if (B == d || B == f) {
											if (E) C.setStyle('float', E);
											else C.removeStyle('float');
											if (!D && B == d) {
												E = (C.getAttribute('align') || '').toLowerCase();
												switch (E) {
												case 'left':
												case 'right':
													C.removeAttribute('align');
												}
											}
										} else if (B == g) C.removeStyle('float');
									}
								}]
							}]
						}, {
							type: 'vbox',
							height: '250px',
							children: [{
								type: 'html',
								id: 'htmlPreview',
								style: 'width:95%;',
								html: '<div>' + CKEDITOR.tools.htmlEncode(b.lang.common.preview) + '<br>' + '<div id="' + y + '" class="ImagePreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div>' + '<div class="ImagePreviewBox"><table><tr><td>' + '<a href="javascript:void(0)" target="_blank" onclick="return false;" id="' + z + '">' + '<img id="' + A + '" alt="" /></a>' + (b.config.image_previewText || 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.') + '</td></tr></table></div></div>'
							}]
						}]
					}]
				}, {
					id: 'Link',
					label: b.lang.link.title,
					padding: 0,
					elements: [{
						id: 'txtUrl',
						type: 'text',
						label: b.lang.common.url,
						style: 'width: 100%',
						'default': '',
						setup: function(B, C) {
							if (B == e) {
								var D = C.data('cke-saved-href');
								if (!D) D = C.getAttribute('href');
								this.setValue(D);
							}
						},
						commit: function(B, C) {
							var E = this;
							if (B == e) if (E.getValue() || E.isChanged()) {
								var D = decodeURI(E.getValue());
								C.data('cke-saved-href', D);
								C.setAttribute('href', D);
								if (E.getValue() || !b.config.image_removeLinkByEmptyURL) E.getDialog().addLink = true;
							}
						}
					}, {
						type: 'button',
						id: 'browse',
						filebrowser: {
							action: 'Browse',
							target: 'Link:txtUrl',
							url: b.config.filebrowserImageBrowseLinkUrl
						},
						style: 'float:right',
						hidden: true,
						label: b.lang.common.browseServer
					}, {
						id: 'cmbTarget',
						type: 'select',
						label: b.lang.common.target,
						'default': '',
						items: [
							[b.lang.common.notSet, ''],
							[b.lang.common.targetNew, '_blank'],
							[b.lang.common.targetTop, '_top'],
							[b.lang.common.targetSelf, '_self'],
							[b.lang.common.targetParent, '_parent']
						],
						setup: function(B, C) {
							if (B == e) this.setValue(C.getAttribute('target') || '');
						},
						commit: function(B, C) {
							if (B == e) if (this.getValue() || this.isChanged()) C.setAttribute('target', this.getValue());
						}
					}]
				}, {
					id: 'Upload',
					hidden: true,
					filebrowser: 'uploadButton',
					label: b.lang.image.upload,
					elements: [{
						type: 'file',
						id: 'upload',
						label: b.lang.image.btnUpload,
						style: 'height:40px',
						size: 38
					}, {
						type: 'fileButton',
						id: 'uploadButton',
						filebrowser: 'info:txtUrl',
						label: b.lang.image.btnUpload,
						'for': ['Upload', 'upload']
					}]
				}, {
					id: 'advanced',
					label: b.lang.common.advancedTab,
					elements: [{
						type: 'hbox',
						widths: ['50%', '25%', '25%'],
						children: [{
							type: 'text',
							id: 'linkId',
							label: b.lang.common.id,
							setup: function(B, C) {
								if (B == d) this.setValue(C.getAttribute('id'));
							},
							commit: function(B, C) {
								if (B == d) if (this.getValue() || this.isChanged()) C.setAttribute('id', this.getValue());
							}
						}, {
							id: 'cmbLangDir',
							type: 'select',
							style: 'width : 100px;',
							label: b.lang.common.langDir,
							'default': '',
							items: [
								[b.lang.common.notSet, ''],
								[b.lang.common.langDirLtr, 'ltr'],
								[b.lang.common.langDirRtl, 'rtl']
							],
							setup: function(B, C) {
								if (B == d) this.setValue(C.getAttribute('dir'));
							},
							commit: function(B, C) {
								if (B == d) if (this.getValue() || this.isChanged()) C.setAttribute('dir', this.getValue());
							}
						}, {
							type: 'text',
							id: 'txtLangCode',
							label: b.lang.common.langCode,
							'default': '',
							setup: function(B, C) {
								if (B == d) this.setValue(C.getAttribute('lang'));
							},
							commit: function(B, C) {
								if (B == d) if (this.getValue() || this.isChanged()) C.setAttribute('lang', this.getValue());
							}
						}]
					}, {
						type: 'text',
						id: 'txtGenLongDescr',
						label: b.lang.common.longDescr,
						setup: function(B, C) {
							if (B == d) this.setValue(C.getAttribute('longDesc'));
						},
						commit: function(B, C) {
							if (B == d) if (this.getValue() || this.isChanged()) C.setAttribute('longDesc', this.getValue());
						}
					}, {
						type: 'hbox',
						widths: ['50%', '50%'],
						children: [{
							type: 'text',
							id: 'txtGenClass',
							label: b.lang.common.cssClass,
							'default': '',
							setup: function(B, C) {
								if (B == d) this.setValue(C.getAttribute('class'));
							},
							commit: function(B, C) {
								if (B == d) if (this.getValue() || this.isChanged()) C.setAttribute('class', this.getValue());
							}
						}, {
							type: 'text',
							id: 'txtGenTitle',
							label: b.lang.common.advisoryTitle,
							'default': '',
							onChange: function() {
								l(this.getDialog());
							},
							setup: function(B, C) {
								if (B == d) this.setValue(C.getAttribute('title'));
							},
							commit: function(B, C) {
								var D = this;
								if (B == d) {
									if (D.getValue() || D.isChanged()) C.setAttribute('title', D.getValue());
								} else if (B == f) C.setAttribute('title', D.getValue());
								else if (B == g) C.removeAttribute('title');
							}
						}]
					}, {
						type: 'text',
						id: 'txtdlgGenStyle',
						label: b.lang.common.cssStyle,
						validate: CKEDITOR.dialog.validate.inlineStyle(b.lang.common.invalidInlineStyle),
						'default': '',
						setup: function(B, C) {
							if (B == d) {
								var D = C.getAttribute('style');
								if (!D && C.$.style.cssText) D = C.$.style.cssText;
								this.setValue(D);
								var E = C.$.style.height,
									F = C.$.style.width,
									G = (E ? E : '').match(h),
									H = (F ? F : '').match(h);
/*
								this.attributesInStyle = {
									height: !! G,
									width: !! H
								};
*/
							}
						},
						onChange: function() {
							//o.call(this, ['info:cmbFloat', 'info:cmbAlign', 'info:txtVSpace', 'info:txtHSpace', 'info:txtBorder', 'info:txtWidth', 'info:txtHeight']);
							o.call(this, ['info:cmbFloat', 'info:cmbAlign', 'info:txtVSpace', 'info:txtHSpace', 'info:txtBorder']);
							l(this);
						},
						commit: function(B, C) {
							if (B == d && (this.getValue() || this.isChanged())) C.setAttribute('style', this.getValue());
						}
					}]
				}]
			};
		};
	CKEDITOR.dialog.add('image', function(b) {
		return a(b, 'image');
	});
	CKEDITOR.dialog.add('imagebutton', function(b) {
		return a(b, 'imagebutton');
	});
})();