// 配列arrから重複要素を除く。jQuery.uniqueがなぜか動かなかったので。
function unique(arr) 
{
    var obj = {};
    var ret = [];
    for (var i in arr) {
        obj[arr[i]] = true;
    }
    for (var i in obj) {
        ret.push(i);
    }
    return ret;
}

// タグリストを作成。遅いのでリセットボタンのみ
function make_tag_panels() 
{
    var tags=[];
//  $("span.dttag").each(function(i){
//      tags.push($(this).text());
//  });
//  tags = unique(tags).sort();
//  tags = jQuery.map(tags, function(val, i){
//      return("<span class=\"dttag\">" + val + "</span>");
//  });
    tags.push("<span id=\"tag_reset\">[リセット]</span>");
    $("#dttags").html(tags.join(" "));
}

$(function(){

$("#categorylist").tablesorter({ sortList:[[1,1]] });
$(".tableinpage").tablesorter({ widgets: ['zebra']});
//$("tr.sage").hide();
make_tag_panels();

/* もくじのトグル */
$("#show_index").click( function(){
    $("#index ul").show();
});

$("#index .li1").click( function(){
    $(this).children("ul").slideToggle('slow');
});

$("#index .li1").hover(function(){
    $(this).addClass("hover");
}, function(){
    $(this).removeClass("hover");
});


/* 項目をタグで絞り込む */
// 選択タグのリセット
$("#tag_reset").click(function(){
    $("span.checked").removeClass("checked");
    $("dt").removeClass("hide").removeClass("showed");
    $("dl.define, dl.define1, dl.define2").show();
});

// クリックしたタグで絞り込む
$("span.dttag").click(function(){
    var checked = $("span.checked");
    var text = $(this).text();
    var Query_dttag = "span.dttag:contains(" + text +")";
    var showed;
    var sel;

    if (checked.text()) {
        showed = checked.filter(":contains(" + text +")")
        if (showed.text()) {
            // 何もしない
        } else {
            // 絞込み：選択したタグ以外を非表示に
            sel = $(Query_dttag);
            sel.addClass("checked");
            sel = $("dt.showed > span:contains("+text+")").parent();
            $("dt.showed").removeClass("showed");
            sel.addClass("showed");
            $("dt:not(.showed)").parent().hide();
        }
    } else {
        // タグ初選択なので、選択したタグ以外を非表示にする
        $("dl.define:not(:has(span))").addClass("hide");
        sel = $(Query_dttag);
        sel.addClass("checked");
        sel.parent().addClass("showed");
        $("dt:not(.showed)").addClass("hide");
        $("dt.hide").parent().hide();
    }
});

// ホバー
$("span.dttag").hover(function(){
    $(this).addClass("hover");
}, function(){
    $(this).removeClass("hover");
});

// リセットボタン
$("#tag_reset").hover(function(){
    $(this).addClass("hover_reset");
}, function(){
    $(this).removeClass("hover_reset");
});

// clip!ボタン
$("input.cliptext").hide();
$("span.clip").click(function(){
    $(this).next().toggle().select();
});

});