/* Richard A. Walenga
 * Gets the width of the widest label and calculates the appropriate left margin for all non-button inputs to be aligned equally. */ 
(function(jQuery) {
	jQuery.fn.inputalign = function(params) {
		params = jQuery.extend({indent: null, ignore: null}, params);
		this.each(function() {
			var $form = jQuery(this);
			var maxwidth = 0;
			$form.find("label").each(function(index, element) {
				var currentwidth = jQuery(this).width();
				if (currentwidth > maxwidth) {
					maxwidth = currentwidth;
				}
			});
			
			var $inputs = $form.find(":input:not(:hidden,:submit,:button,:reset)");
			if (params.ignore != null && params.ignore != "") {
				$inputs = $inputs.not(params.ignore);
			}
			var radios = {};
			$inputs.each(function(index, element) {
				var $input = jQuery(this);
				var proceed = true;
				// Only applies the margin to the first radio button in a group
				if ($input.is(":radio")) {
					var radioid = $input.attr("id");
					if (radios.hasOwnProperty(radioid)) {
						proceed = false;
					}
					else {
						radios[radioid] = null;
					}
				}
				if (proceed) {
					var leftmargin = maxwidth - $input.prev().width();
					if (params.indent != null && params.indent != "") {
						var indent = 0;
						if (typeof(params.indent) == "string") {
							indent = parseInt(params.indent.replace(/px$/, ''), 10);
						}
						else if (typeof(params.indent) == "number") {
							indent = params.indent;
						}
						if (indent > 0) {
							leftmargin += indent;
						}
					}
					$input.css("margin-left", leftmargin);
				}
			});
		});
		return this;
	};
})(jQuery);
