//var map_center = {lat: 47.9495, lon: -123.5193};
//var map_zoom = 8;
var map_center = {lat: 47.9495, lon: -123.5193};
var map_zoom = 8;
var map_region = {lat_n: 48.65, lon_w: -125.2, lat_s: 47, lon_e: -122.1};



var cruise_list;
var menus = new MenuGroup("Root", "Root", "menus");
var cruise_menu_sort_mode = "year";
var visible_stations = new Array();
var visible_cruises = new Array();

var num_lists = 0;
var num_lists_loaded = 0;

function initFramework() {
	zoomToRegion(map_region.lat_n, map_region.lon_w, map_region.lat_s, map_region.lon_e);
	
	displayAnimatedMessage('Loading Cruises...')
	
	var rand = Math.floor(Math.random()*100001); //random number cache avoiding
	loadScript("/nvs/assets/iaps/prism_cruises/prism_cruise_list.js?rand="+rand, "jscript_cruise_list");
	num_lists++;
}

function cruiseListLoaded() { //called at bottom of prism_cruise_list.js file
	num_lists_loaded++;
	if (num_lists_loaded == num_lists) createCruises();
}

function createCruises() {
	loadPrismCruiseStations(); //from prism_cruise_list.js
	loadPrismCruises(); //from prism_cruise_list.js
	cruise_list = master_cruise_list;
	addCruisesToMenu();
	createCruiseStationMatrix();
	changePlotImage();
	
	openDefaultColumns();
	
	if (typeof(iwp) != "undefined") setTimeout("autoInfoWindowActions()", 500); //give time for browser to load all components

	setTimeout("displayMessage('NVS Loaded')", 1000);
	
	setTimeout("fadeOutMessage()", 2000);
}

function autoInfoWindowActions() {
	if (typeof(iwp) != "undefined") {
		if (iwp.action && iwp.action == "auto_open") {
			for (var i in cruise_station_list) {
				if (cruise_station_list[i].id == iwp.station) {
					var cruise = (iwp.cruise)? iwp.cruise: null;
					var cast = (iwp.cast)? iwp.cast: null;
					var sensor = (iwp.sensor)? iwp.sensor: null;
					cruise_station_list[i].autoOpenInfoWindow(cruise, cast, sensor);
					break;
				}
			}
		}
	}
}

function clearItemsHTML() {
	for (var i in cruise_station_list) {
		cruise_station_list[i].html = null;
	}
}

function createSortedCruiseMenu(sort_mode) {
	switch (sort_mode) {
		case "year":
			cruise_menu_sort_order = new Array("cruise_year"); //ordered by sort priority
			break;
		//case "month":
			//cruise_menu_sort_order = new Array("cruise_month", "cruise_year"); //ordered by sort priority
			//break;
		default:
			cruise_menu_sort_order = new Array("cruise_year"); //ordered by sort priority
	}

//WHAT ABOUT WHEN USING KEYS THAT HAVE ILLEGAL CHARACTERS (" ", "\", "'", ETC.) ???
//WHAT IF ASSET DOESN'T HAVE VALUES FOR ALL OF THE SORTING PARAMETERS??? - MAKE THEM REQUIRED???
	var handles = {menu_group: menus, groups: new Object()};
	for (var i in cruise_list) {
		var handle_temp = handles;
		for (var j in cruise_menu_sort_order) {
			var sort_field = cruise_menu_sort_order[j];
			var field_value = cruise_list[i][sort_field];
			if (!handle_temp.groups[field_value]) {
			 handle_temp.groups[field_value] = {menu_group: null, groups: new Object()};
			 handle_temp.groups[field_value].menu_group = handle_temp.menu_group.addGroup(field_value);
			}
			handle_temp = handle_temp.groups[field_value];
		}
		handle_temp.menu_group.addItem(cruise_list[i]);
	}
}

function addCruisesToMenu() {
	createSortedCruiseMenu(cruise_menu_sort_mode);

	//display asset list in menu panel
	menus.createMenuItems(cruise_menu);
	document.getElementById("content-cruise_list").innerHTML = cruise_menu.html;
	
	//display all assets on chart
	menus.updateMarkerVisibility();  //menus.setAllVis(true);
}

/*
function clearCruiseOverlays() {
	for (var i in master_cruise_list) {
		master_cruise_list[i].hideOverlay();
	}
}
*/

function clearCruiseMenu() {
	menus = new MenuGroup("Root", "Root", "menus");
	document.getElementById("content-cruise_list").innerHTML = "";
	cruise_menu.html = "";
}

function resetCruiseMenuCounters() {
	MenuGroup.resetGroupIDNum();
}

function updateMenuSortMode(sort_mode) {
	//clearCruiseOverlays();
	clearCruiseMenu();
	resetCruiseMenuCounters();
	cruise_menu_sort_mode = sort_mode;
	addCruisesToMenu();
}

function showAllCruises() {
	menus.setAllVis(true);
	menus.updateMarkerVisibility();
}

function hideAllCruises() {
	menus.setAllVis(false);
	menus.updateMarkerVisibility();
}

function expandAllCruiseGroups() {
	menus.expandAllGroups();
}

function collapseAllCruiseGroups() {
	menus.collapseAllGroups();
}

function toggleLegendVis() {
	if (legend_timeout) {
		clearTimeout(legend_timeout);
		legend_timeout = null;
	}
	if (getDisplay("btn_legend-norm") == "block") {
		setDisplay("btn_legend-norm", "none");
		setDisplay("btn_legend-hl", "block");
		setDisplay("map_legend", "block");
	} else {
		setDisplay("btn_legend-norm", "block");
		setDisplay("btn_legend-hl", "none");
		setDisplay("map_legend", "none");
	}
}



function createCruiseStationMatrix() {
	html = "";
	
	html += "<table class='matrix' width='100%;'>";
		html += "<tr>";
			html += "<td class='blank'>&nbsp;</td>";
			for (var j in master_cruise_list) {
				html += "<td class='headTop'>"+master_cruise_list[j].cruise_year+"<br>"+master_cruise_list[j].cruise_month_abbrev+"</td>";
			}
		html += "</tr>";
		
		var row_opt_1 = "oddRow";
		var row_opt_2 = "evenRow";
		var row_opt = row_opt_1;
		for (var i in cruise_station_list) {
			html += "<tr>";
				html += "<td class='headLeft'>"+cruise_station_list[i].id+"</td>";
				for (var j in master_cruise_list) {
					var img = (inArray(cruise_station_list[i].id, master_cruise_list[j].stations))? "marker-block_v1.gif": "spacer.gif";
					html += "<td class='default "+row_opt+"'>"+"<img src='/nvs/images/"+img+"' width='11' height='11' border='0'>"+"</td>";
				}
			html += "</tr>";
			row_opt = (row_opt == row_opt_1)? row_opt_2: row_opt_1;
		}
	html += "</table> \n";
	
	if (document.getElementById("container-matrix")) document.getElementById("container-matrix").innerHTML = html;
}



function downloadDataFile(cruise) {
	trackUserActionNVS("Downloaded Data", "User", ["MLOC", "PRISM Cruises", cruise]);
	
	var url = "/nvs/assets/iaps/prism_cruises/cruise_data/PRISM_Cruise_"+cruise+"_Data.zip";
	window.location.href = url;
}



var selected_cs = "mb";
function changePlotCS(new_cs) {
	document.getElementById("btn_"+selected_cs+"-hl").style.display = "none";
	document.getElementById("btn_"+selected_cs+"-norm").style.display = "block";
	document.getElementById("btn_"+new_cs+"-hl").style.display = "block";
	document.getElementById("btn_"+new_cs+"-norm").style.display = "none";
	document.getElementById("plot_transect").src = "/nvs/assets/iaps/prism_cruises/images/plot_transect-"+new_cs+".jpg";
	selected_cs = new_cs;
	changePlotImage();
}

function changePlotCruise() {
	changePlotImage();
}

function changePlotVariable() {
	changePlotImage();
}

var plot_img = "";
function changePlotImage() {
	document.getElementById("plot_image").src = "/images/spacer.gif";
	
	var cs = selected_cs;
	var cruise = document.getElementById("plots_cruise_menu").value;
	var variable = document.getElementById("plots_variable_menu").value;

	plot_img = cruise+"_"+cs+"_"+variable+".gif";
	
	var document_root = getDocumentRoot();
	var file = document_root+"nvs/assets/iaps/prism_cruises/images/plots/"+plot_img;
	var query_url = "http://"+getURLDomain()+"/utils/file_exists.php?file="+file;
	new AjaxRequest(query_url, function(response){processPlotImage(response)});
}

function processPlotImage(response) {
	var result = parseJSON(response);
	if (result.file_exists) {
		document.getElementById("plot_image").src = "/nvs/assets/iaps/prism_cruises/images/plots/"+plot_img;
	} else {
		document.getElementById("plot_image").src = "/nvs/assets/iaps/prism_cruises/images/messages/no_plot_image_available.gif";
	}
}

