]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - skins/common/IEFixes.js
MediaWiki 1.5.8 (initial commit)
[autoinstallsdev/mediawiki.git] / skins / common / IEFixes.js
1 // IE fixes javascript
2
3 var isMSIE55 = (window.showModalDialog && window.clipboardData && window.createPopup);
4 var doneIETransform;
5 var doneIEAlphaFix;
6
7 if (document.attachEvent)
8   document.attachEvent('onreadystatechange', hookit);
9
10 function hookit() {
11     if (!doneIETransform && document.getElementById && document.getElementById('bodyContent')) {
12         doneIETransform = true;
13         relativeforfloats();
14         fixalpha();
15     }
16 }
17
18 // png alpha transparency fixes
19 function fixalpha() {
20     // bg
21     if (isMSIE55 && !doneIEAlphaFix)
22     {
23         doneIEAlphaFix = true;
24         var plogo = document.getElementById('p-logo');
25         if (!plogo) return;
26
27         var logoa = plogo.getElementsByTagName('a')[0];
28         if (!logoa) return;
29
30         var bg = logoa.currentStyle.backgroundImage;
31         var imageUrl = bg.substring(5, bg.length-2);
32
33         if (imageUrl.substr(imageUrl.length-4).toLowerCase() == '.png') {
34             var logospan = logoa.appendChild(document.createElement('span'));
35            
36             logoa.style.backgroundImage = 'none';
37             logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl + ')';
38             logospan.style.height = '100%';
39             logospan.style.position = 'absolute';
40             logospan.style.width = logoa.currentStyle.width;
41             logospan.style.cursor = 'hand';
42             // Center image with hack for IE5.5
43             if (document.documentElement.dir == "rtl") 
44             {
45               logospan.style.right = '50%';
46               logospan.style.setExpression('marginRight', '"-" + (this.offsetWidth / 2) + "px"');
47             }
48             else
49             {
50               logospan.style.left = '50%';
51               logospan.style.setExpression('marginLeft', '"-" + (this.offsetWidth / 2) + "px"');
52             }
53             logospan.style.top = '50%';
54             logospan.style.setExpression('marginTop', '"-" + (this.offsetHeight / 2) + "px"');
55  
56             var linkFix = logoa.appendChild(logoa.cloneNode());
57             linkFix.style.position = 'absolute';
58             linkFix.style.height = '100%';
59             linkFix.style.width = '100%';
60         }
61     }
62 }
63
64 // fix ie6 disappering float bug
65 function relativeforfloats() {
66     var bc = document.getElementById('bodyContent');
67     if (bc) {
68         var tables = bc.getElementsByTagName('table');
69         var divs = bc.getElementsByTagName('div');
70     }
71     setrelative(tables);
72     setrelative(divs);
73 }
74 function setrelative (nodes) {
75     var i = 0;
76     while (i < nodes.length) {
77         if(((nodes[i].style.float && nodes[i].style.float != ('none') ||
78         (nodes[i].align && nodes[i].align != ('none'))) &&
79         (!nodes[i].style.position || nodes[i].style.position != 'relative'))) 
80         {
81             nodes[i].style.position = 'relative';
82         }
83         i++;
84     }
85 }
86
87
88 // Expand links for printing
89
90 String.prototype.hasClass = function(classWanted)
91 {
92     var classArr = this.split(/\s/);
93     for (var i=0; i<classArr.length; i++)
94       if (classArr[i].toLowerCase() == classWanted.toLowerCase()) return true;
95     return false;
96 }
97
98 var expandedURLs;
99
100 onbeforeprint = function() { 
101     expandedURLs = [];
102
103     var contentEl = document.getElementById("content");
104
105     if (contentEl)
106     {
107       var allLinks = contentEl.getElementsByTagName("a");
108
109       for (var i=0; i < allLinks.length; i++) {
110           if (allLinks[i].className.hasClass("external") && !allLinks[i].className.hasClass("free")) {
111               var expandedLink = document.createElement("span");
112               var expandedText = document.createTextNode(" (" + allLinks[i].href + ")");
113               expandedLink.appendChild(expandedText);
114               allLinks[i].parentNode.insertBefore(expandedLink, allLinks[i].nextSibling);
115               expandedURLs[i] = expandedLink;
116           }
117       }
118    }
119 }
120
121 onafterprint = function()
122 {
123     for (var i=0; i < expandedURLs.length; i++)
124         if (expandedURLs[i])
125             expandedURLs[i].removeNode(true);
126 }