if(!Spry){Spry={};}if(!Spry.Widget){Spry.Widget={};}Spry.Widget.DynamicTable=function(b,a){this.element=Spry.$(b);this.columnTypes={};this.sortOrder="";this.columnNameMap={};this.cache={};this.ascendingSortClass="ascending";this.descendingSortClass="descending";this.hoverClass="hover";this.selectedClass="selected";
this.addBehaviors();};Spry.Widget.DynamicTable.prototype.addBehaviors=function(){var a=this;Spry.$$("th.sortable",this.element).addEventListener("click",function(b){a.sort(this,"toggle");},false).forEach(function(c){var b=c.innerHTML;if(b){b=b.replace(/^\s+|<\/?([^>]|\s)+>|\s+$/g,"").replace(/\s+/g," ").replace(/\s/g,"_");
a.columnNameMap[b]=c;c.spryColumnName=b;}});};Spry.Widget.DynamicTable.prototype.getTHForColumnName=function(a){if(typeof a=="object"){return a;}return this.columnNameMap[a];};Spry.Widget.DynamicTable.prototype.extractColumnData=function(a){var f=this.cache[a];if(f){return f;}var e=this.getTHForColumnName(a);
if(!e){return null;}f=new Array;var b=Spry.$$("th");var g=1;for(var c=0;c<b.length;c++){if(b[c]==e){break;}}var d=Spry.$$("td:nth-child("+(c+1)+")",this.element).forEach(function(j){var i=new Object;i.element=j;var h=j.innerHTML;if(h){h=h.replace(/^\s+|<\/?([^>]|\s)+>|\s+$/g,"");}else{h="";}i.value=h;
f.push(i);});this.cache[a]=f;return f;};Spry.Widget.DynamicTable.prototype.sort=function(c,b){var e=this.getTHForColumnName(c);if(!e){return this.sortOrder;}c=e.spryColumnName;Spry.$$("th.sortable",e.parentNode).removeClassName(this.ascendingSortClass).removeClassName(this.descendingSortClass);if(b=="toggle"){b=this.ascendingSortClass;
if(this.sortOrder){b=(this.sortOrder==this.ascendingSortClass)?this.descendingSortClass:this.ascendingSortClass;}}var f=this.extractColumnData(c);if(f&&f.length>1){f.sort(this.sort.getSortFunc("value",this.getColumnType(c),b));var a=f[0].element.parentNode.parentNode;for(var d=0;d<f.length;d++){a.insertBefore(f[d].element.parentNode,null);
}}this.sortOrder=b;Spry.Utils.addClassName(e,this.sortOrder);return this.sortOrder;};Spry.Widget.DynamicTable.prototype.sort.getSortFunc=function(d,c,a){var b=null;if(c=="number"){if(a=="ascending"){b=function(f,e){f=f[d];e=e[d];if(f==undefined||e==undefined){return(f==e)?0:(f?1:-1);}return f-e;};}else{b=function(f,e){f=f[d];
e=e[d];if(f==undefined||e==undefined){return(f==e)?0:(f?-1:1);}return e-f;};}}else{if(c=="date"){if(a=="ascending"){b=function(g,e){var h=g[d];var f=e[d];h=h?(new Date(h)):0;f=f?(new Date(f)):0;return h-f;};}else{b=function(g,e){var h=g[d];var f=e[d];h=h?(new Date(h)):0;f=f?(new Date(f)):0;return f-h;
};}}else{if(a=="ascending"){b=function(l,k){l=l[d];k=k[d];if(l==undefined||k==undefined){return(l==k)?0:(l?1:-1);}var o=l.toString();var m=k.toString();var e=o.toLowerCase();var f=m.toLowerCase();var h=o.length>m.length?m.length:o.length;for(var g=0;g<h;g++){var p=e.charAt(g);var n=f.charAt(g);var j=o.charAt(g);
var q=m.charAt(g);if(p>n){return 1;}else{if(p<n){return -1;}else{if(j>q){return 1;}else{if(j<q){return -1;}}}}}if(o.length==m.length){return 0;}else{if(o.length>m.length){return 1;}}return -1;};}else{b=function(l,k){l=l[d];k=k[d];if(l==undefined||k==undefined){return(l==k)?0:(l?-1:1);}var o=l.toString();
var m=k.toString();var e=o.toLowerCase();var f=m.toLowerCase();var h=o.length>m.length?m.length:o.length;for(var g=0;g<h;g++){var p=e.charAt(g);var n=f.charAt(g);var j=o.charAt(g);var q=m.charAt(g);if(p>n){return -1;}else{if(p<n){return 1;}else{if(j>q){return -1;}else{if(j<q){return 1;}}}}}if(o.length==m.length){return 0;
}else{if(o.length>m.length){return -1;}}return 1;};}}}return b;};Spry.Widget.DynamicTable.prototype.sort.buildSecondarySortFunc=function(b,a){return function(d,c){var e=b(d,c);if(e==0){e=a(d,c);}return e;};};Spry.Widget.DynamicTable.prototype.setColumnType=function(c,b){if(c){if(typeof c=="string"){c=[c];
}for(var a=0;a<c.length;a++){this.columnTypes[c[a]]=b;}}};Spry.Widget.DynamicTable.prototype.getColumnType=function(a){if(this.columnTypes[a]){return this.columnTypes[a];}return"string";};
