CKEDITOR.plugins.add( 'glow',
{
	init: function( editor )
	{
		editor.addCommand( 'glowCommand', new CKEDITOR.dialogCommand( 'glowDialog' ) );
		editor.ui.addButton( 'glow',
			{
				label: 'لإدراج نص بوضع إشعاعي',
				command: 'glowCommand',
				icon: this.path + 'glow.gif'
			}
		);
		
		function getDialogValue( dialogName, callback )
		{
			var onOk = function()
			{
				releaseHandlers( this );
				callback( this, this._.parentDialog );
				this._.parentDialog.changeFocus( true );
			};
			var onCancel = function()
			{
				releaseHandlers( this );
				this._.parentDialog.changeFocus();
			};
			var releaseHandlers = function( dialog )
			{
				dialog.removeListener( 'ok', onOk );
				dialog.removeListener( 'cancel', onCancel );
			};
			var bindToDialog = function( dialog )
			{
				dialog.on( 'ok', onOk );
				dialog.on( 'cancel', onCancel );
			};
			editor.execCommand( dialogName );
			if ( editor._.storedDialogs.colordialog )
				bindToDialog( editor._.storedDialogs.colordialog );
			else
			{
				CKEDITOR.on( 'dialogDefinition', function( e )
				{
					if ( e.data.name != dialogName )
						return;

					var definition = e.data.definition;

					e.removeListener();
					definition.onLoad = CKEDITOR.tools.override( definition.onLoad, function( orginal )
					{
						return function()
						{
							bindToDialog( this );
							definition.onLoad = orginal;
							if ( typeof orginal == 'function' )
								orginal.call( this );
						};
					} );
				});
			}
		}

		var data = {};
		CKEDITOR.dialog.add( 'glowDialog', function( editor )
		{
			return {
				title : 'لإدراج نص بوضع إشعاعي',
				width : 400,
				height : 'auto',
				onShow : function (){
					if  (editor.getSelection().getSelectedText().length < 1) {
						alert('رجاء تحديد النص اولا');
							if ( this.fire( 'cancel', { hide : true } ).hide !== false ){
								this.hide();
								evt.data.preventDefault();
							}
						return;
					} else {
						data.selected = editor.getSelection().getSelectedText();
					}
				},
				contents :
				[
					{
						id : 'glow',
						label : 'اختيار اللون',
						elements :
						[
							{
								type : 'text',
								id : 'color',
								label : 'اللون',
								default:'#ff0000',
								style: 'width:100px;float:right',
								validate : CKEDITOR.dialog.validate.notEmpty( 'رجاء اختيار اللون' ),
								required : false,
								onClick : function()
								{
									var self = this;
									getDialogValue( 'colordialog', function( colorDialog )
									{
										self.getDialog().getContentElement( 'glow', 'color' ).setValue(
											colorDialog.getContentElement( 'picker', 'selectedColor' ).getValue()
										);
									} );
								},
								commit : function( data )
								{
									data.color = this.getValue();
								}
							},
							{
								type : 'button',
								id : 'buttonId',
								label : 'اختر اللون',
								title : 'اختر اللون',
								onClick : function()
								{
									var self = this;
									getDialogValue( 'colordialog', function( colorDialog )
									{
										self.getDialog().getContentElement( 'glow', 'color' ).setValue(
											colorDialog.getContentElement( 'picker', 'selectedColor' ).getValue()
										);
									} );
								}
							},
							{
								type : 'textarea',
								id : 'text',
								label : 'النص المحدد',
								default:'النص',
								validate : CKEDITOR.dialog.validate.notEmpty( 'لا يمكنك ترك حقل النص فارغ' ),
								required : false,
								onShow : function()
								{
									this.setValue(data.selected);
								},
								commit : function( data )
								{
									data.selected = this.getValue();
								}
							},{
								type: 'html',
								html: '<center>يمكنك ايضا التعديل على النص</center>'
								
							}
						]
					}
				],
				onOk : function( )
				{
					this.commitContent(data);
					editor.insertHtml('[glow=' + data.color + ']' + data.selected + '[/glow]');
				}
			};
		});
	}
});