activetaxon = -1;
counttaxon = 0;
var arrtaxasearch = new Array();
var arrtaxa = new Array();
var arrtaxon = new Array();
oldsearchvalue = '';
keyupaction = ''; 
gminchars = 6;

// functions, in alphabetic order
function changeHighlight(e) {
  // highlihgts row in species list
  if (IE) toetscode = event.keyCode;
  else toetscode = e.which;
	
  if (toetscode == 13) {         // enter
    if (activetaxon > -1) {   	  // species chosen
   	  selectTaxon(activetaxon);
    }
  }
  else if (toetscode == 38)  {    // arrow up
  	if (activetaxon > 0) {
  	  document.getElementById('cel' + activetaxon).className = 'soortuit';
  	  activetaxon -= 1;
  	  document.getElementById('cel' + activetaxon).className = 'soortaan';
  	}
  }
  else if (toetscode == 40)  {    // arrow down
    if (activetaxon < counttaxon -1) {
      document.getElementById('cel' + activetaxon).className = 'soortuit';
  	  activetaxon += 1;
  	  document.getElementById('cel' + activetaxon).className = 'soortaan';
  	}
  }
}

function checkYears(p_intyearfrom, p_intyearto) {
	// years check for new data selection
	
	// yearfrom must be integer and valid
	if (!is_integer(p_intyearfrom)) {
		alert('beginjaar is geen getal');
		return false;
	}
	if (p_intyearfrom * 1 > 2012) {
		alert('het beginjaar is in de toekomst');
		return false;
	}
	if (p_intyearto != '') {
		// endyear must be integer and valid
		if (!is_integer(p_intyearto)) {
			alert('eindjaar is geen getal');
			return false;
		}
		if (p_intyearto * 1 > 2012) {
			alert('het eindjaar is in de toekomst');
			return false;
		}
		if (p_intyearto * 1 < p_intyearfrom * 1) {
			alert('eindjaar moet groter of gelijk aan beginjaar zijn');
			return false;
		}
	}
	return true;
}


function changeSelection() {
	var intregid;
	
	if (document.getElementById('messagediv2')) {
		document.getElementById('messagediv2').innerHTML = '';
	}
	if (document.getElementById('mapframe').style.display == 'none') {
		document.getElementById('mapframe').style.display = 'inline';
	}
	
	if (document.getElementById('selectcountry')) {
  	var intcountryindex = document.getElementById('selectcountry').selectedIndex;
  	intregid = document.getElementById('selectcountry').options[intcountryindex].value;
  } else {
    intregid = '';
  }
  var intcountry = ;
  var intyearfrom = trim(document.getElementById('year1').value);
  var intyearto = trim(document.getElementById('endyear1').value);
  var strtaxa = document.getElementById('taxa').value;
  
  // check years
  if (!checkYears(intyearfrom, intyearto)) return;
  
  var newfilename = '/mapservice/';
  if (intregid == 37) {
  	newfilename += 'mapzoom.php';
	} else {
		newfilename += 'map_europe.php';
 	}
	newfilename += '?taxid=' + strtaxa;
  newfilename += '&regid=' + intregid;
  newfilename += '&y=' + intyearfrom;
  newfilename += '&ey=' + intyearto;
  
  // change iframe source
  document.getElementById('mapframe').src = newfilename;
}


function changeTaxagroups(formnr) {
  getminchars();
  document.getElementById('taxa').value = 0;
  if (document.getElementById('taxasearchbox')) {
      document.getElementById('taxasearchbox').value = '';
  }
  if (document.getElementById('taxonlist')) {
    document.getElementById('taxonlist').innerHTML = '';
  }
  document.getElementById('taxasearchbox').focus();
}


function changetaxlabel(nametype) {
  oldnametype = document.getElementById('scientificnames').value;
  nametype = (oldnametype == 0) ? 1 : 0;
  document.getElementById('scientificnames').value = nametype;
  if (nametype == 0) {
    document.getElementById('taxlabel0').className = 'show';
    document.getElementById('taxlabel1').className = 'hide';
  } else {
    document.getElementById('taxlabel1').className = 'show';
    document.getElementById('taxlabel0').className = 'hide';
  }
}

function checkMinchars() {
	if (document.getElementById('taxagroups')) {	// if element exists
		if (document.getElementById('taxagroups').type == 'select-one') {	// if element is selection list
			var selectedindex = document.getElementById('taxagroups').selectedIndex;	// get selected index
			var value = document.getElementById('taxagroups').options[selectedindex].value;	// get selected value
			if ((value != '') && (value != '0')) {	// if group is selected, get minchars
				getminchars();
			}
		}
	}
}

function getminchars() {
  // gets minimum typed characters required before returning a result set 
  var taxagroupsvalue;
  if (document.getElementById('taxagroups').type.indexOf('select') > 0) {
    var taxagroupsindex = document.getElementById('taxgroup').selectedIndex;
    taxagroupsvalue = document.getElementById('taxgroup').options[taxagroupsindex].value;
  } else {
    taxagroupsvalue = document.getElementById("taxagroups").value; 
  }
  
  if (taxagroupsvalue != '') {
    if (taxagroupsvalue == 0) {    // no group selected...
      gminchars = 6;
    } else {
      if (document.getElementById("country")) {
		    countryindex = document.getElementById("country").selectedIndex;
		    countryval = document.getElementById("country").options[countryindex].value;
		  } else countryval = 0;
			var pagina = '/portal/lib/ajax/taxalist.php?taxgrpid=' + taxagroupsvalue + '&regid=' + countryval + '&m=minchars';
      var xmlhttp = startxmlhttp();
      xmlhttp.open("GET", pagina, true);
      xmlhttp.onreadystatechange = function() {
      	if (xmlhttp.readyState == 4) {
        	result = trim(xmlhttp.responseText);
          if (result == 'not found') {
            gminchars = -1;   // default
          } else {
            gminchars = result;
          }
        }
      }
      xmlhttp.send(null);
    }
  }
}


function load() {
   getminchars();
}


function searchTaxa(formnr) {
  taxagroupsvalue = document.getElementById('taxagroups').value;
  searchvalue = document.getElementById('taxasearchbox').value;
  scientific = (document.getElementById('scientificnames')) ? document.getElementById('scientificnames').value : '';
  complete = true;
  if (document.getElementById('taxa')) {
  	document.getElementById('taxa').value = 0;
  }
  minchars = gminchars;            // minimum number of characters to enter
	
  if ((taxagroupsvalue == '') || (taxagroupsvalue == 0)) {
  	minchars = 6;
  }
  
  if (document.getElementById('forcesearch')) {
  	if (document.getElementById('forcesearch').value == '1') {
  		minchars = 1;
  		document.getElementById('forcesearch').value = '0';
  		oldsearchvalue = '';
  	}
  }
	
  if (searchvalue != oldsearchvalue) {
    if (searchvalue.length >= minchars) {
    	var pagina = '/portal/lib/ajax/taxalist.php?ti=1&taxgrpid=' + taxagroupsvalue + '&searchvalue=' + searchvalue + '&lanid=112345';
      if (scientific == 1) pagina += '&scientific=on';
      if (complete === true) pagina += '&complete=on';
      var xmlhttp = startxmlhttp();    // Creating the AJAX object
      xmlhttp.open('GET', pagina, true);
      xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
          arrtaxasearch.length = 0;
          var result = trim(xmlhttp.responseText);
          if (result == 'not found') {
						showMessage('geen soorten gevonden', '', 5000);
						document.getElementById('taxonlist').innerHTML = '<p>geen soorten gevonden</p>';
          } else {
            eval('arrtaxa = ' + result);
          
          	// create table
          	taxatable = '<table class="table_form">';
            var i = 0;
            var name = '';
            var title = '';
            
            for (intkey in arrtaxa) {
            	/*
              arrtaxasearch[i] = intkey;
              taxatable += '<tr><td id=\'cel' + i + '\'><a href=\'javascript:selectTaxon(' + i + ');\'>' + arrtaxa[intkey] + '</a></td></tr>';
              i += 1;
              */
              arrtaxasearch[i] = intkey;
              if (scientific === true) {
              	name = arrtaxa[intkey]['sciname'];
              	title = arrtaxa[intkey]['locname'];
              } else {
              	name = arrtaxa[intkey]['locname'];
              	title = arrtaxa[intkey]['sciname'];
              }
              if (taxagroupsvalue == 0) {
              	name += ' (' + arrtaxa[intkey]['taxagroupname'] + ')';
              }
              taxatable += '<tr>';
              taxatable += '<td id=\'cel' + i + '\' title=\'' + title + '\'>';
              taxatable += '<a href="javascript:selectTaxon(' + i + ');">';
              taxatable += name;
              taxatable += '</a>';
              taxatable += '</td>';
              taxatable += '</tr>';
              i += 1;
            } 
            taxatable += '</table>';
            activetaxon = 0;
            counttaxon = arrtaxasearch.length;
            document.getElementById("taxonlist").innerHTML = taxatable;
            document.getElementById("cel0").className = "soortaan";
            document.onkeyup = changeHighlight;
          }
        }
      }
      xmlhttp.send(null);
    } else {
    	document.getElementById("taxonlist").innerHTML = '';
   	}
    oldsearchvalue = searchvalue;
  } 
}


function selectTaxon(taxon) {
  // when selecting a taxon
  if (taxon) activetaxon = taxon;
  document.getElementById('taxa').value = arrtaxa[activetaxon]['taxid'];
  document.getElementById('taxonlist').innerHTML = '';
  
  submitit();
}


function submitit(p_page, formnr) {
  // submit form
  if (!formnr) formnr = 1;
  if (!p_page) p_page = (document.getElementById('infomethod')) ? document.getElementById('infomethod').value : 'chart';
  var nl = (document.getElementById('nologo')) ? document.getElementById('nologo').value : '';
  var fyear = 'year' + formnr;
  var fendyear = 'endyear' + formnr;
  var year = (document.getElementById(fyear)) ? document.getElementById(fyear).value : -1;
  var endyear = (document.getElementById(fendyear)) ? document.getElementById(fendyear).value : -1;
  var taxid = document.getElementById('taxa').value;
  scinames = document.getElementById('scientificnames').value;
  
  param = '?c=info&m=' + p_page + '&mm=spinfo&taxid=' + taxid + '&scinames=' + scinames;
  if (nl != '') {
  	param += '&nl=' + nl;
  }
  switch(p_page) {
    case 'graph':
    case 'chart':
    case 'chart_europe': 
      if (year == '') year = 0;
      param += '&year=' + year;
      if (endyear == '') endyear = 0;
      if (endyear >= 0) param += '&endyear=' + endyear;
      break;
    default:
  }
  
  // get regid
  var regid;
  if (document.getElementById('selectcountry')) {
  	var countryindex = document.getElementById('selectcountry').selectedIndex;
  	regid = document.getElementById('selectcountry').options[countryindex].value;
  } else {
    regid = '';
  }
  param += '&regid=' + regid;
  
	document.location.href = '' + param;
}

function changeGraph(p_taxid) {
	// get params
	var year = (document.getElementById('year1').value != '') ? document.getElementById('year1').value * 1 : 2012;
	var endyear = (document.getElementById('endyear1').value != '') ? document.getElementById('endyear1').value * 1 : 2012;
	if (endyear < year) {
		// swap years
		document.getElementById('year1').value = endyear;
		document.getElementById('endyear1').value = year;
		var temp = year;
		year = endyear;
		endyear = temp;
	}
	var showunvalidateddatavalue = (document.getElementById('showunvalidateddata').checked == true) ? 0 : 1;
	var showscientificnamevalue = (document.getElementById('showscientificname').checked == true) ? 'sci' : 'loc';
	
	var url = 'services/graph.php';
	url += '?taxid=' + p_taxid;
	url += '&y=' + year;
	url += '&ey=' + endyear;
	url += '&i=decade&gt=4&bc=459877,F2F085&bbc=614835';
	url += '&val=' + showunvalidateddatavalue;
	url += '&name=' + showscientificnamevalue;
	
	document.getElementById('graph_obs').src = url + '&ct=o';
	document.getElementById('graph_count').src = url + '&ct=c';
}


function submittaxon(formnr) { 
  if (!formnr) formnr = 1;
}
