(function($){
	///////////////////////////////////////////////////////////////////////////////
	//	Programador: Enrique Meléndez Estrada
	//	Fecha: 24 - Julio - 2007
	//	Version: 0.3
	///////////////////////////////////////////////////////////////////////////////

	$.fn.kiketable_rowsizable = function(o) {
		// default parameters, properties or settings
		o = $.extend({},$.fn.kiketable_rowsizable.defaults, o);
		var lessIE8 = $.browser.msie && (parseInt($.browser.version) < 8);
		this
			.filter("table:not(."+o.namespace+")") // only "virgin" html table(s)
			.addClass(o.namespace)
			.each(function(index){
				o.renderTime = new Date().getTime();
				var $Table = $(this);
				$(o.selectRows, this)
					.addClass(o.classCollapsed)
					.each(function(){
						var row = this,
							$row = $(row),
							heightMin, 
							heightMax,
							// bug in IE 6-7 (no refresh CSS changes)
							ieCssRecalc = function(){$.each(row.cells,function(){this.runtimeStyle.cssText = this.currentStyle.cssText})}
						;
						$('<div title="'+ o.title +'" class="'+ o.classHandler +'"></div>')
							.hover(
								function(){$row.addClass(o.classHover);},
								function(){$row.removeClass(o.classHover);}
								)
							.bind('click', function(e, animate){
								if (lessIE8 && o.fxSpeed && !!!animate) {
									if (typeof heightMax == "undefined"){	
										heightMin = row.clientHeight;
										$row.removeClass(o.classCollapsed);
										ieCssRecalc();
										heightMax = row.clientHeight;
										$row.addClass(o.classCollapsed);
										ieCssRecalc();
										};
									$row.animate( 
										{height: ($row.hasClass(o.classCollapsed)) ?  heightMax: heightMin}, 
										o.animationSpeed, 
										function(){$row.toggleClass(o.classCollapsed);ieCssRecalc();
										});
								}
								else{ 
									$row.toggleClass(o.classCollapsed); 
									if (lessIE8)
										ieCssRecalc();
									};
								return false;
								})
							.prependTo(this.cells[0])
							;
						});
				o.renderTime = new Date().getTime() - o.renderTime;
				o.onLoad();
			})
			;
		return this;
	};
	$.fn.kiketable_rowsizable.defaults = {
		selectRows :	'>tbody>tr', //by default, all TR in TBODY
		namespace :		'kiketable-rowsizable',
		classHandler :	'kiketable-rowsizable-handler',
		classHover :	'kiketable-rowsizable-hover',
		classCollapsed :'kiketable-rowsizable-collapsed',
		title :			'Expand/Collapse this row',
		fxSpeed : 500,
		renderTime :	0,
		onLoad : function(){}
	};
})(jQuery);
