(function($){Drupal.behaviors.tableHeader={attach:function(context,settings){if(!$.support.positionFixed){return;}
$('table.sticky-enabled',context).once('tableheader',function(){$(this).data("drupal-tableheader",new Drupal.tableHeader(this));});}};Drupal.tableHeader=function(table){var self=this;this.originalTable=$(table);this.originalHeader=$(table).children('thead');this.originalHeaderCells=this.originalHeader.find('> tr > th');this.displayWeight=null;this.originalTable.bind('columnschange',function(e,display){self.widthCalculated=(self.displayWeight!==null&&self.displayWeight===display);self.displayWeight=display;});this.stickyTable=$('
').insertBefore(this.originalTable).css({position:'fixed',top:'0px'});this.stickyHeader=this.originalHeader.clone(true).hide().appendTo(this.stickyTable);this.stickyHeaderCells=this.stickyHeader.find('> tr > th');this.originalTable.addClass('sticky-table');$(window).bind('scroll.drupal-tableheader',$.proxy(this,'eventhandlerRecalculateStickyHeader')).bind('resize.drupal-tableheader',{calculateWidth:true},$.proxy(this,'eventhandlerRecalculateStickyHeader')).bind('drupalDisplaceAnchor.drupal-tableheader',function(){window.scrollBy(0,-self.stickyTable.outerHeight());}).bind('drupalDisplaceFocus.drupal-tableheader',function(event){if(self.stickyVisible&&event.clientY<(self.stickyOffsetTop+ self.stickyTable.outerHeight())&&event.$target.closest('sticky-header').length===0){window.scrollBy(0,-self.stickyTable.outerHeight());}}).triggerHandler('resize.drupal-tableheader');this.stickyHeader.show();};Drupal.tableHeader.prototype.eventhandlerRecalculateStickyHeader=function(event){var self=this;var calculateWidth=event.data&&event.data.calculateWidththis.stickyOffsetTop=Drupal.settings.tableHeaderOffset?eval(Drupal.settings.tableHeaderOffset+'()'):0;this.stickyTable.css('top',this.stickyOffsetTop+'px');var viewHeight=document.documentElement.scrollHeight||document.body.scrollHeight;if(calculateWidth||this.viewHeight!==viewHeight){this.viewHeight=viewHeight;this.vPosition=this.originalTable.offset().top- 4- this.stickyOffsetTop;this.hPosition=this.originalTable.offset().left;this.vLength=this.originalTable[0].clientHeight- 100;calculateWidth=true;}
var hScroll=document.documentElement.scrollLeft||document.body.scrollLeft;var vOffset=(document.documentElement.scrollTop||document.body.scrollTop)- this.vPosition;this.stickyVisible=vOffset>0&&vOffset