//
// 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 += "";
}
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 += " " + myTraverse(node.childNodes.item(0)) + "";
} 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 += "" + Verse.getAttribute("number") + ". ";
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 += " " + myTraverse(vNode.childNodes.item(0)) + "";
}
}
resultText += "
";
}
}
}
result.innerHTML = "