2012-04-02 12:37:00 +00:00
/*! tableSorter 2.1 widgets - updated 4/2/2012 */
2011-12-16 00:17:57 +00:00
( function ( b ) {
2012-04-02 19:19:17 +00:00
b . tablesorter . storage = function ( a , e , d ) { var c , g = ! 1 ; c = { } ; var i = a . id || b ( ".tablesorter" ) . index ( b ( a ) ) , f = window . location . pathname ; try { g = ! ! localStorage . getItem } catch ( j ) { } b . parseJSON && ( g ? c = b . parseJSON ( localStorage [ e ] ) || { } : ( c = document . cookie . split ( /[;\s|=]/ ) , a = b . inArray ( e , c ) + 1 , c = 0 !== a ? b . parseJSON ( c [ a ] ) || { } : { } ) ) ; if ( d && JSON && JSON . hasOwnProperty ( "stringify" ) ) { if ( ! c [ f ] || ! c [ f ] [ i ] ) c [ f ] || ( c [ f ] = { } ) ; c [ f ] [ i ] = d ; g ? localStorage [ e ] = JSON . stringify ( c ) : ( a = new Date , a . setTime ( a . getTime ( ) + 31536E6 ) , document . cookie = e + "=" + JSON . stringify ( c ) . replace ( /\"/g , '"' ) + "; expires=" + a . toGMTString ( ) + "; path=/" ) } else return c && c . hasOwnProperty ( f ) && c [ f ] . hasOwnProperty ( i ) ? c [ f ] [ i ] : { } } ;
b . tablesorter . addWidget ( { id : "uitheme" , format : function ( a ) { var e , d , c , g , i , f = b ( a ) , j = a . config , h = j . widgetOptions , k = [ "ui-icon-arrowthick-2-n-s" , "ui-icon-arrowthick-1-s" , "ui-icon-arrowthick-1-n" ] , k = j . widgetUitheme && j . widgetUitheme . hasOwnProperty ( "css" ) ? j . widgetUitheme . css || k : h && h . hasOwnProperty ( "uitheme" ) ? h . uitheme : k ; c = k . join ( " " ) ; j . debug && ( e = new Date ) ; f . hasClass ( "ui-theme" ) || ( f . addClass ( "ui-widget ui-widget-content ui-corner-all ui-theme" ) , b . each ( j . headerList , function ( ) { b ( this ) . addClass ( "ui-widget-header ui-corner-all ui-state-default" ) . append ( '<span class="ui-icon"/>' ) . wrapInner ( '<div class="tablesorter-inner"/>' ) . hover ( function ( ) { b ( this ) . addClass ( "ui-state-hover" ) } , function ( ) { b ( this ) . removeClass ( "ui-state-hover" ) } ) } ) ) ; b . each ( j . headerList , function ( a ) { g = b ( this ) ; if ( this . sortDisabled ) g . find ( "span.ui-icon" ) . removeClass ( c + " ui-icon" ) ; else { d = g . hasClass ( j . cssAsc ) ? k [ 1 ] : g . hasClass ( j . cssDesc ) ? k [ 2 ] : g . hasClass ( j . cssHeader ) ? k [ 0 ] : "" ; i = f . hasClass ( "hasStickyHeaders" ) ? f . find ( "tr." + ( h . stickyHeaders || "tablesorter-stickyHeader" ) ) . find ( "th" ) . eq ( a ) . add ( g ) : g ; i [ d === k [ 0 ] ? "removeClass" : "addClass" ] ( "ui-state-active" ) . find ( "span.ui-icon" ) . removeClass ( c ) . addClass ( d ) } } ) ; j . debug && b . tablesorter . benchmark ( "Applying uitheme widget" , e ) } } ) ;
b . tablesorter . addWidget ( { id : "columns" , format : function ( a ) { var e , d , c , g , i = a . config , f = i . sortList , j = f . length , h = [ "primary" , "secondary" , "tertiary" ] , h = i . widgetColumns && i . widgetColumns . hasOwnProperty ( "css" ) ? i . widgetColumns . css || h : i . widgetOptions && i . widgetOptions . hasOwnProperty ( "columns" ) ? i . widgetOptions . columns || h : h ; c = h . length - 1 ; g = h . join ( " " ) ; i . debug && ( d = new Date ) ; f && f [ 0 ] ? b ( "tr:visible" , a . tBodies [ 0 ] ) . each ( function ( a ) { e = b ( this ) . children ( ) . removeClass ( g ) ; e . eq ( f [ 0 ] [ 0 ] ) . addClass ( h [ 0 ] ) ; if ( 1 < j ) for ( a = 1 ; a < j ; a ++ ) e . eq ( f [ a ] [ 0 ] ) . addClass ( h [ a ] || h [ c ] ) } ) : b ( "td" , a . tBodies [ 0 ] ) . removeClass ( g ) ; i . debug && b . tablesorter . benchmark ( "Applying Columns widget" , d ) } } ) ;
b . tablesorter . addWidget ( { id : "filter" , format : function ( a ) { if ( ! b ( a ) . hasClass ( "hasFilters" ) ) { var e , d , c , g , i , f , j , h = a . config , k = h . widgetOptions , l = k . filter _cssFilter || "tablesorter-filter" , n = h . headerList . length , m = b ( a ) . addClass ( "hasFilters" ) , a = '<tr class="' + l + '">' , o ; h . debug && ( o = new Date ) ; for ( e = 0 ; e < n ; e ++ ) a += '<td><input type="search" data-col="' + e + '" class="' + l , a += h . headers [ e ] && h . headers [ e ] . hasOwnProperty ( "filter" ) && ! 1 === h . headers [ e ] . filter || b ( h . headerList [ e ] ) . is ( ".filter-false" ) ? ' disabled" disabled' : '"' , a += "></td>" ; m . find ( "thead" ) . append ( a += "</tr>" ) . find ( "input." + l ) . bind ( "keyup search" , function ( ) { d = m . find ( "thead" ) . find ( "input." + l ) . map ( function ( ) { return ( b ( this ) . val ( ) || "" ) . toLowerCase ( ) } ) . get ( ) ; "" === d . join ( "" ) ? m . find ( "tr" ) . show ( ) : m . find ( "tbody" ) . find ( "tr:not(." + h . cssChildRow + ")" ) . each ( function ( ) { c = ! 0 ; f = b ( this ) . nextUntil ( "tr:not(." + h . cssChildRow + ")" ) ; g = f . length && ( k && k . hasOwnProperty ( "filter_childRows" ) && "undefined" !== typeof k . filter _childRows ? k . filter _childRows : 1 ) ? f . text ( ) : "" ; j = b ( this ) . find ( "td" ) ; for ( e = 0 ; e < n ; e ++ ) i = ( j . eq ( e ) . text ( ) + g ) . toLowerCase ( ) . indexOf ( d [ e ] ) , "" !== d [ e ] && ( ! k . filter _startsWith && 0 <= i || k . filter _startsWith && 0 === i ) ? c = c ? ! 0 : ! 1 : "" !== d [ e ] && ( c = ! 1 ) ; b ( this ) [ c ? "show" : "hide" ] ( ) ; if ( f . length ) f [ c ? "show" : "hide" ] ( ) } ) ; m . trigger ( "applyWidgets" ) } ) ; h . debug && b . tablesorter . benchmark ( "Applying Filter widget" , o ) } } } ) ;
b . tablesorter . addWidget ( { id : "stickyHeaders" , format : function ( a ) { if ( ! b ( a ) . hasClass ( "hasStickyHeaders" ) ) { var e = b ( a ) . addClass ( "hasStickyHeaders" ) , d = a . config . widgetOptions , c = b ( window ) , g = b ( a ) . find ( "thead" ) , i = g . find ( "tr" ) . children ( ) , f = d . stickyHeaders || "tablesorter-stickyHeader" , j = i . eq ( 0 ) , h = g . find ( "tr.tablesorter-header" ) . clone ( ) . removeClass ( "tablesorter-header" ) . addClass ( f ) . css ( { width : g . outerWidth ( ! 0 ) , position : "fixed" , left : j . offset ( ) . left , margin : 0 , top : 0 , visibility : "hidden" , zIndex : 10 } ) , k = h . children ( ) , l = "" ; e . bind ( "sortEnd" , function ( a , c ) { var d = b ( c ) . find ( "thead tr" ) , e = d . filter ( "." + f ) . children ( ) ; d . filter ( ":not(." + f + ")" ) . children ( ) . each ( function ( a ) { e . eq ( a ) . attr ( "class" , b ( this ) . attr ( "class" ) ) } ) } ) . bind ( "pagerComplete" , function ( ) { c . resize ( ) } ) ; i . each ( function ( a ) { var c = b ( this ) ; k . eq ( a ) . bind ( "click" , function ( a ) { c . trigger ( a ) } ) . bind ( "mousedown" , function ( ) { this . onselectstart = function ( ) { return ! 1 } ; return ! 1 } ) . find ( ".tablesorter-header-inner" ) . width ( c . find ( ".tablesorter-header-inner" ) . width ( ) ) } ) ; g . prepend ( h ) ; c . scroll ( function ( ) { var a = j . offset ( ) , b = c . scrollTop ( ) , b = b > a . top && b < a . top + e . find ( "tbody" ) . height ( ) ? "visible" : "hidden" ; h . css ( { left : a . left - c . scrollLeft ( ) , visibility : b } ) ; b !== l && ( c . resize ( ) , l = b ) } ) . resize ( function ( ) { h . css ( { left : j . offset ( ) . left - c . scrollLeft ( ) , width : g . outerWidth ( ) } ) ; k . find ( ".tablesorter-header-inner" ) . each ( function ( a ) { b ( this ) . width ( i . eq ( a ) . find ( ".tablesorter-header-inner" ) . width ( ) ) } ) } ) } } } ) ;
b . tablesorter . addWidget ( { id : "resizable" , format : function ( a ) { if ( ! b ( a ) . hasClass ( "hasResizable" ) ) { b ( a ) . addClass ( "hasResizable" ) ; var e , d , c = a . config , g = b ( c . headerList ) . filter ( ":gt(0)" ) , i = 0 , f = null , j = null , h = function ( ) { i = 0 ; f = j = null ; b ( window ) . trigger ( "resize" ) } ; if ( d = b . tablesorter . storage ? b . tablesorter . storage ( a , "tablesorter-resizable" ) : "" ) for ( e in d ) ! isNaN ( e ) && e < c . headerList . length && b ( c . headerList [ e ] ) . width ( d [ e ] ) ; g . each ( function ( ) { b ( this ) . append ( '<div class="tablesorter-resizer" style="cursor:w-resize;position:absolute;height:100%;width:20px;left:-20px;top:0;z-index:1;"></div>' ) . wrapInner ( '<div style="position:relative;height:100%;width:100%"></div>' ) } ) . bind ( "mousemove" , function ( a ) { if ( 0 !== i && f ) { var b = a . pageX - i ; f . width ( ) < - b || j && j . width ( ) <= b || ( j . width ( j . width ( ) + b ) , i = a . pageX ) } } ) . bind ( "mouseup" , function ( ) { d && b . tablesorter . storage && f && ( d [ j . index ( ) ] = j . width ( ) , b . tablesorter . storage ( a , "tablesorter-resizable" , d ) ) ; h ( ) ; return ! 1 } ) . find ( ".tablesorter-resizer" ) . bind ( "mousedown" , function ( a ) { f = b ( a . target ) . closest ( "th" ) ; j = f . prev ( ) ; i = a . pageX } ) ; b ( a ) . find ( "thead" ) . bind ( "mouseup mouseleave" , function ( ) { h ( ) } ) } } } ) ;
b . tablesorter . addWidget ( { id : "saveSort" , init : function ( a , b , d ) { d . format ( a , ! 0 ) } , format : function ( a , e ) { var d , c , g = a . config ; d = { sortList : g . sortList } ; g . debug && ( c = new Date ) ; b ( a ) . hasClass ( "hasSaveSort" ) ? a . hasInitialized && b . tablesorter . storage && ( b . tablesorter . storage ( a , "tablesorter-savesort" , d ) , g . debug && b . tablesorter . benchmark ( "saveSort widget: Saving last sort: " + g . sortList , c ) ) : ( b ( a ) . addClass ( "hasSaveSort" ) , d = "" , b . tablesorter . storage && ( d = ( d = b . tablesorter . storage ( a , "tablesorter-savesort" ) ) && d . hasOwnProperty ( "sortList" ) && b . isArray ( d . sortList ) ? d . sortList : "" , g . debug && b . tablesorter . benchmark ( "saveSort: Last sort loaded: " + d , c ) ) , e && d && 0 < d . length ? g . sortList = d : a . hasInitialized && d && 0 < d . length && b ( a ) . trigger ( "sorton" , [ d ] ) ) } } )
2012-03-18 14:02:11 +00:00
} ) ( jQuery ) ;