﻿(function ($) {
	$.fn.roundToSquareCalculator = function (options) {
		var settings = jQuery.extend({
			minimumDiameterId: null,
			desiredHeightId: null,
			desiredWidthId: null,
			tolerance: 0.125,
			kerf: 0.080
		}, options);

		var context = { settings: settings, element: this };

		$('#' + settings.diameterId).keyup(function () {
			recalculateMinimumDiameter(context);
		});

		$('#' + settings.desiredHeightId).keyup(function () {
			recalculateMinimumDiameter(context);
		});

		return this;
	};

	function recalculateMinimumDiameter(context) {
		var desiredWidth = Number($('#' + context.settings.desiredWidthId).val());
		var desiredHeight = Number($('#' + context.settings.desiredHeightId).val());
		var tolerance = context.settings.tolerance + context.settings.kerf;

		try {
			var minimumDiameter = Math.sqrt(Math.pow(desiredWidth + tolerance, 2) + Math.pow(desiredHeight + tolerance, 2));

			setResults(context, minimumDiameter.toPrecision(3));
		}
		catch (e) {
			setResults(context, 'error: ' + e);
		}
	}

	function setResults(context, results) {
		$('#' + context.settings.minimumDiameterId).html(results);
	}
})(jQuery);
