var CACHED = [];
var sel_id = -1;
var id_tofill = 'textarea';
var field='';
var conteneur='searchresults';
var sel_spy='';
var val=""; 
function fillSuggest(o, e){
/*if(document.getElementById("sugImg").title.indexOf('OFF') != -1) 
return document.getElementById(conteneur).style.display = "none"*/;
var toSugg=false;
id_tofill = 'textarea';

if (o.id.match('value') && o.id !='textarea'){
		val=o.id.split('value')[1];
		if (val == 'InstitutionId') val='InstCode';
		if (val == 'CollectionId') val='CollCode';
		id_tofill=o.id;
		conteneur = 'searchresults_'+val;
		if (val == 'Common') val = 'Vernacular';
		field='field_'+val;
		toSugg=true;
}
else if(o.id.match('unitName')){
		id_tofill=o.id;
		conteneur = 'searchresults';
		field='field_Taxon';
		toSugg=true;
}
else if (o.id =='textarea'){
	val=document.getElementById('fieldList').value;
	if(val.match('Taxon')){
		id_tofill = 'textarea';
		document.getElementById('textarea').name = "field_"+val
		document.getElementById('textarea').setAttribute('name',"field_"+val)
		field='field_Taxon';conteneur = 'searchresults';
		toSugg=true;
		}
	else if(val.match('Genus')){
		id_tofill = 'textarea';
		document.getElementById('textarea').name = "field_"+val
		document.getElementById('textarea').setAttribute('name',"field_"+val)
		field='field_Genus';conteneur = 'searchresults';
		toSugg=true;
		}
	else if(val.match('HigherTaxon')){
		id_tofill = 'textarea';
		document.getElementById('textarea').name = "field_"+val
		document.getElementById('textarea').setAttribute('name',"field_"+val)
		field='field_HigherTaxon';conteneur = 'searchresults';
		toSugg=true;
		}
	else if(val.match('Common')){
		id_tofill = 'textarea';
		document.getElementById('textarea').name = "field_"+val
		document.getElementById('textarea').setAttribute('name',"field_"+val)
		field='field_Vernacular';conteneur = 'searchresults';
		toSugg=true;
		}
	else if(val.match('Family')){
		id_tofill = 'textarea';
		document.getElementById('textarea').name = "field_"+val
		document.getElementById('textarea').setAttribute('name',"field_"+val)
		field='field_Family';conteneur = 'searchresults';
		toSugg=true;
		}
	else if(val.match('Country')){
		id_tofill = 'textarea';
		document.getElementById('textarea').name = "field_"+val
		document.getElementById('textarea').setAttribute('name',"field_"+val)
		field='field_Country';conteneur = 'searchresults';
		toSugg=true;
	}
	else if(val.match('Inst')){
		val='InstCode';
		id_tofill = 'textarea';
		document.getElementById('textarea').name = "field_"+val
		document.getElementById('textarea').setAttribute('name',"field_"+val)
		field='field_InstCode';conteneur = 'searchresults';
		toSugg=true;
		}
	else if(val.match('CollCode')){
		val='CollCode';
		id_tofill = 'textarea';
		document.getElementById('textarea').name = "field_"+val
		document.getElementById('textarea').setAttribute('name',"field_"+val)
		field='field_CollCode';conteneur = 'searchresults';
		toSugg=true;
	}
}
if (toSugg==false) return;
// Escape oder bisher kein Zeichen eingegeben -> Liste verstecken
if (e.keyCode == 27 || o.value.length < 1)
return ;
 
// Navigationstasten werden im checkArrowKeys behandelt
if (e. keyCode > 32 && e.keyCode < 41)
return ;
 
// Return
if (e.keyCode == 13) {
var sel = document.getElementById(String(sel_id));
sel_spy=sel;
if (sel) {
val = sel.getElementsByTagName("span")[0].innerHTML;
val = val.replace("<STRONG>", "").replace("</STRONG>", "").replace("<strong>", "").replace("</strong>", "");
document.getElementById(id_tofill).value = val;
document.getElementById(id_tofill).setAttribute("value", val);
document.getElementById(id_tofill).focus();
return document.getElementById(conteneur).style.display = "none";
}
}

// Ansonsten Liste der Vorschlï¿½ge neu erstellen
if(CACHED[o.value]) return fillObject(CACHED[o.value]);
suggest["suggest.getTaxonList"](o.value,field);
}
 
 
 
function checkArrowKeys(o, e) {
if(document.getElementById("sugImg").title.indexOf('OFF') != -1) return document.getElementById(conteneur).style.display = "none";
if (o.id.match('value') && o.id !='textarea'){
		val=o.id.split('value')[1]
		if (val == 'InstitutionId') val='InstCode';
		if (val == 'CollectionId') val='CollCode';
		id_tofill=o.id;
		conteneur = 'searchresults_'+val;
		if (val == 'Common') val = 'Vernacular';
		field='field_'+val;
}
else if(o.id.match('unitName')){
		id_tofill=o.id;
		conteneur = 'searchresults';
		field='field_Taxon';
}
else if (o.id =='textarea'){
	val=document.getElementById('fieldList').value;
	if(val.match('Taxon')){
		id_tofill = 'textarea';
		field='field_Taxon';conteneur = 'searchresults';
		}
	else if(val.match('Genus')){
		id_tofill = 'textarea';
		field='field_Genus';conteneur = 'searchresults';
		}
	else if(val.match('HigherTaxon')){
		id_tofill = 'textarea';
		field='field_HigherTaxon';conteneur = 'searchresults';
		}
	else if(val.match('Common')){
		id_tofill = 'textarea';
		field='field_Vernacular';conteneur = 'searchresults';
		}
	else if(val.match('Family')){
		id_tofill = 'textarea';
		field='field_Family';conteneur = 'searchresults';
		}
	else if(val.match('Country')){
		id_tofill = 'textarea';
		field='field_Country';conteneur = 'searchresults';
	}
	else if(val.match('Inst')){
		id_tofill = 'textarea';
		document.getElementById('textarea').name = "field_"+val
		document.getElementById('textarea').setAttribute('name',"field_"+val)
		field='field_InstCode';conteneur = 'searchresults';
		}
	else if(val.match('CollCode')){
		id_tofill = 'textarea';
		document.getElementById('textarea').name = "field_"+val
		document.getElementById('textarea').setAttribute('name',"field_"+val)
		field='field_CollCode';conteneur = 'searchresults';
	}
}
else {id_tofill= 'textarea';conteneur = 'searchresults';}
 
if (e. keyCode > 32 && e.keyCode < 41) {
 
	// Bisherige Markierung zurï¿½cksetzen
	var par = document.getElementById(conteneur);
	var sel = document.getElementById(String(sel_id));
	sel_spy=sel;
	if (sel)
	sel.className = "";
	
	// Neue Markierung bestimmen
	if (e.keyCode == 40) // Down
	sel_id++;
	if (e.keyCode == 38) // Up
	sel_id--;
	if (e.keyCode == 33) // Page Up
	sel_id -= par.clientHeight/par.firstChild.clientHeight;
	if (e.keyCode == 34) // Page Down
	sel_id += par.clientHeight/par.firstChild.clientHeight;
	if (e.keyCode == 36) // Pos1
	sel_id = 0;
	if (e.keyCode == 35) // Ende
	sel_id = par.childNodes.length-1;
	
	// Drï¿½ber hinausgeschossen??
	if (sel_id <0)
	sel_id = 0;
	if (sel_id >= par.childNodes.length)
	sel_id = par.childNodes.length-1;
	// Markieren und scrollen
	var sel = document.getElementById(String(sel_id));
	sel_spy=sel;
	if (sel) {
	sel.className = "mover";
	val = sel.getElementsByTagName("span")[0].innerHTML;
	val = val.replace("<STRONG>", "").replace("</STRONG>", "").replace("<strong>", "").replace("</strong>", "");
	document.getElementById(id_tofill).value = val;
	document.getElementById(id_tofill).setAttribute("value", val);
	sel.scrollIntoView(false);
	}
	}
}
 
function doSuggest(data, state, extra){
if(state == __RPC_SUCCESS__) {
fillObject(data);
CACHED[extra.userdata] = data;
}
/*
else if(state == __RPC_TIMEOUT__)
alert("Your call has timed out");
else
alert("Error:" + extra.message);
*/
}
 
function fillObject(sHTML){
if (this.formEmpty(val)) 
	document.getElementById(conteneur).innerHTML = sHTML;
else
{
tmp = sHTML.split('<div')
sHTML=""
for (var z=0;z<tmp.length;z++){
sHTML+="<div"+tmp[z].split("<i>")[0]+"</div>"
}
	document.getElementById(conteneur).innerHTML = sHTML;
	}
document.getElementById(conteneur).style.display = "block";
 
var nodes = document.getElementById(conteneur).childNodes;
for(var i=0; i<nodes.length; i++) {
 
nodes[i].onmousemove = function() {
// alle anderen Markierungen lï¿½schen
for (var j=0; j<nodes.length; j++)
nodes[j].className = "";
 
// und jetzt die aktuelle markieren und scrollen
this.className = "mover";
sel_id = parseInt(this.id);
// IE baut Mï¿½ll beim Scrollen
//if (navigator.appName != 'Microsoft Internet Explorer')
//this.scrollIntoView(false);
}
 
nodes[i].onclick = function() {
val = this.getElementsByTagName("span")[0].innerHTML;
val = val.replace("<STRONG>", "").replace("</STRONG>", "").replace("<strong>", "").replace("</strong>", "");
document.getElementById(id_tofill).value = val;
document.getElementById(id_tofill).setAttribute("value", val);
document.getElementById(id_tofill).focus();
document.getElementById(conteneur).style.display = "none";
}
// nodes[i].onmouseover = function() {
// document.getElementById(id_tofill).value = this.getElementsByTagName("span")[0].innerHTML;
// document.getElementById(id_tofill).setAttribute("value",this.getElementsByTagName("span")[0].innerHTML);
// document.getElementById(id_tofill).focus();
// }
}
if (nodes.length <1 || sHTML=='<string/>') {
	if(document.title.match('advanced')){
			try{
			document.getElementById('searchresults_Country').style.display = "none";}
			catch(e){}
			document.getElementById('searchresults_CollCode').style.display = "none";
			document.getElementById('searchresults_InstCode').style.display = "none";
			document.getElementById('searchresults_Taxon').style.display = "none";
			document.getElementById('searchresults_HigherTaxon').style.display = "none";
			document.getElementById('searchresults_Common').style.display = "none";
			document.getElementById('searchresults_Family').style.display = "none";
			}
	try{
		document.getElementById(conteneur).style.display = "none";}
	catch(e){}

	try{
		document.getElementById('searchresults').style.display = "none";}
	catch(e){}
}
}
 
function formEmpty(current){
try{
if (document.getElementById('valueCollCode').value!="" && !current.match('CollCode'))
{ return false;}
if (document.getElementById('valueCountry').value!="" && !current.match('Country'))
{ return false;}
if (document.getElementById('valueInstCode').value!="" && !current.match('InstCode'))
{ return false;}
if (document.getElementById('valueUnitID').value!="")
{ return false;}
if (document.getElementById('valueGenus').value!="" && !current.match('Genus'))
{ return false;}
if (document.getElementById('valueFamily').value!="" && !current.match('Family'))
{ return false;}
if (document.getElementById('valueHigherTaxon').value!="" && !current.match('HigherTaxon'))
{ return false;}
if (document.getElementById('valueCommon').value!="" && !current.match('Vernacular'))
{ return false;}
if (document.getElementById('valueLocality').value!="")
{ return false;}
if (document.getElementById('valueCollector').value!="")
{ return false;}
if (document.getElementById('valuedateInf').value!="") 
{ return false;}
if (document.getElementById('valuedateSup').value!="")
{ return false;}
if (document.getElementById('valueCollNumber').value!="")
{ return false;}
if (document.getElementById('valueFieldNumber').value!="")
{ return false;}
if (document.getElementById('valueTaxon').value!="" && !current.match('Taxon'))
{return false;}
}
catch(e){return true;}
return true;
} 
 
window.onload = function(){
	CACHED=[];sel_id=-1;
	document.body.onclick = function(){
		CACHED=[];sel_id=-1;
		if ( (document.title.match('simple') || document.title.match('index') || document.title.match('advanced')) && !document.title.match('Metadata')){
			if(document.title.match('advanced')){
			try{	document.getElementById('searchresults_Country').style.display = "none";
					document.getElementById('searchresults_Country').innerHTML='';
				}
			catch(e){}
				document.getElementById('searchresults_CollCode').style.display = "none";
				document.getElementById('searchresults_CollCode').innerHTML='';
				document.getElementById('searchresults_InstCode').style.display = "none";
				document.getElementById('searchresults_InstCode').innerHTML='';
				document.getElementById('searchresults_Taxon').style.display = "none";
				document.getElementById('searchresults_Taxon').innerHTML='';
				document.getElementById('searchresults_HigherTaxon').style.display = "none";
				document.getElementById('searchresults_HigherTaxon').innerHTML='';
				document.getElementById('searchresults_Common').style.display = "none";
				document.getElementById('searchresults_Common').innerHTML='';
				document.getElementById('searchresults_Family').style.display = "none";
				document.getElementById('searchresults_Family').innerHTML='';
				}

			try{
				document.getElementById(conteneur).style.display = "none";
				document.getElementById(conteneur).innerHTML='';}
			catch(e){}

			try{
			document.getElementById('searchresults').style.display = "none";
			document.getElementById('searchresults').innerHTML='';}
			catch(e){}
		}
	}
}
 
document.onclick=function(){
CACHED=[];sel_id=-1;
try{
	if ((document.title.match('simple') || document.title.match('index') || document.title.match('advanced')) && !document.title.match('Metadata') ){

// 		if ( !document.getElementById('name').hasFocus )
			try{
				document.getElementById('searchresults').style.display = "none";}
			catch(e){}
// && !document.getElementById('searchresults').hasFocus)
// 			{
			if(document.title.match('advanced')){
			try{
			document.getElementById('searchresults_Country').style.display = "none";
			document.getElementById('searchresults_Country').innerHTML='';}
			catch(e){}
			document.getElementById('searchresults_CollCode').style.display = "none";
			document.getElementById('searchresults_CollCode').innerHTML='';
			document.getElementById('searchresults_InstCode').style.display = "none";
			document.getElementById('searchresults_InstCode').innerHTML='';
			document.getElementById('searchresults_Taxon').style.display = "none";
			document.getElementById('searchresults_Taxon').innerHTML='';
			document.getElementById('searchresults_HigherTaxon').style.display = "none";
			document.getElementById('searchresults_HigherTaxon').innerHTML='';
			document.getElementById('searchresults_Common').style.display = "none";
			document.getElementById('searchresults_Common').innerHTML='';
			document.getElementById('searchresults_Family').style.display = "none";
			document.getElementById('searchresults_Family').innerHTML='';
			}

		try{
			document.getElementById(conteneur).style.display = "none";
			document.getElementById(conteneur).innerHTML='';}
		catch(e){}
		try{
			document.getElementById('searchresults').style.display = "none";
			document.getElementById('searchresults').innerHTML='';}
		catch(e){}
		}
}catch(e){}
}
function checkTab(ev){
touche=0;
try{
touche=event.keyCode}catch(e){}
try{
touche=ev.keyCode;}catch(e){}
if (touche == '9')sel_id=-1;
}
document.onkeypress=checkTab;