BUG#634, Patch#2.1: Patch by Tom Gilder. Avoids flickering logo in MSIE 5.5 and newer
[lhc/web/wiklou.git] / skins / common / IEFixes.js
1 // IE fixes javascript
2
3 var isMSIE55 = (window.showModalDialog && window.clipboardData && window.createPopup);
4 var doneIETransform;
5
6 if (document.attachEvent)
7 document.attachEvent('onreadystatechange', hookit);
8
9 function hookit() {
10 if (!doneIETransform && document.getElementById && document.getElementById('bodyContent')) {
11 doneIETransform = true;
12 fixalpha();
13 relativeforfloats();
14 }
15 }
16
17 // png alpha transparency fixes
18 function fixalpha() {
19 // bg
20 if (isMSIE55) {
21 var plogo = document.getElementById('p-logo');
22 var logoa = plogo.getElementsByTagName('a')[0];
23 var bg = logoa.currentStyle.backgroundImage;
24 var imageUrl = bg.substring(5, bg.length-2);
25
26 if (imageUrl.substr(imageUrl.length-4).toLowerCase() == '.png') {
27 var logospan = logoa.appendChild(document.createElement('span'));
28
29 logoa.style.backgroundImage = 'none';
30 logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='+imageUrl+')';
31 logospan.style.height = '100%';
32 logospan.style.position = 'absolute';
33 logospan.style.width = '100%';
34 logospan.style.cursor = 'hand';
35 // Center image with hack for IE5.5
36 logospan.style.left = '50%';
37 logospan.style.setExpression('marginLeft', '"-" + (this.offsetWidth / 2) + "px"');
38 }
39 }
40 }
41
42 // fix ie6 disappering float bug
43 function relativeforfloats() {
44 var bc = document.getElementById('bodyContent');
45 if (bc) {
46 var tables = bc.getElementsByTagName('table');
47 var divs = bc.getElementsByTagName('div');
48 }
49 setrelative(tables);
50 setrelative(divs);
51 }
52 function setrelative (nodes) {
53 var i = 0;
54 while (i < nodes.length) {
55 if(((nodes[i].style.float && nodes[i].style.float != ('none') ||
56 (nodes[i].align && nodes[i].align != ('none'))) &&
57 (!nodes[i].style.position || nodes[i].style.position != 'relative')))
58 {
59 nodes[i].style.position = 'relative';
60 }
61 i++;
62 }
63 }