2 * IE fixes javascript loaded by wikibits.js for IE <= 6.0
4 /*global isMSIE55:true, doneIETransform:true, doneIEAlphaFix:true */
5 /*global hookit:true, fixalpha:true, relativeforfloats:true, setrelative:true */
8 var expandedURLs
, hasClass
;
10 // Also returns true for IE6, 7, 8, 9 and 10. createPopup is removed in IE11.
11 // Good thing this is only loaded for IE <= 6 by wikibits.
12 // Might as well set it to true.
13 isMSIE55
= ( window
.showModalDialog
&& window
.clipboardData
&& window
.createPopup
);
14 doneIETransform
= false;
15 doneIEAlphaFix
= false;
17 hookit = function () {
18 if ( !doneIETransform
&& document
.getElementById
&& document
.getElementById( 'bodyContent' ) ) {
19 doneIETransform
= true;
25 if ( document
.attachEvent
) {
26 document
.attachEvent( 'onreadystatechange', hookit
);
29 // png alpha transparency fixes
30 fixalpha = function ( logoId
) {
32 if ( isMSIE55
&& !doneIEAlphaFix
) {
33 var bg
, imageUrl
, linkFix
, logoa
, logospan
, plogo
;
34 plogo
= document
.getElementById( logoId
|| 'p-logo' );
39 logoa
= plogo
.getElementsByTagName('a')[0];
44 bg
= logoa
.currentStyle
.backgroundImage
;
45 imageUrl
= bg
.substring( 5, bg
.length
- 2 );
47 doneIEAlphaFix
= true;
49 if ( imageUrl
.substr( imageUrl
.length
- 4 ).toLowerCase() === '.png' ) {
50 logospan
= logoa
.appendChild( document
.createElement( 'span' ) );
52 logoa
.style
.backgroundImage
= 'none';
53 logospan
.style
.filter
= 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl
+ ')';
54 logospan
.style
.height
= '100%';
55 logospan
.style
.position
= 'absolute';
56 logospan
.style
.width
= logoa
.currentStyle
.width
;
57 logospan
.style
.cursor
= 'hand';
58 // Center image with hack for IE5.5
59 if ( document
.documentElement
.dir
=== 'rtl' ) {
60 logospan
.style
.right
= '50%';
61 logospan
.style
.setExpression( 'marginRight', '"-" + (this.offsetWidth / 2) + "px"' );
63 logospan
.style
.left
= '50%';
64 logospan
.style
.setExpression( 'marginLeft', '"-" + (this.offsetWidth / 2) + "px"' );
66 logospan
.style
.top
= '50%';
67 logospan
.style
.setExpression( 'marginTop', '"-" + (this.offsetHeight / 2) + "px"' );
69 linkFix
= logoa
.appendChild( logoa
.cloneNode() );
70 linkFix
.style
.position
= 'absolute';
71 linkFix
.style
.height
= '100%';
72 linkFix
.style
.width
= '100%';
82 // fix ie6 disappering float bug
83 relativeforfloats = function () {
85 bc
= document
.getElementById( 'bodyContent' );
87 tables
= bc
.getElementsByTagName( 'table' );
88 divs
= bc
.getElementsByTagName( 'div' );
89 setrelative( tables
);
94 setrelative = function ( nodes
) {
96 while ( i
< nodes
.length
) {
97 if ( ( ( nodes
[i
].style
['float'] && nodes
[i
].style
['float'] !== ( 'none' ) ||
98 ( nodes
[i
].align
&& nodes
[i
].align
!== ( 'none' ) ) ) &&
99 ( !nodes
[i
].style
.position
|| nodes
[i
].style
.position
!== 'relative' ) ) )
101 nodes
[i
].style
.position
= 'relative';
107 // Expand links for printing
108 hasClass = function ( classText
, classWanted
) {
109 var i
= 0, classArr
= classText
.split(/\s/);
110 for ( i
= 0; i
< classArr
.length
; i
++ ) {
111 if ( classArr
[i
].toLowerCase() === classWanted
.toLowerCase() ) {
118 window
.onbeforeprint = function () {
119 var allLinks
, contentEl
, expandedLink
, expandedText
, i
;
122 contentEl
= document
.getElementById( 'content' );
125 allLinks
= contentEl
.getElementsByTagName( 'a' );
127 for ( i
= 0; i
< allLinks
.length
; i
++ ) {
128 if ( hasClass( allLinks
[i
].className
, 'external' ) && !hasClass( allLinks
[i
].className
, 'free' ) ) {
129 expandedLink
= document
.createElement( 'span' );
130 expandedText
= document
.createTextNode( ' (' + allLinks
[i
].href
+ ')' );
131 expandedLink
.appendChild( expandedText
);
132 allLinks
[i
].parentNode
.insertBefore( expandedLink
, allLinks
[i
].nextSibling
);
133 expandedURLs
[i
] = expandedLink
;
139 window
.onafterprint = function () {
140 for ( var i
= 0; i
< expandedURLs
.length
; i
++ ) {
141 if ( expandedURLs
[i
] ) {
142 expandedURLs
[i
].removeNode( true );
147 }( mediaWiki
, jQuery
) );