// Zipcode search functions
// http://www.levit.com/
// By Greg Hartwig (greg at hartwig dot com) 2009-11



$(document).ready(function() {
	// Set submit actions for forms
	$("#zip-search-form").submit(function() {
		process_zip_search(this);
	});
	
	$("#zip-search-form-curloc").submit(function() {
		process_curloc_search(this);
	});

	// Show "Near me" button if geolocation data is available
	if (null != navigator.geolocation)
		$("#zip-search-form-curloc input[type=submit]").show();
	else
		$("#zip-search-form-curloc input[type=submit]").hide();
});






function process_zip_search(thisObject) {
	search_start();
	var savedThis = thisObject;  // Saved for result callbacks to use

	$.ajax({
		url: "/bin/zipcode-search.php",
		type: "post",
		data: $(thisObject).serialize(),
		dataType: "html",
		timeout: 10000,
		
		success: function(data, textStatus) {
			//alert("success");
			$("#zip-search .search-results").html(data).slideDown();
		},
		
		error: function() {
			$("#zip-search .search-results").html("<p><i><small>Error:  Try again later.<"+"/small><" + "/i><"+"/p>").show('normal');
		},
		
		complete: function(html, textStatus) {
			search_stop();
		}

	});  // ajax
	
	return false;
		
}		




function process_curloc_search(thisObject) {
	search_start();
	
	// Kick off geolocation search
	navigator.geolocation.getCurrentPosition(
		curloc_search, 
		function(error) {
			txt = "<p>Unable to determine your current location";
			switch (error.code) {
				case error.PERMISSION_DENIED:
				txt += " (permission denied)";
				break;
				
				case error.POSITION_UNAVAILABLE:
				txt += " (position unavailable)";
				break;
				
				case error.TIMEOUT:
				txt += " (timeout)";
				break;
				
				default:
				txt += " (unknown error) <!-- -->\n";
			}
			txt += ".</p>";
			$("#zip-search .search-results").html(txt).show('normal');
			search_stop();
		},
		{maximumAge:Infinity, timeout:30000}
	);
}






// Called when geolocation is successful
function curloc_search(position) {
	$.ajax({
		url: "/bin/zipcode-search.php",
		type: "post",
		data: {lat: position.coords.latitude, lon: position.coords.longitude},
		dataType: "html",
		timeout: 10000,
		
		success: function(data, textStatus) {
			//alert("success");
			$("#zip-search .search-results").html(data).slideDown();
		},
		
		error: function() {
			$("#zip-search .search-results").html("<p><i><small>Error:  Try again later.<"+"/small><" + "/i><"+"/p>").show('normal');
		},
		
		complete: function(html, textStatus) {
			search_stop();
		}

	});  // ajax
	
	return false;
		
}		



function search_start() {
	$("#zip-search .ajax-throb").show();  // show throbber graphic
	$("#zip-search input[type=submit]").attr('disabled', 'disabled');  // disable submit button
	$("#zip-search .search-results").slideUp().empty();
}


function search_stop() {
	$("#zip-search .ajax-throb").hide();  // hide throbber graphic
	$("#zip-search input[type=submit]").removeAttr('disabled');  // enable submit button
}

