var SortableTable={init:function(_1,o){var _3=$(_1);if(_3.tagName!="TABLE"){return;}if(!_3.id){_3.id="sortable-table-"+SortableTable._count++;}Object.extend(SortableTable.options,o||{});var _4=(SortableTable.options.tableScroll=="on"||(SortableTable.options.tableScroll=="class"&&_3.hasClassName(SortableTable.options.tableScrollClass)));var _5;var _6=SortableTable.getHeaderCells(_3);_6.each(function(c){c=$(c);if(!_4){Event.observe(c,"click",SortableTable._sort.bindAsEventListener(c));c.addClassName(SortableTable.options.columnClass);}if(c.hasClassName(SortableTable.options.sortFirstAscendingClass)||c.hasClassName(SortableTable.options.sortFirstDecendingClass)){_5=c;}});if(_5){if(_5.hasClassName(SortableTable.options.sortFirstAscendingClass)){SortableTable.sort(_3,_5,1);}else{SortableTable.sort(_3,_5,-1);}}else{var _8=SortableTable.getBodyRows(_3);_8.each(function(r,i){SortableTable.addRowClass(r,i);});}if(_4){SortableTable.initScroll(_3);}},initScroll:function(_b){var _c=$(_b);if(_c.tagName!="TABLE"){return;}_c.addClassName(SortableTable.options.tableScrollClass);var w=_c.getDimensions().width;_c.setStyle({"border-spacing":"0","table-layout":"fixed",width:w+"px"});var _e=SortableTable.getHeaderCells(_c);_e.each(function(c,i){c=$(c);var cw=c.getDimensions().width;c.setStyle({width:cw+"px"});$A(_c.tBodies[0].rows).each(function(r){$(r.cells[i]).setStyle({width:cw+"px"});});});var _13=(_c.tHead&&_c.tHead.rows.length>0)?_c.tHead:_c.rows[0];var _14=_13.cloneNode(true);var _15=$(document.createElement("div"));_15.id=_c.id+"-head";_c.parentNode.insertBefore(_15,_c);_15.setStyle({overflow:"hidden"});var _16=$(document.createElement("table"));_16.setStyle({"border-spacing":"0","table-layout":"fixed",width:w+"px"});_15.appendChild(_16);_15.addClassName("scroll-table-head");_c.removeChild(_13);_16.appendChild(_14);_e=SortableTable.getHeaderCells(_16);_e.each(function(c){c=$(c);Event.observe(c,"click",SortableTable._sortScroll.bindAsEventListener(c));c.addClassName(SortableTable.options.columnClass);});var _18=$(document.createElement("div"));_18.id=_c.id+"-body";_c.parentNode.insertBefore(_18,_c);_18.setStyle({overflow:"auto"});_18.appendChild(_c);_18.addClassName("scroll-table-body");_15.scrollLeft=0;_18.scrollLeft=0;Event.observe(_18,"scroll",SortableTable._scroll.bindAsEventListener(_c),false);if(_c.offsetHeight-_18.offsetHeight>0){_18.setStyle({width:(_18.getDimensions().width+16)+"px"});}},_scroll:function(){$(this.id+"-head").scrollLeft=$(this.id+"-body").scrollLeft;},_sort:function(e){SortableTable.sort(null,this);},_sortScroll:function(e){var _1b=$(this).up("div.scroll-table-head");var id=_1b.id.match(/^(.*)-head$/);SortableTable.sort($(id[1]),this);},sort:function(_1d,_1e,_1f){var _20;if(typeof _1e=="number"){if(!_1d||(_1d.tagName&&_1d.tagName!="TABLE")){return;}_1e=Math.min(_1d.rows[0].cells.length,_1e);_1e=Math.max(1,_1e);_1e-=1;_20=(_1d.tHead&&_1d.tHead.rows.length>0)?$(_1d.tHead.rows[_1d.tHead.rows.length-1].cells[_1e]):$(_1d.rows[0].cells[_1e]);}else{_20=$(_1e);_1d=_1d?$(_1d):_1d=_20.up("table");_1e=SortableTable.getCellIndex(_20);}var op=SortableTable.options;if(_20.hasClassName(op.nosortClass)){return;}_1f=_1f?_1f:(_20.hasClassName(op.descendingClass)?1:-1);var _22=SortableTable.getHeaderCells(null,_20);$A(_22).each(function(c,i){c=$(c);if(i==_1e){if(_1f==1){c.removeClassName(op.descendingClass);c.addClassName(op.ascendingClass);}else{c.removeClassName(op.ascendingClass);c.addClassName(op.descendingClass);}}else{c.removeClassName(op.ascendingClass);c.removeClassName(op.descendingClass);}});var _25=SortableTable.getBodyRows(_1d);var _26=SortableTable.getDataType(_20,_1e,_1d);_25.sort(function(a,b){return _1f*SortableTable.types[_26](SortableTable.getCellText(a.cells[_1e]),SortableTable.getCellText(b.cells[_1e]));});_25.each(function(r,i){_1d.tBodies[0].appendChild(r);SortableTable.addRowClass(r,i);});},types:{number:function(a,b){var _2d=function(v){v=parseFloat(v.replace(/^.*?([-+]?[\d]*\.?[\d]+(?:[eE][-+]?[\d]+)?).*$/,"$1"));return isNaN(v)?0:v;};return SortableTable.compare(_2d(a),_2d(b));},text:function(a,b){return SortableTable.compare(a?a.toLowerCase():"",b?b.toLowerCase():"");},casesensitivetext:function(a,b){return SortableTable.compare(a,b);},datasize:function(a,b){var _35=function(v){var r=v.match(/^([-+]?[\d]*\.?[\d]+([eE][-+]?[\d]+)?)\s?([k|m|g|t]?b)?/i);var b=r[1]?Number(r[1]).valueOf():0;var m=r[3]?r[3].substr(0,1).toLowerCase():"";switch(m){case "k":return b*1024;break;case "m":return b*1024*1024;break;case "g":return b*1024*1024*1024;break;case "t":return b*1024*1024*1024*1024;break;}return b;};return SortableTable.compare(_35(a),_35(b));},"date-au":function(a,b){var _3c=function(v){var r=v.match(/^(\d{2})\/(\d{2})\/(\d{4})\s?(?:(\d{1,2})\:(\d{2})(?:\:(\d{2}))?\s?([a|p]?m?))?/i);var _3f=r[3];var _40=parseInt(r[2])-1;var _41=r[1];var _42=r[4]?r[4]:0;if(r[7]&&r[7].toLowerCase().indexOf("p")!=-1){_42=parseInt(r[4])+12;}var _43=r[5]?r[5]:0;var _44=r[6]?r[6]:0;return new Date(_3f,_40,_41,_42,_43,_44,0).valueOf();};return SortableTable.compare(a?_3c(a):0,b?_3c(b):0);},"date-us":function(a,b){var _47=function(v){var r=v.match(/^(\d{2})\/(\d{2})\/(\d{4})\s?(?:(\d{1,2})\:(\d{2})(?:\:(\d{2}))?\s?([a|p]?m?))?/i);var _4a=r[3];var _4b=parseInt(r[1])-1;var _4c=r[2];var _4d=r[4]?r[4]:0;if(r[7]&&r[7].toLowerCase().indexOf("p")!=-1){_4d=parseInt(r[4])+12;}var _4e=r[5]?r[5]:0;var _4f=r[6]?r[6]:0;return new Date(_4a,_4b,_4c,_4d,_4e,_4f,0).valueOf();};return SortableTable.compare(a?_47(a):0,b?_47(b):0);},"date-eu":function(a,b){var _52=function(v){var r=v.match(/^(\d{2})-(\d{2})-(\d{4})/);var _55=r[3];var _56=parseInt(r[2])-1;var _57=r[1];return new Date(_55,_56,_57).valueOf();};return SortableTable.compare(a?_52(a):0,b?_52(b):0);},"date-iso":function(a,b){var _5a=function(v){var d=v.match(/([\d]{4})(-([\d]{2})(-([\d]{2})(T([\d]{2}):([\d]{2})(:([\d]{2})(\.([\d]+))?)?(Z|(([-+])([\d]{2}):([\d]{2})))?)?)?)?/);var _5d=0;var _5e=new Date(d[1],0,1);if(d[3]){_5e.setMonth(d[3]-1);}if(d[5]){_5e.setDate(d[5]);}if(d[7]){_5e.setHours(d[7]);}if(d[8]){_5e.setMinutes(d[8]);}if(d[10]){_5e.setSeconds(d[10]);}if(d[12]){_5e.setMilliseconds(Number("0."+d[12])*1000);}if(d[14]){_5d=(Number(d[16])*60)+Number(d[17]);_5d*=((d[15]=="-")?1:-1);}_5d-=_5e.getTimezoneOffset();if(_5d!=0){var _5f=(Number(_5e)+(_5d*60*1000));_5e.setTime(Number(_5f));}return _5e.valueOf();};return SortableTable.compare(a?_5a(a):0,b?_5a(b):0);},date:function(a,b){if(a&&b){return SortableTable.compare(new Date(a),new Date(b));}else{return SortableTable.compare(a?1:0,b?1:0);}return SortableTable.compare(a?new Date(a).valueOf():0,b?new Date(b).valueOf():0);},time:function(a,b){var d=new Date();var ds=d.getMonth()+"/"+d.getDate()+"/"+d.getFullYear()+" ";return SortableTable.compare(new Date(ds+a),new Date(ds+b));},currency:function(a,b){a=parseFloat(a.replace(/[^-\d\.]/g,""));b=parseFloat(b.replace(/[^-\d\.]/g,""));return SortableTable.compare(a,b);}},compare:function(a,b){return a<b?-1:a==b?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(_6a,_6b){SortableTable.types[_6a]=_6b;},addDetector:function(_6c,_6d){SortableTable.detectors.unshift({re:_6c,type:_6d});},getBodyRows:function(_6e){_6e=$(_6e);return (_6e.hasClassName(SortableTable.options.tableScrollClass)||_6e.tHead&&_6e.tHead.rows.length>0)?$A(_6e.tBodies[0].rows):$A(_6e.rows).without(_6e.rows[0]);},addRowClass:function(r,i){r=$(r);r.removeClassName(SortableTable.options.rowEvenClass);r.removeClassName(SortableTable.options.rowOddClass);r.addClassName(((i+1)%2==0?SortableTable.options.rowEvenClass:SortableTable.options.rowOddClass));},getHeaderCells:function(_71,_72){if(!_71){_71=$(_72).up("table");}return $A((_71.tHead&&_71.tHead.rows.length>0)?_71.tHead.rows[_71.tHead.rows.length-1].cells:_71.rows[0].cells);},getCellIndex:function(_73){return $A(_73.parentNode.cells).indexOf(_73);},getCellText:function(_74){if(!_74){return "";}return _74.textContent?_74.textContent:_74.innerText;},getDataType:function(_75,_76,_77){_75=$(_75);var t=_75.classNames().detect(function(n){return (SortableTable.types[n])?true:false;});if(!t){var i=_76?_76:SortableTable.getCellIndex(_75);var tbl=_77?_77:_75.up("table");_75=tbl.tBodies[0].rows[0].cells[i];t=SortableTable.detectors.detect(function(d){return d.re.test(SortableTable.getCellText(_75));})["type"];}return t;},setup:function(o){Object.extend(SortableTable.options,o||{});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:"even",rowOddClass:"odd",tableScroll:"class",tableScrollClass:"scroll"},_count:0,load:function(){if(SortableTable.options.autoLoad){$A(SortableTable.options.tableSelector).each(function(s){$$(s).each(function(t){SortableTable.init(t,{tableScroll:SortableTable.options.tableScroll});});});}}};