if (document.getElementById && document.createElement) {
 //create submit and cancel buttons
 var but_submit_ref = document.createElement('BUTTON');
 var but_cancel_ref = document.createElement('BUTTON');

 //create pull down menus
 var selBook = document.createElement('SELECT');
 var selChap = document.createElement('SELECT');
 var selVer = document.createElement('SELECT');
 var selVerEnd = document.createElement('SELECT');
 var col=document.createElement('a');
 col.innerHTML=":";
 var dash=document.createElement('a');
 dash.innerHTML="-";

 //create submit and cancel texts
 var text_submit_ref = document.createTextNode('Submit');
 var text_cancel_ref = document.createTextNode('Cancel');

 //put text on buttons
 but_submit_ref.appendChild(text_submit_ref);
 but_cancel_ref.appendChild(text_cancel_ref);

 //assign functions when buttons are clicked
 but_submit_ref.onclick = saveEdit_ref;
 but_cancel_ref.onclick = cancelEdit_ref;

 //assign functions when select menus are selected
 selBook.onchange = getchap_ref;
 selChap.onchange = getverse_ref;

 var reference=false;
}

function addref(id)
{
if (editing) return;
if (reference) return;

reference=true;

var vers=document.getElementById("vers").value;

//store parent node (z) and create new UL node (UL)
var z=document.getElementById(id);
var UL=document.createElement('UL');

//fill up book drop down menu
selBook.innerHTML=document.getElementById("book").innerHTML;

z.appendChild(UL);

//insert drop down boxes and buttons
UL.appendChild(selBook);
UL.appendChild(selChap);
UL.appendChild(col);
UL.appendChild(selVer);
UL.appendChild(dash);
UL.appendChild(selVerEnd);
UL.appendChild(but_submit_ref);
UL.appendChild(but_cancel_ref);

//make sure all values are removed
selChap.innerHTML="";
selVer.innerHTML="";
selVerEnd.innerHTML="";

//focus on book pull down
selBook.focus();

}

function getchap_ref()
{
//get values from drop down menu
var vers = document.getElementById("vers").value;
var b = selBook.value;

//focus on chapter pull down
selChap.focus();

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    selChap.innerHTML=xmlhttp.responseText;
    }
  }

xmlhttp.open("GET","./bible/getchapter.php?vers="+vers+"&b="+b,true);
xmlhttp.send();
}

function getverse_ref()
{

//get values from drop down
var vers = document.getElementById("vers").value;
var b = selBook.value;
var c = selChap.value;

//focus on verse pulldown
selVer.focus();

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    selVer.innerHTML=xmlhttp.responseText;
    selVerEnd.innerHTML=xmlhttp.responseText;
    }
  }

xmlhttp.open("GET","./bible/getversenum.php?vers="+vers+"&b="+b+"&c="+c,true);
xmlhttp.send();
}

function saveEdit_ref()
{
//get created UL element (y) and original parent node (z)
var y=selBook.parentNode;
var z=y.parentNode;

//get values from pull down menus
var rb=selBook.value;
var rc=selChap.value;
var rv=selVer.value;
var re=selVerEnd.value;
var vers=document.getElementById("vers").value;

//remove pull down menus, UL, and indicate they have been removed
y.removeChild(selBook);
y.removeChild(selChap);
y.removeChild(selVer);
z.removeChild(y);
reference = false;

//get original node that was clicked on and its id 
var objNode=document.getElementById(obj);
var vSplit=objNode.id;
//split id to see if a note was clicked (n) or a verse (v)
var vArray=vSplit.split("|");

//run loop until you are at a verse (v) or the top level note grouping (vn) to get verse id
while (vArray[1]!="vn" && vArray[1]!="v")
{
	objNode=objNode.parentNode;	
	vSplit=objNode.id;
	vArray=vSplit.split("|");
	if (objNode.nodeName == 'HTML') return;
}

//save variable of top level verse ID 
var v_lookup=vArray[0];

var objArray=obj.split("|");

//distinguish between verse and note references
if (objArray[1]=="n") 
{
	id=objArray[0];
	// referenceArray=getRefVerse(id);
}
else 
{
	id="";
}

//if there isn't an end verse, set it the same as the starting verse
if (re=="") re=rv;

//make sure all the fields are filled out
if (rb==""||rc==""||rv=="") return;

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
	xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
	xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
	if (xmlhttp.readyState==4 && xmlhttp.status==200)
	{
		//second itteration to send new reference
		if (window.XMLHttpRequest)
		{// code for IE7+, Firefox, Chrome, Opera, Safari
			xmlhttp2=new XMLHttpRequest();
		}
		else
		{// code for IE6, IE5
			xmlhttp2=new ActiveXObject("Microsoft.XMLHTTP");
		}
    
		//split return from ID lookup
		var referenceArray=xmlhttp.responseText.split("/");
		var b = referenceArray[0];
		var c = referenceArray[1];
		var v = referenceArray[2];
		
		xmlhttp2.onreadystatechange=function()
  		{
  			if (xmlhttp2.readyState==4 && xmlhttp.status==200)
    			{
				//create new node with reference text
				var insVerse = document.createElement('a');
				if (rv==re)
				{
					insVerse.innerHTML="<a id=\""+xmlhttp2.responseText+'onMouseOver="ShowVerse(this);" onMouseOut="HideVerse();">'+rb+" "+rc+":"+rv+"</a>";
				}
				else
     				{
					insVerse.innerHTML="<a id=\""+xmlhttp2.responseText+'onMouseOver="ShowVerse(this);" onMouseOut="HideVerse();">'+rb+" "+rc+":"+rv+"-"+re+"</a>";
				}

    				//insert new reference in correct location
    				if(objArray[1]=="n")
				{
     					z=document.getElementById(objArray[0]+"|r");
     					z.appendChild(insVerse);
     				}
    				else
				{
					if (document.getElementById(objArray[0]+"|rdv"))
					{
      					document.getElementById(objArray[0]+"|rdv").appendChild(insVerse);
					}
     					else 
					{
      					y=document.createElement('li');
						y.id=objArray[0]+"|rdv";
      					z=document.getElementById(objArray[0]+"|vn");
      					z.appendChild(y);
      					y.appendChild(insVerse);
					}
				}
			}
		}

		//send new reference to php
		xmlhttp2.open("GET","./bible/addref.php?b="+b+"&c="+c+"&v="+v+"&id="+id+"&rb="+rb+"&rc="+rc+"&rv="+rv+"&re="+re,true);
		xmlhttp2.send();
		
	}
}
xmlhttp.open("GET","./bible/getref.php?id="+v_lookup+"&vers="+vers,true);
xmlhttp.send();
}


function cancelEdit_ref()
{
 var y=selBook.parentNode;
 var z=y.parentNode;

 y.removeChild(selBook);
 y.removeChild(selChap);
 y.removeChild(selVer);
 z.removeChild(y);

 reference = false;
}