And while I'm a it, moved $wgLivePasswordStrengthChecks with other similar settings
[lhc/web/wiklou.git] / resources / mediawiki / legacy / mediawiki.legacy.IEFixes.js
1 /*
2 * Legacy emulation for the now depricated skins/common/IEFixes.js
3 *
4 * Internet Explorer JavaScript fixes
5 */
6
7 ( function( $, mw ) {
8
9 /* Support */
10
11 /**
12 * Expand links for printing
13 */
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() ) {
18 return true;
19 }
20 }
21 return false;
22 }
23
24 /* Extension */
25
26 $.extend( true, mw.legacy, {
27
28 /* Global Variables */
29
30 'isMSIE55': ( window.showModalDialog && window.clipboardData && window.createPopup ),
31 'doneIETransform': null,
32 'doneIEAlphaFix': null,
33 'expandedURLs': null,
34
35 /* Functions */
36
37 'hookit': function() {
38 if ( !doneIETransform && document.getElementById && document.getElementById( 'bodyContent' ) ) {
39 doneIETransform = true;
40 relativeforfloats();
41 fixalpha();
42 }
43 },
44 /**
45 * Fixes PNG alpha transparency
46 */
47 function fixalpha( logoId ) {
48 // bg
49 if ( isMSIE55 && !doneIEAlphaFix ) {
50 var plogo = document.getElementById( logoId || 'p-logo' );
51 if ( !plogo ) {
52 return;
53 }
54 var logoa = plogo.getElementsByTagName('a')[0];
55 if ( !logoa ) {
56 return;
57 }
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"' );
73 } else {
74 logospan.style.left = '50%';
75 logospan.style.setExpression( 'marginLeft', '"-" + (this.offsetWidth / 2) + "px"' );
76 }
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%';
83 }
84 }
85 },
86 /*
87 * Fixes IE6 disappering float bug
88 */
89 'relativeforfloats': function() {
90 var bc = document.getElementById( 'bodyContent' );
91 if ( bc ) {
92 var tables = bc.getElementsByTagName( 'table' );
93 var divs = bc.getElementsByTagName( 'div' );
94 }
95 setrelative( tables );
96 setrelative( divs );
97 },
98 'setrelative': function ( nodes ) {
99 var i = 0;
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' ) ) )
104 {
105 nodes[i].style.position = 'relative';
106 }
107 i++;
108 }
109 },
110 'onbeforeprint': function() {
111 expandedURLs = [];
112 var contentEl = document.getElementById( 'content' );
113 if ( contentEl ) {
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;
122 }
123 }
124 }
125 },
126 'onafterprint': function() {
127 for ( var i = 0; i < expandedURLs.length; i++ ) {
128 if ( expandedURLs[i] ) {
129 expandedURLs[i].removeNode( true );
130 }
131 }
132 }
133 } );
134
135 /* Initialization */
136
137 $( document ).ready( function() {
138 mw.legacy.hookit();
139 } );
140
141 } )( jQuery, mediaWiki );