// ==UserScript==
// @name         UnTiny URL
// @description  Expand shortened URLs into their target URLs using untiny.com
// @include      *
// @namespace    http://iescripts.org
// @date         21-7-2009
// @version      1.2
// @author       Protector one
// ==/UserScript==

(function(){
  function checkAndDo(i){
    var ob = li[i];
    if (ob.href == ob.innerText && ob.hostname in serv){
      var req = PRO_xmlhttpRequest();
      req.open('GET','http://untiny.me/api/1.0/extract/?format=text&url='+ob.href,true); 
      req.onreadystatechange = function(){
        var reppy = req.responseText;
        if (req.readyState == 4 && reppy && !reppy.match(/^[e|F]/)){
          ob.href = reppy;
          ob.innerText = reppy.slice(0,37)+(reppy.length>37?'...':'');
          req.onreadystatechange = new Function("");
          req = null;
        }
      };
      req.send(null);
    }
  }

  var i,
      serv = {'tinyurl.com':0,'bit.ly':0,'tr.im':0,'ow.ly':0,'tiny.pl':0,'is.gd':0,'twurl.nl':0,'ping.fm':0,'snurl.com':0,'snipr.com':0,'snipurl.com':0,'metamark.net':0,'xrl.us':0,'url.ie':0,'wapurl.co.uk':0,'url.co.uk':0,'rubyurl.com':0,'minilien.com':0,'easyurl.net':0,'yep.it':0,'x.se':0},
      li = document.links,
      j = li.length;
  
  for (i=0;i<j;++i){
    checkAndDo(i);
  }

})();
