Index: /CKEditor/trunk/_dev/jslint/lint.conf
===================================================================
--- /CKEditor/trunk/_dev/jslint/lint.conf	(revision 3019)
+++ /CKEditor/trunk/_dev/jslint/lint.conf	(revision 3020)
@@ -123,4 +123,7 @@
 +define console
 +define CKEDITOR
++define alert
++define confirm
++define frames
 
 ### Interactive
Index: /CKEditor/trunk/_dev/releaser/release.bat
===================================================================
--- /CKEditor/trunk/_dev/releaser/release.bat	(revision 3019)
+++ /CKEditor/trunk/_dev/releaser/release.bat	(revision 3020)
Index: /CKEditor/trunk/_samples/api_dialog.html
===================================================================
--- /CKEditor/trunk/_samples/api_dialog.html	(revision 3019)
+++ /CKEditor/trunk/_samples/api_dialog.html	(revision 3020)
@@ -87,5 +87,5 @@
 		}
 	});
-	
+
 	//]]>
 	</script>
@@ -135,5 +135,5 @@
 						CKEDITOR.dialog.add( 'myDialog', href );
 					}
-				
+
 					// Register the command used to open the dialog.
 					editor.addCommand( 'myDialogCmd', new CKEDITOR.dialogCommand( 'myDialog' ) );
Index: /CKEditor/trunk/_source/core/dom/range.js
===================================================================
--- /CKEditor/trunk/_source/core/dom/range.js	(revision 3019)
+++ /CKEditor/trunk/_source/core/dom/range.js	(revision 3020)
@@ -265,9 +265,10 @@
 			endNode = this.endContainer,
 			startOffset = this.startOffset,
-			endOffset = this.endOffset;
+			endOffset = this.endOffset,
+			childCount;
 
 		if ( startNode.type == CKEDITOR.NODE_ELEMENT )
 		{
-			var childCount = startNode.getChildCount();
+			childCount = startNode.getChildCount();
 			if ( childCount > startOffset )
 				startNode = startNode.getChild( startOffset );
@@ -290,5 +291,5 @@
 		if ( endNode.type == CKEDITOR.NODE_ELEMENT )
 		{
-			var childCount = endNode.getChildCount();
+			childCount = endNode.getChildCount();
 			if ( childCount > endOffset )
 				endNode = endNode.getChild( endOffset ).getPreviousSourceNode();
Index: /CKEditor/trunk/_source/core/editor.js
===================================================================
--- /CKEditor/trunk/_source/core/editor.js	(revision 3019)
+++ /CKEditor/trunk/_source/core/editor.js	(revision 3020)
@@ -231,5 +231,5 @@
 				form.on( 'submit', function()
 					{
-						editor.updateElement()
+						editor.updateElement();
 					});
 
Index: /CKEditor/trunk/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 3019)
+++ /CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 3020)
@@ -211,5 +211,5 @@
 						{
 							var isValid = item.validate( this );
-							
+
 							if ( typeof isValid == 'string' )
 							{
@@ -305,5 +305,5 @@
 		this.parts.footer.setHtml( buttonsHtml.join( '' ) );
 
-		for ( var i = 0 ; i < buttons.length ; i++ )
+		for ( i = 0 ; i < buttons.length ; i++ )
 			this._.buttons[ buttons[i].id ] = buttons[i];
 
@@ -392,5 +392,5 @@
 							'top' : y + 'px'
 						});
-			}
+			};
 		})(),
 
@@ -438,5 +438,5 @@
 			// Maintain the dialog ordering and dialog cover.
 			// Also register key handlers if first dialog.
-			if ( CKEDITOR.dialog._.currentTop == null )
+			if ( CKEDITOR.dialog._.currentTop === null )
 			{
 				CKEDITOR.dialog._.currentTop = this;
@@ -480,6 +480,8 @@
 		{
 			for ( var i in this._.contents )
+			{
 				for ( var j in this._.contents[i] )
 					fn( this._.contents[i][j]);
+			}
 			return this;
 		},
@@ -520,5 +522,5 @@
 			return function(){ this.foreach( fn ); return this; };
 		})(),
-		
+
 		setupContent : function()
 		{
@@ -558,15 +560,15 @@
 
 			// Maintain dialog ordering and remove cover if needed.
-			if ( this._.parentDialog == null )
+			if ( !this._.parentDialog )
 				removeCover();
 			else
 			{
 				var parentElement = this._.parentDialog.getElement().getFirst();
-				parentElement.setStyle( 'z-index', parseInt( parentElement.$.style.zIndex ) + Math.floor( this._.editor.config.baseFloatZIndex / 2 ) );
+				parentElement.setStyle( 'z-index', parseInt( parentElement.$.style.zIndex, 10 ) + Math.floor( this._.editor.config.baseFloatZIndex / 2 ) );
 			}
 			CKEDITOR.dialog._.currentTop = this._.parentDialog;
 
 			// Deduct or clear the z-index.
-			if ( this._.parentDialog == null )
+			if ( !this._.parentDialog )
 			{
 				CKEDITOR.dialog._.currentZIndex = null;
@@ -624,5 +626,5 @@
 
 			// If only a single page exist, a different style is used in the central pane.
-			if ( this._.pageCount == 0 )
+			if ( this._.pageCount === 0 )
 				this.parts.c.addClass( 'single_page' );
 			else
@@ -880,5 +882,5 @@
 				this._.dialogDefinitions[name] = dialogDefinition;
 			},
-			
+
 			exists : function( name )
 			{
@@ -1055,5 +1057,5 @@
 
 	// Tool function used to remove an item from an array based on its id.
-	removeById = function( array, id, recurse )
+	var removeById = function( array, id, recurse )
 	{
 		for ( var i = 0, item ; ( item = array[ i ] ) ; i++ )
@@ -1245,5 +1247,5 @@
 		}
 	};
-	
+
 	var initDragAndDrop = function( dialog )
 	{
@@ -1315,5 +1317,5 @@
 				}, dialog );
 	};
-	
+
 	var initResizeHandles = function( dialog )
 	{
@@ -1448,5 +1450,5 @@
 		}
 	};
-	
+
 	var resizeCover;
 
@@ -1462,5 +1464,5 @@
 				'" id="cke_dialog_background_cover">'
 			];
-			
+
 		if ( CKEDITOR.env.ie6Compat )
 		{
@@ -1469,9 +1471,9 @@
 					'progid:DXImageTransform.Microsoft.Alpha(opacity=0)" ></iframe>' );
 		}
-		
+
 		html.push( '</div>' );
 
 		var element = CKEDITOR.dom.element.createFromHtml( html.join( '' ) );
-		
+
 		var resizeFunc = function()
 		{
@@ -1483,5 +1485,5 @@
 					});
 		};
-		
+
 		var scrollFunc = function()
 		{
@@ -1498,5 +1500,5 @@
 				var dialogPos = cursor.getPosition();
 				cursor.move( dialogPos.x, dialogPos.y );
-			} while( cursor = cursor._.parentDialog );
+			} while( ( cursor = cursor._.parentDialog ) );
 		};
 
@@ -1601,5 +1603,5 @@
 					list.splice( j, 1 );
 			}
-			if ( list.length == 0 )
+			if ( list.length === 0 )
 				delete accessKeyProcessors[i];
 		}
@@ -1622,5 +1624,5 @@
 			{
 				return length + ( decimalRegex.test( length ) ? 'px' : '' );
-			}
+			};
 
 		CKEDITOR.ui.dialog =
@@ -1992,5 +1994,7 @@
 				cursor = element,
 				tabId;
-			while ( ( cursor = cursor.getParent() ) && cursor.$.className.search( 'cke_dialog_page_contents' ) == -1 );
+			while ( ( cursor = cursor.getParent() ) && cursor.$.className.search( 'cke_dialog_page_contents' ) == -1 )
+			{ /*jsl:pass*/ }
+
 			tabId = cursor.getAttribute( 'name' );
 
@@ -2038,5 +2042,5 @@
 			var regex = /^on([A-Z]\w+)/,
 				match;
-				
+
 			var registerDomEvent = function( uiElement, dialog, eventName, func )
 			{
@@ -2325,5 +2329,5 @@
 					}
 					return true;
-				}
+				};
 			},
 
@@ -2372,12 +2376,12 @@
 		{
 			var dialogDefinitions = CKEDITOR.dialog._.dialogDefinitions[ dialogName ];
-			
+
 			// If the dialogDefinition is already loaded, open it immediately.
 			if ( typeof dialogDefinitions == 'function' )
 			{
-				var storedDialogs = this._.storedDialogs || 
+				var storedDialogs = this._.storedDialogs ||
 					( this._.storedDialogs = {} );
-				
-				var dialog = storedDialogs[ dialogName ] || 
+
+				var dialog = storedDialogs[ dialogName ] ||
 					( storedDialogs[ dialogName ] = new CKEDITOR.dialog( this, dialogName ) );
 
@@ -2398,4 +2402,6 @@
 					body.setStyle( 'cursor', cursor );
 				} );
+
+			return null;
 		}
 	});
Index: /CKEditor/trunk/_source/plugins/dialogui/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/dialogui/plugin.js	(revision 3019)
+++ /CKEditor/trunk/_source/plugins/dialogui/plugin.js	(revision 3020)
@@ -89,5 +89,5 @@
 		}
 		return def;
-	}
+	};
 
 	CKEDITOR.tools.extend( CKEDITOR.ui.dialog,
@@ -279,5 +279,5 @@
 					html.push( '>', CKEDITOR.tools.htmlEncode( me.getDefault() ), '</textarea></div>' );
 					return html.join( '' );
-				}
+				};
 				CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML );
 			},
@@ -357,5 +357,5 @@
 
 				initPrivateObject.call( this, elementDefinition );
-				if ( this.getDefault() == '' )
+				if ( !this.getDefault() )
 					this._['default'] = [ elementDefinition.items[0][1] ] ;
 				if ( elementDefinition.validate )
@@ -571,5 +571,5 @@
 							CKEDITOR.tools.htmlEncode( item[1] !== undefined ? item[1] : item[0] ), '" /> ',
 							CKEDITOR.tools.htmlEncode( item[0] ) );
-					};
+					}
 
 					_.select = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'select', null, attributes, innerHTML.join( '' ) );
@@ -721,5 +721,5 @@
 
 					htmlList.push( [ theirMatch[1], ' ', myMatch[1] || '', theirMatch[2] ].join( '' ) );
-				}
+				};
 			})()
 		}, true );
@@ -1021,11 +1021,11 @@
 										{
 											evt = evt.data.$;
-											if ( evt.propertyName != 'checked' )
-												return;
-											this.fire( 'change', { value : element.$.checked } );
+											if ( evt.propertyName == 'checked' )
+												this.fire( 'change', { value : element.$.checked } );
 										}, this );
 								}, this );
 							this.on( 'change', func );
 						}
+						return null;
 					}
 				}
@@ -1108,7 +1108,6 @@
 											{
 												evt = evt.data.$;
-												if ( evt.propertyName != 'checked' || !this.$.checked )
-													return;
-												me.fire( 'change', { value : this.getAttribute( 'value' ) } );
+												if ( evt.propertyName == 'checked' && this.$.checked )
+													me.fire( 'change', { value : this.getAttribute( 'value' ) } );
 											} );
 									}
@@ -1116,4 +1115,5 @@
 							this.on( 'change', func );
 						}
+						return null;
 					}
 				}
Index: /CKEditor/trunk/_source/plugins/horizontalrule/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/horizontalrule/plugin.js	(revision 3019)
+++ /CKEditor/trunk/_source/plugins/horizontalrule/plugin.js	(revision 3020)
@@ -17,5 +17,5 @@
 		}
 	};
-	
+
 	var pluginName = 'horizontalrule';
 
Index: /CKEditor/trunk/_source/plugins/newpage/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/newpage/plugin.js	(revision 3019)
+++ /CKEditor/trunk/_source/plugins/newpage/plugin.js	(revision 3020)
@@ -20,5 +20,5 @@
 				}
 			});
-			
+
 		editor.ui.addButton( 'NewPage',
 			{
Index: /CKEditor/trunk/_source/plugins/selection/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/selection/plugin.js	(revision 3019)
+++ /CKEditor/trunk/_source/plugins/selection/plugin.js	(revision 3020)
@@ -383,9 +383,10 @@
 						var sel = this.getNative(),
 							nativeRange = sel.createRange(),
-							type = this.getType();
+							type = this.getType(),
+							range;
 
 						if ( type == CKEDITOR.SELECTION_TEXT )
 						{
-							var range = new CKEDITOR.dom.range( this.document );
+							range = new CKEDITOR.dom.range( this.document );
 
 							var boundaryInfo = getBoundaryInformation( nativeRange, true );
@@ -405,7 +406,10 @@
 								var element = nativeRange.item( i ),
 									parentElement = element.parentNode,
-									j = 0,
-									range = new CKEDITOR.dom.range( this.document );
-								for (; j < parentElement.childNodes.length && parentElement.childNodes[j] != element ; j++ );
+									j = 0;
+
+								range = new CKEDITOR.dom.range( this.document );
+
+								for (; j < parentElement.childNodes.length && parentElement.childNodes[j] != element ; j++ )
+								{ /*jsl:pass*/ }
 
 								range.setStart( new CKEDITOR.dom.node( parentElement ), j );
@@ -497,5 +501,5 @@
 					if ( CKEDITOR.env.ie )
 					{
-						var range = sel.createRange();
+						range = sel.createRange();
 						range.collapse( true );
 
Index: /CKEditor/trunk/_source/plugins/smiley/dialogs/smiley.js
===================================================================
--- /CKEditor/trunk/_source/plugins/smiley/dialogs/smiley.js	(revision 3019)
+++ /CKEditor/trunk/_source/plugins/smiley/dialogs/smiley.js	(revision 3020)
@@ -16,8 +16,8 @@
 	for ( i = 0 ; i < images.length ; i++ )
 	{
-		if ( i % columns == 0 )
+		if ( i % columns === 0 )
 			html.push( '<tr>' );
 
-		html.push( 
+		html.push(
 			'<td class="dark_background hand centered" style="vertical-align: middle;">' +
 				'<img border="0" class="hand" title="', config.smiley_descriptions[i], '"' +
@@ -56,8 +56,8 @@
 
 			this.getDialog().restoreSelection();
-			
+
 			var src = target.getAttribute( 'src' ),
 				title = target.getAttribute( 'title' );
-			
+
 			var img = editor.document.createElement( 'img',
 				{
@@ -70,7 +70,7 @@
 					}
 				});
-			
+
 			editor.insertElement( img );
-			
+
 			this.getDialog().hide();
 		},
Index: /CKEditor/trunk/_source/plugins/sourcearea/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/sourcearea/plugin.js	(revision 3019)
+++ /CKEditor/trunk/_source/plugins/sourcearea/plugin.js	(revision 3020)
@@ -102,5 +102,5 @@
 
 		editor.addCommand( 'source', sourcearea.commands.source );
-		
+
 		if ( editor.ui.addButton )
 		{
Index: /CKEditor/trunk/_source/plugins/specialchar/dialogs/specialchar.js
===================================================================
--- /CKEditor/trunk/_source/plugins/specialchar/dialogs/specialchar.js	(revision 3019)
+++ /CKEditor/trunk/_source/plugins/specialchar/dialogs/specialchar.js	(revision 3020)
@@ -47,5 +47,5 @@
 			var columns = this.definition.charColumns,
 				chars = this.definition.chars;
-		
+
 			var html = [ '<table style="width: 320px; height: 100%; border-collapse: separate;" align="center" cellspacing="2" cellpadding="2" border="0">' ];
 
@@ -54,10 +54,10 @@
 			{
 				html.push( '<tr>' ) ;
-				
+
 				for( var j = 0 ; j < columns ; j++, i++ )
 				{
 					if ( chars[ i ] )
 					{
-						html.push( 
+						html.push(
 							'<td width="1%"' +
 							' title="', chars[i].replace( /&/g, '&amp;' ), '"' +
@@ -68,5 +68,5 @@
 					else
 						html.push( '<td class="DarkBackground">&nbsp;' );
-					
+
 					html.push( '</td>' );
 				}
@@ -136,8 +136,10 @@
 											var targetName = target.getName();
 											var editor = this.getDialog().getParentEditor();
+											var value;
+
 											if ( targetName == 'td' )
 											{
 												target = target.$;
-												if ( value = target.getAttribute( 'value' ) )
+												if ( ( value = target.getAttribute( 'value' ) ) )
 												{
 													this.getDialog().restoreSelection();
Index: /CKEditor/trunk/_source/plugins/specialchar/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/specialchar/plugin.js	(revision 3019)
+++ /CKEditor/trunk/_source/plugins/specialchar/plugin.js	(revision 3020)
@@ -13,5 +13,5 @@
 	{
 		var pluginName = 'specialchar';
-	
+
 		// Register the dialog.
 		CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/specialchar.js' );
@@ -19,5 +19,5 @@
 		// Register the command.
 		editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName ) );
-		
+
 		// Register the toolbar button.
 		editor.ui.addButton( 'SpecialChar',
Index: /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 3019)
+++ /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 3020)
@@ -84,5 +84,5 @@
 		if ( this.mode == 'wysiwyg' )
 		{
-			var element = evt.data;
+			var element = evt.data,
 				isBlock = CKEDITOR.dtd.$block[ element.getName() ];
 
@@ -282,5 +282,5 @@
 							{
 								isLoadingData = true;
-								
+
 								// Get the HTML version of the data.
 								if ( editor.dataProcessor )
@@ -348,5 +348,5 @@
 							{
 								var data = iframe.$.contentWindow.document.body;
-								
+
 								if ( editor.dataProcessor )
 									data = editor.dataProcessor.toDataFormat( new CKEDITOR.dom.element( data ) );
