Index: /FCKeditor/branches/developers/alfonsoml/_test/automated/tests/fcktools.html
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/_test/automated/tests/fcktools.html	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/_test/automated/tests/fcktools.html	(revision 52)
@@ -8,4 +8,5 @@
 	<script type="text/javascript">
 
+FCKScriptLoader._FCKeditorPath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_test')) ;
 FCKScriptLoader.Load( 'FCKTools' ) ;
 
Index: /FCKeditor/branches/developers/alfonsoml/_test/automated/tests/fckw3crange.html
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/_test/automated/tests/fckw3crange.html	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/_test/automated/tests/fckw3crange.html	(revision 52)
@@ -8,4 +8,5 @@
 	<script type="text/javascript">
 
+FCKScriptLoader._FCKeditorPath = document.location.pathname.substring(0,document.location.pathname.lastIndexOf('_test')) ;
 FCKScriptLoader.Load( 'FCKW3CRange' ) ;
 
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/classes/fckpanel.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/classes/fckpanel.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/classes/fckpanel.js	(revision 52)
@@ -196,5 +196,6 @@
 	this._IsOpened = true ;
 
-	FCKTools.RunFunction( this.OnShow, this ) ;
+	if ( typeof( this.OnShow ) == 'function' )
+		FCKTools.RunFunction( this.OnShow, this ) ;
 }
 
@@ -221,5 +222,5 @@
 			this.ParentPanel.Unlock() ;
 
-		if ( !ignoreOnHide )
+		if ( !ignoreOnHide && typeof( this.OnHide ) == 'function' )
 			FCKTools.RunFunction( this.OnHide, this ) ;
 	}
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/classes/fcktoolbarbuttonui.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/classes/fcktoolbarbuttonui.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/classes/fcktoolbarbuttonui.js	(revision 52)
@@ -143,5 +143,5 @@
 			e.onmouseout	= null ;
 			e.onclick		= null ;
-			bEnableEvents = false ;
+
 			break ;
 	}
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/classes/fcktoolbarstylecombo.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/classes/fcktoolbarstylecombo.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/classes/fcktoolbarstylecombo.js	(revision 52)
@@ -31,4 +31,11 @@
 	FCKTools.AppendStyleSheet( oTargetDoc, FCKConfig.ToolbarComboPreviewCSS ) ;
 	oTargetDoc.body.className += ' ForceBaseFont' ;
+
+	// Add ID and Class to the body
+	if ( FCKConfig.BodyId && FCKConfig.BodyId.length > 0 )
+		oTargetDoc.body.id = FCKConfig.BodyId ;
+	if ( FCKConfig.BodyClass && FCKConfig.BodyClass.length > 0 )
+		oTargetDoc.body.className += ' ' + FCKConfig.BodyClass ;
+
 
 	// For some reason Gecko is blocking inside the "RefreshVisibleItems" function.
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/commandclasses/fckfitwindow.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/commandclasses/fckfitwindow.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/commandclasses/fckfitwindow.js	(revision 52)
@@ -37,5 +37,6 @@
 		// Save and reset the styles for the entire node tree. They could interfere in the result.
 		var eParent = eEditorFrame ;
-		while( eParent = eParent.parentNode )
+		// The extra () is to avoid a warning with strict error checking. This is ok.
+		while( (eParent = eParent.parentNode) )
 		{
 			if ( eParent.nodeType == 1 )
@@ -99,5 +100,6 @@
 		// Restore the CSS position for the entire node tree.
 		var eParent = eEditorFrame ;
-		while( eParent = eParent.parentNode )
+		// The extra () is to avoid a warning with strict error checking. This is ok.
+		while( (eParent = eParent.parentNode) )
 		{
 			if ( eParent._fckSavedStyles )
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/fckeditorapi.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/fckeditorapi.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/fckeditorapi.js	(revision 52)
@@ -68,5 +68,5 @@
 						'var aQueue = this.Functions;' +
 						'var i = 0, fFunc;' +
-						'while( fFunc = aQueue[ i ] )' +
+						'while( (fFunc = aQueue[ i ]) )' +
 						'{' +
 							'if ( fFunc == f )' +
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fck_1.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fck_1.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fck_1.js	(revision 52)
@@ -297,6 +297,13 @@
 
 			sHtml += FCK.TempBaseTag ;
-			sHtml += '</head><body>' ;
-			
+
+			// Add ID and Class to the body
+			var sBodyTag = '<body'
+			if ( FCKConfig.BodyId && FCKConfig.BodyId.length > 0 )
+				sBodyTag += ' id="' + FCKConfig.BodyId + '"' ;
+			if ( FCKConfig.BodyClass && FCKConfig.BodyClass.length > 0 )
+				sBodyTag += ' class="' + FCKConfig.BodyClass + '"' ;
+			sHtml += '<\/head>' + sBodyTag + '>' ;
+
 			if ( FCKBrowserInfo.IsGecko && ( html.length == 0 || FCKRegexLib.EmptyParagraph.test( html ) ) )
 				sHtml += GECKO_BOGUS ;
@@ -377,5 +384,5 @@
 {
 	if ( FCK.Status != FCK_STATUS_COMPLETE )
-		return ;
+		return false ;
 
 	if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG )
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fck_2_gecko.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fck_2_gecko.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fck_2_gecko.js	(revision 52)
@@ -169,3 +169,5 @@
 		}
 	}
+
+	return null ;
 }
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fck_2_ie.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fck_2_ie.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fck_2_ie.js	(revision 52)
@@ -121,3 +121,5 @@
 		}
 	}
+
+	return null ;
 }
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fck_contextmenu.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fck_contextmenu.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fck_contextmenu.js	(revision 52)
@@ -265,4 +265,5 @@
 		// @Packager.Remove.End
 	}
+	return null ;
 }
 
@@ -270,10 +271,11 @@
 {
 	// Update the UI.
-	FCK.Events.FireEvent( "OnSelectionChange" ) ;
-
-  	// Get the actual selected tag (if any).
+	FCK.Events.FireEvent( 'OnSelectionChange' ) ;
+
+	// Get the actual selected tag (if any).
 	var oTag, sTagName ;
 	
-	if ( oTag = FCKSelection.GetSelectedElement() )
+	// The extra () is to avoid a warning with strict error checking. This is ok.
+	if ( (oTag = FCKSelection.GetSelectedElement()) )
 		sTagName = oTag.tagName ;
 
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fckdocumentprocessor.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fckdocumentprocessor.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fckdocumentprocessor.js	(revision 52)
@@ -127,11 +127,10 @@
 			if ( FCKBrowserInfo.IsIE )
 			{
-				var oAtt ;
-				if ( oAtt = oEmbed.getAttribute( 'scale' ) ) oCloned.setAttribute( 'scale', oAtt ) ;
-				if ( oAtt = oEmbed.getAttribute( 'play' ) ) oCloned.setAttribute( 'play', oAtt ) ;
-				if ( oAtt = oEmbed.getAttribute( 'loop' ) ) oCloned.setAttribute( 'loop', oAtt ) ;
-				if ( oAtt = oEmbed.getAttribute( 'menu' ) ) oCloned.setAttribute( 'menu', oAtt ) ;
-				if ( oAtt = oEmbed.getAttribute( 'wmode' ) ) oCloned.setAttribute( 'wmode', oAtt ) ;
-				if ( oAtt = oEmbed.getAttribute( 'quality' ) ) oCloned.setAttribute( 'quality', oAtt ) ;
+				var aAttributes = [ 'scale', 'play', 'loop', 'menu', 'wmode', 'quality' ] ;
+				for ( var iAtt = 0 ; i < aAttributes.length ; i++ )
+				{
+					var oAtt = oEmbed.getAttribute( aAttributes[iAtt] ) ;
+					if ( oAtt ) oCloned.setAttribute( aAttributes[iAtt], oAtt ) ;
+				}
 			}
 		
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fckdomtools.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fckdomtools.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fckdomtools.js	(revision 52)
@@ -14,5 +14,5 @@
 
 		var eChild ;
-		while ( eChild = source.firstChild )
+		while ( (eChild = source.firstChild) )
 			target.appendChild( source.removeChild( eChild ) ) ;
 	},
@@ -29,5 +29,5 @@
 		var eChildNode ;
 		
-		while ( eChildNode = node.firstChild )
+		while ( (eChildNode = node.firstChild) )
 		{
 			if ( eChildNode.nodeType == 3 )
@@ -55,5 +55,5 @@
 		var eChildNode ;
 
-		while ( eChildNode = node.lastChild )
+		while ( (eChildNode = node.lastChild) )
 		{
 			switch ( eChildNode.nodeType ) 
@@ -92,5 +92,5 @@
 			// Move all children before the node.
 			var eChild ;
-			while ( eChild = node.firstChild )
+			while ( (eChild = node.firstChild) )
 				node.parentNode.insertBefore( node.removeChild( eChild ), node ) ;
 		}
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcklanguagemanager.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcklanguagemanager.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcklanguagemanager.js	(revision 52)
@@ -110,7 +110,9 @@
 		for ( var i = 0 ; i < e.length ; i++ )
 		{
-			if ( sKey = e[i].getAttribute( 'fckLang' ) )
+			// The extra () is to avoid a warning with strict error checking. This is ok.
+			if ( (sKey = e[i].getAttribute( 'fckLang' )) )
 			{
-				if ( s = FCKLang[ sKey ] )
+				// The extra () is to avoid a warning with strict error checking. This is ok.
+				if ( (s = FCKLang[ sKey ]) )
 				{
 					if ( encode )
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcklisthandler.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcklisthandler.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcklisthandler.js	(revision 52)
@@ -28,5 +28,6 @@
 
 				var eChild ;
-				while ( eChild = eChildList.firstChild )
+				// The extra () is to avoid a warning with strict error checking. This is ok.
+				while ( (eChild = eChildList.firstChild) )
 					eNextSiblings.appendChild( eChildList.removeChild( eChild ) ) ;
 				
@@ -37,5 +38,6 @@
 			var eSibling ;
 			var eHasSuccessiveLiSibling = false ;
-			while ( eSibling = listItem.nextSibling )
+			// The extra () is to avoid a warning with strict error checking. This is ok.
+			while ( (eSibling = listItem.nextSibling) )
 			{
 				if ( !eHasLiSibling && eSibling.nodeType == 1 && eSibling.nodeName.toUpperCase() == 'LI' )
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fckselection_gecko.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fckselection_gecko.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fckselection_gecko.js	(revision 52)
@@ -38,4 +38,5 @@
 		return oSel.anchorNode.childNodes[ oSel.anchorOffset ] ;
 	}
+	return null ;
 }
 
@@ -57,4 +58,5 @@
 		}
 	}
+	return null ;
 }
 
@@ -111,6 +113,7 @@
 	while ( oContainer )
 	{
-		if ( oContainer.tagName == nodeTagName ) 
+		if ( oContainer.nodeName == nodeTagName ) 
 			return oContainer ;
+
 		oContainer = oContainer.parentNode ;
 	}
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcktablehandler.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcktablehandler.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcktablehandler.js	(revision 52)
@@ -11,13 +11,13 @@
 {
 	// Get the row where the selection is placed in.	
-	var oRow = FCKSelection.MoveToAncestorNode("TR") ;
+	var oRow = FCKSelection.MoveToAncestorNode( 'TR' ) ;
 	if ( !oRow ) return ;
-
+	
 	// Create a clone of the row.
 	var oNewRow = oRow.cloneNode( true ) ;
-
+	
 	// Insert the new row (copy) before of it.
 	oRow.parentNode.insertBefore( oNewRow, oRow ) ;
-
+	
 	// Clean the row (it seems that the new row has been added after it).
 	FCKTableHandler.ClearRow( oRow ) ;
@@ -26,13 +26,13 @@
 FCKTableHandler.DeleteRows = function( row )
 {
-	// If no row has been passed as a parameer,
+	// If no row has been passed as a parameter,
 	// then get the row where the selection is placed in.	
 	if ( !row )
-		row = FCKSelection.MoveToAncestorNode("TR") ;
+		row = FCKSelection.MoveToAncestorNode( 'TR' ) ;
 	if ( !row ) return ;
-
+	
 	// Get the row's table.	
 	var oTable = FCKTools.GetElementAscensor( row, 'TABLE' ) ;
-
+	
 	// If just one row is available then delete the entire table.
 	if ( oTable.rows.length == 1 ) 
@@ -41,5 +41,5 @@
 		return ;
 	}
-
+		
 	// Delete the row.
 	row.parentNode.removeChild( row ) ;
@@ -52,7 +52,7 @@
 	if ( !table )
 	{
-		var table = FCKSelection.GetSelectedElement() ;
+		table = FCKSelection.GetSelectedElement() ;
 		if ( !table || table.tagName != 'TABLE' )
-			table = FCKSelection.MoveToAncestorNode("TABLE") ;
+			table = FCKSelection.MoveToAncestorNode( 'TABLE' ) ;
 	}
 	if ( !table ) return ;
@@ -67,7 +67,5 @@
 {
 	// Get the cell where the selection is placed in.
-	var oCell = FCKSelection.MoveToAncestorNode("TD") ;
-	if ( !oCell )
-	    oCell =  FCKSelection.MoveToAncestorNode("TH") ;
+	var oCell = FCKSelection.MoveToAncestorNode('TD') || FCKSelection.MoveToAncestorNode('TH') ;
 
 	if ( !oCell ) return ;
@@ -109,5 +107,5 @@
 	// Get the cell where the selection is placed in.
 	var oCell = FCKSelection.MoveToAncestorNode('TD') || FCKSelection.MoveToAncestorNode('TH') ;
-
+	
 	if ( !oCell ) return ;
 	
@@ -117,5 +115,5 @@
 	// Get the cell index.
 	var iIndex = oCell.cellIndex ;
-
+	
 	// Loop throw all rows (from down to up, because it's possible that some
 	// rows will be deleted).
@@ -142,9 +140,9 @@
 {
 	// Get the cell where the selection is placed in.
-	var oCell = cell ? cell : FCKSelection.MoveToAncestorNode("TD") ;
-	if ( !oCell ) return ;
+	var oCell = cell ? cell : FCKSelection.MoveToAncestorNode( 'TD' ) ;
+	if ( !oCell ) return null ;
 
 	// Create the new cell element to be added.
-	var oNewCell = FCK.EditorDocument.createElement("TD");
+	var oNewCell = FCK.EditorDocument.createElement( 'TD' ) ;
 	if ( FCKBrowserInfo.IsGecko )
 		oNewCell.innerHTML = GECKO_BOGUS ;
@@ -175,5 +173,5 @@
 		return ;
 	}
-
+		
 	// Delete the cell from the row.
 	cell.parentNode.removeChild( cell ) ;
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcktoolbarset.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcktoolbarset.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcktoolbarset.js	(revision 52)
@@ -49,5 +49,6 @@
 			
 			// If it is a shared toolbar, it may be already available in the target element.
-			if ( oToolbarSet = eToolbarTarget.__FCKToolbarSet )
+			oToolbarSet = eToolbarTarget.__FCKToolbarSet ;
+			if ( oToolbarSet )
 				break ;
 
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcktools.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcktools.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcktools.js	(revision 52)
@@ -65,5 +65,7 @@
 FCKTools.GetParentWindow = function( document )
 {
-	return document.contentWindow ? document.contentWindow : document.parentWindow ;
+//	return document.contentWindow ? document.contentWindow : document.parentWindow ;
+	return document.parentWindow ? document.parentWindow : document.defaultView ;
+
 }
 
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcktools_gecko.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcktools_gecko.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fcktools_gecko.js	(revision 52)
@@ -202,5 +202,6 @@
 			if ( oOwnerWindow != oWindow )
 			{
-				if ( el = oOwnerWindow.frameElement )
+				el = oOwnerWindow.frameElement ;
+				if ( el )
 					oOwnerWindow = FCKTools.GetElementWindow( el ) ;
 			}
Index: /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fckxhtml.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fckxhtml.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/_source/internals/fckxhtml.js	(revision 52)
@@ -134,5 +134,5 @@
 {
 	if ( !htmlNode )
-		return ;
+		return false ;
 
 	switch ( htmlNode.nodeType )
@@ -380,5 +380,5 @@
 	{
 		if ( htmlNode.innerHTML.Trim().length == 0 )
-			return ;
+			return false ;
 
 		var ePSibling = targetNode.lastChild ;
@@ -391,5 +391,5 @@
 			htmlNode._fckxhtmljob = null ;
 			FCKXHtml._AppendNode( ePSibling, htmlNode ) ;
-			return ;
+			return false ;
 		}
 
Index: /FCKeditor/branches/developers/alfonsoml/editor/dialog/fck_link/fck_link.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/dialog/fck_link/fck_link.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/dialog/fck_link/fck_link.js	(revision 52)
@@ -58,4 +58,11 @@
 oRegex.PopupUri.compile( "^javascript:void\\(\\s*window.open\\(\\s*'([^']+)'\\s*,\\s*(?:'([^']*)'|null)\\s*,\\s*'([^']*)'\\s*\\)\\s*\\)\\s*$" ) ;
 
+oRegex.PopupUri = new RegExp('') ;
+oRegex.PopupUri.compile( "^javascript:void\\(\\s*window.open\\(\\s*'([^']+)'\\s*,\\s*(?:'([^']*)'|null)\\s*,\\s*'([^']*)'\\s*\\)\\s*\\)\\s*$" ) ;
+
+// Accesible popups
+oRegex.OnClickPopup = new RegExp('') ;
+oRegex.OnClickPopup.compile( "^\\s*onClick=\"\\s*window.open\\(\\s*this\\.href\\s*,\\s*(?:'([^']*)'|null)\\s*,\\s*'([^']*)'\\s*\\)\\s*;\\s*return\\s*false;*\\s*\"$" ) ;
+
 oRegex.PopupFeatures = new RegExp('') ;
 oRegex.PopupFeatures.compile( '(?:^|,)([^=]+)=(\\d+|yes|no)', 'gi' ) ;
@@ -208,4 +215,16 @@
 		FillPopupFields( oPopupMatch[2], oPopupMatch[3] ) ;
 		SetTarget( 'popup' ) ;
+	}
+
+	// Accesible popups, the popup data is in the onclick attribute
+	if ( !oPopupMatch ) {
+		var onclick = oLink.getAttribute( 'onClick_fckprotectedatt' ) ;
+		oPopupMatch = oRegex.OnClickPopup.exec( onclick ) ;
+		if( oPopupMatch )
+		{
+			GetE( 'cmbTarget' ).value = 'popup' ;
+			FillPopupFields( oPopupMatch[1], oPopupMatch[2] ) ;
+			SetTarget( 'popup' ) ;
+		}
 	}
 
@@ -373,12 +392,11 @@
 }
 
-//#### Builds the javascript URI to open a popup to the specified URI.
-function BuildPopupUri( uri )
-{
-	var oReg = new RegExp( "'", "g" ) ;
-	var sWindowName = "'" + GetE('txtPopupName').value.replace(oReg, "\\'") + "'" ;
+// Accesible popups
+function BuildOnClickPopup()
+{
+	var sWindowName = "'" + GetE('txtPopupName').value.replace(/\W/gi, "") + "'" ;
 
 	var sFeatures = '' ;
-	var aChkFeatures = document.getElementsByName('chkFeature') ;
+	var aChkFeatures = document.getElementsByName( 'chkFeature' ) ;
 	for ( var i = 0 ; i < aChkFeatures.length ; i++ )
 	{
@@ -392,7 +410,32 @@
 	if ( GetE('txtPopupTop').value.length > 0 )		sFeatures += ',top=' + GetE('txtPopupTop').value ;
 
+	if ( sFeatures != '' )
+		sFeatures = sFeatures + ",status" ;
+
+	return ( "window.open(this.href," + sWindowName + ",'" + sFeatures + "'); return false" ) ;
+}
+/*
+//#### Builds the javascript URI to open a popup to the specified URI.
+function BuildPopupUri( uri )
+{
+	var oReg = new RegExp( "'", "g" ) ;
+	var sWindowName = "'" + GetE('txtPopupName').value.replace(oReg, "\\'") + "'" ;
+
+	var sFeatures = '' ;
+	var aChkFeatures = document.getElementsByName('chkFeature') ;
+	for ( var i = 0 ; i < aChkFeatures.length ; i++ )
+	{
+		if ( i > 0 ) sFeatures += ',' ;
+		sFeatures += aChkFeatures[i].value + '=' + ( aChkFeatures[i].checked ? 'yes' : 'no' ) ;
+	}
+
+	if ( GetE('txtPopupWidth').value.length > 0 )	sFeatures += ',width=' + GetE('txtPopupWidth').value ;
+	if ( GetE('txtPopupHeight').value.length > 0 )	sFeatures += ',height=' + GetE('txtPopupHeight').value ;
+	if ( GetE('txtPopupLeft').value.length > 0 )	sFeatures += ',left=' + GetE('txtPopupLeft').value ;
+	if ( GetE('txtPopupTop').value.length > 0 )		sFeatures += ',top=' + GetE('txtPopupTop').value ;
+
 	return ( "javascript:void(window.open('" + uri + "'," + sWindowName + ",'" + sFeatures + "'))" ) ;
 }
-
+*/
 //#### Fills all Popup related fields.
 function FillPopupFields( windowName, features )
@@ -445,4 +488,5 @@
 			sUri = GetE('cmbLinkProtocol').value + sUri ;
 
+/* Disabled due to the new accesible popups
 			if( GetE('cmbTarget').value == 'popup' )
 			{
@@ -456,5 +500,5 @@
 				sUri = BuildPopupUri( sUri ) ;
 			}
-
+*/
 			break ;
 
@@ -530,4 +574,18 @@
 	oLink.href = sUri ;
 	SetAttribute( oLink, '_fcksavedurl', sUri ) ;
+
+	// Accesible popups
+	if( GetE('cmbTarget').value == 'popup' ) 
+	{
+		SetAttribute( oLink, 'onClick_fckprotectedatt', " onClick=\"" + BuildOnClickPopup() + "\"") ;
+	} 
+	else 
+	{
+		// Check if the previous onclick was for a popup:
+		// In that case remove the onclick handler.
+		var onclick = oLink.getAttribute( 'onClick_fckprotectedatt' ) ;
+		if( oRegex.OnClickPopup.test( onclick ) )
+			SetAttribute( oLink, 'onClick_fckprotectedatt', '' ) ;
+	}
 
 	oLink.innerHTML = sInnerHtml ;		// Set (or restore) the innerHTML
Index: /FCKeditor/branches/developers/alfonsoml/editor/dialog/fck_template.html
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/dialog/fck_template.html	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/dialog/fck_template.html	(revision 52)
@@ -92,5 +92,5 @@
 
 			// Get the Template Title.
-			if ( oPart = oNode.attributes.getNamedItem('title') )
+			if ( (oPart = oNode.attributes.getNamedItem('title')) )
 				oTemplate.Title = oPart.value ;
 			else
@@ -98,13 +98,13 @@
 
 			// Get the Template Description.
-			if ( oPart = oXml.SelectSingleNode( 'Description', oNode ) )
+			if ( (oPart = oXml.SelectSingleNode( 'Description', oNode )) )
 				oTemplate.Description = oPart.text ? oPart.text : oPart.textContent ;
 
 			// Get the Template Image.
-			if ( oPart = oNode.attributes.getNamedItem('image') )
+			if ( (oPart = oNode.attributes.getNamedItem('image')) )
 				oTemplate.Image = sImagesBasePath + oPart.value ;
 
 			// Get the Template HTML.
-			if ( oPart = oXml.SelectSingleNode( 'Html', oNode ) )
+			if ( (oPart = oXml.SelectSingleNode( 'Html', oNode )) )
 				oTemplate.Html = oPart.text ? oPart.text : oPart.textContent ;
 			else
Index: /FCKeditor/branches/developers/alfonsoml/editor/fckdialog.html
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/fckdialog.html	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/fckdialog.html	(revision 52)
@@ -153,5 +153,4 @@
 
 	oTabs[ tabCode ] = oDiv ;
-	oTabs[ tabCode ].Index = oTabs.length - 1 ;
 }
 
@@ -197,5 +196,6 @@
 			case 13 :		// ENTER
 				var oTarget = e.srcElement || e.target ;
-				if ( oTarget.tagName == 'TEXTAREA' ) return ;
+				if ( oTarget.tagName == 'TEXTAREA' ) 
+					return true ;
 				Ok() ;
 				return false ;
Index: /FCKeditor/branches/developers/alfonsoml/editor/fckeditor.html
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/fckeditor.html	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/fckeditor.html	(revision 52)
@@ -258,5 +258,5 @@
 
 		var eInnerElement ;
-		if ( eInnerElement = oCell.firstChild )
+		if ( (eInnerElement = oCell.firstChild) )
 		{
 			eInnerElement.style.height = 0 ;
Index: /FCKeditor/branches/developers/alfonsoml/editor/filemanager/browser/default/browser.html
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/filemanager/browser/default/browser.html	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/filemanager/browser/default/browser.html	(revision 52)
@@ -60,4 +60,6 @@
 	else
 		return oXML.LoadUrl( sUrl ) ;
+
+	return null ;
 }
 
Index: /FCKeditor/branches/developers/alfonsoml/editor/filemanager/browser/default/frmresourceslist.html
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/filemanager/browser/default/frmresourceslist.html	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/filemanager/browser/default/frmresourceslist.html	(revision 52)
@@ -90,4 +90,9 @@
 	// Get the current folder path.
 	var oNode = fckXml.SelectSingleNode( 'Connector/CurrentFolder' ) ;
+	if ( oNode == null )
+	{
+		alert( 'The server didn\'t reply with a proper XML file\r\nCheck your configuration.' ) ;
+		return ;
+	}
 	var sCurrentFolderPath	= oNode.attributes.getNamedItem('path').value ;
 	var sCurrentFolderUrl	= oNode.attributes.getNamedItem('url').value ;
@@ -120,5 +125,5 @@
 	}
 
-	oHtml.Append( '</table>' ) ;
+	oHtml.Append( '<\/table>' ) ;
 	
 	document.body.innerHTML = oHtml.ToString() ;
Index: /FCKeditor/branches/developers/alfonsoml/editor/filemanager/browser/default/js/fckxml.js
===================================================================
--- /FCKeditor/branches/developers/alfonsoml/editor/filemanager/browser/default/js/fckxml.js	(revision 51)
+++ /FCKeditor/branches/developers/alfonsoml/editor/filemanager/browser/default/js/fckxml.js	(revision 52)
@@ -19,10 +19,12 @@
 
 	// IE6
-	try { return new ActiveXObject("Msxml2.XMLHTTP") ; } 
+	try { return new ActiveXObject( 'Msxml2.XMLHTTP' ) ; } 
 	catch(e) {}
 
 	// IE5
-	try { return new ActiveXObject("Microsoft.XMLHTTP") ; }
+	try { return new ActiveXObject( 'Microsoft.XMLHTTP' ) ; }
 	catch(e) {}
+
+	return null ;
 }
 
@@ -36,5 +38,5 @@
 		
 	oXmlHttp.open( "GET", urlToCall, bAsync ) ;
-	
+
 	if ( bAsync )
 	{	
@@ -43,4 +45,11 @@
 			if ( oXmlHttp.readyState == 4 )
 			{
+				if ( oXmlHttp.responseXML == null )
+				{
+					alert( 'The server didn\'t send back a proper XML response.\r\n\r\n' +
+							'Requested URL: ' + urlToCall + '\r\n' +
+							'Response text:\r\n' + oXmlHttp.responseText ) ;
+					return ;
+				}
 				oFCKXml.DOMDocument = oXmlHttp.responseXML ;
 				if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 )
