sun-times/sun.js


function update(data)
{
	$('input[name=date]').val(data.params.date);
	$('input[name=latitude]').val(data.params.latitude);
	$('input[name=longitude]').val(data.params.longitude);
	$('input[name=zenith]').val(data.params.zenith);
	$('input[name=timezone]').val(data.params.timezone);
	$('input[name=format]').val(data.params.format);
	
	var table = $('<dl>');
	
	table
		.append($('<dt>').text('now'))
		.append($('<dd>').text(data.now));
				
	$.each(data.times, function(t, d)
		{
			table
				.append($('<dt>').text(t.replace(/_/g, ' ')))
				.append($('<dd>').text(d));
		});
	table.find('dt').addClass('ui-corner-left');
	table.find('dd').addClass('ui-corner-right');
	
	$('#output')
		.html(table)
		.hide()
		.fadeIn();
}


function calculate(event)
{
	var out = $('#debug')
		.empty()
		.toggle(event.shiftKey);
		
	$.post('calculate.php', $(':input[value]').serialize(), function(data)
		{
			out
				.append('\ncalculate.php\n')
				.append(JSON.stringify(data, null, 3));
			
			if(data.success)
			{
				update(data);
			}
			else
			{
				$('<p>')
					.append(data.error.message)
					.dialog(
					{
						title: 'Error',
						resizable: false,
						modal: true,
						close: function(event, ui)
							{
								$(this).dialog('destroy').remove()
							},
					});
			}
		});
	return false;
}


function autofill(event)
{
	var out = $('#debug')
		.empty()
		.toggle(event.shiftKey);
	
	$('input[name=date]').val('next friday');
	$('input[name=format]').val('H:i');
	
	if(google.loader.ClientLocation)
	{
		
		var loc = google.loader.ClientLocation;
		out
			.append('\ngoogle.loader.ClientLocation\n')
			.append(JSON.stringify(loc, null, 3)+'\n');
		
		if(loc.latitude)
		{
			$('input[name=latitude]').val(loc.latitude);
			$('input[name=longitude]').val(loc.longitude);

			$('#output')
				.html('<a href="http://maps.google.com/maps?&z=7&ll='+loc.latitude+','+loc.longitude+'" target="_blank">Verify coordinates with Google Maps</a>')
				.hide()
				.fadeIn();

			
			
			var params = 
				{
					lat: loc.latitude,
					lng: loc.longitude,
				};
			$.get('http://ws.geonames.org/timezoneJSON?', params, function(data)
				{
					$('input[name=timezone]').val(data.timezoneId);
					out
						.append('\nws.geonames.org\n')
						.append(JSON.stringify(data, null, 3));
				}, 'jsonp');
		}
	}
	return false;	
}


$(function()
{
	$('input[type=submit]')
		.click(calculate);
	
	$('#auto-fill')
		.click(autofill);
	
	$('input[name=date]')
		.datepicker({ dateFormat: 'yy-mm-dd' });
	
	$('input[name=timezone]')
		.autocomplete({source: 'timezones.php'});	
});