4 var doneIEAlphaFix
, doneIETransform
, expandedURLs
, fixalpha
, isMSIE55
,
5 relativeforfloats
, setrelative
;
7 isMSIE55
= window
.isMSIE55
= ( window
.showModalDialog
&& window
.clipboardData
&& window
.createPopup
);
8 doneIETransform
= window
.doneIETransform
= undefined;
9 doneIEAlphaFix
= window
.doneIEAlphaFix
= undefined;
11 window
.hookit = function () {
12 if ( !doneIETransform
&& document
.getElementById
&& document
.getElementById( 'bodyContent' ) ) {
13 doneIETransform
= true;
19 if ( document
.attachEvent
) {
20 document
.attachEvent( 'onreadystatechange', window
.hookit
);
23 // png alpha transparency fixes
24 fixalpha
= window
.fixalpha = function ( logoId
) {
26 if ( isMSIE55
&& !doneIEAlphaFix
) {
27 var bg
, imageUrl
, linkFix
, logoa
, logospan
, plogo
;
28 plogo
= document
.getElementById( logoId
|| 'p-logo' );
33 logoa
= plogo
.getElementsByTagName('a')[0];
38 bg
= logoa
.currentStyle
.backgroundImage
;
39 imageUrl
= bg
.substring( 5, bg
.length
- 2 );
41 doneIEAlphaFix
= true;
43 if ( imageUrl
.substr( imageUrl
.length
- 4 ).toLowerCase() === '.png' ) {
44 logospan
= logoa
.appendChild( document
.createElement( 'span' ) );
46 logoa
.style
.backgroundImage
= 'none';
47 logospan
.style
.filter
= 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl
+ ')';
48 logospan
.style
.height
= '100%';
49 logospan
.style
.position
= 'absolute';
50 logospan
.style
.width
= logoa
.currentStyle
.width
;
51 logospan
.style
.cursor
= 'hand';
52 // Center image with hack for IE5.5
53 if ( document
.documentElement
.dir
=== 'rtl' ) {
54 logospan
.style
.right
= '50%';
55 logospan
.style
.setExpression( 'marginRight', '"-" + (this.offsetWidth / 2) + "px"' );
57 logospan
.style
.left
= '50%';
58 logospan
.style
.setExpression( 'marginLeft', '"-" + (this.offsetWidth / 2) + "px"' );
60 logospan
.style
.top
= '50%';
61 logospan
.style
.setExpression( 'marginTop', '"-" + (this.offsetHeight / 2) + "px"' );
63 linkFix
= logoa
.appendChild( logoa
.cloneNode() );
64 linkFix
.style
.position
= 'absolute';
65 linkFix
.style
.height
= '100%';
66 linkFix
.style
.width
= '100%';
76 // fix ie6 disappering float bug
77 relativeforfloats
= window
.relativeforfloats = function () {
79 bc
= document
.getElementById( 'bodyContent' );
81 tables
= bc
.getElementsByTagName( 'table' );
82 divs
= bc
.getElementsByTagName( 'div' );
83 setrelative( tables
);
88 setrelative
= window
.setrelative = function ( nodes
) {
90 while ( i
< nodes
.length
) {
91 if( ( ( nodes
[i
].style
.float && nodes
[i
].style
.float !== ( 'none' ) ||
92 ( nodes
[i
].align
&& nodes
[i
].align
!== ( 'none' ) ) ) &&
93 ( !nodes
[i
].style
.position
|| nodes
[i
].style
.position
!== 'relative' ) ) )
95 nodes
[i
].style
.position
= 'relative';
101 // Expand links for printing
102 String
.prototype.hasClass = function ( classWanted
) {
103 var i
= 0, classArr
= this.split(/\s/);
104 for ( i
= 0; i
< classArr
.length
; i
++ ) {
105 if ( classArr
[i
].toLowerCase() === classWanted
.toLowerCase() ) {
112 expandedURLs
= window
.expandedURLs
= undefined;
114 window
.onbeforeprint = function () {
115 var allLinks
, contentEl
, expandedLink
, expandedText
, i
;
118 contentEl
= document
.getElementById( 'content' );
121 allLinks
= contentEl
.getElementsByTagName( 'a' );
123 for ( i
= 0; i
< allLinks
.length
; i
++ ) {
124 if ( allLinks
[i
].className
.hasClass( 'external' ) && !allLinks
[i
].className
.hasClass( 'free' ) ) {
125 expandedLink
= document
.createElement( 'span' );
126 expandedText
= document
.createTextNode( ' (' + allLinks
[i
].href
+ ')' );
127 expandedLink
.appendChild( expandedText
);
128 allLinks
[i
].parentNode
.insertBefore( expandedLink
, allLinks
[i
].nextSibling
);
129 expandedURLs
[i
] = expandedLink
;
135 window
.onafterprint = function() {
136 for ( var i
= 0; i
< expandedURLs
.length
; i
++ ) {
137 if ( expandedURLs
[i
] ) {
138 expandedURLs
[i
].removeNode( true );
143 }( mediaWiki
, jQuery
) );