diff --git a/skins/common/IE80Fixes.css b/skins/common/IE80Fixes.css
new file mode 100644
index 0000000..6e5cb8a
--- /dev/null
+++ b/skins/common/IE80Fixes.css
@@ -0,0 +1,15 @@
+/**
+ * Fixes textarea scrolling bug (bug #19334). The bug only occurs when a
+ * percentage width is given, so instead of width: 100%, use min-width: 100%;
+ * max-width: 100%. We also need to give a fixed width for the actual width
+ * property for the hack to work, although the actual value (500px here) ends
+ * up being ignored; min/max-width take precedence.
+ *
+ * More info: http://grantovich.net/posts/2009/06/that-weird-ie8-textarea-bug/
+ */
+#wpTextbox1 {
+ height: 390px;
+ width: 500px;
+ min-width: 100%;
+ max-width: 100%;
+}
diff --git a/skins/common/IEFixes.js b/skins/common/IEFixes.js
new file mode 100644
index 0000000..dd999ed
--- /dev/null
+++ b/skins/common/IEFixes.js
@@ -0,0 +1,134 @@
+// IE fixes javascript
+
+window.isMSIE55 = ( window.showModalDialog && window.clipboardData && window.createPopup );
+window.doneIETransform = undefined;
+window.doneIEAlphaFix = undefined;
+
+window.hookit = function() {
+ if ( !doneIETransform && document.getElementById && document.getElementById( 'bodyContent' ) ) {
+ doneIETransform = true;
+ relativeforfloats();
+ fixalpha();
+ }
+};
+
+if ( document.attachEvent ) {
+ document.attachEvent( 'onreadystatechange', window.hookit );
+}
+
+// png alpha transparency fixes
+window.fixalpha = function( logoId ) {
+ // bg
+ if ( isMSIE55 && !doneIEAlphaFix ) {
+ var plogo = document.getElementById( logoId || 'p-logo' );
+ if ( !plogo ) {
+ return;
+ }
+
+ var logoa = plogo.getElementsByTagName('a')[0];
+ if ( !logoa ) {
+ return;
+ }
+
+ var bg = logoa.currentStyle.backgroundImage;
+ var imageUrl = bg.substring( 5, bg.length - 2 );
+
+ doneIEAlphaFix = true;
+
+ if ( imageUrl.substr( imageUrl.length - 4 ).toLowerCase() == '.png' ) {
+ var logospan = logoa.appendChild( document.createElement( 'span' ) );
+
+ logoa.style.backgroundImage = 'none';
+ logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl + ')';
+ logospan.style.height = '100%';
+ logospan.style.position = 'absolute';
+ logospan.style.width = logoa.currentStyle.width;
+ logospan.style.cursor = 'hand';
+ // Center image with hack for IE5.5
+ if ( document.documentElement.dir == 'rtl' ) {
+ logospan.style.right = '50%';
+ logospan.style.setExpression( 'marginRight', '"-" + (this.offsetWidth / 2) + "px"' );
+ } else {
+ logospan.style.left = '50%';
+ logospan.style.setExpression( 'marginLeft', '"-" + (this.offsetWidth / 2) + "px"' );
+ }
+ logospan.style.top = '50%';
+ logospan.style.setExpression( 'marginTop', '"-" + (this.offsetHeight / 2) + "px"' );
+
+ var linkFix = logoa.appendChild( logoa.cloneNode() );
+ linkFix.style.position = 'absolute';
+ linkFix.style.height = '100%';
+ linkFix.style.width = '100%';
+ }
+ }
+};
+
+if ( isMSIE55 ) {
+ // ondomready
+ $( fixalpha );
+}
+
+// fix ie6 disappering float bug
+window.relativeforfloats = function() {
+ var bc = document.getElementById( 'bodyContent' );
+ if ( bc ) {
+ var tables = bc.getElementsByTagName( 'table' );
+ var divs = bc.getElementsByTagName( 'div' );
+ setrelative( tables );
+ setrelative( divs );
+ }
+};
+
+window.setrelative = function( nodes ) {
+ var i = 0;
+ while ( i < nodes.length ) {
+ if( ( ( nodes[i].style.float && nodes[i].style.float != ( 'none' ) ||
+ ( nodes[i].align && nodes[i].align != ( 'none' ) ) ) &&
+ ( !nodes[i].style.position || nodes[i].style.position != 'relative' ) ) )
+ {
+ nodes[i].style.position = 'relative';
+ }
+ i++;
+ }
+};
+
+// Expand links for printing
+String.prototype.hasClass = function( classWanted ) {
+ var classArr = this.split(/\s/);
+ for ( var i = 0; i < classArr.length; i++ ) {
+ if ( classArr[i].toLowerCase() == classWanted.toLowerCase() ) {
+ return true;
+ }
+ }
+ return false;
+};
+
+window.expandedURLs = undefined;
+
+window.onbeforeprint = function() {
+ expandedURLs = [];
+
+ var contentEl = document.getElementById( 'content' );
+
+ if ( contentEl ) {
+ var allLinks = contentEl.getElementsByTagName( 'a' );
+
+ for ( var i = 0; i < allLinks.length; i++ ) {
+ if ( allLinks[i].className.hasClass( 'external' ) && !allLinks[i].className.hasClass( 'free' ) ) {
+ var expandedLink = document.createElement( 'span' );
+ var expandedText = document.createTextNode( ' (' + allLinks[i].href + ')' );
+ expandedLink.appendChild( expandedText );
+ allLinks[i].parentNode.insertBefore( expandedLink, allLinks[i].nextSibling );
+ expandedURLs[i] = expandedLink;
+ }
+ }
+ }
+};
+
+window.onafterprint = function() {
+ for ( var i = 0; i < expandedURLs.length; i++ ) {
+ if ( expandedURLs[i] ) {
+ expandedURLs[i].removeNode( true );
+ }
+ }
+};
diff --git a/skins/common/ajax.js b/skins/common/ajax.js
new file mode 100644
index 0000000..121f9d1
--- /dev/null
+++ b/skins/common/ajax.js
@@ -0,0 +1,173 @@
+// remote scripting library
+// (c) copyright 2005 modernmethod, inc
+window.sajax_debug_mode = false;
+window.sajax_request_type = 'GET';
+
+/**
+ * if sajax_debug_mode is true, this function outputs given the message into
+ * the element with id = sajax_debug; if no such element exists in the document,
+ * it is injected.
+ */
+window.sajax_debug = function(text) {
+ if (!sajax_debug_mode) return false;
+
+ var e = document.getElementById( 'sajax_debug' );
+
+ if ( !e ) {
+ e = document.createElement( 'p' );
+ e.className = 'sajax_debug';
+ e.id = 'sajax_debug';
+
+ var b = document.getElementsByTagName( 'body' )[0];
+
+ if ( b.firstChild ) {
+ b.insertBefore( e, b.firstChild );
+ } else {
+ b.appendChild( e );
+ }
+ }
+
+ var m = document.createElement( 'div' );
+ m.appendChild( document.createTextNode( text ) );
+
+ e.appendChild( m );
+
+ return true;
+};
+
+/**
+ * Compatibility wrapper for creating a new XMLHttpRequest object.
+ */
+window.sajax_init_object = function() {
+ sajax_debug( 'sajax_init_object() called..' );
+ var A;
+ try {
+ // Try the new style before ActiveX so we don't
+ // unnecessarily trigger warnings in IE 7 when
+ // set to prompt about ActiveX usage
+ A = new XMLHttpRequest();
+ } catch ( e ) {
+ try {
+ A = new ActiveXObject( 'Msxml2.XMLHTTP' );
+ } catch ( e ) {
+ try {
+ A = new ActiveXObject( 'Microsoft.XMLHTTP' );
+ } catch ( oc ) {
+ A = null;
+ }
+ }
+ }
+ if ( !A ) {
+ sajax_debug( 'Could not create connection object.' );
+ }
+
+ return A;
+};
+
+/**
+ * Perform an AJAX call to MediaWiki. Calls are handled by AjaxDispatcher.php
+ * func_name - the name of the function to call. Must be registered in $wgAjaxExportList
+ * args - an array of arguments to that function
+ * target - the target that will handle the result of the call. If this is a function,
+ * if will be called with the XMLHttpRequest as a parameter; if it's an input
+ * element, its value will be set to the resultText; if it's another type of
+ * element, its innerHTML will be set to the resultText.
+ *
+ * Example:
+ * sajax_do_call( 'doFoo', [1, 2, 3], document.getElementById( 'showFoo' ) );
+ *
+ * This will call the doFoo function via MediaWiki's AjaxDispatcher, with
+ * (1, 2, 3) as the parameter list, and will show the result in the element
+ * with id = showFoo
+ */
+window.sajax_do_call = function(func_name, args, target) {
+ var i, x, n;
+ var uri;
+ var post_data;
+ uri = mw.util.wikiScript() + '?action=ajax';
+ if ( sajax_request_type == 'GET' ) {
+ if ( uri.indexOf( '?' ) == -1 ) {
+ uri = uri + '?rs=' + encodeURIComponent( func_name );
+ } else {
+ uri = uri + '&rs=' + encodeURIComponent( func_name );
+ }
+ for ( i = 0; i < args.length; i++ ) {
+ uri = uri + '&rsargs[]=' + encodeURIComponent( args[i] );
+ }
+ //uri = uri + '&rsrnd=' + new Date().getTime();
+ post_data = null;
+ } else {
+ post_data = 'rs=' + encodeURIComponent( func_name );
+ for ( i = 0; i < args.length; i++ ) {
+ post_data = post_data + '&rsargs[]=' + encodeURIComponent( args[i] );
+ }
+ }
+ x = sajax_init_object();
+ if ( !x ) {
+ alert( 'AJAX not supported' );
+ return false;
+ }
+
+ try {
+ x.open( sajax_request_type, uri, true );
+ } catch ( e ) {
+ if ( window.location.hostname == 'localhost' ) {
+ alert( "Your browser blocks XMLHttpRequest to 'localhost', try using a real hostname for development/testing." );
+ }
+ throw e;
+ }
+ if ( sajax_request_type == 'POST' ) {
+ x.setRequestHeader( 'Method', 'POST ' + uri + ' HTTP/1.1' );
+ x.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
+ }
+ x.setRequestHeader( 'Pragma', 'cache=yes' );
+ x.setRequestHeader( 'Cache-Control', 'no-transform' );
+ x.onreadystatechange = function() {
+ if ( x.readyState != 4 ) {
+ return;
+ }
+
+ sajax_debug( 'received (' + x.status + ' ' + x.statusText + ') ' + x.responseText );
+
+ //if ( x.status != 200 )
+ // alert( 'Error: ' + x.status + ' ' + x.statusText + ': ' + x.responseText );
+ //else
+
+ if ( typeof( target ) == 'function' ) {
+ target( x );
+ } else if ( typeof( target ) == 'object' ) {
+ if ( target.tagName == 'INPUT' ) {
+ if ( x.status == 200 ) {
+ target.value= x.responseText;
+ }
+ //else alert( 'Error: ' + x.status + ' ' + x.statusText + ' (' + x.responseText + ')' );
+ } else {
+ if ( x.status == 200 ) {
+ target.innerHTML = x.responseText;
+ } else {
+ target.innerHTML = '
Error: ' + x.status +
+ ' ' + x.statusText + ' (' + x.responseText + ')
';
+ }
+ }
+ } else {
+ alert( 'bad target for sajax_do_call: not a function or object: ' + target );
+ }
+ };
+
+ sajax_debug( func_name + ' uri = ' + uri + ' / post = ' + post_data );
+ x.send( post_data );
+ sajax_debug( func_name + ' waiting..' );
+ delete x;
+
+ return true;
+};
+
+/**
+ * @return boolean whether the browser supports XMLHttpRequest
+ */
+window.wfSupportsAjax = function() {
+ var request = sajax_init_object();
+ var supportsAjax = request ? true : false;
+ delete request;
+ return supportsAjax;
+};
diff --git a/skins/common/commonContent.css b/skins/common/commonContent.css
new file mode 100644
index 0000000..a550d97
--- /dev/null
+++ b/skins/common/commonContent.css
@@ -0,0 +1,133 @@
+/**
+ * MediaWiki style sheet for general styles on complex content
+ *
+ * Styles for complex things which are a standard part of page content
+ * (ie: the CSS classing built into the system), like the TOC.
+ */
+
+/* Table of Contents */
+#toc,
+.toc,
+.mw-warning {
+ border: 1px solid #aaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ font-size: 95%;
+}
+#toc h2,
+.toc h2 {
+ display: inline;
+ border: none;
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+}
+#toc #toctitle,
+.toc #toctitle,
+#toc .toctitle,
+.toc .toctitle {
+ text-align: center;
+}
+#toc ul,
+.toc ul {
+ list-style-type: none;
+ list-style-image: none;
+ margin-left: 0;
+ padding: 0;
+ text-align: left;
+}
+#toc ul ul,
+.toc ul ul {
+ margin: 0 0 0 2em;
+}
+#toc .toctoggle,
+.toc .toctoggle {
+ font-size: 94%;
+}
+
+.toccolours {
+ border: 1px solid #aaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ font-size: 95%;
+}
+
+/* Warning */
+.mw-warning {
+ margin-left: 50px;
+ margin-right: 50px;
+ text-align: center;
+}
+
+/* Images */
+/* @noflip */div.floatright, table.floatright {
+ margin: 0 0 .5em .5em;
+ border: 0;
+}
+div.floatright p { font-style: italic; }
+/* @noflip */div.floatleft, table.floatleft {
+ margin: 0 .5em .5em 0;
+ border: 0;
+}
+div.floatleft p { font-style: italic; }
+/* Thumbnails */
+div.thumb {
+ margin-bottom: .5em;
+ width: auto;
+ background-color: transparent;
+}
+div.thumbinner {
+ border: 1px solid #ccc;
+ padding: 3px !important;
+ background-color: #f9f9f9;
+ font-size: 94%;
+ text-align: center;
+ overflow: hidden;
+}
+html .thumbimage {
+ border: 1px solid #ccc;
+}
+html .thumbcaption {
+ border: none;
+ line-height: 1.4em;
+ padding: 3px !important;
+ font-size: 94%;
+}
+div.magnify {
+ border: none !important;
+ background: none !important;
+}
+div.magnify a, div.magnify img {
+ display: block;
+ border: none !important;
+ background: none !important;
+}
+/* @noflip */div.tright {
+ margin: .5em 0 1.3em 1.4em;
+}
+/* @noflip */div.tleft {
+ margin: .5em 1.4em 1.3em 0;
+}
+img.thumbborder {
+ border: 1px solid #dddddd;
+}
+
+/**
+ * Edit forms
+ */
+#editform textarea {
+ display: block;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+/**
+ * Basic styles for the user login and create account forms
+ */
+#userlogin, #userloginForm {
+ border: solid 1px #cccccc;
+ padding: 1.2em;
+ margin: .5em;
+ float: left;
+}
diff --git a/skins/common/commonElements.css b/skins/common/commonElements.css
new file mode 100644
index 0000000..2fa0cba
--- /dev/null
+++ b/skins/common/commonElements.css
@@ -0,0 +1,254 @@
+/**
+ * MediaWiki style sheet for general styles on basic content elements
+ *
+ * Styles for basic elements: links, lists, etc...
+ *
+ * This style sheet is used by the Monobook and Vector skins.
+ */
+
+/* Links */
+a {
+ text-decoration: none;
+ color: #0645ad;
+ background: none;
+}
+a:visited {
+ color: #0b0080;
+}
+a:active {
+ color: #faa700;
+}
+a:hover, a:focus {
+ text-decoration: underline;
+}
+a.stub {
+ color: #772233;
+}
+a.new, #p-personal a.new {
+ color: #ba0000;
+}
+a.new:visited, #p-personal a.new:visited {
+ color: #a55858;
+}
+
+/* Interwiki Styling */
+.mw-body a.extiw,
+.mw-body a.extiw:active {
+ color: #36b;
+}
+.mw-body a.extiw:visited {
+ color: #636;
+}
+.mw-body a.extiw:active {
+ color: #b63;
+}
+
+/* External links */
+.mw-body a.external {
+ color: #36b;
+}
+.mw-body a.external:visited {
+ color: #636; /* bug 3112 */
+}
+.mw-body a.external:active {
+ color: #b63;
+}
+
+/* Inline Elements */
+img {
+ border: none;
+ vertical-align: middle;
+}
+hr {
+ height: 1px;
+ color: #aaa;
+ background-color: #aaa;
+ border: 0;
+ margin: .2em 0;
+}
+
+/* Structural Elements */
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ color: black;
+ background: none;
+ font-weight: normal;
+ margin: 0;
+ overflow: hidden;
+ padding-top: .5em;
+ padding-bottom: .17em;
+ border-bottom: 1px solid #aaa;
+}
+h1 {
+ font-size: 188%;
+}
+h1 .editsection {
+ font-size: 53%;
+}
+h2 {
+ font-size: 150%;
+}
+h2 .editsection {
+ font-size: 67%;
+}
+h3,
+h4,
+h5,
+h6 {
+ border-bottom: none;
+ font-weight: bold;
+}
+h3 {
+ font-size: 132%;
+}
+h3 .editsection {
+ font-size: 76%;
+ font-weight: normal;
+}
+h4 {
+ font-size: 116%;
+}
+h4 .editsection {
+ font-size: 86%;
+ font-weight: normal; }
+h5 {
+ font-size: 100%;
+}
+h5 .editsection {
+ font-weight: normal;
+}
+h6 {
+ font-size: 80%;
+}
+h6 .editsection {
+ font-size: 125%;
+ font-weight: normal;
+}
+
+/* Some space under the headers in the content area */
+h1,
+h2 {
+ margin-bottom: .6em;
+}
+h3,
+h4,
+h5 {
+ margin-bottom: .3em;
+}
+
+p {
+ margin: .4em 0 .5em 0;
+ line-height: 1.5em;
+}
+p img {
+ margin: 0;
+}
+
+ul {
+ line-height: 1.5em;
+ list-style-type: square;
+ margin: .3em 0 0 1.6em;
+ padding: 0;
+}
+ol {
+ line-height: 1.5em;
+ margin: .3em 0 0 3.2em;
+ padding: 0;
+ list-style-image: none;
+}
+li {
+ margin-bottom: .1em;
+}
+dt {
+ font-weight: bold;
+ margin-bottom: .1em;
+}
+dl {
+ margin-top: .2em;
+ margin-bottom: .5em;
+}
+dd {
+ line-height: 1.5em;
+ margin-left: 1.6em;
+ margin-bottom: .1em;
+}
+
+q {
+ font-family: Times, "Times New Roman", serif;
+ font-style: italic;
+}
+/* Disabled for now
+blockquote {
+ font-family: Times, "Times New Roman", serif;
+ font-style: italic;
+}*/
+pre, code, tt, kbd, samp, .mw-code {
+ /*
+ * Some browsers will render the monospace text too small, namely Firefox, Chrome and Safari.
+ * Specifying any valid, second value will trigger correct behavior without forcing a different font.
+ */
+ font-family: monospace, Courier;
+}
+code {
+ background-color: #f9f9f9;
+}
+pre, .mw-code {
+ padding: 1em;
+ border: 1px dashed #2f6fab;
+ color: black;
+ background-color: #f9f9f9;
+}
+
+/* Tables */
+table {
+ font-size: 100%;
+}
+
+/* Forms */
+fieldset {
+ border: 1px solid #2f6fab;
+ margin: 1em 0 1em 0;
+ padding: 0 1em 1em;
+ line-height: 1.5em;
+}
+fieldset.nested {
+ margin: 0 0 0.5em 0;
+ padding: 0 0.5em 0.5em;
+}
+legend {
+ padding: .5em;
+ font-size: 95%;
+}
+form {
+ border: none;
+ margin: 0;
+}
+textarea {
+ width: 100%;
+ padding: .1em;
+}
+select {
+ vertical-align: top;
+}
+
+/* Emulate Center */
+.center {
+ width: 100%;
+ text-align: center;
+}
+*.center * {
+ margin-left: auto;
+ margin-right: auto;
+}
+/* Small for tables and similar */
+.small {
+ font-size: 94%;
+}
+table.small {
+ font-size: 100%;
+}
+
diff --git a/skins/common/commonInterface.css b/skins/common/commonInterface.css
new file mode 100644
index 0000000..af6665e
--- /dev/null
+++ b/skins/common/commonInterface.css
@@ -0,0 +1,68 @@
+/**
+ * MediaWiki style sheet for common core styles on interfaces
+ *
+ * Styles for the Monobook/Vector pattern of laying out common interfaces.
+ * These ids/classes are not built into the system,
+ * they are outputted by the actual MonoBook/Vector code by convention.
+ */
+
+/* Categories */
+.catlinks {
+ border: 1px solid #aaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ margin-top: 1em;
+ clear: both;
+}
+
+/* User Message */
+.usermessage {
+ background-color: #ffce7b;
+ border: 1px solid #ffa500;
+ color: black;
+ font-weight: bold;
+ margin: 2em 0 1em;
+ padding: .5em 1em;
+ vertical-align: middle;
+}
+
+/* Site Notice (includes notices from CentralNotice extension) */
+#siteNotice {
+ position: relative;
+ text-align: center;
+ margin: 0;
+}
+#localNotice {
+ margin-bottom: 0.9em;
+}
+
+/* First h1 */
+.firstHeading,
+#firstHeading {
+ margin-bottom: .1em;
+ /* These two rules hack around bug 2013 (fix for more limited bug 11325).
+ * When bug 2013 is fixed properly, they should be removed. */
+ line-height: 1.2em;
+ padding-bottom: 0;
+}
+
+/* Sub-navigation */
+#siteSub {
+ display: none;
+}
+#jump-to-nav {
+ /* Negate #contentSub's margin and replicate it so that the jump to links don't affect the spacing */
+ margin-top: -1.4em;
+ margin-bottom: 1.4em
+}
+#contentSub, #contentSub2 {
+ font-size: 84%;
+ line-height: 1.2em;
+ margin: 0 0 1.4em 1em;
+ color: #7d7d7d;
+ width: auto;
+}
+span.subpages {
+ display: block;
+}
+
diff --git a/skins/common/commonPrint.css b/skins/common/commonPrint.css
new file mode 100644
index 0000000..6cb213f
--- /dev/null
+++ b/skins/common/commonPrint.css
@@ -0,0 +1,389 @@
+/**
+ * MediaWiki Print style sheet for CSS2-capable browsers.
+ * Copyright Gabriel Wicke, http://www.aulinx.de/
+ *
+ * Derived from the plone (http://plone.org/) styles
+ * Copyright Alexander Limi
+ */
+
+/* Thanks to A List Apart (http://alistapart.com/) for useful extras */
+a.stub,
+a.new {
+ color: #ba0000;
+ text-decoration: none;
+}
+
+#toc {
+ border: 1px solid #aaaaaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+}
+
+/* images */
+div.floatright {
+ float: right;
+ clear: right;
+ position: relative;
+ margin: 0.5em 0 0.8em 1.4em;
+}
+div.floatright p {
+ font-style: italic;
+}
+div.floatleft {
+ float: left;
+ clear: left;
+ position: relative;
+ margin: 0.5em 1.4em 0.8em 0;
+}
+div.floatleft p {
+ font-style: italic;
+}
+div.center {
+ text-align: center;
+}
+
+/* thumbnails */
+div.thumb {
+ border: none;
+ width: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.8em;
+ background-color: transparent;
+}
+div.thumbinner {
+ border:1px solid #cccccc;
+ padding: 3px !important;
+ background-color: White;
+ font-size: 94%;
+ text-align: center;
+ overflow: hidden;
+}
+html .thumbimage {
+ border: 1px solid #cccccc;
+}
+html .thumbcaption {
+ border: none;
+ text-align: left;
+ line-height: 1.4em;
+ padding: 3px !important;
+ font-size: 94%;
+}
+
+div.magnify {
+ display: none;
+}
+/* @noflip */
+div.tright {
+ float: right;
+ clear: right;
+ margin: 0.5em 0 0.8em 1.4em;
+}
+/* @noflip */
+div.tleft {
+ float: left;
+ clear: left;
+ margin: 0.5em 1.4em 0.8em 0;
+}
+img.thumbborder {
+ border: 1px solid #dddddd;
+}
+
+/* table standards */
+table.rimage {
+ float: right;
+ width: 1pt;
+ position: relative;
+ margin-left: 1em;
+ margin-bottom: 1em;
+ text-align: center;
+}
+
+body {
+ background: white;
+ color: black;
+ margin: 0;
+ padding: 0;
+}
+
+.noprint,
+div#jump-to-nav,
+.mw-jump,
+div.top,
+div#column-one,
+#colophon,
+.editsection,
+.toctoggle,
+.tochidden,
+div#f-poweredbyico,
+div#f-copyrightico,
+li#viewcount,
+li#about,
+li#disclaimer,
+li#mobileview,
+li#privacy,
+#footer-places,
+.mw-hidden-catlinks,
+tr.mw-metadata-show-hide-extended,
+span.mw-filepage-other-resolutions,
+#filetoc,
+.usermessage,
+#mw-navigation {
+ /* Hides all the elements irrelevant for printing */
+ display: none;
+}
+
+ul {
+ list-style-type: square;
+}
+
+#content {
+ background: none;
+ border: none !important;
+ padding: 0 !important;
+ margin: 0 !important;
+ direction: ltr;
+}
+#footer {
+ background : white;
+ color : black;
+ margin-top: 1em;
+ border-top: 1px solid #AAA;
+ direction: ltr;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ font-weight: bold;
+}
+
+p {
+ margin: 1em 0;
+ line-height: 1.2em;
+}
+
+pre, .mw-code {
+ border: 1pt dashed black;
+ white-space: pre;
+ font-size: 8pt;
+ overflow: auto;
+ padding: 1em 0;
+ background: white;
+ color: black;
+}
+
+table.listing,
+table.listing td {
+ border: 1pt solid black;
+ border-collapse: collapse;
+}
+
+a {
+ color: black !important;
+ background: none !important;
+ padding: 0 !important;
+}
+
+a:link, a:visited {
+ color: #520;
+ background: transparent;
+ text-decoration: underline;
+}
+
+#content a.external.text:after,
+#content a.external.autonumber:after {
+ /* Expand URLs for printing */
+ content: " (" attr(href) ") ";
+}
+
+#globalWrapper {
+ width: 100% !important;
+ min-width: 0 !important;
+}
+
+#content {
+ background: white;
+ color: black;
+}
+
+#column-content {
+ margin: 0 !important;
+}
+
+#column-content #content {
+ padding: 1em;
+ margin: 0 !important;
+}
+
+/* MSIE/Win doesn't understand 'inherit' */
+a,
+a.external,
+a.new,
+a.stub {
+ color: black !important;
+ text-decoration: none !important;
+}
+
+/* Continue ... */
+a,
+a.external,
+a.new,
+a.stub {
+ color: inherit !important;
+ text-decoration: inherit !important;
+}
+
+img {
+ border: none;
+ vertical-align: middle;
+}
+
+/* math */
+span.texhtml {
+ font-family: serif;
+}
+
+#siteNotice {
+ display: none;
+}
+
+/* Galleries (see shared.css for more info) */
+li.gallerybox {
+ vertical-align: top;
+ display: -moz-inline-box;
+ display: inline-block;
+}
+
+ul.gallery, li.gallerybox {
+ zoom: 1;
+ *display: inline;
+}
+
+ul.gallery {
+ margin: 2px;
+ padding: 2px;
+ display: block;
+}
+
+li.gallerycaption {
+ font-weight: bold;
+ text-align: center;
+ display: block;
+ word-wrap: break-word;
+}
+
+li.gallerybox div.thumb {
+ text-align: center;
+ border: 1px solid #ccc;
+ margin: 2px;
+}
+
+div.gallerytext {
+ overflow: hidden;
+ font-size: 94%;
+ padding: 2px 4px;
+ word-wrap: break-word;
+}
+
+/**
+ * Diff rendering
+ */
+table.diff {
+ background: white;
+}
+td.diff-otitle {
+ background: #ffffff;
+}
+td.diff-ntitle {
+ background: #ffffff;
+}
+td.diff-addedline {
+ background: #ccffcc;
+ font-size: smaller;
+ border: solid 2px black;
+}
+td.diff-deletedline {
+ background: #ffffaa;
+ font-size: smaller;
+ border: dotted 2px black;
+}
+td.diff-context {
+ background: #eeeeee;
+ font-size: smaller;
+}
+.diffchange {
+ color: silver;
+ font-weight: bold;
+ text-decoration: underline;
+}
+
+/**
+ * Table rendering
+ * As on shared.css but with white background.
+ */
+table.wikitable,
+table.mw_metadata {
+ margin: 1em 0;
+ border: 1px #aaa solid;
+ background: white;
+ border-collapse: collapse;
+}
+table.wikitable > tr > th, table.wikitable > tr > td,
+table.wikitable > * > tr > th, table.wikitable > * > tr > td,
+.mw_metadata th, .mw_metadata td {
+ border: 1px #aaa solid;
+ padding: 0.2em;
+}
+table.wikitable > tr > th,
+table.wikitable > * > tr > th,
+.mw_metadata th {
+ text-align: center;
+ background: white;
+ font-weight: bold;
+}
+table.wikitable > caption,
+.mw_metadata caption {
+ font-weight: bold;
+}
+
+a.sortheader {
+ margin: 0 0.3em;
+}
+
+/* Some pagination options */
+.wikitable, .thumb, img {
+ page-break-inside: avoid;
+}
+h2, h3, h4, h5, h6, h7 {
+ page-break-after: avoid;
+}
+p {
+ widows: 3;
+ orphans: 3;
+}
+
+/**
+ * Categories
+ */
+.catlinks ul {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ list-style-type: none;
+ list-style-image: none;
+ vertical-align: middle !ie;
+}
+
+.catlinks li {
+ display: inline-block;
+ line-height: 1.15em;
+ padding: 0 .4em;
+ border-left: 1px solid #AAA;
+ margin: 0.1em 0;
+ zoom: 1;
+ display: inline !ie;
+}
+
+.catlinks li:first-child {
+ padding-left: .2em;
+ border-left: none;
+}
diff --git a/skins/common/config-cc.css b/skins/common/config-cc.css
new file mode 100644
index 0000000..d81218e
--- /dev/null
+++ b/skins/common/config-cc.css
@@ -0,0 +1,57 @@
+/**
+ * Copy of CC standard stylesheet, plus tweaks for iframe usage
+ */
+
+body {
+ margin: 0;
+ background: #eee;
+ font-family: Verdana;
+ color: #333;
+}
+
+#main {
+ border: 1px solid #D0D0D0;
+ background: #fff;
+ margin: 0.5em;
+}
+
+/**
+ * Looks like you have to specify the width of #menu
+ * or IE5 Mac stretches it all the way across the div, and
+ * Opera streches it half way.
+ */
+
+#main #menu {
+ border-left: 1px dotted #ccc;
+ float: right;
+ width: 230px;
+ background: white;
+ margin: 0 0 10px 10px;
+}
+
+td, h3, p, h1, pre {
+ margin: 0 20px 20px 20px;
+ font-size: 11px;
+ line-height: 140%;
+}
+
+.header {
+ padding-left: 10px;
+ padding-top: 10px;
+}
+
+.nav {
+ padding-left: 10px;
+ padding-bottom: 10px;
+ font-size: 11px;
+ margin-bottom: 16px;
+}
+
+#menu p {
+ font-size: 11px;
+}
+
+.dent {
+ margin-left: 64px;
+}
+
diff --git a/skins/common/config.css b/skins/common/config.css
new file mode 100644
index 0000000..39206c3
--- /dev/null
+++ b/skins/common/config.css
@@ -0,0 +1,142 @@
+.env-check {
+ font-size: 90%;
+ margin: 1em 0 1em 2.5em;
+}
+
+.config-section {
+ margin-top: 2em;
+}
+.config-block {
+ margin-top: 2em;
+ display: block;
+
+}
+.config-block-label {
+ display: block;
+ margin-bottom: .2em;
+}
+.config-block-label label, .config-label {
+ font-weight: bold;
+ padding-right: .5em;
+ padding-top: .2em;
+}
+.config-block-elements {
+ margin-left: 2em;
+}
+.config-block-elements li {
+ list-style: none;
+}
+.config-input {
+ clear: left;
+ zoom: 100%; /* IE hack */
+}
+
+.config-page-wrapper {
+ padding: 0.5em;
+}
+
+.config-page-list {
+ float: right;
+ width: 12em;
+ border: 1px solid #aaa;
+ background: #fff;
+ padding: 0.5em;
+ /* 3em left margin to leave space between the list and the page-content */
+ margin: 0.5em 0.5em 0.5em 3.5em;
+}
+
+.config-page {
+ padding: 0.5em 0.5em 0.5em 2em;
+ margin: 0.5em 0.5em 0.5em 0.5em;
+ background: #eee;
+}
+
+.config-submit {
+ clear: left;
+ text-align: center;
+ padding: 1em;
+}
+
+.config-submit input {
+ margin-left: 0.5em;
+ margin-right: 0.5em;
+}
+
+.config-page-disabled {
+ color: #aaa;
+}
+
+.config-error-box {
+ border: 2px solid #f00;
+}
+
+.config-page-current {
+ font-weight: bold;
+}
+
+.config-message {
+ display: list-item;
+ line-height: 1.5em;
+ /* @embed */
+ list-style-image: url(images/bullet.gif);
+ list-style-type: square;
+}
+
+.config-input-text {
+ width: 20em;
+ margin-right: 1em;
+}
+
+.config-input-check {
+ margin-left: 10em;
+}
+
+.error {
+ color: red;
+ background-color: #fff;
+ font-weight: bold;
+ left: 1em;
+ font-size: 100%;
+}
+
+.config-settings-block {
+ list-style-type: none;
+ list-style-image: none;
+ margin: 0;
+ padding: 0;
+}
+
+.btn-install {
+ font-weight: bold;
+ font-size: 110%;
+ padding: .2em .3em;
+}
+
+.success-message {
+ font-weight: bold;
+ font-size: 110%;
+ color: green;
+}
+.success-box {
+ font-size: 130%;
+}
+
+.config-cc-wrapper {
+ clear: left;
+ /* If you change this height, also change it in WebInstaller_Options::submitCC() */
+ height: 54em;
+}
+
+.config-plainlink a {
+ background: none !important;
+ padding: 0 !important;
+}
+
+.config-download-link {
+ font-size: 1.8em;
+ margin-left: 2em;
+}
+
+#config-live-log {
+ margin-right: 18em;
+}
diff --git a/skins/common/config.js b/skins/common/config.js
new file mode 100644
index 0000000..b1e28ab
--- /dev/null
+++ b/skins/common/config.js
@@ -0,0 +1,108 @@
+( function ( $ ) {
+ $( document ).ready( function () {
+ var $label, labelText;
+
+ function syncText() {
+ var value = $(this).val()
+ .replace( /[\[\]\{\}|#<>%+? ]/g, '_' )
+ .replace( /&/, '&' )
+ .replace( /__+/g, '_' )
+ .replace( /^_+/, '' )
+ .replace( /_+$/, '' );
+ value = value.substr( 0, 1 ).toUpperCase() + value.substr( 1 );
+ $label.text( labelText.replace( '$1', value ) );
+ }
+
+ // Set up the help system
+ $( '.mw-help-field-data' )
+ .hide()
+ .closest( '.mw-help-field-container' )
+ .find( '.mw-help-field-hint' )
+ .show()
+ .click( function () {
+ $(this)
+ .closest( '.mw-help-field-container' )
+ .find( '.mw-help-field-data' )
+ .slideToggle( 'fast' );
+ } );
+
+ // Show/hide code for DB-specific options
+ // FIXME: Do we want slow, fast, or even non-animated (instantaneous) showing/hiding here?
+ $( '.dbRadio' ).each( function () {
+ $( document.getElementById( $(this).attr( 'rel' ) ) ).hide();
+ } );
+ $( document.getElementById( $( '.dbRadio:checked' ).attr( 'rel' ) ) ).show();
+ $( '.dbRadio' ).click( function () {
+ var $checked = $( '.dbRadio:checked' ),
+ $wrapper = $( document.getElementById( $checked.attr( 'rel' ) ) );
+ if ( $wrapper.is( ':hidden' ) ) {
+ $( '.dbWrapper' ).hide( 'slow' );
+ $wrapper.show( 'slow' );
+ }
+ } );
+
+ // Scroll to the bottom of upgrade log
+ $( '#config-live-log' ).children( 'textarea' ).each( function () {
+ this.scrollTop = this.scrollHeight;
+ } );
+
+ // Show/hide Creative Commons thingy
+ $( '.licenseRadio' ).click( function () {
+ var $wrapper = $( '#config-cc-wrapper' );
+ if ( $( '#config__LicenseCode_cc-choose' ).is( ':checked' ) ) {
+ $wrapper.show( 'slow' );
+ } else {
+ $wrapper.hide( 'slow' );
+ }
+ } );
+
+ // Show/hide random stuff (email, upload)
+ $( '.showHideRadio' ).click( function () {
+ var $wrapper = $( '#' + $(this).attr( 'rel' ) );
+ if ( $(this).is( ':checked' ) ) {
+ $wrapper.show( 'slow' );
+ } else {
+ $wrapper.hide( 'slow' );
+ }
+ } );
+ $( '.hideShowRadio' ).click( function () {
+ var $wrapper = $( '#' + $(this).attr( 'rel' ) );
+ if ( $(this).is( ':checked' ) ) {
+ $wrapper.hide( 'slow' );
+ } else {
+ $wrapper.show( 'slow' );
+ }
+ } );
+
+ // Hide "other" textboxes by default
+ // Should not be done in CSS for javascript disabled compatibility
+ $( '.enabledByOther' ).closest( '.config-block' ).hide();
+
+ // Enable/disable "other" textboxes
+ $( '.enableForOther' ).click( function () {
+ var $textbox = $( document.getElementById( $(this).attr( 'rel' ) ) );
+ // FIXME: Ugh, this is ugly
+ if ( $(this).val() === 'other' ) {
+ $textbox.removeProp( 'readonly' ).closest( '.config-block' ).slideDown( 'fast' );
+ } else {
+ $textbox.prop( 'readonly', true ).closest( '.config-block' ).slideUp( 'fast' );
+ }
+ } );
+
+ // Synchronize radio button label for sitename with textbox
+ $label = $( 'label[for=config__NamespaceType_site-name]' );
+ labelText = $label.text();
+ $label.text( labelText.replace( '$1', '' ) );
+ $( '#config_wgSitename' ).on( 'keyup change', syncText ).each( syncText );
+
+ // Show/Hide memcached servers when needed
+ $( 'input[name$="config_wgMainCacheType"]' ).change( function () {
+ var $memc = $( "#config-memcachewrapper" );
+ if( $( 'input[name$="config_wgMainCacheType"]:checked' ).val() === 'memcached' ) {
+ $memc.show( 'slow' );
+ } else {
+ $memc.hide( 'slow' );
+ }
+ } );
+ } );
+}( jQuery ) );
diff --git a/skins/common/feed.css b/skins/common/feed.css
new file mode 100644
index 0000000..9439663
--- /dev/null
+++ b/skins/common/feed.css
@@ -0,0 +1,95 @@
+/*
+Make RSS and Atom feeds at least semi-legible to folk who accidentally
+load them in a browser...
+
+Compatibility:
+* Mozilla is fine.
+* Safari 1.2: the RSS text isn't shown
+* Opera 7.5 uses the style sheet instead of its native RSS mode.
+* IE/Mac 5.2: none of the :before content works; doesn't get the charset right and displays garbage for non-ASCII.
+* IE/Win 6.0: No background color, borders, font size, font weight, or :before content.
+
+*/
+
+/* RSS: */ rss, channel, title, link, description, language, generator, lastBuildDate, item, pubDate, author, comments, creator,
+/* Atom: */ feed, id, modified, tagline, entry, issued, created, updated, summary, comment {
+ display: block;
+}
+
+rss, feed {
+ background: white;
+ color: black;
+ margin: 1em;
+ font-family: "Verdana", "Tahoma", "Arial", "Helvetica", sans-serif;
+ line-height: 1.5em;
+ font-size: 76%;
+}
+
+rss:before {
+ content: "This RSS feed is meant to be read in a syndicated news reader, and isn't ideal for a web browser.";
+}
+
+feed:before {
+ content: "This Atom feed is meant to be read in a syndicated news reader, and isn't ideal for a web browser.";
+}
+rss:before, feed:before {
+ color: red;
+ text-align: center;
+ line-height: 2em;
+}
+
+channel>title,
+item>title,
+feed>title,
+entry>title {
+ font-weight: bold;
+ border-bottom: solid 1px #aaa;
+ margin-left: -0.5em;
+}
+channel>title, feed>title {
+ font-size: larger;
+}
+item>title, entry>title {
+ font-size: large;
+}
+item, entry {
+ margin-top: 1em;
+ margin-left: 2em;
+}
+
+item>description, entry>summary {
+ white-space: pre;
+ overflow: auto;
+ background: #f8f8ff;
+}
+
+pubDate:before { content: "Date: " }
+link:before { content: "Link: " }
+author:before, creator:before { content: "Author: " }
+description:before { content: "Description: " }
+id:before { content: "Id: " }
+
+generator:before { content: "Generator: " }
+language:before { content: "Language: " }
+lastBuildDate:before { content: "Updated: " }
+comments:before { content: "Comments page: " }
+
+tagline:before { content: "Tagline: " }
+issued:before { content: "Issued: " }
+created:before { content: "Created: " }
+modified:before { content: "Modified: " }
+updated:before { content: "Updated: " }
+summary:before { content: "Summary: " }
+comment:before { content: "Comment: " }
+
+pubDate:before, link:before, author:before, description:before,
+language:before, generator:before, lastBuildDate:before, comments:before,
+tagline:before, issued:before, created:before, modified:before,
+summary:before, comment:before, creator:before, id:before, updated:before {
+ color: #224;
+ font-weight: bold;
+}
+
+feed link:after {
+ content: attr(href);
+}
diff --git a/skins/common/images/Arr_.png b/skins/common/images/Arr_.png
new file mode 100644
index 0000000..bc67a4b
Binary files /dev/null and b/skins/common/images/Arr_.png differ
diff --git a/skins/common/images/Arr_d.png b/skins/common/images/Arr_d.png
new file mode 100644
index 0000000..58a9fc6
Binary files /dev/null and b/skins/common/images/Arr_d.png differ
diff --git a/skins/common/images/Arr_l.png b/skins/common/images/Arr_l.png
new file mode 100644
index 0000000..2246254
Binary files /dev/null and b/skins/common/images/Arr_l.png differ
diff --git a/skins/common/images/Arr_r.png b/skins/common/images/Arr_r.png
new file mode 100644
index 0000000..467a555
Binary files /dev/null and b/skins/common/images/Arr_r.png differ
diff --git a/skins/common/images/Arr_u.png b/skins/common/images/Arr_u.png
new file mode 100644
index 0000000..6132836
Binary files /dev/null and b/skins/common/images/Arr_u.png differ
diff --git a/skins/common/images/Checker-16x16.png b/skins/common/images/Checker-16x16.png
new file mode 100644
index 0000000..3e9e3d0
Binary files /dev/null and b/skins/common/images/Checker-16x16.png differ
diff --git a/skins/common/images/Zoom_sans.gif b/skins/common/images/Zoom_sans.gif
new file mode 100644
index 0000000..56a49de
Binary files /dev/null and b/skins/common/images/Zoom_sans.gif differ
diff --git a/skins/common/images/add.png b/skins/common/images/add.png
new file mode 100644
index 0000000..3497423
Binary files /dev/null and b/skins/common/images/add.png differ
diff --git a/skins/common/images/ajax-loader.gif b/skins/common/images/ajax-loader.gif
new file mode 100644
index 0000000..72203fd
Binary files /dev/null and b/skins/common/images/ajax-loader.gif differ
diff --git a/skins/common/images/ar/button_bold.png b/skins/common/images/ar/button_bold.png
new file mode 100644
index 0000000..e524f6c
Binary files /dev/null and b/skins/common/images/ar/button_bold.png differ
diff --git a/skins/common/images/ar/button_headline.png b/skins/common/images/ar/button_headline.png
new file mode 100644
index 0000000..04fb8f1
Binary files /dev/null and b/skins/common/images/ar/button_headline.png differ
diff --git a/skins/common/images/ar/button_italic.png b/skins/common/images/ar/button_italic.png
new file mode 100644
index 0000000..6ec73e9
Binary files /dev/null and b/skins/common/images/ar/button_italic.png differ
diff --git a/skins/common/images/ar/button_link.png b/skins/common/images/ar/button_link.png
new file mode 100644
index 0000000..c9c63f6
Binary files /dev/null and b/skins/common/images/ar/button_link.png differ
diff --git a/skins/common/images/ar/button_nowiki.png b/skins/common/images/ar/button_nowiki.png
new file mode 100644
index 0000000..12b986b
Binary files /dev/null and b/skins/common/images/ar/button_nowiki.png differ
diff --git a/skins/common/images/arrow_disabled_first_25.png b/skins/common/images/arrow_disabled_first_25.png
new file mode 100644
index 0000000..78a493e
Binary files /dev/null and b/skins/common/images/arrow_disabled_first_25.png differ
diff --git a/skins/common/images/arrow_disabled_last_25.png b/skins/common/images/arrow_disabled_last_25.png
new file mode 100644
index 0000000..2a64fd0
Binary files /dev/null and b/skins/common/images/arrow_disabled_last_25.png differ
diff --git a/skins/common/images/arrow_disabled_left_25.png b/skins/common/images/arrow_disabled_left_25.png
new file mode 100644
index 0000000..8f979aa
Binary files /dev/null and b/skins/common/images/arrow_disabled_left_25.png differ
diff --git a/skins/common/images/arrow_disabled_right_25.png b/skins/common/images/arrow_disabled_right_25.png
new file mode 100644
index 0000000..11022f6
Binary files /dev/null and b/skins/common/images/arrow_disabled_right_25.png differ
diff --git a/skins/common/images/arrow_first_25.png b/skins/common/images/arrow_first_25.png
new file mode 100644
index 0000000..52b32a5
Binary files /dev/null and b/skins/common/images/arrow_first_25.png differ
diff --git a/skins/common/images/arrow_last_25.png b/skins/common/images/arrow_last_25.png
new file mode 100644
index 0000000..caf5033
Binary files /dev/null and b/skins/common/images/arrow_last_25.png differ
diff --git a/skins/common/images/arrow_left_25.png b/skins/common/images/arrow_left_25.png
new file mode 100644
index 0000000..f363bf6
Binary files /dev/null and b/skins/common/images/arrow_left_25.png differ
diff --git a/skins/common/images/arrow_right_25.png b/skins/common/images/arrow_right_25.png
new file mode 100644
index 0000000..9e1b550
Binary files /dev/null and b/skins/common/images/arrow_right_25.png differ
diff --git a/skins/common/images/be-tarask/button_bold.png b/skins/common/images/be-tarask/button_bold.png
new file mode 100644
index 0000000..5c10cfe
Binary files /dev/null and b/skins/common/images/be-tarask/button_bold.png differ
diff --git a/skins/common/images/be-tarask/button_italic.png b/skins/common/images/be-tarask/button_italic.png
new file mode 100644
index 0000000..72209d7
Binary files /dev/null and b/skins/common/images/be-tarask/button_italic.png differ
diff --git a/skins/common/images/be-tarask/button_link.png b/skins/common/images/be-tarask/button_link.png
new file mode 100644
index 0000000..09c86fb
Binary files /dev/null and b/skins/common/images/be-tarask/button_link.png differ
diff --git a/skins/common/images/bullet.gif b/skins/common/images/bullet.gif
new file mode 100644
index 0000000..b43de48
Binary files /dev/null and b/skins/common/images/bullet.gif differ
diff --git a/skins/common/images/button_bold.png b/skins/common/images/button_bold.png
new file mode 100644
index 0000000..75c3f10
Binary files /dev/null and b/skins/common/images/button_bold.png differ
diff --git a/skins/common/images/button_extlink.png b/skins/common/images/button_extlink.png
new file mode 100644
index 0000000..458943c
Binary files /dev/null and b/skins/common/images/button_extlink.png differ
diff --git a/skins/common/images/button_headline.png b/skins/common/images/button_headline.png
new file mode 100644
index 0000000..9cf751d
Binary files /dev/null and b/skins/common/images/button_headline.png differ
diff --git a/skins/common/images/button_hr.png b/skins/common/images/button_hr.png
new file mode 100644
index 0000000..19e4ad4
Binary files /dev/null and b/skins/common/images/button_hr.png differ
diff --git a/skins/common/images/button_image.png b/skins/common/images/button_image.png
new file mode 100644
index 0000000..6919296
Binary files /dev/null and b/skins/common/images/button_image.png differ
diff --git a/skins/common/images/button_italic.png b/skins/common/images/button_italic.png
new file mode 100644
index 0000000..527fbd1
Binary files /dev/null and b/skins/common/images/button_italic.png differ
diff --git a/skins/common/images/button_link.png b/skins/common/images/button_link.png
new file mode 100644
index 0000000..eb5634b
Binary files /dev/null and b/skins/common/images/button_link.png differ
diff --git a/skins/common/images/button_math.png b/skins/common/images/button_math.png
new file mode 100644
index 0000000..507e4b5
Binary files /dev/null and b/skins/common/images/button_math.png differ
diff --git a/skins/common/images/button_media.png b/skins/common/images/button_media.png
new file mode 100644
index 0000000..4194ec1
Binary files /dev/null and b/skins/common/images/button_media.png differ
diff --git a/skins/common/images/button_nowiki.png b/skins/common/images/button_nowiki.png
new file mode 100644
index 0000000..c647de2
Binary files /dev/null and b/skins/common/images/button_nowiki.png differ
diff --git a/skins/common/images/button_sig.png b/skins/common/images/button_sig.png
new file mode 100644
index 0000000..ff7348a
Binary files /dev/null and b/skins/common/images/button_sig.png differ
diff --git a/skins/common/images/button_template.png b/skins/common/images/button_template.png
new file mode 100644
index 0000000..53b6f92
Binary files /dev/null and b/skins/common/images/button_template.png differ
diff --git a/skins/common/images/cc-0.png b/skins/common/images/cc-0.png
new file mode 100644
index 0000000..9d3fe5f
Binary files /dev/null and b/skins/common/images/cc-0.png differ
diff --git a/skins/common/images/cc-by-nc-sa.png b/skins/common/images/cc-by-nc-sa.png
new file mode 100644
index 0000000..0d24a71
Binary files /dev/null and b/skins/common/images/cc-by-nc-sa.png differ
diff --git a/skins/common/images/cc-by-sa.png b/skins/common/images/cc-by-sa.png
new file mode 100644
index 0000000..518fb64
Binary files /dev/null and b/skins/common/images/cc-by-sa.png differ
diff --git a/skins/common/images/cc-by.png b/skins/common/images/cc-by.png
new file mode 100644
index 0000000..9cca2f9
Binary files /dev/null and b/skins/common/images/cc-by.png differ
diff --git a/skins/common/images/closewindow.png b/skins/common/images/closewindow.png
new file mode 100644
index 0000000..990702e
Binary files /dev/null and b/skins/common/images/closewindow.png differ
diff --git a/skins/common/images/closewindow19x19.png b/skins/common/images/closewindow19x19.png
new file mode 100644
index 0000000..c96d9ff
Binary files /dev/null and b/skins/common/images/closewindow19x19.png differ
diff --git a/skins/common/images/critical-32.png b/skins/common/images/critical-32.png
new file mode 100644
index 0000000..dce5667
Binary files /dev/null and b/skins/common/images/critical-32.png differ
diff --git a/skins/common/images/cyrl/button_bold.png b/skins/common/images/cyrl/button_bold.png
new file mode 100644
index 0000000..eae30d9
Binary files /dev/null and b/skins/common/images/cyrl/button_bold.png differ
diff --git a/skins/common/images/cyrl/button_italic.png b/skins/common/images/cyrl/button_italic.png
new file mode 100644
index 0000000..b958d22
Binary files /dev/null and b/skins/common/images/cyrl/button_italic.png differ
diff --git a/skins/common/images/cyrl/button_link.png b/skins/common/images/cyrl/button_link.png
new file mode 100644
index 0000000..12ad373
Binary files /dev/null and b/skins/common/images/cyrl/button_link.png differ
diff --git a/skins/common/images/de/button_bold.png b/skins/common/images/de/button_bold.png
new file mode 100644
index 0000000..367d5bc
Binary files /dev/null and b/skins/common/images/de/button_bold.png differ
diff --git a/skins/common/images/de/button_italic.png b/skins/common/images/de/button_italic.png
new file mode 100644
index 0000000..fdd8c9f
Binary files /dev/null and b/skins/common/images/de/button_italic.png differ
diff --git a/skins/common/images/diffunderline.gif b/skins/common/images/diffunderline.gif
new file mode 100644
index 0000000..e062c56
Binary files /dev/null and b/skins/common/images/diffunderline.gif differ
diff --git a/skins/common/images/download-32.png b/skins/common/images/download-32.png
new file mode 100644
index 0000000..e5b8318
Binary files /dev/null and b/skins/common/images/download-32.png differ
diff --git a/skins/common/images/fa/button_bold.png b/skins/common/images/fa/button_bold.png
new file mode 100644
index 0000000..c54d094
Binary files /dev/null and b/skins/common/images/fa/button_bold.png differ
diff --git a/skins/common/images/fa/button_headline.png b/skins/common/images/fa/button_headline.png
new file mode 100644
index 0000000..9890d15
Binary files /dev/null and b/skins/common/images/fa/button_headline.png differ
diff --git a/skins/common/images/fa/button_italic.png b/skins/common/images/fa/button_italic.png
new file mode 100644
index 0000000..33f91ed
Binary files /dev/null and b/skins/common/images/fa/button_italic.png differ
diff --git a/skins/common/images/fa/button_link.png b/skins/common/images/fa/button_link.png
new file mode 100644
index 0000000..76b939e
Binary files /dev/null and b/skins/common/images/fa/button_link.png differ
diff --git a/skins/common/images/fa/button_nowiki.png b/skins/common/images/fa/button_nowiki.png
new file mode 100644
index 0000000..12b986b
Binary files /dev/null and b/skins/common/images/fa/button_nowiki.png differ
diff --git a/skins/common/images/feed-icon.png b/skins/common/images/feed-icon.png
new file mode 100644
index 0000000..7188fa2
Binary files /dev/null and b/skins/common/images/feed-icon.png differ
diff --git a/skins/common/images/gnu-fdl.png b/skins/common/images/gnu-fdl.png
new file mode 100644
index 0000000..3feaf57
Binary files /dev/null and b/skins/common/images/gnu-fdl.png differ
diff --git a/skins/common/images/help-question-hover.gif b/skins/common/images/help-question-hover.gif
new file mode 100644
index 0000000..515138d
Binary files /dev/null and b/skins/common/images/help-question-hover.gif differ
diff --git a/skins/common/images/help-question.gif b/skins/common/images/help-question.gif
new file mode 100644
index 0000000..b4fc9c5
Binary files /dev/null and b/skins/common/images/help-question.gif differ
diff --git a/skins/common/images/icons/fileicon-c.png b/skins/common/images/icons/fileicon-c.png
new file mode 100644
index 0000000..0d603b7
Binary files /dev/null and b/skins/common/images/icons/fileicon-c.png differ
diff --git a/skins/common/images/icons/fileicon-cpp.png b/skins/common/images/icons/fileicon-cpp.png
new file mode 100644
index 0000000..123688f
Binary files /dev/null and b/skins/common/images/icons/fileicon-cpp.png differ
diff --git a/skins/common/images/icons/fileicon-deb.png b/skins/common/images/icons/fileicon-deb.png
new file mode 100644
index 0000000..87ca3fa
Binary files /dev/null and b/skins/common/images/icons/fileicon-deb.png differ
diff --git a/skins/common/images/icons/fileicon-djvu.png b/skins/common/images/icons/fileicon-djvu.png
new file mode 100644
index 0000000..1da2276
Binary files /dev/null and b/skins/common/images/icons/fileicon-djvu.png differ
diff --git a/skins/common/images/icons/fileicon-dvi.png b/skins/common/images/icons/fileicon-dvi.png
new file mode 100644
index 0000000..f37878d
Binary files /dev/null and b/skins/common/images/icons/fileicon-dvi.png differ
diff --git a/skins/common/images/icons/fileicon-exe.png b/skins/common/images/icons/fileicon-exe.png
new file mode 100644
index 0000000..dc020eb
Binary files /dev/null and b/skins/common/images/icons/fileicon-exe.png differ
diff --git a/skins/common/images/icons/fileicon-h.png b/skins/common/images/icons/fileicon-h.png
new file mode 100644
index 0000000..339bf02
Binary files /dev/null and b/skins/common/images/icons/fileicon-h.png differ
diff --git a/skins/common/images/icons/fileicon-html.png b/skins/common/images/icons/fileicon-html.png
new file mode 100644
index 0000000..f28f8a2
Binary files /dev/null and b/skins/common/images/icons/fileicon-html.png differ
diff --git a/skins/common/images/icons/fileicon-iso.png b/skins/common/images/icons/fileicon-iso.png
new file mode 100644
index 0000000..c73d229
Binary files /dev/null and b/skins/common/images/icons/fileicon-iso.png differ
diff --git a/skins/common/images/icons/fileicon-java.png b/skins/common/images/icons/fileicon-java.png
new file mode 100644
index 0000000..a1b4f22
Binary files /dev/null and b/skins/common/images/icons/fileicon-java.png differ
diff --git a/skins/common/images/icons/fileicon-mid.png b/skins/common/images/icons/fileicon-mid.png
new file mode 100644
index 0000000..ce2bebb
Binary files /dev/null and b/skins/common/images/icons/fileicon-mid.png differ
diff --git a/skins/common/images/icons/fileicon-mov.png b/skins/common/images/icons/fileicon-mov.png
new file mode 100644
index 0000000..952de1f
Binary files /dev/null and b/skins/common/images/icons/fileicon-mov.png differ
diff --git a/skins/common/images/icons/fileicon-o.png b/skins/common/images/icons/fileicon-o.png
new file mode 100644
index 0000000..f3523d9
Binary files /dev/null and b/skins/common/images/icons/fileicon-o.png differ
diff --git a/skins/common/images/icons/fileicon-ogg.png b/skins/common/images/icons/fileicon-ogg.png
new file mode 100644
index 0000000..ef4d801
Binary files /dev/null and b/skins/common/images/icons/fileicon-ogg.png differ
diff --git a/skins/common/images/icons/fileicon-pdf.png b/skins/common/images/icons/fileicon-pdf.png
new file mode 100644
index 0000000..8c8da92
Binary files /dev/null and b/skins/common/images/icons/fileicon-pdf.png differ
diff --git a/skins/common/images/icons/fileicon-ps.png b/skins/common/images/icons/fileicon-ps.png
new file mode 100644
index 0000000..e872833
Binary files /dev/null and b/skins/common/images/icons/fileicon-ps.png differ
diff --git a/skins/common/images/icons/fileicon-psd.png b/skins/common/images/icons/fileicon-psd.png
new file mode 100644
index 0000000..5bd40cb
Binary files /dev/null and b/skins/common/images/icons/fileicon-psd.png differ
diff --git a/skins/common/images/icons/fileicon-rm.png b/skins/common/images/icons/fileicon-rm.png
new file mode 100644
index 0000000..81dbe0b
Binary files /dev/null and b/skins/common/images/icons/fileicon-rm.png differ
diff --git a/skins/common/images/icons/fileicon-rpm.png b/skins/common/images/icons/fileicon-rpm.png
new file mode 100644
index 0000000..1903aac
Binary files /dev/null and b/skins/common/images/icons/fileicon-rpm.png differ
diff --git a/skins/common/images/icons/fileicon-svg.png b/skins/common/images/icons/fileicon-svg.png
new file mode 100644
index 0000000..b782113
Binary files /dev/null and b/skins/common/images/icons/fileicon-svg.png differ
diff --git a/skins/common/images/icons/fileicon-tar.png b/skins/common/images/icons/fileicon-tar.png
new file mode 100644
index 0000000..e5fd1b7
Binary files /dev/null and b/skins/common/images/icons/fileicon-tar.png differ
diff --git a/skins/common/images/icons/fileicon-tex.png b/skins/common/images/icons/fileicon-tex.png
new file mode 100644
index 0000000..a437284
Binary files /dev/null and b/skins/common/images/icons/fileicon-tex.png differ
diff --git a/skins/common/images/icons/fileicon-ttf.png b/skins/common/images/icons/fileicon-ttf.png
new file mode 100644
index 0000000..1ed4e74
Binary files /dev/null and b/skins/common/images/icons/fileicon-ttf.png differ
diff --git a/skins/common/images/icons/fileicon-txt.png b/skins/common/images/icons/fileicon-txt.png
new file mode 100644
index 0000000..9e988e7
Binary files /dev/null and b/skins/common/images/icons/fileicon-txt.png differ
diff --git a/skins/common/images/icons/fileicon.png b/skins/common/images/icons/fileicon.png
new file mode 100644
index 0000000..59696a3
Binary files /dev/null and b/skins/common/images/icons/fileicon.png differ
diff --git a/skins/common/images/info-32.png b/skins/common/images/info-32.png
new file mode 100644
index 0000000..ab09e1d
Binary files /dev/null and b/skins/common/images/info-32.png differ
diff --git a/skins/common/images/ksh/button_S_italic.png b/skins/common/images/ksh/button_S_italic.png
new file mode 100644
index 0000000..15496c0
Binary files /dev/null and b/skins/common/images/ksh/button_S_italic.png differ
diff --git a/skins/common/images/link_icon.gif b/skins/common/images/link_icon.gif
new file mode 100644
index 0000000..168c1a2
Binary files /dev/null and b/skins/common/images/link_icon.gif differ
diff --git a/skins/common/images/magnify-clip-rtl.png b/skins/common/images/magnify-clip-rtl.png
new file mode 100644
index 0000000..cfddc27
Binary files /dev/null and b/skins/common/images/magnify-clip-rtl.png differ
diff --git a/skins/common/images/magnify-clip.png b/skins/common/images/magnify-clip.png
new file mode 100644
index 0000000..00a9cee
Binary files /dev/null and b/skins/common/images/magnify-clip.png differ
diff --git a/skins/common/images/mediawiki.png b/skins/common/images/mediawiki.png
new file mode 100644
index 0000000..8c42118
Binary files /dev/null and b/skins/common/images/mediawiki.png differ
diff --git a/skins/common/images/nextredirectltr.png b/skins/common/images/nextredirectltr.png
new file mode 100644
index 0000000..cd657c3
Binary files /dev/null and b/skins/common/images/nextredirectltr.png differ
diff --git a/skins/common/images/nextredirectrtl.png b/skins/common/images/nextredirectrtl.png
new file mode 100644
index 0000000..b788f33
Binary files /dev/null and b/skins/common/images/nextredirectrtl.png differ
diff --git a/skins/common/images/poweredby_mediawiki_88x31.png b/skins/common/images/poweredby_mediawiki_88x31.png
new file mode 100644
index 0000000..30e1d2e
Binary files /dev/null and b/skins/common/images/poweredby_mediawiki_88x31.png differ
diff --git a/skins/common/images/public-domain.png b/skins/common/images/public-domain.png
new file mode 100644
index 0000000..ebf0107
Binary files /dev/null and b/skins/common/images/public-domain.png differ
diff --git a/skins/common/images/redirectltr.png b/skins/common/images/redirectltr.png
new file mode 100644
index 0000000..695f2a1
Binary files /dev/null and b/skins/common/images/redirectltr.png differ
diff --git a/skins/common/images/redirectrtl.png b/skins/common/images/redirectrtl.png
new file mode 100644
index 0000000..c954a2a
Binary files /dev/null and b/skins/common/images/redirectrtl.png differ
diff --git a/skins/common/images/remove.png b/skins/common/images/remove.png
new file mode 100644
index 0000000..cd03d6d
Binary files /dev/null and b/skins/common/images/remove.png differ
diff --git a/skins/common/images/spinner.gif b/skins/common/images/spinner.gif
new file mode 100644
index 0000000..6146be4
Binary files /dev/null and b/skins/common/images/spinner.gif differ
diff --git a/skins/common/images/tick-32.png b/skins/common/images/tick-32.png
new file mode 100644
index 0000000..dfde170
Binary files /dev/null and b/skins/common/images/tick-32.png differ
diff --git a/skins/common/images/tipsy-arrow.gif b/skins/common/images/tipsy-arrow.gif
new file mode 100644
index 0000000..9f1a15b
Binary files /dev/null and b/skins/common/images/tipsy-arrow.gif differ
diff --git a/skins/common/images/tooltip_icon.png b/skins/common/images/tooltip_icon.png
new file mode 100644
index 0000000..ba5718a
Binary files /dev/null and b/skins/common/images/tooltip_icon.png differ
diff --git a/skins/common/images/warning-32.png b/skins/common/images/warning-32.png
new file mode 100644
index 0000000..b14a831
Binary files /dev/null and b/skins/common/images/warning-32.png differ
diff --git a/skins/common/images/wiki.png b/skins/common/images/wiki.png
new file mode 100644
index 0000000..48595b0
Binary files /dev/null and b/skins/common/images/wiki.png differ
diff --git a/skins/common/oldshared.css b/skins/common/oldshared.css
new file mode 100644
index 0000000..6dcdf6f
--- /dev/null
+++ b/skins/common/oldshared.css
@@ -0,0 +1,461 @@
+/**
+ * oldshared.css
+ * This file contains CSS settings common to Wikistandard, Nostalgia and
+ * CologneBlue, the old pre-Monobook skins
+ */
+
+/* For clarity, explicitly state some recommendations from
+ * http://www.w3.org/TR/CSS21/sample.html to make sure the editsection links scale right
+ */
+
+h1 { font-size: 2em; }
+h2 { font-size: 1.5em; }
+h3 { font-size: 1.17em; }
+h5 { font-size: .83em; }
+h6 { font-size: .75em; }
+h1, h2, h3, h4, h5, h6 {
+ font-weight: bolder;
+}
+
+/* Now the custom parts */
+
+/* Make edit sections (which are inside h# tags) normal-sized */
+.editsection {
+ font-weight: normal;
+}
+h1 .editsection { font-size: 50%; }
+h2 .editsection { font-size: 66.7%; }
+h3 .editsection { font-size: 85.5%; }
+h5 .editsection { font-size: 120%; }
+h6 .editsection { font-size: 133%; }
+
+#footer { clear: both }
+/* images */
+/* @noflip */
+div.floatright {
+ float: right;
+ clear: right;
+ margin: 0 0 1em 1em;
+}
+
+/* @noflip */
+div.floatright p {
+ font-style: italic;
+}
+
+/* @noflip */
+div.floatleft {
+ float: left;
+ clear: left;
+ margin: 0.3em 0.5em 0.5em 0;
+}
+
+/* @noflip */
+div.floatleft p {
+ font-style: italic;
+}
+
+/* table standards */
+table.rimage {
+ float: right;
+ margin-left: 1em;
+ margin-bottom: 1em;
+ text-align: center;
+ font-size: smaller;
+}
+
+/* thumbnails */
+div.thumb {
+ margin-bottom: .5em;
+ border-style: solid;
+ border-color: white;
+ width: auto;
+}
+div.thumbinner {
+ border: 1px solid #ccc;
+ padding: 3px !important;
+ background-color: #f9f9f9;
+ font-size: 94%;
+ text-align: center;
+ overflow: hidden;
+}
+html .thumbimage {
+ border: 1px solid #ccc;
+}
+html .thumbcaption {
+ border: none;
+ text-align: left;
+ line-height: 1.4em;
+ padding: 3px !important;
+ font-size: 94%;
+}
+div.magnify {
+ float: right;
+ border: none !important;
+ background: none !important;
+}
+div.magnify a,
+div.magnify img {
+ display: block;
+ border: none !important;
+ background: none !important;
+}
+/* @noflip */
+div.tright {
+ clear: right;
+ float: right;
+ border-width: .5em 0 .8em 1.4em;
+}
+/* @noflip */
+div.tleft {
+ float: left;
+ clear: left;
+ margin-right: .5em;
+ border-width: .5em 1.4em .8em 0;
+}
+img.thumbborder {
+ border: 1px solid #dddddd;
+}
+
+/* Page history styling */
+/* the auto-generated edit comments */
+.autocomment { color: #4b4b4b; }
+
+img { border: none; }
+
+#toc,
+.toc {
+ border: 1px solid #bba;
+ background-color: #f7f8ff;
+ padding: 5px;
+ font-size: 95%;
+ text-align: center;
+}
+#toc h2,
+.toc h2 {
+ display: inline;
+ border: none;
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+}
+#toc ul,
+.toc ul {
+ list-style-type: none;
+ list-style-image: none;
+ padding: 0;
+ text-align: left;
+}
+#toc ul ul,
+.toc ul ul {
+ margin: 0 0 0 2em;
+}
+#toc .toctoggle,
+.toc .toctoggle {
+ font-size: 94%;
+}
+
+.error {
+ color: red;
+ font-size: larger;
+}
+
+/* preference page with js-genrated toc */
+#mw-pref-clear {
+ clear: both;
+}
+#preftoc {
+ float: left;
+ margin: 1em 1em 1em 1em;
+ width: 13em;
+}
+#preftoc li {
+ border: 1px solid White;
+}
+#preftoc li.selected {
+ background-color:#f9f9f9;
+ border:1px dashed #aaaaaa;
+}
+#preftoc a,
+#preftoc a:active {
+ display: block;
+ color: #005189;
+}
+.mw-prefs-buttons {
+ clear: left;
+ float: left;
+ margin-top: 1em;
+}
+div.htmlform-tip {
+ font-size: 94%;
+ margin-top: 0.4em;
+ color: #666;
+}
+fieldset.prefsection {
+ margin-top: 1em;
+}
+fieldset.operaprefsection {
+ margin-left: 15em;
+}
+
+/* emulate center */
+.center {
+ width: 100%;
+ text-align: center;
+}
+*.center * {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+/* small for tables and similar */
+.small {
+ font-size: 94%;
+}
+table.small {
+ font-size: 100%;
+}
+
+/* use this instead of #toc for page content */
+.toccolours {
+ border: 1px solid #aaaaaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ font-size: 95%;
+}
+#siteNotice {
+ border: 1px solid #aaaaaa;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+}
+.redirectText {
+ font-size: 150%;
+ margin: 5px;
+}
+.sharedUploadNotice {
+ font-style: italic;
+}
+span.unpatrolled {
+ font-weight: bold;
+ color: red;
+}
+
+span.updatedmarker {
+ color: black;
+ background-color: #00FF00;
+}
+
+div.gallerybox {
+ width: 150px;
+}
+
+span.comment {
+ font-style: italic;
+}
+
+span.changedby {
+ font-size: 95%;
+}
+
+.previewnote {
+ text-align: center;
+ color: #cc0000;
+}
+.editExternally {
+ border-style: solid;
+ border-width: 1px;
+ border-color: gray;
+ background: #ffffff;
+ padding: 3px;
+ margin-top: 0.5em;
+ float: left;
+ font-size: small;
+ text-align: center;
+}
+.editExternallyHelp {
+ font-style: italic;
+ color: gray;
+}
+
+li span.deleted {
+ text-decoration: line-through;
+ color: #888;
+ font-style: italic;
+}
+
+/* Classes for EXIF data display */
+table.mw_metadata {
+ margin-left: 0.5em;
+}
+
+table.mw_metadata caption {
+ font-weight: bold;
+}
+table.mw_metadata th {
+ font-weight: normal;
+}
+table.mw_metadata td {
+ padding: 0.1em;
+}
+
+table.mw_metadata {
+ border: none;
+ border-collapse: collapse;
+}
+table.mw_metadata td,
+table.mw_metadata th {
+ border: 1px solid #aaaaaa;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+table.mw_metadata th {
+ background-color: #f9f9f9;
+}
+table.mw_metadata td {
+ background-color: #fcfcfc;
+}
+table.mw_metadata td.spacer {
+ background: inherit;
+ border-top: none;
+ border-bottom: none;
+}
+table.collapsed tr.collapsable {
+ display: none;
+}
+
+.visualClear {
+ clear: both;
+}
+
+/* Allmessages table */
+#allmessagestable th {
+ background-color: #b2b2ff;
+}
+
+#allmessagestable tr.orig {
+ background-color: #ffe2e2;
+}
+
+#allmessagestable tr.new {
+ background-color: #e2ffe2;
+}
+
+#allmessagestable tr.def {
+ background-color: #f0f0ff;
+}
+
+#jump-to-nav {
+ display: none;
+}
+
+div.multipageimagenavbox {
+ border: solid 1px silver;
+ padding: 4px;
+ margin: 1em;
+ background: #f0f0f0;
+}
+
+div.multipageimagenavbox div.thumb {
+ border: none;
+ margin-left: 2em;
+ margin-right: 2em;
+}
+
+div.multipageimagenavbox hr {
+ margin: 6px;
+}
+
+table.multipageimage td {
+ text-align: center;
+}
+
+/*
+ Table pager (e.g. Special:Imagelist)
+ - remove underlines from the navigation link
+ - collapse borders
+ - set the borders to outsets (similar to Special:Allmessages)
+ - remove line wrapping for all td and th, set background color
+ - restore line wrapping for the last two table cells (description and size)
+*/
+.TablePager_nav a {
+ text-decoration: none;
+}
+.TablePager {
+ border-collapse: collapse;
+}
+.TablePager,
+.TablePager td,
+.TablePager th {
+ border: 0.15em solid #777777;
+ padding: 0 0.15em 0 0.15em;
+}
+.TablePager th {
+ background-color: #eeeeff;
+}
+.TablePager td {
+ background-color: #ffffff;
+}
+.TablePager tr:hover td {
+ background-color: #eeeeff;
+}
+
+.imagelist td,
+.imagelist th {
+ white-space: nowrap;
+}
+.imagelist .TablePager_col_links {
+ background-color: #eeeeff;
+}
+.imagelist .TablePager_col_img_description {
+ white-space: normal;
+}
+.imagelist th.TablePager_sort {
+ background-color: #ccccff;
+}
+
+.templatesUsed {
+ margin-top: 1em;
+}
+
+.MediaTransformError {
+ border: thin solid #777;
+ background-color: #ccc;
+ padding: 0.1em;
+}
+.MediaTransformError td {
+ text-align: center;
+ vertical-align: middle;
+ font-size: 90%;
+}
+
+form#specialpages {
+ display: inline;
+}
+
+body {
+ direction: ltr;
+ unicode-bidi: embed;
+ background-color: #ffffec;
+}
+body.ns-0 {
+ background-color: white;
+}
+
+/** RTL specific CSS starts here **/
+
+/**
+ * Lists:
+ * The following lines don't have a visible effect on non-Gecko browsers
+ * They fix a problem with Gecko browsers rendering lists to the right of
+ * left-floated objects in an RTL layout.
+ */
+/* @noflip */
+html > body.rtl div#article ul {
+ display: table;
+}
+/* @noflip */
+html > body.rtl div#bodyContent ul#filetoc {
+ display: block;
+}
+
+/* RTL specific CSS ends here **/
\ No newline at end of file
diff --git a/skins/common/protect.js b/skins/common/protect.js
new file mode 100644
index 0000000..a23c0cb
--- /dev/null
+++ b/skins/common/protect.js
@@ -0,0 +1,357 @@
+
+window.ProtectionForm = {
+ 'existingMatch': false,
+
+ /**
+ * Set up the protection chaining interface (i.e. "unlock move permissions" checkbox)
+ * on the protection form
+ *
+ * @param opts Object : parameters with members:
+ * tableId Identifier of the table containing UI bits
+ * labelText Text to use for the checkbox label
+ * numTypes The number of protection types
+ * existingMatch True if all the existing expiry times match
+ */
+ 'init': function( opts ) {
+ if( !( document.createTextNode && document.getElementById && document.getElementsByTagName ) )
+ return false;
+
+ var box = document.getElementById( opts.tableId );
+ if( !box )
+ return false;
+
+ var boxbody = box.getElementsByTagName('tbody')[0];
+ var row = document.createElement( 'tr' );
+ boxbody.insertBefore( row, boxbody.firstChild.nextSibling );
+
+ this.existingMatch = opts.existingMatch;
+
+ var cell = document.createElement( 'td' );
+ row.appendChild( cell );
+ // If there is only one protection type, there is nothing to chain
+ if( opts.numTypes > 1 ) {
+ var check = document.createElement( 'input' );
+ check.id = 'mwProtectUnchained';
+ check.type = 'checkbox';
+ cell.appendChild( check );
+ addClickHandler( check, function() { ProtectionForm.onChainClick(); } );
+
+ cell.appendChild( document.createTextNode( ' ' ) );
+ var label = document.createElement( 'label' );
+ label.htmlFor = 'mwProtectUnchained';
+ label.appendChild( document.createTextNode( opts.labelText ) );
+ cell.appendChild( label );
+
+ check.checked = !this.areAllTypesMatching();
+ this.enableUnchainedInputs( check.checked );
+ }
+
+ $( '#mwProtect-reason' ).byteLimit( 180 );
+
+ this.updateCascadeCheckbox();
+
+ return true;
+ },
+
+ /**
+ * Sets the disabled attribute on the cascade checkbox depending on the current selected levels
+ */
+ 'updateCascadeCheckbox': function() {
+ // For non-existent titles, there is no cascade option
+ if( !document.getElementById( 'mwProtect-cascade' ) ) {
+ return;
+ }
+ var lists = this.getLevelSelectors();
+ for( var i = 0; i < lists.length; i++ ) {
+ if( lists[i].selectedIndex > -1 ) {
+ var items = lists[i].getElementsByTagName( 'option' );
+ var selected = items[ lists[i].selectedIndex ].value;
+ if( !this.isCascadeableLevel(selected) ) {
+ document.getElementById( 'mwProtect-cascade' ).checked = false;
+ document.getElementById( 'mwProtect-cascade' ).disabled = true;
+ return;
+ }
+ }
+ }
+ document.getElementById( 'mwProtect-cascade' ).disabled = false;
+ },
+
+ /**
+ * Checks if a cerain protection level is cascadeable.
+ * @param level {String}
+ * @return {Boolean}
+ */
+ 'isCascadeableLevel': function( level ) {
+ var cascadeLevels, len, i;
+
+ cascadeLevels = mw.config.get( 'wgCascadeableLevels' );
+ // cascadeLevels isn't defined on all pages
+ if ( cascadeLevels ) {
+ for ( i = 0, len = cascadeLevels.length; i < len; i += 1 ) {
+ if ( cascadeLevels[i] === level ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ },
+
+ /**
+ * When protection levels are locked together, update the rest
+ * when one action's level changes
+ *
+ * @param source Element Level selector that changed
+ */
+ 'updateLevels': function(source) {
+ if( !this.isUnchained() )
+ this.setAllSelectors( source.selectedIndex );
+ this.updateCascadeCheckbox();
+ },
+
+ /**
+ * When protection levels are locked together, update the
+ * expiries when one changes
+ *
+ * @param source Element expiry input that changed
+ */
+
+ 'updateExpiry': function(source) {
+ if( !this.isUnchained() ) {
+ var expiry = source.value;
+ this.forEachExpiryInput(function(element) {
+ element.value = expiry;
+ });
+ }
+ var listId = source.id.replace( /^mwProtect-(\w+)-expires$/, 'mwProtectExpirySelection-$1' );
+ var list = document.getElementById( listId );
+ if (list && list.value != 'othertime' ) {
+ if ( this.isUnchained() ) {
+ list.value = 'othertime';
+ } else {
+ this.forEachExpirySelector(function(element) {
+ element.value = 'othertime';
+ });
+ }
+ }
+ },
+
+ /**
+ * When protection levels are locked together, update the
+ * expiry lists when one changes and clear the custom inputs
+ *
+ * @param source Element expiry selector that changed
+ */
+ 'updateExpiryList': function(source) {
+ if( !this.isUnchained() ) {
+ var expiry = source.value;
+ this.forEachExpirySelector(function(element) {
+ element.value = expiry;
+ });
+ this.forEachExpiryInput(function(element) {
+ element.value = '';
+ });
+ }
+ },
+
+ /**
+ * Update chain status and enable/disable various bits of the UI
+ * when the user changes the "unlock move permissions" checkbox
+ */
+ 'onChainClick': function() {
+ if( this.isUnchained() ) {
+ this.enableUnchainedInputs( true );
+ } else {
+ this.setAllSelectors( this.getMaxLevel() );
+ this.enableUnchainedInputs( false );
+ }
+ this.updateCascadeCheckbox();
+ },
+
+ /**
+ * Returns true if the named attribute in all objects in the given array are matching
+ */
+ 'matchAttribute' : function( objects, attrName ) {
+ var value = null;
+
+ // Check levels
+ for ( var i = 0; i < objects.length; i++ ) {
+ var element = objects[i];
+ if ( value == null ) {
+ value = element[attrName];
+ } else {
+ if ( value != element[attrName] ) {
+ return false;
+ }
+ }
+ }
+ return true;
+ },
+
+ /**
+ * Are all actions protected at the same level, with the same expiry time?
+ *
+ * @return boolean
+ */
+ 'areAllTypesMatching': function() {
+ return this.existingMatch
+ && this.matchAttribute( this.getLevelSelectors(), 'selectedIndex' )
+ && this.matchAttribute( this.getExpirySelectors(), 'selectedIndex' )
+ && this.matchAttribute( this.getExpiryInputs(), 'value' );
+ },
+
+ /**
+ * Is protection chaining off?
+ *
+ * @return bool
+ */
+ 'isUnchained': function() {
+ var element = document.getElementById( 'mwProtectUnchained' );
+ return element
+ ? element.checked
+ : true; // No control, so we need to let the user set both levels
+ },
+
+ /**
+ * Find the highest protection level in any selector
+ */
+ 'getMaxLevel': function() {
+ var maxIndex = -1;
+ this.forEachLevelSelector(function(element) {
+ if (element.selectedIndex > maxIndex) {
+ maxIndex = element.selectedIndex;
+ }
+ });
+ return maxIndex;
+ },
+
+ /**
+ * Protect all actions at the specified level
+ *
+ * @param index int Protection level
+ */
+ 'setAllSelectors': function(index) {
+ this.forEachLevelSelector(function(element) {
+ if (element.selectedIndex != index) {
+ element.selectedIndex = index;
+ }
+ });
+ },
+
+ /**
+ * Apply a callback to each protection selector
+ *
+ * @param func callable Callback function
+ */
+ 'forEachLevelSelector': function(func) {
+ var selectors = this.getLevelSelectors();
+ for (var i = 0; i < selectors.length; i++) {
+ func(selectors[i]);
+ }
+ },
+
+ /**
+ * Get a list of all protection selectors on the page
+ *
+ * @return Array
+ */
+ 'getLevelSelectors': function() {
+ var all = document.getElementsByTagName("select");
+ var ours = [];
+ for (var i = 0; i < all.length; i++) {
+ var element = all[i];
+ if (element.id.match(/^mwProtect-level-/)) {
+ ours[ours.length] = element;
+ }
+ }
+ return ours;
+ },
+
+ /**
+ * Apply a callback to each expiry input
+ *
+ * @param func callable Callback function
+ */
+ 'forEachExpiryInput': function(func) {
+ var inputs = this.getExpiryInputs();
+ for (var i = 0; i < inputs.length; i++) {
+ func(inputs[i]);
+ }
+ },
+
+ /**
+ * Get a list of all expiry inputs on the page
+ *
+ * @return Array
+ */
+ 'getExpiryInputs': function() {
+ var all = document.getElementsByTagName("input");
+ var ours = [];
+ for (var i = 0; i < all.length; i++) {
+ var element = all[i];
+ if (element.name.match(/^mwProtect-expiry-/)) {
+ ours[ours.length] = element;
+ }
+ }
+ return ours;
+ },
+
+ /**
+ * Apply a callback to each expiry selector list
+ * @param func callable Callback function
+ */
+ 'forEachExpirySelector': function(func) {
+ var inputs = this.getExpirySelectors();
+ for (var i = 0; i < inputs.length; i++) {
+ func(inputs[i]);
+ }
+ },
+
+ /**
+ * Get a list of all expiry selector lists on the page
+ *
+ * @return Array
+ */
+ 'getExpirySelectors': function() {
+ var all = document.getElementsByTagName("select");
+ var ours = [];
+ for (var i = 0; i < all.length; i++) {
+ var element = all[i];
+ if (element.id.match(/^mwProtectExpirySelection-/)) {
+ ours[ours.length] = element;
+ }
+ }
+ return ours;
+ },
+
+ /**
+ * Enable/disable protection selectors and expiry inputs
+ *
+ * @param val boolean Enable?
+ */
+ 'enableUnchainedInputs': function(val) {
+ var first = true;
+ this.forEachLevelSelector(function(element) {
+ if (first) {
+ first = false;
+ } else {
+ element.disabled = !val;
+ }
+ });
+ first = true;
+ this.forEachExpiryInput(function(element) {
+ if (first) {
+ first = false;
+ } else {
+ element.disabled = !val;
+ }
+ });
+ first = true;
+ this.forEachExpirySelector(function(element) {
+ if (first) {
+ first = false;
+ } else {
+ element.disabled = !val;
+ }
+ });
+ }
+};
diff --git a/skins/common/shared.css b/skins/common/shared.css
new file mode 100644
index 0000000..6e1c94f
--- /dev/null
+++ b/skins/common/shared.css
@@ -0,0 +1,1100 @@
+/**
+ * CSS in this file is used by *all* skins (that have any CSS at all). Be
+ * careful what you put in here, since what looks good in one skin may not in
+ * another, but don't ignore the poor pre-Monobook users either.
+ */
+
+/* GENERAL CLASSES FOR DIRECTIONALITY SUPPORT */
+
+/**
+ * These classes should be used for text depending on the content direction.
+ * Content stuff like editsection, ul/ol and TOC depend on this.
+ */
+.mw-content-ltr {
+ /* @noflip */
+ direction: ltr;
+}
+.mw-content-rtl {
+ /* @noflip */
+ direction: rtl;
+}
+
+/* Most input fields should be in site direction */
+.sitedir-ltr textarea,
+.sitedir-ltr input {
+ /* @noflip */
+ direction: ltr;
+}
+.sitedir-rtl textarea,
+.sitedir-rtl input {
+ /* @noflip */
+ direction: rtl;
+}
+
+/* User-Agent styles for new HTML5 elements */
+mark {
+ background-color: yellow;
+ color: black;
+}
+
+/* Input types that should follow user direction, like buttons */
+/* TODO: What about buttons in wikipage content ? */
+input[type="submit"],
+input[type="button"],
+input[type="reset"],
+input[type="file"] {
+ direction: ltr;
+}
+
+/* Override default values */
+textarea[dir="ltr"],
+input[dir="ltr"] {
+ /* @noflip */
+ direction: ltr;
+}
+textarea[dir="rtl"],
+input[dir="rtl"] {
+ /* @noflip */
+ direction: rtl;
+}
+
+/* Default style for semantic tags */
+abbr,
+acronym,
+.explain {
+ border-bottom: 1px dotted;
+ cursor: help;
+}
+
+/* Colored watchlist and recent changes numbers */
+.mw-plusminus-pos {
+ color: #006400; /* dark green */
+}
+.mw-plusminus-neg {
+ color: #8b0000; /* dark red */
+}
+.mw-plusminus-null {
+ color: #aaa; /* gray */
+}
+
+/**
+ * Links to redirects appear italicized on [[Special:AllPages]], [[Special:PrefixIndex]],
+ * [[Special:Watchlist/edit]] and in category listings.
+ */
+.allpagesredirect,
+.redirect-in-category,
+.watchlistredir {
+ font-style: italic;
+}
+
+/* Comment and username portions of RC entries */
+span.comment {
+ font-style: italic;
+}
+
+span.changedby {
+ font-size: 95%;
+}
+
+/* Math */
+.texvc {
+ direction: ltr;
+ unicode-bidi: embed;
+}
+img.tex {
+ vertical-align: middle;
+}
+span.texhtml {
+ font-family: serif;
+}
+
+/**
+ * Add a bit of margin space between the preview and the toolbar.
+ * This replaces the ugly
we used to insert into the page source
+ */
+#wikiPreview.ontop {
+ margin-bottom: 1em;
+}
+
+/* Stop floats from intruding into edit area in previews */
+#editform,
+#toolbar,
+#wpTextbox1 {
+ clear: both;
+}
+
+#toolbar img {
+ cursor: pointer;
+}
+
+/* Edit section links */
+/* Correct directionality when page dir is different from site/user dir */
+/* @noflip */
+.mw-content-ltr .editsection,
+.mw-content-rtl .mw-content-ltr .editsection {
+ float: right;
+ margin-left: 5px;
+}
+/* @noflip */
+.mw-content-rtl .editsection,
+.mw-content-ltr .mw-content-rtl .editsection {
+ float: left;
+ margin-right: 5px;
+}
+
+/**
+ * File description page
+ */
+
+div.mw-filepage-resolutioninfo {
+ font-size: smaller;
+}
+
+/**
+ * File histories
+ */
+h2#filehistory {
+ clear: both;
+}
+
+table.filehistory th,
+table.filehistory td {
+ vertical-align: top;
+}
+table.filehistory th {
+ text-align: left;
+}
+table.filehistory td.mw-imagepage-filesize,
+table.filehistory th.mw-imagepage-filesize {
+ white-space: nowrap;
+}
+
+table.filehistory td.filehistory-selected {
+ font-weight: bold;
+}
+
+/**
+ * Add a checkered background image on hover for file
+ * description pages. (bug 26470)
+ */
+.filehistory a img,
+#file img:hover {
+ /* @embed */
+ background: white url(images/Checker-16x16.png) repeat;
+}
+
+/**
+ * rev_deleted stuff
+ */
+li span.deleted,
+span.history-deleted {
+ text-decoration: line-through;
+ color: #888;
+ font-style: italic;
+}
+
+/**
+ * Patrol stuff
+ */
+.not-patrolled {
+ background-color: #ffa;
+}
+
+.unpatrolled {
+ font-weight: bold;
+ color: red;
+}
+
+div.patrollink {
+ font-size: 75%;
+ text-align: right;
+}
+
+/**
+ * Forms
+ */
+td.mw-label {
+ text-align: right;
+}
+td.mw-input {
+ text-align: left;
+}
+td.mw-submit {
+ text-align: left;
+}
+
+td.mw-label {
+ vertical-align: top;
+}
+.prefsection td.mw-label {
+ width: 20%;
+}
+.prefsection table {
+ width: 100%;
+}
+.prefsection table.mw-htmlform-matrix {
+ width: auto;
+}
+td.mw-submit {
+ white-space: nowrap;
+}
+
+table.mw-htmlform-nolabel td.mw-label {
+ width: 1px;
+}
+
+tr.mw-htmlform-vertical-label td.mw-label {
+ text-align: left !important;
+}
+
+.mw-htmlform-invalid-input td.mw-input input {
+ border-color: red;
+}
+
+.mw-htmlform-flatlist div.mw-htmlform-flatlist-item {
+ display: inline;
+ margin-right: 1em;
+ white-space: nowrap;
+}
+
+.mw-htmlform-matrix td {
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+}
+
+input#wpSummary {
+ width: 80%;
+ margin-bottom: 1em;
+}
+
+/**
+ * Image captions
+ */
+/* @noflip */
+.mw-content-ltr .thumbcaption {
+ text-align: left;
+}
+/* @noflip */
+.mw-content-rtl .thumbcaption {
+ text-align: right;
+}
+/* @noflip */
+.mw-content-ltr .magnify {
+ float: right;
+}
+/* @noflip */
+.mw-content-rtl .magnify {
+ float: left;
+}
+
+/**
+ * Categories
+ */
+#catlinks {
+ /**
+ * Overrides text justification (user preference)
+ * See bug 31990
+ */
+ text-align: left;
+}
+.catlinks ul {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ list-style-type: none;
+ list-style-image: none;
+ vertical-align: middle !ie;
+}
+
+.catlinks li {
+ display: inline-block;
+ line-height: 1.25em;
+ border-left: 1px solid #AAA;
+ margin: 0.125em 0;
+ padding: 0 0.5em;
+ zoom: 1;
+ display: inline !ie;
+}
+
+.catlinks li:first-child {
+ padding-left: 0.25em;
+ border-left: none;
+}
+
+/* (bug 5346) make category redirects italic */
+.catlinks li a.mw-redirect {
+ font-style: italic;
+}
+/**
+ * Hidden categories
+ */
+.mw-hidden-cats-hidden {
+ display: none;
+}
+.catlinks-allhidden {
+ display: none;
+}
+
+/* Convenience links to edit block, delete and protect reasons */
+p.mw-ipb-conveniencelinks,
+p.mw-protect-editreasons,
+p.mw-filedelete-editreasons,
+p.mw-delete-editreasons,
+p.mw-revdel-editreasons {
+ font-size: 90%;
+ text-align: right;
+}
+
+/**
+ * OpenSearch ajax suggestions
+ */
+.os-suggest {
+ overflow: auto;
+ overflow-x: hidden;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 0;
+ background-color: white;
+ border-style: solid;
+ border-color: #AAAAAA;
+ border-width: 1px;
+ z-index:99;
+ font-size:95%;
+}
+
+table.os-suggest-results {
+ font-size: 95%;
+ cursor: pointer;
+ border: 0;
+ border-collapse: collapse;
+ width: 100%;
+}
+
+.os-suggest-result,
+.os-suggest-result-hl {
+ white-space: nowrap;
+ background-color: white;
+ color: black;
+ padding: 2px;
+}
+.os-suggest-result-hl,
+.os-suggest-result-hl-webkit {
+ background-color: #4C59A6;
+ color: white;
+}
+
+.os-suggest-toggle {
+ position: relative;
+ left: 1ex;
+ font-size: 65%;
+}
+.os-suggest-toggle-def {
+ position: absolute;
+ top: 0;
+ left: 0;
+ font-size: 65%;
+ visibility: hidden;
+}
+
+/* Page history styling */
+
+/* The auto-generated edit comments */
+.autocomment {
+ color: gray;
+}
+#pagehistory .history-user {
+ margin-left: 0.4em;
+ margin-right: 0.2em;
+}
+#pagehistory span.minor {
+ font-weight: bold;
+}
+#pagehistory li {
+ border: 1px solid white;
+}
+#pagehistory li.selected {
+ background-color: #f9f9f9;
+ border: 1px dashed #aaa;
+}
+
+.mw-history-revisiondelete-button, #mw-fileduplicatesearch-icon {
+ float: right;
+}
+
+/** Generic minor/bot/newpage styling (recent changes) */
+.newpage,
+.minoredit,
+.botedit {
+ font-weight: bold;
+}
+
+#shared-image-dup,
+#shared-image-conflict {
+ font-style: italic;
+}
+
+/**
+ * Recreating deleted page warning
+ * Reupload file warning
+ * Page protection warning
+ * incl. log entries for these warnings
+ */
+div.mw-warning-with-logexcerpt {
+ padding: 3px;
+ margin-bottom: 3px;
+ border: 2px solid #2F6FAB;
+ clear: both;
+}
+div.mw-warning-with-logexcerpt ul li {
+ font-size: 90%;
+}
+
+/* (show/hide) revision deletion links */
+span.mw-revdelundel-link,
+strong.mw-revdelundel-link {
+ font-size: 90%;
+}
+span.mw-revdelundel-hidden,
+input.mw-revdelundel-hidden {
+ visibility: hidden;
+}
+
+td.mw-revdel-checkbox,
+th.mw-revdel-checkbox {
+ padding-right: 10px;
+ text-align: center;
+}
+
+/* red links; see bug 36276 */
+a.new {
+ color: #BA0000;
+}
+
+/* feed links */
+a.feedlink {
+ /* @embed */
+ background: url(images/feed-icon.png) center left no-repeat;
+ padding-left: 16px;
+}
+
+/* Plainlinks - this can be used to switch
+ * off special external link styling */
+.plainlinks a {
+ background: none !important;
+ padding: 0 !important;
+}
+/* External URLs should always be treated as LTR (bug 4330) */
+/* @noflip */ .rtl a.external.free,
+.rtl a.external.autonumber {
+ direction: ltr;
+ unicode-bidi: embed;
+}
+
+/**
+ * wikitable class for skinning normal tables
+ * keep in sync with commonPrint.css
+ */
+table.wikitable {
+ margin: 1em 0;
+ background-color: #f9f9f9;
+ border: 1px #aaa solid;
+ border-collapse: collapse;
+ color: black;
+}
+table.wikitable > tr > th,
+table.wikitable > tr > td,
+table.wikitable > * > tr > th,
+table.wikitable > * > tr > td {
+ border: 1px #aaa solid;
+ padding: 0.2em;
+}
+table.wikitable > tr > th,
+table.wikitable > * > tr > th {
+ background-color: #f2f2f2;
+ text-align: center;
+}
+table.wikitable > caption {
+ font-weight: bold;
+}
+
+/* hide initially collapsed collapsable tables */
+table.collapsed tr.collapsable {
+ display: none;
+}
+
+/* success and error messages */
+.success {
+ color: green;
+ font-size: larger;
+}
+.warning {
+ color: #FFA500; /* orange */
+ font-size: larger;
+}
+.error {
+ color: red;
+ font-size: larger;
+}
+.errorbox,
+.warningbox,
+.successbox {
+ font-size: larger;
+ border: 2px solid;
+ padding: .5em 1em;
+ float: left;
+ margin-bottom: 2em;
+ color: #000;
+}
+.errorbox {
+ border-color: red;
+ background-color: #fff2f2;
+}
+.warningbox {
+ border-color: #FF8C00; /* darkorange */
+ background-color: #FFFFC0;
+}
+.successbox {
+ border-color: green;
+ background-color: #dfd;
+}
+.errorbox h2,
+.warningbox h2,
+.successbox h2 {
+ font-size: 1em;
+ font-weight: bold;
+ display: inline;
+ margin: 0 .5em 0 0;
+ border: none;
+}
+
+/* general info/warning box for SP */
+.mw-infobox {
+ border: 2px solid #ff7f00;
+ margin: 0.5em;
+ clear: left;
+ overflow: hidden;
+}
+
+.mw-infobox-left {
+ margin: 7px;
+ float: left;
+ width: 35px;
+}
+
+.mw-infobox-right {
+ margin: 0.5em 0.5em 0.5em 49px;
+}
+
+/* Note on preview page */
+.previewnote {
+ color: #c00;
+ margin-bottom: 1em;
+}
+
+.previewnote p {
+ text-indent: 3em;
+ margin: 0.8em 0;
+}
+
+.visualClear {
+ clear: both;
+}
+
+#mw_trackbacks {
+ border: solid 1px #bbbbff;
+ background-color: #eeeeff;
+ padding: 0.2em;
+}
+
+/**
+ * Data table style
+ *
+ * Transparent table with suddle borders
+ * and blue row-highlighting.
+ */
+.mw-datatable {
+ border-collapse: collapse;
+}
+.mw-datatable,
+.mw-datatable td,
+.mw-datatable th {
+ border: 1px solid #aaaaaa;
+ padding: 0 0.15em 0 0.15em;
+}
+.mw-datatable th {
+ background-color: #ddddff;
+}
+.mw-datatable td {
+ background-color: #ffffff;
+}
+.mw-datatable tr:hover td {
+ background-color: #eeeeff;
+}
+
+
+/**
+ * TablePager tables generated by the TablePager PHP class
+ * in MediaWiki (e.g. Special:ListFiles).
+ */
+.TablePager {
+ min-width: 80%;
+}
+.TablePager_nav {
+ margin: 0 auto;
+}
+.TablePager_nav td {
+ padding: 3px;
+ text-align: center;
+}
+.TablePager_nav a {
+ text-decoration: none;
+}
+
+.imagelist td,
+.imagelist th {
+ white-space: nowrap;
+}
+.imagelist .TablePager_col_links {
+ background-color: #eeeeff;
+}
+.imagelist .TablePager_col_img_description {
+ white-space: normal;
+}
+.imagelist th.TablePager_sort {
+ background-color: #ccccff;
+}
+
+/* filetoc */
+ul#filetoc {
+ text-align: center;
+ border: 1px solid #aaaaaa;
+ background-color: #f9f9f9;
+ padding: 5px;
+ font-size: 95%;
+ margin-bottom: 0.5em;
+ margin-left: 0;
+ margin-right: 0;
+}
+
+#filetoc li {
+ display: inline;
+ list-style-type: none;
+ padding-right: 2em;
+}
+
+/* Classes for EXIF data display */
+table.mw_metadata {
+ font-size: 0.8em;
+ margin-left: 0.5em;
+ margin-bottom: 0.5em;
+ width: 400px;
+}
+
+table.mw_metadata caption {
+ font-weight: bold;
+}
+
+table.mw_metadata th {
+ font-weight: normal;
+}
+
+table.mw_metadata td {
+ padding: 0.1em;
+}
+
+table.mw_metadata {
+ border: none;
+ border-collapse: collapse;
+}
+
+table.mw_metadata td,
+table.mw_metadata th {
+ text-align: center;
+ border: 1px solid #aaaaaa;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+
+table.mw_metadata th {
+ background-color: #f9f9f9;
+}
+
+table.mw_metadata td {
+ background-color: #fcfcfc;
+}
+
+table.mw_metadata ul.metadata-langlist {
+ list-style-type: none;
+ list-style-image: none;
+ padding-right: 5px;
+ padding-left: 5px;
+ margin: 0;
+}
+
+/* Correct directionality when page dir is different from site/user dir */
+.mw-content-ltr ul,
+.mw-content-rtl .mw-content-ltr ul {
+ /* @noflip */
+ margin: 0.3em 0 0 1.6em;
+ padding: 0;
+}
+.mw-content-rtl ul,
+.mw-content-ltr .mw-content-rtl ul {
+ /* @noflip */
+ margin: 0.3em 1.6em 0 0;
+ padding: 0;
+}
+.mw-content-ltr ol,
+.mw-content-rtl .mw-content-ltr ol {
+ /* @noflip */
+ margin: 0.3em 0 0 3.2em;
+ padding: 0;
+}
+.mw-content-rtl ol,
+.mw-content-ltr .mw-content-rtl ol {
+ /* @noflip */
+ margin: 0.3em 3.2em 0 0;
+ padding: 0;
+}
+/* @noflip */
+.mw-content-ltr dd,
+.mw-content-rtl .mw-content-ltr dd {
+ margin-left: 1.6em;
+ margin-right: 0;
+}
+/* @noflip */
+.mw-content-rtl dd,
+.mw-content-ltr .mw-content-rtl dd {
+ margin-right: 1.6em;
+ margin-left: 0;
+}
+
+/* Galleries */
+/* These display attributes look nonsensical, but are needed to support IE and FF2 */
+/* Don't forget to update commonPrint.css */
+li.gallerybox {
+ vertical-align: top;
+ display: -moz-inline-box;
+ display: inline-block;
+}
+
+ul.gallery,
+li.gallerybox {
+ zoom: 1;
+ *display: inline;
+}
+
+ul.gallery {
+ margin: 2px;
+ padding: 2px;
+ display: block;
+}
+
+li.gallerycaption {
+ font-weight: bold;
+ text-align: center;
+ display: block;
+ word-wrap: break-word;
+}
+
+li.gallerybox div.thumb {
+ text-align: center;
+ border: 1px solid #ccc;
+ background-color: #f9f9f9;
+ margin: 2px;
+}
+
+li.gallerybox div.thumb img {
+ display: block;
+ margin: 0 auto;
+}
+
+div.gallerytext {
+ overflow: hidden;
+ font-size: 94%;
+ padding: 2px 4px;
+ word-wrap: break-word;
+}
+
+.mw-ajax-loader {
+ /* @embed */
+ background-image: url(images/ajax-loader.gif);
+ background-position: center center;
+ background-repeat: no-repeat;
+ padding: 16px;
+ position: relative;
+ top: -16px;
+}
+
+.mw-small-spinner {
+ padding: 10px !important;
+ margin-right: 0.6em;
+ /* @embed */
+ background-image: url(images/spinner.gif);
+ background-position: center center;
+ background-repeat: no-repeat;
+}
+
+/* Language specific height correction for titles. Ref Bug 29405 and Bug 30809 */
+/* Languages like hi or ml require slightly more vertical space to show diacritics properly */
+h1:lang(anp),
+h1:lang(as),
+h1:lang(bh), /* Macrolanguage, used on bh.wikipedia.org, should be removed one day */
+h1:lang(bho),
+h1:lang(bn),
+h1:lang(gu),
+h1:lang(hi),
+h1:lang(kn),
+h1:lang(ks),
+h1:lang(ml),
+h1:lang(mr),
+h1:lang(my),
+h1:lang(mai),
+h1:lang(ne),
+h1:lang(new),
+h1:lang(or),
+h1:lang(pa),
+h1:lang(pi),
+h1:lang(sa),
+h1:lang(ta),
+h1:lang(te) {
+ line-height: 1.6em !important;
+}
+h2:lang(anp), h3:lang(anp), h4:lang(anp), h5:lang(anp), h6:lang(anp),
+h2:lang(as), h3:lang(as), h4:lang(as), h5:lang(as), h6:lang(as),
+h2:lang(bho), h3:lang(bho), h4:lang(bho), h5:lang(bho), h6:lang(bho),
+h2:lang(bh), h3:lang(bh), h4:lang(bh), h5:lang(bh), h6:lang(bh),
+h2:lang(bn), h3:lang(bn), h4:lang(bn), h5:lang(bn), h6:lang(bn),
+h2:lang(gu), h3:lang(gu), h4:lang(gu), h5:lang(gu), h6:lang(gu),
+h2:lang(hi), h3:lang(hi), h4:lang(hi), h5:lang(hi), h6:lang(hi),
+h2:lang(kn), h3:lang(kn), h4:lang(kn), h5:lang(kn), h6:lang(kn),
+h2:lang(ks), h3:lang(ks), h4:lang(ks), h5:lang(ks), h6:lang(ks),
+h2:lang(ml), h3:lang(ml), h4:lang(ml), h5:lang(ml), h6:lang(ml),
+h2:lang(mr), h3:lang(mr), h4:lang(mr), h5:lang(mr), h6:lang(mr),
+h2:lang(my), h3:lang(my), h4:lang(my), h5:lang(my), h6:lang(my),
+h2:lang(mai), h3:lang(mai), h4:lang(mai), h5:lang(mai), h6:lang(mai),
+h2:lang(ne), h3:lang(ne), h4:lang(ne), h5:lang(ne), h6:lang(ne),
+h2:lang(new), h3:lang(new), h4:lang(new), h5:lang(new), h6:lang(new),
+h2:lang(or), h3:lang(or), h4:lang(or), h5:lang(or), h6:lang(or),
+h2:lang(pa), h3:lang(pa), h4:lang(pa), h5:lang(pa), h6:lang(pa),
+h2:lang(pi), h3:lang(pi), h4:lang(pi), h5:lang(pi), h6:lang(pi),
+h2:lang(sa), h3:lang(sa), h4:lang(sa), h5:lang(sa), h6:lang(sa),
+h2:lang(ta), h3:lang(ta), h4:lang(ta), h5:lang(ta), h6:lang(ta),
+h2:lang(te), h3:lang(te), h4:lang(te), h5:lang(te), h6:lang(te) {
+ line-height: 1.2em;
+}
+
+/* Localised ordered list numbering for some languages */
+ol:lang(bcc) li,
+ol:lang(bqi) li,
+ol:lang(fa) li,
+ol:lang(glk) li,
+ol:lang(kk-arab) li,
+ol:lang(mzn) li {
+ list-style-type: -moz-persian;
+ list-style-type: persian;
+}
+
+ol:lang(ckb) li {
+ list-style-type: -moz-arabic-indic;
+ list-style-type: arabic-indic;
+}
+
+ol:lang(hi) li,
+ol:lang(mr) li {
+ list-style-type: -moz-devanagari;
+ list-style-type: devanagari;
+}
+
+ol:lang(as) li,
+ol:lang(bn) li {
+ list-style-type: -moz-bengali;
+ list-style-type: bengali;
+}
+
+ol:lang(or) li {
+ list-style-type: -moz-oriya;
+ list-style-type: oriya;
+}
+
+#toc ul, .toc ul {
+ margin: .3em 0;
+}
+
+/* Correct directionality when page dir is different from site/user dir */
+/* @noflip */ .mw-content-ltr .toc ul,
+.mw-content-ltr #toc ul,
+.mw-content-rtl .mw-content-ltr .toc ul,
+.mw-content-rtl .mw-content-ltr #toc ul {
+ text-align: left;
+}
+/* @noflip */ .mw-content-rtl .toc ul,
+.mw-content-rtl #toc ul,
+.mw-content-ltr .mw-content-rtl .toc ul,
+.mw-content-ltr .mw-content-rtl #toc ul {
+ text-align: right;
+}
+/* @noflip */ .mw-content-ltr .toc ul ul,
+.mw-content-ltr #toc ul ul,
+.mw-content-rtl .mw-content-ltr .toc ul ul,
+.mw-content-rtl .mw-content-ltr #toc ul ul {
+ margin: 0 0 0 2em;
+}
+/* @noflip */ .mw-content-rtl .toc ul ul,
+.mw-content-rtl #toc ul ul,
+.mw-content-ltr .mw-content-rtl .toc ul ul,
+.mw-content-ltr .mw-content-rtl #toc ul ul {
+ margin: 0 2em 0 0;
+}
+
+#toc #toctitle,
+.toc #toctitle,
+#toc .toctitle,
+.toc .toctitle {
+ direction: ltr;
+}
+
+/* tooltip styles */
+.mw-help-field-hint {
+ display: none;
+ margin-left: 2px;
+ margin-bottom: -8px;
+ padding: 0 0 0 15px;
+ /* @embed */
+ background-image: url('images/help-question.gif');
+ background-position: left center;
+ background-repeat: no-repeat;
+ cursor: pointer;
+ font-size: .8em;
+ text-decoration: underline;
+ color: #0645ad;
+}
+.mw-help-field-hint:hover {
+ /* @embed */
+ background-image: url('images/help-question-hover.gif');
+}
+.mw-help-field-data {
+ display: block;
+ background-color: #d6f3ff;
+ padding:5px 8px 4px 8px;
+ border: 1px solid #5dc9f4;
+ margin-left: 20px;
+}
+.tipsy {
+ padding: 5px 5px 10px;
+ font-size: 12px;
+ position: absolute;
+ z-index: 100000;
+ overflow: visible;
+}
+.tipsy-inner {
+ padding: 5px 8px 4px 8px;
+ background-color: #d6f3ff;
+ color: black;
+ border: 1px solid #5dc9f4;
+ max-width: 300px;
+ text-align: left;
+}
+.tipsy-arrow {
+ position: absolute;
+ /* @embed */
+ background: url(images/tipsy-arrow.gif) no-repeat top left;
+ width: 13px;
+ height: 13px;
+}
+.tipsy-se .tipsy-arrow {
+ bottom: -2px;
+ right: 10px;
+ background-position: 0% 100%;
+}
+
+#mw-clearyourcache,
+#mw-sitecsspreview,
+#mw-sitejspreview,
+#mw-usercsspreview,
+#mw-userjspreview {
+ direction: ltr;
+ unicode-bidi: embed;
+}
+
+/* Correct user & content directionality when viewing a diff */
+.diff-currentversion-title,
+.diff {
+ direction: ltr;
+ unicode-bidi: embed;
+}
+/* @noflip */ .diff-contentalign-right td {
+ direction: rtl;
+ unicode-bidi: embed;
+}
+/* @noflip */ .diff-contentalign-left td {
+ direction: ltr;
+ unicode-bidi: embed;
+}
+.diff-otitle,
+.diff-ntitle,
+.diff-lineno {
+ direction: ltr !important;
+ unicode-bidi: embed;
+}
+
+#mw-revision-info,
+#mw-revision-info-current,
+#mw-revision-nav {
+ direction: ltr;
+ display: inline;
+}
+
+/* Images */
+
+/* @noflip */ div.tright,
+div.floatright,
+table.floatright {
+ clear: right;
+ float: right;
+}
+/* @noflip */ div.tleft,
+div.floatleft,
+table.floatleft {
+ float: left;
+ clear: left;
+}
+div.floatright,
+table.floatright,
+div.floatleft,
+table.floatleft {
+ position: relative;
+}
+
+/* bug 12205 */
+#mw-credits a {
+ unicode-bidi: embed;
+}
+
+/* Accessibility */
+.mw-jump,
+#jump-to-nav {
+ overflow: hidden;
+ height: 0;
+ zoom: 1; /* http://webaim.org/techniques/skipnav/#iequirk */
+}
+
+/* Print footer should be hidden by default in screen. */
+.printfooter {
+ display: none;
+}
+
+/* For developpers */
+.xdebug-error {
+ position: absolute;
+ z-index: 99;
+}
+
+.editsection, .toctoggle {
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
diff --git a/skins/common/upload.js b/skins/common/upload.js
new file mode 100644
index 0000000..df819e1
--- /dev/null
+++ b/skins/common/upload.js
@@ -0,0 +1,312 @@
+( function ( mw, $ ) {
+var ajaxUploadDestCheck = mw.config.get( 'wgAjaxUploadDestCheck' ),
+ fileExtensions = mw.config.get( 'wgFileExtensions' );
+
+window.licenseSelectorCheck = function() {
+ var selector = document.getElementById( "wpLicense" );
+ var selection = selector.options[selector.selectedIndex].value;
+ if( selector.selectedIndex > 0 ) {
+ if( selection == "" ) {
+ // Option disabled, but browser is broken and doesn't respect this
+ selector.selectedIndex = 0;
+ }
+ }
+ // We might show a preview
+ wgUploadLicenseObj.fetchPreview( selection );
+};
+
+function uploadSetup() {
+ // Disable URL box if the URL copy upload source type is not selected
+ var e = document.getElementById( 'wpSourceTypeurl' );
+ if( e ) {
+ if( !e.checked ) {
+ var ein = document.getElementById( 'wpUploadFileURL' );
+ if(ein)
+ ein.setAttribute( 'disabled', 'disabled' );
+ }
+ }
+
+ // For MSIE/Mac: non-breaking spaces cause the