/**
 * @author Matt Priour, Kestrel Computer Consulting
 */

//A global variable to assign the parsed JSON to
var jsobj;

//Main Callback handler.
//simple assignment to a global variable allows me to reuse and pass
//around the object without any server trips
function handleJSON(reply){
	jsobj=reply;
}

    function buildHTML(Observations){
    var info_win = new Array();
    // Build a table element with Station number & total species observed
    for(var i=0;i<Observations.length;i++){
        str = '<table border="1"><tbody><tr class="station">';
        str += '<td colspan="2">Station '+ Observations[i].Station.number + '</td></tr>';
        str += '<tr class="sta_total"><td colspan="2">Total Species - ' + Observations[i].Station.total_sp + '</td></tr>';
       str += '<tr class="obs_header"><td>Species</td><td>Number</td></tr>';
        var details = "";
        var arr = new Array();
        // assign each Species array to a local variable to reduce typing & increase readibility
        //build an string of <tr> elements containing the details of species observed
        arr = Observations[i].Station.Species;
            for (var y=0;y<arr.length;y++){
            details+='<tr class="obs_detail"><td><a href="http://www.google.com/search?q=%22';
            details += arr[y].scientific.replace(/\s/,"+");
            details += '%22">' + arr[y].common + ' (' + arr[y].code + ')</a></td>';
            details += '<td>' + arr[y].number + '</td></tr>';
            }
        str +=    details;
        str += '</table></tr></tbody></table>';
        //add table element to array of table element html strings
        info_win[i]=str;
    }
return info_win;
}

function buildAWXtxt(Observations){
	    var info_win = new Array();
    // Build a formated text list for each Station number & total species observed
    for(var i=0;i<Observations.length;i++){
        str = 'Station ' + Observations[i].Station.number + '\n';
        str += 'Total Species - ' + Observations[i].Station.total_sp + '\n';
       str += 'Species          Number';
        var details = new Array();
        // assign each Species array to a local variable to reduce typing & increase readibility
        //build an array formatted text data elements containing the details of species observed
		//using this convention, we can assign a url property to each species line
		//through .data{elements[]} in the properties for each marker 
        arr = Observations[i].Station.Species;
            for (var y=0;y<arr.length;y++){
            details[y] = arr[y].common + ' (' + arr[y].code + ') - ' + arr[y].number + '\n';
            }
        var obs_info = new Array([str,details]);
        //add table element to array of table element html strings
        info_win[i]=obs_info;
    }
return info_win;
}

function getMin(Observations){
var minX = Number.MAX_VALUE;
var minY = Number.MAX_VALUE;

	for (i=0;i<Observations.length;i++){
		if (Observations[i].Station.lon<minX){
			minX=Observations[i].Station.lon;
		}
	}
	for (i=0;i<Observations.length;i++){
		if (Observations[i].Station.lat<minY){
			minY=Observations[i].Station.lat;
		}
	}
return new Array(minX,minY);	
}

function getMax(Observations){
var maxX = -100000000;
var maxY = Number.MIN_VALUE;

	for (i=0;i<Observations.length;i++){
		if (Observations[i].Station.lon>maxX){
			maxX=Observations[i].Station.lon;
		}
	}
	for (i=0;i<Observations.length;i++){
		if (Observations[i].Station.lat>maxY){
			maxY=Observations[i].Station.lat;
		}
	}
return new Array(maxX,maxY);	
}

function getBBox(Observations){
	var min_xy = getMin(Observations);
	var max_xy = getMax(Observations);
	var x_sum = parseFloat(min_xy[0])+ parseFloat(max_xy[0]);
	var centroid_x = x_sum/2;
	var y_sum = parseFloat(min_xy[1])+ parseFloat(max_xy[1]);
	var centroid_y = y_sum/2;
	var boxCoords = new Array(min_xy[0],min_xy[1],max_xy[0],max_xy[1],centroid_x,centroid_y);
	return boxCoords;
}
