1 // IE fixes javascript loaded by wikibits.js for IE <= 6.0
4 var doneIEAlphaFix
, doneIETransform
, expandedURLs
, fixalpha
, isMSIE55
,
5 relativeforfloats
, setrelative
, hasClass
;
7 // Also returns true for IE6, 7, 8, 9 and 10. createPopup is removed in IE11.
8 // Good thing this is only loaded for IE <= 6 by wikibits.
9 // Might as well set it to true.
10 isMSIE55
= window
.isMSIE55
= ( window
.showModalDialog
&& window
.clipboardData
&& window
.createPopup
);
11 doneIETransform
= window
.doneIETransform
= undefined;
12 doneIEAlphaFix
= window
.doneIEAlphaFix
= undefined;
14 window
.hookit = function () {
15 if ( !doneIETransform
&& document
.getElementById
&& document
.getElementById( 'bodyContent' ) ) {
16 doneIETransform
= true;
22 if ( document
.attachEvent
) {
23 document
.attachEvent( 'onreadystatechange', window
.hookit
);
26 // png alpha transparency fixes
27 fixalpha
= window
.fixalpha = function ( logoId
) {
29 if ( isMSIE55
&& !doneIEAlphaFix
) {
30 var bg
, imageUrl
, linkFix
, logoa
, logospan
, plogo
;
31 plogo
= document
.getElementById( logoId
|| 'p-logo' );
36 logoa
= plogo
.getElementsByTagName('a')[0];
41 bg
= logoa
.currentStyle
.backgroundImage
;
42 imageUrl
= bg
.substring( 5, bg
.length
- 2 );
44 doneIEAlphaFix
= true;
46 if ( imageUrl
.substr( imageUrl
.length
- 4 ).toLowerCase() === '.png' ) {
47 logospan
= logoa
.appendChild( document
.createElement( 'span' ) );
49 logoa
.style
.backgroundImage
= 'none';
50 logospan
.style
.filter
= 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl
+ ')';
51 logospan
.style
.height
= '100%';
52 logospan
.style
.position
= 'absolute';
53 logospan
.style
.width
= logoa
.currentStyle
.width
;
54 logospan
.style
.cursor
= 'hand';
55 // Center image with hack for IE5.5
56 if ( document
.documentElement
.dir
=== 'rtl' ) {
57 logospan
.style
.right
= '50%';
58 logospan
.style
.setExpression( 'marginRight', '"-" + (this.offsetWidth / 2) + "px"' );
60 logospan
.style
.left
= '50%';
61 logospan
.style
.setExpression( 'marginLeft', '"-" + (this.offsetWidth / 2) + "px"' );
63 logospan
.style
.top
= '50%';
64 logospan
.style
.setExpression( 'marginTop', '"-" + (this.offsetHeight / 2) + "px"' );
66 linkFix
= logoa
.appendChild( logoa
.cloneNode() );
67 linkFix
.style
.position
= 'absolute';
68 linkFix
.style
.height
= '100%';
69 linkFix
.style
.width
= '100%';
79 // fix ie6 disappering float bug
80 relativeforfloats
= window
.relativeforfloats = function () {
82 bc
= document
.getElementById( 'bodyContent' );
84 tables
= bc
.getElementsByTagName( 'table' );
85 divs
= bc
.getElementsByTagName( 'div' );
86 setrelative( tables
);
91 setrelative
= window
.setrelative = function ( nodes
) {
93 while ( i
< nodes
.length
) {
94 if ( ( ( nodes
[i
].style
.float && nodes
[i
].style
.float !== ( 'none' ) ||
95 ( nodes
[i
].align
&& nodes
[i
].align
!== ( 'none' ) ) ) &&
96 ( !nodes
[i
].style
.position
|| nodes
[i
].style
.position
!== 'relative' ) ) )
98 nodes
[i
].style
.position
= 'relative';
104 // Expand links for printing
105 hasClass = function ( classText
, classWanted
) {
106 var i
= 0, classArr
= classText
.split(/\s/);
107 for ( i
= 0; i
< classArr
.length
; i
++ ) {
108 if ( classArr
[i
].toLowerCase() === classWanted
.toLowerCase() ) {
115 expandedURLs
= window
.expandedURLs
= undefined;
117 window
.onbeforeprint = function () {
118 var allLinks
, contentEl
, expandedLink
, expandedText
, i
;
121 contentEl
= document
.getElementById( 'content' );
124 allLinks
= contentEl
.getElementsByTagName( 'a' );
126 for ( i
= 0; i
< allLinks
.length
; i
++ ) {
127 if ( hasClass( allLinks
[i
].className
, 'external' ) && !hasClass( allLinks
[i
].className
, 'free' ) ) {
128 expandedLink
= document
.createElement( 'span' );
129 expandedText
= document
.createTextNode( ' (' + allLinks
[i
].href
+ ')' );
130 expandedLink
.appendChild( expandedText
);
131 allLinks
[i
].parentNode
.insertBefore( expandedLink
, allLinks
[i
].nextSibling
);
132 expandedURLs
[i
] = expandedLink
;
138 window
.onafterprint = function () {
139 for ( var i
= 0; i
< expandedURLs
.length
; i
++ ) {
140 if ( expandedURLs
[i
] ) {
141 expandedURLs
[i
].removeNode( true );
146 }( mediaWiki
, jQuery
) );