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