function toggle_password() {
    input = $("form[name=signup-form] input[name=password]")
    flag = input.hasClass("pre_input")
    link = $("form[name=signup-form] a")
    val = input.val()
    if (link.html() == "show!") {
        link.html("hide")
        input.replaceWith('<input size="10" name="password" type="text" value="' + val + '" />')
    }
    else {
        link.html("show!")
        input.replaceWith('<input size="10" name="password" type="password" value="' + val + '" />')
    }
    // give the focus to the field (wether it had it or not before)
    $("form[name=signup-form] input[name=password]").focus()
    // input has been replaced so must be re-acquired and focus action rebind
    if (flag) {
        $("form[name=signup-form] input[name=password]")
        .addClass("pre_input")
        .focus(function () { $(this).removeClass("pre_input") })
        }
}

function show_slidebar() {
    // if there is content in slidebar display
    // if only filters make sure visible
    slidebar = $("#slidebar")
    if (!slidebar.children("*[id!=hide]:visible").length)
        slidebar.children("div[name=filters]").show()
    if ($.trim(slidebar.text()) != "hide")
        slidebar.show()
}

function replace_add_href() {
    // must call when hiding slidebar
    // if add book form available replace href and bind new click event
     if ($("#slidebar form[name=add]").length) {
            $("#footer a[href=/add]")
            .attr("href","javascript:;")
            .click(function () {
                $("form[name=add]").show()
                $("#slidebar div[name=filters]").hide()
                show_slidebar()
                })
        }
}

$(document).ready(function(){

    // show slidebar (filters) applied by default if none ... nothing
    show_slidebar()

    // when focus is on search field show non empty slidebar
    // and reset search query
    $("input[name=query]").focus(function () {
        // hide all (filters and form) first
        $("#slidebar").children("*[id!=hide]").hide()
        replace_add_href()
        // show only the filters
        $("#slidebar div[name=filters]").show()
        show_slidebar()})

    // initial value reseted on all non empty input fields on
    // first focus todo unacceptable behavior when value not default
    $("input[value!='']").focus(function () {
        $(this).val("").removeClass("pre_input")})

    // signin form password trick
    $("#header form[name=signin-form] input[name=password]").focus(function () {
        $(this).replaceWith('<input size="10" name="password" type="password" />')
         $("#header form[name=signin-form] input[name=password]").focus()
        })
    // sigup form password trick
    $("form[name=signup-form] input[name=password]").focus(function () {
        toggle_password()
         $("form[name=signup-form] input[name=password]").focus()
        })

    // slidebar hiding
    $("#hide>a").click(function () {
        $("#slidebar").hide()
        $("input[name=query]").val("search query").addClass("pre_input")
        replace_add_href()
    })

    // slidebar filters removal
    $("#slidebar div[name=filters] a").click(function () {
        $(this).parents("li").remove()
        // todo (only cosmetic)
    })

    // user signup
    // meaningful delete for js and non-js user
    $("#header a[class=delete]")
    .mouseover(function () {
        $(this).html("delete")
        .css("text-decoration","underline")
    })
    .mouseout(function () {
        $(this).html("x")
        .css("text-decoration","none")
    })
    .mouseout()

    // hovering book list
    $("div[class=book]").hover(
        function () { $(this).css("background","#EEE8AA") },
        function () { $(this).css("background","") }
    )
});
