// ==UserScript==
// @name        Silverlight for Opera
// @description Adds Silverlight Support for Opera
// @version     1.0
// @date        2008-04-18
// @creator     Tom Schreiber (development@tomhost.de)
// @namespace   http://www.tomhost.de/dev/skripte/opera
// @include *
// ==/UserScript==

window.opera.addEventListener
(
  'BeforeExternalScript',
  function (e)
  {
    // If Silverlight.js is loadeed adds an Listener 
    if(e.element.getAttribute('src').search(/Silverlight.js/g) != -1)
    
      // EventListener to patch the Silverlight.js
      window.opera.addEventListener
      (
        'BeforeScript',
        function (e) 
        {
          // Thats all we have to do :) ... i know its dirty, but it's works
          e.element.text = e.element.text.replace(/catch\(e\)/g, "catch(e){c=true;b=null;Silverlight.available=true}if(a) document.body.removeChild(a);return c;");
          
          // We also have to remove the data-attribute in SL v1.0
          var Ergebnis = e.element.text.search(/version 1\.0/g);
          if (Ergebnis != -1)
            e.element.text = e.element.text.replace(/data="data:,\"/g,'');                
          
        },
        false
      );
      
    // Other external JS is loaded, remove Listener (because of Performance)
    else
      window.opera.removeEventListener('BeforeScript', window.foobar, false);
    
  },
  false
);



