dynamicbible/js/reference.js
jwall@VAPPRCSN015.vap.local 2770805167 initial add
2011-11-01 18:17:02 -04:00

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;
}
}
}