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