// ==UserScript==
// @name           keyword-cloud
// @namespace      http://labs.cybozu.co.jp/blog/nakatani/
// @author         Nakatani Shuyo / Cybozu Labs, Inc.
// @include        *
// ==/UserScript==
(function(){
  var st = document.body.innerHTML.replace(/<li[^>]*>\s*<a.+?<\/a>\s*(?=<li)/igm,'').replace(/<li[^>]*>\s*<a.+?<\/a>\s*<\/li>/igm,'').replace(/<!--.*?-->/igm,'').replace(/<script[^>]*>[^<]*<\/script>/igm,'').replace(/<.+?>/igm, '').replace(/&nbsp;|\t|\n/gm,' ').replace(/\d+/g,'').replace(/  +/g, ' ');
  var url = "http://api.jlp.yahoo.co.jp/MAService/V1/parse";
  var data = "appid=keywordf&results=uniq&uniq_filter=9|10&sentence="+encodeURIComponent(st);

  GM_xmlhttpRequest({
    method: 'POST',
    headers: {'Content-type': 'application/x-www-form-urlencoded'},
    url: url,
    data: data,
    onload: function(res){
      if(res.status==200){
        var xml = (new DOMParser).parseFromString(res.responseText, "application/xml");
        var elm = document.createElement("div");
        document.body.insertBefore(elm, document.body.firstChild);
        var list = xml.getElementsByTagName('word');
        var words = 0;
        for(var i=0;i<list.length;i++) {
          var word = list.item(i).getElementsByTagName('surface').item(0).textContent;
          var count = parseInt(list.item(i).getElementsByTagName('count').item(0).textContent);
          if (count < 3) break;
          var size = Math.sqrt(count)*3+12;
          if (size>45) size = 45;
          var a = document.createElement('scan');
          a.innerHTML = word;
          a.style.fontSize = size+"px";
          a.style.backgroundColor='#FFDDFF';
          a.style.margin='2px';
          a.style.border='1px solid #996699';
          a.style.padding='1px';
          elm.appendChild(a);
          if (++words>30) break;
        }
      }
    }
  });
})();


