(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,textExtractionType: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",u);var m=(o.tBodies[0]&&o.tBodies[0].rows.length-1)||0;u();i();function i(){var z=o.rows[0];var B=o.rows[1];j=z.cells.length;for(var A=0;A<j;A++){var y=z.cells[A];if(B&&!a.tableSorter.utils.isHeaderDisabled(b,y,b.disableHeader,A)){var C=a.tableSorter.utils.getElementText(b,B.cells[A],"columns",A);if(typeof(b.sortColumn)=="string"){if(b.sortColumn.toLowerCase()==a.tableSorter.utils.getElementText(b,y,"header",A).toLowerCase()){b.sortColumn=A}}d[A]=a.tableSorter.analyzer.analyseString(b,C);if(b.columnParser){var w=b.columnParser;var v=w.length;for(var x=0;x<v;x++){if(A==w[x][0]){d[A]=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(D){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(D){p(a(this),((b.lockedSortDir)?b.lockedSortDir:a(this)[0].count++)%2,a(this)[0].index);return false})}y.index=A;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(){k=[];f=[];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])}}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("thead th",o).removeClass(b.sortClassAsc).removeClass(b.sortClassDesc);a(l).addClass((w%2?b.sortClassAsc:b.sortClassDesc));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,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(f,h,c,b){if(!h){return""}var e="";if(c=="header"){e=a(h).text()}else{if(c=="columns"){if(f.textExtractionCustom&&typeof(f.textExtractionCustom[b])=="function"){e=f.textExtractionCustom[b](h)}else{if(f.textExtraction=="simple"){if(typeof(f.textExtractionType)=="object"){var g=f.textExtractionType;a.each(g,function(d){var j=h[g[d]];if(j&&j.length>0){e=j}})}else{if(h.childNodes[0]&&h.childNodes[0].hasChildNodes()){e=h.childNodes[0].innerHTML}else{e=h.innerHTML}}}else{if(f.textExtraction=="complex"){e=a(h).text()}}}}}return e},appendToTable:function(e,f,h,d,g){var b=h.length;a("> tbody:first",f).empty().append(h);if(e.stripingRowClass){a("> tbody:first>tr",f).removeClass(e.stripingRowClass[0]).removeClass(e.stripingRowClass[1]);a.tableSorter.utils.stripeRows(e,f)}if(e.highlightClass){a.tableSorter.utils.highlightColumn(e,f,d,g)}h=null},highlightColumn:function(c,d,b,e){a("> tbody:first>tr",d).find("td:eq("+e+")").removeClass(c.highlightClass);a("> tbody:first>tr",d).find("td:eq("+b+")").addClass(c.highlightClass)},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(d,c){return((d[1]<c[1])?-1:((d[1]>c[1])?1:0))},numeric:function(d,c){return d[1]-c[1]}}};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((b!="")?new Date(b.replace(new RegExp(/-/g),"/")).getTime():"0")},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);