mirror of
https://gitlab.com/walljm/dynamicbible.git
synced 2025-07-23 23:39:50 -04:00
405 lines
14 KiB
JavaScript
405 lines
14 KiB
JavaScript
//
|
|
// This code was written by Jason Wall. Feel free to use, and if you can, include a link back to www.walljm.com
|
|
// Jason@walljm.com // www.walljm.com
|
|
//
|
|
String.prototype.trim = function()
|
|
{
|
|
return this.replace(/^\s+|\s+$/g, "");
|
|
}
|
|
String.prototype.ltrim = function()
|
|
{
|
|
return this.replace(/^\s+/, "");
|
|
}
|
|
String.prototype.rtrim = function()
|
|
{
|
|
return this.replace(/\s+$/, "");
|
|
}
|
|
|
|
function delVerse(v)
|
|
{
|
|
var title = v.parentNode;
|
|
var verse = title.nextSibling;
|
|
var passages = title.parentNode;
|
|
|
|
passages.removeChild(title);
|
|
passages.removeChild(verse);
|
|
createPassagePermalink();
|
|
}
|
|
var qBookname;
|
|
var qBook;
|
|
var qChapter;
|
|
var qVsStart;
|
|
var qVsEnd;
|
|
var myTestament;
|
|
var testament;
|
|
|
|
function loadVerse()
|
|
{
|
|
// if file has querystring, get it.
|
|
url = location.href;
|
|
|
|
if (url.search(/\?/) != -1)
|
|
{
|
|
q = url.split('?');
|
|
if (q[1])
|
|
{
|
|
if (q[1].search(/\=/) != -1)
|
|
{
|
|
var pairs = q[1].split('=');
|
|
getQuery(unescape(pairs[1]));
|
|
}
|
|
else
|
|
{
|
|
getQuery(unescape(q[1]));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function clearSearch()
|
|
{
|
|
document.getElementById('ref').value = "";
|
|
document.getElementById('result').innerHTML = "";
|
|
document.getElementById('passage').innerHTML = "";
|
|
|
|
}
|
|
|
|
function nextBook()
|
|
{
|
|
var refs = document.getElementById('ref').value.split(";");
|
|
var passage = "";
|
|
document.getElementById('result').innerHTML = "";
|
|
for (var i = 0; i < refs.length; i++)
|
|
{
|
|
var ref = refs[i];
|
|
if (ref.trim() != "")
|
|
{
|
|
var myReference = new Reference(ref.trim());
|
|
if (myReference.book < 66)
|
|
{
|
|
getVersesByRef(myReference.book + 1, 1, 1, "*");
|
|
passage += bookName(myReference.book + 1) + " 1";
|
|
if (i + 1 < refs.length)
|
|
{
|
|
passage += "; ";
|
|
}
|
|
} else
|
|
{
|
|
alert("You're already at the last book of the Bible. ;)");
|
|
getVersesByRef(myReference.book, 1, 1, "*");
|
|
passage += bookName(myReference.book) + " 1";
|
|
if (i + 1 < refs.length)
|
|
{
|
|
passage += "; ";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
document.getElementById('ref').value = passage;
|
|
}
|
|
|
|
function prevBook()
|
|
{
|
|
var refs = document.getElementById('ref').value.split(";");
|
|
var passage = "";
|
|
document.getElementById('result').innerHTML = "";
|
|
for (var i = 0; i < refs.length; i++)
|
|
{
|
|
var ref = refs[i];
|
|
if (ref.trim() != "")
|
|
{
|
|
var myReference = new Reference(ref.trim());
|
|
if (myReference.book > 1)
|
|
{
|
|
getVersesByRef(myReference.book - 1, 1, 1, "*");
|
|
passage += bookName(myReference.book - 1) + " 1";
|
|
if (i + 1 < refs.length)
|
|
{
|
|
passage += "; ";
|
|
}
|
|
} else
|
|
{
|
|
alert("You're already at the last book of the Bible. ;)");
|
|
getVersesByRef(myReference.book, 1, 1, "*");
|
|
passage += bookName(myReference.book) + " 1";
|
|
if (i + 1 < refs.length)
|
|
{
|
|
passage += "; ";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
document.getElementById('ref').value = passage;
|
|
}
|
|
function showChapter()
|
|
{
|
|
var refs = document.getElementById('ref').value.split(";");
|
|
var passage = "";
|
|
document.getElementById('result').innerHTML = "";
|
|
for (var i = 0; i < refs.length; i++)
|
|
{
|
|
var ref = refs[i];
|
|
if (ref.trim() != "")
|
|
{
|
|
var myReference = new Reference(ref.trim());
|
|
getVersesByRef(myReference.book, myReference.chapter, 1, "*");
|
|
passage += myReference.bookname + " " + myReference.chapter;
|
|
if (i + 1 < refs.length)
|
|
{
|
|
passage += "; ";
|
|
}
|
|
}
|
|
}
|
|
document.getElementById('ref').value = passage;
|
|
}
|
|
function nextChapter()
|
|
{
|
|
var refs = document.getElementById('ref').value.split(";");
|
|
var passage = "";
|
|
document.getElementById('result').innerHTML = "";
|
|
for (var i = 0; i < refs.length; i++)
|
|
{
|
|
var ref = refs[i];
|
|
if (ref.trim() != "")
|
|
{
|
|
var myReference = new Reference(ref.trim());
|
|
if (myReference.chapter < myReference.lastchapter)
|
|
{
|
|
getVersesByRef(myReference.book, myReference.chapter + 1, 1, "*");
|
|
passage += myReference.bookname + " " + (myReference.chapter + 1);
|
|
if (i + 1 < refs.length)
|
|
{
|
|
passage += "; ";
|
|
}
|
|
} else
|
|
{
|
|
alert("You're already at the last chapter in the book. ;)");
|
|
getVersesByRef(myReference.book, myReference.chapter, 1, "*");
|
|
passage += myReference.bookname + " " + (myReference.chapter);
|
|
if (i + 1 < refs.length)
|
|
{
|
|
passage += "; ";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
document.getElementById('ref').value = passage;
|
|
}
|
|
function prevChapter()
|
|
{
|
|
var refs = document.getElementById('ref').value.split(";");
|
|
var passage = "";
|
|
document.getElementById('result').innerHTML = "";
|
|
for (var i = 0; i < refs.length; i++)
|
|
{
|
|
var ref = refs[i];
|
|
if (ref.trim() != "")
|
|
{
|
|
var myReference = new Reference(ref.trim());
|
|
if (myReference.chapter > 1)
|
|
{
|
|
getVersesByRef(myReference.book, myReference.chapter - 1, 1, "*");
|
|
passage += myReference.bookname + " " + (myReference.chapter - 1);
|
|
if (i + 1 < refs.length)
|
|
{
|
|
passage += "; ";
|
|
}
|
|
} else
|
|
{
|
|
alert("You're already at the first chapter in the book. ;)");
|
|
getVersesByRef(myReference.book, myReference.chapter, 1, "*");
|
|
passage += myReference.bookname + " " + (myReference.chapter);
|
|
if (i + 1 < refs.length)
|
|
{
|
|
passage += "; ";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
document.getElementById('ref').value = passage;
|
|
}
|
|
|
|
|
|
function getQuery()
|
|
{
|
|
var query = $("#ref").val();
|
|
var qs = query.split(";");
|
|
clearSearch();
|
|
for (var x in qs)
|
|
{
|
|
var q = qs[x].trim();
|
|
if (q != "")
|
|
{
|
|
// its a search term.
|
|
if (q.search(/[0-9]/i) == -1)
|
|
{
|
|
find(q);
|
|
}
|
|
// its a strongs lookup
|
|
else if (q.search(/(H|G)[0-9]/i) != -1)
|
|
{
|
|
var dict = q.substring(0, 1);
|
|
if (dict.search(/h/i) != -1) { dict = "heb"; } else { dict = "grk"; }
|
|
q = q.substring(1, q.length);
|
|
getStrongs(q, dict);
|
|
|
|
}
|
|
// its a verse reference.
|
|
else
|
|
{
|
|
var passage = "";
|
|
if (q.trim() != "")
|
|
{
|
|
var myReference = new Reference(q.trim());
|
|
getVersesByRef(myReference.book, myReference.chapter, myReference.startverse, myReference.endverse);
|
|
passage += myReference.bookname + " " + myReference.chapter + ":" + myReference.startverse + "-" + myReference.endverse;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function getVersesByRef(book, chapter, startverse, endverse)
|
|
{
|
|
var myReference = new Reference(bookName(book) + " " + chapter);
|
|
var bookname = myReference.bookname;
|
|
var longbookname = myReference.longbookname;
|
|
qBookname = bookname
|
|
qBook = book;
|
|
qChapter = chapter;
|
|
qVsStart = startverse;
|
|
qVsEnd = endverse;
|
|
document.getElementById('ref').value += bookname + " " + chapter + ":" + startverse + "-" + endverse + "; ";
|
|
processReqChange(loadXMLDocSync("xml/" + book + "-" + chapter + ".xml"));
|
|
createPassagePermalink();
|
|
}
|
|
|
|
function createPassagePermalink()
|
|
{
|
|
|
|
var r = document.getElementById("result");
|
|
var titles = r.getElementsByTagName("h2");
|
|
var p = document.getElementById('passage');
|
|
p.innerHTML = "";
|
|
var t = "";
|
|
for (var i = 0; i < titles.length; i++)
|
|
{
|
|
var title = titles[i].childNodes[2].innerHTML;
|
|
t += title + "; ";
|
|
}
|
|
p.innerHTML += "<a style='border: none; text-decoration: none;' href='./?" + t + "' title='" + t + "'><img style='border: 0px;' src='images/shape_square_link.png' /></a>";
|
|
}
|
|
|
|
function myTraverse(node)
|
|
{
|
|
var treeText = "";
|
|
if (node != null)
|
|
{
|
|
if (node.hasChildNodes())
|
|
{
|
|
if (node.nodeName == "strongs")
|
|
{
|
|
// you need to test if this is the OT or NT and set the attribute accordingly.
|
|
if (testament == "old")
|
|
{
|
|
treeText += " <a href='./?H" + node.getAttribute("number") + "' onclick='getStrongs(";
|
|
treeText += node.getAttribute("number") + ", \"heb\"";
|
|
}
|
|
if (testament == "new")
|
|
{
|
|
treeText += " <a href=\"./?G" + node.getAttribute("number") + "\" onclick='getStrongs(\"";
|
|
treeText += node.getAttribute("number") + "\", \"grk\"";
|
|
}
|
|
treeText += "); return false;' title='Strongs #: " + node.getAttribute("number") + "'>" + myTraverse(node.childNodes.item(0)) + "</a>";
|
|
} else
|
|
{
|
|
treeText += '<' + node.nodeName + '>';
|
|
for (var i = 0; i < node.childNodes.length; i++)
|
|
{
|
|
treeText += myTraverse(node.childNodes.item(i));
|
|
}
|
|
treeText += '</' + node.nodeName + '>';
|
|
}
|
|
} else
|
|
{
|
|
if (node.nodeValue != null)
|
|
{
|
|
if (node.nodeValue.search(/^(\,|\.|\:|\?|\;|\!)/) != -1)
|
|
{
|
|
treeText += node.nodeValue;
|
|
} else
|
|
{
|
|
treeText += " " + node.nodeValue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return treeText;
|
|
}
|
|
|
|
function processReqChange(xmlObj)
|
|
{
|
|
// ...processing statements go here...
|
|
var oDict = xmlObj.documentElement;
|
|
var Books = oDict.getElementsByTagName("book");
|
|
testament = Books.item(0).getAttribute("testament");
|
|
var Chapters = oDict.getElementsByTagName("chapter");
|
|
var result = document.getElementById('result');
|
|
var resultText = "";
|
|
for (i = 0; i < Chapters.length; i++)
|
|
{
|
|
var Chapter = Chapters.item(i);
|
|
if (Chapter.getAttribute("number") == qChapter)
|
|
{
|
|
var Verses = Chapter.childNodes
|
|
for (j = 0; j < Verses.length; j++)
|
|
{
|
|
var Verse = Verses.item(j);
|
|
if (Verse.nodeName == "verse")
|
|
{
|
|
if ((Verse.getAttribute("number") >= qVsStart && Verse.getAttribute("number") <= qVsEnd) || (Verse.getAttribute("number") >= qVsStart && qVsEnd == "*"))
|
|
{
|
|
var vNodes = Verse.childNodes;
|
|
resultText += "<b>" + Verse.getAttribute("number") + ".</b> ";
|
|
for (m = 0; m < vNodes.length; m++)
|
|
{
|
|
vNode = vNodes.item(m);
|
|
if (vNode.nodeName == "#text")
|
|
{
|
|
if (vNode.nodeValue.search(/^(\,|\.|\:|\?|\;|\!)/) != -1)
|
|
{
|
|
resultText += vNode.nodeValue;
|
|
} else
|
|
{
|
|
resultText += " " + vNode.nodeValue;
|
|
}
|
|
}
|
|
if (vNode.nodeName == "em")
|
|
{
|
|
resultText += myTraverse(vNode);
|
|
}
|
|
if (vNode.nodeName == "strongs")
|
|
{
|
|
// you need to test if this is the OT or NT and set the attribute accordingly.
|
|
if (testament == "old")
|
|
{
|
|
resultText += " <a href='./?H" + vNode.getAttribute("number") + "' onclick='getStrongs(\"";
|
|
resultText += vNode.getAttribute("number") + "\", \"heb\"";
|
|
}
|
|
if (testament == "new")
|
|
{
|
|
resultText += " <a href='./?G" + vNode.getAttribute("number") + "' onclick='getStrongs(\"";
|
|
resultText += vNode.getAttribute("number") + "\", \"grk\"";
|
|
}
|
|
|
|
resultText += "); return false;' title='Strongs #: " + vNode.getAttribute("number") + "'>" + myTraverse(vNode.childNodes.item(0)) + "</a>";
|
|
}
|
|
}
|
|
resultText += "<br />";
|
|
}
|
|
}
|
|
}
|
|
result.innerHTML = "<h2 class='passages'><a style='border: 0px; text-decoration: none;' class='delverse' href='#' onclick='delVerse(this); return false;'><img style='border: 0px;' src='images/delverse.gif' width='16' height='16' /></a> | " + "<a href='./?" + qBookname + " " + qChapter + ":" + qVsStart + "-" + qVsEnd + "' title='" + qBookname + " " + qChapter + ":" + qVsStart + "-" + qVsEnd + "'>" + qBookname + " " + qChapter + ":" + qVsStart + "-" + qVsEnd + "</a></h2><div>" + resultText + "</div>" + result.innerHTML;
|
|
}
|
|
}
|
|
}
|
|
|