<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Discussion on IMDb Movie Link Enhancer | Userscripts.org</title>
    <link>http://userscripts.org/scripts/show/36817</link>
    <description>Recent comments on userscript: IMDb Movie Link Enhancer</description>
    <language>en-us</language>
    <ttl>60</ttl>
    <item>
      <title>Getting ratings to display on other sites, replied by sam etler</title>
      <description>&lt;p&gt;I have a personal wiki that I use to keep track of movies I want to see and other notes.  I've been trying to get the ratings to show up in there as well but with no success.  I've added my website to the explicit include list but that doesn't work.  I even went so far as to just add * to the list to hopefully get everything but things like links on Wikipedia don't work.  Is there something I'm missing?  I tried reading through the javascript but unfortunately my knowledge is limited in this arena.  Thanks for any tips!&lt;/p&gt;

&lt;p&gt;BTW, in any case, the script is awesome and I make use of it all the time.  Thanks for that!&lt;/p&gt;</description>
      <pubDate>Tue, 16 Mar 2010 20:11:00 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:48566:230867</guid>
      <author>sam etler</author>
      <link>http://userscripts.org/posts/230867</link>
    </item>
    <item>
      <title>Problem for huge voters, replied by Olivier Aumonier</title>
      <description>&lt;p&gt;First of all, I'm french, so I will do my best to make myself clear, sorry if I don't manage to do so.&lt;/p&gt;

&lt;p&gt;I am a very huge voter on the IMDB, i have reached and overtook the 10000 votes. The problem is that the vote history is limited to 10000 votes per page, so my vote history is cut, only 10000 votes appears, the rest is on another page. Is there a way to make the script search in both the pages at a time ?&lt;/p&gt;

&lt;p&gt;The link to my vote history, so you can see by yourself :
&lt;br /&gt;&lt;a href=&quot;http://us.imdb.com/mymovies/list?l=249220&quot;&gt;http://us.imdb.com/mymovies/list?l=249220&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anyway, congratulations, this script is excellent, you have done a tremendous job. &lt;/p&gt;

&lt;p&gt;Olivier.&lt;/p&gt;</description>
      <pubDate>Fri, 12 Feb 2010 23:00:07 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:46013:219763</guid>
      <author>Olivier Aumonier</author>
      <link>http://userscripts.org/posts/219763</link>
    </item>
    <item>
      <title>Error Message--Script Won't work , replied by saucybetty</title>
      <description>&lt;p&gt;Hi.  I am running Flock 2.5.2  on Mac OSX.  I upgraded to Grease Monkey 0.8.20091209.4 before I uploaded the newest version of this script.  I got this error message in my console and I have no idea what my next step should be. Any suggestions/help would be much appreciated.  As you can tell by me being all over this board, I love this script and I am dying now that I can't &quot;see&quot; it.  Thanks in advance for any help anyone may be able to provide.&lt;/p&gt;

&lt;p&gt;const CLASSNAME = &quot;GM_GreasemonkeyService&quot;;
&lt;br /&gt;const CONTRACTID = &quot;@greasemonkey.mozdev.org/greasemonkey-service;1&quot;;
&lt;br /&gt;const CID = Components.ID(&quot;{77bf3650-1cd6-11da-8cd6-0800200c9a66}&quot;);&lt;/p&gt;

&lt;p&gt;const Cc = Components.classes;
&lt;br /&gt;const Ci = Components.interfaces;&lt;/p&gt;

&lt;p&gt;const appSvc = Cc[&quot;@mozilla.org/appshell/appShellService;1&quot;]
&lt;br /&gt;                 .getService(Ci.nsIAppShellService);&lt;/p&gt;

&lt;p&gt;const gmSvcFilename = Components.stack.filename;&lt;/p&gt;

&lt;p&gt;const maxJSVersion = (function getMaxJSVersion() {
&lt;br /&gt;  // Default to version 1.6, which FF1.5 and later support.
&lt;br /&gt;  var jsVersion = 160;&lt;/p&gt;

&lt;p&gt;  var jsds = Cc[&quot;@mozilla.org/js/jsd/debugger-service;1&quot;].getService()
&lt;br /&gt;               .QueryInterface(Ci.jsdIDebuggerService);
&lt;br /&gt;  jsds.on();
&lt;br /&gt;  jsds.enumerateContexts({ enumerateContext: function(context) {
&lt;br /&gt;    if (context.version &gt; jsVersion) jsVersion = context.version;
&lt;br /&gt;  }});
&lt;br /&gt;  jsds.off();&lt;/p&gt;

&lt;p&gt;  return (jsVersion / 100).toString();
&lt;br /&gt;})();&lt;/p&gt;

&lt;p&gt;function alert(msg) {
&lt;br /&gt;  Cc[&quot;@mozilla.org/embedcomp/prompt-service;1&quot;]
&lt;br /&gt;    .getService(Ci.nsIPromptService)
&lt;br /&gt;    .alert(null, &quot;Greasemonkey alert&quot;, msg);
&lt;br /&gt;}&lt;/p&gt;

&lt;p&gt;// Examines the stack to determine if an API should be callable.
&lt;br /&gt;function GM_apiLeakCheck(apiName) {
&lt;br /&gt;  var stack = Components.stack;&lt;/p&gt;

&lt;p&gt;  do {
&lt;br /&gt;    // Valid stack frames for GM api calls are: native and js when coming from
&lt;br /&gt;    // chrome:// URLs and the greasemonkey.js component's file:// URL.
&lt;br /&gt;    if (2 == stack.language) {
&lt;br /&gt;      // NOTE: In FF 2.0.0.0, I saw that stack.filename can be null for JS/XPCOM
&lt;br /&gt;      // services. This didn't happen in FF 2.0.0.11; I'm not sure when it
&lt;br /&gt;      // changed.
&lt;br /&gt;      if (stack.filename != null &amp;amp;&amp;amp;
&lt;br /&gt;          stack.filename != gmSvcFilename &amp;amp;&amp;amp;
&lt;br /&gt;          stack.filename.substr(0, 6) != &quot;chrome&quot;) {
&lt;br /&gt;        GM_logError(new Error(&quot;Greasemonkey access violation: unsafeWindow &quot; +
&lt;br /&gt;                    &quot;cannot call &quot; + apiName + &quot;.&quot;));
&lt;br /&gt;        return false;
&lt;br /&gt;      }
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    stack = stack.caller;
&lt;br /&gt;  } while (stack);&lt;/p&gt;

&lt;p&gt;  return true;
&lt;br /&gt;}&lt;/p&gt;

&lt;p&gt;var greasemonkeyService = {
&lt;br /&gt;  _config: null,
&lt;br /&gt;  get config() {
&lt;br /&gt;    if (!this._config)
&lt;br /&gt;      this._config = new Config();
&lt;br /&gt;    return this._config;
&lt;br /&gt;  },
&lt;br /&gt;  browserWindows: [],&lt;/p&gt;

&lt;p&gt;  // nsISupports
&lt;br /&gt;  QueryInterface: function(aIID) {
&lt;br /&gt;    if (!aIID.equals(Ci.nsIObserver) &amp;amp;&amp;amp;
&lt;br /&gt;        !aIID.equals(Ci.nsISupports) &amp;amp;&amp;amp;
&lt;br /&gt;        !aIID.equals(Ci.nsISupportsWeakReference) &amp;amp;&amp;amp;
&lt;br /&gt;        !aIID.equals(Ci.gmIGreasemonkeyService) &amp;amp;&amp;amp;
&lt;br /&gt;        !aIID.equals(Ci.nsIWindowMediatorListener) &amp;amp;&amp;amp;
&lt;br /&gt;        !aIID.equals(Ci.nsIContentPolicy)) {
&lt;br /&gt;      throw Components.results.NS_ERROR_NO_INTERFACE;
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    return this;
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  // nsIObserver
&lt;br /&gt;  observe: function(aSubject, aTopic, aData) {
&lt;br /&gt;    if (aTopic == &quot;app-startup&quot;) {
&lt;br /&gt;      this.startup();
&lt;br /&gt;    }
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  // gmIGreasemonkeyService
&lt;br /&gt;  registerBrowser: function(browserWin) {
&lt;br /&gt;    var existing;&lt;/p&gt;

&lt;p&gt;    for (var i = 0; existing = this.browserWindows[i]; i++) {
&lt;br /&gt;      if (existing == browserWin) {
&lt;br /&gt;        // NOTE: Unlocalised strings
&lt;br /&gt;        throw new Error(&quot;Browser window has already been registered.&quot;);
&lt;br /&gt;      }
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    this.browserWindows.push(browserWin);
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  unregisterBrowser: function(browserWin) {
&lt;br /&gt;   var existing;&lt;/p&gt;

&lt;p&gt;    for (var i = 0; existing = this.browserWindows[i]; i++) {
&lt;br /&gt;      if (existing == browserWin) {
&lt;br /&gt;        this.browserWindows.splice(i, 1);
&lt;br /&gt;        return;
&lt;br /&gt;      }
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    throw new Error(&quot;Browser window is not registered.&quot;);
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  domContentLoaded: function(wrappedContentWin, chromeWin) {
&lt;br /&gt;    var unsafeWin = wrappedContentWin.wrappedJSObject;
&lt;br /&gt;    var unsafeLoc = new XPCNativeWrapper(unsafeWin, &quot;location&quot;).location;
&lt;br /&gt;    var href = new XPCNativeWrapper(unsafeLoc, &quot;href&quot;).href;
&lt;br /&gt;    var scripts = this.initScripts(href);&lt;/p&gt;

&lt;p&gt;    if (scripts.length &gt; 0) {
&lt;br /&gt;      this.injectScripts(scripts, href, unsafeWin, chromeWin);
&lt;br /&gt;    }
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  startup: function() {
&lt;br /&gt;    var loader = Cc[&quot;@mozilla.org/moz/jssubscript-loader;1&quot;]
&lt;br /&gt;      .getService(Ci.mozIJSSubScriptLoader);
&lt;br /&gt;    loader.loadSubScript(&quot;chrome://global/content/XPCNativeWrapper.js&quot;);
&lt;br /&gt;    loader.loadSubScript(&quot;chrome://greasemonkey/content/prefmanager.js&quot;);
&lt;br /&gt;    loader.loadSubScript(&quot;chrome://greasemonkey/content/utils.js&quot;);
&lt;br /&gt;    loader.loadSubScript(&quot;chrome://greasemonkey/content/config.js&quot;);
&lt;br /&gt;    loader.loadSubScript(&quot;chrome://greasemonkey/content/convert2RegExp.js&quot;);
&lt;br /&gt;    loader.loadSubScript(&quot;chrome://greasemonkey/content/miscapis.js&quot;);
&lt;br /&gt;    loader.loadSubScript(&quot;chrome://greasemonkey/content/xmlhttprequester.js&quot;);
&lt;br /&gt;    //loggify(this, &quot;GM_GreasemonkeyService&quot;);
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  shouldLoad: function(ct, cl, org, ctx, mt, ext) {
&lt;br /&gt;    var ret = Ci.nsIContentPolicy.ACCEPT;&lt;/p&gt;

&lt;p&gt;    // block content detection of greasemonkey by denying GM
&lt;br /&gt;    // chrome content, unless loaded from chrome
&lt;br /&gt;    if (org &amp;amp;&amp;amp; org.scheme != &quot;chrome&quot; &amp;amp;&amp;amp; cl.scheme == &quot;chrome&quot; &amp;amp;&amp;amp;
&lt;br /&gt;        cl.host == &quot;greasemonkey&quot;) {
&lt;br /&gt;      return Ci.nsIContentPolicy.REJECT_SERVER;
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    // don't intercept anything when GM is not enabled
&lt;br /&gt;    if (!GM_getEnabled()) {
&lt;br /&gt;      return ret;
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    // don't interrupt the view-source: scheme
&lt;br /&gt;    // (triggered if the link in the error console is clicked)
&lt;br /&gt;    if (&quot;view-source&quot; == cl.scheme) {
&lt;br /&gt;      return ret;
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    if (ct == Ci.nsIContentPolicy.TYPE_DOCUMENT &amp;amp;&amp;amp;
&lt;br /&gt;        cl.spec.match(/\.user\.js$/)) {&lt;/p&gt;

&lt;p&gt;      dump(&quot;shouldload: &quot; + cl.spec + &quot;\n&quot;);
&lt;br /&gt;      dump(&quot;ignorescript: &quot; + this.ignoreNextScript_ + &quot;\n&quot;);&lt;/p&gt;

&lt;p&gt;      if (!this.ignoreNextScript_) {
&lt;br /&gt;        if (!this.isTempScript(cl)) {
&lt;br /&gt;          var winWat = Cc[&quot;@mozilla.org/embedcomp/window-watcher;1&quot;]
&lt;br /&gt;            .getService(Ci.nsIWindowWatcher);&lt;/p&gt;

&lt;p&gt;          if (winWat.activeWindow &amp;amp;&amp;amp; winWat.activeWindow.GM_BrowserUI) {
&lt;br /&gt;            winWat.activeWindow.GM_BrowserUI.startInstallScript(cl);
&lt;br /&gt;            ret = Ci.nsIContentPolicy.REJECT_REQUEST;
&lt;br /&gt;          }
&lt;br /&gt;        }
&lt;br /&gt;      }
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    this.ignoreNextScript_ = false;
&lt;br /&gt;    return ret;
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  shouldProcess: function(ct, cl, org, ctx, mt, ext) {
&lt;br /&gt;    return Ci.nsIContentPolicy.ACCEPT;
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  ignoreNextScript: function() {
&lt;br /&gt;    dump(&quot;ignoring next script...\n&quot;);
&lt;br /&gt;    this.ignoreNextScript_ = true;
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  isTempScript: function(uri) {
&lt;br /&gt;    if (uri.scheme != &quot;file&quot;) {
&lt;br /&gt;      return false;
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    var fph = Components.classes[&quot;@mozilla.org/network/protocol;1?name=file&quot;]
&lt;br /&gt;    .getService(Ci.nsIFileProtocolHandler);&lt;/p&gt;

&lt;p&gt;    var file = fph.getFileFromURLSpec(uri.spec);
&lt;br /&gt;    var tmpDir = Components.classes[&quot;@mozilla.org/file/directory_service;1&quot;]
&lt;br /&gt;    .getService(Components.interfaces.nsIProperties)
&lt;br /&gt;    .get(&quot;TmpD&quot;, Components.interfaces.nsILocalFile);&lt;/p&gt;

&lt;p&gt;    return file.parent.equals(tmpDir) &amp;amp;&amp;amp; file.leafName != &quot;newscript.user.js&quot;;
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  initScripts: function(url) {
&lt;br /&gt;    function testMatch(script) {
&lt;br /&gt;      return script.enabled &amp;amp;&amp;amp; script.matchesURL(url);
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    return GM_getConfig().getMatchingScripts(testMatch);
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  injectScripts: function(scripts, url, unsafeContentWin, chromeWin) {
&lt;br /&gt;    var sandbox;
&lt;br /&gt;    var script;
&lt;br /&gt;    var logger;
&lt;br /&gt;    var console;
&lt;br /&gt;    var storage;
&lt;br /&gt;    var xmlhttpRequester;
&lt;br /&gt;    var resources;
&lt;br /&gt;    var safeWin = new XPCNativeWrapper(unsafeContentWin);
&lt;br /&gt;    var safeDoc = safeWin.document;&lt;/p&gt;

&lt;p&gt;    // detect and grab reference to firebug console and context, if it exists
&lt;br /&gt;    var firebugConsole = this.getFirebugConsole(unsafeContentWin, chromeWin);&lt;/p&gt;

&lt;p&gt;    for (var i = 0; script = scripts[i]; i++) {
&lt;br /&gt;      sandbox = new Components.utils.Sandbox(safeWin);&lt;/p&gt;

&lt;p&gt;      logger = new GM_ScriptLogger(script);&lt;/p&gt;

&lt;p&gt;      console = firebugConsole ? firebugConsole : new GM_console(script);&lt;/p&gt;

&lt;p&gt;      storage = new GM_ScriptStorage(script);
&lt;br /&gt;      xmlhttpRequester = new GM_xmlhttpRequester(unsafeContentWin,
&lt;br /&gt;                                                 appSvc.hiddenDOMWindow);
&lt;br /&gt;      resources = new GM_Resources(script);&lt;/p&gt;

&lt;p&gt;      sandbox.window = safeWin;
&lt;br /&gt;      sandbox.document = sandbox.window.document;
&lt;br /&gt;      sandbox.unsafeWindow = unsafeContentWin;&lt;/p&gt;

&lt;p&gt;      // hack XPathResult since that is so commonly used
&lt;br /&gt;      sandbox.XPathResult = Ci.nsIDOMXPathResult;&lt;/p&gt;

&lt;p&gt;      // add our own APIs
&lt;br /&gt;      sandbox.GM_addStyle = function(css) { GM_addStyle(safeDoc, css) };
&lt;br /&gt;      sandbox.GM_log = GM_hitch(logger, &quot;log&quot;);
&lt;br /&gt;      sandbox.console = console;
&lt;br /&gt;      sandbox.GM_setValue = GM_hitch(storage, &quot;setValue&quot;);
&lt;br /&gt;      sandbox.GM_getValue = GM_hitch(storage, &quot;getValue&quot;);
&lt;br /&gt;      sandbox.GM_deleteValue = GM_hitch(storage, &quot;deleteValue&quot;);
&lt;br /&gt;      sandbox.GM_listValues = GM_hitch(storage, &quot;listValues&quot;);
&lt;br /&gt;      sandbox.GM_getResourceURL = GM_hitch(resources, &quot;getResourceURL&quot;);
&lt;br /&gt;      sandbox.GM_getResourceText = GM_hitch(resources, &quot;getResourceText&quot;);
&lt;br /&gt;      sandbox.GM_openInTab = GM_hitch(this, &quot;openInTab&quot;, safeWin, chromeWin);
&lt;br /&gt;      sandbox.GM_xmlhttpRequest = GM_hitch(xmlhttpRequester,
&lt;br /&gt;                                           &quot;contentStartRequest&quot;);
&lt;br /&gt;      sandbox.GM_registerMenuCommand = GM_hitch(this,
&lt;br /&gt;                                                &quot;registerMenuCommand&quot;,
&lt;br /&gt;                                                unsafeContentWin);&lt;/p&gt;

&lt;p&gt;      sandbox.__proto__ = safeWin;&lt;/p&gt;

&lt;p&gt;      var contents = script.textContent;&lt;/p&gt;

&lt;p&gt;      var requires = [];
&lt;br /&gt;      var offsets = [];
&lt;br /&gt;      var offset = 0;&lt;/p&gt;

&lt;p&gt;      script.requires.forEach(function(req){
&lt;br /&gt;        var contents = req.textContent;
&lt;br /&gt;        var lineCount = contents.split(&quot;\n&quot;).length;
&lt;br /&gt;        requires.push(contents);
&lt;br /&gt;        offset += lineCount;
&lt;br /&gt;        offsets.push(offset);
&lt;br /&gt;      });
&lt;br /&gt;      script.offsets = offsets;&lt;/p&gt;

&lt;p&gt;      var scriptSrc = &quot;\n&quot; + // error line-number calculations depend on these
&lt;br /&gt;                         requires.join(&quot;\n&quot;) +
&lt;br /&gt;                         &quot;\n&quot; +
&lt;br /&gt;                         contents +
&lt;br /&gt;                         &quot;\n&quot;;
&lt;br /&gt;      if (!script.unwrap)
&lt;br /&gt;        scriptSrc = &quot;(function(){&quot;+ scriptSrc +&quot;})()&quot;;
&lt;br /&gt;      if (!this.evalInSandbox(scriptSrc, url, sandbox, script) &amp;amp;&amp;amp; script.unwrap)
&lt;br /&gt;        this.evalInSandbox(&quot;(function(){&quot;+ scriptSrc +&quot;})()&quot;,
&lt;br /&gt;                           url, sandbox, script); // wrap anyway on early return
&lt;br /&gt;    }
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  registerMenuCommand: function(unsafeContentWin, commandName, commandFunc,
&lt;br /&gt;                                accelKey, accelModifiers, accessKey) {
&lt;br /&gt;    if (!GM_apiLeakCheck(&quot;GM_registerMenuCommand&quot;)) {
&lt;br /&gt;      return;
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    var command = {name: commandName,
&lt;br /&gt;                   accelKey: accelKey,
&lt;br /&gt;                   accelModifiers: accelModifiers,
&lt;br /&gt;                   accessKey: accessKey,
&lt;br /&gt;                   doCommand: commandFunc,
&lt;br /&gt;                   window: unsafeContentWin };&lt;/p&gt;

&lt;p&gt;    for (var i = 0; i &amp;lt; this.browserWindows.length; i++) {
&lt;br /&gt;      this.browserWindows[i].registerMenuCommand(command);
&lt;br /&gt;    }
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  openInTab: function(safeContentWin, chromeWin, url) {
&lt;br /&gt;    if (!GM_apiLeakCheck(&quot;GM_openInTab&quot;)) {
&lt;br /&gt;      return undefined;
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    var info = Cc[&quot;@mozilla.org/xre/app-info;1&quot;]
&lt;br /&gt;      .getService(Components.interfaces.nsIXULAppInfo);
&lt;br /&gt;    if (parseFloat(info.version, 10) &amp;lt; 3.0) {
&lt;br /&gt;      // Pre FF 3.0 wants the URL as the second argument.
&lt;br /&gt;      var newTab = chromeWin.openNewTabWith(
&lt;br /&gt;        url, safeContentWin.document.location.href, null, null, null, null);
&lt;br /&gt;    } else {
&lt;br /&gt;      // Post FF 3.0 wants the document as the second argument.
&lt;br /&gt;      var newTab = chromeWin.openNewTabWith(
&lt;br /&gt;        url, safeContentWin.document, null, null, null, null);
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    // Source:
&lt;br /&gt;    // &lt;a href=&quot;http://mxr.mozilla.org/mozilla-central/source/browser/base/content/browser.js#4448&quot;&gt;http://mxr.mozilla.org/mozilla-central/source/b...&lt;/a&gt;
&lt;br /&gt;    var newWindow = chromeWin.gBrowser
&lt;br /&gt;      .getBrowserForTab(newTab)
&lt;br /&gt;      .docShell
&lt;br /&gt;      .QueryInterface(Ci.nsIInterfaceRequestor)
&lt;br /&gt;      .getInterface(Ci.nsIDOMWindow);
&lt;br /&gt;    return newWindow;
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  evalInSandbox: function(code, codebase, sandbox, script) {
&lt;br /&gt;    if (!(Components.utils &amp;amp;&amp;amp; Components.utils.Sandbox)) {
&lt;br /&gt;      var e = new Error(&quot;Could not create sandbox.&quot;);
&lt;br /&gt;      GM_logError(e, 0, e.fileName, e.lineNumber);
&lt;br /&gt;      return true;
&lt;br /&gt;    }
&lt;br /&gt;    try {
&lt;br /&gt;      // workaround for &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=307984&quot;&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=30...&lt;/a&gt;
&lt;br /&gt;      var lineFinder = new Error();
&lt;br /&gt;      Components.utils.evalInSandbox(code, sandbox, maxJSVersion);
&lt;br /&gt;    } catch (e) { // catches errors while running the script code
&lt;br /&gt;      try {
&lt;br /&gt;        if (e &amp;amp;&amp;amp; &quot;return not in function&quot; == e.message)
&lt;br /&gt;          return false; // means this script depends on the function enclosure&lt;/p&gt;

&lt;p&gt;        // try to find the line of the actual error line
&lt;br /&gt;        var line = e &amp;amp;&amp;amp; e.lineNumber;
&lt;br /&gt;        if (4294967295 == line) {
&lt;br /&gt;          // Line number is reported as max int in edge cases.  Sometimes
&lt;br /&gt;          // the right one is in the &quot;location&quot;, instead.  Look there.
&lt;br /&gt;          if (e.location &amp;amp;&amp;amp; e.location.lineNumber) {
&lt;br /&gt;            line = e.location.lineNumber;
&lt;br /&gt;          } else {
&lt;br /&gt;            // Reporting maxint is useless, if we couldn't find it in location
&lt;br /&gt;            // either, forget it.  A value of 0 isn't shown in the console.
&lt;br /&gt;            line = 0;
&lt;br /&gt;          }
&lt;br /&gt;        }&lt;/p&gt;

&lt;p&gt;        if (line) {
&lt;br /&gt;          var err = this.findError(script, line - lineFinder.lineNumber - 1);
&lt;br /&gt;          GM_logError(
&lt;br /&gt;            e, // error obj
&lt;br /&gt;            0, // 0 = error (1 = warning)
&lt;br /&gt;            err.uri,
&lt;br /&gt;            err.lineNumber
&lt;br /&gt;          );
&lt;br /&gt;        } else {
&lt;br /&gt;          GM_logError(
&lt;br /&gt;            e, // error obj
&lt;br /&gt;            0, // 0 = error (1 = warning)
&lt;br /&gt;            script.fileURL,
&lt;br /&gt;            0
&lt;br /&gt;          );
&lt;br /&gt;        }
&lt;br /&gt;      } catch (e) { // catches errors we cause trying to inform the user
&lt;br /&gt;	// Do nothing. More importantly: don't stop script incovation sequence.
&lt;br /&gt;      }
&lt;br /&gt;    }
&lt;br /&gt;    return true; // did not need a (function() {...})() enclosure.
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  findError: function(script, lineNumber){
&lt;br /&gt;    var start = 0;
&lt;br /&gt;    var end = 1;&lt;/p&gt;

&lt;p&gt;    for (var i = 0; i &amp;lt; script.offsets.length; i++) {
&lt;br /&gt;      end = script.offsets[i];
&lt;br /&gt;      if (lineNumber &amp;lt; end) {
&lt;br /&gt;        return {
&lt;br /&gt;          uri: script.requires[i].fileURL,
&lt;br /&gt;          lineNumber: (lineNumber - start)
&lt;br /&gt;        };
&lt;br /&gt;      }
&lt;br /&gt;      start = end;
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;    return {
&lt;br /&gt;      uri: script.fileURL,
&lt;br /&gt;      lineNumber: (lineNumber - end)
&lt;br /&gt;    };
&lt;br /&gt;  },&lt;/p&gt;

&lt;p&gt;  getFirebugConsole: function(unsafeContentWin, chromeWin) {
&lt;br /&gt;    // If we can't find this object, there's no chance the rest of this
&lt;br /&gt;    // function will work.
&lt;br /&gt;    if ('undefined'==typeof chromeWin.Firebug) return null;&lt;/p&gt;

&lt;p&gt;    try {
&lt;br /&gt;      chromeWin = chromeWin.top;
&lt;br /&gt;      var fbVersion = parseFloat(chromeWin.Firebug.version, 10);
&lt;br /&gt;      var fbConsole = chromeWin.Firebug.Console;
&lt;br /&gt;      var fbContext = chromeWin.TabWatcher &amp;amp;&amp;amp;
&lt;br /&gt;        chromeWin.TabWatcher.getContextByWindow(unsafeContentWin);&lt;/p&gt;

&lt;p&gt;      // Firebug 1.4 will give no context, when disabled for the current site.
&lt;br /&gt;      // We can't run that way.
&lt;br /&gt;      if ('undefined'==typeof fbContext) {
&lt;br /&gt;        return null;
&lt;br /&gt;      }&lt;/p&gt;

&lt;p&gt;      function findActiveContext() {
&lt;br /&gt;        for (var i=0; i&amp;lt;fbcontext&gt;&lt;br /&gt;          if (fbContext.activeConsoleHandlers[i].window == unsafeContentWin) {
&lt;br /&gt;            return fbContext.activeConsoleHandlers[i];
&lt;br /&gt;          }
&lt;br /&gt;        }
&lt;br /&gt;        return null;
&lt;br /&gt;      }&lt;/p&gt;

&lt;p&gt;      try {
&lt;br /&gt;        if (!fbConsole.isEnabled(fbContext)) return null;
&lt;br /&gt;      } catch (e) {
&lt;br /&gt;        // FB 1.1 can't be enabled/disabled.  Function to check doesn't exist.
&lt;br /&gt;        // Silently ignore.
&lt;br /&gt;      }&lt;/p&gt;

&lt;p&gt;      if (fbVersion &amp;lt; 1.2) {
&lt;br /&gt;        return new chromeWin.FirebugConsole(fbContext, unsafeContentWin);
&lt;br /&gt;      } else if (1.2 == fbVersion) {
&lt;br /&gt;        var safeWin = new XPCNativeWrapper(unsafeContentWin);&lt;/p&gt;

&lt;p&gt;        if (fbContext.consoleHandler) {
&lt;br /&gt;          for (var i = 0; i &amp;lt; fbContext.consoleHandler.length; i++) {
&lt;br /&gt;            if (fbContext.consoleHandler[i].window == safeWin) {
&lt;br /&gt;              return fbContext.consoleHandler[i].handler;
&lt;br /&gt;            }
&lt;br /&gt;          }
&lt;br /&gt;        }&lt;/p&gt;

&lt;p&gt;        var dummyElm = safeWin.document.createElement(&quot;div&quot;);
&lt;br /&gt;        dummyElm.setAttribute(&quot;id&quot;, &quot;_firebugConsole&quot;);
&lt;br /&gt;        safeWin.document.documentElement.appendChild(dummyElm);
&lt;br /&gt;        chromeWin.Firebug.Console.injector.addConsoleListener(fbContext, safeWin);
&lt;br /&gt;        dummyElm.parentNode.removeChild(dummyElm);&lt;/p&gt;

&lt;p&gt;        return fbContext.consoleHandler.pop().handler;
&lt;br /&gt;      } else if (1.3 == fbVersion || 1.4 == fbVersion) {
&lt;br /&gt;        fbConsole.injector.attachIfNeeded(fbContext, unsafeContentWin);
&lt;br /&gt;        return findActiveContext();
&lt;br /&gt;      }
&lt;br /&gt;    } catch (e) {
&lt;br /&gt;      dump('Greasemonkey getFirebugConsole() error:\n'+uneval(e)+'\n');
&lt;br /&gt;    }&lt;/p&gt;

&lt;p&gt;	  return null;
&lt;br /&gt;  }
&lt;br /&gt;};&lt;/p&gt;

&lt;p&gt;greasemonkeyService.wrappedJSObject = greasemonkeyService;&lt;/p&gt;

&lt;p&gt;/**
&lt;br /&gt; * XPCOM Registration goop
&lt;br /&gt; */
&lt;br /&gt;var Module = new Object();&lt;/p&gt;

&lt;p&gt;Module.registerSelf = function(compMgr, fileSpec, location, type) {
&lt;br /&gt;  compMgr = compMgr.QueryInterface(Ci.nsIComponentRegistrar);
&lt;br /&gt;  compMgr.registerFactoryLocation(CID,
&lt;br /&gt;                                  CLASSNAME,
&lt;br /&gt;                                  CONTRACTID,
&lt;br /&gt;                                  fileSpec,
&lt;br /&gt;                                  location,
&lt;br /&gt;                                  type);&lt;/p&gt;

&lt;p&gt;  var catMgr = Cc[&quot;@mozilla.org/categorymanager;1&quot;]
&lt;br /&gt;                 .getService(Ci.nsICategoryManager);&lt;/p&gt;

&lt;p&gt;  catMgr.addCategoryEntry(&quot;app-startup&quot;,
&lt;br /&gt;                          CLASSNAME,
&lt;br /&gt;                          CONTRACTID,
&lt;br /&gt;                          true,
&lt;br /&gt;                          true);&lt;/p&gt;

&lt;p&gt;  catMgr.addCategoryEntry(&quot;content-policy&quot;,
&lt;br /&gt;                          CONTRACTID,
&lt;br /&gt;                          CONTRACTID,
&lt;br /&gt;                          true,
&lt;br /&gt;                          true);
&lt;br /&gt;};&lt;/p&gt;

&lt;p&gt;Module.getClassObject = function(compMgr, cid, iid) {
&lt;br /&gt;  if (!cid.equals(CID)) {
&lt;br /&gt;    throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
&lt;br /&gt;  }&lt;/p&gt;

&lt;p&gt;  if (!iid.equals(Ci.nsIFactory)) {
&lt;br /&gt;    throw Components.results.NS_ERROR_NO_INTERFACE;
&lt;br /&gt;  }&lt;/p&gt;

&lt;p&gt;  return Factory;
&lt;br /&gt;};&lt;/p&gt;

&lt;p&gt;Module.canUnload = function(compMgr) {
&lt;br /&gt;  return true;
&lt;br /&gt;};&lt;/p&gt;

&lt;p&gt;var Factory = new Object();&lt;/p&gt;

&lt;p&gt;Factory.createInstance = function(outer, iid) {
&lt;br /&gt;  if (outer != null) {
&lt;br /&gt;    throw Components.results.NS_ERROR_NO_AGGREGATION;
&lt;br /&gt;  }&lt;/p&gt;

&lt;p&gt;  return greasemonkeyService;
&lt;br /&gt;};&lt;/p&gt;

&lt;p&gt;function NSGetModule(compMgr, fileSpec) {
&lt;br /&gt;  return Module;
&lt;br /&gt;}&lt;/p&gt;

&lt;p&gt;//loggify(Module, &quot;greasemonkeyService:Module&quot;);
&lt;br /&gt;//loggify(Factory, &quot;greasemonkeyService:Factory&quot;);&lt;/p&gt;</description>
      <pubDate>Sun, 17 Jan 2010 06:53:32 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:43661:208464</guid>
      <author>saucybetty</author>
      <link>http://userscripts.org/posts/208464</link>
    </item>
    <item>
      <title>Script Not Working, replied by saucybetty</title>
      <description>&lt;p&gt;I have uninstalled and re-installed the script, but it no longer seems to be working.  Please advise.&lt;/p&gt;

&lt;p&gt;Cheers!&lt;/p&gt;</description>
      <pubDate>Fri, 11 Dec 2009 02:24:16 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:41220:197431</guid>
      <author>saucybetty</author>
      <link>http://userscripts.org/posts/197431</link>
    </item>
    <item>
      <title>Stopped working Yesterday, replied by saucybetty</title>
      <description>&lt;p&gt;Thanks so much!&lt;/p&gt;</description>
      <pubDate>Tue, 06 Oct 2009 05:45:07 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:35801:176393</guid>
      <author>saucybetty</author>
      <link>http://userscripts.org/posts/176393</link>
    </item>
    <item>
      <title>@exclude, replied by cdefasnu</title>
      <description>&lt;p&gt;changed in latest version. thanks.&lt;/p&gt;</description>
      <pubDate>Sun, 04 Oct 2009 09:18:06 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:34803:175984</guid>
      <author>cdefasnu</author>
      <link>http://userscripts.org/posts/175984</link>
    </item>
    <item>
      <title>Stopped working Yesterday, replied by cdefasnu</title>
      <description>&lt;p&gt;This was caused by the redesign. I uploaded a fix.
&lt;br /&gt;However other issues may surface during their transiton period.&lt;/p&gt;</description>
      <pubDate>Sun, 04 Oct 2009 09:16:48 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:35801:175983</guid>
      <author>cdefasnu</author>
      <link>http://userscripts.org/posts/175983</link>
    </item>
    <item>
      <title>Stopped working Yesterday, replied by Jason18</title>
      <description>&lt;p&gt;Same here. Eagerly awaiting an update...&lt;/p&gt;</description>
      <pubDate>Sat, 03 Oct 2009 09:30:14 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:35801:175728</guid>
      <author>Jason18</author>
      <link>http://userscripts.org/posts/175728</link>
    </item>
    <item>
      <title>Stopped working Yesterday, replied by thishead</title>
      <description>&lt;p&gt;Having same prob on both lap and desktop. bummer.
&lt;br /&gt;Script is great. hope its updated soon
&lt;br /&gt;TIA&lt;/p&gt;</description>
      <pubDate>Thu, 24 Sep 2009 19:57:58 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:35801:172630</guid>
      <author>thishead</author>
      <link>http://userscripts.org/posts/172630</link>
    </item>
    <item>
      <title>Stopped working Yesterday, replied by saucybetty</title>
      <description>&lt;p&gt;I think IMDB did a page redesign and it must have affected this script some how.  The highlights no longer show.&lt;/p&gt;

&lt;p&gt;This is a great feature.  Thanks in advance for any help.&lt;/p&gt;</description>
      <pubDate>Thu, 24 Sep 2009 04:09:25 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:35801:172444</guid>
      <author>saucybetty</author>
      <link>http://userscripts.org/posts/172444</link>
    </item>
    <item>
      <title>@exclude, replied by Chicago_gangster</title>
      <description>&lt;p&gt;Suggestion:&lt;/p&gt;

&lt;p&gt;Change @exclude
&lt;br /&gt;&lt;code&gt;http://*.imdb.com/mymovies/list?votehistory&lt;/code&gt;
&lt;br /&gt;to
&lt;br /&gt;&lt;code&gt;http://*.imdb.com/mymovies/list?votehistory*&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;There's a &lt;a href=&quot;/scripts/show/57342&quot;&gt;script&lt;/a&gt; which adds a link for viewing all titles in a MyMovies list. When one uses that link in &lt;a href=&quot;http://www.imdb.com/mymovies/list?votehistory&amp;amp;a=1&quot;&gt;Vote History&lt;/a&gt;, your script runs.&lt;/p&gt;</description>
      <pubDate>Wed, 09 Sep 2009 00:23:12 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:34803:167418</guid>
      <author>Chicago_gangster</author>
      <link>http://userscripts.org/posts/167418</link>
    </item>
    <item>
      <title>Different coloured highlight for MyMovies?, replied by Chicago_gangster</title>
      <description>&lt;p&gt;Suggestion: install &lt;a href=&quot;/scripts/show/26818&quot;&gt;IMDb &quot;My Movies&quot; enhancer&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Wed, 09 Sep 2009 00:16:59 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:21348:167416</guid>
      <author>Chicago_gangster</author>
      <link>http://userscripts.org/posts/167416</link>
    </item>
    <item>
      <title>Different coloured highlight for MyMovies?, replied by Sheeper</title>
      <description>&lt;p&gt;I use MyMovies section for movies i have. Can be another highlighting for MyMovies list?&lt;/p&gt;</description>
      <pubDate>Thu, 05 Feb 2009 16:35:03 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:21348:94336</guid>
      <author>Sheeper</author>
      <link>http://userscripts.org/posts/94336</link>
    </item>
    <item>
      <title>Different link method, replied by cdefasnu</title>
      <description>&lt;p&gt;I fixed the script. The latest version will highlight both link formats.&lt;/p&gt;</description>
      <pubDate>Wed, 04 Feb 2009 06:41:32 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:20817:93949</guid>
      <author>cdefasnu</author>
      <link>http://userscripts.org/posts/93949</link>
    </item>
    <item>
      <title>Different link method, replied by BJR</title>
      <description>&lt;p&gt;Hi,&lt;/p&gt;

&lt;p&gt;Sometimes it does not work, because IMDB sometimes uses another link format:&lt;/p&gt;

&lt;p&gt;ie (The dark knight) &lt;a href=&quot;http://www.imdb.com/title/tt0468569/&quot;&gt;http://www.imdb.com/title/tt0468569/&lt;/a&gt; or &lt;a href=&quot;http://www.imdb.com/Title?0468569&quot;&gt;http://www.imdb.com/Title?0468569&lt;/a&gt;
&lt;br /&gt;(which you arrive on via &lt;a href=&quot;http://www.imdb.com/Sections/Genres/Crime/average-vote&quot;&gt;http://www.imdb.com/Sections/Genres/Crime/avera...&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;so: &quot;title/tt&quot; becomes &quot;Title?&quot;&lt;/p&gt;</description>
      <pubDate>Sun, 25 Jan 2009 20:48:50 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:20817:91976</guid>
      <author>BJR</author>
      <link>http://userscripts.org/posts/91976</link>
    </item>
    <item>
      <title>Performance improvements, replied by cdefasnu</title>
      <description>&lt;p&gt;Vote history is now parsed when and only when a vote is added, deleted or changed.
&lt;br /&gt;As a result the highlights appear instantly even on pages with lots of title links and for accounts with large vote records.&lt;/p&gt;</description>
      <pubDate>Sat, 22 Nov 2008 12:09:47 +0000</pubDate>
      <guid isPermaLink="false">userscripts.org:18120:79512</guid>
      <author>cdefasnu</author>
      <link>http://userscripts.org/posts/79512</link>
    </item>
  </channel>
</rss>
