jQuery.fn.infTable = function(options)
{
	var jqueryObj = this;

	var defaults = {
		classSelected :'tr_selected',
		classClick :'tr_click',
		funcRemove :TelaPrincipal.loadPagePriorTable()
	};

	var checkAll = null;

	var opts = jQuery.extend(defaults, options);

	function _initialize()
	{
		if (build())
		{
			return;
		}

		checkAll = jqueryObj.find('thead tr input[type=checkbox]');

		checkAll.click( function()
		{
			if (this.checked)
			{
				jqueryObj.find('tbody tr').each( function(i)
				{
					jQuery(this).addClass(opts.classClick);
					jQuery(this).find('input[type=checkbox]').each( function(i)
					{
						this.checked = true;
					});
				});
			}
			else
			{
				jqueryObj.find('tbody tr').each( function(i)
				{
					jQuery(this).removeClass(opts.classClick);
					jQuery(this).find('input[type=checkbox]').each( function(i)
					{
						this.checked = false;
					});
				});
			}
		});

		jqueryObj.find('tbody tr').each( function(i)
		{
			var objTr = jQuery(this);

			objTr.mouseover( function()
			{
				objTr.addClass(opts.classSelected);
			});
			objTr.mouseout( function()
			{
				objTr.removeClass(opts.classSelected);
			});
			objTr.find('input[type=checkbox]').each( function(i)
			{
				jQuery(this).click( function()
				{
					if (this.checked)
					{
						objTr.addClass(opts.classClick);
					}
					else
					{
						objTr.removeClass(opts.classClick);
					}

					sincronizarCheckAll();
				});
			});
		});
	}

	function sincronizarCheckAll()
	{
		checkAll[0].checked = (jqueryObj.find('tbody tr').length == jqueryObj.find('tbody tr.' + opts.classClick).length);
	}

	function build()
	{
		if (jqueryObj[0].build == undefined)
		{
			jqueryObj[0].build = false;
		}

		return jqueryObj[0].build;
	}

	this.removeLine = function(baseId)
	{
		var id = this.attr('id') + '_' + baseId;

		jQuery('#' + id).fadeOut(700, function()
		{
			jQuery('#' + id).remove();

			if (jqueryObj.find('tbody tr').length == 0)
			{
				opts.funcRemove(jqueryObj[0].id);
			}
		});
	};

	_initialize();

	return this;
};
