Index: branches/2.8.x/CHANGELOG
===================================================================
--- branches/2.8.x/CHANGELOG	(revision 1201)
+++ branches/2.8.x/CHANGELOG	(revision 1202)
@@ -12,6 +12,9 @@
 
 ------------------------------------- 2.8.1 -------------------------------------
 29-Nov-2009 Dietmar Woellbrink (Luisehahne)
+!	added missing swobject plugin in FCKeditor
+!	bug fixed in flvplayer
+29-Nov-2009 Dietmar Woellbrink (Luisehahne)
 !	stop working plugin flvplayer in FCKeditor until fixed
 29-Nov-2009 Dietmar Woellbrink (Luisehahne)
 !	fixed an undefined index in settings.php
Index: branches/2.8.x/wb/modules/fckeditor/info.php
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/info.php	(revision 1201)
+++ branches/2.8.x/wb/modules/fckeditor/info.php	(revision 1202)
@@ -131,7 +131,7 @@
 */
 
 $module_directory		= 'fckeditor';
-$module_name			= 'FCKeditor 2.6.5 WB Version 2.9.1';
+$module_name			= 'FCKeditor';
 $module_function		= 'WYSIWYG';
 $module_version			= '2.9.3';
 $module_guid            = 'ED3B82C1-DB1E-447A-A0FD-E952AFC5F3B9';
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/fckconfig.js
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/fckconfig.js	(revision 1201)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/fckconfig.js	(revision 1202)
@@ -55,8 +55,9 @@
 FCKConfig.AutoGrowMax = 400 ;
 
 // FCKConfig.ProtectedSource.Add( /<%[\s\S]*?%>/g ) ;	// ASP style server side code <%...%>
+// FCKConfig.ProtectedSource.Add( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ) ;	// ASP.Net style tags <asp:control>
 // FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ;	// PHP style server side code
-// FCKConfig.ProtectedSource.Add( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ) ;	// ASP.Net style tags <asp:control>
+// FCKConfig.ProtectedSource.Add( /<object[\s|\S]+?<\/object>/gi ) ;
 
 FCKConfig.AutoDetectLanguage	= true ;
 FCKConfig.DefaultLanguage		= 'en' ;
@@ -295,6 +296,11 @@
 FCKConfig.FlashBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Flash&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
 FCKConfig.FlashBrowserWindowWidth  = FCKConfig.ScreenWidth * 0.7 ;	//70% ;
 FCKConfig.FlashBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ;	//70% ;
+// Added for flv support.
+FCKConfig.MediaBrowser = true ;
+FCKConfig.MediaBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=Media&Connector=' + encodeURIComponent( FCKConfig.BasePath + 'filemanager/connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ) ;
+FCKConfig.MediaBrowserWindowWidth = FCKConfig.ScreenWidth * 0.7 ; //70% ;
+FCKConfig.MediaBrowserWindowHeight = FCKConfig.ScreenHeight * 0.7 ; //70% ;
 
 FCKConfig.LinkUpload = true ;
 FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/connectors/' + _QuickUploadLanguage + '/upload.' + _QuickUploadExtension ;
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash.html
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash.html	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash.html	(revision 1202)
@@ -0,0 +1,214 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Flash Properties dialog window.
+-->
+<html>
+	<head>
+		<title>Flash Properties</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta content="noindex, nofollow" name="robots">
+		<script src="fck_flash.js" type="text/javascript"></script>
+		<script type="text/javascript">
+
+// Set the Skin CSS.
+if (FCKTools.GetStyleHtml)
+	document.write( FCKTools.GetStyleHtml( GetCommonDialogCss( FCKConfig.FullBasePath + 'dialog/' ) ) ) ;
+else
+	document.write( '<link href="' + oEditor.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+
+		</script>
+	</head>
+	<body scroll="no" style="OVERFLOW: hidden">
+		<div id="divInfo">
+			<table cellSpacing="1" cellPadding="1" width="100%" border="0">
+				<tr>
+					<td>
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td width="100%"><label for="txtUrl" fckLang="DlgImgURL">URL</label>
+								</td>
+								<td id="tdBrowse" style="DISPLAY: none" noWrap rowSpan="2">&nbsp; <input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server" fckLang="DlgBtnBrowseServer">
+								</td>
+							</tr>
+							<tr>
+								<td vAlign="top"><input id="txtUrl" onblur="UpdatePreview();" style="WIDTH: 100%" type="text">
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+				<TR>
+					<TD>
+						<table cellSpacing="0" cellPadding="0" border="0">
+							<TR>
+								<TD nowrap>
+									<label for="txtWidth" fckLang="DlgImgWidth">Width</label><br>
+									<input id="txtWidth" onkeypress="return IsDigit(event);" type="text" size="3">
+								</TD>
+								<TD>&nbsp;</TD>
+								<TD>
+									<label for="txtHeight" fckLang="DlgImgHeight">Height</label><br>
+									<input id="txtHeight" onkeypress="return IsDigit(event);" type="text" size="3">
+								</TD>
+							</TR>
+						</table>
+					</TD>
+				</TR>
+				<tr>
+					<td vAlign="top">
+						<table cellSpacing="0" cellPadding="0" width="100%" border="0">
+							<tr>
+								<td valign="top" width="100%">
+									<table cellSpacing="0" cellPadding="0" width="100%">
+										<tr>
+											<td><span fckLang="DlgImgPreview">Preview</span></td>
+										</tr>
+										<tr>
+											<td id="ePreviewCell" valign="top" class="FlashPreviewArea"><iframe src="fck_flash_preview.html" frameborder="0" marginheight="0" marginwidth="0"></iframe></td>
+										</tr>
+									</table>
+								</td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+		</div>
+		<div id="divUpload" style="DISPLAY: none">
+			<form id="frmUpload" method="post" target="UploadWindow" enctype="multipart/form-data" action="" onsubmit="return CheckUpload();">
+				<span fckLang="DlgLnkUpload">Upload</span><br />
+				<input id="txtUploadFile" style="WIDTH: 100%" type="file" size="40" name="NewFile" /><br />
+				<br />
+				<input id="btnUpload" type="submit" value="Send it to the Server" fckLang="DlgLnkBtnUpload" />
+				<script type="text/javascript">
+					var voidUrl = 'javascript:void(0)' ;
+					if (typeof FCKTools.GetVoidUrl == 'function')
+						voidUrl = FCKTools.GetVoidUrl();
+
+					document.write( '<iframe name="UploadWindow" style="DISPLAY: none" src="' + voidUrl + '"><\/iframe>' ) ;
+				</script>
+			</form>
+		</div>
+		<div id="divAdvanced" style="DISPLAY: none">
+			<TABLE cellSpacing="0" cellPadding="0" border="0">
+				<TR>
+					<TD nowrap>
+						<label fckLang="DlgFlashScale" for="cmbScale">Scale</label><BR>
+						<select id="cmbScale">
+							<option value="" selected></option>
+							<option value="showall" fckLang="DlgFlashScaleAll">Show all</option>
+							<option value="noborder" fckLang="DlgFlashScaleNoBorder">No Border</option>
+							<option value="exactfit" fckLang="DlgFlashScaleFit">Exact Fit</option>
+						</select></TD>
+					<TD>&nbsp;&nbsp;&nbsp; &nbsp;
+					</TD>
+					<td valign="bottom">
+						<table>
+							<tr>
+								<td><input id="chkAutoPlay" type="checkbox" checked></td>
+								<td><label for="chkAutoPlay" nowrap fckLang="DlgFlashChkPlay">Auto Play</label>&nbsp;&nbsp;</td>
+								<td><input id="chkLoop" type="checkbox" checked></td>
+								<td><label for="chkLoop" nowrap fckLang="DlgFlashChkLoop">Loop</label>&nbsp;&nbsp;</td>
+								<td><input id="chkMenu" type="checkbox" checked></td>
+								<td><label for="chkMenu" nowrap fckLang="DlgFlashChkMenu">Enable Flash Menu</label></td>
+							</tr>
+						</table>
+					</td>
+				</TR>
+				<tr>
+					<td>
+						<label for="allowscriptaccess" fckLang="DlgFlashScriptaccess">Script access</label><br>
+						<select id="allowscriptaccess">
+							<option value=""></option>
+							<option value="always" fckLang="DlgFlashAlways">Always</option>
+							<option value="sameDomain" fckLang="DlgFlashSameDomain">Same Domain</option>
+							<option value="never" fckLang="DlgFlashNever">Never</option>
+						</select>
+					</td>
+					<td></td>
+					<td>
+						<label for="wmode" fckLang="DlgFlashWindowMode">Window mode</label><br>
+						<select id="wmode">
+							<option value=""></option>
+							<option value="window" fckLang="DlgFlashWindow">Window</option>
+							<option value="opaque" fckLang="DlgFlashOpaque">Opaque</option>
+							<option value="transparent" fckLang="DlgFlashTransparent">Transparent</option>
+						</select>
+						&nbsp;&nbsp;&nbsp;
+						<input id="allowfullscreen" type="checkbox">
+						<label for="allowfullscreen" nowrap fckLang="DlgFlashAllowfullscreen">Allow Full Screen</label>
+
+					</td>
+				</tr>
+			</TABLE>
+
+			<br>
+			&nbsp;
+			<table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">
+				<tr>
+					<td vAlign="top" width="50%"><label fckLang="DlgGenId" for="txtAttId">Id</label><br>
+						<input id="txtAttId" style="WIDTH: 100%" type="text">
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td vAlign="top" nowrap><label fckLang="DlgGenClass" for="txtAttClasses">Stylesheet Classes</label><br>
+						<input id="txtAttClasses" style="WIDTH: 100%" type="text">
+					</td>
+					<td>&nbsp;&nbsp;</td>
+					<td vAlign="top" nowrap width="50%" for="txtAttTitle">&nbsp;<label fckLang="DlgGenTitle">Advisory Title</label><br>
+						<input id="txtAttTitle" style="WIDTH: 100%" type="text">
+					</td>
+				</tr>
+			</table>
+			<label fckLang="DlgGenStyle" for="txtAttStyle">Style</label><br>
+			<input id="txtAttStyle" style="WIDTH: 100%" type="text">
+		</div>
+
+		<div id="divFlashvars" style="DISPLAY: none">
+					<table width="100%">
+						<tr>
+							<td width="50%"><span fckLang="DlgSelectOpText">Text</span><br>
+								<input id="txtText" style="WIDTH: 100%" type="text">
+							</td>
+							<td width="50%"><span fckLang="DlgSelectOpValue">Value</span><br>
+								<input id="txtValue" style="WIDTH: 100%" type="text">
+							</td>
+							<td vAlign="bottom"><input onclick="Add();" type="button" fckLang="DlgSelectBtnAdd" value="Add"></td>
+							<td vAlign="bottom"><input onclick="Modify();" type="button" fckLang="DlgSelectBtnModify" value="Modify"></td>
+						</tr>
+						<tr>
+							<td rowSpan="2"><select id="cmbText" style="WIDTH: 100%" onchange="GetE('cmbValue').selectedIndex = this.selectedIndex;Select(this);"
+									size="5"></select>
+							</td>
+							<td rowSpan="2"><select id="cmbValue" style="WIDTH: 100%" onchange="GetE('cmbText').selectedIndex = this.selectedIndex;Select(this);"
+									size="5"></select>
+							</td>
+							<td vAlign="top" colSpan="2">
+							</td>
+						</tr>
+						<TR>
+							<TD vAlign="bottom" colSpan="4">
+								<input onclick="Delete();" type="button" fckLang="DlgSelectBtnDelete" value="Delete"></TD>
+						</TR>
+					</table>
+		</div>
+	</body>
+</html>
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash_preview.html
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash_preview.html	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash_preview.html	(revision 1202)
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Preview page for the Flash dialog window.
+-->
+<html>
+	<head>
+		<title></title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta name="robots" content="noindex, nofollow">
+		<script type="text/javascript">
+
+var FCKTools	= window.parent.FCKTools ;
+var FCKConfig	= window.parent.FCKConfig ;
+
+function Import(aSrc) {
+   document.write('<scr'+'ipt type="text/javascript" src="' + aSrc + '"></sc' + 'ript>');
+}
+
+Import(FCKConfig.FullBasePath + 'dialog/common/fck_dialog_common.js');
+
+		</script>
+		<script type="text/javascript">
+// Set the Skin CSS.
+if (FCKTools.GetStyleHtml)
+{
+	document.write( FCKTools.GetStyleHtml( GetCommonDialogCss( FCKConfig.FullBasePath + 'dialog/' ) ) ) ;
+	document.write( FCKTools.GetStyleHtml( FCKConfig.SkinDialogCSS ) ) ;
+}
+else
+{
+	document.write( '<link href="' + window.parent.FCKConfig.SkinPath + 'fck_dialog.css" type="text/css" rel="stylesheet">' ) ;
+	document.write( '<link href="' + window.parent.FCKConfig.BasePath + 'dialog/common/fck_dialog_common.css" type="text/css" rel="stylesheet">' ) ;
+}
+
+if ( window.parent.FCKConfig.BaseHref.length > 0 )
+	document.write( '<base href="' + window.parent.FCKConfig.BaseHref + '">' ) ;
+
+window.onload = function()
+{
+	window.parent.SetPreviewElement( document.body ) ;
+}
+
+		</script>
+	</head>
+	<body style="COLOR: #000000; BACKGROUND-COLOR: #ffffff"></body>
+</html>
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash.js
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash.js	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/fck_flash.js	(revision 1202)
@@ -0,0 +1,558 @@
+﻿/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ *  - GNU General Public License Version 2 or later (the "GPL")
+ *    http://www.gnu.org/licenses/gpl.html
+ *
+ *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ *    http://www.gnu.org/licenses/lgpl.html
+ *
+ *  - Mozilla Public License Version 1.1 or later (the "MPL")
+ *    http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Scripts related to the Flash dialog window (see fck_flash.html).
+ */
+function Import(aSrc) {
+   document.write('<scr'+'ipt type="text/javascript" src="' + aSrc + '"></sc' + 'ript>');
+}
+
+var dialog		= window.parent ;
+var oEditor		= dialog.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKTools	= oEditor.FCKTools ;
+
+Import(FCKConfig.FullBasePath + 'dialog/common/fck_dialog_common.js');
+
+var oListText ;
+var oListValue ;
+
+//#### Dialog Tabs
+
+// Set the dialog tabs.
+dialog.AddTab( 'Info', oEditor.FCKLang.DlgInfoTab ) ;
+
+if ( FCKConfig.FlashUpload )
+	dialog.AddTab( 'Upload', FCKLang.DlgLnkUpload ) ;
+
+if ( !FCKConfig.FlashDlgHideAdvanced )
+{
+	dialog.AddTab( 'Advanced', oEditor.FCKLang.DlgAdvancedTag ) ;
+	dialog.AddTab( 'Flashvars', oEditor.FCKLang.DlgFlashvars ) ;
+}
+
+// Function called when a dialog tag is selected.
+function OnDialogTabChange( tabCode )
+{
+	ShowE('divInfo'		, ( tabCode == 'Info' ) ) ;
+	ShowE('divUpload'	, ( tabCode == 'Upload' ) ) ;
+	ShowE('divAdvanced'	, ( tabCode == 'Advanced' ) ) ;
+	ShowE('divFlashvars'	, ( tabCode == 'Flashvars' ) ) ;
+}
+
+// Get the selected flash embed (if available).
+var oFakeImage = FCK.Selection.GetSelectedElement() ;
+var oParsedFlash ;
+var oEmbed;
+
+if ( oFakeImage )
+{
+	if ( oFakeImage.getAttribute( 'SwfObjectNumber' ) )
+	{
+		oParsedFlash = FCK.SwfobjectHandler.getItem( oFakeImage.getAttribute( 'SwfObjectNumber' ) );
+		oParsedFlash.updateDimensions( oFakeImage );
+	}
+	else
+	{
+		if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash') )
+			oEmbed = FCK.GetRealElement( oFakeImage ) ;
+
+		oFakeImage = null ;
+	}
+}
+if ( !oParsedFlash )
+		oParsedFlash = FCK.SwfobjectHandler.createNew() ;
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	oListText	= document.getElementById( 'cmbText' ) ;
+	oListValue	= document.getElementById( 'cmbValue' ) ;
+
+	// Fix the lists widths. (Bug #970)
+	oListText.style.width = "120px"; //oListText.offsetWidth ;
+	oListValue.style.width = "120px"; //oListValue.offsetWidth ;
+
+	// Load the selected element information (if any).
+	LoadSelection() ;
+
+	// Show/Hide the "Browse Server" button.
+	GetE('tdBrowse').style.display = FCKConfig.FlashBrowser	? '' : 'none' ;
+
+	// Set the actual uploader URL.
+	if ( FCKConfig.FlashUpload )
+		GetE('frmUpload').action = FCKConfig.FlashUploadURL ;
+
+	dialog.SetAutoSize( true ) ;
+
+	// Activate the "OK" button.
+	dialog.SetOkButton( true ) ;
+
+	if (typeof SelectField == 'function') SelectField( 'txtUrl' ) ;
+}
+
+function LoadSelection()
+{
+	// parse old embeds
+	if (oEmbed)
+	{
+		oParsedFlash.file    = GetAttribute( oEmbed, 'src', '' ) ;
+		oParsedFlash.width  = GetAttribute( oEmbed, 'width', '' ) ;
+		oParsedFlash.height = GetAttribute( oEmbed, 'height', '' ) ;
+
+		// Get Advances Attributes
+		oParsedFlash.attributes.id		= oEmbed.id ;
+		oParsedFlash.attributes.title		= oEmbed.title ;
+
+		if ( oEditor.FCKBrowserInfo.IsIE )
+		{
+			oParsedFlash.attributes['class'] = oEmbed.getAttribute('className') || '' ;
+			oParsedFlash.attributes.style = oEmbed.style.cssText ;
+		}
+		else
+		{
+			oParsedFlash.attributes['class'] = oEmbed.getAttribute('class',2) || '' ;
+			oParsedFlash.attributes.style = oEmbed.getAttribute('style',2) || '' ;
+		}
+
+		oParsedFlash.params.play	= GetAttribute( oEmbed, 'play', 'true' ) == 'true' ;
+		oParsedFlash.params.loop	= GetAttribute( oEmbed, 'loop', 'true' ) == 'true' ;
+		oParsedFlash.params.menu	= GetAttribute( oEmbed, 'menu', 'true' ) == 'true' ;
+		oParsedFlash.params.scale	= GetAttribute( oEmbed, 'scale', '' ).toLowerCase() ;
+	}
+
+	GetE('txtUrl').value    = oParsedFlash.file ;
+	GetE('txtWidth').value  = oParsedFlash.width ;
+	GetE('txtHeight').value = oParsedFlash.height ;
+
+	// Get Advances Attributes
+	GetE('txtAttId').value		= oParsedFlash.attributes.id || '' ;
+	GetE('txtAttTitle').value		= oParsedFlash.attributes.title || '' ;
+	GetE('txtAttClasses').value = oParsedFlash.attributes['class'] || '' ;
+	GetE('txtAttStyle').value = oParsedFlash.attributes.style ;
+
+	GetE('chkAutoPlay').checked	= oParsedFlash.params.play ;
+	GetE('chkLoop').checked		= oParsedFlash.params.loop ;
+	GetE('chkMenu').checked		= oParsedFlash.params.menu ;
+	GetE('cmbScale').value		= oParsedFlash.params.scale || '' ;
+
+	GetE('allowscriptaccess').value		= oParsedFlash.params.allowscriptaccess || '' ;
+	GetE('wmode').value		= oParsedFlash.params.wmode || '' ;
+	GetE('allowfullscreen').checked		= oParsedFlash.params.allowfullscreen ;
+
+	// flashvars
+	var opts = oParsedFlash.flashvars ;
+	for ( var v in opts )
+	{
+		var sText	= v ;
+		var sValue	= opts[v] ;
+
+		AddComboOption( oListText, sText, sText ) ;
+		AddComboOption( oListValue, sValue, sValue ) ;
+	}
+
+	UpdatePreview() ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	if ( GetE('txtUrl').value.length == 0 )
+	{
+		dialog.SetSelectedTab( 'Info' ) ;
+		GetE('txtUrl').focus() ;
+
+		alert( oEditor.FCKLang.DlgAlertUrl ) ;
+
+		return false ;
+	}
+
+	oEditor.FCKUndo.SaveUndoStep() ;
+
+	updateObject(oParsedFlash) ;
+
+	if ( !oFakeImage )
+		oFakeImage = oParsedFlash.createHtmlElement() ;
+
+	oParsedFlash.updateHTMLElement(oFakeImage);
+
+	return true ;
+}
+
+function updateObject( e )
+{
+	e.file = GetE('txtUrl').value;
+	e.width = GetE('txtWidth').value;
+	e.height = GetE('txtHeight').value;
+	if (e.width=='') e.width = '100';
+	if (e.height=='') e.height = '100';
+
+	// Advances Attributes
+	e.attributes.id = GetE('txtAttId').value;
+	e.attributes['class'] = GetE('txtAttClasses').value;
+	e.attributes.style = GetE('txtAttStyle').value;
+	e.attributes.title = GetE('txtAttTitle').value;
+
+	e.params.scale = GetE('cmbScale').value;
+	e.params.play = GetE('chkAutoPlay').checked;
+	e.params.loop = GetE('chkLoop').checked;
+	e.params.menu = GetE('chkMenu').checked;
+
+	e.params.allowscriptaccess = GetE('allowscriptaccess').value;
+	e.params.wmode = GetE('wmode').value;
+	e.params.allowfullscreen = GetE('allowfullscreen').checked;
+
+	// Add all available options.
+	var vars = {};
+	for ( var i = 0 ; i < oListText.options.length ; i++ )
+	{
+		var sText	= oListText.options[i].value ;
+		var sValue	= oListValue.options[i].value ;
+		if ( sValue.length == 0 ) sValue = sText ;
+		vars[sText] = sValue ;
+	}
+	e.flashvars = vars;
+}
+
+var ePreview ;
+
+function SetPreviewElement( previewEl )
+{
+	ePreview = previewEl ;
+
+	if ( GetE('txtUrl').value.length > 0 )
+		UpdatePreview() ;
+}
+
+function UpdatePreview()
+{
+	if ( !ePreview )
+		return ;
+
+	while ( ePreview.firstChild )
+		ePreview.removeChild( ePreview.firstChild ) ;
+
+	if ( GetE('txtUrl').value.length == 0 )
+		ePreview.innerHTML = '&nbsp;' ;
+	else
+	{
+		// Skip reloading the swf if it's the current preview
+		var url = GetE('txtUrl').value ;
+		if (ePreview.dataUrl == url)
+			return ;
+
+		// check if it isn't a swf file or some mix of html or an embedding page:
+		var oData = oWebVideo.ParseHtml(url, GetE('txtWidth').value, GetE('txtHeight').value );
+		GetE('txtUrl').value = oData.url ;
+		GetE('txtWidth').value = oData.width ;
+		GetE('txtHeight').value = oData.height ;
+		ePreview.dataUrl = oData.url ;
+
+		var oDoc	= ePreview.ownerDocument || ePreview.document ;
+		var e		= oDoc.createElement( 'EMBED' ) ;
+
+		SetAttribute( e, 'src', GetE('txtUrl').value ) ;
+		SetAttribute( e, 'type', 'application/x-shockwave-flash' ) ;
+		SetAttribute( e, 'width', '100%' ) ;
+		SetAttribute( e, 'height', '100%' ) ;
+
+		ePreview.appendChild( e ) ;
+	}
+}
+
+// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
+
+function BrowseServer()
+{
+	OpenFileBrowser( FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight ) ;
+}
+
+function SetUrl( url, width, height )
+{
+	GetE('txtUrl').value = url ;
+
+	if ( width )
+		GetE('txtWidth').value = width ;
+
+	if ( height )
+		GetE('txtHeight').value = height ;
+
+	UpdatePreview() ;
+
+	dialog.SetSelectedTab( 'Info' ) ;
+}
+
+function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )
+{
+	// Remove animation
+	window.parent.Throbber.Hide() ;
+	GetE( 'divUpload' ).style.display  = '' ;
+
+	switch ( errorNumber )
+	{
+		case 0 :	// No errors
+			alert( 'Your file has been successfully uploaded' ) ;
+			break ;
+		case 1 :	// Custom error
+			alert( customMsg ) ;
+			return ;
+		case 101 :	// Custom warning
+			alert( customMsg ) ;
+			break ;
+		case 201 :
+			alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;
+			break ;
+		case 202 :
+			alert( 'Invalid file type' ) ;
+			return ;
+		case 203 :
+			alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;
+			return ;
+		case 500 :
+			alert( 'The connector is disabled' ) ;
+			break ;
+		default :
+			alert( 'Error on file upload. Error number: ' + errorNumber ) ;
+			return ;
+	}
+
+	SetUrl( fileUrl ) ;
+	GetE('frmUpload').reset() ;
+}
+
+var oUploadAllowedExtRegex	= new RegExp( FCKConfig.FlashUploadAllowedExtensions, 'i' ) ;
+var oUploadDeniedExtRegex	= new RegExp( FCKConfig.FlashUploadDeniedExtensions, 'i' ) ;
+
+function CheckUpload()
+{
+	var sFile = GetE('txtUploadFile').value ;
+
+	if ( sFile.length == 0 )
+	{
+		alert( 'Please select a file to upload' ) ;
+		return false ;
+	}
+
+	if ( ( FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test( sFile ) ) ||
+		( FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test( sFile ) ) )
+	{
+		OnUploadCompleted( 202 ) ;
+		return false ;
+	}
+
+	// Show animation
+	window.parent.Throbber.Show( 100 ) ;
+	GetE( 'divUpload' ).style.display  = 'none' ;
+
+	return true ;
+}
+
+
+/* flashvars selects*/
+
+function Select( combo )
+{
+	var iIndex = combo.selectedIndex ;
+
+	oListText.selectedIndex		= iIndex ;
+	oListValue.selectedIndex	= iIndex ;
+
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	oTxtText.value	= oListText.value ;
+	oTxtValue.value	= oListValue.value ;
+}
+
+function Add()
+{
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	AddComboOption( oListText, oTxtText.value, oTxtText.value ) ;
+	AddComboOption( oListValue, oTxtValue.value, oTxtValue.value ) ;
+
+	oListText.selectedIndex = oListText.options.length - 1 ;
+	oListValue.selectedIndex = oListValue.options.length - 1 ;
+
+	oTxtText.value	= '' ;
+	oTxtValue.value	= '' ;
+
+	oTxtText.focus() ;
+}
+
+function Modify()
+{
+	var iIndex = oListText.selectedIndex ;
+
+	if ( iIndex < 0 ) return ;
+
+	var oTxtText	= document.getElementById( "txtText" ) ;
+	var oTxtValue	= document.getElementById( "txtValue" ) ;
+
+	oListText.options[ iIndex ].innerHTML	= HTMLEncode( oTxtText.value ) ;
+	oListText.options[ iIndex ].value		= oTxtText.value ;
+
+	oListValue.options[ iIndex ].innerHTML	= HTMLEncode( oTxtValue.value ) ;
+	oListValue.options[ iIndex ].value		= oTxtValue.value ;
+
+	oTxtText.value	= '' ;
+	oTxtValue.value	= '' ;
+
+	oTxtText.focus() ;
+}
+
+function Delete()
+{
+	RemoveSelectedOptions( oListText ) ;
+	RemoveSelectedOptions( oListValue ) ;
+}
+
+// Remove all selected options from a SELECT object
+function RemoveSelectedOptions(combo)
+{
+	// Save the selected index
+	var iSelectedIndex = combo.selectedIndex ;
+
+	var oOptions = combo.options ;
+
+	// Remove all selected options
+	for ( var i = oOptions.length - 1 ; i >= 0 ; i-- )
+	{
+		if (oOptions[i].selected) combo.remove(i) ;
+	}
+
+	// Reset the selection based on the original selected index
+	if ( combo.options.length > 0 )
+	{
+		if ( iSelectedIndex >= combo.options.length ) iSelectedIndex = combo.options.length - 1 ;
+		combo.selectedIndex = iSelectedIndex ;
+	}
+}
+
+// Add a new option to a SELECT object (combo or list)
+function AddComboOption( combo, optionText, optionValue, documentObject, index )
+{
+	var oOption ;
+
+	if ( documentObject )
+		oOption = documentObject.createElement("OPTION") ;
+	else
+		oOption = document.createElement("OPTION") ;
+
+	if ( index != null )
+		combo.options.add( oOption, index ) ;
+	else
+		combo.options.add( oOption ) ;
+
+	oOption.innerHTML = optionText.length > 0 ? HTMLEncode( optionText ) : '&nbsp;' ;
+	oOption.value     = optionValue ;
+
+	return oOption ;
+}
+
+function HTMLEncode( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&/g, '&amp;' ) ;
+	text = text.replace( /</g, '&lt;' ) ;
+	text = text.replace( />/g, '&gt;' ) ;
+
+	return text ;
+}
+
+
+function HTMLDecode( text )
+{
+	if ( !text )
+		return '' ;
+
+	text = text.replace( /&gt;/g, '>' ) ;
+	text = text.replace( /&lt;/g, '<' ) ;
+	text = text.replace( /&amp;/g, '&' ) ;
+
+	return text ;
+}
+
+
+
+
+// The object used for all Web Video operations.
+var oWebVideo = {
+	Objects : [ "<object width=\"(?<width>\\d+)\" height=\"(?<height>\\d+)\".* name=\"movie\"\\s+value=\"(?<url>[^\"]*)\".*<\\/object>" ,
+			// youtube style only embed
+					"<embed src=\"(?<url>[^\"]*)\".* width=\"(?<width>\\d+)\" height=\"(?<height>\\d+)\".*<\\/embed>" ,
+			// google video
+					"<embed .*width:(?<width>\\d+)px.*height:(?<height>\\d+)px.* src=\"(?<url>[^\"]*)\".*<\\/embed>" ,
+			// invalid syntax but anyway...
+					"<embed src=\"(?<url>[^\"]*)\".* width=\"(?<width>\\d+)px\" height=\"(?<height>\\d+)px\".*<\\/embed>"
+	] ,
+
+	webPages : [{re:/http:\/\/www\.youtube\.com\/watch\?v=([^&]*)(&.*|$)/, url:'http://www.youtube.com/v/$1', width:425, height:344} ,
+							{re:/http:\/\/video\.google\.(.*)\/videoplay\?docid=([^&]*)(&.*|$)/, url:'http://video.google.$1/googleplayer.swf?docid=$2', width:400, height:326}, 
+							{re:/http:\/\/www\.mtvmusic\.com\/video\/\?id=([^&]*)(&.*|$)/, url:'http://media.mtvnservices.com/mgid:uma:video:mtvmusic.com:$1', width:320, height:271} ,
+							{re:/http:\/\/www\.metacafe\.com\/watch\/(.*?)\/(.*?)(\/.*|$)/, url:'http://www.metacafe.com/fplayer/$1/$2.swf', width:400, height:345} 
+	],
+
+	// Parses the suplied HTML and returns an object with the url of the video, its width and height
+	ParseHtml : function( html, width, height )
+	{
+		// Check if it's a valid swf and skip the tests
+		var swfFile = new RegExp(".*\.swf$", i) ;
+		if ( swfFile.test(html) )
+				return {url: html, width: width, height: height } ;
+
+		// Generic system to work with any proposed embed by the site (as long as it matches the previous regexps
+		for(var i=0; i< this.Objects.length; i++)
+		{
+			// Using XRegExp to work with named captures: http://stevenlevithan.com/regex/xregexp/
+			var re = new XRegExp( this.Objects[i] ) ;
+			var parts = re.exec( html ) ;
+			if (parts)
+				return {url: parts.url, width: parts.width, height: parts.height };
+		}
+
+		// Ability to paste the url of the web site and extract the correct info. It needs to be adjusted for every site.
+		for(var i=0; i< this.webPages.length; i++)
+		{
+			var page = this.webPages[i] ;
+			var oMatch = html.match( page.re ) ;
+			if (oMatch)
+			{
+				return {url: html.replace(page.re, page.url), width: page.width, height: page.height};
+			}
+		}
+		
+		return {url: html, width: width, height: height } ;
+	}
+};
+
+
+
+
+
+// XRegExp 0.5.1, <stevenlevithan.com>, MIT License
+if(!window.XRegExp){(function(){var D={exec:RegExp.prototype.exec,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},C={part:/(?:[^\\([#\s.]+|\\(?!k<[\w$]+>)[\S\s]?|\((?=\?(?!#|<[\w$]+>)))+|(\()(?:\?(?:(#)[^)]*\)|<([$\w]+)>))?|\\k<([\w$]+)>|(\[\^?)|([\S\s])/g,replaceVar:/(?:[^$]+|\$(?![1-9$&`']|{[$\w]+}))+|\$(?:([1-9]\d*|[$&`'])|{([$\w]+)})/g,extended:/^(?:\s+|#.*)+/,quantifier:/^(?:[?*+]|{\d+(?:,\d*)?})/,classLeft:/&&\[\^?/g,classRight:/]/g},A=function(H,F,G){for(var E=G||0;E<H.length;E++){if(H[E]===F){return E}}return -1},B=/()??/.exec("")[1]!==undefined;XRegExp=function(N,H){if(N instanceof RegExp){if(H!==undefined){throw TypeError("can't supply flags when constructing one RegExp from another")}return N.addFlags()}var H=H||"",E=H.indexOf("s")>-1,J=H.indexOf("x")>-1,O=false,Q=[],G=[],F=C.part,K,I,M,L,P;F.lastIndex=0;while(K=D.exec.call(F,N)){if(K[2]){if(!C.quantifier.test(N.slice(F.lastIndex))){G.push("(?:)")}}else{if(K[1]){Q.push(K[3]||null);if(K[3]){O=true}G.push("(")}else{if(K[4]){L=A(Q,K[4]);G.push(L>-1?"\\"+(L+1)+(isNaN(N.charAt(F.lastIndex))?"":"(?:)"):K[0])}else{if(K[5]){if(N.charAt(F.lastIndex)==="]"){G.push(K[5]==="["?"(?!)":"[\\S\\s]");F.lastIndex++}else{I=XRegExp.matchRecursive("&&"+N.slice(K.index),C.classLeft,C.classRight,"",{escapeChar:"\\"})[0];G.push(K[5]+I+"]");F.lastIndex+=I.length+1}}else{if(K[6]){if(E&&K[6]==="."){G.push("[\\S\\s]")}else{if(J&&C.extended.test(K[6])){M=D.exec.call(C.extended,N.slice(F.lastIndex-1))[0].length;if(!C.quantifier.test(N.slice(F.lastIndex-1+M))){G.push("(?:)")}F.lastIndex+=M-1}else{G.push(K[6])}}}else{G.push(K[0])}}}}}}P=RegExp(G.join(""),D.replace.call(H,/[sx]+/g,""));P._x={source:N,captureNames:O?Q:null};return P};RegExp.prototype.exec=function(I){var G=D.exec.call(this,I),F,H,E;if(G){if(B&&G.length>1){E=new RegExp("^"+this.source+"$(?!\\s)",this.getNativeFlags());D.replace.call(G[0],E,function(){for(H=1;H<arguments.length-2;H++){if(arguments[H]===undefined){G[H]=undefined}}})}if(this._x&&this._x.captureNames){for(H=1;H<G.length;H++){F=this._x.captureNames[H-1];if(F){G[F]=G[H]}}}if(this.global&&this.lastIndex>(G.index+G[0].length)){this.lastIndex--}}return G};String.prototype.match=function(E){if(!(E instanceof RegExp)){E=new XRegExp(E)}if(E.global){return D.match.call(this,E)}return E.exec(this)};String.prototype.replace=function(F,G){var E=(F._x||{}).captureNames;if(!(F instanceof RegExp&&E)){return D.replace.apply(this,arguments)}if(typeof G==="function"){return D.replace.call(this,F,function(){arguments[0]=new String(arguments[0]);for(var H=0;H<E.length;H++){if(E[H]){arguments[0][E[H]]=arguments[H+1]}}return G.apply(window,arguments)})}else{return D.replace.call(this,F,function(){var H=arguments;return D.replace.call(G,C.replaceVar,function(J,I,M){if(I){switch(I){case"$":return"$";case"&":return H[0];case"`":return H[H.length-1].slice(0,H[H.length-2]);case"'":return H[H.length-1].slice(H[H.length-2]+H[0].length);default:var K="";I=+I;while(I>E.length){K=D.split.call(I,"").pop()+K;I=Math.floor(I/10)}return(I?H[I]:"$")+K}}else{if(M){var L=A(E,M);return L>-1?H[L+1]:J}else{return J}}})})}};String.prototype.split=function(J,F){if(!(J instanceof RegExp)){return D.split.apply(this,arguments)}var G=[],E=J.lastIndex,K=0,I=0,H;if(F===undefined||+F<0){F=false}else{F=Math.floor(+F);if(!F){return[]}}if(!J.global){J=J.addFlags("g")}else{J.lastIndex=0}while((!F||I++<=F)&&(H=J.exec(this))){if(J.lastIndex>K){G=G.concat(this.slice(K,H.index),(H.index===this.length?[]:H.slice(1)));K=J.lastIndex}if(!H[0].length){J.lastIndex++}}G=K===this.length?(J.test("")?G:G.concat("")):(F?G:G.concat(this.slice(K)));J.lastIndex=E;return G}})()}RegExp.prototype.getNativeFlags=function(){return(this.global?"g":"")+(this.ignoreCase?"i":"")+(this.multiline?"m":"")+(this.extended?"x":"")+(this.sticky?"y":"")};RegExp.prototype.addFlags=function(A){var B=new XRegExp(this.source,(A||"")+this.getNativeFlags());if(this._x){B._x={source:this._x.source,captureNames:this._x.captureNames?this._x.captureNames.slice(0):null}}return B};RegExp.prototype.call=function(A,B){return this.exec(B)};RegExp.prototype.apply=function(B,A){return this.exec(A[0])};XRegExp.cache=function(C,A){var B="/"+C+"/"+(A||"");return XRegExp.cache[B]||(XRegExp.cache[B]=new XRegExp(C,A))};XRegExp.escape=function(A){return A.replace(/[-[\]{}()*+?.\\^$|,#\s]/g,"\\$&")};XRegExp.matchRecursive=function(P,D,S,F,B){var B=B||{},V=B.escapeChar,K=B.valueNames,F=F||"",Q=F.indexOf("g")>-1,C=F.indexOf("i")>-1,H=F.indexOf("m")>-1,U=F.indexOf("y")>-1,F=F.replace(/y/g,""),D=D instanceof RegExp?(D.global?D:D.addFlags("g")):new XRegExp(D,"g"+F),S=S instanceof RegExp?(S.global?S:S.addFlags("g")):new XRegExp(S,"g"+F),I=[],A=0,J=0,N=0,L=0,M,E,O,R,G,T;if(V){if(V.length>1){throw SyntaxError("can't supply more than one escape character")}if(H){throw TypeError("can't supply escape character when using the multiline flag")}G=XRegExp.escape(V);T=new RegExp("^(?:"+G+"[\\S\\s]|(?:(?!"+D.source+"|"+S.source+")[^"+G+"])+)+",C?"i":"")}while(true){D.lastIndex=S.lastIndex=N+(V?(T.exec(P.slice(N))||[""])[0].length:0);O=D.exec(P);R=S.exec(P);if(O&&R){if(O.index<=R.index){R=null}else{O=null}}if(O||R){J=(O||R).index;N=(O?D:S).lastIndex}else{if(!A){break}}if(U&&!A&&J>L){break}if(O){if(!A++){M=J;E=N}}else{if(R&&A){if(!--A){if(K){if(K[0]&&M>L){I.push([K[0],P.slice(L,M),L,M])}if(K[1]){I.push([K[1],P.slice(M,E),M,E])}if(K[2]){I.push([K[2],P.slice(E,J),E,J])}if(K[3]){I.push([K[3],P.slice(J,N),J,N])}L=N}else{I.push(P.slice(E,J))}if(!Q){break}}}else{D.lastIndex=S.lastIndex=0;throw Error("subject data contains unbalanced delimiters")}}if(J===N){N++}}if(Q&&!U&&K&&K[0]&&P.length>L){I.push([K[0],P.slice(L),L,P.length])}D.lastIndex=S.lastIndex=0;return I};
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/index.php
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/index.php	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/dialog/index.php	(revision 1202)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id: index.php 1161 2009-10-11 16:45:19Z Luisehahne $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/readme.html
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/readme.html	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/readme.html	(revision 1202)
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+ <title>googlemaps plugin index</title>
+ <META http-equiv="refresh" content="0;URL=docs/install.html">
+</head> 
+<body>
+	<p>You should have been redirected <a href="docs/install.html">to the documentation</a></p>
+</body>
+</html> 
\ No newline at end of file
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/es.js
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/es.js	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/es.js	(revision 1202)
@@ -0,0 +1,14 @@
+FCKLang.DlgFlashvars			= 'Flashvars';
+
+FCKLang.DlgFlashScriptaccess = 'Acceso de Scripts';
+FCKLang.DlgFlashAlways = 'Siempre';
+FCKLang.DlgFlashSameDomain = 'El mismo dominio';
+FCKLang.DlgFlashNever = 'Nunca';
+FCKLang.DlgFlashWindowMode = 'Wmode';
+FCKLang.DlgFlashWindow = 'Ventana';
+FCKLang.DlgFlashOpaque = 'Opaco';
+FCKLang.DlgFlashTransparent = 'Transparente';
+FCKLang.DlgFlashAllowfullscreen = 'Permitir ventana completa';
+
+// para que quede en una linea
+FCKLang.DlgFlashChkMenu = 'Menú Flash';
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/en.js
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/en.js	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/en.js	(revision 1202)
@@ -0,0 +1,11 @@
+FCKLang.DlgFlashvars			= 'Flashvars';
+
+FCKLang.DlgFlashScriptaccess = 'Script Access';
+FCKLang.DlgFlashAlways = 'Always';
+FCKLang.DlgFlashSameDomain = 'Same Domain';
+FCKLang.DlgFlashNever = 'Never';
+FCKLang.DlgFlashWindowMode = 'Window Mode';
+FCKLang.DlgFlashWindow = 'Window';
+FCKLang.DlgFlashOpaque = 'Opaque';
+FCKLang.DlgFlashTransparent = 'Transparent';
+FCKLang.DlgFlashAllowfullscreen = 'Allow Fullscreen';
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/index.php
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/index.php	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/lang/index.php	(revision 1202)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id: index.php 1161 2009-10-11 16:45:19Z Luisehahne $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/images/preview.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/images/preview.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/images/index.php
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/images/index.php	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/images/index.php	(revision 1202)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id: index.php 1161 2009-10-11 16:45:19Z Luisehahne $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/installation.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/installation.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/install.html
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/install.html	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/install.html	(revision 1202)
@@ -0,0 +1,113 @@
+﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>SWFObject plugin</title>
+<link href="styles.css" rel="stylesheet" type="text/css">
+</head>
+
+<body>
+<h1>SWFObject Plugin for FCKeditor</h1>
+<!--
+<div id="languages"> Change your language 
+  <ul>
+    <li><a href="install_es.html" lang="es"><img src="es.png" alt="Español" width="23" height="15" border="0"></a></li>
+  </ul>
+</div>
+-->
+<h2>Introduction</h2>
+<p>This is a dialog-based plugin to replace the default flash insertion in <a href="http://www.fckeditor.net">FCKeditor</a> (using &lt;embed&gt;) with <a href="http://code.google.com/p/swfobject/">SWFObject 2</a> (with the dynamic publishing method, &lt;script&gt;)</p>
+<p>Besides generating the code with SWFObject, the insertion dialog allows to set the allowscriptaccess, wmode and allowfullscreen Flash parameters, and the posibility to add any flashvars that you need.</p>
+<h3 id="contact">Author:</h3>
+<p><a href="mailto:amla70@gmail.com">Alfonso Mart&iacute;nez de Lizarrondo</a></p>
+<h3>Sponsored by:</h3>
+<p><a href="http://www.incontrolsolutions.com">InControl Solutions</a></p>
+<p><a href="http://www.uritec.net">Uritec</a></p>
+<h3>Version history: </h3>
+<ol>
+  <li>1.0: 14/09/2008. Based on standard flash dialog.</li>
+  <li>1.1: 15/09/2008. Fixes, add flashvars editor, fullscreen, allowscriptaccess, wmode</li>
+  <li>1.2: 21/09/2008. Fixes for IE, added the swfobject_WrapperClass option. Included the FCKCommentsProcessor code. Change behavior according to the swfObjectPath value.</li>
+  <li>1.3: 26/09/2008. More fixes for IE. It should work also in FCKeditor 2.5.</li>
+  <li>1.4: 26/10/2008. Automatic parsing of embedding code pasted in the url field. Added the swfObject_FlashVersion and swfObject_ExpressInstall configuration options.</li>
+	<li>1.5: 26/11/2008. Use by default a library hosted by Google, so no extra steps required to install. Added CDATA coments for the generated script.</li>
+	<li>1.6: 06/08/2009. Updated the default linked library to <a href="http://code.google.com/p/swfobject/wiki/whats_new">SWFObject 2.2</a>.</li>
+</ol>
+<p><a href="http://martinezdelizarrondo.com/swfobject/">Get the latest version and/or updated info</a> </p>
+
+<h2>Installation</h2>
+<h3>1. Copying the files</h3>
+<p>Extract the contents of the zip in you plugins directory, so it ends up like
+    this<br>
+    <img src="installation.png" alt="Screenshot of installation" width="311" height="346" longdesc="#install"></p>
+<pre id="install">
+editor\
+	...
+	js\
+	lang\
+	plugins\
+		...
+		swfobject
+			fckplugin.js
+			readme.html
+			dialog\
+			docs\
+			images\
+			lang\
+		...
+	skins\
+</pre>
+<h3>2. Adding it to FCKeditor</h3>
+<p>Now add in your <em>fckconfig.js</em> or custom js configuration
+file the following line:
+<code>FCKConfig.Plugins.Add( 'swfobject', 'en,es') ;</code>
+</p>
+<h3>3. Adding it to the toolbarset</h3>
+<p>This plugin replaces the default flash dialog, just use the normal 'Flash' button.
+</p>
+<h3 id="configure">4. Configure the plugin</h3>
+<p>These are the possible config values:</p>
+<ul>
+	<li id="swfObjectPath">FCKConfig.<strong>swfObjectPath</strong>: It's the path to the version of the SwfObject script<br>
+	Since 1.5, if this entry is missing then it will default to use a <a href="http://code.google.com/p/swfobject/wiki/hosted_library">version hosted by Google</a>. If you want to use a script hosted in your server, then go to the <a href="http://code.google.com/p/swfobject/">SWFObject page</a> and download it, extract it in some place in your server, and then put the path to the swfobject.js file in this entry.<br>
+	Note: if you leave an empty string (FCKConfig.swfObjectPath = "") then the plugin won't generate the code to include the SWFObject plugin, it's assumed that you have already included it in your page.
+	</li>
+	<li id="WrapperClass">FCKConfig.<strong>swfobject_WrapperClass</strong>: If this entry contains a non-empty value then a div
+	will be generated with this class wrapping the flash object<br>
+	Important: in the preview inside the editor, the class will be applied to an image, not a div!</li>
+	<li id="FlashVersion">FCKConfig.<strong>swfobject_FlashVersion</strong>: It represents the version of the flash player that your movie
+	was published for. If this entry doesn't exist it defaults to "7.0.0". </li>
+	<li id="ExpressInstall">FCKConfig.<strong>swfObject_ExpressInstall</strong>: It can contain the path to a swf movie to activate the Express install feature. It's the parameter explained in the third point of <a href="http://code.google.com/p/swfobject/wiki/documentation#STEP_3:_Register_your_Flash_content_with_the_SWFObject_library_a">the SWFObject documentation</a></li>
+</ul>
+
+<p>All these values can be set in the <em>fckconfig.js</em> file, a custom js configuration
+  file, or at the moment of the <a href="http://alfonsoml.blogspot.com/2008/02/adding-configuration-entries-when.html">creation of the FCKeditor instance using any
+  language</a>.</p>
+<h3>5. Use it</h3>
+<p align="right">Now empty the cache of your browser and reload the editor, the new Flash dialog will be shown.</p>
+<p>Besides generating the code with SWFObject, the insertion dialog allows to set the allowscriptaccess, wmode and allowfullscreen Flash parameters, and the posibility to add any flashvars that you need.</p>
+<p>Since version 1.4, pasting embedding code generated by external sites as YouTube 
+<code>&lt;object width="425" height="344"&gt;
+&lt;param name="movie" value="http://www.youtube.com/v/nj2hewPBQh0&hl=es&fs=1"&gt;&lt;/param&gt;
+&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;
+&lt;embed src="http://www.youtube.com/v/nj2hewPBQh0&hl=es&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;
+&lt;/object&gt;
+</code> does generate the proper code in FCKeditor</p>
+<h2>Final notes</h2>
+<p>If you find this plugin useful, consider making a donation so it can be further
+improved, any amount can help to keep the development running.</p>
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick">
+<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
+<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
+<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIH2QYJKoZIhvcNAQcEoIIHyjCCB8YCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYAbYIYvNE50oNSFj8nHIeZ0/T5OzQfY8n+5fliwYQtSYuvHnix6+DAVVKVuRmpV4EnbzXNssyi+sdCZb+Sn7nBH7+KWP5+4L4NMIcA7OkXsoPz6qV/nBwUBnovch1hU7sqREOZJAUc42/SzvEQ5Hn+aMuGUVeLlp8BLlif2wmPkhDELMAkGBSsOAwIaBQAwggFVBgkqhkiG9w0BBwEwFAYIKoZIhvcNAwcECI9Erh51StqNgIIBMBptZf5Yd10wgcMUGRODhBxYbwKlGL8FUm5S+AftDhUnXUK6IzYorscKgaxI0ks1k+KnIO9QH7L9WwlQjSiDWXtcMjEkY7qMc99MpForo2gobt7U3OK3u00vNUm9krXwLN7S56hpvn9iyXuMi5V+4FbYe8pjn1OA/+tA7wOTgyGDhthQbLiQRQq9zWXiclYUjuhdMdeNfDHbpjeCiIoWb8AasDokSjgM8Xl0ls3nPEH4haiVTJ+uo2D28GfbDnjohaUq1A/ykweP3cBRMqYuXe6aqbciDA6NqRzrHQ7IjaXAMnLaGkV+1PjNWJi/TEAWeHD3p/JP1lAOX3vXW0tDQc0ylcJuy4khtoLjxg9/ZHFzSPfTh0ajUL1IzDremTfetBUelmiVsgZvycuWpIyUzLGgggOHMIIDgzCCAuygAwIBAgIBADANBgkqhkiG9w0BAQUFADCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20wHhcNMDQwMjEzMTAxMzE1WhcNMzUwMjEzMTAxMzE1WjCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMFHTt38RMxLXJyO2SmS+Ndl72T7oKJ4u4uw+6awntALWh03PewmIJuzbALScsTS4sZoS1fKciBGoh11gIfHzylvkdNe/hJl66/RGqrj5rFb08sAABNTzDTiqqNpJeBsYs/c2aiGozptX2RlnBktH+SUNpAajW724Nv2Wvhif6sFAgMBAAGjge4wgeswHQYDVR0OBBYEFJaffLvGbxe9WT9S1wob7BDWZJRrMIG7BgNVHSMEgbMwgbCAFJaffLvGbxe9WT9S1wob7BDWZJRroYGUpIGRMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbYIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAIFfOlaagFrl71+jq6OKidbWFSE+Q4FqROvdgIONth+8kSK//Y/4ihuE4Ymvzn5ceE3S/iBSQQMjyvb+s2TWbQYDwcp129OPIbD9epdr4tJOUNiSojw7BHwYRiPh58S1xGlFgHFXwrEBb3dgNbMUa+u4qectsMAXpVHnD9wIyfmHMYIBmjCCAZYCAQEwgZQwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tAgEAMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wNzA4MzEyMDU2NDhaMCMGCSqGSIb3DQEJBDEWBBQjaqRi8z31g3jdLrk+d0klj24zkjANBgkqhkiG9w0BAQEFAASBgFDK8nFr91urBOkipQBqjhhXY/tTNSVhFV0GsJSMQ3zdsgyMcZP5b4WohD5NLoPCibKL7nihgPd9AFCVyw6fLOg82F1MojGS2Gu6c6bGD2L827VCyg1WRm14svHTEwSnprvxBEbi91cBrQcNP5MZFDOuoucZg9uPGr/S8xzp0+Af-----END PKCS7-----
+">
+</form>
+<p>If you need some special feature for this plugin, or if you need any other kind of plugin 
+for FCKeditor then <a href="#contact">contact me</a> and we can discuss it</p>
+<h2>Disclaimers</h2>
+<p>FCKeditor is &copy; FredCK.com</p>
+<p>The SWFObject is Copyright &copy; 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis</p>
+</body>
+</html>
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.html
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.html	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.html	(revision 1202)
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+ <title>googlemaps plugin index</title>
+ <META http-equiv="refresh" content="0;URL=install.html">
+</head> 
+<body>
+	<p>You should have been redirected <a href="install.html">to the documentation</a></p>
+</body>
+</html> 
\ No newline at end of file
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/styles.css
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/styles.css	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/styles.css	(revision 1202)
@@ -0,0 +1,59 @@
+body {
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 90%;
+}
+h1 {
+	text-align:center;
+	font-size:180%;
+}
+h2 {
+	border-bottom:2px solid #CCC;
+	margin:1em 0 0.4em 0;
+}
+h3 {
+	margin-bottom:0.4em;
+}
+p {
+	margin:0 0 1em 1em;
+	text-align:justify;
+}
+ol {
+	margin:0 0 1.2em 1em;
+	padding:0;
+	list-style-type:none;
+}
+ol li {
+	margin:0.2em 0;
+}
+pre, code {
+	font-size:100%;
+	font-family:"Courier New", Courier, mono;
+	background-color: #CCCCCC;
+	border:1px solid #999;
+	padding:0.2em 1em;
+	margin: 0.4em 0;
+	display:block;
+	white-space: pre;
+	overflow: auto;
+}
+form {
+	margin:0 0 0 1em;
+}
+span.key {
+	color: #006600;
+}
+#install {
+	display:none
+}
+#languages ul {
+	display:inline;
+	list-style-type:none;
+	margin:0;
+	padding:0;
+}
+#languages li {
+	display:inline;
+	margin:0;
+	padding:0;
+	vertical-align:bottom;
+}
\ No newline at end of file
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.php
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.php	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/docs/index.php	(revision 1202)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id: index.php 1161 2009-10-11 16:45:19Z Luisehahne $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/fckplugin.js
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/fckplugin.js	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/fckplugin.js	(revision 1202)
@@ -0,0 +1,548 @@
+﻿/*
+ *
+ * File Name: fckplugin.js
+ * 	Plugin to add flash files using SwfObject 2
+ *
+ * File Authors:
+ * 		Alfonso Martínez de Lizarrondo
+ *
+ * Developed for InControlSolutions
+ *
+ * Version: 1.5
+ */
+
+
+/**
+	FCKCommentsProcessor
+	---------------------------
+	It's run after a document has been loaded, it detects all the protected source elements
+
+	In order to use it, you add your comment parser with
+	FCKCommentsProcessor.AddParser( function )
+*/
+if (typeof FCKCommentsProcessor === 'undefined')
+{
+	var FCKCommentsProcessor = FCKDocumentProcessor.AppendNew() ;
+	FCKCommentsProcessor.ProcessDocument = function( oDoc )
+	{
+		if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )
+			return ;
+
+		if ( !oDoc )
+			return ;
+
+	//Find all the comments: <!--{PS..0}-->
+	//try to choose the best approach according to the browser:
+		if ( oDoc.evaluate )
+			this.findCommentsXPath( oDoc );
+		else
+		{
+			if (oDoc.all)
+				this.findCommentsIE( oDoc.body ) ;
+			else
+				this.findComments( oDoc.body ) ;
+		}
+
+	}
+
+	FCKCommentsProcessor.findCommentsXPath = function(oDoc) {
+		var nodesSnapshot = oDoc.evaluate('//body//comment()', oDoc.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );
+
+		for ( var i=0 ; i < nodesSnapshot.snapshotLength; i++ )
+		{
+			this.parseComment( nodesSnapshot.snapshotItem(i) ) ;
+		}
+	}
+
+	FCKCommentsProcessor.findCommentsIE = function(oNode) {
+		var aComments = oNode.getElementsByTagName( '!' );
+		for(var i=aComments.length-1; i >=0 ; i--)
+		{
+			var comment = aComments[i] ;
+			if (comment.nodeType == 8 ) // oNode.COMMENT_NODE)
+				this.parseComment( comment ) ;
+		}
+	}
+
+	// Fallback function, iterate all the nodes and its children searching for comments.
+	FCKCommentsProcessor.findComments = function( oNode )
+	{
+		if (oNode.nodeType == 8 ) // oNode.COMMENT_NODE)
+		{
+			this.parseComment( oNode ) ;
+		}
+		else
+		{
+			if (oNode.hasChildNodes())
+			{
+				var children = oNode.childNodes ;
+				for (var i = children.length-1; i >=0 ; i--)
+					this.findComments( children[ i ] );
+			}
+		}
+	}
+
+	// We get a comment node
+	// Check that it's one that we are interested on:
+	FCKCommentsProcessor.parseComment = function( oNode )
+	{
+		var value = oNode.nodeValue ;
+
+		// Difference between 2.4.3 and 2.5
+		var prefix = ( FCKConfig.ProtectedSource._CodeTag || 'PS\\.\\.' ) ;
+
+		var regex = new RegExp( "\\{" + prefix + "(\\d+)\\}", "g" ) ;
+
+		if ( regex.test( value ) )
+		{
+			var index = RegExp.$1 ;
+			var content = FCKTempBin.Elements[ index ] ;
+
+			// Now call the registered parser handlers.
+			var oCalls = this.ParserHandlers ;
+			if ( oCalls )
+			{
+				for ( var i = 0 ; i < oCalls.length ; i++ )
+					oCalls[ i ]( oNode, content, index ) ;
+
+			}
+
+		}
+	}
+
+	/**
+		The users of the object will add a parser here, the callback function gets two parameters:
+			oNode: it's the node in the editorDocument that holds the position of our content
+			oContent: it's the node (removed from the document) that holds the original contents
+			index: the reference in the FCKTempBin of our content
+	*/
+	FCKCommentsProcessor.AddParser = function( handlerFunction )
+	{
+		if ( !this.ParserHandlers )
+			this.ParserHandlers = [ handlerFunction ] ;
+		else
+		{
+			// Check that the event handler isn't already registered with the same listener
+			// It doesn't detect function pointers belonging to an object (at least in Gecko)
+			if ( this.ParserHandlers.IndexOf( handlerFunction ) == -1 )
+				this.ParserHandlers.push( handlerFunction ) ;
+		}
+	}
+}
+/**
+	END of FCKCommentsProcessor
+	---------------------------
+*/
+
+/**
+  @desc  inject the function
+  @author  Aimingoo&Riceball
+*/
+function Inject( aOrgFunc, aBeforeExec, aAtferExec ) {
+  return function() {
+    if (typeof(aBeforeExec) == 'function') arguments = aBeforeExec.apply(this, arguments) || arguments;
+    //convert arguments object to array
+    var Result, args = [].slice.call(arguments);
+    args.push(aOrgFunc.apply(this, args));
+    if (typeof(aAtferExec) == 'function') Result = aAtferExec.apply(this, args);
+    return (typeof(Result) != 'undefined')?Result:args.pop();
+  } ;
+}
+
+// If it hasn't been set, then use a version hosted by Google.
+if (typeof FCKConfig.swfObjectPath === 'undefined')
+	FCKConfig.swfObjectPath = "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" ;
+
+
+// Replace the default flash dialog:
+FCKCommands.LoadedCommands[ 'Flash' ] = new FCKDialogCommand( 'Flash', FCKLang.DlgFlashTitle, FCKPlugins.Items['swfobject'].Path + 'dialog/fck_flash.html', 450, 390 ) ;
+
+// Check if the comment it's one of our scripts:
+FCKCommentsProcessor.AddParser(  function( oNode, oContent, index)
+{
+		if ( FCK.SwfobjectHandler.detectScript( oContent ) )
+		{
+			var oSWF = FCK.SwfobjectHandler.createNew() ;
+			oSWF.parse( oContent ) ;
+			oSWF.createHtmlElement( oNode, index ) ;
+		}
+		else
+		{
+			if ( FCK.SwfobjectHandler.detectSwfObjectScript( oContent ) )
+				oNode.parentNode.removeChild( oNode );
+		}
+} );
+
+// Context menu
+FCK.ContextMenu.RegisterListener( {
+	AddItems : function( menu, tag, tagName )
+	{
+		// under what circumstances do we display this option
+		if ( tagName == 'IMG' && tag.getAttribute( 'swfobjectnumber' ) )
+		{
+//			menu.AddSeparator() ;
+			// No other options:
+			menu.RemoveAllItems() ;
+			// the command needs the registered command name, the title for the context menu, and the icon path
+			menu.AddItem( 'Flash', FCKLang.FlashProperties, 38 ) ;
+		}
+	}}
+);
+
+// Double click
+FCK.RegisterDoubleClickHandler( function( oNode )
+{
+	if ( !oNode.getAttribute( 'swfobjectnumber' ))
+		return ;
+
+	FCK.Commands.GetCommand( 'Flash' ).Execute() ;
+}, 'IMG' ) ;
+
+
+// Object that handles the common functions about all the players
+FCK.SwfobjectHandler = {
+	// Object to store a reference to each player
+	Items: {},
+
+	getItem: function(id){
+		return this.Items[id];
+	},
+
+	// Verify that the node is a script generated by this plugin.
+	detectScript: function( script )
+	{
+		// We only know about version 1:
+		if ( !(/FCK swfobject v1\.(\d+)/.test(script)) )
+			return false;
+
+		return true ;
+	},
+
+	// Detects both the google script as well as our ending block
+	// both must be removed and then added later only if neccesary
+	detectSwfObjectScript: function( script )
+	{
+		return (/<script.*>\/\/swfobject plugin<\/script>/.test(script) ) ;
+	},
+
+	SwfObjectScript : function()
+	{
+		return (FCKConfig.swfObjectPath === '' ? '' : '\r\n<script src="' + FCKConfig.swfObjectPath + '" type="text/javascript">//swfobject plugin<\/script>'	) ;
+	}() ,
+
+	// This can be called from the dialog
+	createNew: function()
+	{
+		var item = new swfobject() ;
+		this.Items[ item.number ] = item;
+		return item;
+	},
+
+	// We will use this to track the number of maps that are generated
+	// This way we know if we must add the Google Script or not.
+	// We store their names so they are called properly from BuildEndingScript
+	CreatedItemsNames : [],
+
+	// Function that will be injected into the normal core
+	GetXHTMLAfter: function( node, includeNode, format, Result )
+	{
+/*
+		if (FCK.SwfobjectHandler.CreatedItemsNames.length > 0)
+		{
+			Result += FCK.SwfobjectHandler.BuildEndingScript() ;
+		}
+*/
+		// Reset the counter each time the GetXHTML function is called
+		FCK.SwfobjectHandler.CreatedItemsNames = [];
+
+		return Result ;
+	},
+
+	// Store any previous processor so nothing breaks
+	previousProcessor: FCKXHtml.TagProcessors[ 'img' ]
+}
+
+
+
+
+
+// Our object that will handle parsing of the script and creating the new one.
+var swfobject = function()
+{
+	var now = new Date() ;
+	this.number = '' + now.getFullYear() + now.getMonth() + now.getDate() + now.getHours() + now.getMinutes() + now.getSeconds() ;
+
+	this.file = '';
+	this.width = FCKConfig.swfobject_Width || '';
+	this.height = FCKConfig.swfobject_Height || '';
+	this.version = FCKConfig.swfObject_FlashVersion || '7.0.0' ;
+	this.expressInstall = FCKConfig.swfObject_ExpressInstall || false ;
+	if (this.expressInstall) this.expressInstall = '"' + this.expressInstall + '"' ;
+
+	this.flashvars = {};
+	this.params = {scale:'',play:true,menu:true,loop:true,allowfullscreen:false,wmode:'',allowscriptaccess:''};
+	this.attributes = {id:'',"class":'',style:'',title:''};
+
+	this.WrapperClass = FCKConfig.swfobject_WrapperClass || '' ;
+}
+
+
+swfobject.prototype.createHtmlElement = function( oReplacedNode, index)
+{
+	var oFakeNode = FCK.EditorDocument.createElement( 'IMG' ) ;
+
+	// Are we creating a new map?
+	if ( !oReplacedNode )
+	{
+    index = FCKTempBin.AddElement( this.BuildScript() ) ;
+		var prefix = ( FCKConfig.ProtectedSource._CodeTag || 'PS..' ) ;
+		oReplacedNode = FCK.EditorDocument.createComment( '{' + prefix + index + '}' ) ;
+		FCK.InsertElement(oReplacedNode);
+	}
+//	oFakeNode.contentEditable = false ;
+//	oFakeNode.setAttribute( '_fckfakelement', 'true', 0 ) ;
+
+	oFakeNode.setAttribute( '_fckrealelement', FCKTempBin.AddElement( oReplacedNode ), 0 ) ;
+	oFakeNode.setAttribute( '_fckBinNode', index, 0 ) ;
+
+	oFakeNode.src = FCKConfig.FullBasePath + 'images/spacer.gif' ;
+	oFakeNode.style.display = 'block' ;
+	oFakeNode.style.border = '1px solid black' ;
+	oFakeNode.style.background = 'white center center url("' + FCKPlugins.Items['swfobject'].Path + 'images/preview.png' + '") no-repeat' ;
+
+	oFakeNode.setAttribute("SwfObjectNumber", this.number, 0) ;
+
+	oReplacedNode.parentNode.insertBefore( oFakeNode, oReplacedNode ) ;
+	oReplacedNode.parentNode.removeChild( oReplacedNode ) ;
+
+	// dimensions
+	this.updateHTMLElement( oFakeNode );
+
+	return oFakeNode ;
+}
+
+swfobject.prototype.updateScript = function( oFakeNode )
+{
+	this.updateDimensions( oFakeNode ) ;
+
+	var index = oFakeNode.getAttribute( '_fckBinNode' );
+	FCKTempBin.Elements[ index ] =  this.BuildScript() ;
+}
+
+swfobject.prototype.updateHTMLElement = function( oFakeNode )
+{
+	oFakeNode.width = this.width ;
+	oFakeNode.height = this.height ;
+
+	// The wrapper class is applied to the IMG not to a wrapping DIV !!!
+	if ( this.WrapperClass !== '')
+		oFakeNode.className = this.WrapperClass ;
+}
+
+// Read the dimensions back from the fake node (the user might have manually resized it)
+swfobject.prototype.updateDimensions = function( oFakeNode )
+{
+	var iWidth, iHeight ;
+	var regexSize = /^\s*(\d+)px\s*$/i ;
+
+	if ( oFakeNode.style.width )
+	{
+		var aMatchW  = oFakeNode.style.width.match( regexSize ) ;
+		if ( aMatchW )
+		{
+			iWidth = aMatchW[1] ;
+			oFakeNode.style.width = '' ;
+			oFakeNode.width = iWidth ;
+		}
+	}
+
+	if ( oFakeNode.style.height )
+	{
+		var aMatchH  = oFakeNode.style.height.match( regexSize ) ;
+		if ( aMatchH )
+		{
+			iHeight = aMatchH[1] ;
+			oFakeNode.style.height = '' ;
+			oFakeNode.height = iHeight ;
+		}
+	}
+
+	this.width	= iWidth ? iWidth : oFakeNode.width ;
+	this.height	= iHeight ? iHeight : oFakeNode.height ;
+}
+
+swfobject.prototype.parse = function( script )
+{
+	function parseValue(value)
+	{
+		if (value==="true")
+			return true;
+		if (value==="false")
+			return false;
+		return value ;
+	}
+
+	// We only know about version 1:
+	if ( !(/FCK swfobject v1\.(\d+)/.test(script)) )
+		return false;
+
+	var version = parseInt(RegExp.$1, 10) ;
+
+	// dimensions:
+	var regexpDimensions = /<div id="flash(\d+)" style="width\:\s*(\d+)px; height\:\s*(\d+)px;">/ ;
+	if (regexpDimensions.test( script ) )
+	{
+		delete FCK.SwfobjectHandler.Items[this.number] ;
+		this.number = RegExp.$1 ;
+		FCK.SwfobjectHandler.Items[this.number] = this ;
+
+		this.width = RegExp.$2 ;
+		this.height = RegExp.$3 ;
+	}
+
+	var regexpWrapper = /<div class=("|')(.*)\1.*\/\/wrapper/ ;
+	if (regexpWrapper.test( script ) )
+		this.WrapperClass = RegExp.$2 ;
+	else
+		this.WrapperClass = '' ;
+
+// swfobject.embedSWF("/userfiles/flash/gridlock.swf", "flash200881416419", 300, 100, "7.0.0", "", flashvars, params, attributes);
+	var regexpFile = /swfobject\.embedSWF\("(.*?)",/ ;
+	if (regexpFile.test( script ) )
+		this.file = RegExp.$1 ;
+
+	// parse automatically all the variables.
+	var regexpParams = /params\["(.*)"\]="(.*)"/g ;
+	var regexpAttributes = /attributes\["(.*)"\]="(.*)"/g ;
+	var regexpFlashvars = /flashvars\["(.*)"\]="(.*)"/g ;
+	if (version<3)
+	{
+		regexpParams = /params.(.*)="(.*)"/g ;
+		regexpAttributes = /attributes.(.*)="(.*)"/g ;
+		regexpFlashvars = /flashvars.(.*)="(.*)"/g ;
+	}
+
+	while( (result = regexpParams.exec(script)) )
+	{
+		this.params[result[1]] = parseValue(result[2]) ;
+	}
+
+	while( (result = regexpAttributes.exec(script)) )
+	{
+		this.attributes[result[1]] = parseValue(result[2]) ;
+	}
+
+	while( (result = regexpFlashvars.exec(script)) )
+	{
+		this.flashvars[result[1]] = parseValue(result[2]) ;
+	}
+
+	return true;
+}
+
+swfobject.prototype.BuildScript = function()
+{
+	var versionMarker = '/* FCK swfobject v1.5 */' ;
+
+	var v, aScript = [] ;
+	aScript.push('\r\n<script type="text/javascript">') ;
+	aScript.push('/*<![CDATA[*/');
+	aScript.push( versionMarker ) ;
+
+	if ( this.WrapperClass !== '')
+		aScript.push('document.write(\'<div class="' + this.WrapperClass + '">\'); //wrapper');
+
+	aScript.push('document.write(\'<div id="flash' + this.number + '" style="width:' + this.width + 'px; height:' + this.height + 'px;"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player<\\\/a> to see this player.<\\\/div>\');');
+
+	if ( this.WrapperClass !== '')
+		aScript.push('document.write(\'<\\\/div>\'); ');
+
+
+	aScript.push('var params={};');
+	aScript.push('var attributes={};');
+	aScript.push('var flashvars = {};');
+
+	for(v in this.params)
+	{
+		if (this.params[v]!=='')
+			aScript.push('	params["' + v + '"]="' + this.params[v] + '";');
+	}
+
+	for(v in this.attributes)
+	{
+		if (this.attributes[v]!=='')
+			aScript.push('	attributes["' + v + '"]="' + this.attributes[v] + '";');
+	}
+
+	for(v in this.flashvars)
+	{
+		if (this.flashvars[v]!=='')
+			aScript.push('	flashvars["' + v + '"]="' + this.flashvars[v] + '";');
+	}
+
+	aScript.push('swfobject.embedSWF("' + this.file + '", "flash' + this.number + '", ' + this.width + ', ' + this.height + ', "' + this.version + '", ' + this.expressInstall + ', flashvars, params, attributes);') ;
+
+	aScript.push('/*]]>*/');
+	aScript.push('</script>');
+
+	return aScript.join('\r\n');
+}
+
+
+
+
+// Modifications of the core routines of FCKeditor:
+
+FCKXHtml.GetXHTML = Inject(FCKXHtml.GetXHTML, null, FCK.SwfobjectHandler.GetXHTMLAfter ) ;
+
+FCKXHtml.TagProcessors.img = function( node, htmlNode, xmlNode )
+{
+	if ( htmlNode.getAttribute( 'SwfObjectNumber' ) )
+	{
+		var oMap = FCK.SwfobjectHandler.getItem( htmlNode.getAttribute( 'SwfObjectNumber' ) ) ;
+		FCK.SwfobjectHandler.CreatedItemsNames.push( oMap.number ) ;
+
+		oMap.updateScript( htmlNode );
+		node = FCK.GetRealElement( htmlNode ) ;
+		if ( FCK.SwfobjectHandler.CreatedItemsNames.length == 1 )
+		{
+			// If it is the first map, insert the google maps script
+			var index = FCKTempBin.AddElement( FCK.SwfobjectHandler.SwfObjectScript ) ;
+			var prefix = ( FCKConfig.ProtectedSource._CodeTag || 'PS..' ) ;
+			oScriptCommentNode = xmlNode.ownerDocument.createComment( '{' + prefix + index + '}' ) ;
+			xmlNode.appendChild( oScriptCommentNode ) ;
+		}
+
+		return xmlNode.ownerDocument.createComment( node.nodeValue ) ;
+	}
+
+	if (typeof FCK.SwfobjectHandler.previousProcessor == 'function')
+		node = FCK.SwfobjectHandler.previousProcessor( node, htmlNode, xmlNode ) ;
+	else
+		node = FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
+
+	return node ;
+};
+
+
+// Returns an array with the available classes defined in the Styles
+function GetAvailableClasses( nodeName )
+{
+	var styles = FCK.Styles.GetStyles() ;
+	var aClasses = [{name:'', classname:''}];
+
+	for ( var styleName in styles )
+	{
+		var style = styles[styleName] ;
+		if (style.IsCore)
+			continue;
+
+		if (style.Element == nodeName)
+		{
+			if (style._StyleDesc.Attributes && style._StyleDesc.Attributes['class'] )
+				aClasses.push( {name:styleName, classname:style._StyleDesc.Attributes['class']} ) ;
+		}
+	}
+
+	return aClasses ;
+}
\ No newline at end of file
Index: branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/index.php
===================================================================
--- branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/index.php	(nonexistent)
+++ branches/2.8.x/wb/modules/fckeditor/fckeditor/editor/plugins/swfobject/index.php	(revision 1202)
@@ -0,0 +1,28 @@
+<?php
+
+// $Id: index.php 1161 2009-10-11 16:45:19Z Luisehahne $
+
+/*
+
+ Website Baker Project <http://www.websitebaker.org/>
+ Copyright (C) 2004-2009, Ryan Djurovich
+
+ Website Baker is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Website Baker is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Website Baker; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+*/
+
+header('Location: ../index.php');
+
+?>
\ No newline at end of file
