/* - sortable_tables.js - */
// http://www.kijubu.at/portal_javascripts/sortable_tables.js?original=1
SortableManager=function(){this.thead=null;this.tbody=null;this.columns=[];this.rows=[];this.sortState={};this.sortkey=0};mouseOverFunc=function(){addElementClass(this,"over")};mouseOutFunc=function(){removeElementClass(this,"over")};ignoreEvent=function(ev){if(ev&&ev.preventDefault){ev.preventDefault();ev.stopPropagation()} else if(typeof(event)!='undefined'){event.cancelBubble=false;event.returnValue=false}};update(SortableManager.prototype,{"initWithTable": function(table){table=getElement(table);this.thead=table.getElementsByTagName('thead')[0];var cols=this.thead.getElementsByTagName('th');for(var i=0;i<cols.length;i++){var node=cols[i];var attr=null;try{attr=node.getAttribute("mochi:format")} catch(err){}
var o=node.childNodes;this.columns.push({"format":attr,"element":node,"proto":node.cloneNode(true)})}
this.tbody=table.getElementsByTagName('tbody')[0];var rows=this.tbody.getElementsByTagName('tr');for(var i=0;i<rows.length;i++){var row=rows[i];var cols=row.getElementsByTagName('td');var rowData=[];for(var j=0;j<cols.length;j++){var cell=cols[j];var obj=scrapeText(cell);switch(this.columns[j].format){case 'isodate':obj=isoDate(obj);break;case 'str':break;case 'istr':obj=obj.toLowerCase();break;default:break}
rowData.push(obj)}
rowData.row=row.cloneNode(true);this.rows.push(rowData)}
this.drawSortedRows(this.sortkey,true,false)},"onSortClick": function(name){return method(this, function(){log('onSortClick',name);var order=this.sortState[name];if(order==null){order=true} else if(name==this.sortkey){order=!order}
this.drawSortedRows(name,order,true)})},"drawSortedRows": function(key,forward,clicked){log('drawSortedRows',key,forward);this.sortkey=key;var cmp=(forward?keyComparator:reverseKeyComparator);this.rows.sort(cmp(key));this.sortState[key]=forward;var newBody=TBODY(null,map(itemgetter("row"),this.rows));this.tbody=swapDOM(this.tbody,newBody);for(var i=0;i<this.columns.length;i++){var col=this.columns[i];var node=col.proto.cloneNode(true);col.element.onclick=null;col.element.onmousedown=null;col.element.onmouseover=null;col.element.onmouseout=null;node.onclick=this.onSortClick(i);node.onmousedown=ignoreEvent;node.onmouseover=mouseOverFunc;node.onmouseout=mouseOutFunc;if(key==i){var arrow=(forward?"\u2193":"\u2191");node.appendChild(SPAN(null,arrow));if(clicked){node.onmouseover()}}
col.element=swapDOM(col.element,node)}}});sortableManager=new SortableManager();addLoadEvent(function(){sortableManager.initWithTable('sortable_table')});addLoadEvent(function(){var elems=getElementsByTagAndClassName("A","view-source");var page="sortable_tables/";for(var i=0;i<elems.length;i++){var elem=elems[i];var href=elem.href.split(/\//).pop();elem.target="_blank";elem.href="../view-source/view-source.html#"+page+href}});

