var showDiff = 0;
var coverage = [];

var year = ""
var quarter = ""
var event = ""
var colourIndex;
var qn;
var currentHeader = -1;
var nextHeaderQN = -1
var separator;
var searchdef;
var captureurl;

var previous = new Array();

function showEntries (entries,plaindisplay) {
    var plain = plaindisplay;
    var deleted = 0;
    var currentcc;
    var prevcc = -1;
    var changedcc;
    var pageyqt;
    var event;
    var year;
    var quarter;
    var NEWorDELETED = NEW | DELETED;
    var incCount = 0;
    var totalCount = 0;
    var pagevol = "<A HREF='"+(typeof(resultProgName)=="undefined"?progName:resultProgName)+"?vol=";
    var noSpouseRef = "<A HREF='"+noSpouse+"'>";

    if (entries.length == 0) {
	document.write("<B>No records were found by that search</B>");
	return;
    }

    if (document.cookie) {
	var cookiejar = document.cookie.split(';');
	for (var cookieitem in cookiejar) {
	    var cookieparts = cookiejar[cookieitem].split('=');
	    if (cookieparts[0].match(/^ *FreeBMDcaptureitem *$/))
		captureurl = unescape(cookieparts[1]);
	}
    }

    window.status = "displaying data"
    window.offscreenBuffering = 0;

    document.writeln(disclaimer1);
    if (scan) document.writeln(disclaimer2);
    document.writeln(disclaimer3);

    var prevSurname = '';
    var prevForename = '';
    var prevAgeAtDeath = '';
    var prevDistrict = '';
    var prevDistrictFlag = '';
    var prevVolume = '';
    var prevPage = '';
    var recno = 0;

    var item = 0;

    for (var element in entries) {
	var entryData = entries[element]
	var flags = entryData.charAt(0);
	if (flags == " ") {
	    separator = entryData.charAt(1);
	    var headItem = entryData.split(separator)
	    event = headItem[1]
	    quarter = headItem[2] * 1
	    year = headItem[3] * 1
	    qn = (year-1837) * 4 + quarter
	    prevcc = -1;
	} else {
	    var cc;
	    var i;

	    var elements = entryData.split(separator)
	    flags = parseInt(elements[0],16);
	
	    cc = flags & CC;
	    if (prevcc < 0) {
		  changedcc = 0;
		  currentcc = -1;
	    } else {
		  if (cc != prevcc) {
			changedcc = 1;
		  }
	    }
	    prevcc = cc;
	
	    i = 0

	    var surname = elements[++i];
	    if (surname) {surname = unescape(surname); prevSurname = surname} else {surname = prevSurname}
	    var forename = elements[++i];
	    if (forename) {forename = unescape(forename); prevForename = forename} else {forename = prevForename}
	    var ageAtDeath = elements[++i];
	    if (ageAtDeath) {ageAtDeath = unescape(ageAtDeath); prevAgeAtDeath = ageAtDeath} else {ageAtDeath = prevAgeAtDeath}
	    var districtFlag = elements[++i];
	    if (districtFlag) {districtFlag = unescape(districtFlag); prevDistrictFlag = districtFlag} else {districtFlag = prevDistrictFlag}
	    var district = elements[++i];
	    if (district) {district = unescape(district); prevDistrict = district} else {district = prevDistrict}
	    var volume = elements[++i];
	    if (volume) {volume = unescape(volume); prevVolume = volume} else {volume = prevVolume}
	    var page = elements[++i];
	    if (page) {page = unescape(page); prevPage = page} else {page = prevPage}
	    if (i >= elements.length-1) {
		recno++;
	    } else {
		recno += elements[++i] - 0;
	    }

	    if ((flags & NEWorDELETED) == 0 && showDiff) {continue}
	
	    if (flags & DELETED) {
		if (showDiff) {
		    continue;
		} else {
		    if (deleted == 0) {
			plain = 1;
			deleted = 1;
			currentcc = -1;
			document.write("<TR><TD COLSPAN=6><BR><H2>Deleted entries</H2>",
				       "The following are entries in the saved search that ",
				       "are no longer in the database<BR></TD></TR>");
		    }
		}
	    }
	
	    incCount++;
	    if (currentcc < 0) {
		if (incCount > headerChunk || qn >= nextHeaderQN) {
		    if (qn >= nextHeaderQN) {
			while (qn >= nextHeaderQN) {
			    currentHeader++;
			    nextHeaderQN = headerSplits[currentHeader];
			}
		    } else {
			totalCount += incCount;
			incCount = 0;
		    }
		    document.write("</TABLE><P>",tableHeaders[currentHeader]);
		}
		window.status = (totalCount+incCount)+" records displayed";
		showHeading(event,quarter,year);
		pageyqt = '<A HREF="javascript:gopage('+year+','+quarter+','+event;
		currentcc = cc;
	    } else {
		if (changedcc) {
		    cc = 1 - currentcc;
		    currentcc = cc
		} else {
		    cc = currentcc
		}
	    }
	    changedcc = 0;

	    var b = ""
	    var ub = ""
	    if (flags & DOUBLE) {b = "<B>"; ub = "</B>"}
	    if ((flags & NEW) && !showDiff) {
		b = b + "<FONT COLOR='#FF0000'>";
		ub = "</FONT>" + ub;
	    }
	
	    var colour=(plain?'#FFFFFF':colourIndex[event][cc]);
	
	    var i = '';
	    var ui = '';
	    if (districtFlag & districtSuspect) {
		i = '<I>';
		ui = '</I>';
	    }
	 
	    item ++;

	    var pageref = b+page+ub;
	    var distLink = i+b+district+ub+ui;
	    var infoLink = '';
	    var captureclick = '';
	    if (!plain) {
		if (searchdef) {
		    if (page.search(validPageVol)>=0 && volume.search(validPageVol)>=0) {
			pageref = pageyqt+",'"+volume+"','"+page+"',1)\">"+pageref+"</A>";
		    } else {
			if (event == 2) {
			    pageref = noSpouseRef+pageref+"</A>";
			}
		    }
		} else {
		    pageref = pageyqt+",'"+volume+"','"+page+"',0)\">"+pageref+"</A>";
		}
		var recRef = "r="+recno+"&d="+dbId;
		var infoAdd = '';
		for (var f in flagData) {
		    if (flags == 0) break ;
		    var thisData = flagData[f];
		    if (thisData[0] & flags) {
		        flags &= ~thisData[0];
		        if (thisData[1]) {
			    var url=thisData[1].url;
			    if (url.match(/[?]/))
			        url += '&'
			    else
			        url += '?';
			    infoAdd += "<A HREF='javascript:golink(\""+url+recRef+"\")'>"+thisData[2]+"</A>";
		    	} else {
			    infoAdd += thisData[2];
		    	}
		    }
		}
		var infoRef = info.replace(/%d/,item);
		distLink = "<A HREF='javascript:golink(\"/cgi/districts.pl?"+recRef+"\")'>"+distLink+"</A>";
		infoLink = "<A HREF='javascript:golink(\""+infourl+'?'+recRef+"\")'>"+infoRef+"</A>&nbsp;"+infoAdd+"</TD></TR>";
		if (captureurl) captureclick = ' ONDBLCLICK="goCapture(\''+recRef+'\')"';
	    }

	    document.write("<TR><TD BGCOLOR='",
			   colour, "'", captureclick, ">",
			   b, surname, ub, "</TD><TD>&nbsp;",
			   b, forename, ub, "</TD><TD>&nbsp;",
			   b, ageAtDeath, ub, "</TD><TD>&nbsp;",
			   distLink,"</TD><TD>&nbsp;",
			   b, volume, ub, "</TD><TD>", 
			   pageref,"</TD><TD>&nbsp;",
			   infoLink);
	}
    }
    document.write("</TABLE>");
    window.status = "";
}

function showHeading (event,quarter,year) {
    var qne = ((year-1837)*4+Number(quarter))*3+Number(event)+1;
    var percent = '';
    if (qne < coverage.length) {
	percent = coverage[qne];
	if (typeof(percent) == 'undefined') {
	    percent = '>99';
	}
	percent = '&nbsp;&nbsp;&nbsp;<FONT SIZE="-2">('+percent+'%)</FONT>';
    }
    document.write("<TR><TH COLSPAN=6><HR><FONT SIZE='+1'>", 
		   types[event]," ",
		   quarters[quarter-1]," ",
		   year,percent,"</FONT><HR></TH></TR>")
}


function makeHidden (data) {
    var value = ""
    var nl = ""
    for (var entry in data) {
	value += nl + data[entry];
	nl = "\n";
    }
    document.write("<INPUT TYPE=hidden NAME=searchresults VALUE='",
		   value, "'>")
    window.status = "saved search data created"
}

var oldPressed;

function pressed (obj,newimage) {
    resetPressed();
    oldPressed = obj;
    obj.unpressedsrc = obj.src;
    obj.src=newimage;
    window.onblur = resetPressed;
    return true;
}

function resetPressed () {
    if (oldPressed) {
	oldPressed.src = oldPressed.unpressedsrc;
	oldPressed = null;
    }
}

function golink (link) {
    var wndHdl = window.open(link,infoTarget);
    wndHdl.focus();
}

function gopage (y,q,t,volume,pageno,dosearch) {
    var newLocation;
    with (window.location) {
    	newLocation = protocol+'//'+host+pathname+'?'+'start='+y+'&end='+y+'&sq='+q+
		      '&eq='+q+'&type='+types[t]+'&vol='+volume+'&pgno='+pageno+
		      '&'+javascript+mono;
	if (dosearch == 1)
	    newLocation += '&'+vstring+'&'+searchdef+'&action=Find';
    }
    window.location.href = newLocation;
}

function goCapture(recRef) {
    // IE will use cached page if URL is identical
    var unique = new Date();
    unique = Math.floor(unique.getTime() % 100000);			// don't bloat URL
    var handle = window.open(captureurl+'?u='+unique+'&'+recRef,'FreeBMDAlign');
    handle.focus();
}
