// ==UserScript==
// @name        SEObar Seznam.cz S-Rank plugin
// @version     1.00
// @date        2010-06-27
// @author      Mike Samokhvalov <mikivanch@gmail.com>
// @download    http://www.puzzleclub.ru/files/seobar/+seobar_seznam_srank.js
// ==/UserScript==

(function(){
  var srank = {
    panel: 'main',

    title: 'Seznam',

    data: [{title: 'Seznam S-Rank', value: '', display: 0, store: false}],

    format: function(element, mode){
      var a = '', res = '';
      if(element.data[0].display <= mode)
      {
        if(element.data[0].value == ujs_seob.busyRank)
          a = ujs_seob.getBusyIndicator();

        if(!ujs_seob.isEmpty(element.data[0].value))
        {
          a = element.data[0].value;
          if(a != ujs_seob.getBusyIndicator() && a != ujs_seob.unrequestedRank)
            ujs_seob.removeObject(element.frame.frameId);
        }
        else
          a = ujs_seob.unrequestedRank;

        var res = '<b>' + element.title + '</b>:&nbsp;';
        if(element.frame.checkUrl)
          res += '<a href="' + element.frame.checkUrl + '" ' + ujs_seob.getAnchorAttribute() + '">' + a + '</a>';
        else
          res += a;
      }

      return res;
    },

    frame: {
      msgPrefix: 'SEObar_Seznam_SRank',
      frameId: 'SEObar_seznam_frame',
      frameToken: 'SeznamSRank',
      url: 'http://srank.seznam.cz/RPC2?url=' + escape(location.href),
      checkUrl: '',
      domain: 'srank.seznam.cz',
      deleteFrame: false,
      style: '',
      isObjectLoaded: function(){return true;},

      getDataFromDocumentFunction: function(frame){
        var query = ujs_seob.parseQuery();
        if(query.url)
          query.url = unescape(query.url);
        else
        {
          frame.deleteFrame = ujs_seob.removeFrames;
          return '';
        }

        var post = '<?xml version="1.0" encoding="UTF-8"?>'
          +'<methodCall>'
          +'<methodName>getRank</methodName><params><param><value><string>0</string></value></param>'
          +'<param><value><string>' + query.url.replace(/\&/g,'&amp;') + '</string></value></param>'
          +'<param><value><i4>0</i4></value></param></params>'
          +'</methodCall>';

        ujs_seob.request('http://srank.seznam.cz/RPC2', function(r){
          var info = '';

          if(r.responseXML)
          {
            var member = r.responseXML.getElementsByTagName('member');
            if(member && member.length > 0)
            {
              for(var i = 0; i < member.length; i++)
              {
                var name = '', value = '';

                var e = member.item(i).getElementsByTagName('name');
                if(e && e.length > 0)
                  name = e.item(0).textContent;

                e = member.item(i).getElementsByTagName('value');
                if(e && e.length > 0)
                  value = e.item(0).textContent;

                if(name == 'rank')
                {
                  if(value)
                  {
                    value = parseInt(value);
                    if(!isNaN(value))
                    {
                      value = Math.floor(10 * value / 255) + '/10';
                    }
                  }
                  info = value;
                  break;
                }
              }
            }
          }

          frame.deleteFrame = ujs_seob.removeFrames;
          var msg = frame.msgPrefix + frame.msg + frame.msgSeparator + frame.frameToken;
          if(info)
          {
            info = encodeURIComponent(info);
          }
          msg += frame.msgSeparator + info;
          ujs_seob.postMessage(msg, window.parent.document, window.parent);
        }, '', '', post, '', '', {'Content-type': 'text/xml; charset=UTF-8'});

        return '...';
      }
    }
  };

  if(!window.ujs_seob_plugins)
    window.ujs_seob_plugins = [];


  window.ujs_seob_plugins.push(srank);
})();
