//-------------------------------------------------
// return index in array
//-------------------------------------------------
function IndexOfArray(arr,val)
{
  for(var i=0;i<arr.length;i++) if(arr[i]==val)return i;
  return -1;     
}
//-------------------------------------------------
// return value for a key
//-------------------------------------------------
function KeyValue(ani,key)
{
   for(var j=0;j<ani.length;j+=2)
     if(ani[j]==key)return ani[j+1];  
  return "";
}
//--------- sort array by criteria ---------------
function SortList(list,crit,rev,blanks)
{
  var newlist=new Array();

  for(var i =0;i<list.length;i++)
    {
       var ani=list[i];
       var txt=KeyValue(ani,crit);
       if(txt.length || blanks)newlist[newlist.length]=txt+"="+i;  
    } 
  newlist.sort();
  for(var i =0; i <newlist.length;i++)
    {
      var p=newlist[i].lastIndexOf("=");
      newlist[i]=newlist[i].substring(p+1);
    }  
  if(rev)newlist.reverse();  
  return newlist;
}
//----------------------------------------------
// crit is an array of remove criteria
// each entry is an array of 2-3 values:
// 1. the key (Latin,Sponsoring,Category...)
// 2. the criteria. 
// This can be: 'set': remove if key is set
//              'unset': remove if key is not set
//              '=': remove if key value is equal to value 3
//              '!='
//              '<' 
//              '>'
//              'in': remove if value 3 is in key value (string)
//              'not in'
//---------------------------------------------                
function Exclude(list,crit,exclus)
{
   var newlist=new Array();
   for(var i=0;i<list.length;i++)
     {
        var animal=animals[list[i]];
        var res=crit.length;        
        for(var j=0;j<crit.length;j++)
           {
              var acrit=crit[j];
              var val=KeyValue(animal,acrit[0]);
              if(acrit[1]=='set' && val.length) res--;
              if(acrit[1]=='unset' && !val.length) res--;              
              if(acrit[1]=='=' && val==acrit[2]) res--;              
              if(acrit[1]=='!=' && val!=acrit[2]) res--; 
              if(acrit[1]=='<' && val<acrit[2]) res--;               
              if(acrit[1]=='>' && val>acrit[2]) res--;               
              if(acrit[1]=='in' && val.indexOf(acrit[2])>=0) res--;               
              if(acrit[1]=='not in' && val.indexOf(acrit[2])<0) res--;    
           }
        if(res==crit.length||res>0&&!exclus)newlist[newlist.length]=list[i];   
     }  
   return newlist;   
}


function DisplayAnimals(l)
{
  var fnt='<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">';
  var endf='</font>';
  var lng='Deutsch';
  if(l==1) lng='Français';
  if(l==2)lng='English';  
  var keys=new Array(lng,'Sponsoring');
  var rem=new Array();
  rem[0]=new Array('Sponsoring','unset');
  rem[1]=new Array('Category','not in','Mammalia');  
  var list=SortList(animals,lng);
  mammalia=Exclude(list,rem,1);
  rem[1][2]='Aves';
  aves=Exclude(list,rem,1);
  rem[1][1]='in';
  rem[2]=new Array('Category','in','Mammalia');
  others=Exclude(list,rem,1);  
  var str=''; //fnt+'<b>Preisliste</b></font><p>';    
  str+="<table width='200px' border='0' cellspacing='0'>";
  var taxon='Säugetiere';
  if(l==1) taxon='Mammifères';
  else if (l==2) taxon='Mammals';
  taxon=fnt+'<b>'+taxon+'</b></font>';
  str+='<tr><td>'+taxon+'</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td></tr>'; 
  for(i=0;i<mammalia.length;i++)
   {
      var ani=animals[mammalia[i]];
      str+="<tr><td>"+fnt+KeyValue(ani,lng)+endf+"</td><td>"+fnt+KeyValue(ani,'Sponsoring')+endf+"</td></tr>\n";
   }
  str+='<tr><td>&nbsp;</td><td>&nbsp;</td></tr>';    
  taxon='Vögel';
  if(l==1) taxon='Oiseaux';
  else if (l==2) taxon='Birds';
  taxon=fnt+'<b>'+taxon+'</b></font>';  
  str+='<tr><td>'+taxon+'</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td></tr>'; 
  for(i=0;i<aves.length;i++)
   {
      var ani=animals[aves[i]];
      str+="<tr><td>"+fnt+KeyValue(ani,lng)+endf+"</td><td>"+fnt+KeyValue(ani,'Sponsoring')+endf+"</td></tr>\n";
   }   
  str+='<tr><td>&nbsp;</td><td>&nbsp;</td></tr>';    
  taxon='Andere';
  if(l==1) taxon='Autres';
  else if (l==2) taxon='Others';
  taxon=fnt+'<b>'+taxon+'</b></font>';  
  str+='<tr><td>'+taxon+'</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td></tr>'; 
  for(i=0;i<others.length;i++)
   {
      var ani=animals[others[i]];
      str+="<tr><td>"+fnt+KeyValue(ani,lng)+endf+"</td><td>"+fnt+KeyValue(ani,'Sponsoring')+endf+"</td></tr>\n";
   }      
  str+="</font></table>\n";
  var anilayer=document.getElementById("AniLayer");
  anilayer.innerHTML = str;  
}

function Init(l)
  {
     document.write("<div id='AniLayer' style='position:absolute; left:815px; top:250px; width:220px; z-index:5'></div>");
     DisplayAnimals(l);
 }
  
 
  

