$(document).ready(function(){
	var cache=new Array(), invalidCache=new Array();
	function toggleManual(inp){
		var loc = $(inp).parents('form').find(':input[name="loc"]').val();
		var chk = $(inp).parents('form').find(':input[name="manual"]')[0];
		if(chk.checked || jQuery.inArray(loc, invalidCache) != -1){
			chk.checked=true;
			$(chk).parents('form').find('.selLoc').html(loc + ' [Manual]');
			$(':input[name^="lat_"],:input[name^="lon_"],:input[name^="tz_"]').enable();
		}else if(data=cache[loc]){
			$(chk).parents('form').find('.selLoc').html('<img src="/images/flags/'+data[4].toLowerCase()+'.gif" alt="'+data[4]+'" title="'+data[4]+'"/> '+ loc);
			$(':input[name^="lat_"],:input[name^="lon_"],:input[name^="tz_"]').disable();
			updateData(cache[loc],chk.form);
		}else{
			$.get('/loc_search.php',{q:loc,exact:1,limit:1},function(data){
				data=$.trim(data).split('|');
				if(data.length > 1)cache[loc]=data;
				else invalidCache[invalidCache.length]=loc;
				toggleManual(chk);
			});
		}
	}
	function selectACItem(event, data, formatted){cache[data[0]]=data;chk=$(this.form).find(':input[name="manual"]')[0];chk.checked=false;toggleManual(chk);}
	function updateData(data,form){
		var f=$(form).find(':input');
		var lat=Math.floor(Math.abs(data[1])), lon=Math.floor(Math.abs(data[2])), tz=Math.floor(Math.abs(data[3]));
		f.filter("[name='lat_dir']").val((data[1] < 0) ? 'South' : 'North');
		f.filter("[name='lat_deg']").val(Math.floor(lat));
		f.filter("[name='lat_min']").val(Math.floor((Math.abs(data[1]) - lat) * 60));
		f.filter("[name='lon_dir']").val((data[2] < 0) ? 'West' : 'East');
		f.filter("[name='lon_deg']").val(Math.floor(lon));
		f.filter("[name='lon_min']").val(Math.floor((Math.abs(data[2]) - lon) * 60));
		f.filter("[name='tz_dir']").val((data[3] < 0) ? 'West' : 'East');
		f.filter("[name='tz_hr']").val(Math.floor(tz));
		f.filter("[name='tz_min']").val(Math.floor((Math.abs(data[3]) - tz) * 60));
	}
	$(':input[name="loc"]').autocomplete('/loc_search.php', {max:20, autoFill:true,selectFirst:true,minChars:3}).result(selectACItem).blur(function(){toggleManual($(this.form).find(':input[name="manual"]')[0]);});
	$(':input[name="manual"]').click(function(){toggleManual(this);}).each(function(i,o){toggleManual(o);});
});
