diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2006-10-11 18:12:39 +0000 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2006-10-11 18:12:39 +0000 |
commit | 183851b06bd6c52f3cae5375f433da720d410447 (patch) | |
tree | a477257decbf3360127f6739c2f9d0ec57a03d39 /skins/common/IEFixes.js |
MediaWiki 1.7.1 wiederhergestellt
Diffstat (limited to 'skins/common/IEFixes.js')
-rw-r--r-- | skins/common/IEFixes.js | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/skins/common/IEFixes.js b/skins/common/IEFixes.js new file mode 100644 index 00000000..9c25adf0 --- /dev/null +++ b/skins/common/IEFixes.js @@ -0,0 +1,127 @@ +// IE fixes javascript + +var isMSIE55 = (window.showModalDialog && window.clipboardData && window.createPopup); +var doneIETransform; +var doneIEAlphaFix; + +if (document.attachEvent) + document.attachEvent('onreadystatechange', hookit); + +function hookit() { + if (!doneIETransform && document.getElementById && document.getElementById('bodyContent')) { + doneIETransform = true; + relativeforfloats(); + fixalpha(); + } +} + +// png alpha transparency fixes +function fixalpha() { + // bg + if (isMSIE55 && !doneIEAlphaFix) + { + var plogo = document.getElementById('p-logo'); + if (!plogo) return; + + var logoa = plogo.getElementsByTagName('a')[0]; + if (!logoa) return; + + var bg = logoa.currentStyle.backgroundImage; + var imageUrl = bg.substring(5, bg.length-2); + + doneIEAlphaFix = true; + + if (imageUrl.substr(imageUrl.length-4).toLowerCase() == '.png') { + var logospan = logoa.appendChild(document.createElement('span')); + + logoa.style.backgroundImage = 'none'; + logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl + ')'; + logospan.style.height = '100%'; + logospan.style.position = 'absolute'; + logospan.style.width = logoa.currentStyle.width; + logospan.style.cursor = 'hand'; + // Center image with hack for IE5.5 + if (document.documentElement.dir == "rtl") + { + logospan.style.right = '50%'; + logospan.style.setExpression('marginRight', '"-" + (this.offsetWidth / 2) + "px"'); + } + else + { + logospan.style.left = '50%'; + logospan.style.setExpression('marginLeft', '"-" + (this.offsetWidth / 2) + "px"'); + } + logospan.style.top = '50%'; + logospan.style.setExpression('marginTop', '"-" + (this.offsetHeight / 2) + "px"'); + + var linkFix = logoa.appendChild(logoa.cloneNode()); + linkFix.style.position = 'absolute'; + linkFix.style.height = '100%'; + linkFix.style.width = '100%'; + } + } +} + +// fix ie6 disappering float bug +function relativeforfloats() { + var bc = document.getElementById('bodyContent'); + if (bc) { + var tables = bc.getElementsByTagName('table'); + var divs = bc.getElementsByTagName('div'); + } + setrelative(tables); + setrelative(divs); +} +function setrelative (nodes) { + var i = 0; + while (i < nodes.length) { + if(((nodes[i].style.float && nodes[i].style.float != ('none') || + (nodes[i].align && nodes[i].align != ('none'))) && + (!nodes[i].style.position || nodes[i].style.position != 'relative'))) + { + nodes[i].style.position = 'relative'; + } + i++; + } +} + + +// Expand links for printing + +String.prototype.hasClass = function(classWanted) +{ + var classArr = this.split(/\s/); + for (var i=0; i<classArr.length; i++) + if (classArr[i].toLowerCase() == classWanted.toLowerCase()) return true; + return false; +} + +var expandedURLs; + +onbeforeprint = function() { + expandedURLs = []; + + var contentEl = document.getElementById("content"); + + if (contentEl) + { + var allLinks = contentEl.getElementsByTagName("a"); + + for (var i=0; i < allLinks.length; i++) { + if (allLinks[i].className.hasClass("external") && !allLinks[i].className.hasClass("free")) { + var expandedLink = document.createElement("span"); + var expandedText = document.createTextNode(" (" + allLinks[i].href + ")"); + expandedLink.appendChild(expandedText); + allLinks[i].parentNode.insertBefore(expandedLink, allLinks[i].nextSibling); + expandedURLs[i] = expandedLink; + } + } + } +} + +onafterprint = function() +{ + for (var i=0; i < expandedURLs.length; i++) + if (expandedURLs[i]) + expandedURLs[i].removeNode(true); +}
\ No newline at end of file |