function selectCurrentHeaderLink() {
    var file_name = document.location.href;
    var end = (file_name.indexOf("#") == -1) ? file_name.length : file_name.indexOf("#");
    file_name = file_name.substring(file_name.lastIndexOf("/") + 1, end);

    $(".header_link > a[href='/" + file_name + "']").addClass("selected");
    $(".header_link > a[href='/" + file_name + "']").parents(".header_link").addClass("selected");
}

function startPaneController(starting_pane_list_item, hash) {
    $(window).hashchange(function() {
        var id = "#" + location.hash.split("#")[1];
        selectPaneItem(id);

        if ( location.hash.split("#").length > 1 ) {
            var sub_id = location.hash.split("#")[2];
            selectPaneSection(sub_id);
        }
    });

    // if hash contains another hash, it has a subhash
    if ( hash && hash.match(/#/) && hash.split(/#/).length > 1 ) {
        starting_pane_list_item = "#" + hash.split("#")[1];
        var sub_id = hash.split("#")[2];
    } else if ( hash ) {
        starting_pane_list_item = hash;
    }

    $pane_list_item = $(".pane_list_item[href='" + starting_pane_list_item + "']");
    var starting_slide = $(".pane_list_item").index( $pane_list_item );
    $pane_list_item.addClass("selected");
    $(".viewer_pane[href='" + starting_pane_list_item + "']").show();

    if ( sub_id ) {
        setTimeout(function () {
            selectPaneSection(sub_id);
        }, 500);
    }
}

function selectPaneItem(hash) {
    var $this = $(".pane_list_item[href='" + hash + "']");

    if ( $this.hasClass("selected") )
        return false;

    // change pane item to show its selected
    $(".pane_list_item.selected").removeClass("selected", 100);
    $this.addClass("selected", 100);

    if ( $(".viewer_pane:visible").size() ) {
        $(".viewer_pane:visible").fadeOut(100, function() {
        $(".viewer_pane[href='" + hash + "']").fadeIn(100);
        });
    } else {
        $(".viewer_pane[href='" + hash + "']").fadeIn(100);
    }
}

function selectPaneSection(id) {
    if ( $("#" + id).size() ) {
        var $element = $("#" + id);
    } else if ( $("h3:contains(" + id + ")").size() ) {
        var $element = $("h3:contains('" + id + "')");
    } else if ( $("h2:contains(" + id + ")").size() ) {
        var $element = $("h2:contains('" + id + "')");
    } else if ( $("h1:contains(" + id + ")").size() ) {
        var $element = $("h1:contains('" + id + "')");
    } else {
        return;
    }

    var top = $element.offset().top;
    $(window).scrollTop(top);
}

