/*

Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.

For licensing, see LICENSE.html or http://ckeditor.com/license

*/

CKEDITOR.dialog.add( 'radio', function( editor )

{

	return {

		title : editor.lang.checkboxAndRadio.radioTitle,

		minWidth : 350,

		minHeight : 140,

		onShow : function()

		{

			delete this.radioButton;



			var element = this.getParentEditor().getSelection().getSelectedElement();

			if ( element && element.getName() == 'input' && element.getAttribute( 'type' ) == 'radio' )

			{

				this.radioButton = element;

				this.setupContent( element );

			}

		},

		onOk : function()

		{

			var editor,

				element = this.radioButton,

				isInsertMode = !element;



			if ( isInsertMode )

			{

				editor = this.getParentEditor();

				element = editor.document.createElement( 'input' );

				element.setAttribute( 'type', 'radio' );

			}



			if ( isInsertMode )

				editor.insertElement( element );

			this.commitContent( { element : element } );

		},

		contents : [

			{

				id : 'info',

				label : editor.lang.checkboxAndRadio.radioTitle,

				title : editor.lang.checkboxAndRadio.radioTitle,

				elements : [

					{

						id : 'name',

						type : 'text',

						label : editor.lang.common.name,

						'default' : '',

						accessKey : 'N',

						setup : function( element )

						{

							this.setValue(

									element.data( 'cke-saved-name' ) ||

									element.getAttribute( 'name' ) ||

									'' );

						},

						commit : function( data )

						{

							var element = data.element;



							if ( this.getValue() )

								element.data( 'cke-saved-name', this.getValue() );

							else

							{

								element.data( 'cke-saved-name', false );

								element.removeAttribute( 'name' );

							}

						}

					},

					{

						id : 'value',

						type : 'text',

						label : editor.lang.checkboxAndRadio.value,

						'default' : '',

						accessKey : 'V',

						setup : function( element )

						{

							this.setValue( element.getAttribute( 'value' ) || '' );

						},

						commit : function( data )

						{

							var element = data.element;



							if ( this.getValue() )

								element.setAttribute( 'value', this.getValue() );

							else

								element.removeAttribute( 'value' );

						}

					},

					{

						id : 'checked',

						type : 'checkbox',

						label : editor.lang.checkboxAndRadio.selected,

						'default' : '',

						accessKey : 'S',

						value : "checked",

						setup : function( element )

						{

							this.setValue( element.getAttribute( 'checked' ) );

						},

						commit : function( data )

						{

							var element = data.element;



							if ( !( CKEDITOR.env.ie || CKEDITOR.env.opera ) )

							{

								if ( this.getValue() )

									element.setAttribute( 'checked', 'checked' );

								else

									element.removeAttribute( 'checked' );

							}

							else

							{

								var isElementChecked = element.getAttribute( 'checked' );

								var isChecked = !!this.getValue();



								if ( isElementChecked != isChecked )

								{

									var replace = CKEDITOR.dom.element.createFromHtml( '<input type="radio"'

											+ ( isChecked ? ' checked="checked"' : '' )

											+ '></input>', editor.document );

									element.copyAttributes( replace, { type : 1, checked : 1 } );

									replace.replace( element );

									editor.getSelection().selectElement( replace );

									data.element = replace;

								}

							}

						}

					}

				]

			}

		]

	};

});

