// Taxonomy Tree
var target_rank;
var target_rank_div;

function get_taxon_list(rank, tsn) {
	target_rank = rank;
	if (rank == 'class') {
		target_rank_div = "sp_" + rank;
	} else {
		target_rank_div = "sp_" + rank + '_' + tsn;
	}

    var datasetList = $(target_rank_div);
    if (datasetList.style.display == "block") {
    	datasetList.hide();
    	return true;
    }

	var url = g_SPECIES_URL + "species_tree.php?rank=" + rank + "&tsn=" + tsn;
	new Ajax.Request(url,
		{
			method: "GET",
			onSuccess: show_taxa_tree
		});

	return true;
}

function show_taxa_tree(oj) {
	res  = oj.responseText;

	if (res == "") {
		return true;
	}
	taxons = res.split(",");
	s = "";

	id_prefix = target_rank;
	var navLevel = getNavLevel(target_rank);
	switch (target_rank) {
	case "class":
		child_rank = "order";
		break;
	case "order":
		child_rank = "family";
		break;
	case "family":
		child_rank = "genus";
		break;
	case "genus":
		child_rank = "species";
		break;
	case "species":
		child_rank = "subspecies";
		break;
	}

	for (i = 0; i < taxons.length; i++) {
		var elements = taxons[i].split("|");
		var taxon_name = elements[0];
		var taxon_tsn = elements[1];

		sGet_taxon_list = "get_taxon_list('" + child_rank + "'," + taxon_tsn + ")";
		sSelectTaxa = "selectTaxa('" + target_rank + "'," + taxon_tsn + ")";

		s += '<a href="javascript: void(0);" class="navItem ' + navLevel + '" id="' + taxon_tsn + '"';
		s += ' onclick="' + sGet_taxon_list + '; ' + sSelectTaxa + '; return false;">\n';
		s += '<img src="http://seamap.env.duke.edu/folder_icon.gif" alt="" class="navIcon" title="Folder" height="16" width="16">\n';
		s += '<span class="navItemText">' + taxon_name + '</span></a>\n';
		s += '<div id="sp_' + child_rank + '_' + taxon_tsn + '"></div>\n';
	}

    var taxaList = $(target_rank_div);
    taxaList.update(s);
    taxaList.setStyle({display: "inline"});

    return true;
}

function getNavLevel(target_rank) {
	switch (target_rank) {
	case "class":
		navLevel = "navLevel1";
		break;
	case "order":
		navLevel = "navLevel2";
		break;
	case "family":
		navLevel = "navLevel3";
		break;
	case "genus":
		navLevel = "navLevel4";
		break;
	case "species":
		navLevel = "navLevel5";
		break;
	default:
		navLevel = "navLevel1";
	}

	return navLevel;
}

function show_next_species(shift) {
	var theForm = document.forms['AdvancedSpeciesSearch'];
	theForm['startAt'].value = parseInt(theForm['startAt'].value) + shift;
	submit_advanced_sp_search();
	return false;
}

var prev_tsn = "";

function selectTaxa(rank, tsn) {
	// Highlight selected taxa
	$(tsn.toString()).addClassName("currentNavItem");

	// Dehighlight previous taxa
	if (prev_tsn != '') {
		$(prev_tsn).removeClassName('currentNavItem');
	}

	prev_tsn = tsn.toString();

	var theForm = document.forms['AdvancedSpeciesSearch'];
	theForm['parent_rank'].value = rank;
	theForm['parent_tsn'].value = tsn;
	theForm['startAt'].value = 0;		// Initialize the page start.

	submit_advanced_sp_search();
	return true;
}

function submit_advanced_sp_search() {
	var url = g_SPECIES_URL + "ajax_species_gm.php";
	var form_name = 'AdvancedSpeciesSearch';

	var theForm = document.forms[form_name];
	var data = '';
	var delimiter = "";

	if (theForm['endangered'].checked && theForm['threatened'].checked) {
		theForm['protected'].value = 'all';
	} else if (theForm['endangered'].checked) {
		theForm['protected'].value = 'E';
	} else if (theForm['threatened'].checked) {
		theForm['protected'].value = 'T';
	} else {
		theForm['protected'].value = "";
	}

	if (radio_value(form_name, 'spatial_interest') == 'roi') {
		set_coords(theForm['coords']);
	}
	var data = $(form_name).serialize();

	$('result_list').hide();
	$("species_list").update("Searching database. Please wait... (may take 30-120 seconds)");

	new Ajax.Request(url,
		{
			parameters: data,
			onSuccess: show_species_list
		});
}

function show_species_list(oj) {
	res  = oj.responseText;
	$("species_list").update(res);
	return true;
}

