source: documentation/trunk/packages/templates/greenstone-monobook/static/3rd/wikipedia/IEFixes.js@ 30114

Last change on this file since 30114 was 30114, checked in by jmt12, 9 years ago

Updated Greenstone customizations for Detritus, but rearranged to move into separate plugin. Initial checkin of plugins, template, special wiki pages.

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