      // Documentation & updates available at:
      // <a href="http://codecentre.eplica.is/js/eolasfix/test.htm" ><img src='http://e107.org/e107_themes/lamb/images/link.png' style='border:0;' alt='click to open link in new window' /></a>

      (function( Eolas_Fixed,
                  win, doc,
                  getElementsByTagName,
                  outerHTML,
                  parentNode,
                  tags,
                  elmsToRemoveOnload,
                  x,
                  is_ie,
                  y,z,elm,childNode,HTML,dummy,eolasfix)
      {
        // run only once!
        if (win[Eolas_Fixed]) return;
        win[Eolas_Fixed] = 1;

        eolasfix = function ()
        {
          // for each tag name specified in Array t
          while (tags[++x])
          {
            // find all elements of that type in the document
            // loop through the elements
            y = 0;
            while (elm = doc[getElementsByTagName](tags[x])[y++])
            {
              if (is_ie)
              {
                HTML = '>';
                z = 0;
                // <param> elements don't show up in innerHTML IE
                // so we need to collect their outerHTML.
                while (childNode = elm.childNodes[z++])
                    HTML += childNode[outerHTML];

                // create a 'dummy' element
                dummy = doc.createElement('i');
                // inject it next to `elm`,
                elm[parentNode].insertBefore(dummy, elm);
                // and turn it into an `elm` clone
                dummy[outerHTML] = elm[outerHTML].replace(/>/, HTML);
                // increment y to skip over it
                y++;

                // then hide the original elm
                elm.style.display = 'none';
                // and save it in 'The List of Elements to Remove Later'.
                elmsToRemoveOnload[elmsToRemoveOnload.length] = elm;
              }
              else
              {
                elm[outerHTML] = elm[outerHTML];
              }
            }
          }
        };

        // For IE run the fix straight away (because the defer="defer"
        // attribute has delayed execution until the DOM has loaded).
        // Then assign a window.onload event to purge the old elements.
        is_ie && !eolasfix() && win.attachEvent('onload', function(){
          x=0;
          while(elm = elmsToRemoveOnload[x++])
              elm[parentNode].removeChild(elm);
        });
        // For Opera set an `DOMContentLoaded` event to run the fix.
        win.opera && doc.addEventListener('DOMContentLoaded', eolasfix, 0);

      })( '__Eolas_Fixed',
          window, document,
          'getElementsByTagName',
          'outerHTML',
          'parentNode',
          ['object','embed','applet'],
          [],
          -1 /*@cc_on,1 @*/
        );

