Index: /MediaWiki/trunk/extensions/FCKeditor/FCKeditorParser.body.php
===================================================================
--- /MediaWiki/trunk/extensions/FCKeditor/FCKeditorParser.body.php	(revision 582)
+++ /MediaWiki/trunk/extensions/FCKeditor/FCKeditorParser.body.php	(revision 583)
@@ -123,8 +123,8 @@
     function ref( $str, $argv, $parser ) {
         if (empty($argv)) {
-            $ret = "<ref>";
+			$ret = "<span class=\"fck_mw_ref\">";
         }
         else {
-            $ret = "<ref";
+			$ret = "<span class=\"fck_mw_ref\"";
             foreach ($argv as $key=>$value) {
                 $ret .= " ".$key."=\"".$value."\"";
@@ -137,5 +137,5 @@
         else {
             $ret .= htmlspecialchars($str);
-            $ret .= "</ref>";
+            $ret .= "</span>";
         }
         return $ret;
@@ -150,8 +150,8 @@
     function references( $str, $argv, $parser ) {
         if (empty($argv)) {
-            $ret = "<references>";
+			$ret = "<span class=\"fck_mw_references\">";
         }
         else {
-            $ret = "<references";
+			$ret = "<span class=\"fck_mw_references\"";
             foreach ($argv as $key=>$value) {
                 $ret .= " ".$key."=\"".$value."\"";
@@ -164,5 +164,5 @@
         else {
             $ret .= htmlspecialchars($str);
-            $ret .= "</references>";
+            $ret .= "</span>";
         }
 
Index: /MediaWiki/trunk/extensions/FCKeditor/fckeditor_config.js
===================================================================
--- /MediaWiki/trunk/extensions/FCKeditor/fckeditor_config.js	(revision 582)
+++ /MediaWiki/trunk/extensions/FCKeditor/fckeditor_config.js	(revision 583)
@@ -13,5 +13,5 @@
 	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
 	['SpecialChar','Table','Image','Rule'],
-	['MW_Template'],
+	['MW_Template', 'MW_Ref'],
 	'/',
 	['FontFormat'],
@@ -31,17 +31,8 @@
 FCKConfig.FontFormats	= 'p;pre;h1;h2;h3;h4;h5;h6' ;
 
-// Disable some advanced features.
-FCKConfig.LinkDlgHideTarget     = true ;
-FCKConfig.LinkDlgHideAdvanced   = true ;
-FCKConfig.ImageDlgHideLink      = true ;
-FCKConfig.ImageDlgHideAdvanced  = true ;
-FCKConfig.FlashDlgHideAdvanced  = true ;
+FCKConfig.AutoDetectLanguage	= false ;
+FCKConfig.DefaultLanguage		= 'en' ;
 
-FCKConfig.LinkBrowser   = false ;
-FCKConfig.ImageBrowser  = false ;
-FCKConfig.FlashBrowser  = false ;
-FCKConfig.LinkUpload    = false ;
-FCKConfig.ImageUpload   = false ;
-FCKConfig.FlashUpload   = false ;
+// FCKConfig.DisableObjectResizing = true ;
 
 FCKConfig.EditorAreaStyles = '\
@@ -55,3 +46,24 @@
 	height: 15px; \
 	vertical-align: middle; \
-}' ;
+} \
+.FCK__MWRef \
+{ \
+	border: 1px dotted #00F; \
+	background-position: center center; \
+	background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_ref.gif); \
+	background-repeat: no-repeat; \
+	width: 18px; \
+	height: 15px; \
+	vertical-align: middle; \
+} \
+.FCK__MWReferences \
+{ \
+	border: 1px dotted #00F; \
+	background-position: center center; \
+	background-image: url(' + FCKConfig.PluginsPath + 'mediawiki/images/icon_references.gif); \
+	background-repeat: no-repeat; \
+	width: 66px; \
+	height: 15px; \
+	vertical-align: middle; \
+} \
+' ;
Index: /MediaWiki/trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/ref.html
===================================================================
--- /MediaWiki/trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/ref.html	(revision 583)
+++ /MediaWiki/trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/ref.html	(revision 583)
@@ -0,0 +1,124 @@
+﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<!--
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 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 ==
+ *
+ * Link dialog window.
+-->
+<html>
+<head>
+	<title>Reference Properties</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<meta name="robots" content="noindex, nofollow" />
+	<script type="text/javascript">
+
+var oEditor		= window.parent.InnerDialogLoaded() ;
+var FCK			= oEditor.FCK ;
+var FCKLang		= oEditor.FCKLang ;
+var FCKConfig	= oEditor.FCKConfig ;
+var FCKRegexLib	= oEditor.FCKRegexLib ;
+var FCKTools	= oEditor.FCKTools ;
+
+document.write( '<script src="' + FCKConfig.BasePath + 'dialog/common/fck_dialog_common.js" type="text/javascript"><\/script>' ) ;
+
+	</script>
+	<script type="text/javascript">
+
+// Get the selected flash embed (if available).
+var oFakeImage = FCK.Selection.GetSelectedElement() ;
+var oRef ;
+
+if ( oFakeImage )
+{
+	if ( oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fck_mw_ref') )
+		oRef = FCK.GetRealElement( oFakeImage ) ;
+	else
+		oFakeImage = null ;
+}
+
+window.onload = function()
+{
+	// Translate the dialog box texts.
+	oEditor.FCKLanguageManager.TranslatePage(document) ;
+
+	// Load the selected link information (if any).
+	LoadSelection() ;
+
+	// Activate the "OK" button.
+	window.parent.SetOkButton( true ) ;
+	window.parent.SetAutoSize( true ) ;
+}
+
+function LoadSelection()
+{
+	if ( !oRef ) return ;
+
+	GetE('xRefText').value = FCKTools.HTMLDecode( oRef.innerHTML ).replace( /&quot;/g, '"' ) ;
+	GetE('xRefName').value = oRef.getAttribute( 'name' ) ;
+}
+
+//#### The OK button was hit.
+function Ok()
+{
+	if ( !oRef )
+	{
+		oRef = FCK.EditorDocument.createElement( 'SPAN' ) ;
+		oRef.className = 'fck_mw_ref' ;
+	}
+	
+	var refData = FCKTools.HTMLEncode( GetE('xRefText').value ).Trim().replace( /"/g, '&quot;' ) ;
+	oRef.innerHTML = refData ;
+	SetAttribute( oRef, "name", GetE('xRefName').value ) ;
+
+	if ( !oFakeImage )
+	{
+		oFakeImage	= oEditor.FCKDocumentProcessor_CreateFakeImage( 'FCK__MWRef', oRef ) ;
+		oFakeImage.setAttribute( '_fck_mw_ref', 'true', 0 ) ;
+		oFakeImage	= FCK.InsertElement( oFakeImage ) ;
+	}
+
+	return true ;
+}
+
+	</script>
+</head>
+<body style="overflow: hidden">
+	<div id="divInfo">
+		<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
+			<tr>
+				<td>
+					<span>Reference text (Wikitext)</span>
+				</td>
+			</tr>
+			<tr>
+				<td height="100%">
+					<textarea id="xRefText" style="width: 100%; height: 100%; font-family: Monospace"
+						cols="50" rows="5"></textarea>
+				</td>
+			</tr>
+			<tr>
+				<td>
+					Reference name (optional)<br />
+					<input id="xRefName" type="text" size="15" />
+				</td>
+			</tr>
+		</table>
+	</div>
+</body>
+</html>
Index: /MediaWiki/trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/template.html
===================================================================
--- /MediaWiki/trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/template.html	(revision 582)
+++ /MediaWiki/trunk/extensions/FCKeditor/plugins/mediawiki/dialogs/template.html	(revision 583)
@@ -113,5 +113,5 @@
 			</tr>
 			<tr>
-				<td>
+				<td height="100%">
 					<textarea id="xTemplateRaw" style="width: 100%; height: 100%; font-family: Monospace"
 						cols="50" rows="10" wrap="off"></textarea>
Index: /MediaWiki/trunk/extensions/FCKeditor/plugins/mediawiki/fckplugin.js
===================================================================
--- /MediaWiki/trunk/extensions/FCKeditor/plugins/mediawiki/fckplugin.js	(revision 582)
+++ /MediaWiki/trunk/extensions/FCKeditor/plugins/mediawiki/fckplugin.js	(revision 583)
@@ -37,7 +37,12 @@
 FCKToolbarItems.RegisterItem( 'MW_Template', tbButton ) ;
 
+tbButton = new FCKToolbarButton( 'MW_Ref', 'Reference', 'Insert/Edit Reference' ) ;
+tbButton.IconPath = FCKConfig.PluginsPath + 'mediawiki/images/tb_icon_ref.gif' ;
+FCKToolbarItems.RegisterItem( 'MW_Ref', tbButton ) ;
+
 // Override some dialogs.
 FCKCommands.RegisterCommand( 'MW_Template', new FCKDialogCommand( 'MW_Template', 'Template Properties', FCKConfig.PluginsPath + 'mediawiki/dialogs/template.html', 400, 330 ) ) ;
-FCKCommands.RegisterCommand( 'Link', new FCKDialogCommand( 'Link', FCKLang.DlgLnkWindowTitle, FCKConfig.PluginsPath + 'mediawiki/dialogs/link.html', 400, 330 ) ) ;
+FCKCommands.RegisterCommand( 'MW_Ref', new FCKDialogCommand( 'MW_Ref', 'Reference Properties', FCKConfig.PluginsPath + 'mediawiki/dialogs/ref.html', 400, 250 ) ) ;
+FCKCommands.RegisterCommand( 'Link', new FCKDialogCommand( 'Link', FCKLang.DlgLnkWindowTitle, FCKConfig.PluginsPath + 'mediawiki/dialogs/link.html', 400, 250 ) ) ;
 FCKCommands.RegisterCommand( 'Image', new FCKDialogCommand( 'Image', FCKLang.DlgImgTitle, FCKConfig.PluginsPath + 'mediawiki/dialogs/image.html', 450, 300 ) ) ;
 
@@ -285,9 +290,9 @@
 
 							break ;
-						
+
 						case 'img' :
-							
+
 							// <img alt="Blue Flower Image" _fck_mw_type="frame" _fck_mw_width="150" _fck_mw_filename="Blue Flower.jpg" _fcksavedurl="/images/b/b3/Blue_Flower.jpg" src="/images/b/b3/Blue_Flower.jpg"/>
-							
+
 							var imgName		= htmlNode.getAttribute( '_fck_mw_filename' ) ;
 							var imgCaption	= htmlNode.getAttribute( 'alt' ) || '' ;
@@ -296,11 +301,11 @@
 							var imgWidth	= htmlNode.getAttribute( '_fck_mw_width' ) || '' ;
 							var imgHeight	= htmlNode.getAttribute( '_fck_mw_height' ) || '' ;
-							
-							stringBuilder.push( '[[Image:' ) 
-							stringBuilder.push( imgName ) 
-							
+
+							stringBuilder.push( '[[Image:' )
+							stringBuilder.push( imgName )
+
 							if ( imgType.length > 0 )
 								stringBuilder.push( '|' + imgType ) ;
-							
+
 							if ( imgLocation.length > 0 )
 								stringBuilder.push( '|' + imgLocation ) ;
@@ -309,5 +314,5 @@
 							{
 								stringBuilder.push( '|' + imgWidth ) ;
-								
+
 								if ( imgHeight.length > 0 )
 									stringBuilder.push( 'x' + imgHeight ) ;
@@ -315,15 +320,37 @@
 								stringBuilder.push( 'px' ) ;
 							}
-							
+
 							if ( imgCaption.length > 0 )
 								stringBuilder.push( '|' + imgCaption ) ;
-							
-							stringBuilder.push( ']]' ) 
-							
+
+							stringBuilder.push( ']]' )
+
 							break ;
-						
+
 						case 'span' :
 							switch ( htmlNode.className )
 							{
+								case 'fck_mw_ref' :
+									var refName = htmlNode.getAttribute( 'name' ) ;
+
+									stringBuilder.push( '<ref' ) ;
+
+									if ( refName && refName.length > 0 )
+										stringBuilder.push( ' name="' + refName + '"' ) ;
+
+									if ( htmlNode.innerHTML.length == 0 )
+										stringBuilder.push( ' />' ) ;
+									else
+									{
+										stringBuilder.push( '>' ) ;
+										stringBuilder.push( htmlNode.innerHTML ) ;
+										stringBuilder.push( '</ref>' ) ;
+									}
+									return ;
+
+								case 'fck_mw_references' :
+									stringBuilder.push( '<references />' ) ;
+									return ;
+
 								case 'fck_mw_template' :
 								case 'fck_mw_magic' :
@@ -480,7 +507,8 @@
 })() ;
 
-// MediaWiki document processor (templates and magic words).
+// MediaWiki document processor.
 FCKDocumentProcessor.AppendNew().ProcessDocument = function( document )
 {
+	// Templates and magic words.
 	var aSpans = document.getElementsByTagName( 'SPAN' ) ;
 
@@ -489,11 +517,18 @@
 	while ( i >= 0 && ( eSpan = aSpans[i--] ) )
 	{
-		var customAtt = null ;
-		
+		var className = null ;
 		switch ( eSpan.className )
 		{
+			case 'fck_mw_ref' :
+				className = 'FCK__MWRef' ;
+			case 'fck_mw_references' :
+				if ( className == null )
+					className = 'FCK__MWReferences' ;
 			case 'fck_mw_template' :
 			case 'fck_mw_magic' :
-				var oImg = FCKDocumentProcessor_CreateFakeImage( 'FCK__MWTemplate', eSpan.cloneNode(true) ) ;
+				if ( className == null )
+					className = 'FCK__MWTemplate' ;
+
+				var oImg = FCKDocumentProcessor_CreateFakeImage( className, eSpan.cloneNode(true) ) ;
 				oImg.setAttribute( '_' + eSpan.className, 'true', 0 ) ;
 
@@ -521,4 +556,9 @@
 				contextMenu.AddItem( 'MW_MagicWord', 'Modify Magic Word' ) ;
 			}
+			if ( tag.getAttribute( '_fck_mw_ref' ) )
+			{
+				contextMenu.AddSeparator() ;
+				contextMenu.AddItem( 'MW_Ref', 'Reference Properties' ) ;
+			}
 		}
 	}
