/* EXIT if using NetScape */
if (document.layers)
{	window.alert("XML LayerMaps will NOT work in NetScape or similar browsers!");
	window.location="ngr_textlist_index.htm";
}

/* XMLDOM PROCESSING */
/* set up XMLDOM and load NGRDATA XML */
var xmlData=new ActiveXObject("Microsoft.XMLDOM");
xmlData.async="false";
xmlData.load("ngr_data.xml");
/* check for errors during XMLDOM load */
if (xmlData.parseError != 0)
{	var msg="<H3>Error!";
	msg+="<BR/>URL: "+xmlData.parseError.url;
	msg+="<BR/>Line: "+xmlData.parseError.line;
	msg+="<BR/>Error Code: "+xmlData.parseError.errorCode;
	msg+="<BR/>Reason: "+xmlData.parseError.reason;
	document.write(msg+"</H3>");
}
/* set up element retrieval by tag names */
var dataset=xmlData.getElementsByTagName("dataset");
var places=xmlData.getElementsByTagName("place");
var names=xmlData.getElementsByTagName("name");
var countys=xmlData.getElementsByTagName("county");
var ngrefs=xmlData.getElementsByTagName("ngref");
var types=xmlData.getElementsByTagName("type");
/* set up functions to return element values */	
function fncGetDataset(n) { return dataset.item(n).text }
function fncGetPlace(n) { return places.item(n).text }
function fncGetName(n) { return names.item(n).text }
function fncGetCounty(n) { return countys.item(n).text }
function fncGetNgref(n) { return ngrefs.item(n).text }
function fncGetType(n) { return types.item(n).text }
/* set up functions to return attribute values */
function fncGetCode(n) { return ngrs.item(n).getAttribute("code"); }
function fncGetTypes(n) { return ngrs.item(n).getAttribute("types"); }
function fncGetMaps(n) { return ngrs.item(n).getAttribute("maps"); }
function fncGetHref(n) { return places.item(n).getAttribute("href"); }
function fncGetLatiname(n) { return names.item(n).getAttribute("latiname"); }
function fncGetImg(n) { return types.item(n).getAttribute("img"); }
function fncGetNo(n) { return types.item(n).getAttribute("no"); }

/* TABLES AND VARIABLES */
var oTxt=""; /* output text build-up variable */
var sNgr=new Array(41), sTop=new Array(41), sLeft=new Array(41); /* tables for NGRCode OffSet values */
sNgr[00]="NH"; sTop[00]=0; sLeft[00]=1;
sNgr[01]="NJ"; sTop[01]=0; sLeft[01]=2;
sNgr[02]="NK"; sTop[02]=0; sLeft[02]=3;
sNgr[03]="NN"; sTop[03]=1; sLeft[03]=1;
sNgr[05]="NO"; sTop[05]=1; sLeft[05]=2;
sNgr[06]="NS"; sTop[06]=2; sLeft[06]=1;
sNgr[07]="NT"; sTop[07]=2; sLeft[07]=2;
sNgr[08]="NU"; sTop[08]=2; sLeft[08]=3;
sNgr[09]="NX"; sTop[09]=3; sLeft[09]=1;
sNgr[10]="NY"; sTop[10]=3; sLeft[10]=2;
sNgr[11]="NZ"; sTop[11]=3; sLeft[11]=3;
sNgr[12]="SC"; sTop[12]=4; sLeft[12]=1;
sNgr[13]="SD"; sTop[13]=4; sLeft[13]=2;
sNgr[15]="SE"; sTop[15]=4; sLeft[15]=3;
sNgr[16]="TA"; sTop[16]=4; sLeft[16]=4;
sNgr[17]="SH"; sTop[17]=5; sLeft[17]=1;
sNgr[18]="SJ"; sTop[18]=5; sLeft[18]=2;
sNgr[19]="SK"; sTop[19]=5; sLeft[19]=3;
sNgr[20]="TF"; sTop[20]=5; sLeft[20]=4;
sNgr[21]="TG"; sTop[21]=5; sLeft[21]=5;
sNgr[22]="SM"; sTop[22]=6; sLeft[22]=0;
sNgr[23]="SN"; sTop[23]=6; sLeft[23]=1;
sNgr[25]="SO"; sTop[25]=6; sLeft[25]=2;
sNgr[26]="SP"; sTop[26]=6; sLeft[26]=3;
sNgr[27]="TL"; sTop[27]=6; sLeft[27]=4;
sNgr[28]="TM"; sTop[28]=6; sLeft[28]=5;
sNgr[29]="SR"; sTop[29]=7; sLeft[29]=0;
sNgr[30]="SS"; sTop[30]=7; sLeft[30]=1;
sNgr[31]="ST"; sTop[31]=7; sLeft[31]=2;
sNgr[32]="SU"; sTop[32]=7; sLeft[32]=3;
sNgr[33]="TQ"; sTop[33]=7; sLeft[33]=4;
sNgr[35]="TR"; sTop[35]=7; sLeft[35]=5;
sNgr[36]="SW"; sTop[36]=8; sLeft[36]=0;
sNgr[37]="SX"; sTop[37]=8; sLeft[37]=1;
sNgr[38]="SY"; sTop[38]=8; sLeft[38]=2;
sNgr[39]="SZ"; sTop[39]=8; sLeft[39]=3;
sNgr[40]="TV"; sTop[40]=8; sLeft[40]=4;

/* HTML GENERATION */
/* set up page headings and background map */
document.write('<DIV STYLE="position:absolute;left:-40;top:-75;"><IMG SRC="../images/_bgmap2.gif" WIDTH="600"></DIV>');
/* create divisions positioned by NGRef */
var fCount=0;
for (i=0; i<places.length; i++) {
	var iHref=fncGetHref(i);
	if (iHref!='_.htm') {
		fCount++;
		var iNgref=fncGetNgref(i);
		var iNgr=iNgref.slice(0,2), tTop=0, tLeft=0;
		for (n=0; n<41; n++) { if (sNgr[n]==iNgr) { tTop=sTop[n]*100; tLeft=sLeft[n]*100; n=42; } }
		var posLeft=new Number(iNgref.slice(2,4))+tLeft;
		var posTop=100-iNgref.slice(4,6)+tTop;
		oTxt='<DIV STYLE="position:absolute;left:'+posLeft+';top:'+posTop+';">';
		oTxt+='<A HREF="../places/'+iHref+'">';
		oTxt+='<IMG SRC="../places/ngr/_'+fncGetImg(i)+'.gif" BORDER="0"';
		oTxt+=' ALT="'+fncGetName(i)+', '+fncGetCounty(i);
		oTxt+=' - '+fncGetType(i)+' ('+iNgref+')"></A></DIV>';
		document.write(oTxt);
	}
}
document.write('<DIV STYLE="position:absolute;left:340;top:0;width:300;">');
document.write('<H3><SMALL>WWW.</SMALL>Roman-Britain<SMALL>.ORG</SMALL></H3>');
document.write('<H3>The Full RBO</H3>');
document.write('<H4>Every Place-Name Page on the WebSite</H4>');
oTxt='<P>This map shows the location of every place-name page in RBO, of which there are currently ';
oTxt+='<EM><B>'+fCount+'</B></EM> active. ';
oTxt+='Any new place-name pages will automatically appear here, thanks to the power of XML and JavaScript programming from the RBO <I>Scriptorium</I>.</P>';
document.write(oTxt);
document.write('</DIV>');

