(function($){
	$.fn.table_sort = function()
	{
		 var s_table = $(this);
		 $('th', s_table).each(function( column )
		 {
			//处理三种有可能存在的排序字段，比较方法
			var findSortKey;
			if( $(this).is('.sort-title') )
			{
				findSortKey = function( $cell )
				{
					return $cell.find('.sort-title').text().toUpperCase()+ '' +$cell.text().toUpperCase();
				}
			}
			else if( $(this).is('.sort-date') )
			{
				findSortKey = function( $cell )
				{
					return Date.parse('1' + $cell.text());
				}
			}
			else if( $(this).is('.sort-price') )
			{
				findSortKey = function( $cell )
				{
					var key =  parseFloat($cell.text().replace(/^[^\d.]*/, ''))
					return isNaN(key) ? 0 : key;
				}
			}
			
			//排序
			if( findSortKey )
			{
			   $(this).click(function()
				{
					$sortOrder = $sortOrder == 0 ? 1 : 0;
					
					var rows = s_table.find('tbody > tr').get();
				   
					$.each( rows, function( index, row )
					{
						row.sortKey = findSortKey($(row).children('td').eq(column));
					});
					//排序方法
					rows.sort(function( a, b )
					{
						if( $sortOrder == 1 )
						{
							//升序
							if(a.sortKey < b.sortKey)   return -1;
							if(a.sortKey > b.sortKey)   return  1;                    
							return 0;
						}
						else
						{
							//降序
							if(a.sortKey < b.sortKey)   return  1;
							if(a.sortKey > b.sortKey)   return -1;                    
							return 0;
						}                    
					});
					//排序后的对象添加给s_table
					$.each( rows, function( index, row )
					{
						s_table.children('tbody').append(row);
						row.sortKey = null;
					});
					
					//显著标明是通过某一列排序的
					//s_table.find('td').removeClass('sorted')
//						.filter(':nth-child('+ (column + 1) +')').addClass('sorted');
						
					//重新赋予奇偶行的样式
					//s_table.alterRowColors();
				});
			}  
		});
	}
})(jQuery);