$(document).ready(function(){
    init_tag_tooltip();
    sj.add_before_load_callback("#book_page_content", sui.tooltip.remove_all);
    sj.add_after_load_callback("#book_page_content", init_tag_tooltip);
});

function init_tag_tooltip() {
    $("a.tag").sui_tooltip("create", {
        content_cb: setup_tag_tooltip,
        move_with_mouse: true,
        sticky_on_click: true,
        sticky_has_close: true,
        delayed_hide: 250,
        x_offset: 20,
        y_offset: 15,
        delayed_hide_animation: {opacity: 0},
        default_css: {opacity: 1},
        restrict_y: true
    });
}

function setup_tag_tooltip(t) {
    for (var i = 0; i < sui.tooltip.active_list.length; i++) {
        if (/tag_tooltip_tags_([\d;]+)/.exec(sui.tooltip.active_list[i].content.attr("id"))[1] == /pd:([\d;]+)/.exec(t.attr("href"))[1]) {
            return i;
        }
    }
    if (!tag_data) {
        return $("<div></div>");
    }
    var pd = t.attr("href");
    pd = /pd:([\d;]+)/.exec(pd);
    var pds = pd[1].split(";");
    var tds = new Array();
    for (var i = 0; i < pds.length; i++) {
        var td = tag_data[parseInt(pds[i])];
        if (typeof(td) == "object") {
            tds.push(td);
        }
    }
    var ttt = $("#tag_tooltip_template").clone();
    var z = ttt.find(".tag_tooltip_data");
    var nz = new Array();
    var id = "tag_tooltip_tags_";
    for (var i = 0; i < tds.length; i++) {
        var x = z.clone();
        if (tds[i].data.word != "") {
            x.find(".tag_tooltip_word").html(tds[i].data.word);
        } else {
            x.find(".tag_tooltip_word, .tag_tooltip_word_header").remove();
        }
        if (tds[i].data.word_yomi != "") {
            x.find(".tag_tooltip_word_yomi").html(tds[i].data.word_yomi);
        } else {
            x.find(".tag_tooltip_word_yomi, .tag_tooltip_word_yomi_header").remove();
        }
        if (tds[i].data.meaning != "") {
            x.find(".tag_tooltip_meaning").html(tds[i].data.meaning);
        } else {
            x.find(".tag_tooltip_meaning, .tag_tooltip_meaning_header").remove();
        }
        if (tds[i].data.usage != "") {
            x.find(".tag_tooltip_usage").html(tds[i].data.usage);
        } else {
            x.find(".tag_tooltip_usage, .tag_tooltip_usage_header").remove();
        }
        if (tds[i].data.additional_usage != "") {
            x.find(".tag_tooltip_additional_usage").html(tds[i].data.additional_usage);
        } else {
            x.find(".tag_tooltip_additional_usage, .tag_tooltip_additional_usage_header").remove();
        }
        nz.push(x);
        if (id != "tag_tooltip_tags_") {
            id += ";";
        }
        id += tds[i].id;
    }
    z.remove();
    ttt.attr("id", id);
    for (var i = 0; i < nz.length; i++) {
        ttt.append(nz[i]);
    }
    return ttt;
}

