var SortableTable={init:function(g,f){var d=$(g);if(d.tagName!="TABLE"){return}if(!d.id){d.id="sortable-table-"+SortableTable._count++}Object.extend(SortableTable.options,f||{});var a=(SortableTable.options.tableScroll=="on"||(SortableTable.options.tableScroll=="class"&&d.hasClassName(SortableTable.options.tableScrollClass)));var c;var b=SortableTable.getHeaderCells(d);b.each(function(h){h=$(h);if(!a){Event.observe(h,"click",SortableTable._sort.bindAsEventListener(h));h.addClassName(SortableTable.options.columnClass)}if(h.hasClassName(SortableTable.options.sortFirstAscendingClass)||h.hasClassName(SortableTable.options.sortFirstDecendingClass)){c=h}});if(c){if(c.hasClassName(SortableTable.options.sortFirstAscendingClass)){SortableTable.sort(d,c,1)}else{SortableTable.sort(d,c,-1)}}else{var e=SortableTable.getBodyRows(d);e.each(function(j,h){SortableTable.addRowClass(j,h)})}if(a){SortableTable.initScroll(d)}},initScroll:function(d){var g=$(d);if(g.tagName!="TABLE"){return}g.addClassName(SortableTable.options.tableScrollClass);var f=g.getDimensions().width;g.setStyle({"border-spacing":"0","table-layout":"fixed",width:f+"px"});var i=SortableTable.getHeaderCells(g);i.each(function(l,k){l=$(l);var j=l.getDimensions().width;l.setStyle({width:j+"px"});$A(g.tBodies[0].rows).each(function(m){$(m.cells[k]).setStyle({width:j+"px"})})});var e=(g.tHead&&g.tHead.rows.length>0)?g.tHead:g.rows[0];var c=e.cloneNode(true);var h=$(document.createElement("div"));h.id=g.id+"-head";g.parentNode.insertBefore(h,g);h.setStyle({overflow:"hidden"});var b=$(document.createElement("table"));b.setStyle({"border-spacing":"0","table-layout":"fixed",width:f+"px"});h.appendChild(b);h.addClassName("scroll-table-head");g.removeChild(e);b.appendChild(c);i=SortableTable.getHeaderCells(b);i.each(function(j){j=$(j);Event.observe(j,"click",SortableTable._sortScroll.bindAsEventListener(j));j.addClassName(SortableTable.options.columnClass)});var a=$(document.createElement("div"));a.id=g.id+"-body";g.parentNode.insertBefore(a,g);a.setStyle({overflow:"auto"});a.appendChild(g);a.addClassName("scroll-table-body");h.scrollLeft=0;a.scrollLeft=0;Event.observe(a,"scroll",SortableTable._scroll.bindAsEventListener(g),false);if(g.offsetHeight-a.offsetHeight>0){a.setStyle({width:(a.getDimensions().width+16)+"px"})}},_scroll:function(){$(this.id+"-head").scrollLeft=$(this.id+"-body").scrollLeft},_sort:function(a){SortableTable.sort(null,this)},_sortScroll:function(b){var a=$(this).up("div.scroll-table-head");var c=a.id.match(/^(.*)-head$/);SortableTable.sort($(c[1]),this)},sort:function(f,d,c){var b;if(typeof d=="number"){if(!f||(f.tagName&&f.tagName!="TABLE")){return}d=Math.min(f.rows[0].cells.length,d);d=Math.max(1,d);d-=1;b=(f.tHead&&f.tHead.rows.length>0)?$(f.tHead.rows[f.tHead.rows.length-1].cells[d]):$(f.rows[0].cells[d])}else{b=$(d);f=f?$(f):f=b.up("table");d=SortableTable.getCellIndex(b)}var h=SortableTable.options;if(b.hasClassName(h.nosortClass)){return}c=c?c:(b.hasClassName(h.descendingClass)?1:-1);var a=SortableTable.getHeaderCells(null,b);$A(a).each(function(k,j){k=$(k);if(j==d){if(c==1){k.removeClassName(h.descendingClass);k.addClassName(h.ascendingClass)}else{k.removeClassName(h.ascendingClass);k.addClassName(h.descendingClass)}}else{k.removeClassName(h.ascendingClass);k.removeClassName(h.descendingClass)}});var g=SortableTable.getBodyRows(f);var e=SortableTable.getDataType(b,d,f);g.sort(function(j,i){return c*SortableTable.types[e](SortableTable.getCellText(j.cells[d]),SortableTable.getCellText(i.cells[d]))});g.each(function(k,j){f.tBodies[0].appendChild(k);SortableTable.addRowClass(k,j)})},types:{number:function(d,c){var e=function(a){a=parseFloat(a.replace(/^.*?([-+]?[\d]*\.?[\d]+(?:[eE][-+]?[\d]+)?).*$/,"$1"));return isNaN(a)?0:a};return SortableTable.compare(e(d),e(c))},text:function(d,c){return SortableTable.compare(d?d.toLowerCase():"",c?c.toLowerCase():"")},casesensitivetext:function(d,c){return SortableTable.compare(d,c)},datasize:function(d,c){var e=function(g){var h=g.match(/^([-+]?[\d]*\.?[\d]+([eE][-+]?[\d]+)?)\s?([k|m|g|t]?b)?/i);var f=h[1]?Number(h[1]).valueOf():0;var a=h[3]?h[3].substr(0,1).toLowerCase():"";switch(a){case"k":return f*1024;break;case"m":return f*1024*1024;break;case"g":return f*1024*1024*1024;break;case"t":return f*1024*1024*1024*1024;break}return f};return SortableTable.compare(e(d),e(c))},"date-au":function(d,c){var e=function(f){var i=f.match(/^(\d{2})\/(\d{2})\/(\d{4})\s?(?:(\d{1,2})\:(\d{2})(?:\:(\d{2}))?\s?([a|p]?m?))?/i);var j=i[3];var b=parseInt(i[2])-1;var h=i[1];var g=i[4]?i[4]:0;if(i[7]&&i[7].toLowerCase().indexOf("p")!=-1){g=parseInt(i[4])+12}var a=i[5]?i[5]:0;var k=i[6]?i[6]:0;return new Date(j,b,h,g,a,k,0).valueOf()};return SortableTable.compare(d?e(d):0,c?e(c):0)},"date-us":function(d,c){var e=function(f){var i=f.match(/^(\d{2})\/(\d{2})\/(\d{4})\s?(?:(\d{1,2})\:(\d{2})(?:\:(\d{2}))?\s?([a|p]?m?))?/i);var j=i[3];var b=parseInt(i[1])-1;var h=i[2];var g=i[4]?i[4]:0;if(i[7]&&i[7].toLowerCase().indexOf("p")!=-1){g=parseInt(i[4])+12}var a=i[5]?i[5]:0;var k=i[6]?i[6]:0;return new Date(j,b,h,g,a,k,0).valueOf()};return SortableTable.compare(d?e(d):0,c?e(c):0)},"date-eu":function(d,c){var e=function(b){var g=b.match(/^(\d{2})-(\d{2})-(\d{4})/);var h=g[3];var a=parseInt(g[2])-1;var f=g[1];return new Date(h,a,f).valueOf()};return SortableTable.compare(d?e(d):0,c?e(c):0)},"date-iso":function(d,c){var e=function(a){var h=a.match(/([\d]{4})(-([\d]{2})(-([\d]{2})(T([\d]{2}):([\d]{2})(:([\d]{2})(\.([\d]+))?)?(Z|(([-+])([\d]{2}):([\d]{2})))?)?)?)?/);var g=0;var b=new Date(h[1],0,1);if(h[3]){b.setMonth(h[3]-1)}if(h[5]){b.setDate(h[5])}if(h[7]){b.setHours(h[7])}if(h[8]){b.setMinutes(h[8])}if(h[10]){b.setSeconds(h[10])}if(h[12]){b.setMilliseconds(Number("0."+h[12])*1000)}if(h[14]){g=(Number(h[16])*60)+Number(h[17]);g*=((h[15]=="-")?1:-1)}g-=b.getTimezoneOffset();if(g!=0){var f=(Number(b)+(g*60*1000));b.setTime(Number(f))}return b.valueOf()};return SortableTable.compare(d?e(d):0,c?e(c):0)},date:function(d,c){if(d&&c){return SortableTable.compare(new Date(d),new Date(c))}else{return SortableTable.compare(d?1:0,c?1:0)}return SortableTable.compare(d?new Date(d).valueOf():0,c?new Date(c).valueOf():0)},time:function(e,c){var g=new Date();var f=g.getMonth()+"/"+g.getDate()+"/"+g.getFullYear()+" ";return SortableTable.compare(new Date(f+e),new Date(f+c))},currency:function(d,c){d=parseFloat(d.replace(/[^-\d\.]/g,""));c=parseFloat(c.replace(/[^-\d\.]/g,""));return SortableTable.compare(d,c)}},compare:function(d,c){return d<c?-1:d==c?0:1},detectors:$A([{re:/[\d]{4}-[\d]{2}-[\d]{2}(?:T[\d]{2}\:[\d]{2}(?:\:[\d]{2}(?:\.[\d]+)?)?(Z|([-+][\d]{2}:[\d]{2})?)?)?/,type:"date-iso"},{re:/^sun|mon|tue|wed|thu|fri|sat\,\s\d{1,2}\sjan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec\s\d{4}(?:\s\d{2}\:\d{2}(?:\:\d{2})?(?:\sGMT(?:[+-]\d{4})?)?)?/i,type:"date"},{re:/^\d{2}-\d{2}-\d{4}/i,type:"date-eu"},{re:/^\d{2}\/\d{2}\/\d{4}\s?(?:\d{1,2}\:\d{2}(?:\:\d{2})?\s?[a|p]?m?)?/i,type:"date-au"},{re:/^\d{1,2}\:\d{2}(?:\:\d{2})?(?:\s[a|p]m)?$/i,type:"time"},{re:/^[$ŁĄ€¤]/,type:"currency"},{re:/^[-+]?[\d]*\.?[\d]+(?:[eE][-+]?[\d]+)?\s?[k|m|g|t]b$/i,type:"datasize"},{re:/^[-+]?[\d]*\.?[\d]+(?:[eE][-+]?[\d]+)?/,type:"number"},{re:/^[A-Z]+$/,type:"casesensitivetext"},{re:/.*/,type:"text"}]),addSortType:function(b,a){SortableTable.types[b]=a},addDetector:function(b,a){SortableTable.detectors.unshift({re:b,type:a})},getBodyRows:function(a){a=$(a);return(a.hasClassName(SortableTable.options.tableScrollClass)||a.tHead&&a.tHead.rows.length>0)?$A(a.tBodies[0].rows):$A(a.rows).without(a.rows[0])},addRowClass:function(b,a){b=$(b);b.removeClassName(SortableTable.options.rowEvenClass);b.removeClassName(SortableTable.options.rowOddClass);b.addClassName(((a+1)%2==0?SortableTable.options.rowEvenClass:SortableTable.options.rowOddClass))},getHeaderCells:function(b,a){if(!b){b=$(a).up("table")}return $A((b.tHead&&b.tHead.rows.length>0)?b.tHead.rows[b.tHead.rows.length-1].cells:b.rows[0].cells)},getCellIndex:function(a){return $A(a.parentNode.cells).indexOf(a)},getCellText:function(a){if(!a){return""}return a.textContent?a.textContent:a.innerText},getDataType:function(a,b,e){a=$(a);var d=a.classNames().detect(function(g){return(SortableTable.types[g])?true:false});if(!d){var c=b?b:SortableTable.getCellIndex(a);var f=e?e:a.up("table");a=f.tBodies[0].rows[0].cells[c];d=SortableTable.detectors.detect(function(g){return g.re.test(SortableTable.getCellText(a))})["type"]}return d},setup:function(a){Object.extend(SortableTable.options,a||{});Object.extend(SortableTable.types,SortableTable.options.types||{});SortableTable.options.types={};if(SortableTable.options.detectors){SortableTable.detectors=$A(SortableTable.options.detectors).concat(SortableTable.detectors);SortableTable.options.detectors=[]}},options:{autoLoad:true,tableSelector:["table.sortable"],columnClass:"sortcol",descendingClass:"sortdesc",ascendingClass:"sortasc",nosortClass:"nosort",sortFirstAscendingClass:"sortfirstasc",sortFirstDecendingClass:"sortfirstdesc",rowEvenClass:"roweven",rowOddClass:"rowodd",tableScroll:"class",tableScrollClass:"scroll"},_count:0,load:function(){if(SortableTable.options.autoLoad){$A(SortableTable.options.tableSelector).each(function(a){$$(a).each(function(b){SortableTable.init(b,{tableScroll:SortableTable.options.tableScroll})})})}}};if(FastInit){FastInit.addOnLoad(SortableTable.load)}else{Event.observe(window,"load",SortableTable.load)};