var t;
var len;
var len2;
var wildcard;
var lenSrch;
var lenSrch2;
var strSrch;
var strSrch2;
var strSearch;
var strSearch2;
var strSndSurname;
var lenCont0;
var lenCont1;
var strSearchCont0;
var strSearchCont1;
var xmlhttp=null;
var results=false;
var w=window;
var h=history;
var d=document;
function dtaLoad(){
	if(w.ActiveXObject){
		try{
			xmlhttp=new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch(e){
			try{
				xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
			}
			catch(e){
				xmlhttp=false;
				alert('Your internet browser is unsuitable for using this database. Suitable browsers include recent versions of Microsoft Internet Explorer, Mozilla Firefox	, Netscape and Safari. JavaScript must be enabled.');
				if(w.h.length)w.h.back();
				return;
			}
		}
	}
	else if(w.XMLHttpRequest){
		try{
			xmlhttp=new XMLHttpRequest();
			xmlhttp.overrideMimeType('text/xml');
		}
		catch(e){
			xmlhttp=false;
			alert('Your internet browser is unsuitable for using this database. Suitable browsers include recent versions of Microsoft Internet Explorer, Mozilla Firefox	, Netscape and Safari. JavaScript must be enabled.');
			if(w.h.length)w.h.back();
			return;
		}
	}
	else {
		alert('Your internet browser is unsuitable for using this database. Suitable browsers include recent versions of Microsoft Internet Explorer, Mozilla Firefox	, Netscape and Safari. JavaScript must be enabled.');
		if(w.h.length)w.h.back();
		return;
	}
	if(xmlhttp){
		xmlhttp.open('GET', 'tbldc.xml', true);
		xmlhttp.send(null);
		d.getElementById('strQuery').value="";
		d.getElementById('strQuery2').value="";
		d.getElementById('btnGo').disabled=false;
		d.getElementById('strQuery').focus();
	}
	else {
		alert('Your internet browser is unsuitable for using this database. Suitable browsers include recent versions of Microsoft Internet Explorer, Mozilla Firefox	, Netscape and Safari.');
		if(w.h.length)w.h.back();
		return;
	}
}
function findQuery(){
	d.getElementById('btnGo').disabled='disabled';
	lenSrch=d.getElementById('strQuery').value.length;
	if(lenSrch>24)lenSrch=24;
	lenSrch2=d.getElementById('strQuery2').value.length;
	if(lenSrch2>24)lenSrch2=24;
	strSrch=d.getElementById('strQuery').value.toUpperCase();
	strSrch2=d.getElementById('strQuery2').value.toLowerCase();
	len=0;
	lenCont0=0;
	lenCont1=0;
	len2=0;
	strSearch="";
	strSearchCont0="";
	strSearchCont1="";
	strSearch2="";
	wildcard=0;
	for(var i=0;i<lenSrch;i++){
		if((strSrch.charAt(i)>='A' && strSrch.charAt(i)<='Z') || strSrch.charAt(i)=="'" || strSrch.charAt(i)=="-" || strSrch.charAt(i)==" " || strSrch.charAt(i)=="*"){
			strSearch +=strSrch.charAt(i);
			len++;
		}
	}
	for(var i=0;i<len;i++){
		switch (wildcard){
			case 0:
				if(strSearch.charAt(i)=="*")break;
				strSearchCont0 +=strSearch.charAt(i);
				lenCont0++;
				break;
			case 1:
				if(strSearch.charAt(i)=="*")break;
				strSearchCont1 +=strSearch.charAt(i);
				lenCont1++;
				break;
			default:
				if(strSearch.charAt(i)=="*")break;
				strSearchCont1 +=strSearch.charAt(i);
				lenCont1++;
				break;
		}
		if(strSearch.charAt(i)=="*")wildcard++;
	}
	len=lenCont0+lenCont1;
	for(var i=0; i<lenSrch2; i++){
		if((strSrch2.charAt(i)>='a' && strSrch2.charAt(i)<='z') || strSrch2.charAt(i)==" " || strSrch2.charAt(i)=="-" || strSrch2.charAt(i)=="'"){
			strSearch2 +=strSrch2.charAt(i);
			len2++;
		}
	}
	if(len<2){
		d.getElementById('strResult').innerHTML="<table border='0' cellspacing='0'><tr><th class='error'>Data Entry Error</th></tr><tr><td class='error'>Fill in the <b>surname</b> box with at least 2 characters of the name to be found. A given name is optional. If only initials are known, enter the 1st initial only.<br />";
		d.getElementById('btnGo').disabled=false;
		d.getElementById('strQuery').focus();
		return;
	}
	else {
		d.getElementById('htmlProgress').innerHTML='Downloading the index ...';
		if(d.getElementById('blnSound').checked)strSearch=calculateSound(strSearch);
		xmlhttp.onreadystatechange=checkReadyState;
		if(xmlhttp.readyState==4 && xmlhttp.status=='200'){
			d.getElementById('htmlProgress').innerHTML='Searching ...';
			if(t)w.clearTimeout(t);
			t=w.setTimeout('runSearch()',200);
		}
	}
}
function checkReadyState(){
	if(xmlhttp.readyState==4 && xmlhttp.status=='200'){
		d.getElementById('htmlProgress').innerHTML='Searching ...';
		if(t)w.clearTimeout(t);
		t=w.setTimeout('runSearch()',200);
	}
	else if(xmlhttp.readyState==4 && xmlhttp.status !='200'){
		alert('An error occurred while loading the index');
		if(w.h.length)w.h.back();
		return;
	}
}
function runSearch(){
	var count=0;
	var strName="";
	var strName2="";
	var strArray=new Array();
	var strPrint="";
	var dcDoc=xmlhttp.responseXML;
	var sList=dcDoc.getElementsByTagName('s');
	var gList=dcDoc.getElementsByTagName('g');
	var dList=dcDoc.getElementsByTagName('d');
	var nList=dcDoc.getElementsByTagName('n');
	var xList=dcDoc.getElementsByTagName('x');
	var listLen=sList.length;
	var intSrchType;
	if(d.getElementById('blnWildcards').checked)intSrchType=0;
	else if(d.getElementById('blnExact').checked)intSrchType=1;
	else if(d.getElementById('blnSound').checked)intSrchType=2;
	var i=0;
	while (i<listLen){
		strName=sList[i].firstChild.nodeValue.toUpperCase();
		strName2=gList[i].firstChild.nodeValue.toLowerCase();
		var j=0;
		while (strName.charAt(j) !=' ' && strName.charAt(j) !='/' && strName.charAt(j)) j++;
		if(intSrchType==2)strName=calculateSound(strName.substr(0,j));
		else if(intSrchType==1)strName=strName.substr(0,j);
		if(!wildcard)lenCont0=j;
		var m=strName.indexOf(strSearchCont0);
		if((((!intSrchType && m >= 0 && strName.indexOf(strSearchCont1, m+lenCont0-1) >= 0) || (intSrchType==1 && strName.substr(0, lenCont0)==strSearchCont0 && strName.substr(j - lenCont1, lenCont1)==strSearchCont1) || (intSrchType==2 && strName==strSearch)) && (len2==0 || (len2 > 1 && strName2.indexOf(strSearch2) >= 0) || (len2==1 && strName2.charAt(0)==strSearch2.charAt(0))))){
			strArray [count]="<i>Surname:</i> "+sList[i].firstChild.nodeValue+"<br />";
			if(gList[i].firstChild.nodeValue!='-')strArray[count]+="<i>Given name(s):</i> "+gList[i].firstChild.nodeValue+"<br />";
			if(dList[i].firstChild.nodeValue!='-')strArray[count]+="<i>District:</i> "+dList[i].firstChild.nodeValue+"<br />";
			if(nList[i].firstChild.nodeValue!='-')strArray[count]+="<i>Note(s):</i> "+nList[i].firstChild.nodeValue+"<br />";
			strArray[count]+="<i>Source(s):</i> "+xList[i].firstChild.nodeValue+"<br /><br />";
			count++;
		}
		i++;
	}
	if(count){
		strArray.sort();
		strPrint='<h3 class="results">Search results <span style="font-size:13px; font-weight:normal;">(total of '+count+')</span></h3>';
		for(var i=0;i<count;i++)strPrint +=strArray[i];
		d.getElementById('strResult').innerHTML=strPrint;
		d.getElementById('htmlProgress').innerHTML='View the results below...';
		results=true;
	}
	else {
		d.getElementById('strResult').innerHTML="<h3 class='results'>Search results <span style='font-size:13px; font-weight:normal;'>(total of 0)</span></h3>The data you entered, <b><i>"+d.getElementById('strQuery').value+" "+d.getElementById('strQuery2').value+"</i></b>, is not in this database.<br /><br />";
		d.getElementById('htmlProgress').innerHTML='There are no results to view.';
		results=false;
	}
	if(!d.getElementById('strQuery').disabled)d.getElementById('strQuery').focus();
	d.getElementById('btnGo').disabled=false;
}
function calculateSound(strString){
	var strModSound="";
	var strSound="";
	var intStrLen=strString.length;
	for(var i=0;i<intStrLen;i++){
		var strChar=strString.charAt(i);
		if(strChar=='P' || strChar=='F' || strChar=='V') strSound +='1';
		else if(strChar=='B'){
			if(strString.substr(intStrLen-2,2)!='MB' && strString.substr(intStrLen-3,3)!='MBE' && strString.substr(intStrLen-4,4)!='MBES' && strString.substr(intStrLen-3,3)!='MBS')strSound +='1';
		}
		else if(strChar=='C' || strChar=='S' || strChar=='K' || (strChar=='G' && i !=intStrLen-1 && (!(i==intStrLen-2 && strString.charAt(intStrLen-1)=='N'))) || strChar=='J' || strChar=='Q' || strChar=='X' || strChar=='Z') strSound +='2';
		else if(strChar=='D' || strChar=='T') strSound +='3';
		else if(strChar=='L') strSound +='4';
		else if(strChar=='M' || strChar=='N'){
			if(i==1 && strChar=='N' && (strString.charAt(0)=='G' || strString.charAt(0)=='K' || strString.charAt(0)=='P'))strSound='5';
			else strSound +='5';
			if(i==0 && strString.charAt(1)=='C' && strChar=='M')strSound +='0';
		}
		else if(strChar=='R')strSound +='6';
		else if(strChar=='H'){
			if(i>1 && strString.charAt(i-1)=='G' && (strString.charAt(i-2)=='A' || strString.charAt(i-2)=='I' || strString.charAt(i-2)=='O' || strString.charAt(i-2)=='U')){
				strSound=strSound.substring(0,strSound.length-1);
			}
		}
		else if(strChar=='W' || strChar=='Y'){
			if(i==0 && ((strChar=='W' && strString.charAt(1)!='R') || strChar=='Y')) strSound +='9';
			else if(strChar=='Y')strSound +='0';
		}
		else if(((strChar=='A' || strChar=='I' || strChar=='O') && (i>0 || (i==0 && strString.charAt(1)!="'"))) || (i !=intStrLen-1 && strChar=='E') || strChar=='I' || strChar=='U')strSound +='0';
	}
	strModSound=strSound.charAt(0);
	strSoundLen=strSound.length;
	for(i=1; i<strSoundLen; i++){
		if(strSound.charAt(i)!=strSound.charAt(i-1)) strModSound +=strSound.charAt(i);
	}
	return strModSound;
}
function clearForm(){
	d.getElementById('htmlProgress').innerHTML="";
	d.getElementById('strResult').innerHTML="";
}//Copyright(c)2003-2011 B Leadbeater, Australia
