2 * Legacy emulation for the now depricated skins/common/IEFixes.js
4 * Internet Explorer JavaScript fixes
12 * Expand links for printing
14 String
.prototype.hasClass = function( classWanted
) {
15 var classArr
= this.split(/\s/);
16 for ( var i
= 0; i
< classArr
.length
; i
++ ) {
17 if ( classArr
[i
].toLowerCase() == classWanted
.toLowerCase() ) {
26 $.extend( true, mw
.legacy
, {
28 /* Global Variables */
30 'isMSIE55': ( window
.showModalDialog
&& window
.clipboardData
&& window
.createPopup
),
31 'doneIETransform': null,
32 'doneIEAlphaFix': null,
37 'hookit': function() {
38 if ( !doneIETransform
&& document
.getElementById
&& document
.getElementById( 'bodyContent' ) ) {
39 doneIETransform
= true;
45 * Fixes PNG alpha transparency
47 function fixalpha( logoId
) {
49 if ( isMSIE55
&& !doneIEAlphaFix
) {
50 var plogo
= document
.getElementById( logoId
|| 'p-logo' );
54 var logoa
= plogo
.getElementsByTagName('a')[0];
58 var bg
= logoa
.currentStyle
.backgroundImage
;
59 var imageUrl
= bg
.substring( 5, bg
.length
- 2 );
60 doneIEAlphaFix
= true;
61 if ( imageUrl
.substr( imageUrl
.length
- 4 ).toLowerCase() == '.png' ) {
62 var logospan
= logoa
.appendChild( document
.createElement( 'span' ) );
63 logoa
.style
.backgroundImage
= 'none';
64 logospan
.style
.filter
= 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl
+ ')';
65 logospan
.style
.height
= '100%';
66 logospan
.style
.position
= 'absolute';
67 logospan
.style
.width
= logoa
.currentStyle
.width
;
68 logospan
.style
.cursor
= 'hand';
69 // Center image with hack for IE5.5
70 if ( document
.documentElement
.dir
== 'rtl' ) {
71 logospan
.style
.right
= '50%';
72 logospan
.style
.setExpression( 'marginRight', '"-" + (this.offsetWidth / 2) + "px"' );
74 logospan
.style
.left
= '50%';
75 logospan
.style
.setExpression( 'marginLeft', '"-" + (this.offsetWidth / 2) + "px"' );
77 logospan
.style
.top
= '50%';
78 logospan
.style
.setExpression( 'marginTop', '"-" + (this.offsetHeight / 2) + "px"' );
79 var linkFix
= logoa
.appendChild( logoa
.cloneNode() );
80 linkFix
.style
.position
= 'absolute';
81 linkFix
.style
.height
= '100%';
82 linkFix
.style
.width
= '100%';
87 * Fixes IE6 disappering float bug
89 'relativeforfloats': function() {
90 var bc
= document
.getElementById( 'bodyContent' );
92 var tables
= bc
.getElementsByTagName( 'table' );
93 var divs
= bc
.getElementsByTagName( 'div' );
95 setrelative( tables
);
98 'setrelative': function ( nodes
) {
100 while ( i
< nodes
.length
) {
101 if( ( ( nodes
[i
].style
.float && nodes
[i
].style
.float != ( 'none' ) ||
102 ( nodes
[i
].align
&& nodes
[i
].align
!= ( 'none' ) ) ) &&
103 ( !nodes
[i
].style
.position
|| nodes
[i
].style
.position
!= 'relative' ) ) )
105 nodes
[i
].style
.position
= 'relative';
110 'onbeforeprint': function() {
112 var contentEl
= document
.getElementById( 'content' );
114 var allLinks
= contentEl
.getElementsByTagName( 'a' );
115 for ( var i
= 0; i
< allLinks
.length
; i
++ ) {
116 if ( allLinks
[i
].className
.hasClass( 'external' ) && !allLinks
[i
].className
.hasClass( 'free' ) ) {
117 var expandedLink
= document
.createElement( 'span' );
118 var expandedText
= document
.createTextNode( ' (' + allLinks
[i
].href
+ ')' );
119 expandedLink
.appendChild( expandedText
);
120 allLinks
[i
].parentNode
.insertBefore( expandedLink
, allLinks
[i
].nextSibling
);
121 expandedURLs
[i
] = expandedLink
;
126 'onafterprint': function() {
127 for ( var i
= 0; i
< expandedURLs
.length
; i
++ ) {
128 if ( expandedURLs
[i
] ) {
129 expandedURLs
[i
].removeNode( true );
137 $( document
).ready( function() {
141 } )( jQuery
, mediaWiki
);