Index: /FCKeditor.Net/trunk/AssemblyInfo.cs
===================================================================
--- /FCKeditor.Net/trunk/AssemblyInfo.cs	(revision 182)
+++ /FCKeditor.Net/trunk/AssemblyInfo.cs	(revision 182)
@@ -0,0 +1,66 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Security.Permissions ;
+using System.Web.UI ;
+
+[assembly:TagPrefix("FredCK.FCKeditorV2", "FCKeditorV2")]
+
+[assembly:System.CLSCompliant(true)]
+[assembly:System.Runtime.InteropServices.ComVisible(false)]
+
+//
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+//
+[assembly: AssemblyTitle("FredCK.FCKeditorV2")]
+[assembly: AssemblyDescription("FCKeditor ASP.Net Integration")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("FCKeditor.FCKeditorV2")]
+[assembly: AssemblyCopyright("2003-2005 Frederico Caldeira Knabben")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+
+[assembly: AssemblyVersion("2.2.*")]
+
+//
+// In order to sign your assembly you must specify a key to use. Refer to the
+// Microsoft .NET Framework documentation for more information on assembly signing.
+//
+// Use the attributes below to control which key is used for signing.
+//
+// Notes:
+//   (*) If no key is specified, the assembly is not signed.
+//   (*) KeyName refers to a key that has been installed in the Crypto Service
+//       Provider (CSP) on your machine. KeyFile refers to a file which contains
+//       a key.
+//   (*) If the KeyFile and the KeyName values are both specified, the
+//       following processing occurs:
+//       (1) If the KeyName can be found in the CSP, that key is used.
+//       (2) If the KeyName does not exist and the KeyFile does exist, the key
+//           in the KeyFile is installed into the CSP and used.
+//   (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
+//       When specifying the KeyFile, the location of the KeyFile should be
+//       relative to the project output directory which is
+//       %Project Directory%\obj\<configuration>. For example, if your KeyFile is
+//       located in the project directory, you would specify the AssemblyKeyFile
+//       attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
+//   (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
+//       documentation for more information on this.
+//
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile(@"..\..\_assemblykey.snk")]
+[assembly: AssemblyKeyName("")]
+[assembly: System.Security.AllowPartiallyTrustedCallers]
Index: /FCKeditor.Net/trunk/FCKeditor.cs
===================================================================
--- /FCKeditor.Net/trunk/FCKeditor.cs	(revision 182)
+++ /FCKeditor.Net/trunk/FCKeditor.cs	(revision 182)
@@ -0,0 +1,410 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: FCKeditor.cs
+ * 	This is the FCKeditor Asp.Net control.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+using System ;
+using System.Web.UI ;
+using System.Web.UI.WebControls ;
+using System.ComponentModel ;
+using System.Text.RegularExpressions ;
+using System.Globalization ;
+using System.Security.Permissions ;
+
+namespace FredCK.FCKeditorV2
+{
+	public enum LanguageDirection
+	{
+		LeftToRight,
+		RightToLeft
+	}
+
+	[ DefaultProperty("Value") ]
+	[ ValidationProperty("Value") ]
+	[ ToolboxData("<{0}:FCKeditor runat=server></{0}:FCKeditor>") ]
+	[ Designer("FredCK.FCKeditorV2.FCKeditorDesigner") ]
+	[ ParseChildren(false) ]
+	public class FCKeditor : System.Web.UI.Control, IPostBackDataHandler
+	{
+		public FCKeditor()
+		{}
+
+		#region Base Configurations Properties
+		
+		[ Browsable( false ) ]
+		public FCKeditorConfigurations Config
+		{
+			get 
+			{ 
+				if ( ViewState["Config"] == null )
+					ViewState["Config"] = new FCKeditorConfigurations() ; 
+				return (FCKeditorConfigurations)ViewState["Config"] ;
+			}
+		}
+
+		[ DefaultValue( "" ) ]
+		public string Value
+		{
+			get { object o = ViewState["Value"] ; return ( o == null ? "" : (string)o ) ; }
+			set { ViewState["Value"] = value ; }
+		}
+
+		/// <summary>
+		/// <p>
+		///		Sets or gets the virtual path to the editor's directory. It is
+		///		relative to the current page.
+		/// </p>
+		/// <p>
+		///		The default value is "/FCKeditor/".
+		/// </p>
+		/// <p>
+		///		The base path can be also set in the Web.config file using the 
+		///		appSettings section. Just set the "FCKeditor:BasePath" for that. 
+		///		For example:
+		///		<code>
+		///		&lt;configuration&gt;
+		///			&lt;appSettings&gt;
+		///				&lt;add key="FCKeditor:BasePath" value="/scripts/FCKeditor/" /&gt;
+		///			&lt;/appSettings&gt;
+		///		&lt;/configuration&gt;
+		///		</code>
+		/// </p>
+		/// </summary>
+		[ DefaultValue( "/FCKeditor/" ) ]
+		public string BasePath
+		{
+			get 
+			{ 
+				object o = ViewState["BasePath"] ; 
+
+				if ( o == null )
+					o = System.Configuration.ConfigurationSettings.AppSettings["FCKeditor:BasePath"] ;
+
+				return ( o == null ? "/FCKeditor/" : (string)o ) ;
+			}
+			set { ViewState["BasePath"] = value ; }
+		}
+
+		[ DefaultValue( "Default" ) ]
+		public string ToolbarSet
+		{
+			get { object o = ViewState["ToolbarSet"] ; return ( o == null ? "Default" : (string)o ) ; }
+			set { ViewState["ToolbarSet"] = value ; }
+		}
+
+		#endregion
+
+		#region Appearence Properties
+
+		[ Category( "Appearence" ) ]
+		[ DefaultValue( "100%" ) ]
+		public Unit Width
+		{
+			get { object o = ViewState["Width"] ; return ( o == null ? Unit.Percentage(100) : (Unit)o ) ; }
+			set { ViewState["Width"] = value ; }
+		}
+
+		[ Category("Appearence") ]
+		[ DefaultValue( "200px" ) ]
+		public Unit Height
+		{
+			get { object o = ViewState["Height"] ; return ( o == null ? Unit.Pixel( 200 ) : (Unit)o ) ; }
+			set { ViewState["Height"] = value ; }
+		}
+
+		#endregion
+
+		#region Configurations Properties
+
+		[ Category("Configurations") ]
+		public string CustomConfigurationsPath
+		{
+			set { this.Config["CustomConfigurationsPath"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public string EditorAreaCSS
+		{
+			set { this.Config["EditorAreaCSS"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public string BaseHref
+		{
+			set { this.Config["BaseHref"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public string SkinPath
+		{
+			set { this.Config["SkinPath"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public string PluginsPath
+		{
+			set { this.Config["PluginsPath"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool FullPage
+		{
+			set { this.Config["FullPage"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool Debug
+		{
+			set { this.Config["Debug"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool AutoDetectLanguage
+		{
+			set { this.Config["AutoDetectLanguage"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public string DefaultLanguage
+		{
+			set { this.Config["DefaultLanguage"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public LanguageDirection ContentLangDirection
+		{
+			set { this.Config["ContentLangDirection"] = ( value == LanguageDirection.LeftToRight ? "ltr" : "rtl" )  ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool EnableXHTML
+		{
+			set { this.Config["EnableXHTML"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool EnableSourceXHTML
+		{
+			set { this.Config["EnableSourceXHTML"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool FillEmptyBlocks
+		{
+			set { this.Config["FillEmptyBlocks"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool FormatSource
+		{
+			set { this.Config["FormatSource"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool FormatOutput
+		{
+			set { this.Config["FormatOutput"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public string FormatIndentator
+		{
+			set { this.Config["FormatIndentator"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool GeckoUseSPAN
+		{
+			set { this.Config["GeckoUseSPAN"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool StartupFocus
+		{
+			set { this.Config["StartupFocus"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool ForcePasteAsPlainText
+		{
+			set { this.Config["ForcePasteAsPlainText"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool ForceSimpleAmpersand
+		{
+			set { this.Config["ForceSimpleAmpersand"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public int TabSpaces
+		{
+			set { this.Config["TabSpaces"] = value.ToString( CultureInfo.InvariantCulture ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool UseBROnCarriageReturn
+		{
+			set { this.Config["UseBROnCarriageReturn"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool ToolbarStartExpanded
+		{
+			set { this.Config["ToolbarStartExpanded"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public bool ToolbarCanCollapse
+		{
+			set { this.Config["ToolbarCanCollapse"] = ( value ? "true" : "false" ) ; }
+		}
+
+		[ Category("Configurations") ]
+		public string FontColors
+		{
+			set { this.Config["FontColors"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public string FontNames
+		{
+			set { this.Config["FontNames"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public string FontSizes
+		{
+			set { this.Config["FontSizes"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public string FontFormats
+		{
+			set { this.Config["FontFormats"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public string StylesXmlPath
+		{
+			set { this.Config["StylesXmlPath"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public string LinkBrowserURL
+		{
+			set { this.Config["LinkBrowserURL"] = value ; }
+		}
+
+		[ Category("Configurations") ]
+		public string ImageBrowserURL
+		{
+			set { this.Config["ImageBrowserURL"] = value ; }
+		}
+
+		#endregion
+
+		#region Rendering
+
+		protected override void Render(HtmlTextWriter writer)
+		{
+			writer.Write( "<div>" ) ;
+
+			if ( this.CheckBrowserCompatibility() )
+			{
+				string sLink = this.BasePath ;
+				if ( sLink.StartsWith( "~" ) )
+					sLink = this.ResolveUrl( sLink ) ;
+
+				string sFile = 
+					Page.Request.QueryString["fcksource"] == "true" ? 
+						"fckeditor.original.html" : 
+						"fckeditor.html" ;
+
+				sLink += "editor/" + sFile + "?InstanceName=" + this.ClientID ;
+				if ( this.ToolbarSet.Length > 0 ) sLink += "&amp;Toolbar=" + this.ToolbarSet ;
+
+				// Render the linked hidden field.
+				writer.Write( 
+					"<input type=\"hidden\" id=\"{0}\" name=\"{1}\" value=\"{2}\" />",
+						this.ClientID,
+						this.UniqueID,
+						System.Web.HttpUtility.HtmlEncode( this.Value ) ) ;
+
+				// Render the configurations hidden field.
+				writer.Write( 
+					"<input type=\"hidden\" id=\"{0}___Config\" value=\"{1}\" />",
+						this.ClientID,
+						this.Config.GetHiddenFieldString() ) ;
+
+				// Render the editor IFRAME.
+				writer.Write(
+					"<iframe id=\"{0}___Frame\" src=\"{1}\" width=\"{2}\" height=\"{3}\" frameborder=\"no\" scrolling=\"no\"></iframe>",
+						this.ClientID,
+						sLink,
+						this.Width,
+						this.Height ) ;
+			}
+			else
+			{
+				writer.Write(
+					"<textarea name=\"{0}\" rows=\"4\" cols=\"40\" style=\"width: {1}; height: {2}\" wrap=\"virtual\">{3}</textarea>",
+						this.UniqueID,
+						this.Width,
+						this.Height,
+						System.Web.HttpUtility.HtmlEncode( this.Value ) ) ;
+			}
+
+			writer.Write( "</div>" ) ;
+		}
+
+		public bool CheckBrowserCompatibility()
+		{
+			System.Web.HttpBrowserCapabilities oBrowser = Page.Request.Browser ;
+
+			// Internet Explorer 5.5+ for Windows
+			if (oBrowser.Browser == "IE" && ( oBrowser.MajorVersion >= 6 || ( oBrowser.MajorVersion == 5 && oBrowser.MinorVersion >= 0.5 ) ) && oBrowser.Win32)
+				return true ;
+			else
+			{
+				Match oMatch = Regex.Match( this.Page.Request.UserAgent, @"(?<=Gecko/)\d{8}" ) ;
+				return ( oMatch.Success && int.Parse( oMatch.Value, CultureInfo.InvariantCulture ) >= 20030210 ) ;
+			}
+		}
+
+		#endregion
+
+		#region Postback Handling
+
+		public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
+		{
+			if ( postCollection[postDataKey] != this.Value )
+			{
+				this.Value = postCollection[postDataKey] ;
+				return true ;
+			}
+			return false ;
+		}
+
+		public void RaisePostDataChangedEvent()
+		{
+			// Do nothing
+		}
+
+		#endregion
+	}
+}
Index: /FCKeditor.Net/trunk/FCKeditorConfigurations.cs
===================================================================
--- /FCKeditor.Net/trunk/FCKeditorConfigurations.cs	(revision 182)
+++ /FCKeditor.Net/trunk/FCKeditorConfigurations.cs	(revision 182)
@@ -0,0 +1,89 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: FCKeditorConfigurations.cs
+ * 	Class that holds all editor configurations.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+using System ;
+using System.Collections ;
+using System.Runtime.Serialization ;
+
+namespace FredCK.FCKeditorV2
+{
+	[ Serializable() ]
+	public class FCKeditorConfigurations : ISerializable
+	{
+		private Hashtable _Configs ;
+
+		internal FCKeditorConfigurations()
+		{
+			_Configs = new Hashtable() ;
+		}
+
+		protected FCKeditorConfigurations( SerializationInfo info, StreamingContext context )
+		{
+			_Configs = (Hashtable)info.GetValue( "ConfigTable", typeof( Hashtable ) ) ;
+		}
+
+		public string this[ string configurationName ]
+		{
+			get
+			{
+				if ( _Configs.ContainsKey( configurationName ) )
+					return (string)_Configs[ configurationName ] ;
+				else
+					return null ;
+			}
+			set
+			{
+				_Configs[ configurationName ] = value ;
+			}
+		}
+
+		internal string GetHiddenFieldString()
+		{
+			System.Text.StringBuilder osParams = new System.Text.StringBuilder() ;
+
+			foreach ( DictionaryEntry oEntry in _Configs )
+			{
+				if ( osParams.Length > 0 )
+					osParams.Append( "&amp;" ) ;
+
+				osParams.AppendFormat( "{0}={1}", EncodeConfig( oEntry.Key.ToString() ), EncodeConfig( oEntry.Value.ToString() ) ) ;
+			}
+
+			return osParams.ToString() ;
+		}
+		
+		private string EncodeConfig( string valueToEncode )
+		{
+			string sEncoded = valueToEncode.Replace( "&", "%26" ) ;
+			sEncoded = sEncoded.Replace( "=", "%3D" ) ;
+			sEncoded = sEncoded.Replace( "\"", "%22" ) ;
+			
+			return sEncoded ;
+		}
+
+		#region ISerializable Members
+
+		public void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
+		{
+			info.AddValue( "ConfigTable", _Configs ) ;
+		}
+
+		#endregion
+	}
+}
Index: /FCKeditor.Net/trunk/FCKeditorDesigner.cs
===================================================================
--- /FCKeditor.Net/trunk/FCKeditorDesigner.cs	(revision 182)
+++ /FCKeditor.Net/trunk/FCKeditorDesigner.cs	(revision 182)
@@ -0,0 +1,42 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: FCKeditorDesigner.cs
+ * 	The EditorDesigner class defines the editor visualization at design 
+ * 	time. 
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+using System ;
+using System.Globalization ;
+
+namespace FredCK.FCKeditorV2
+{
+	public class FCKeditorDesigner : System.Web.UI.Design.ControlDesigner
+	{
+		public FCKeditorDesigner()
+		{
+		}
+
+		public override string GetDesignTimeHtml() 
+		{
+			FCKeditor control = (FCKeditor)Component ;
+			return String.Format( CultureInfo.InvariantCulture,
+				"<div><table width=\"{0}\" height=\"{1}\" bgcolor=\"#f5f5f5\" bordercolor=\"#c7c7c7\" cellpadding=\"0\" cellspacing=\"0\" border=\"1\"><tr><td valign=\"middle\" align=\"center\">FCKeditor V2 - <b>{2}</b></td></tr></table></div>",
+					control.Width,
+					control.Height,
+					control.ID ) ;
+		}
+	}
+}
Index: /FCKeditor.Net/trunk/FileBrowserConnector.cs
===================================================================
--- /FCKeditor.Net/trunk/FileBrowserConnector.cs	(revision 182)
+++ /FCKeditor.Net/trunk/FileBrowserConnector.cs	(revision 182)
@@ -0,0 +1,276 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: FileBrowserConnector.cs
+ * 	This is the code behind of the connector.aspx page used by the 
+ * 	File Browser.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+using System ;
+using System.Globalization ;
+using System.Xml ;
+using System.Web ;
+
+namespace FredCK.FCKeditorV2
+{
+	public class FileBrowserConnector : FileWorkerBase
+	{
+		protected override void OnLoad(EventArgs e)
+		{
+			// Get the main request informaiton.
+			string sCommand = Request.QueryString["Command"] ;
+			if ( sCommand == null ) return ;
+
+			string sResourceType = Request.QueryString["Type"] ;
+			if ( sResourceType == null ) return ;
+
+			string sCurrentFolder = Request.QueryString["CurrentFolder"] ;
+			if ( sCurrentFolder == null ) return ;
+
+			// Check the current folder syntax (must begin and start with a slash).
+			if ( ! sCurrentFolder.EndsWith( "/" ) )
+				sCurrentFolder += "/" ;
+			if ( ! sCurrentFolder.StartsWith( "/" ) )
+				sCurrentFolder = "/" + sCurrentFolder ;
+
+			// File Upload doesn't have to return XML, so it must be intercepted before anything.
+			if ( sCommand == "FileUpload" )
+			{
+				this.FileUpload( sResourceType, sCurrentFolder ) ;
+				return ;
+			}
+
+			// Cleans the response buffer.
+			Response.ClearHeaders() ;
+			Response.Clear() ;
+
+			// Prevent the browser from caching the result.
+			Response.CacheControl = "no-cache" ;
+
+			// Set the response format.
+			Response.ContentEncoding	= System.Text.UTF8Encoding.UTF8 ;
+			Response.ContentType		= "text/xml" ;
+
+			XmlDocument oXML = new XmlDocument() ;
+			XmlNode oConnectorNode = CreateBaseXml( oXML, sCommand, sResourceType, sCurrentFolder ) ;
+
+			// Execute the required command.
+			switch( sCommand )
+			{
+				case "GetFolders" :
+					this.GetFolders( oConnectorNode, sResourceType, sCurrentFolder ) ;
+					break ;
+				case "GetFoldersAndFiles" :
+					this.GetFolders( oConnectorNode, sResourceType, sCurrentFolder ) ;
+					this.GetFiles( oConnectorNode, sResourceType, sCurrentFolder ) ;
+					break ;
+				case "CreateFolder" :
+					this.CreateFolder( oConnectorNode, sResourceType, sCurrentFolder ) ;
+					break ;
+			}
+
+			// Output the resulting XML.
+			Response.Write( oXML.OuterXml ) ;
+
+			Response.End() ;
+		}
+
+		#region Base XML Creation
+
+		private XmlNode CreateBaseXml( XmlDocument xml, string command, string resourceType, string currentFolder )
+		{
+			// Create the XML document header.
+			xml.AppendChild( xml.CreateXmlDeclaration( "1.0", "utf-8", null ) ) ;
+
+			// Create the main "Connector" node.
+			XmlNode oConnectorNode = XmlUtil.AppendElement( xml, "Connector" ) ;
+			XmlUtil.SetAttribute( oConnectorNode, "command", command ) ;
+			XmlUtil.SetAttribute( oConnectorNode, "resourceType", resourceType ) ;
+
+			// Add the current folder node.
+			XmlNode oCurrentNode = XmlUtil.AppendElement( oConnectorNode, "CurrentFolder" ) ;
+			XmlUtil.SetAttribute( oCurrentNode, "path", currentFolder ) ;
+			XmlUtil.SetAttribute( oCurrentNode, "url", GetUrlFromPath( resourceType, currentFolder) ) ;
+
+			return oConnectorNode ;
+		}
+
+		#endregion
+
+		#region Command Handlers
+
+		private void GetFolders( XmlNode connectorNode, string resourceType, string currentFolder )
+		{
+			// Map the virtual path to the local server path.
+			string sServerDir = this.ServerMapFolder( resourceType, currentFolder ) ;
+
+			// Create the "Folders" node.
+			XmlNode oFoldersNode = XmlUtil.AppendElement( connectorNode, "Folders" ) ;
+
+			System.IO.DirectoryInfo oDir = new System.IO.DirectoryInfo( sServerDir ) ;
+			System.IO.DirectoryInfo[] aSubDirs = oDir.GetDirectories() ;
+
+			for ( int i = 0 ; i < aSubDirs.Length ; i++ )
+			{
+				// Create the "Folders" node.
+				XmlNode oFolderNode = XmlUtil.AppendElement( oFoldersNode, "Folder" ) ;
+				XmlUtil.SetAttribute( oFolderNode, "name", aSubDirs[i].Name ) ;
+			}
+		}
+
+		private void GetFiles( XmlNode connectorNode, string resourceType, string currentFolder )
+		{
+			// Map the virtual path to the local server path.
+			string sServerDir = this.ServerMapFolder( resourceType, currentFolder ) ;
+
+			// Create the "Files" node.
+			XmlNode oFilesNode = XmlUtil.AppendElement( connectorNode, "Files" ) ;
+
+			System.IO.DirectoryInfo oDir = new System.IO.DirectoryInfo( sServerDir ) ;
+			System.IO.FileInfo[] aFiles = oDir.GetFiles() ;
+
+			for ( int i = 0 ; i < aFiles.Length ; i++ )
+			{
+				Decimal iFileSize = Math.Round( (Decimal)aFiles[i].Length / 1024 ) ;
+				if ( iFileSize < 1 && aFiles[i].Length != 0 ) iFileSize = 1 ;
+
+				// Create the "File" node.
+				XmlNode oFileNode = XmlUtil.AppendElement( oFilesNode, "File" ) ;
+				XmlUtil.SetAttribute( oFileNode, "name", aFiles[i].Name ) ;
+				XmlUtil.SetAttribute( oFileNode, "size", iFileSize.ToString( CultureInfo.InvariantCulture ) ) ;
+			}
+		}
+
+		private void CreateFolder( XmlNode connectorNode, string resourceType, string currentFolder )
+		{
+			string sErrorNumber = "0" ;
+
+			string sNewFolderName = Request.QueryString["NewFolderName"] ;
+
+			if ( sNewFolderName == null || sNewFolderName.Length == 0 )
+				sErrorNumber = "102" ;
+			else
+			{
+				// Map the virtual path to the local server path of the current folder.
+				string sServerDir = this.ServerMapFolder( resourceType, currentFolder ) ;
+
+				try
+				{
+					Util.CreateDirectory( System.IO.Path.Combine( sServerDir, sNewFolderName )) ;
+				}
+				catch ( ArgumentException )
+				{
+					sErrorNumber = "102" ;
+				}
+				catch ( System.IO.PathTooLongException )
+				{
+					sErrorNumber = "102" ;
+				}
+				catch ( System.IO.IOException )
+				{
+					sErrorNumber = "101" ;
+				}
+				catch ( System.Security.SecurityException )
+				{
+					sErrorNumber = "103" ;
+				}
+				catch ( Exception )
+				{
+					sErrorNumber = "110" ;
+				}
+			}
+
+			// Create the "Error" node.
+			XmlNode oErrorNode = XmlUtil.AppendElement( connectorNode, "Error" ) ;
+			XmlUtil.SetAttribute( oErrorNode, "number", sErrorNumber ) ;
+		}
+
+		private void FileUpload( string resourceType, string currentFolder )
+		{
+			HttpPostedFile oFile = Request.Files["NewFile"] ;
+
+			string sErrorNumber = "0" ;
+			string sFileName = "" ;
+
+			if ( oFile != null )
+			{
+				// Map the virtual path to the local server path.
+				string sServerDir = this.ServerMapFolder( resourceType, currentFolder ) ;
+
+				// Get the uploaded file name.
+				sFileName = System.IO.Path.GetFileName( oFile.FileName ) ;
+
+				int iCounter = 0 ;
+
+				while ( true )
+				{
+					string sFilePath = System.IO.Path.Combine( sServerDir, sFileName ) ;
+
+					if ( System.IO.File.Exists( sFilePath ) )
+					{
+						iCounter++ ;
+						sFileName = 
+							System.IO.Path.GetFileNameWithoutExtension( oFile.FileName ) +
+							"(" + iCounter + ")" +
+							System.IO.Path.GetExtension( oFile.FileName ) ;
+
+						sErrorNumber = "201" ;
+					}
+					else
+					{
+						oFile.SaveAs( sFilePath ) ;
+						break ;
+					}
+				}
+			}
+			else
+				sErrorNumber = "202" ;
+
+			Response.Clear() ;
+
+			Response.Write( "<script type=\"text/javascript\">" ) ;
+			Response.Write( "window.parent.frames['frmUpload'].OnUploadCompleted(" + sErrorNumber + ",'" + sFileName.Replace( "'", "\\'" ) + "') ;" ) ;
+			Response.Write( "</script>" ) ;
+
+			Response.End() ;
+		}
+
+		#endregion
+
+		#region Directory Mapping
+
+		private string ServerMapFolder( string resourceType, string folderPath )
+		{
+			// Get the resource type directory.
+			string sResourceTypePath = System.IO.Path.Combine( this.UserFilesDirectory, resourceType ) ;
+
+			// Ensure that the directory exists.
+			Util.CreateDirectory( sResourceTypePath ) ;
+
+			// Return the resource type directory combined with the required path.
+			return System.IO.Path.Combine( sResourceTypePath, folderPath.TrimStart('/') ) ;
+		}
+
+		private string GetUrlFromPath( string resourceType, string folderPath )
+		{
+			if ( resourceType == null || resourceType.Length == 0 )
+				return this.UserFilesPath.TrimEnd('/') + folderPath ;
+			else
+				return this.UserFilesPath + resourceType + folderPath ;
+		}
+
+		#endregion
+	}
+}
Index: /FCKeditor.Net/trunk/FileWorkerBase.cs
===================================================================
--- /FCKeditor.Net/trunk/FileWorkerBase.cs	(revision 182)
+++ /FCKeditor.Net/trunk/FileWorkerBase.cs	(revision 182)
@@ -0,0 +1,87 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: FileWorkerBase.cs
+ * 	Base class used by the FileBrowserConnector and Uploader.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+using System;
+
+namespace FredCK.FCKeditorV2
+{
+	public abstract class FileWorkerBase : System.Web.UI.Page
+	{
+		private const string DEFAULT_USER_FILES_PATH = "/UserFiles/" ;
+
+		private string sUserFilesPath ;
+		private string sUserFilesDirectory ;
+
+		protected string UserFilesPath
+		{
+			get
+			{
+				if ( sUserFilesPath == null )
+				{
+					// Try to get from the "Application".
+					sUserFilesPath = (string)Application["FCKeditor:UserFilesPath"] ;
+
+					// Try to get from the "Session".
+					if ( sUserFilesPath == null || sUserFilesPath.Length == 0 )
+					{
+						sUserFilesPath = (string)Session["FCKeditor:UserFilesPath"] ;
+						
+						// Try to get from the Web.config file.
+						if ( sUserFilesPath == null || sUserFilesPath.Length == 0 )
+						{
+							sUserFilesPath = System.Configuration.ConfigurationSettings.AppSettings["FCKeditor:UserFilesPath"] ;
+							
+							// Otherwise use the default value.
+							if ( sUserFilesPath == null || sUserFilesPath.Length == 0 ) 
+								sUserFilesPath = DEFAULT_USER_FILES_PATH ;
+
+							// Try to get from the URL.
+							if ( sUserFilesPath == null || sUserFilesPath.Length == 0 ) 
+							{
+								sUserFilesPath = Request.QueryString["ServerPath"] ;
+							}
+						}
+					}
+
+					// Check that the user path ends with slash ("/")
+					if ( ! sUserFilesPath.EndsWith("/") )
+						sUserFilesPath += "/" ;
+				}
+				return sUserFilesPath ;
+			}
+		}
+
+		/// <summary>
+		/// The absolution path (server side) of the user files directory. It 
+		/// is based on the <see cref="FileWorkerBase.UserFilesPath"/>.
+		/// </summary>
+		protected string UserFilesDirectory
+		{
+			get	
+			{
+				if ( sUserFilesDirectory == null )
+				{
+					// Get the local (server) directory path translation.
+					sUserFilesDirectory = Server.MapPath( this.UserFilesPath ) ;
+				}
+				return sUserFilesDirectory ;
+			}
+		}
+	}
+}
Index: /FCKeditor.Net/trunk/FredCK.FCKeditorV2.csproj
===================================================================
--- /FCKeditor.Net/trunk/FredCK.FCKeditorV2.csproj	(revision 182)
+++ /FCKeditor.Net/trunk/FredCK.FCKeditorV2.csproj	(revision 182)
@@ -0,0 +1,166 @@
+<VisualStudioProject>
+    <CSHARP
+        ProjectType = "Local"
+        ProductVersion = "7.10.3077"
+        SchemaVersion = "2.0"
+        ProjectGuid = "{F6F32704-97E0-4006-A474-5A9729C6B1B4}"
+    >
+        <Build>
+            <Settings
+                ApplicationIcon = ""
+                AssemblyKeyContainerName = ""
+                AssemblyName = "FredCK.FCKeditorV2"
+                AssemblyOriginatorKeyFile = ""
+                DefaultClientScript = "JScript"
+                DefaultHTMLPageLayout = "Grid"
+                DefaultTargetSchema = "IE50"
+                DelaySign = "false"
+                OutputType = "Library"
+                PreBuildEvent = ""
+                PostBuildEvent = ""
+                RootNamespace = "FredCK.FCKeditorV2"
+                RunPostBuildEvent = "OnBuildSuccess"
+                StartupObject = ""
+            >
+                <Config
+                    Name = "Debug"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "DEBUG;TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "true"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "false"
+                    OutputPath = "bin\Debug\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+                <Config
+                    Name = "Release"
+                    AllowUnsafeBlocks = "false"
+                    BaseAddress = "285212672"
+                    CheckForOverflowUnderflow = "false"
+                    ConfigurationOverrideFile = ""
+                    DefineConstants = "TRACE"
+                    DocumentationFile = ""
+                    DebugSymbols = "false"
+                    FileAlignment = "4096"
+                    IncrementalBuild = "false"
+                    NoStdLib = "false"
+                    NoWarn = ""
+                    Optimize = "true"
+                    OutputPath = "bin\Release\"
+                    RegisterForComInterop = "false"
+                    RemoveIntegerChecks = "false"
+                    TreatWarningsAsErrors = "false"
+                    WarningLevel = "4"
+                />
+            </Settings>
+            <References>
+                <Reference
+                    Name = "System"
+                    AssemblyName = "System"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
+                />
+                <Reference
+                    Name = "System.Data"
+                    AssemblyName = "System.Data"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
+                />
+                <Reference
+                    Name = "System.XML"
+                    AssemblyName = "System.Xml"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
+                />
+                <Reference
+                    Name = "System.Design"
+                    AssemblyName = "System.Design"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Design.dll"
+                />
+                <Reference
+                    Name = "System.Drawing"
+                    AssemblyName = "System.Drawing"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Drawing.dll"
+                />
+                <Reference
+                    Name = "System.Web"
+                    AssemblyName = "System.Web"
+                    HintPath = "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Web.dll"
+                />
+            </References>
+        </Build>
+        <Files>
+            <Include>
+                <File
+                    RelPath = "_assemblykey.snk"
+                    BuildAction = "None"
+                />
+                <File
+                    RelPath = "_documentation.html"
+                    BuildAction = "Content"
+                />
+                <File
+                    RelPath = "_license.txt"
+                    BuildAction = "Content"
+                />
+                <File
+                    RelPath = "_whatsnew.html"
+                    BuildAction = "Content"
+                />
+                <File
+                    RelPath = "AssemblyInfo.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "FCKeditor.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "FCKeditorConfigurations.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "FCKeditorDesigner.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "FileBrowserConnector.cs"
+                    SubType = "ASPXCodeBehind"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "FileWorkerBase.cs"
+                    SubType = "ASPXCodeBehind"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Uploader.cs"
+                    SubType = "ASPXCodeBehind"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "Util.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
+                    RelPath = "XmlUtil.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+            </Include>
+        </Files>
+    </CSHARP>
+</VisualStudioProject>
+
Index: /FCKeditor.Net/trunk/Uploader.cs
===================================================================
--- /FCKeditor.Net/trunk/Uploader.cs	(revision 182)
+++ /FCKeditor.Net/trunk/Uploader.cs	(revision 182)
@@ -0,0 +1,100 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: Uploader.cs
+ * 	This is the code behind of the uploader.aspx page used for Quick Uploads.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+using System ;
+using System.Globalization ;
+using System.Xml ;
+using System.Web ;
+
+namespace FredCK.FCKeditorV2
+{
+	public class Uploader : FileWorkerBase
+	{
+		protected override void OnLoad(EventArgs e)
+		{
+			// Get the posted file.
+			HttpPostedFile oFile = Request.Files["NewFile"] ;
+
+			// Check if the file has been correctly uploaded
+			if ( oFile == null || oFile.ContentLength == 0 )
+			{
+				SendResults( 202 ) ;
+				return ;
+			}
+
+			int iErrorNumber = 0 ;
+			string sFileUrl = "" ;
+
+			// Get the uploaded file name.
+			string sFileName = System.IO.Path.GetFileName( oFile.FileName ) ;
+
+			int iCounter = 0 ;
+
+			while ( true )
+			{
+				string sFilePath = System.IO.Path.Combine( this.UserFilesDirectory, sFileName ) ;
+
+				if ( System.IO.File.Exists( sFilePath ) )
+				{
+					iCounter++ ;
+					sFileName = 
+						System.IO.Path.GetFileNameWithoutExtension( oFile.FileName ) +
+						"(" + iCounter + ")" +
+						System.IO.Path.GetExtension( oFile.FileName ) ;
+
+					iErrorNumber = 201 ;
+				}
+				else
+				{
+					oFile.SaveAs( sFilePath ) ;
+
+					sFileUrl = this.UserFilesPath + sFileName ;
+					break ;
+				}
+			}
+
+			SendResults( iErrorNumber, sFileUrl, sFileName ) ;
+		}
+
+		#region SendResults Method
+
+		private void SendResults( int errorNumber )
+		{
+			SendResults( errorNumber, "", "", "" ) ;
+		}
+
+		private void SendResults( int errorNumber, string fileUrl, string fileName )
+		{
+			SendResults( errorNumber, fileUrl, fileName, "" ) ;
+		}
+
+		private void SendResults( int errorNumber, string fileUrl, string fileName, string customMsg )
+		{
+			Response.Clear() ;
+
+			Response.Write( "<script type=\"text/javascript\">" ) ;
+			Response.Write( "window.parent.OnUploadCompleted(" + errorNumber + ",'" + fileUrl.Replace( "'", "\\'" ) + "','" + fileName.Replace( "'", "\\'" ) + "','" + customMsg.Replace( "'", "\\'" ) + "') ;" ) ;
+			Response.Write( "</script>" ) ;
+
+			Response.End() ;
+		}
+
+		#endregion
+	}
+}
Index: /FCKeditor.Net/trunk/Util.cs
===================================================================
--- /FCKeditor.Net/trunk/Util.cs	(revision 182)
+++ /FCKeditor.Net/trunk/Util.cs	(revision 182)
@@ -0,0 +1,83 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: Util.cs
+ * 	Useful tools.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+using System ;
+using System.Runtime.InteropServices ;
+using System.IO ;
+using System.Collections ;
+
+namespace FredCK.FCKeditorV2
+{
+	public sealed class Util
+	{
+		// The "_mkdir" function is used by the "CreateDirectory" method.
+		[DllImport("msvcrt.dll", SetLastError=true)]
+		private static extern int _mkdir(string path) ;
+
+		private Util()
+		{}
+
+		/// <summary>
+		/// This method should provide safe substitude for Directory.CreateDirectory().
+		/// </summary>
+		/// <param name="path">The directory path to be created.</param>
+		/// <returns>A <see cref="System.IO.DirectoryInfo"/> object for the created directory.</returns>
+		/// <remarks>
+		///		<para>
+		///		This method creates all the directory structure if needed.
+		///		</para>
+		///		<para>
+		///		The System.IO.Directory.CreateDirectory() method has a bug that gives an
+		///		error when trying to create a directory and the user has no rights defined
+		///		in one of its parent directories. The CreateDirectory() should be a good 
+		///		replacement to solve this problem.
+		///		</para>
+		/// </remarks>
+		public static DirectoryInfo CreateDirectory( string path )
+		{
+			ArrayList oDirsToCreate = new ArrayList() ;
+
+			// Create the directory info object for that dir (normalized to its absolute representation).
+			DirectoryInfo oDir = new DirectoryInfo( Path.GetFullPath( path ) ) ;
+
+			// Check the entire path structure to find directories that must be created.
+			while ( oDir != null && !oDir.Exists )
+			{
+				oDirsToCreate.Add( oDir.FullName ) ;
+				oDir = oDir.Parent ;
+			}
+
+			// "oDir == null" means that the check arrives in the root and it doesn't exist too.
+			if ( oDir == null )
+				throw( new System.IO.DirectoryNotFoundException( "Directory \"" + oDirsToCreate[ oDirsToCreate.Count-1 ] + "\" not found." ) ) ;
+
+			// Create all directories that must be created (from bottom to top).
+			for( int i = oDirsToCreate.Count - 1 ; i >= 0 ; i-- )
+			{
+				string sPath = (string)oDirsToCreate[i] ;
+				int iReturn = _mkdir( sPath ) ;
+
+				if ( iReturn != 0 )
+					throw new ApplicationException("Error calling [msvcrt.dll]:_wmkdir(" + sPath + "), error code: " + iReturn );
+			}
+
+			return new DirectoryInfo( path ) ;
+		}
+	}
+}
Index: /FCKeditor.Net/trunk/XmlUtil.cs
===================================================================
--- /FCKeditor.Net/trunk/XmlUtil.cs	(revision 182)
+++ /FCKeditor.Net/trunk/XmlUtil.cs	(revision 182)
@@ -0,0 +1,66 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: XmlUtil.cs
+ * 	Useful tools for XML.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+ */
+
+using System ;
+using System.Globalization ;
+using System.Xml ;
+
+namespace FredCK.FCKeditorV2
+{
+	internal sealed class XmlUtil
+	{
+		private XmlUtil()
+		{}
+
+		public static XmlNode AppendElement( XmlNode node, string newElementName )
+		{
+			return AppendElement( node, newElementName, null ) ;
+		}
+
+		public static XmlNode AppendElement( XmlNode node, string newElementName, string innerValue )
+		{
+			XmlNode oNode ;
+
+			if ( node is XmlDocument )
+                oNode = node.AppendChild( ((XmlDocument)node).CreateElement( newElementName ) ) ;
+			else
+				oNode = node.AppendChild( node.OwnerDocument.CreateElement( newElementName ) ) ;
+
+			if ( innerValue != null )
+				oNode.AppendChild( node.OwnerDocument.CreateTextNode( innerValue ) ) ;
+
+			return oNode ;
+		}
+
+		public static XmlAttribute CreateAttribute( XmlDocument xmlDocument, string name, string value )
+		{
+			XmlAttribute oAtt = xmlDocument.CreateAttribute( name ) ;
+			oAtt.Value = value ;
+			return oAtt ;
+		}
+
+		public static void SetAttribute( XmlNode node, string attributeName, string attributeValue )
+		{
+			if ( node.Attributes[ attributeName ] != null )
+				node.Attributes[ attributeName ].Value = attributeValue ;
+			else
+				node.Attributes.Append( CreateAttribute( node.OwnerDocument, attributeName, attributeValue ) ) ;
+		}
+	}
+}
Index: /FCKeditor.Net/trunk/_documentation.html
===================================================================
--- /FCKeditor.Net/trunk/_documentation.html	(revision 182)
+++ /FCKeditor.Net/trunk/_documentation.html	(revision 182)
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+-->
+<html>
+	<head>
+		<title>FCKeditor - Documentation</title>
+		<style>
+			BODY { FONT-FAMILY: Arial, Verdana, Sans-Serif }
+			P { MARGIN-LEFT: 20px }
+			</style>
+	</head>
+	<body>
+		<h1>FCKeditor Documentation</h1>
+		<p>You can find all the available documentation for FCKeditor online, at our wiki 
+			web site:</p>
+		<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
+			<p><a href="http://wiki.fckeditor.net/">http://wiki.fckeditor.net/</a></p>
+		</blockquote>
+	</body>
+</html>
Index: /FCKeditor.Net/trunk/_license.txt
===================================================================
--- /FCKeditor.Net/trunk/_license.txt	(revision 182)
+++ /FCKeditor.Net/trunk/_license.txt	(revision 182)
@@ -0,0 +1,458 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
Index: /FCKeditor.Net/trunk/_samples/aspx/sample01.aspx
===================================================================
--- /FCKeditor.Net/trunk/_samples/aspx/sample01.aspx	(revision 182)
+++ /FCKeditor.Net/trunk/_samples/aspx/sample01.aspx	(revision 182)
@@ -0,0 +1,64 @@
+<%@ Page ValidateRequest="false" Language="C#" AutoEventWireup="false" %>
+<%@ Register TagPrefix="FCKeditorV2" Namespace="FredCK.FCKeditorV2" Assembly="FredCK.FCKeditorV2" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<%--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: sample01.aspx
+ * 	Sample page.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+--%>
+<script runat="server" language="C#">
+	// This sample doesnt use a code behind file to avoid the user to have to compile
+	// the page to run it.
+	protected override void OnLoad(EventArgs e)
+	{
+		// Automatically calculates the editor base path based on the _samples directory.
+		// This is usefull only for these samples. A real application should use something like this:
+		// FCKeditor1.BasePath = '/FCKeditor/' ;	// '/FCKeditor/' is the default value.
+		string sPath = Request.Url.AbsolutePath ;
+		int iIndex = sPath.LastIndexOf( "_samples") ;
+		FCKeditor1.BasePath = sPath.Remove( iIndex, sPath.Length - iIndex  ) ;
+	}
+</script>
+<html>
+	<head>
+		<title>FCKeditor - Sample</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../sample.css" rel="stylesheet" type="text/css" />
+		<script type="text/javascript">
+
+function FCKeditor_OnComplete( editorInstance )
+{
+	window.status = editorInstance.Description ;
+}
+
+		</script>
+	</head>
+	<body>
+		<h1>FCKeditor - ASP.Net - Sample 1</h1>
+		This sample displays a normal HTML form with an FCKeditor with full features 
+		enabled.
+		<br>
+		No code behind is used so you don't need to compile the ASPX pages to make it 
+		work. All other samples use code behind.
+		<hr>
+		<form action="sampleposteddata.aspx" method="post" target="_blank">
+			<FCKeditorV2:FCKeditor id="FCKeditor1" runat="server" value='This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">FCKeditor</a>.'></FCKeditorV2:FCKeditor>
+			<br>
+			<input type="submit" value="Submit">
+		</form>
+	</body>
+</html>
Index: /FCKeditor.Net/trunk/_samples/aspx/sample02.aspx
===================================================================
--- /FCKeditor.Net/trunk/_samples/aspx/sample02.aspx	(revision 182)
+++ /FCKeditor.Net/trunk/_samples/aspx/sample02.aspx	(revision 182)
@@ -0,0 +1,56 @@
+<%@ Page ValidateRequest="false" language="c#" Codebehind="sample02.aspx.cs" Inherits="FredCK.FCKeditorV2.Samples.Sample02" AutoEventWireup="false" %>
+<%@ Register TagPrefix="fckeditorv2" Namespace="FredCK.FCKeditorV2" Assembly="FredCK.FCKeditorV2" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<%--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: sample02.aspx
+ * 	Sample page.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+--%>
+<html>
+	<head>
+		<title>FCKeditor - Sample</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../sample.css" rel="stylesheet" type="text/css">
+		<script type="text/javascript">
+
+function FCKeditor_OnComplete( editorInstance )
+{
+	window.status = editorInstance.Description ;
+}
+
+		</script>
+	</head>
+	<body>
+		<h1>FCKeditor - ASP.Net - Sample 2</h1>
+		This sample displays a normal HTML form with an FCKeditor with full features 
+		enabled.
+		<br>
+		The only difference from sample01 is that this page uses code behind and the 
+		submitted data is shown in the page itself.
+		<hr>
+		<form method="post" runat="server">
+			<FCKeditorV2:FCKeditor id="FCKeditor1" runat="server" />
+			<br>
+			<input id="btnSubmit" type="submit" value="Submit" runat="server">
+		</form>
+		<div id="eSubmittedDataBlock" runat="server">
+			<hr>
+			This is the submitted data:<br>
+			<textarea id="txtSubmitted" runat="server" rows="10" cols="60" style="WIDTH: 100%" readonly></textarea>
+		</div>
+	</body>
+</html>
Index: /FCKeditor.Net/trunk/_samples/aspx/sample02.aspx.cs
===================================================================
--- /FCKeditor.Net/trunk/_samples/aspx/sample02.aspx.cs	(revision 182)
+++ /FCKeditor.Net/trunk/_samples/aspx/sample02.aspx.cs	(revision 182)
@@ -0,0 +1,75 @@
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Web;
+using System.Web.SessionState;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.HtmlControls;
+
+namespace FredCK.FCKeditorV2.Samples
+{
+	public class Sample02 : System.Web.UI.Page
+	{
+		protected System.Web.UI.HtmlControls.HtmlTextArea txtSubmitted;
+		protected System.Web.UI.HtmlControls.HtmlInputButton btnSubmit;
+		protected System.Web.UI.HtmlControls.HtmlGenericControl eSubmittedDataBlock;
+
+		protected FredCK.FCKeditorV2.FCKeditor FCKeditor1;
+	
+		private void Page_Load(object sender, System.EventArgs e)
+		{
+			// We'll do initializartion settings in the editor only the first time.
+			// Once the page is submitted, nothing must be done in the OnLoad.
+			if ( Page.IsPostBack )
+				return ;
+
+			eSubmittedDataBlock.Visible = false ;
+
+			// Automatically calculates the editor base path based on the _samples directory.
+			// This is usefull only for these samples. A real application should use something like this:
+			// FCKeditor1.BasePath = '/FCKeditor/' ;	// '/FCKeditor/' is the default value.
+			string sPath = Request.Url.AbsolutePath ;
+			int iIndex = sPath.LastIndexOf( "_samples") ;
+			sPath = sPath.Remove( iIndex, sPath.Length - iIndex  ) ;
+			
+			FCKeditor1.BasePath = sPath ;
+			FCKeditor1.Value = "This is some <strong>sample text</strong>. You are using <a href=\"http://www.fckeditor.net/\">FCKeditor</a>." ;
+			FCKeditor1.ImageBrowserURL	= sPath + "editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/aspx/connector.aspx" ;
+			FCKeditor1.LinkBrowserURL	= sPath + "editor/filemanager/browser/default/browser.html?Connector=connectors/aspx/connector.aspx" ;
+		}
+
+		#region Web Form Designer generated code
+		override protected void OnInit(EventArgs e)
+		{
+			//
+			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
+			//
+			InitializeComponent();
+			base.OnInit(e);
+
+			// This events declarations has been moved to the "OnInit" method
+			// to avoid a bug in Visual Studio to delete then without any advice.
+			this.Load += new System.EventHandler(this.Page_Load);
+			this.btnSubmit.ServerClick += new System.EventHandler(this.btnSubmit_ServerClick);
+		}
+		
+		/// <summary>
+		/// Required method for Designer support - do not modify
+		/// the contents of this method with the code editor.
+		/// </summary>
+		private void InitializeComponent()
+		{    
+
+		}
+		#endregion
+
+		private void btnSubmit_ServerClick(object sender, System.EventArgs e)
+		{
+			eSubmittedDataBlock.Visible = true ;
+			txtSubmitted.Value = HttpUtility.HtmlEncode( FCKeditor1.Value ) ;
+		}
+	}
+}
Index: /FCKeditor.Net/trunk/_samples/aspx/sample02.aspx.resx
===================================================================
--- /FCKeditor.Net/trunk/_samples/aspx/sample02.aspx.resx	(revision 182)
+++ /FCKeditor.Net/trunk/_samples/aspx/sample02.aspx.resx	(revision 182)
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 1.3
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">1.3</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1">this is my long string</data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        [base64 mime encoded serialized .NET Framework object]
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        [base64 mime encoded string representing a byte array form of the .NET Framework object]
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used forserialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>1.3</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="$this.TrayAutoArrange" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </data>
+  <data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>Private</value>
+  </data>
+  <data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>False</value>
+  </data>
+</root>
Index: /FCKeditor.Net/trunk/_samples/aspx/sample03.ascx
===================================================================
--- /FCKeditor.Net/trunk/_samples/aspx/sample03.ascx	(revision 182)
+++ /FCKeditor.Net/trunk/_samples/aspx/sample03.ascx	(revision 182)
@@ -0,0 +1,3 @@
+<%@ Register TagPrefix="fckeditorv2" Namespace="FredCK.FCKeditorV2" Assembly="FredCK.FCKeditorV2" %>
+<%@ Control Language="c#" AutoEventWireup="false" Codebehind="sample03.ascx.cs" Inherits="FredCK.FCKeditorV2.Samples.sample031" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
+<FCKeditorV2:FCKeditor id="FCKeditor1" ImageBrowserURL="editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/aspx/connector.aspx" runat="server" />
Index: /FCKeditor.Net/trunk/_samples/aspx/sample03.ascx.cs
===================================================================
--- /FCKeditor.Net/trunk/_samples/aspx/sample03.ascx.cs	(revision 182)
+++ /FCKeditor.Net/trunk/_samples/aspx/sample03.ascx.cs	(revision 182)
@@ -0,0 +1,63 @@
+namespace FredCK.FCKeditorV2.Samples
+{
+	using System;
+	using System.Data;
+	using System.Drawing;
+	using System.Web;
+	using System.Web.UI.WebControls;
+	using System.Web.UI.HtmlControls;
+
+	public class sample031 : System.Web.UI.UserControl
+	{
+		protected FredCK.FCKeditorV2.FCKeditor FCKeditor1 ;
+
+		private void Page_Load(object sender, System.EventArgs e)
+		{
+			// We'll do initializartion settings in the editor only the first time.
+			// Once the page is submitted, nothing must be done in the OnLoad.
+			if ( Page.IsPostBack )
+				return ;
+
+			// Automatically calculates the editor base path based on the _samples directory.
+			// This is usefull only for these samples. A real application should use something like this:
+			// FCKeditor1.BasePath = '/FCKeditor/' ;	// '/FCKeditor/' is the default value.
+			string sPath = Request.Url.AbsolutePath ;
+			int iIndex = sPath.LastIndexOf( "_samples") ;
+			sPath = sPath.Remove( iIndex, sPath.Length - iIndex  ) ;
+			
+			FCKeditor1.BasePath = sPath ;
+			FCKeditor1.Value = "This is some <strong>sample text</strong>. You are using <a href=\"http://www.fckeditor.net/\">FCKeditor</a>." ;
+			FCKeditor1.ImageBrowserURL	= sPath + "editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/aspx/connector.aspx" ;
+			FCKeditor1.LinkBrowserURL	= sPath + "editor/filemanager/browser/default/browser.html?Connector=connectors/aspx/connector.aspx" ;
+		}
+
+		public string GetFCKeditorValue()
+		{
+			return FCKeditor1.Value ;
+		}
+
+		#region Web Form Designer generated code
+		override protected void OnInit(EventArgs e)
+		{
+			//
+			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
+			//
+			InitializeComponent();
+			base.OnInit(e);
+
+			// This events declarations has been moved to the "OnInit" method
+			// to avoid a bug in Visual Studio to delete then without any advice.
+			this.Load += new System.EventHandler(this.Page_Load);
+		}
+		
+		/// <summary>
+		///		Required method for Designer support - do not modify
+		///		the contents of this method with the code editor.
+		/// </summary>
+		private void InitializeComponent()
+		{
+
+		}
+		#endregion
+	}
+}
Index: /FCKeditor.Net/trunk/_samples/aspx/sample03.ascx.resx
===================================================================
--- /FCKeditor.Net/trunk/_samples/aspx/sample03.ascx.resx	(revision 182)
+++ /FCKeditor.Net/trunk/_samples/aspx/sample03.ascx.resx	(revision 182)
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 1.3
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">1.3</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1">this is my long string</data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        [base64 mime encoded serialized .NET Framework object]
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        [base64 mime encoded string representing a byte array form of the .NET Framework object]
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used forserialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>1.3</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>False</value>
+  </data>
+  <data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>Private</value>
+  </data>
+  <data name="$this.TrayAutoArrange" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </data>
+</root>
Index: /FCKeditor.Net/trunk/_samples/aspx/sample03.aspx
===================================================================
--- /FCKeditor.Net/trunk/_samples/aspx/sample03.aspx	(revision 182)
+++ /FCKeditor.Net/trunk/_samples/aspx/sample03.aspx	(revision 182)
@@ -0,0 +1,57 @@
+<%@ Page language="c#" Codebehind="sample03.aspx.cs" AutoEventWireup="false" Inherits="FredCK.FCKeditorV2.Samples.sample03" %>
+<%@ Register TagPrefix="uc1" TagName="sample03" Src="sample03.ascx" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<%--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: sample03.aspx
+ * 	Sample page.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+--%>
+<html>
+	<head>
+		<title>FCKeditor - Sample</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../sample.css" rel="stylesheet" type="text/css">
+		<script type="text/javascript">
+
+function FCKeditor_OnComplete( editorInstance )
+{
+	window.status = editorInstance.Description ;
+}
+
+		</script>
+	</head>
+	<body>
+		<h1>FCKeditor - ASP.Net - Sample 3</h1>
+		This sample displays a normal HTML form with an FCKeditor with full features 
+		enabled.
+		<br>
+		The only difference from sample02 is that this page uses a custom control that 
+		includes the editor in the back. This is a test page to see if the editor works 
+		over a control tree hierarchy.
+		<hr>
+		<form method="post" runat="server">
+			<uc1:sample03 id="MyCustomControl" runat="server"></uc1:sample03>
+			<br>
+			<input id="btnSubmit" type="submit" value="Submit" runat="server">
+		</form>
+		<div id="eSubmittedDataBlock" runat="server">
+			<hr>
+			This is the submitted data:<br>
+			<textarea id="txtSubmitted" runat="server" rows="10" cols="60" style="WIDTH: 100%" readonly></textarea>
+		</div>
+	</body>
+</html>
Index: /FCKeditor.Net/trunk/_samples/aspx/sample03.aspx.cs
===================================================================
--- /FCKeditor.Net/trunk/_samples/aspx/sample03.aspx.cs	(revision 182)
+++ /FCKeditor.Net/trunk/_samples/aspx/sample03.aspx.cs	(revision 182)
@@ -0,0 +1,62 @@
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Web;
+using System.Web.SessionState;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using System.Web.UI.HtmlControls;
+
+namespace FredCK.FCKeditorV2.Samples
+{
+	public class sample03 : System.Web.UI.Page
+	{
+		protected System.Web.UI.HtmlControls.HtmlInputButton btnSubmit;
+		protected System.Web.UI.HtmlControls.HtmlGenericControl eSubmittedDataBlock;
+		protected System.Web.UI.HtmlControls.HtmlTextArea txtSubmitted;
+
+		protected sample031 MyCustomControl ;
+	
+		private void Page_Load(object sender, System.EventArgs e)
+		{
+			// We'll do initializartion only the first time.
+			// Once the page is submitted, nothing must be done in the OnLoad.
+			if ( Page.IsPostBack )
+				return ;
+
+			eSubmittedDataBlock.Visible = false ;
+		}
+
+		#region Web Form Designer generated code
+		override protected void OnInit(EventArgs e)
+		{
+			//
+			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
+			//
+			InitializeComponent();
+			base.OnInit(e);
+
+			// This events declarations has been moved to the "OnInit" method
+			// to avoid a bug in Visual Studio to delete then without any advice.
+			this.Load += new System.EventHandler(this.Page_Load);
+			this.btnSubmit.ServerClick += new System.EventHandler(this.btnSubmit_ServerClick);
+		}
+		
+		/// <summary>
+		/// Required method for Designer support - do not modify
+		/// the contents of this method with the code editor.
+		/// </summary>
+		private void InitializeComponent()
+		{    
+		}
+		#endregion
+
+		private void btnSubmit_ServerClick(object sender, System.EventArgs e)
+		{
+			eSubmittedDataBlock.Visible = true ;
+			txtSubmitted.Value = HttpUtility.HtmlEncode( MyCustomControl.GetFCKeditorValue() ) ;
+		}
+	}
+}
Index: /FCKeditor.Net/trunk/_samples/aspx/sample03.aspx.resx
===================================================================
--- /FCKeditor.Net/trunk/_samples/aspx/sample03.aspx.resx	(revision 182)
+++ /FCKeditor.Net/trunk/_samples/aspx/sample03.aspx.resx	(revision 182)
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 1.3
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">1.3</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1">this is my long string</data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        [base64 mime encoded serialized .NET Framework object]
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        [base64 mime encoded string representing a byte array form of the .NET Framework object]
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used forserialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>1.3</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="$this.TrayAutoArrange" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </data>
+  <data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>Private</value>
+  </data>
+  <data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>False</value>
+  </data>
+</root>
Index: /FCKeditor.Net/trunk/_samples/aspx/sampleposteddata.aspx
===================================================================
--- /FCKeditor.Net/trunk/_samples/aspx/sampleposteddata.aspx	(revision 182)
+++ /FCKeditor.Net/trunk/_samples/aspx/sampleposteddata.aspx	(revision 182)
@@ -0,0 +1,45 @@
+<%@ Page ValidateRequest="false" Language="C#" AutoEventWireup="false" %>
+<%--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+ * 
+ * File Name: sampleposteddata.aspx
+ * 	This page lists the data posted by a form.
+ * 
+ * File Authors:
+ * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
+--%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
+<html>
+	<head>
+		<title>FCKeditor - Samples - Posted Data</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<link href="../sample.css" rel="stylesheet" type="text/css" />
+	</head>
+	<body>
+		<h1>FCKeditor - Samples - Posted Data</h1>
+		This page lists all data posted by the form.
+		<hr>
+		<table width="100%" border="1" cellspacing="0" bordercolor="#999999">
+			<tr style="FONT-WEIGHT: bold; COLOR: #dddddd; BACKGROUND-COLOR: #999999">
+				<td noWrap>Field Name&nbsp;&nbsp;</td>
+				<td>Value</td>
+			</tr>
+			<% foreach ( string sForm in Request.Form ) { %>
+			<tr>
+				<td valign="top" nowrap><b><%=sForm%></b></td>
+				<td width="100%"><%=Server.HtmlEncode( Request.Form[sForm] )%></td>
+			</tr>
+			<% } %>
+		</table>
+	</body>
+</html>
Index: /FCKeditor.Net/trunk/_whatsnew.html
===================================================================
--- /FCKeditor.Net/trunk/_whatsnew.html	(revision 182)
+++ /FCKeditor.Net/trunk/_whatsnew.html	(revision 182)
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ * 
+ * Licensed under the terms of the GNU Lesser General Public License:
+ * 		http://www.opensource.org/licenses/lgpl-license.php
+ * 
+ * For further information visit:
+ * 		http://www.fckeditor.net/
+ * 
+ * "Support Open Source software. What about a donation today?"
+-->
+<html>
+	<head>
+		<title>FCKeditor - What's New</title>
+		<style>
+			body { font-family: Arial, Verdana, Sans-Serif; }
+			p { margin-left: 20px; }
+		</style>
+	</head>
+	<body>
+		<h3>Version 2.2</h3>
+		<P>New Features and Improvements:</P>
+		<UL>
+			<LI>
+				The <STRONG>Quick File Uploader</STRONG>
+			is now available. So you point&nbsp;allo Uploading 
+			configuration&nbsp;setting&nbsp;to the 
+			editor/filemanager/upload/aspx/upload.aspx file.
+			<LI>
+				The rendered output is&nbsp;now <STRONG>XHTML</STRONG>
+			compatible.
+			<LI>
+			You can set the QueryString value "fcksource=true" to load the editor using the 
+			source files (located in the _source directory) instead of the compressed ones. 
+			Thanks to Kae Verens for the suggestion.
+			<LI>
+				<STRONG>Attention</STRONG>: for security reasons, it is not anymore possible to 
+				pass the user files directory path by the URL.</LI></UL>
+		<P>Fixed Bugs:</P>
+		<UL>
+			<LI>
+				[<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1249796&amp;group_id=75348&amp;atid=543653"
+					target="_blank">SF BUG-1249796</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1260153&amp;group_id=75348&amp;atid=543653"
+					target="_blank">SF BUG-1260153</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1308718&amp;group_id=75348&amp;atid=543653"
+					target="_blank">SF BUG-1308718</A>] The editor is now loading correctly 
+			over Firefox when placed inside a control hierarchy.
+			<LI>
+				The configurations set in the editor are now saved in the viewstate and persist 
+				during posts.</LI></UL>
+		<H3>Version 2.1</H3>
+		<P>New Features and Improvements:</P>
+		<UL>
+			<LI>
+				All <STRONG>configurations</STRONG> can now be set as component <STRONG>properties</STRONG>.
+			<LI>
+				The editor now resolves <STRONG>application relative paths</STRONG>
+			(starting with tilde "~"). Thanks to "theyoyoman".
+			<LI>
+				The samples have been moved to the FCKeditor.Net package. In this way we can 
+				provide a richer and more organized set of samples.</LI></UL>
+		<P>Fixed Bugs:</P>
+		<UL>
+			<LI>
+				[<A href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=543653" target="_blank">SF 
+					BUG-1118200</A>] [<A href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1117410&amp;group_id=75348&amp;atid=543653"
+					target="_blank">SF BUG-1117410</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1091348&amp;group_id=75348&amp;atid=543653"
+					target="_blank">SF BUG-1091348</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1150981&amp;group_id=75348&amp;atid=543653"
+					target="_blank">SF BUG-1150981</A>] [<A href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1109086&amp;group_id=75348&amp;atid=543653"
+					target="_blank">SF BUG-1109086</A>] There was an incorrect use of the 
+			UniqueID property when rendering the editor HTML. It was causing errors when 
+			running the editor over a User Control. It has been fixed.
+			<LI>
+			The component now detects IE 5.5 browsers correctly. Thanks to "chayes20".
+			<LI>
+				The references to fckeditor.js in the samples have been removed. There were 
+				never required. It was just a "typo" in the sample pages.</LI></UL>
+		</SPAN>
+	</body>
+</html>
