var tpl = "" +
	"<li class=\"category_:cat :row_style\">" + 
		"<h2><a href=\"#\" rel=\":marker_index\">:display_name_short (:code_icao:code_iata)</a></h2>" +
		"<div class=\"info\">:metro_area</div>" +
		"<div class=\"info\">:city, :county, :country</div>" +
	"</li>";

tpl = "" +
"<li class=\"category_:cat :row_style\">" + 
	"<h2><a href=\"#\" rel=\":marker_index\">:display_name_short (:code_icao:code_iata)</a></h2>" +
//	"<div class=\"info\">:metro_area</div>" +
	"<div class=\"info\">:country</div>" +
"</li>";

var tplAddress = "" +
"<li id=\":index\" class=\"category_:cat :row_style\">" + 
	"<h2><a href=\"#\" rel=\":marker_index\">:display_name_short (:code_icao:code_iata)</a></h2>" +
	"<div class=\"info\">:metro_area</div>" +
	"<div class=\"info\">:city, :county, :country</div>" +
	"<div class=\"info\">:distance miles away (<a href=\"\">get directions</a>)</div>" +
"</li>";

tplAddress = "" +
"<li id=\":index\" class=\"category_:cat :row_style\">" + 
	"<h2><a href=\"#\" rel=\":marker_index\">:display_name_short (:code_icao:code_iata)</a></h2>" +
	//"<div class=\"info\">:metro_area</div>" +
	"<div class=\"info\">:country</div>" +
	"<div class=\"info\">:distance miles away</div>" +
"</li>";

var tplPopup = "" +
	"<li class=\"category_:cat :row_style\">" + 
		"<h2>:display_name_short (:code_icao:code_iata)</h2>" +
		"<div class=\"info\">:metro_area</div>" +
		"<div class=\"info\">:city, :county, :country</div>" +
	"</li>";

tplPopup = "" +
"<li class=\"category_:cat :row_style\">" + 
	"<h2>:display_name_short (:code_icao:code_iata)</h2>" +
	//"<div class=\"info\">:metro_area</div>" +
	"<div class=\"info\">:country</div>" +
"</li>";

var icon = new GIcon(G_DEFAULT_ICON);
icon.image = "/site/modules/blink-now/media/img/map-icon-blink.png";

function bnapp_GetIcon(airport, letter) { 
	if (letter) { 
		var iconlet = new GIcon(G_DEFAULT_ICON);
		iconlet.image = "/site/modules/blink-now/media/img/map-icon-blink-" + letter.toLowerCase() + ".png";
		return iconlet;
	}
	return icon;
}

/*
var directions; var drivingDistances; 
directions = new GDirections();
GEvent.addListener(directions, "load", onGDirectionsLoad);
function onGDirectionsLoad() {
	$("#queries").append("onGDirectionsLoad");
	var meters = directions.getRoute(0).getDistance().meters;
	drivingDistances.push(meters);
}

function bnapp_GetDrivingDistances(from, airports) {
	var query = "from:" + from.lat() + "," + from.lng() + " to:";
	
	drivingDistances = new Array();
	for (var i = 0; i < airports.length; i++) {
		var airport = airports[i];
		$("#queries").append(query + airport.airportLatitude + "," + airport.airportLongitude + "<br/>");
		directions.load(query + airport.airportLatitude + "," + airport.airportLongitude);
	}
	
	$("#queries").append(drivingDistances.length + " distances for " + airports.length + " airports");
}
*/

/**
 * Build left-hand airports paginated list
 */
function bnapp_SetAirportsList(airports, options) {
	
	var bounds = new GLatLngBounds();
	
	var items = "";
	var alt = false;
	for (var i = 0; i < airports.length; i++) {
		var airport = airports[i];
		
		var item = null;
		if (options && options.template && options.template == "address") {
			item = tplAddress;
		}  else { 
			item = tpl;
		}
		
		
		var rowCSS = alt ? "alt" : "";
		if (i == 0) { rowCSS += " active"; }
		var letter = String.fromCharCode("A".charCodeAt(0) + i);
		
		item = item.replace(/:index/, "airportListIndex" + i);
		item = item.replace(/:row_style/, rowCSS);
		item = item.replace(/:marker_index/g, i);
		item = item.replace(/:code_icao/g, airport.airportCodeIcao);
		
		if (options && options.useLetters) {
			item = item.replace(/:display_name_short/g, (i < 5 ? letter + ". " : "") + airport.airportName);
		} else {
			item = item.replace(/:display_name_short/g, airport.airportName);
		}
		
		if (airport.airportCodeIata != "") { 
			item = item.replace(/:code_iata/g, " / " + airport.airportCodeIata);
		} else { item = item.replace(/:code_iata/g, ""); }
		item = item.replace(/:metro_area/g, airport.airportMetroArea);
		item = item.replace(/:city/g, airport.airportCity);
		item = item.replace(/:county/g, airport.airportCounty);
		item = item.replace(/:country/g, airport.airportCountry);
		item = item.replace(/:distance/g, airport.distanceToPoint); 
		
		items += item;
		alt = ! alt;
	}
	
	// html
	var list = "<ol class=\"bnapp_airports_list\">" + items + "</ol><div id=\"airport_pager\"></div>";
	$("#bnapp_l_panel").html(list);

	// info
	for (var i = 0; i < airports.length; i++) {
		var airport = airports[i];
		var latlng = new GLatLng(airport.airportLatitude, airport.airportLongitude);
		
		
		var letter = String.fromCharCode("A".charCodeAt(0) + i);
		if (options && ! options.useLetters) {
			letter = null;
		}
		
		var marker = new GMarker(latlng, bnapp_GetIcon(airport, letter));

		var popup = tplPopup;
		popup = popup.replace(/:code_icao/g, airport.airportCodeIcao);
		popup = popup.replace(/:display_name_short/g, airport.airportName);
		if (airport.airportCodeIata != "") { 
			popup = popup.replace(/:code_iata/g, " / " + airport.airportCodeIata);
		} else { popup = popup.replace(/:code_iata/g, ""); }
		popup = popup.replace(/:metro_area/g, airport.airportMetroArea);
		popup = popup.replace(/:city/g, airport.airportCity);
		popup = popup.replace(/:county/g, airport.airportCounty);
		popup = popup.replace(/:country/g, airport.airportCountry);
		
		marker.bindInfoWindowHtml(popup);
		map.addOverlay(marker);
		markers.push(marker);
		
		bounds.extend(latlng);
	}
	
	if (options && options.computeZoom) {
		map.setCenter(bounds.getCenter());
  	  	map.setZoom(map.getBoundsZoomLevel(bounds));
	}
	
	if (options && options.showFirstInfoWin) {
		GEvent.trigger(markers[0], "click");
	}
	
	// event
	$(".bnapp_airports_list li a").click(function() {
		//bnapp_SelectActiveAirport(this.rel);
		GEvent.trigger(markers[this.rel], "click");
		wasAirportListClick = true;
  	});	

	// paginate
	if (airports.length > 5) {
		jQuery('.bnapp_airports_list li').quickpaginate({ perpage: 5, showcounter: true, pager: $("#airport_pager") });	
	}
}

function bnapp_SelectActiveAirport(i) {
	$(".bnapp_airports_list li").removeClass("active");
	$("li#airportListIndex" + i).addClass("active");
}