﻿
$(function() {
    var ddlBooks = $("#Book")[0];
    var ddlChapters = $("#ddlChapters")[0];
    var hdnBookLookups = $("#hdnBookLookups")[0];
    var btnMoveNext = $("#btnMoveNext");
    var btnMoveBack = $("#btnMoveBack");

    ddlBooks.onchange = function() {
        loadChapters(ddlBooks, ddlChapters, hdnBookLookups)
    };

    // Wire up all goButtons on page
    $(".goButtons").click(function() {
        goToChapter(ddlBooks, ddlChapters)
    });

    if (canMoveNextChapter(ddlChapters) || canMoveNextBook(ddlBooks)) {
        btnMoveNext.click(function() {
            moveNext(ddlBooks, ddlChapters)
        });
    }

    if (canMoveBackChapter(ddlChapters) || canMoveBackBook(ddlBooks)) {
        btnMoveBack.click(function() {
            moveBack(ddlBooks, ddlChapters, hdnBookLookups)
        });
    }

    // On invalid form, reinitialize the chapter dropdown list
    if (ddlBooks.selectedIndex > 0 && ddlChapters.length == 150) {
        var selectedChapterIndex = ddlChapters.selectedIndex
        loadChapters(ddlBooks, ddlChapters, hdnBookLookups);
        ddlChapters.selectedIndex = selectedChapterIndex;
    }
});

// Bible Search box - loads the chapters for a book
function loadChapters(ddlBooks, ddlChapters, hdnBookLookups) {
    ddlChapters.length = 0;

    // Clear chapters dropdown
    if (ddlBooks.selectedIndex == 0) {
        var opt = document.createElement("option");
        opt.text = "0";  //"[Chapter]";
        ddlChapters.options.add(opt);
        return;
    }

    // Determine chapter count
    var bookLookups = hdnBookLookups.value.split(",");
    var chapterCount = 0;
    for (var i = 0; i < bookLookups.length; i++) {
        var lookupItem = bookLookups[i].split("|");
        if (lookupItem[0] == ddlBooks.options[ddlBooks.selectedIndex].value) {
            chapterCount = lookupItem[1];
            break;
        }
    }

    // Build chapters dropdown [1 - chapterCount]
    for (var i = 1; i <= chapterCount; i++) {
        var opt = document.createElement("option");
        opt.text = i;
        ddlChapters.options.add(opt);
    }
}

// Bible Search box - redirects to view a chapter
function goToChapter(ddlBooks, ddlChapters) {
    if (ddlBooks.selectedIndex > 0) {
        var book = ddlBooks.options[ddlBooks.selectedIndex].value;
        var chapter = ddlChapters.options[ddlChapters.selectedIndex].text;
        window.location = _actionUrl + book + '/' + chapter;
    }
}

function canMoveNextChapter(ddlChapters) {
    return ddlChapters.selectedIndex < ddlChapters.length - 1;
}

function canMoveNextBook(ddlBooks) {
    return ddlBooks.selectedIndex < ddlBooks.length - 1;
}

function canMoveBackChapter(ddlChapters) {
    return ddlChapters.selectedIndex > 0;
}

function canMoveBackBook(ddlBooks) {
    return ddlBooks.selectedIndex > 1;
}

function moveNext(ddlBooks, ddlChapters) {
    if (canMoveNextBook(ddlBooks) && !canMoveNextChapter(ddlChapters)) {
        ddlBooks.selectedIndex++;
        ddlChapters.selectedIndex = 0;
    } else if (canMoveNextChapter(ddlChapters)) {
        ddlChapters.selectedIndex++;
    } else if (canMoveNextBook(ddlBooks)) {
        ddlBooks.selectedIndex++;
    }
    
    goToChapter(ddlBooks, ddlChapters);
}

function moveBack(ddlBooks, ddlChapters, hdnBookLookups) {
    if (canMoveBackBook(ddlBooks) && !canMoveBackChapter(ddlChapters)) {
        var bookLookups = hdnBookLookups.value.split(",");
        var previousBook = bookLookups[ddlBooks.selectedIndex-1].split("|")[0];
        var lastChapter = bookLookups[ddlBooks.selectedIndex-1].split("|")[1];
        window.location = _actionUrl + previousBook + '/' + lastChapter;        
    } else if (canMoveBackChapter(ddlChapters)) {
        ddlChapters.selectedIndex--;
        goToChapter(ddlBooks, ddlChapters);
    } else if (canMoveBackBook(ddlBooks)) {
        ddlBooks.selectedIndex--;
        goToChapter(ddlBooks, ddlChapters);
    }
   
}

