// e.g. at http://www.oxfordjournals.org/nar/database/subcat/6/26 for PPI databases but applicable to all others

dblist = document.querySelectorAll('.listpaper a');

dbarr = [];
for (d=0;d<dblist.length;d++) {
	dbarr.push([dblist[d].innerHTML.replace(/^\s|\s$/g,''),dblist[d].href])
}

function DBentry(name,URL,entryURL,description,ref,abstractURL,email) {
	this.name = name;
	this.url = URL;
	this.entryurl = entryURL,
	this.desc = description;
	this.ref = ref;
	this.absurl = abstractURL;
	this.email = email;
}

dbdb = new Array(dbarr.length);
for (i=0;i<dbdb.length;i++) {
	dbdb[i] = new DBentry(dbarr[i][0],undefined,dbarr[i][1],undefined,undefined,undefined,undefined)
}

dbarr.forEach(function(entry, i){
	"use strict";
	var dbxhr = new XMLHttpRequest();
	dbxhr.open("GET",dbdb[i].entryurl,true);
	dbxhr.send();
	dbxhr.onreadystatechange = function(){
	if (dbxhr.readyState === 4 && dbxhr.status==200){
	var imgs = dbxhr.response.match(/<img.*?>/g);
	var fixDoc = dbxhr.response;
	var f = 0;
	for (f=0;f<imgs.length;f++) {
		var fixDoc = fixDoc.replace(imgs[f],imgs[f].replace('>','/>'));
	}
	
	var parser = new DOMParser();
	var dbinfo = parser.parseFromString(fixDoc,"text/xml");
// parsing a page
	if (dbinfo.querySelectorAll('div.bodytext a').length>0) {
		dbdb[i].url = dbinfo.querySelector('div.bodytext a').href;
	}
	else dbdb[i].url = null;
		
	try { dbdb[i].email = dbinfo.querySelector('div.bodytext span.subhead + a').innerText; }
	catch (e) { dbdb[i].email = null; }
	
	var abst = dbinfo.querySelector('input[type=hidden][name=category] ~ div.bodytext');
	try { if (abst.children[0].tagName == 'BR') {	dbdb[i].absurl = null; }
	else dbdb[i].absurl = abst.querySelector('a').href;
	}
	catch (e) { dbdb[i].absurl = null; }
	
	var summaries = dbinfo.querySelectorAll('h3.summary');
	var s = 0;
	for (s=0;s<summaries.length;s++) {
		if (summaries[s].innerHTML.indexOf('Database Description')>-1) {
			dbdb[i].desc = dbinfo.querySelector('h3:nth-of-type('+(1+s)+') + .bodytext').innerText.replace(/\s\s/g,'')
		}
		if (summaries[s].innerHTML.indexOf('References')>-1) {
			dbdb[i].ref = dbinfo.querySelector('h3:nth-of-type('+(1+s)+') + .bodytext').innerText.replace(/\s\s/g,'');
		}
		else dbdb[i].ref = null;
	}

// end parsing page
}
}
},i)