// Author: Arnold Andreasson, 2007. http://mellifica.se/konsult
// License: http://creativecommons.org/licenses/by-nc-sa/3.0/
var lat_dd = null;
var lat_dm = null;
var lat_dms = null;
var long_dd = null;
var long_dm = null;
var long_dms = null;
var proj_rt90 = null;
var x_rt90 = null;
var y_rt90 = null;
var proj_sweref99 = null;
var n_sweref99 = null;
var e_sweref99 = null;
// Decimal degrees. Type=float.
var latitude = null;
var longitude = null;

function init_coords() {
	lat_dd = document.getElementById("lat_dd");
	//lat_dm = document.getElementById("lat_dm");
	lat_dms = document.getElementById("lat_dms");
	long_dd = document.getElementById("long_dd");
	//long_dm = document.getElementById("long_dm");
	long_dms = document.getElementById("long_dms");

	//proj_rt90 = document.getElementById("proj_rt90");

	x_rt90 = document.getElementById("x_rt90");
	y_rt90 = document.getElementById("y_rt90");
	//proj_sweref99 = document.getElementById("proj_sweref99");
	//n_sweref99 = document.getElementById("n_sweref99");
	//e_sweref99 = document.getElementById("e_sweref99");
	//show_rt90_meridian(proj_rt90.value); // In map.js.
	//show_sweref99_meridian(proj_sweref99.value); // In map.js.
	
	/*var url_args = location.search.substring(1);
	if (url_args.length > 0) {
		parse_url_arguments(url_args);
	}*/
}

// Set and get functions for external use. Storage, map, etc.
function set_lat_long(lat, lon) {
	latitude = new Number( lat );
	longitude = new Number( lon );
	update_lat();
	update_long();
	update_rt90();
	//update_sweref99();
}
function get_latitude() {
	return latitude;
}
function get_longitude() {
	return longitude;
}
/*
// Should be called when a key goes up while the field has focus.
function keyup_lat_dd(event) {
	var value = lat_dd.value;
	latitude = convert_lat_from_dd(value);
	lat_dm.value = convert_lat_to_dm(latitude);
	lat_dms.value = convert_lat_to_dms(latitude);
	update_rt90();
	update_sweref99();
	show_map_marker(latitude, longitude); // In map.js.	
}
function keyup_long_dd(event) {
	var value = long_dd.value;
	longitude = convert_long_from_dd(value);
	long_dm.value = convert_long_to_dm(longitude);
	long_dms.value = convert_long_to_dms(longitude);
	update_rt90();
	update_sweref99();
	show_map_marker(latitude, longitude); // In map.js.	
}
function keyup_lat_dm(event) {
	var value = lat_dm.value;
	latitude = convert_lat_from_dm(value);
	lat_dd.value = convert_lat_to_dd(latitude);
	lat_dms.value = convert_lat_to_dms(latitude);
	update_rt90();
	update_sweref99();
	show_map_marker(latitude, longitude); // In map.js.	
}
function keyup_long_dm(event) {
	var value = long_dm.value;
	longitude = convert_long_from_dm(value);
	long_dd.value = convert_long_to_dd(longitude);
	long_dms.value = convert_long_to_dms(longitude);
	update_rt90();
	update_sweref99();
	show_map_marker(latitude, longitude); // In map.js.	
}
function keyup_lat_dms(event) {
	var value = lat_dms.value;
	latitude = convert_lat_from_dms(value);
	lat_dd.value = convert_lat_to_dd(latitude);
	lat_dm.value = convert_lat_to_dm(latitude);
	update_rt90();
	update_sweref99();
	show_map_marker(latitude, longitude); // In map.js.	
}
function keyup_long_dms(event) {
	var value = long_dms.value;
	longitude = convert_long_from_dms(value);
	long_dd.value = convert_long_to_dd(longitude);
	long_dm.value = convert_long_to_dm(longitude);
	update_rt90();
	update_sweref99();
	show_map_marker(latitude, longitude); // In map.js.	
}
function keyup_rt90(event) {
	if ((x_rt90.value == "") || (y_rt90.value == "")) {
		latitude = null;
		longitude = null;
	} else {
		var x = parseFloat(x_rt90.value.replace(",", "."));
		var y = parseFloat(y_rt90.value.replace(",", "."));
		swedish_params(proj_rt90.value);
		var lat_lon = grid_to_geodetic(x, y);
		latitude = lat_lon[0];
		longitude = lat_lon[1];
	}
	update_lat();
	update_long();
	update_sweref99();
	show_map_marker(latitude, longitude); // In map.js.	
}
function keyup_sweref99(event) {
	if ((n_sweref99.value == "") || (e_sweref99.value == "")) {
		latitude = null;
		longitude = null;
	} else {
		var n = parseFloat(n_sweref99.value.replace(",", "."));
		var e = parseFloat(e_sweref99.value.replace(",", "."));
		swedish_params(proj_sweref99.value);
		var lat_lon = grid_to_geodetic(n, e);
		latitude = lat_lon[0];
		longitude = lat_lon[1];
	}
	update_lat();
	update_long();
	update_rt90();
	show_map_marker(latitude, longitude); // In map.js.	
}

//  Should be called when the fields loses focus.  
function blur_lat(event) {
	update_lat();
}
function blur_long(event) {
	update_long();
}
function blur_rt90(event) {
//	update_rt90();
}
function blur_sweref99(event) {
//	update_rt90();
}
*/
// Projection changes.
function select_proj_rt90(event) {
	update_rt90();
}
function select_proj_sweref99(event) {
	update_sweref99();
}

// Private functions.
function update_lat() {
	lat_dd.innerHTML = convert_lat_to_dd(latitude);
	//lat_dm.value = convert_lat_to_dm(latitude);
	lat_dms.innerHTML = convert_lat_to_dms(latitude);
}
function update_long() {
	long_dd.innerHTML = convert_long_to_dd(longitude);
	//long_dm.value = convert_long_to_dm(longitude);
	long_dms.innerHTML = convert_long_to_dms(longitude);
}
function update_rt90() {
	if ((latitude != null) && (longitude != null) &&
		(latitude >= -90) && (latitude <= 90) &&
		(longitude >= -180) && (longitude < 180)) {

		swedish_params('rt90_2.5_gon_v');
		//swedish_params(proj_rt90.value);

		var x_y = geodetic_to_grid(latitude, longitude);
		x_rt90.innerHTML = x_y[0];
		y_rt90.innerHTML = x_y[1];
	} else {
		x_rt90.innerHTML = "";
		y_rt90.innerHTML = "";
	}	
}
function update_sweref99() {
	if ((latitude != null) && (longitude != null) &&
		(latitude >= -90) && (latitude <= 90) &&
		(longitude >= -180) && (longitude < 180)) {
		swedish_params(proj_sweref99.value);
		var n_e = geodetic_to_grid(latitude, longitude);
		n_sweref99.innerHTML = n_e[0];
		e_sweref99.innerHTML = n_e[1];
	} else {
		n_sweref99.innerHTML = "";
		e_sweref99.innerHTML = "";
	}
}
