/* Copyright (c) 2009 Mustafa OZCAN (http://www.mustafaozcan.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 * Version: 1.0.2
 * Requires: jquery.1.3+
 */
jQuery.fn.fixedtableheader = function(options) 
	{
		
		var settings = jQuery.extend({ headerrowsize: 1, highlightrow: false, highlightclass: "highlight" }, options);
		
		this.each(function(i) 
			{		
			var $tbl = $(this); var
			$tblhfixed = $tbl.find("tr:lt(" + settings.headerrowsize + ")");
			var headerelement = "th";
			
			if ($tblhfixed.find(headerelement).length == 0) headerelement = "td";
			
			if ($tblhfixed.find(headerelement).length > 0) { 
				$tblhfixed.find(headerelement).each(function() { $(this).css("width", $(this).width()); });
				var $clonedTable = $tbl.clone().empty();
				var tblwidth = GetTblWidth($tbl);
				
				$clonedTable.attr("id", "fixedtableheader" + i).css({ "position": "fixed", "top": "0", "left": $tbl.offset().left }).append($tblhfixed.clone()).width(tblwidth).hide().appendTo($("body"));
				
				if (settings.highlightrow) $("tr:gt(" + (settings.headerrowsize - 1) + ")", $tbl).hover(function() { $(this).addClass(settings.highlightclass); }, 
				function() { $(this).removeClass(settings.highlightclass); }); 
				
				$(window).scroll(
				function() 
					{ 
					if (jQuery.browser.msie && jQuery.browser.version == "6.0")	$clonedTable.css({ "position": "absolute", "top": $(window).scrollTop(), "left": $tbl.offset().left });
					else	$clonedTable.css({ "position": "fixed", "top": "0", "left": $tbl.offset().left - $(window).scrollLeft() });
					
					var sctop = $(window).scrollTop();
					var elmtop = $tblhfixed.offset().top;
					
					
					// *************** ON SCROLL CLONE HEADER and ALTERNATIV SHOW EXTRA SHAWOD *************************
					if (sctop > elmtop && sctop <= (elmtop + $tbl.height() - $tblhfixed.height()))
						{ $clonedTable.show(); if(document.getElementById("fixedtableheader_table_shadow")) document.getElementById("fixedtableheader_table_shadow").style.height = '25px'; }
					else 
						{ $clonedTable.hide(); if(document.getElementById("fixedtableheader_table_shadow")) document.getElementById("fixedtableheader_table_shadow").style.height = '1px'; }
					}
					
				);
					
				$(window).resize(function() { if ($clonedTable.outerWidth() != $tbl.outerWidth()) { $tblhfixed.find(headerelement).each(function(index) { var w = $(this).width(); $(this).css("width", w);
				
				$clonedTable.find(headerelement).eq(index).css("width", w); }); 
				
				$clonedTable.width($tbl.outerWidth());} 
				
				$clonedTable.css("left", $tbl.offset().left); }); 
			
				} 
			
			
			}); 
			
			
			function GetTblWidth($tbl) { 
			
			var tblwidth = $tbl.outerWidth(); 
			return tblwidth; 
			
			}
	
	};
