(function($){

	$.fn.distribute = function(options) {
		var options = $.extend({
			property: "width", // padding|margin|border,
			selector: null	
		}, options);

		$this = $(this);
		
		var children = $this.children();
		// nothing to distribute... ?
		if (children.size()==0) {
			return;
		}

		var visibility = $this.css("visibility");
		$this.css("visibility", "hidden");
		
		var containerWidth = $this.innerWidth();
		var contentWidth = 0;
		children.each(function(i, el){
			var $el = options.selector ? $(options.selector, el) : $(el);
			contentWidth += $el.outerWidth(true);
		});

		var diffValue = parseInt((containerWidth - contentWidth) / children.size());
		var totalDiffModulo = (containerWidth - contentWidth) % children.size();

		var w = 0;
		children.each(function(i, el){
			var $el = options.selector ? $(options.selector, el) : $(el);
			if (options.property=="width") {
				var val = parseInt($el.css("width")) + diffValue + (totalDiffModulo>0 ? 1 : 0);
				$el.css("width", val);
			} else {
				if (options.property=="padding") {
					var propLeft = "padding-left", propRight = "padding-right";	
				} else if (options.property=="margin") {
					var propLeft = "margin-left", propRight = "margin-right";
				} else if (options.property=="border") {
					var propLeft = "border-left-width", propRight = "border-right-width";
				}
				var val = parseInt(diffValue/2);
				var partialDiffModulo = diffValue%2;
				var valLeft = parseInt($el.css(propLeft)) + val + (totalDiffModulo>0 ? 1 : 0);
				var valRight = parseInt($el.css(propRight)) + val + partialDiffModulo;
				$el.css(propLeft, valLeft).css(propRight, valRight);
			}
			totalDiffModulo = totalDiffModulo>0 ? totalDiffModulo-1 : 0;
		});
		
		$this.css("visibility", visibility);
	};

})(jQuery);


