jQuery.fn.extend({
	kwicks : function(options){
		var o = jQuery.extend({
			vertical: false,
			callback: function(){},
			duration: 500,
			easing: 'linear',
			selector: 'div',
			total: null,
			active: ''
		}, options);
		var animOption = function(prop, value){
			var props = {};
			props[prop] = value
			return props;
		};

		return this.each(function(){
			var $kwicks = $(o.selector, this);
			o.norm = o.norm || parseInt($kwicks.css('width'));
			var property = o.vertical ? 'height' : 'width';
			var lastprop = o.vertical ? 'bottom' : 'right'
			$kwicks.css({
				'float': !o.vertical ? 'left' : 'none',
				'position': 'relative'
			}).css(property, o.norm);
			if (o.total && o.total == $kwicks.size()){
				$kwicks.filter(':last').css({
					'float': 'none',
					'position': 'absolute'
				}).css(lastprop, 0);
			}

			$kwicks.hover(function(e){
				o.callback.call(this, e);
				var $kwick = $(this);
				$kwick.stop(true).animate(animOption(property, o.max), o.duration, o.easing);
				$kwicks.not($kwick).stop(true).animate(animOption(property, o.min), o.duration, o.easing);
			}, function(e){
				o.callback.call(this, e);
				/*(function(){
					if (!o.active){
						return $kwicks.stop(true);
					}
					return $kwicks.stop(true).not(o.active);
				}()).animate(animOption(property, o.norm), o.duration, o.easing);*/
				$kwicks.stop(true).animate(animOption(property, o.norm), o.duration, o.easing);
				$kwicks.filter(o.active).animate(animOption(property, o.max), o.duration, o.easing);
			});
		});
	}
});