function loadXMLDocument (url) {
   var httpRequest = new XMLHttpRequest();
   httpRequest.open('GET', url, false);
   httpRequest.send(null);
   return httpRequest.responseXML;
}

function createXSLProcessor(url) {
    xslt = loadXMLDocument(url);
    xsltP = new XSLTProcessor();
    xsltP.importStylesheet(xslt);
    return xsltP;
}
function XSLTDiv(div,url) {
    this.Processor = createXSLProcessor(url);
    this.div = div;
    this.Draw = doTransform;
}

    function doTransform(doc)
    {
        var fragment = this.Processor.transformToFragment(doc, document);
        this.div.innerHTML = "";
        this.div.appendChild(fragment);
    }

function toggleBibNoteFromAnchor(e) {
	e.preventDefault();
	e.stopPropogation;
	var sib = e.target.nextSibling;
	if (sib.style.display == 'none') {
		sib.style.display = 'block';
	} else {
		sib.style.display = 'none';
	}
	var shownRef = document.evaluate(
		"//div[@class='rhtBib']",
		document,
		null,
		XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
		null);
	for (var i = 0; i< shownRef.snapshotLength; i++) {
		var aRef = shownRef.snapshotItem(i);
		if (aRef.getAttribute('id') == sib.getAttribute('id')) {
			continue;
		}
		aRef.style.display = 'none';
	}
}


function loadBibliography() {
	var bibDict = new Object(); //document.getElementById('rhtBibliography');
	var bibXML = loadXMLDocument('bibliography.xml');
	var bibProc = createXSLProcessor('biblioparts.xsl');
	var bibRefs = document.evaluate(
			"//a[@class='bibRef']",
			document,
			null,
			XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
			null);
	//alert (bibRefs.snapshotLength);
	for (var i=0; i < bibRefs.snapshotLength; i++ ) {
		var ref = bibRefs.snapshotItem(i);
		var citeName = ref.href.split("#")[1];
		//alert(citeName);
		//break;
		bibProc.setParameter(null,"ref",citeName);
		//alert(bibProc.getParameter(null, "ref"));
		//break;
		var bibFrag = bibProc.transformToFragment(bibXML, document);
		ref.onclick = toggleBibNoteFromAnchor;
		ref.parentNode.insertBefore(bibFrag, ref.nextSibling)
	}
}

window.addEventListener("load", loadBibliography, false);

