
var availability = 
{
	"SST": {"begin_year":1985, "end_year":2006},
	"SSH": {"begin_year":1992, "end_year":2007},
	"CHL": {"begin_year":1997, "end_year":2006}	
}

function init() {
	$("radio_SST").checked = true;
	populate_year("SST");
}
function onoff_month(onoff) {
	$$('select.select_month').each(function(item){$(item).disabled = !onoff;});
}

function populate_year(env_type) {
	var availabitity = availability[env_type];
	
	var from_year = $("from_year");
	var to_year = $("to_year");
	from_year.options.length = 0;
	to_year.options.length = 0;
	var j = 0;
	from_year.options.length = availabitity["end_year"] - availabitity["begin_year"] + 1;
	to_year.options.length = availabitity["end_year"] - availabitity["begin_year"] + 1;
	for (var i = availabitity["begin_year"]; i <= availabitity["end_year"]; i++) {
		from_year.options[j].text = i;
		from_year.options[j].value = i;
		to_year.options[j].text = i;
		to_year.options[j].value = i;
		j++;
	}
}

function generate() {
	var from_year = $("from_year").value;
	var to_year = $("to_year").value;
	
	if (parseInt(from_year) > parseInt(to_year)) {
		alert("[To Year] can't be older than [From Year]");
		return true;
	}
	
	if (parseFloat($("north").value) > 90 || parseFloat($("north").value) < -90) {
		alert("[North] is out of range. Please enter a number between -90.0 and 90.0");
		return ture;
	}
	if (parseFloat($("south").value) > 90 || parseFloat($("south").value) < -90) {
		alert("[South] is out of range. Please enter a number between -90.0 and 90.0");
		return ture;
	}
	if (parseFloat($("east").value) > 180 || parseFloat($("east").value) < -180) {
		alert("[East] is out of range. Please enter a number between -180.0 and 180.0");
		return ture;
	}
	if (parseFloat($("west").value) > 180 || parseFloat($("north").value) < -180) {
		alert("[West] is out of range. Please enter a number between -180.0 and 180.0");
		return ture;
	}
	if (parseFloat($("north").value) < parseFloat($("south").value)) {
		alert("[North] is smaller than [South]");
		return ture;
	}
	if (parseFloat($("east").value) < parseFloat($("west").value)) {
		alert("[East] is smaller than [West]");
		return ture;
	}
	
	if (parseInt($("image_width").value) > 2048 || parseInt($("image_width").value) < 0) {
		alert("[Image width] is out of range. Please enter a integer number between 0 and 2048");
		return ture;
	}
	var image_width = $("image_width").value;
	
	if ($("average_monthly").checked) {
		var from_month = $("from_month").value;
		var to_month = $("to_month").value;
		var timestep = "M";
	} else {
		var from_month = 1;
		var to_month = 1;
		var timestep = "Y";
	}
	
	var start_date = new Date(from_year, parseInt(from_month) - 1, 1);
	var end_date = new Date(to_year, parseInt(to_month) - 1, 1);
	var current_year = from_year;
	var current_month = from_month;
	var loop = true;
	
	var i = 0;
	$("results").update("Start processing");
	
	while (loop && i < 60) {
		if ($("average_monthly").checked) {
			var next_date = new Date(parseInt(current_year), (parseInt(current_month) + 1) - 1, 1);
		} else {
			var next_date = new Date(parseInt(current_year) + 1, (parseInt(current_month) - 1), 1);
		}
		
		var next_year = next_date.getFullYear();
		var next_month = next_date.getMonth() + 1;
		
		var parameters = {
			"sid": gSID,
			"mode": "IMAGE",
			"timestep": timestep,
			"image_width": image_width,
			"start_year": current_year,
			"start_month": current_month,
			"end_year": current_year,
			"end_month": current_month,
			"env_type": radio_value("env_settings", "oceano_data"),
			"north": $("north").value,
			"south": $("south").value,
			"east": $("east").value,
			"west": $("west").value
		};
		
		var params = $H(parameters).toQueryString();
		var request = "env_layer_kml.php?" + params;
		
		new Ajax.Request(request,
			{
				method: 'GET',
				onSuccess: layer_processed,
				asynchronous: false
			});
		
		if (next_date > end_date) {
			loop = false;
		}
		
		current_year = next_year;
		current_month = next_month;
		i++;
	}
	
	// Create KMZ
	
	parameters = $H(parameters).update({"mode": "KMZ", "start_year": from_year, "start_month": from_month});
	var params = parameters.toQueryString();
	var request = "env_layer_kml.php?" + params;
	new Ajax.Request(request,
		{
			method: 'GET',
			onSuccess: kmz_created,
			asynchronous: false
		});
}

function layer_processed(oj) {
	var msg = oj.responseText.evalJSON();
	$("results").update($("results").innerHTML + "<br>" + msg.name + " processed");
	
	//$("layer_image").src = msg.url;
}

function kmz_created(oj) {
	$("results").update($("results").innerHTML + "<br>End of process<br>");
	
	var msg = oj.responseText.evalJSON();
	$("results").update($("results").innerHTML + "<p>Download KMZ from: <a href='" + msg.kmz + "'>" + msg.kmz + "</a></p>");
}

function radio_value(form_name, radio_name) {
	var value = Form.getInputs(form_name,'radio',radio_name).find(function(radio) { return radio.checked; }).value;

	return value;
}
