Index: skins/monobook/rtl.css
===================================================================
--- skins/monobook/rtl.css	(revision 28600)
+++ skins/monobook/rtl.css	(working copy)
@@ -1,229 +0,0 @@
-/*
-Right-to-left fixes for MonoBook.
-Places sidebar on right, tweaks various alignment issues.
-
-Works mostly ok nicely on Safari 1.2.1; fine in Mozilla.
-
-Safari bugs (1.2.1):
-* Tabs are still appearing in left-to-right order. (Try after localizing)
-
-Opera bugs (7.23 linux):
-* Some bits of ltr text (sidebar box titles) have forward and backward versions overlapping each other
-
-IE/mac bugs:
-* The thing barfs on Hebrew and Arabic anyway, so no point testing.
-
-Missing features due to lack of support:
-* external link icons
-
-To test:
-* Opera6
-* IE 5.0
-* etc
-
-*/
-body {
-	direction: rtl;
-/*    unicode-bidi: bidi-override;*/
-	unicode-bidi: embed;
-}
-#column-content {
-	margin: 0 -12.2em 0 0;
-	float: left;
-}
-#column-content #content{
-	margin-left: 0;
-	margin-right: 12.2em;
-	border-right: 1px solid #aaaaaa;
-	border-left: none;
-}
-html>body .portlet {
-	float: right;
-	clear: right;
-}
-.editsection {
-	float: left;
-	margin-right: 5px;
-	margin-left: 0; /* bug 9122: undo default LTR */
-}
-/* recover IEMac (might be fine with the float, but usually it's close to IE */
-*>body .portlet {
-	float: none;
-	clear: none;
-}
-.pBody {
-	padding-right: 0.8em;
-	padding-left: 0.5em;
-}
-
-/* Fix alignment */
-.documentByLine,
-.portletDetails,
-.portletMore,
-#p-personal {
-	text-align: left;
-}
-
-div div.thumbcaption {
-	text-align: right;
-}
-
-div.magnify,
-#div.townBox,
-#p-logo {
-	left: auto;
-	right: 0;
-}
-#p-personal {
-	left: auto;
-	right: 0;
-}
-
-#p-cactions {
-	left: auto;
-	right: 11.5em;
-	padding-left: 0;
-	padding-right: 1em;
-}
-#p-cactions li {
-	margin-left: 0.3em;
-	margin-right: 0;
-	float: right;
-}
-* html #p-cactions li a {
-	display: block;
-	padding-bottom: 0;
-}
-* html #p-cactions li a:hover {
-	padding-bottom: 0.2em;
-}
-/* offsets to distinguish the tab groups */
-li#ca-talk {
-	margin-right: auto;
-	margin-left: 1.6em;
-}
-li#ca-watch,li#ca-unwatch {
-	margin-right: 1.6em !important;
-}
-
-/* Fix margins for non-css2 browsers */
-/* top right bottom left */
-
-ul {
-	margin-left: 0;
-	margin-right: 1.5em;
-}
-ol {
-	margin-left: 0;
-	margin-right: 2.4em;
-}
-dd {
-	margin-left: 0;
-	margin-right: 1.6em;
-}
-#contentSub {
-	margin-right: 1em;
-	margin-left: 0;
-}
-.tocindent {
-	margin-left: 0;
-	margin-right: 2em;
-}
-div.tright, div.floatright, table.floatright {
-	clear: none;
-}
-div.tleft, div.floatleft, table.floatleft {
-	clear: left;
-}
-div.townBox {
-	margin-left: 0;
-	margin-right: 1em;
-}
-div.townBox dl dd {
-	margin-left: 0;
-	margin-right: 1.1em;
-}
-#p-personal li {
-	margin-left: 0;
-	margin-right: 1em;
-}
-
-li#ca-talk,
-li#ca-watch {
-	margin-right: auto;
-	margin-left: 1.6em;
-}
-
-#p-personal li {
-	float: left;
-}
-/* Fix link icons */
-.external {
-	padding: 0 !important;
-	background: none !important;
-}
-#footer {
-	clear: both;
-}
-* html #footer {
-	margin-left: 0;
-	margin-right: 13.6em;
-	border-left: 0;
-	border-right: 1px solid #fabd23;
-} 
-* html #column-content { 
-	float: none;
-	margin-left: 0;
-	margin-right: 0;
-}
-* html #column-content #content {
-	margin-left: 0;
-	margin-top: 3em;
-}
-* html #column-one { right: 0; }
-
-/* js pref toc */
-
-#preftoc {
-	margin-right: 1em;
-}
-
-.errorbox, .successbox, #preftoc li, .prefsection fieldset {
-	float: right;
-}
-
-.prefsection {
-	padding-right: 2em;
-}
-
-/* workaround for moz bug, displayed bullets on left side */
-
-#toc ul {
-	text-align: right;
-}
-
-#toc ul ul {
-	margin: 0 2em 0 0;
-}
-
-input#wpSave, input#wpDiff {
-	margin-right: 0;
-	margin-left: .33em;
-}
-
-#userlogin {
-	float: right;
-	margin: 0 0 1em 3em;
-}
-/* Unblock and Ipblocklist links of Special:Blockip */
-p.mw-ipb-conveniencelinks {
-	float: left;
-}
-
-.toggle {
-	margin-left: 0em;
-	margin-right: 2em;
-}
-table.filehistory th {
-	text-align: right;
-}
Index: skins/monobook/main.css
===================================================================
--- skins/monobook/main.css	(revision 28600)
+++ skins/monobook/main.css	(working copy)
@@ -15,12 +15,21 @@
 	margin: 0 0 .6em -12.2em;
 	padding: 0;
 }
+body.mw-interface-rtl #column-content {
+	float: left;
+	margin: 0 -12.2em .6em 0;
+}
+
 #content {
 	margin: 2.8em 0 0 12.2em;
 	padding: 0 1em 1.5em 1em;
 	position: relative;
 	z-index: 2;
 }
+body.mw-interface-rtl #content {
+	margin: 2.8em 12.2em 0 0;
+}
+
 #column-one {
 	padding-top: 160px;
 }
@@ -144,12 +153,26 @@
 	padding: 0;
 	list-style-image: url(bullet.gif);
 }
+body.mw-interface-rtl ul, body.rtl #content ul {
+	margin: .3em 1.5em 0 0;
+}
+body.ltr #content ul {
+	margin: .3em 0 0 1.5em;
+}
+
 ol {
 	line-height: 1.5em;
 	margin: .3em 0 0 3.2em;
 	padding: 0;
 	list-style-image: none;
 }
+body.mw-interface-rtl ol, body.rtl #content ol {
+	margin: .3em 1.5em 0 0;
+}
+body.ltr #content ol {
+	margin: .3em 0 0 1.5em;
+}
+
 li {
 	margin-bottom: .1em;
 }
@@ -163,9 +186,14 @@
 }
 dd {
 	line-height: 1.5em;
-	margin-left: 2em;
 	margin-bottom: .1em;
 }
+body.mw-interface-rtl dd, body.rtl #content dd {
+	margin-right: 2em;
+}
+body.mw-interface-ltr dd, body.ltr #content dd {
+	margin-left: 2em;
+}
 
 fieldset {
 	border: 1px solid #2f6fab;
@@ -241,6 +269,10 @@
 	color: #7d7d7d;
 	width: auto;
 }
+body.rtl #contentSub, body.rtl #contentSub2 {
+	margin: 0 1em 1.4em 0;
+}
+
 span.subpages {
 	display: block;
 }
@@ -283,10 +315,18 @@
 	font-size: larger;
 	border: 2px solid;
 	padding: .5em 1em;
-	float: left;
 	margin-bottom: 2em;
 	color: #000;
 }
+body.mw-interface-rtl .errorbox, body.mw-interface-rtl .successbox,
+body.rtl #content .errorbox, body.rtl #content .successbox {
+	float: right;
+}
+body.mw-interface-ltr .errorbox, body-mw-interface-ltr .successbox,
+body.ltr #content .errorbox, body.ltr #content .successbox {
+	float: left;
+}
+
 .errorbox {
 	border-color: red;
 	background-color: #fff2f2;
@@ -299,9 +339,16 @@
 	font-size: 1em;
 	font-weight: bold;
 	display: inline;
-	margin: 0 .5em 0 0;
 	border: none;
 }
+body.mw-interface-rtl .errorbox h2, body.mw-interface-rtl .successbox h2,
+body.rtl #content .errorbox h2, body.rtl #content .successbox h2 {
+	margin: 0 0 0 .5em;
+}
+body.mw-interface-ltr .errorbox h2, body-mw-interface-ltr .successbox h2,
+body.ltr #content .errorbox h2, body.ltr #content .successbox h2 {
+	margin: 0 .5em 0 0;
+}
 
 #catlinks {
 	border: 1px solid #aaa;
@@ -320,12 +367,17 @@
 	line-height: 1.5em;
 }
 .documentByLine {
-	text-align: right;
 	font-size: 90%;
 	clear: both;
 	font-weight: normal;
 	color: #76797c;
 }
+body.mw-interface-rtl .documentByLine, body.rtl #content .documentByLine {
+	text-align: left;
+}
+body.mw-interface-ltr .documentByLine, body.ltr #content .documentByLine {
+	text-align: right;
+}
 
 /* emulate center */
 .center {
@@ -374,14 +426,25 @@
 .toc ul {
 	list-style-type: none;
 	list-style-image: none;
+}
+body.rtl #toc ul, body.rtl .toc ul {
+	margin-right: 0;
+	padding-right: 0;
+	text-align: right;
+}
+body.ltr #toc ul, body.ltr .toc ul {
 	margin-left: 0;
 	padding-left: 0;
 	text-align: left;
 }
-#toc ul ul,
-.toc ul ul {
+
+body.rtl #toc ul ul, body.rtl .toc ul ul {
+	margin: 0 2em 0 0;
+}
+body.ltr #toc ul ul, body.ltr .toc ul ul {
 	margin: 0 0 0 2em;
 }
+
 #toc .toctoggle,
 .toc .toctoggle {
 	font-size: 94%;
@@ -437,6 +500,7 @@
 html .thumbimage {
 	border: 1px solid #ccc;
 }
+
 html .thumbcaption {
 	border: none;
 	text-align: left;
@@ -444,11 +508,19 @@
 	padding: 3px !important;
 	font-size: 94%;
 }
+html body.rtl .thumbcaption {
+	text-align: right;
+}
+
 div.magnify {
 	float: right;
 	border: none !important;
 	background: none !important;
 }
+body.rtl div.magnify {
+	float: left;
+}
+
 div.magnify a, div.magnify img {
 	display: block;
 	border: none !important;
@@ -545,6 +617,11 @@
 	margin-left: 1.4em;
 	margin-right: .4em;
 }
+body.mw-interface-rtl #pagehistory span.user {
+	margin-left: .4em;
+	margin-right: 1.4em;
+}
+
 #pagehistory span.minor {
 	font-weight: bold;
 }
@@ -560,6 +637,8 @@
 ** keep the whitespace in front of the ^=, hides rule from konqueror
 ** this is css3, the validator doesn't like it when validating as css2
 */
+
+/* Keep this synced with the RTL version below! */
 #bodyContent a.external,
 #bodyContent a[href ^="gopher://"] {
 	background: url(external.png) center right no-repeat;
@@ -615,6 +694,86 @@
 	padding-right: 12px;
 }
 
+/* We repeat the whole thing for RTL.  Make sure these stay synced! */
+body.rtl #bodyContent a.external,
+body.rtl #bodyContent a[href ^="gopher://"] {
+	background: url(external.png) center left no-repeat;
+	padding-right: 0;
+	padding-left: 13px;
+}
+body.rtl #bodyContent a[href ^="https://"],
+body.rtl .link-https {
+	background: url(lock_icon.gif) center left no-repeat;
+	padding-right: 0;
+	padding-left: 16px;
+}
+body.rtl #bodyContent a[href ^="mailto:"],
+body.rtl .link-mailto {
+	background: url(mail_icon.gif) center left no-repeat;
+	padding-right: 0;
+	padding-left: 18px;
+}
+body.rtl #bodyContent a[href ^="news://"] {
+	background: url(news_icon.png) center left no-repeat;
+	padding-right: 0;
+	padding-left: 18px;
+}
+body.rtl #bodyContent a[href ^="ftp://"],
+body.rtl .link-ftp {
+	background: url(file_icon.gif) center left no-repeat;
+	padding-right: 0;
+	padding-left: 18px;
+}
+body.rtl #bodyContent a[href ^="irc://"],
+body.rtl .link-irc {
+	background: url(discussionitem_icon.gif) center left no-repeat;
+	padding-right: 0;
+	padding-left: 18px;
+}
+body.rtl #bodyContent a.external[href $=".ogg"],
+body.rtl #bodyContent a.external[href $=".OGG"],
+body.rtl #bodyContent a.external[href $=".mid"],
+body.rtl #bodyContent a.external[href $=".MID"],
+body.rtl #bodyContent a.external[href $=".midi"],
+body.rtl #bodyContent a.external[href $=".MIDI"],
+body.rtl #bodyContent a.external[href $=".mp3"],
+body.rtl #bodyContent a.external[href $=".MP3"],
+body.rtl #bodyContent a.external[href $=".wav"],
+body.rtl #bodyContent a.external[href $=".WAV"],
+body.rtl #bodyContent a.external[href $=".wma"],
+body.rtl #bodyContent a.external[href $=".WMA"],
+body.rtl .link-audio {
+	background: url("audio.png") center left no-repeat;
+	padding-right: 0;
+	padding-left: 13px;
+}
+body.rtl #bodyContent a.external[href $=".ogm"],
+body.rtl #bodyContent a.external[href $=".OGM"],
+body.rtl #bodyContent a.external[href $=".avi"],
+body.rtl #bodyContent a.external[href $=".AVI"],
+body.rtl #bodyContent a.external[href $=".mpeg"],
+body.rtl #bodyContent a.external[href $=".MPEG"],
+body.rtl #bodyContent a.external[href $=".mpg"],
+body.rtl #bodyContent a.external[href $=".MPG"],
+body.rtl .link-video {
+	background: url("video.png") center left no-repeat;
+	padding-right: 0;
+	padding-left: 13px;
+}
+body.rtl #bodyContent a.external[href $=".pdf"],
+body.rtl #bodyContent a.external[href $=".PDF"],
+body.rtl #bodyContent a.external[href *=".pdf#"],
+body.rtl #bodyContent a.external[href *=".PDF#"],
+body.rtl #bodyContent a.external[href *=".pdf?"],
+body.rtl #bodyContent a.external[href *=".PDF?"],
+body.rtl .link-document {
+	background: url("document.png") center left no-repeat;
+	padding-right: 0;
+	padding-left: 12px;
+}
+
+
+
 /* disable interwiki styling */
 #bodyContent a.extiw,
 #bodyContent a.extiw:active {
@@ -661,11 +820,14 @@
 	font-weight: normal;
 	white-space: nowrap;
 }
+body.mw-interface-rtl .portlet h5 {
+	padding: 0 .5em 0 1em;
+}
 .portlet h6 {
 	background: #ffae2e;
 	border: 1px solid #2f6fab;
-	border-style: solid solid none solid;
-	padding: 0 1em 0 1em;
+	border-style: solid solid none;
+	padding: 0 1em;
 	text-transform: lowercase;
 	display: block;
 	font-size: 1em;
@@ -681,6 +843,9 @@
 	border: 1px solid #aaa;
 	padding: 0 .8em .3em .5em;
 }
+body.mw-interface-rtl .pBody {
+	padding: 0 .5em .3em .8em;
+}
 .portlet h1,
 .portlet h2,
 .portlet h3,
@@ -705,13 +870,15 @@
 
 #p-logo {
 	top: 0;
-	left: 0;
 	position: absolute; /*needed to use z-index */
 	z-index: 3;
 	height: 155px;
 	width: 12em;
 	overflow: visible;
 }
+body.mw-interface-ltr #p-logo { left: 0; }
+body.mw-interface-rtl #p-logo {	right: 0; }
+
 #p-logo h5 {
 	display: none;
 }
@@ -747,7 +914,7 @@
 	font-size: 95%;
 }
 #p-search .pBody {
-	padding: .5em .4em .4em .4em;
+	padding: .5em .4em .4em;
 	text-align: center;
 }
 
@@ -756,11 +923,8 @@
 */
 #p-personal {
 	position: absolute;
-	left: 0;
 	top: 0;
 	z-index: 0;
-}
-#p-personal {
 	width: 100%;
 	white-space: nowrap;
 	padding: 0;
@@ -770,6 +934,8 @@
 	overflow: visible;
 	line-height: 1.2em;
 }
+body.mw-interface-ltr #p-personal { left: 0; }
+body.mw-interface-rtl #p-personal { right: 0; }
 #p-personal h5 {
 	display: none;
 }
@@ -787,24 +953,37 @@
 	border: none;
 	line-height: 1.4em;
 	color: #2f6fab;
-	padding: 0 2em 0 3em;
 	margin: 0;
-	text-align: right;
 	list-style: none;
 	z-index: 0;
 	background: none;
 	cursor: default;
 }
+body.mw-interface-ltr #p-personal ul {
+	padding: 0 2em 0 3em;
+	text-align: right;
+}
+body.mw-interface-rtl #p-personal ul {
+	padding: 0 3em 0 2em;
+	text-align: left;
+}
+
 #p-personal li {
 	z-index: 0;
 	border: none;
 	padding: 0;
 	display: inline;
 	color: #2f6fab;
-	margin-left: 1em;
 	line-height: 1.2em;
 	background: none;
 }
+body.mw-interface-ltr #p-personal li {
+	margin-left: 1em;
+}
+body.mw-interface-rtl #p-personal li {
+	margin-right: 1em;
+}
+
 #p-personal li a {
 	text-decoration: none;
 	color: #005896;
@@ -825,9 +1004,19 @@
 li#pt-anonuserpage,
 li#pt-login {
 	background: url(user.gif) top left no-repeat;
-	padding-left: 20px;
 	text-transform: none;
 }
+body.mw-interface-ltr li#pt-userpage,
+body.mw-interface-ltr li#pt-anonuserpage,
+body.mw-interface-ltr li#pt-login {
+	padding-left: 20px;
+}
+body.mw-interface-rtl li#pt-userpage,
+body.mw-interface-rtl li#pt-anonuserpage,
+body.mw-interface-rtl li#pt-login {
+	padding-right: 20px;
+}
+
 #p-personal ul {
 	text-transform: lowercase;
 }
@@ -840,7 +1029,6 @@
 #p-cactions {
 	position: absolute;
 	top: 1.3em;
-	left: 11.5em;
 	margin: 0;
 	white-space: nowrap;
 	width: 76%;
@@ -848,10 +1036,18 @@
 	overflow: visible;
 	background: none;
 	border-collapse: collapse;
-	padding-left: 1em;
 	list-style: none;
 	font-size: 95%;
 }
+body.mw-interface-ltr #p-cactions {
+	left: 11.5em;
+	padding-left: 1em;
+}
+body.mw-interface-rtl #p-cactions {
+	right: 11.5em;
+	padding-right: 1em;
+}
+
 #p-cactions ul {
 	list-style: none;
 }
@@ -859,14 +1055,18 @@
 	display: inline;
 	border: 1px solid #aaa;
 	border-bottom: none;
-	padding: 0 0 .1em 0;
+	padding: 0 0 .1em;
 	margin: 0 .3em 0 0;
 	overflow: visible;
 	background: white;
 }
+body.mw-interface-rtl #p-cactions li {
+	margin: 0 0 0 .3em;
+}
+
 #p-cactions li.selected {
 	border-color: #fabd23;
-	padding: 0 0 .2em 0;
+	padding: 0 0 .2em;
 	font-weight: bold;
 }
 #p-cactions li a {
@@ -881,7 +1081,7 @@
 }
 #p-cactions li.selected a {
 	z-index: 3;
-	padding: 0 1em .2em!important;
+	padding: 0 1em .2em !important;
 	background-color: white;
 }
 #p-cactions .new a {
@@ -895,23 +1095,29 @@
 #p-cactions h5 {
 	display: none;
 }
-#p-cactions li.istalk {
-	margin-right: 0;
-}
-#p-cactions li.istalk a {
-	padding-right: .5em;
-}
+
+body.mw-interface-ltr #p-cactions li.istalk { margin-right: 0; }
+body.mw-interface-rtl #p-cactions li.istalk { margin-left: 0; }
+body.mw-interface-ltr #p-cactions li.istalk a { padding-right: .5em; }
+body.mw-interface-rtl #p-cactions li.istalk a { padding-left: .5em; }
+
 #p-cactions #ca-addsection a {
 	padding-left: .4em;
 	padding-right: .4em;
 }
 /* offsets to distinguish the tab groups */
-li#ca-talk {
+body.mw-interface-ltr li#ca-talk { margin-right: 1.6em; }
+body.mw-interface-rtl li#ca-talk { margin-left: 1.6em; }
+
+body.mw-interface-ltr li#ca-watch,     body.mw-interface-ltr li#ca-unwatch,
+body.mw-interface-ltr li#ca-varlang-0, body.mw-interface-ltr li#ca-print {
+	margin-left: 1.6em;
+}
+body.mw-interface-rtl li#ca-watch,     body.mw-interface-rtl li#ca-unwatch,
+body.mw-interface-rtl li#ca-varlang-0, body.mw-interface-rtl li#ca-print {
 	margin-right: 1.6em;
 }
-li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
-	margin-left: 1.6em;
-}
+
 #p-cactions .pBody {
 	font-size: 1em;
 	background-color: transparent;
@@ -949,8 +1155,8 @@
 	background-color: white;
 	border-top: 1px solid #fabd23;
 	border-bottom: 1px solid #fabd23;
-	margin: .6em 0 1em 0;
-	padding: .4em 0 1.2em 0;
+	margin: .6em 0 1em;
+	padding: .4em 0 1.2em;
 	text-align: center;
 	font-size: 90%;
 }
@@ -967,10 +1173,12 @@
 	float: right;
 	height: 1%;
 }
+body.mw-interface-ltr #f-poweredbyico { float: left; }
 #f-copyrightico {
 	float: left;
 	height: 1%;
 }
+body.mw-interface-ltr #f-copyrightico { float: right; }
 
 /* js pref toc */
 #preftoc {
@@ -986,7 +1194,7 @@
 #preftoc li {
 	margin: 1px -2px 1px 2px;
 	float: left;
-	padding: 2px 0 3px 0;
+	padding: 2px 0 3px;
 	border: 1px solid #fff;
 	border-right-color: #716f64;
 	border-bottom: 0;
@@ -996,6 +1204,11 @@
 	list-style-image: none;
 	z-index: 3;
 }
+body.mw-interface-rtl #preftoc li {
+	margin: 1px 2px 1px -2px;
+	float: right;
+}
+
 #preftoc li.selected {
 	font-weight: bold;
 	background-color: #f9f9f9;
@@ -1004,8 +1217,10 @@
 	cursor: default;
 	top: 1px;
 	padding-top: 2px;
-	margin-right: -3px;
 }
+body.mw-interface-ltr #preftoc li.selected { margin-right: -3px; }
+body.mw-interface-rtl #preftoc li.selected { margin-left: -3px; }
+
 #preftoc > li.selected {
 	top: 2px;
 }
@@ -1039,9 +1254,16 @@
 }
 .prefsection fieldset {
 	border: 1px solid #aaa;
+}
+body.mw-interface-ltr .prefsection fieldset { 
 	float: left;
 	margin-right: 2em;
 }
+body.mw-interface-rtl .prefsection fieldset { 
+	float: right;
+	margin-left: 2em;
+}
+
 .prefsection legend {
 	font-weight: bold;   
 }
@@ -1081,6 +1303,11 @@
 	background-color: #f9f9f9;
 	float: left;
 }
+body.mw-interface-rtl div#userloginForm form,
+body.mw-interface-rtl div#userlogin form#userlogin2 {
+	margin: 0 0 1em 3em;
+	float: right;
+}
 
 div#userloginForm table,
 div#userlogin form#userlogin2 table {
@@ -1156,12 +1383,14 @@
 }
 * > html #column-one {
 	position: absolute;
-	left: 0;
 	top: 0;
 }
-* > html #footer {
-	margin-left: 13.2em;
-}
+* > html body.mw-interface-ltr #column-one { left: 0; }
+* > html body.mw-interface-rtl #column-one { right: 0; }
+
+* > html body.mw-interface-ltr #footer { margin-left: 13.2em; }
+* > html body.mw-interface-rtl #footer { margin-right: 13.2em; }
+
 .redirectText {
 	font-size: 150%;
 	margin: 5px;
@@ -1260,6 +1489,11 @@
 	padding: 0;
 }
 
+/**
+ * This doesn't seem to be used, so not sure whether it should go according to
+ * interface or content direction.  Leaving alone, I guess it makes no diffe-
+ * rence.
+ */
 .editExternally {
 	border: 1px solid gray;
 	background-color: #ffffff;
@@ -1280,18 +1514,18 @@
 	font-style: italic;
 }
 
-.toggle {
-	margin-left: 2em;
-	text-indent: -2em;
-}
+body.mw-interface-ltr .toggle { margin-left: 2em; }
+body.mw-interface-rtl .toggle { margin-right: 2em; }
+.toggle { text-indent: -2em; }
 
 /* Classes for EXIF data display */
 table.mw_metadata {
 	font-size: 0.8em;
-	margin-left: 0.5em;
 	margin-bottom: 0.5em;
 	width: 300px;
 }
+body.mw-interface-ltr table.mw_metadata { margin-left: 0.5em; }
+body.mw-interface-rtl table.mw_metadata { margin-right: 0.5em; }
 
 table.mw_metadata caption {
 	font-weight: bold;
@@ -1345,17 +1579,21 @@
 #filetoc li {
 	display: inline;
 	list-style-type: none;
-	padding-right: 2em;
 }
+body.mw-interface-ltr #filetoc li { padding-right: 2em; }
+body.mw-interface-rtl #filetoc li { padding-left: 2em; }
 
 input#wpSummary {
 	width: 80%;
 }
 
 /* @bug 1714 */
-input#wpSave, input#wpDiff {
+body.mw-interface-ltr input#wpSave, body.mw-interface-ltr input#wpDiff {
 	margin-right: 0.33em;
 }
+body.mw-interface-rtl input#wpSave, body.mw-interface-rtl input#wpDiff {
+	margin-left: 0.33em;
+}
 
 #editform .editOptions {
 	display: inline;
Index: skins/MonoBook.php
===================================================================
--- skins/MonoBook.php	(revision 28600)
+++ skins/MonoBook.php	(working copy)
@@ -41,8 +41,10 @@
 	 * @access private
 	 */
 	function execute() {
-		global $wgUser;
+		global $wgUser, $wgLang, $wgContLang;
 		$skin = $wgUser->getSkin();
+		$interfaceDir = $wgLang->isRTL() ? 'rtl' : 'ltr';
+		$contentDir = $wgContLang->isRTL() ? 'rtl' : 'ltr';
 
 		// Suppress warnings to prevent notices about missing indexes in $this->data
 		wfSuppressWarnings();
@@ -51,7 +53,7 @@
 <html xmlns="<?php $this->text('xhtmldefaultnamespace') ?>" <?php 
 	foreach($this->data['xhtmlnamespaces'] as $tag => $ns) {
 		?>xmlns:<?php echo "{$tag}=\"{$ns}\" ";
-	} ?>xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>">
+	} ?>xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php echo $interfaceDir ?>">
 	<head>
 		<meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
 		<?php $this->html('headlinks') ?>
@@ -92,9 +94,9 @@
 	</head>
 <body <?php if($this->data['body_ondblclick']) { ?>ondblclick="<?php $this->text('body_ondblclick') ?>"<?php } ?>
 <?php if($this->data['body_onload'    ]) { ?>onload="<?php     $this->text('body_onload')     ?>"<?php } ?>
- class="mediawiki <?php $this->text('nsclass') ?> <?php $this->text('dir') ?> <?php $this->text('pageclass') ?>">
+ class="mediawiki <?php $this->text('nsclass') ?> <?php echo $contentDir ?> <?php echo "mw-interface-$interfaceDir" ?> <?php $this->text('pageclass') ?>">
 	<div id="globalWrapper">
-		<div id="column-content">
+		<div id="column-content" dir="<?php echo $contentDir ?>">
 	<div id="content">
 		<a name="top" id="top"></a>
 		<?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
Index: includes/SkinTemplate.php
===================================================================
--- includes/SkinTemplate.php	(revision 28600)
+++ includes/SkinTemplate.php	(working copy)
@@ -1005,11 +1005,6 @@
 			$siteargs .= '&ts=' . $wgUser->mTouched;
 		}
 
-		if( $wgContLang->isRTL() ) {
-			global $wgStyleVersion;
-			$sitecss .= "@import \"$wgStylePath/$this->stylename/rtl.css?$wgStyleVersion\";\n";
-		}
-
 		# If we use the site's dynamic CSS, throw that in, too
 		if ( $wgUseSiteCss ) {
 			$query = "usemsgcache=yes&action=raw&ctype=text/css&smaxage=$wgSquidMaxage";
