String.prototype.trim = function() {
    return this.replace(/^[ ]+|[ ]+$/g, '');
}

if (typeof Rssad == "undefined") {
  Rssad = {};
}

if (typeof Rssad.Feemo == "undefined") {
Rssad.Feemo = {
  toggle: function(el, flag) {
    var button, box;
    var divs = el.getElementsByTagName("div");
    for (var i = 0; i < divs.length; i++) {
      e = divs[i];
      if (e.className == "feemoHelp") {
        box = e;
        break;
      }
    }
    var spans = el.getElementsByTagName("a");
    for (var j = 0; j < spans.length; j++) {
      e = spans[j];
      if (e.className == "feemoButtonAhref") {
        button = e;
        break;
      }
    }

    if (flag) {
      box.style.display = "block";
      var pos = Rssad.Feemo.getPosition(button, box);

      pos = Rssad.Feemo.fixPosition(pos, button.offsetHeight);

     // box.style.top = pos.top + 'px';
     // box.style.left = pos.left + 'px';

    } else {
      box.style.display = "none";
    }
  },

  getPosition: function(el, box) {
    var top = 0; left = 0;
    var e = el;
    while(e){ top += e.offsetTop; e = e.offsetParent; }
    e = el;
    while(e){ left += e.offsetLeft; e = e.offsetParent; }

    return {top:top + el.offsetHeight, left:left, height:box.offsetHeight, width:box.offsetWidth}
  },

  getViewRect: function() {
    rect = {top:0, left:0, height:0, width:0}

    if (document.compatMode == "CSS1Compat" && document.documentElement
        && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
      rect.width = document.documentElement.clientWidth;
      rect.height = document.documentElement.clientHeight;
    } else if (document.body
        && (document.body.clientWidth || document.body.clientHeight)) {
      rect.width = document.body.clientWidth;
      rect.height = document.body.clientHeight;
    } else if (typeof (window.innerWidth) == 'number') {
      rect.width = window.innerWidth;
      rect.height = window.innerHeight;
    }

    if (document.compatMode == "CSS1Compat" && document.documentElement
        && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
      rect.top = document.documentElement.scrollTop;
      rect.left = document.documentElement.scrollLeft;
    } else if (document.body
        && (document.body.scrollLeft || document.body.scrollTop)) {
      rect.top = document.body.scrollTop;
      rect.left = document.body.scrollLeft;
    } else if (typeof (window.pageYOffset) == 'number') {
      rect.top = window.pageYOffset;
      rect.left = window.pageXOffset;
    }

    return rect;
  },

  fixPosition: function(size, buttonHeight) {
    var view = Rssad.Feemo.getViewRect();

    if (size.top + size.height > view.top + view.height) {
      size.top = size.top - size.height - buttonHeight;
    }

    if (size.left < view.left) {
      size.left = view.left;
    } else if (size.left + size.width > view.left + view.width) {
      size.left = view.left + view.width - size.width;
    }

    return size;
  },

  buttonHtml: '<span class="feemoButton" onmouseover="Rssad.Feemo.toggle(this, true)" onmouseout="Rssad.Feemo.toggle(this, false)"><a href="$url$" class="feemoButtonAhref" target="_new">$title$</a><div class="feemoHelp"><p class="feemoHelpLead">これはなに？</p><p>$lead$</p><p class="feemoHelpButton"><a href="$url$" target="_new"><img src="$button$" /></a></p><p class="feemoHelpLogo"><img src="http://rss.rssad.jp/img/rss/feemo/button/feemoBoxButtonLogo.gif"/></p></div></span>',

  insertButton: function() {
    var DefVars = {
      title: "このRSSフィードを購読する",
      button: "http://rss.rssad.jp/img/rss/feemo/button/feemoBoxButtonMedia.gif",
      lead: "このRSSフィードを購読すると、記事が投稿されたその瞬間に更新情報をチェックできます！<br />購読は無料です。"
    };

    if (typeof FeemoVars == "undefined") {
      FeemoVars = DefVars;
    }

    var html = this.buttonHtml;
    if (typeof FeemoVars.url == "undefined" || FeemoVars.url.trim() == "") {
        var url = "";
    } else {
        var url = FeemoVars.url;
    }
    var title = FeemoVars.title || DefVars.title;
    var button = FeemoVars.button || DefVars.button;
    var lead = FeemoVars.lead || DefVars.lead;

    html = html.replace(/\$url\$/g, url);
    html = html.replace(/\$title\$/g, title);
    html = html.replace(/\$button\$/g, button);
    html = html.replace(/\$lead\$/g, lead);

    document.write(html);

    FeemoVars = {};
  },

  buttonCss: "http://rss.rssad.jp/css/rss/feeMoButton.css",

  loadCss: function() {
    var link = document.createElement("link");
    link.rel = "stylesheet";
    if (typeof FeemoVars.css == "undefined" || FeemoVars.css.trim() == "") {
      link.href = this.buttonCss;
    } else {
      link.href = FeemoVars.css;
    }
    link.type = "text/css";
    link.media = "all";
    document.getElementsByTagName("head")[0].appendChild(link);
  }
}

  Rssad.Feemo.loadCss();
}

Rssad.Feemo.insertButton();
