
document.onkeypress=getKey;
var gmap = null;
var first_time = 1;
var markers;
var marker_info_status;
var marker_html;
var tlabels = [];
var station_list_html = '';
var is_on = false;
var stationCtl;
var color_thread;

var level_graphics = [
	'grey_box.png', 'green_box.png', 'yellow_box.png', 'orange_box.png', 'red_box.png', 'purple_box.png'];
var level_name = ['Blowout', 'Normal', 'Near Flood', 'Minor Flood', 'Moderate Flood', 'Major Flood'];

var level_colors = ['#999999', '#00FF5F', '#FFFF00', '#FF9933', '#FF0044', '#CC33FF'];

var icons = [];

var key_stroke_functions = new Array();
key_stroke_functions[32] = function() {clearInterval(color_thread);color_thread = null;};
//key_stroke_functions[104] = toggle_help_box; // 'h' 
key_stroke_functions[0] = function() {toggle_help_box(true);}; // escape in Firefox, always closes help
key_stroke_functions[27] = function() {toggle_help_box(true);}; // escape in IE, always closes help

function getKey(e) {
	var key = e ? e.which : event.keyCode;
	var f= key_stroke_functions[key];
	if (f) {f();}
	return true;
}

function $(element) {
	return typeof(element) == 'object' ? element : document.getElementById(element);
}
function on_load() {
	var check_db_url = "http://hudson.dl.stevens-tech.edu/cgi-bin/db_up.pl";
	ajax_request(check_db_url,"db=atlas");
	if (db_data.status != 'OK') {
		window.location.href = "http://hudson.dl.stevens-tech.edu/maritimeforecast";
	}
	
	set_banner_hide_switch(false);
	set_banner_client_control($('ssws'));
	markers = new Array();
	marker_info_status = new Array();
	marker_html = new Array();
	forecast_title();
	gmap = new GMap2($("gmap"));
 	set_map_center();
	gmap.addMapType(G_SATELLITE_MAP);	
	gmap.addMapType(G_PHYSICAL_MAP);	
	gmap.setMapType(G_PHYSICAL_MAP);	
	//gmap.setMapType(G_SATELLITE_MAP);	
	gmap.addControl(new GLargeMapControl()); // large zoom controls
	gmap.addControl(new GMapTypeControl()); // allow user to control map background
	gmap.addControl(new GScaleControl()); //distance legend
	gmap.enableScrollWheelZoom();
	gmap.clearOverlays();
	new GKeyboardHandler(gmap); // allo the use of shift-arrow keys to move around
	//make an icon for each flooding level
	for (var i = 0; i < level_graphics.length; i++) {
		var icon = new GIcon();
		icon.image = "./images/" + level_graphics[i];
		icon.iconSize = new GSize(16,16);
		icon.iconAnchor = new GPoint(05,05);
		icon.infoWindowAnchor = new GPoint(8,8);
		icons[i] = icon;
	}
	stationCtl = $('station_list');
	stationCtl.options[0] = new Option('Select a Station to Display Time Series Plot');
	stationCtl.options[0].className = 'mydrop';

	for (var i = 0; i < presentSources.length; i++) {
		var s = presentSources[i];
		stationCtl.options[i+1] = new Option(s.title, s.did);
		stationCtl.options[i+1].className = 'mydrop';
		var div_html = build_div(s);
		var opts = {icon: icons[s.alert_level]};
		var marker = create_marker(s.lat, s.lon, opts,div_html, s.title, s.did, i);
		GEvent.addListener(marker, 'mouseover', 
				new Function("show_tlabels('" + s.did + "', 1)"));
		GEvent.addListener(marker, 'mouseout', 
				new Function("show_tlabels('" + s.did + "', 0)"));
		gmap.addOverlay(marker);
	}
	banner_load();
	color_thread = setInterval('alt_station_color()', 700);
}	
function show_station(){
	if (stationCtl.selectedIndex) {
	show_data_page(presentSources[stationCtl.selectedIndex-1].did);
	}
}


function alt_station_color() {
	var s = presentSources;

	for (var i = 0; i< s.length; i++) {
		if (s[i].map_visible) {
			if (s[i].alert_level > 1 || s[i].model_alert == 1) {
				var url = 'http://hudson.dl.stevens-tech.edu/SSWS/images/';
				if (is_on) {
					url += 'subtle_' + level_graphics[s[i].alert_level];
					markers[s[i].did].setImage(url);
				}
				else {
					url += level_graphics[s[i].alert_level];
					markers[s[i].did].setImage(url);
				}
			}
		}
	}
	
	is_on = !is_on;
}


function show_tlabels(station, do_add, which) {
		if (do_add) {
			gmap.addTLabel(tlabels[station]);
		}
		else {
			gmap.removeTLabel(tlabels[station]);
		}
}

function forecast_title() {
	var title = $("forecast_title");
	title.innerHTML = '<b><i>Forecast Period: ' + print_start_date + 
	' through ' + print_end_date + '</b></i>';
}
function show_info_window(did) {
	for (i = 0; i< presentSources.length; i++) {
		if (presentSources[i].did != did) {
		marker_info_status[presentSources[i].did] = false;
		}
	}
	if (!marker_info_status[did]) {
		marker_info_status[did] = true;
		markers[did].openInfoWindow(marker_html[did]);
	}
}

function show_data_page(did) {
	window.location.href='http://hudson.dl.stevens-tech.edu/SSWS/d/index.shtml?station=' + did;
}

function create_marker(lat, lon, opts, html, title, did, i) {
		var lat_lon = new GLatLng(lat, lon);
		var marker = new GMarker(lat_lon, opts);
		marker_info_status[did] = false;
		marker_html[did] = html;
		GEvent.addListener(marker, 'click', function() {
			marker.openInfoWindowHtml(html);});
		markers[did] = marker;
		var label = new TLabel();
		label.id = did;
		label.anchorLatLng = lat_lon
		label.anchorPoint = 'bottomLeft';
		label.markerOffset = new GSize (-10,5);
		var title = '<b>' + title.replace(/ /g, '&nbsp;');
		title =  title.replace(/-/g, '&#8209;');
		title += '</b><br>Forecast:&nbsp;<u><b>' + level_name[presentSources[i].flag_model_alert] + '</b>';
		tlabel_title = title.replace(/ /g, '&nbsp;');
		label.content = '<div style="max-width:400px" class="gmap_tlabel">' + tlabel_title + '</div>';

//		label.percentOpacity = 100;
		tlabels[did] = label;

		return marker;
}

function set_map_center() {
   gmap.setCenter(new GLatLng(40.28, -73.383),7);

}
function close_info_window() {
	gmap.closeInfoWindow();
	set_map_center();
}

function goto_station(station) {
	window.location.href= 'http://hudson.dl.stevens-tech.edu/hrecos/d/index.shtml';
}


function build_div(s) {
	var div;
	var image_name;
	var level_color;
	if (s.observed_found) {
		image_name = level_graphics[s.alert_level];
		level_color = level_colors[s.alert_level];
	}
	else{
		image_nme = 'universal_no.png';
		level_color = '#000000';
	}

	if (s.map_visible) {
		div = '<div class="ssws_places" style="border-width:5px;border-style:outset;border-color:' +
//			level_colors[s.alert_level] + ';background-color:' + level_colors[s.flag_model_alert] +'">' 
			level_colors[s.flag_model_alert] + ';background-color:#ffffff"> ' ;
			//'onclick=window.location.href="http://hudson.dl.stevens-tech.edu/SSWS/d/index.shtml?station=' + s.did +'"> ';
			//level_colors[s.flag_model_alert] + ';background-color:#2db2ff">' 
		if (s.observed_found) {
			div += s.title + '<BR><br><b>Current Level</b><br><u><i>' 
				+ level_name[s.alert_level] + '</u></i><BR>';
			var level_time;
			level_time = s.observed_val.toFixed(2) + ' m (' + (s.observed_val * 3.28).toFixed(1) + ' ft)';
			level_time += ' MLLW <BR>' + s.observed_dt + ' ET';
			div += level_time ;
		}
		else {
			div += s.title + '<br><BR><u><i>' + 'no current observations'  + '</u></i>';
		}
		div += '<br><br><b>Forecast</b><br><u><em>' + level_name[s.flag_model_alert] + '</em></u>';
		div += '<br><br><div id="' + s.did + 
			'" style="text-weight:bold;color:#990000;cursor:pointer" onclick="show_data_page(this.id)"><u><b>Show Time Series Plot</u></b></div>';
//		div += '<div color="#000055" style="cursor:pointer"  id="' + s.did + '" onclick="add_to_alert_list(this.id)" >' +
//			'Add to Alert List</div>';
		div += '</div>';
	}
	return div;
}

function add_to_alert_list(id) {
	alert('id: ' + id);
	return true;
}

var is_help_shown = false;
function toggle_help_box() {
	if (is_help_shown) {
		$('helpbox').style.display = 'none';
		$('help_box_button').src="images/help_blood.gif";
		$('help_box_button').title="Click for Help";
		is_help_shown = false;
	}
	else {
		$('helpbox').style.display = 'block';
		$('help_box_button').src="images/blue_x_button_down.gif";
		$('help_box_button').title="Click to Close Help";
		is_help_shown = true;
	}
}
function go_to_reg(email) {
	var addr = $(email).value;
	if (addr.length < 1) {
		//window.location.href='http://hudson.dl.stevens-tech.edu/SSWS/reg/index.shtml';
		alert("Please provide your primary email address");
		$('email').focus();
		return true;
	}
	if (addr.length < 50 && verify_email_address(addr)) {
		writeSessionCookie('ssws_reg_email', addr);
		window.location.href='http://hudson.dl.stevens-tech.edu/SSWS/reg/index.shtml';
	}
	else {
		$(email).style.backgroundColor = '#ff99cc';
		alert('Please check this email address it does not appear valid');
		return;
	}


	return true;
}

function check_email_address(elem) {
	var addr = $(elem).value;
	if (addr.length < 1) {
		$(elem).style.backgroundColor = '#ffffff';
		return;
	}
	if (! verify_email_address(addr)) {
			$(elem).style.backgroundColor = '#ff99cc';
			alert('Please check this email address it does not appear valid');
			return false;
	}
	$(elem).style.backgroundColor = '#ffffff';
	return true;

}
function ajax_request(url, params) {
	var requester = new XMLHttpRequest();
	var SYNC = false;
	requester.open("POST", url, SYNC);
	requester.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
	requester.setRequestHeader('Content-length', params.length);
	requester.setRequestHeader('Connection', 'close');
	requester.send(params);
	var response = requester.responseText;
//	show(url, params);
	eval(response);
}

