// ==UserScript==
// @name        link highlighter
// @namespace   http://inasphere.net/
// @description 指定したURLに一致するリンクテキストをハイライト表示する
// @include     *
// @author      inamenai
// @license     MIT License
// @version     0.2
// ==/UserScript==

// 配布場所
//     http://d.hatena.ne.jp/inamenai/20090328/p1
// 変更履歴
//     2009/11/27 0.2 TinyURL展開機能削除
//     2009/03/28 0.1 リリース

(function() {

    // ハイライトする対象のURLを正規表現で指定した配列
    var urlRegExpArray = [
        /^http:\/\/www\.yahoo\.co\.jp/i,
        /^http:\/\/www\.google\.co\.jp/i,
        /^http:\/\/foo\.bar\.com/i
//      上記のようにここに正規表現を追加していく。行末のカンマの有無に注意。
    ];

    var anchorNodeArray = Array.slice(document.getElementsByTagName("a"));

    // アンカータグごとにループ
    for (var i = 0; i < anchorNodeArray.length; i++) {
        checkUrl(anchorNodeArray[i]);
    }
    // ハイライト用スタイルを追加
    GM_addStyle(
        "span.lh_highlight {font-weight: bold; color: #000000; background-color: #ffff66;}"
    );


    function checkUrl(anchorNode) {
        // 指定したURLごとにループ
        for (var i = 0; i < urlRegExpArray.length; i++) {

            // 現在のページがそもそもハイライト対象の場合はスキップ
            // （サイト内リンクが全部ハイライトされたりしてしまうので）
            if (urlRegExpArray[i].test(document.location.href)) {
                continue;
            }

            // アンカータグのURLが正規表現にマッチした場合はspanタグで囲う
            if (urlRegExpArray[i].test(anchorNode.getAttribute("href"))) {
                var spanNode = document.createElement("span");
                spanNode.setAttribute("class", "lh_highlight");
                anchorNode.parentNode.insertBefore(spanNode, anchorNode);
                spanNode.appendChild(anchorNode);
            }
        }
    }
})();

