IEFixes.js 3.7 KB

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