(function(A){A.fn.tableSorter=function(C){var B={sortDir:0,sortColumn:null,sortClassAsc:"ascending",sortClassDesc:"descending",headerClass:null,stripingRowClass:false,highlightClass:false,rowLimit:0,minRowsForWaitingMsg:0,disableHeader:-1,stripeRowsOnStartUp:false,columnParser:false,rowHighlightClass:false,useCache:true,debug:false,textExtraction:"simple",textExtractionCustom:false,bind:true,addHeaderLink:false,lockedSortDir:false,enableResize:false,dateFormat:"mm/dd/yyyy"};return this.each(function(){A.extend(B,C);var K=[];var F=[];var T;var D=[];var L;var N;var J;var E;var H=false;var S=-1;var R=B.sortDir;var O=this;if(B.stripeRowsOnStartUp&&B.stripingRowClass){A.tableSorter.utils.stripeRows(B,O)}A(this).bind("resort",G);A(this).bind("flushCache",function(V){F=[]});A(this).bind("updateColumnData",function(X){var Y=E;E=O.tBodies[0].rows.length;var W=E;for(var V=Y;V<W;V++){K.push(O.tBodies[0].rows[V])}});var M=(O.tBodies[0]&&O.tBodies[0].rows.length-1)||0;U();function I(){var Z=O.rows[0];var c=O.rows[1];J=Z.cells.length;for(var b=0;b<J;b++){var Y=Z.cells[b];if(c&&!A.tableSorter.utils.isHeaderDisabled(B,Y,B.disableHeader,b)){var d=A.tableSorter.utils.getElementText(B,c.cells[b],"columns",b);if(typeof(B.sortColumn)=="string"){if(B.sortColumn.toLowerCase()==A.tableSorter.utils.getElementText(B,Y,"header",b).toLowerCase()){B.sortColumn=b}}D[b]=A.tableSorter.analyzer.analyseString(B,d);if(B.columnParser){var W=B.columnParser;var V=W.length;for(var X=0;X<V;X++){if(b==W[X][0]){D[b]=A.tableSorter.analyzer.getById(W[X][1]);continue}}}if(B.headerClass){A(Y).addClass(B.headerClass)}if(B.addHeaderLink){A(Y).wrapInner({element:'<a href="#">',name:"a",className:"sorter"});A(".sorter",Y).click(function(a){P(A(this).parent(),((B.lockedSortDir)?B.lockedSortDir:A(this).parent()[0].count++)%2,A(this).parent()[0].index);return false})}else{A(Y).click(function(a){P(A(this),((B.lockedSortDir)?B.lockedSortDir:A(this)[0].count++)%2,A(this)[0].index);return false})}Y.index=b;Y.count=B.sortDir}}if(B.enableResize){Q(Z)}if(B.sortColumn!=null){A(Z.cells[B.sortColumn]).trigger("click")}if(B.rowHighlightClass){A("> tbody:first/tr",O).click(function(){if(H){H.removeClass(B.rowHighlightClass)}H=A(this).addClass(B.rowHighlightClass)})}}function U(){E=(O.tBodies[0]&&O.tBodies[0].rows.length)||0;var V=E;for(var W=0;W<V;W++){K.push(O.tBodies[0].rows[W])}I()}function Q(W){var V=O.rows[1];for(var X=0;X<J;X++){if(V&&V.cells[X]){A(W.cells[X]).css("width",V.cells[X].clientWidth+"px")}}}function P(X,W,V){if(M>B.minRowsForWaitingMsg){A(O).trigger("sortStart")}T=V;L=X;N=W;A("th",O).removeClass(B.sortClassAsc).removeClass(B.sortClassDesc);A(L).addClass((W%2?B.sortClassAsc:B.sortClassDesc));if(B.highlightClass){if(S!=T&&S>-1){A("> tbody:first/tr",C).find("> td:eq("+S+")").removeClass(B.highlightClass).end()}}setTimeout(G,0)}function G(){if(T>=0){var X;if(A.tableSorter.cache.exist(F,T)&&B.useCache){var W=A.tableSorter.cache.get(F,T);if(W.dir==N){X=W.data;W.dir=N}else{X=W.data.reverse();W.dir=N}}else{var V=A.tableSorter.data.flatten(B,K,D,T);V.sort(D[T].sorter);if(R!=N){V.reverse()}X=A.tableSorter.data.rebuild(K,V,T,S);A.tableSorter.cache.add(F,T,N,X);V=null}A.tableSorter.utils.appendToTable(B,O,X,B,T,S);X=null;if(M>B.minRowsForWaitingMsg){A(O).trigger("sortStop",[T])}S=T}}})};A.fn.sortStart=function(B){return this.bind("sortStart",B)};A.fn.sortReload=function(B){return this.bind("sortStart",B)};A.fn.sortStop=function(B){return this.bind("sortStop",B)};A.tableSorter={params:{},cache:{add:function(B,D,C,E){var F={};F.dir=C;F.data=E;B[D]=F},get:function(B,C){return B[C]},exist:function(B,C){var D=B[C];if(!D){return false}else{return true}},clear:function(B){B=[]}},data:{flatten:function(H,G,E,F){var C=[];var B=G.length;for(var D=0;D<B;D++){C.push([D,E[F].format(A.tableSorter.utils.getElementText(H,G[D].cells[F],"columns",F),H)])}return C},rebuild:function(G,C,F,H){var B=C.length;var E=[];for(var D=0;D<B;D++){E.push(G[C[D][0]])}return E}},sorters:{},parsers:{},analyzer:{analyzers:[],add:function(B){this.analyzers.push(B)},add_to_front:function(B){this.analyzers.unshift(B)},analyseString:function(F,B){var D=false;var E=A.tableSorter.parsers.generic;var C=this.analyzers;A.each(C,function(G){if(!D){if(C[G].is(B)){D=true;E=C[G]}}});return E},getById:function(B){var C=this.analyzers;var D=A.tableSorter.parsers.generic;A.each(C,function(E){if(C[E].id==B){D=C[E]}});return D}},utils:{getElementText:function(E,F,C,B){if(!F){return""}var D="";if(C=="header"){D=A(F).text()}else{if(C=="columns"){if(E.textExtractionCustom&&typeof(E.textExtractionCustom[B])=="function"){D=E.textExtractionCustom[B](F)}else{if(E.textExtraction=="simple"){if(F.childNodes[0]&&F.childNodes[0].hasChildNodes()){D=F.childNodes[0].innerHTML}else{D=F.innerHTML}}else{if(E.textExtraction=="complex"){D=A(F).text()}}}}}return D},appendToTable:function(D,E,G,C,F){var B=G.length;A("> tbody:first",E).empty().append(G);if(D.stripingRowClass){A("> tbody:first/tr",E).removeClass(D.stripingRowClass[0]).removeClass(D.stripingRowClass[1]);A.tableSorter.utils.stripeRows(D,E)}if(D.highlightClass){A("> tbody:first/tr",E).find("> td:eq("+C+")").addClass(D.highlightClass).end()}G=null},stripeRows:function(B,C){A("> tbody:first/tr:visible:even",C).addClass(B.stripingRowClass[0]);A("> tbody:first/tr:visible:odd",C).addClass(B.stripingRowClass[1])},isHeaderDisabled:function(F,H,B,D){if(typeof(B)=="number"){return(B==D)?true:false}else{if(typeof(B)=="string"){return(B.toLowerCase()==A.tableSorter.utils.getElementText(F,H,"header",D).toLowerCase())?true:false}else{if(B.parentNode){return(H==B)?true:false}else{if(typeof(B)=="object"){var C=B.length;if(!this.lastFound){this.lastFound=-1}for(var E=0;E<C;E++){var G=A.tableSorter.utils.isHeaderDisabled(F,H,B[E],D);if(this.lastFound!=E&&G){this.lastFound=E;return G}}}else{return false}}}}}},sorters:{generic:function(C,B){return((C[1]<B[1])?-1:((C[1]>B[1])?1:0))},numeric:function(C,B){return C[1]-B[1]}}};A.fn.wrapInner=function(B){return this.each(function(){var C=A(this);var D=C.html();C.empty().append(B.el).filter(B.id).html(D)})};A.tableSorter.parsers.generic={id:"generic",is:function(B){return true},format:function(B){return B.toLowerCase()},sorter:A.tableSorter.sorters.generic};A.tableSorter.parsers.currency={id:"currency",is:function(B){return B.match(new RegExp(/^[£$?.]/g))},format:function(B){return parseFloat(B.replace(new RegExp(/[^0-9.]/g),""))},sorter:A.tableSorter.sorters.numeric};A.tableSorter.parsers.integer={id:"integer",is:function(B){return B.match(new RegExp(/^\d+$/))},format:function(B){return parseFloat(B)},sorter:A.tableSorter.sorters.numeric};A.tableSorter.parsers.floating={id:"floating",is:function(B){return B.match(new RegExp(/^(\+|-)?[0-9]+\.[0-9]+((E|e)(\+|-)?[0-9]+)?$/))},format:function(B){return parseFloat(B.replace(new RegExp(/,/),""))},sorter:A.tableSorter.sorters.numeric};A.tableSorter.parsers.ipAddress={id:"ipAddress",is:function(B){return B.match(/^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/)},format:function(D){var B=D.split(".");var F="";for(var C=0,E;E=B[C];C++){if(E.length==2){F+="0"+E}else{F+=E}}return parseFloat(F)},sorter:A.tableSorter.sorters.numeric};A.tableSorter.parsers.url={id:"url",is:function(B){return B.match(new RegExp(/(https?|ftp|file):\/\//))},format:function(B){return B.replace(new RegExp(/(https?|ftp|file):\/\//),"")},sorter:A.tableSorter.sorters.generic};A.tableSorter.parsers.isoDate={id:"isoDate",is:function(B){return B.match(new RegExp(/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/))},format:function(B){return parseFloat(new Date(B.replace(new RegExp(/-/g),"/")).getTime())},sorter:A.tableSorter.sorters.numeric};A.tableSorter.parsers.usLongDate={id:"usLongDate",is:function(B){return B.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/))},format:function(B){return parseFloat((new Date(B)).getTime())},sorter:A.tableSorter.sorters.numeric};A.tableSorter.parsers.shortDate={id:"shortDate",is:function(B){return B.match(new RegExp(/\d{1,2}[\/-]\d{1,2}[\/-]\d{2,4}/))},format:function(B,C){B=B.replace(new RegExp(/-/g),"/");if(C.dateFormat=="mm/dd/yyyy"||C.dateFormat=="mm-dd-yyyy"){B=B.replace(new RegExp(/(\d{1,2})[\/-](\d{1,2})[\/-](\d{4})/),"$3/$1/$2")}else{if(C.dateFormat=="dd/mm/yyyy"||C.dateFormat=="dd-mm-yyyy"){B=B.replace(new RegExp(/(\d{1,2})[\/-](\d{1,2})[\/-](\d{4})/),"$3/$2/$1")}}return parseFloat((new Date(B)).getTime())},sorter:A.tableSorter.sorters.numeric};A.tableSorter.parsers.time={id:"time",is:function(B){return B.toUpperCase().match(new RegExp(/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/))},format:function(B){return parseFloat((new Date("2000/01/01 "+B)).getTime())},sorter:A.tableSorter.sorters.numeric};A.tableSorter.analyzer.add(A.tableSorter.parsers.currency);A.tableSorter.analyzer.add(A.tableSorter.parsers.integer);A.tableSorter.analyzer.add(A.tableSorter.parsers.isoDate);A.tableSorter.analyzer.add(A.tableSorter.parsers.shortDate);A.tableSorter.analyzer.add(A.tableSorter.parsers.usLongDate);A.tableSorter.analyzer.add(A.tableSorter.parsers.ipAddress);A.tableSorter.analyzer.add(A.tableSorter.parsers.url);A.tableSorter.analyzer.add(A.tableSorter.parsers.time);A.tableSorter.analyzer.add(A.tableSorter.parsers.floating)})(jQuery);