Kill a couple of <font> tags
[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 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 }