summaryrefslogtreecommitdiffstats
path: root/skins/common/IEFixes.js
diff options
context:
space:
mode:
authorNicolas Vigier <boklm@mageia.org>2011-10-24 18:01:35 +0000
committerNicolas Vigier <boklm@mageia.org>2011-10-24 18:01:35 +0000
commit246b38834224f9575f7b22cf84428ff615cb5acd (patch)
tree9e856efbb5a8f14faedf83432687b2a4bef5c493 /skins/common/IEFixes.js
downloadmediawiki-246b38834224f9575f7b22cf84428ff615cb5acd.tar
mediawiki-246b38834224f9575f7b22cf84428ff615cb5acd.tar.gz
mediawiki-246b38834224f9575f7b22cf84428ff615cb5acd.tar.bz2
mediawiki-246b38834224f9575f7b22cf84428ff615cb5acd.tar.xz
mediawiki-246b38834224f9575f7b22cf84428ff615cb5acd.zip
add mediawiki themes
Diffstat (limited to 'skins/common/IEFixes.js')
-rw-r--r--skins/common/IEFixes.js128
1 files changed, 128 insertions, 0 deletions
diff --git a/skins/common/IEFixes.js b/skins/common/IEFixes.js
new file mode 100644
index 0000000..762d7a7
--- /dev/null
+++ b/skins/common/IEFixes.js
@@ -0,0 +1,128 @@
+// IE fixes javascript
+
+var isMSIE55 = ( window.showModalDialog && window.clipboardData && window.createPopup );
+var doneIETransform;
+var doneIEAlphaFix;
+
+if ( document.attachEvent ) {
+ document.attachEvent( 'onreadystatechange', hookit );
+}
+
+function hookit() {
+ if ( !doneIETransform && document.getElementById && document.getElementById( 'bodyContent' ) ) {
+ doneIETransform = true;
+ relativeforfloats();
+ fixalpha();
+ }
+}
+
+// png alpha transparency fixes
+function fixalpha( 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%';
+ }
+ }
+}
+
+// fix ie6 disappering float bug
+function relativeforfloats() {
+ var bc = document.getElementById( 'bodyContent' );
+ if ( bc ) {
+ var tables = bc.getElementsByTagName( 'table' );
+ var divs = bc.getElementsByTagName( 'div' );
+ }
+ setrelative( tables );
+ setrelative( divs );
+}
+function setrelative( 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;
+}
+
+var expandedURLs;
+
+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;
+ }
+ }
+ }
+}
+
+onafterprint = function() {
+ for ( var i = 0; i < expandedURLs.length; i++ ) {
+ if ( expandedURLs[i] ) {
+ expandedURLs[i].removeNode( true );
+ }
+ }
+}