function handler(e) {
  var k, shift;
  if (navigator.appName.indexOf("Microsoft") != -1){
    k = window.event.keyCode;
    shift = window.event.shiftKey;
  }else if(navigator.userAgent.indexOf("Firefox") != -1){
    k = e.keyCode;
    shift = e.shiftKey;
  }else{
    k=e.which;
    shift=false;
  }
if (k==37 || k==44 || k==188)
  prevChapter.call();
if (k==39 || k==46 || k==190 || k==13)
  nextChapter.call();
}
document.onkeydown=handler;

//each row is a book, # of elements in each row is # ch, each element is # of verses in the ch
//a negative first value declares a chapter offset not starting at 1
var bibleInfo = [
[31, 25, 24, 26, 32, 22, 24, 22, 29, 32, 32, 20, 18, 24, 21, 16, 27, 33, 38, 18, 34, 24, 20, 67, 34, 35, 46, 22, 35, 43, 55, 32, 20, 31, 29, 43, 36, 30, 23, 23, 57, 38, 34, 34, 28, 34, 31, 22, 33, 26], //Genesis
[22, 25, 22, 31, 23, 30, 25, 32, 35, 29, 10, 51, 22, 31, 27, 36, 16, 27, 25, 26, 36, 31, 33, 18, 40, 37, 21, 43, 46, 38, 18, 35, 23, 35, 35, 38, 29, 31, 43, 38], //Exodus
[17, 16, 17, 35, 19, 30, 38, 36, 24, 20, 47, 8, 59, 57, 33, 34, 16, 30, 37, 27, 24, 33, 44, 23, 55, 46, 34, 27], //Leviticus
[54, 34, 51, 49, 31, 27, 89, 26, 23, 36, 35, 16, 33, 45, 41, 50, 13, 32, 22, 29, 35, 41, 30, 25, 18, 65, 23, 31, 40, 16, 54, 42, 56, 29, 34, 13], //Numbers
[46, 37, 29, 49, 33, 25, 26, 20, 29, 22, 32, 32, 18, 29, 23, 22, 20, 22, 21, 20, 23, 30, 25, 22, 19, 19, 26, 68, 29, 20, 30, 52, 29, 12], //Deuteronomy
[18, 24, 17, 24, 15, 27, 26, 35, 27, 43, 23, 24, 33, 15, 63, 10, 18, 28, 51, 9, 45, 34, 16, 33], //Joshua
[36, 23, 31, 24, 31, 40, 25, 35, 57, 18, 40, 15, 25, 20, 20, 31, 13, 31, 30, 48, 25], //Judges
[22, 23, 18, 22], //Ruth
[28, 36, 21, 22, 12, 21, 17, 22, 27, 27, 15, 25, 23, 52, 35, 23, 58, 30, 24, 42, 15, 23, 29, 22, 44, 25, 12, 25, 11, 31, 13], //1 Samuel
[27, 32, 39, 12, 25, 23, 29, 18, 13, 19, 27, 31, 39, 33, 37, 23, 29, 33, 43, 26, 22, 51, 39, 25], //2 Samuel
[53, 46, 28, 34, 18, 38, 51, 66, 28, 29, 43, 33, 34, 31, 34, 34, 24, 46, 21, 43, 29, 53], //1 Kings
[18, 25, 27, 44, 27, 33, 20, 29, 37, 36, 21, 21, 25, 29, 38, 20, 41, 37, 37, 21, 26, 20, 37, 20, 30], //2 Kings
[54, 55, 24, 43, 26, 81, 40, 40, 44, 14, 47, 40, 14, 17, 29, 43, 27, 17, 19, 8, 30, 19, 32, 31, 31, 32, 34, 21, 30], //1 Chronicles
[17, 18, 17, 22, 14, 42, 22, 18, 31, 19, 23, 16, 22, 15, 19, 14, 19, 34, 11, 37, 20, 12, 21, 27, 28, 23, 9, 27, 36, 27, 21, 33, 25, 33, 27, 23], //2 Chronicles
[11, 70, 13, 24, 17, 22, 28, 36, 15, 44], //Ezra
[11, 20, 32, 23, 19, 19, 73, 18, 38, 39, 36, 47, 31], //Nehemiah
[22, 23, 15, 17, 14, 14, 10, 17, 32, 3], //Esther
[22, 13, 26, 21, 27, 30, 21, 22, 35, 22, 20, 25, 28, 22, 35, 22, 16, 21, 29, 29, 34, 30, 17, 25, 6, 14, 23, 28, 25, 31, 40, 22, 33, 37, 16, 33, 24, 41, 30, 24, 34, 17], //Job
[6, 12, 8, 8, 12, 10, 17, 9, 20, 18, 7, 8, 6, 7, 5, 11, 15, 50, 14, 9, 13, 31, 6, 10, 22, 12, 14, 9, 11, 12, 24, 11, 22, 22, 28, 12, 40, 22, 13, 17, 13, 11, 5, 26, 17, 11, 9, 14, 20, 23, 19, 9, 6, 7, 23, 13, 11, 11, 17, 12, 8, 12, 11, 10, 13, 20, 7, 35, 36, 5, 24, 20, 28, 23, 10, 12, 20, 72, 13, 19, 16, 8, 18, 12, 13, 17, 7, 18, 52, 17, 16, 15, 5, 23, 11, 13, 12, 9, 9, 5, 8, 28, 22, 35, 45, 48, 43, 13, 31, 7, 10, 10, 9, 8, 18, 19, 2, 29, 176, 7, 8, 9, 4, 8, 5, 6, 5, 6, 8, 8, 3, 18, 3, 3, 21, 26, 9, 8, 24, 13, 10, 7, 12, 15, 21, 10, 20, 14, 9, 6], //Psalms
[33, 22, 35, 27, 23, 35, 27, 36, 18, 32, 31, 28, 25, 35, 33, 33, 28, 24, 29, 30, 31, 29, 35, 34, 28, 28, 27, 28, 27, 33, 31], //Proverbs
[18, 26, 22, 16, 20, 12, 29, 17, 18, 20, 10, 14], //Ecclesiastes
[17, 17, 11, 16, 16, 13, 13, 14], //Song of Solomon
[31, 22, 26, 6, 30, 13, 25, 22, 21, 34, 16, 6, 22, 32, 9, 14, 14, 7, 25, 6, 17, 25, 18, 23, 12, 21, 13, 29, 24, 33, 9, 20, 24, 17, 10, 22, 38, 22, 8, 31, 29, 25, 28, 28, 25, 13, 15, 22, 26, 11, 23, 15, 12, 17, 13, 12, 21, 14, 21, 22, 11, 12, 19, 12, 25, 24], //Isaiah
[19, 37, 25, 31, 31, 30, 34, 22, 26, 25, 23, 17, 27, 22, 21, 21, 27, 23, 15, 18, 14, 30, 40, 10, 38, 24, 22, 17, 32, 24, 40, 44, 26, 22, 19, 32, 21, 28, 18, 16, 18, 22, 13, 30, 5, 28, 7, 47, 39, 46, 64, 34], //Jeremiah
[22, 22, 66, 22, 22], //Lamentations
[28, 10, 27, 17, 17, 14, 27, 18, 11, 22, 25, 28, 23, 23, 8, 63, 24, 32, 14, 49, 32, 31, 49, 27, 17, 21, 36, 26, 21, 26, 18, 32, 33, 31, 15, 38, 28, 23, 29, 49, 26, 20, 27, 31, 25, 24, 23, 35], //Ezekiel
[21, 49, 30, 37, 31, 28, 28, 27, 27, 21, 45, 13], //Daniel
[11, 23, 5, 19, 15, 11, 16, 14, 17, 15, 12, 14, 16, 9], //Hosea
[20, 32, 21], //Joel
[15, 16, 15, 13, 27, 14, 17, 14, 15], //Amos
[21], //Obadiah
[17, 10, 10, 11], //Jonah
[16, 13, 12, 13, 15, 16, 20], //Micah
[15, 13, 19], //Nahum
[17, 20, 19], //Habakkuk
[18, 15, 20], //Zephaniah
[15, 23], //Haggai
[21, 13, 10, 14, 11, 15, 14, 23, 17, 12, 17, 14, 9, 21], //Zechariah
[14, 17, 18, 6], //Malachi
[22, 14, 17, 21, 21, 17, 18, 21, 6, 12, 19, 22, 18, 15], //Tobit
[16, 28, 10, 15, 24, 21, 32, 36, 14, 23, 23, 20, 20, 19, 13, 25], //Judith
[-10, 22, 23, 15, 17, 14, 14, 10, 17, 32, 13, 12, 6, 18, 19, 15, 24], //Greek Esther
[16, 24, 19, 20, 23, 25, 30, 21, 18, 21, 26, 27, 19, 31, 19, 29, 21, 25, 22], //Wisdom of Solomon
[30, 18, 31, 31, 15, 37, 36, 19, 18, 31, 34, 18, 26, 27, 20, 30, 32, 33, 30, 32, 28, 27, 27, 34, 26, 29, 30, 26, 28, 25, 31, 24, 31, 26, 20, 26, 31, 34, 35, 30, 23, 25, 33, 23, 26, 20, 25, 25, 16, 29, 30], //Sirach
[21, 35, 37, 37, 9], //Baruch
[-6, 73], //Letter of Jeremiah
[68], //Prayer of Azariah
[64], //Susanna
[42], //Bel and the Dragon
[64, 70, 60, 61, 68, 63, 50, 32, 73, 89, 74, 53, 53, 49, 41, 24], //1 Maccabees
[36, 32, 40, 50, 27, 31, 42, 36, 29, 38, 38, 45, 26, 46, 39], //2 Maccabees
[58, 30, 24, 63, 73, 34, 15, 96, 55], //1 Esdras
[15], //Prayer of Manasseh
[7], //Psalm 151
[29, 33, 30, 21, 51, 41, 23], //3 Maccabees
[40, 48, 36, 52, 56, 59, 140, 63, 47, 59, 46, 51, 58, 48, 63, 78], //2 Esdras
[35, 24, 21, 26, 38, 35, 23, 29, 32, 21, 27, 19, 27, 20, 32, 25, 24, 24], //4 Maccabees
[25, 23, 17, 25, 48, 34, 29, 34, 38, 42, 30, 50, 58, 36, 39, 28, 27, 35, 30, 34, 46, 46, 39, 51, 46, 75, 66, 20], //Matthew
[45, 28, 35, 41, 43, 56, 37, 38, 50, 52, 33, 44, 37, 72, 47, 20], //Mark
[80, 52, 38, 44, 39, 49, 50, 56, 62, 42, 54, 59, 35, 35, 32, 31, 37, 43, 48, 47, 38, 71, 56, 53], //Luke
[51, 25, 36, 54, 47, 71, 53, 59, 41, 42, 57, 50, 38, 31, 27, 33, 26, 40, 42, 31, 25], //John
[26, 47, 26, 37, 42, 15, 60, 40, 43, 48, 30, 25, 52, 28, 41, 40, 34, 28, 41, 38, 40, 30, 35, 27, 27, 32, 44, 31], //Acts
[32, 29, 31, 25, 21, 23, 25, 39, 33, 21, 36, 21, 14, 23, 33, 27], //Romans
[31, 16, 23, 21, 13, 20, 40, 13, 27, 33, 34, 31, 13, 40, 58, 24], //1 Corinthians
[24, 17, 18, 18, 21, 18, 16, 24, 15, 18, 33, 21, 13], //2 Corinthians
[24, 21, 29, 31, 26, 18], //Galatians
[23, 22, 21, 32, 33, 24], //Ephesians
[30, 30, 21, 23], //Philippians
[29, 23, 25, 18], //Colossians
[10, 20, 13, 18, 28], //1 Thessalonians
[12, 17, 18], //2 Thessalonians
[20, 15, 16, 16, 25, 21], //1 Timothy
[18, 26, 17, 22], //2 Timothy
[16, 15, 15], //Titus
[25], //Philemon
[14, 18, 19, 16, 14, 20, 28, 13, 28, 39, 40, 29, 25], //Hebrews
[27, 26, 18, 17, 20], //James
[25, 25, 22, 19, 14], //1 Peter
[21, 22, 18], //2 Peter
[10, 29, 24, 21, 21], //1 John
[13], //2 John
[15], //3 John
[25], //Jude
[20, 29, 22, 11, 14, 17, 17, 13, 21, 11, 19, 18, 18, 20, 8, 21, 18, 24, 21, 15, 27], //Revelation
];

function getParameter(pane, name){
	var url =pane.location.href;
	var start=url.indexOf(name+"=");
	if(start==-1)
		return "";
	start+=name.length+1;
	var end = url.indexOf("&",start);
	if(end==-1){
		end = url.indexOf("#",end);
		if(end==-1)
			return url.substring(start);
	}
	return url.substring(start, end);
}

function getFirstChapter(bookIndex){
	if(bibleInfo[bookIndex][0]>0)
		return 1;
	return bibleInfo[bookIndex][0]*-1;
}
function getNumChapters(bookIndex){
	if(bibleInfo[bookIndex][0]>0)
		return bibleInfo[bookIndex].length;
	return bibleInfo[bookIndex].length-1;
}
function getNumVerses(bookIndex, chapter){
	if(bibleInfo[bookIndex][0]>0)
		return bibleInfo[bookIndex][chapter-1];
	return bibleInfo[bookIndex][chapter-getFirstChapter(bookIndex)+1];
}

function swapPanes(){
	//swap top tabs 
	//var href=top.tabPane.location.href;
	//top.tabPane.location.href=href.substring(0,href.indexOf('=')+1)+
	//	getParameter(top.tabPane,"right")+
	//	"&right="+getParameter(top.tabPane,"left");
	try{
		var left = top.t_leftPane.location;
		top.t_leftPane.location = top.t_rightPane.location;
		top.t_rightPane.location = left;
	}catch(ex){}
	
	//swap panels
	try{
		var left = top.leftPane.location;
		top.leftPane.location = top.rightPane.location;
		top.rightPane.location = left;
	}catch(ex){}
	//top.leftPane.document.innerHtml.onload.call();
	//top.rightPane.document.innerHtml.onload.call();
}

function search(pane, type){
	//type is "scripture", "scriptureCom", "scriptureRef", or "external"
	//pane is leftPane or rightPane
	
	//reload type tabs
	var param =(pane == top.leftPane)?"left":"right";
	var tabPane = (pane == top.leftPane)?top.t_leftPane:top.t_rightPane;
	var URL=tabPane.location.href;
	var prefixIndex =URL.indexOf("side="+param);
	//var suffixIndex =URL.indexOf("&",prefixIndex);
	tabPane.location.href=URL.substring(0,prefixIndex)+"side="+param+"&type="+type;//(suffixIndex==-1?"":URL.substring(suffixIndex));
	
	//tabPane.document.innerHtml.onload.call();
	//refreshBothTabs();
	
	//change L/R pane
	pane.location.href = "/bcb?type="+type+"&"+getPassage()+"&side="+param;
}

function makeLink(type, pane, text){
	//write tab link
	var check="type="+type+"&";
	var loc=((pane==top.leftPane)?top.t_leftPane:top.t_rightPane).location.href+"&";
	return '<li '+((loc.indexOf(check)==-1)?'':'class="active"')+'>'
		+'<a href="javascript:search(top.'+(pane==top.leftPane?'left':'right')+'Pane,\''+type+'\')">'
		+text+'</a></li>';
}

function refreshBothTabs(){
	//use this for search pages when a search tab is selected
	try{
		setTabHead("left");
	}catch(e){}
	try{
		setTabHead("right");
	}catch(e){}
}

function setTabHead(side){
	if(side!="left" && side!="right"){
		refreshBothTabs();
		return;
	}
	try{
		if(!top.leftPane || !top.rightPane)
			return;
	}catch(ex){
		return;
	}
	var tabPane = (side=="left")?top.t_leftPane:top.t_rightPane;
	var paneURL = "";
	try{
		paneURL = ((side=="left")?top.leftPane:top.rightPane).location.href;
	}catch(e){}
	var authorID, bookID;
	if(paneURL.indexOf("bcb.jsp")==-1){
		var index=paneURL.indexOf("/ccel/")+6;
		var index2=paneURL.indexOf("/",index);
		var index3=paneURL.indexOf(".",index2);
		authorID=paneURL.substring(index,index2);
		bookID=paneURL.substring(index2+1,index3);
	}else{
		authorID=bookID="";
	}
	if(!tabPane || !tabPane.document || !tabPane.document.body) return;
	var tabBody = tabPane.document.body.innerHTML;
	var start = tabBody.toLowerCase().indexOf("booktitle");
	//alert("side= "+side+"\npaneurl= "+paneURL+"\nauthorID= "+authorID+"\nbookID= "+bookID+"\nstart= "+start);
	if(start!=-1){
		start = tabBody.toLowerCase().indexOf('>',start);
		var end = tabBody.toLowerCase().indexOf("</a>",start);
		var insert=">";
		if(authorID.length>1 && bookID.length>1)
			insert=" href=\"/ccel/"+authorID+"/"+bookID+".html\">";
		var title="";
		try{
			title=((side=="left")?top.leftPane:top.rightPane).document.title;
		}catch(e){
			if(getParameter(tabPane,"type")=="external")
				title="External Links";
		}
		if(title.lastIndexOf(" | ")!=-1)
			title=title.substring(0,title.lastIndexOf(" | "));
		if(title.lastIndexOf(" (")!=-1)
			title=title.substring(0,title.lastIndexOf(" ("));
		tabBody=tabBody.substring(0,start)+insert+title+tabBody.substring(end);
		tabPane.document.body.innerHTML=tabBody;
	}
}

//pane goes "next" or "prev" page
function goPage(pane, direction){
	try{
		var nav = pane.document.getElementsByName(direction+"Nav")[0];
		if(nav){
			pane.location.href = nav.href + 
				(nav.href.indexOf('?')==-1?'?':'&') + 'bcb=' +
				getParameter(pane,"bcb");
		}
	}catch(ex){}
}

function nextVerse(){
	var val=top.topPane.document.passage.scrV.selectedIndex ++;
	if(val!=top.topPane.document.passage.scrV.selectedIndex)
		passageChanged.call();
}
function prevVerse(){
	var val=top.topPane.document.passage.scrV.selectedIndex --;
	if(val!=top.topPane.document.passage.scrV.selectedIndex)
		passageChanged.call();
}
function nextChapter(){
	var val=top.topPane.document.passage.scrCh.selectedIndex ++;
	if(val!=top.topPane.document.passage.scrCh.selectedIndex)
		chapterChanged.call();
}
function prevChapter(){
	var val=top.topPane.document.passage.scrCh.selectedIndex --;
	if(val!=top.topPane.document.passage.scrCh.selectedIndex)
		chapterChanged.call();
}
function bookChanged(){
	var form = top.topPane.document.passage;
	var fullBk = form.scrCh.selectedIndex == 0;
	form.scrCh.options.length = 0;
	form.scrCh.options[0] = new Option("","0",false, fullBk);
	var start = getFirstChapter(form.scrBook.selectedIndex);
	var chs = getNumChapters(form.scrBook.selectedIndex);
	for(var i=start; i<chs+start; i++)
		form.scrCh.options[i-start+1] = new Option(""+i,""+i,false,false);
	if(!fullBk)
		form.scrCh.selectedIndex=1;
	setApocNote();
	chapterChanged.call();
}
function chapterChanged(){
	var form = top.topPane.document.passage;
	var fullCh = form.scrV.selectedIndex == 0;
	form.scrV.options.length = 0;
	if(form.scrCh.selectedIndex == 0){
		form.scrV.disabled = true;
	}else{
		form.scrV.options[0] = new Option("","0",false, fullCh);
		var vs = getNumVerses(form.scrBook.selectedIndex, form.scrCh.value);
		for(var i=1; i<=vs; i++)
			form.scrV.options[i] = new Option(""+i,""+i,false,false);
		if(!fullCh)
			form.scrV.selectedIndex=1;
	}
	passageChanged.call();
}
function passageChanged(){
	updateNavLinkStatus.call();
	var passage = getPassage();
	changePane(top.leftPane,passage);
	changePane(top.rightPane,passage);
}

function initTop(){
	var form = top.topPane.document.passage;
	
	form.scrCh.options.length = 0;
	var ch = getParameter(top.topPane, "scrCh");
	if(!ch) ch = 0;
	form.scrCh.options[0] = new Option("","0",false, ch==0);
	var start = getFirstChapter(form.scrBook.selectedIndex);
	var chs = getNumChapters(form.scrBook.selectedIndex);
	for(var i=start; i<chs+start; i++)
		form.scrCh.options[i-start+1] = new Option(""+i,""+i,false,false);
	form.scrCh.value=ch;
	
	form.scrV.options.length = 0;
	if(ch == 0){
		form.scrV.disabled = true;
	}else{
		var v = getParameter(top.topPane, "scrV");
		if(!v) v = 0;
		form.scrV.options[0] = new Option("","0",false, v==0);
		var vs = getNumVerses(form.scrBook.selectedIndex, ch);
		for(var i=1; i<=vs; i++)
			form.scrV.options[i] = new Option(""+i,""+i,false,false);
		form.scrV.selectedIndex=v;
	}
	setApocNote();
	updateNavLinkStatus.call();
}

function setApocNote(){
	var bk = top.topPane.document.passage.scrBook;
	var isApoc = bk.options[bk.selectedIndex].parentNode.label == "Apocrypha";
	var apoc = top.topPane.document.getElementsByName("apoc");
	if(apoc.length>0)
		apoc[0].style.display=isApoc? "":"none";
}

function updateNavLinkStatus(){
	var form=top.topPane.document.passage;
	var ch=form.scrCh.selectedIndex;
	var v=form.scrV.selectedIndex;
	if(ch<=1)	form.pc.disabled=true;
	else		form.pc.disabled=false;
	if(v<=1)		form.pv.disabled=true;
	else		form.pv.disabled=false;
	if(v==0 || v>=form.scrV.options.length-1)		form.nv.disabled=true;
	else		form.nv.disabled=false;
	if(ch==0 || ch>=form.scrCh.options.length-1)		form.nc.disabled=true;
	else		form.nc.disabled=false;
	if(ch==0)	form.scrV.disabled=true;
	else		form.scrV.disabled=false;
	
}

function getPassage(topPane){
	if(!topPane) topPane=top.topPane;
	var passForm=topPane.document.passage;
	var book = passForm.scrBook.value;
	var ch = parseInt(passForm.scrCh.value);
	if(isNaN(ch) || ch<1) ch=0;
	var v= parseInt(passForm.scrV.value);
	if(isNaN(v) || v<1) v=0;
	return "scrBook="+book+"&scrCh="+ch+"&scrV="+v;
}

function changePane(pane, passage){
	if(!pane)
		return;
	var href="";
	try{
		href = pane.location.href;
	}catch(e){}
	if(href.indexOf("bcb?")!=-1){
		//search page
		pane.location.href="/bcb?type="+getParameter(pane,"type")+"&"+passage;
	}else if(href.indexOf("/ccel/")!=-1){
		//desktop book page
		var index=href.indexOf("/ccel/")+6;
		var index2=href.indexOf("/",index);
		var index3=href.indexOf(".",index2);
		var authorID=href.substring(index,index2);
		var bookID=href.substring(index2+1,index3);
		var side =getParameter((pane == top.leftPane)?top.t_leftPane:top.t_rightPane, "type");
		pane.location.href="/bcb?type="+side+"&"+passage+"&authorID="+authorID+"&bookID="+bookID;
	}else if(href.indexOf("/cgi-bin/externalLinks.pl?")!=-1 || getParameter(pane==top.leftPane?top.t_leftPane:top.t_rightPane,"type")=="external"){
		//external links page
		pane.location.href = "/bcb?type=external&"+getPassage()+"&side="+((pane == top.leftPane)?"left":"right");
	}
	//else misc webpage
}

function getPaneURL(pane,num){
	var href="";
	try{
		href = pane.location.href;
	}catch(e){}
	if(href.indexOf("/ccel/")!=-1){
		//desktop book page
		var index=href.indexOf("/ccel/")+6;
		var index2=href.indexOf("/",index);
		var index3=href.indexOf(".",index2);
		var authorID=href.substring(index,index2);
		var bookID=href.substring(index2+1,index3);
		return "&"+num+"Author="+authorID+"&"+num+"Book="+bookID;
	}
	return "";
}

function openOptions(){
	if(top.prefsWindow==null  || top.prefsWindow.closed)
		top.prefsWindow = window.open("prefs.jsp", "prefsWindow", "width=350,height=350,status=yes");
	if (window.focus && top.prefsWindow!=null)
		top.prefsWindow.focus();
	if(!top.prefsWindow)
		alert("A popup blocker blocked the preferences window\n"+
			  "for the Bible tab from opening.\n"+
			  "Please configure your browser to allow popups\n"+
			  "for this page.");
}