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}
128