function isCellEmpty(elem){var str=elem;var re=/.+/;if(!str.match(re)){return false;}else{return true;}}
function addEvent(element,type,handler){if(!handler.$$guid)handler.$$guid=addEvent.guid++;if(!element.events)element.events={};var handlers=element.events[type];if(!handlers){handlers=element.events[type]={};if(element["on"+type]){handlers[0]=element["on"+type];}}
handlers[handler.$$guid]=handler;element["on"+type]=handleEvent;};addEvent.guid=1;function removeEvent(element,type,handler){if(element.events&&element.events[type]){delete element.events[type][handler.$$guid];}};function handleEvent(event){var returnValue=true;event=event||fixEvent(window.event);var handlers=this.events[event.type];for(var i in handlers){this.$$handleEvent=handlers[i];if(this.$$handleEvent(event)===false){returnValue=false;}}
return returnValue;};function fixEvent(event){event.preventDefault=fixEvent.preventDefault;event.stopPropagation=fixEvent.stopPropagation;return event;};fixEvent.preventDefault=function(){this.returnValue=false;};fixEvent.stopPropagation=function(){this.cancelBubble=true;};function createElement(element){if(typeof document.createElementNS!='undefined'){return document.createElementNS('http://www.w3.org/1999/xhtml',element);}
if(typeof document.createElement!='undefined'){return document.createElement(element);}
return false;}
function getEventTarget(e){var targ;if(!e){e=window.event;}
if(e.target){targ=e.target;}else if(e.srcElement){targ=e.srcElement;}
if(targ.nodeType==3){targ=targ.parentNode;}
return targ;}
var css={getElementsByClass:function(node,searchClass,tag){var classElements=new Array();var els=node.getElementsByTagName(tag);var elsLen=els.length;var pattern=new RegExp("(^|\\s)"+searchClass+"(\\s|$)");for(var i=0,j=0;i<elsLen;i++){if(this.elementHasClass(els[i],searchClass)){classElements[j]=els[i];j++;}}
return classElements;},privateGetClassArray:function(el){return el.className.split(' ');},privateCreateClassString:function(classArray){return classArray.join(' ');},elementHasClass:function(el,classString){if(!el){return false;}
var regex=new RegExp('\\b'+classString+'\\b');if(el.className.match(regex)){return true;}
return false;},addClassToId:function(idString,classString){this.addClassToElement(document.getElementById(idString),classString);},addClassToElement:function(el,classString){var classArray=this.privateGetClassArray(el);if(this.elementHasClass(el,classString)){return;}
classArray.push(classString);el.className=this.privateCreateClassString(classArray);},removeClassFromId:function(idString,classString){this.removeClassFromElement(document.getElementById(idString),classString);},removeClassFromElement:function(el,classString){var classArray=this.privateGetClassArray(el);for(x in classArray){if(classString==classArray[x]){classArray[x]='';break;}}
el.className=this.privateCreateClassString(classArray);}}
var standardistaTableSorting={that:false,isOdd:false,sortColumnIndex:-1,lastAssignedId:0,newRows:-1,lastSortedTable:-1,init:function(){if(!document.getElementsByTagName){return;}
this.that=this;this.run();},run:function(){var tables=document.getElementsByTagName("table");for(var i=0;i<tables.length;i++){var thisTable=tables[i];if(css.elementHasClass(thisTable,'sortable')){this.makeSortable(thisTable);}}},makeSortable:function(table){if(!table.id){table.id='sortableTable'+this.lastAssignedId++;}
if(!table.tHead||!table.tHead.rows||0==table.tHead.rows.length){return;}
var row=table.tHead.rows[table.tHead.rows.length-1];var defaultid='';var asc_or_desc='';for(var i=0;i<row.cells.length;i++){var linkEl=createElement('a');linkEl.href='#';linkEl.onclick=this.headingClicked;linkEl.className='cmListHeadAnchor';linkEl.setAttribute('columnId',i);if(row.cells[i].title){linkEl.title=row.cells[i].title;row.cells[i].title='';}else{linkEl.title='Click to sort';}
if(row.cells[i].id=='defaultasc'){defaultid=linkEl;asc_or_desc='ASC';}
if(row.cells[i].id=='defaultdesc'){defaultid=linkEl;asc_or_desc='DESC';}
var innerEls=row.cells[i].childNodes;for(var j=0;j<innerEls.length;j++){linkEl.appendChild(innerEls[j]);}
row.cells[i].appendChild(linkEl);var spanEl=createElement('span');spanEl.className='tableSortArrow';spanEl.appendChild(document.createTextNode(''));row.cells[i].appendChild(spanEl);}
if(css.elementHasClass(table,'autostripe')){this.isOdd=false;var rows=table.tBodies[0].rows;for(var i=0;i<rows.length;i++){this.doStripe(rows[i]);}}
if(defaultid!=''){this.headingClickedDefault(defaultid,asc_or_desc);}},headingClicked:function(e){var that=standardistaTableSorting.that;var linkEl=getEventTarget(e);var td=linkEl.parentNode;var tr=td.parentNode;var thead=tr.parentNode;var table=thead.parentNode;var order_head=linkEl.innerHTML;if(!table.tBodies||table.tBodies[0].rows.length<=1){return false;}
var column=linkEl.getAttribute('columnId')||td.cellIndex;var arrows=css.getElementsByClass(td,'tableSortArrow','span');var previousSortOrder='';if(arrows.length>0){previousSortOrder=arrows[0].getAttribute('sortOrder');}
var itm='';var itm2;var rowNum=0;while(''==itm&&rowNum<table.tBodies[0].rows.length){itm=that.getInnerText(table.tBodies[0].rows[rowNum].cells[column]);itm2=table.tBodies[0].rows[rowNum].cells[column];rowNum++;}
var sortfn;if(contain(itm2.innerHTML,'class=accr')||contain(itm2.innerHTML,'class=eqa')||contain(itm2.innerHTML,'class=cer')||contain(itm2.innerHTML,'class=\"accr\"')||contain(itm2.innerHTML,'class=\"eqa\"')||contain(itm2.innerHTML,'class=\"cer\"')){sortfn=that.sortQuality;}else{sortfn=that.determineSortFunction(itm);}
if(table.id==that.lastSortedTable&&column==that.sortColumnIndex){newRows=that.newRows;newRows.reverse();}else{that.sortColumnIndex=column;var newRows=new Array();for(var j=0;j<table.tBodies[0].rows.length;j++){newRows[j]=table.tBodies[0].rows[j];}
newRows.sort(sortfn);}
that.moveRows(table,newRows);that.newRows=newRows;that.lastSortedTable=table.id;var arrows=css.getElementsByClass(tr,'tableSortArrow','span');for(var j=0;j<arrows.length;j++){var arrowParent=arrows[j].parentNode;arrowParent.removeChild(arrows[j]);if(arrowParent!=td){spanEl=createElement('span');spanEl.className='tableSortArrow';spanEl.appendChild(document.createTextNode(''));arrowParent.appendChild(spanEl);}}
var spanEl=createElement('span');var a_or_d;spanEl.className='tableSortArrow';if(null==previousSortOrder||''==previousSortOrder||'DESC'==previousSortOrder){spanEl.appendChild(document.createTextNode('\u25B2'));spanEl.setAttribute('sortOrder','ASC');a_or_d="asc";}else{spanEl.appendChild(document.createTextNode('\u25BC'));spanEl.setAttribute('sortOrder','DESC');a_or_d="desc";}
if(document.getElementById('orderby')){document.getElementById('orderby').value=order_head;document.getElementById('asc_or_desc').value=a_or_d;}
td.appendChild(spanEl);return false;},headingClickedDefault:function(id,asc_or_desc){var that=standardistaTableSorting.that;var linkEl=id;var td=linkEl.parentNode;var tr=td.parentNode;var thead=tr.parentNode;var table=thead.parentNode;if(!table.tBodies||table.tBodies[0].rows.length<=1){return false;}
var column=linkEl.getAttribute('columnId')||td.cellIndex;var arrows=css.getElementsByClass(td,'tableSortArrow','span');var previousSortOrder='';if(arrows.length>0){previousSortOrder=arrows[0].getAttribute('sortOrder');}
var itm='';var itm2;var rowNum=0;while(''==itm&&rowNum<table.tBodies[0].rows.length){itm=that.getInnerText(table.tBodies[0].rows[rowNum].cells[column]);itm2=table.tBodies[0].rows[rowNum].cells[column];rowNum++;}
var sortfn;if(contain(itm2.innerHTML,'class=accr')||contain(itm2.innerHTML,'class=eqa')||contain(itm2.innerHTML,'class=cer')||contain(itm2.innerHTML,'class=\"accr\"')||contain(itm2.innerHTML,'class=\"eqa\"')||contain(itm2.innerHTML,'class=\"cer\"')){sortfn=that.sortQuality;}else{sortfn=that.determineSortFunction(itm);}
if(table.id==that.lastSortedTable&&column==that.sortColumnIndex){newRows=that.newRows;newRows.reverse();}else{that.sortColumnIndex=column;var newRows=new Array();for(var j=0;j<table.tBodies[0].rows.length;j++){newRows[j]=table.tBodies[0].rows[j];}
newRows.sort(sortfn);}
if(asc_or_desc=='desc')newRows.reverse();that.moveRows(table,newRows);that.newRows=newRows;that.lastSortedTable=table.id;var arrows=css.getElementsByClass(tr,'tableSortArrow','span');for(var j=0;j<arrows.length;j++){var arrowParent=arrows[j].parentNode;arrowParent.removeChild(arrows[j]);if(arrowParent!=td){spanEl=createElement('span');spanEl.className='tableSortArrow';spanEl.appendChild(document.createTextNode(''));arrowParent.appendChild(spanEl);}}
var spanEl=createElement('span');spanEl.className='tableSortArrow';if(null==asc_or_desc||''==asc_or_desc||'ASC'==asc_or_desc){spanEl.appendChild(document.createTextNode('\u25B2'));spanEl.setAttribute('sortOrder','ASC');}else{spanEl.appendChild(document.createTextNode('\u25BC'));spanEl.setAttribute('sortOrder','DESC');}
td.appendChild(spanEl);return false;},getInnerText:function(el){if('string'==typeof el||'undefined'==typeof el){return el;}
if(el.innerText){return el.innerText;}
var str=el.getAttribute('standardistaTableSortingInnerText');if(null!=str&&''!=str){return str;}
str='';var cs=el.childNodes;var l=cs.length;for(var i=0;i<l;i++){if(1==cs[i].nodeType){str+=this.getInnerText(cs[i]);break;}else if(3==cs[i].nodeType){str+=cs[i].nodeValue;break;}}
el.setAttribute('standardistaTableSortingInnerText',str);return str;},determineSortFunction:function(itm){var sortfn=this.sortCaseInsensitive;if(itm.match(/^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)){sortfn=this.sortDate;}
if(itm.match(/^\d\d[\/-]\d\d[\/-]\d\d$/)){sortfn=this.sortDate;}
if(itm.match(/^\d?\.?\d+$/)){sortfn=this.sortNumeric;}
if(itm.match(/^[+-]?\d*\.?\d+([eE]-?\d+)?$/)){sortfn=this.sortNumeric;}
return sortfn;},sortCaseInsensitive:function(a,b){var that=standardistaTableSorting.that;var aa=that.getInnerText(a.cells[that.sortColumnIndex]).toLowerCase();var bb=that.getInnerText(b.cells[that.sortColumnIndex]).toLowerCase();if(aa==bb){return 0;}else if(!isCellEmpty(aa)){return 1;}else if(!isCellEmpty(bb)){return-1;}
else if(aa<bb){return-1;}else{return 1;}},sortQuality:function(a,b){var that=standardistaTableSorting.that;var aa=that.getInnerText(a.cells[that.sortColumnIndex]).toLowerCase();var bb=that.getInnerText(b.cells[that.sortColumnIndex]).toLowerCase();var aaa=a.cells[that.sortColumnIndex];var bbb=b.cells[that.sortColumnIndex];if(contain(aaa.innerHTML,'class=accr')||contain(aaa.innerHTML,'class=\"accr\"')){if(contain(aaa.innerHTML,'class=eqa')||contain(aaa.innerHTML,'class=\"eqa\"')){if(contain(aaa.innerHTML,'class=cer')||contain(aaa.innerHTML,'class=\"cer\"')){aa='1';}
else{aa='2';}}
else{if(contain(aaa.innerHTML,'class=cer')||contain(aaa.innerHTML,'class=\"cer\"')){aa='3';}else{aa='4';}}}
else{if(contain(aaa.innerHTML,'class=eqa')||contain(aaa.innerHTML,'class=\"eqa\"')){if(contain(aaa.innerHTML,'class=cer')||contain(aaa.innerHTML,'class=\"cer\"')){aa='5';}
else{aa='6';}}
else{if(contain(aaa.innerHTML,'class=cer')||contain(aaa.innerHTML,'class=\"cer\"')){aa='7';}}}
if(contain(bbb.innerHTML,'class=accr')||contain(bbb.innerHTML,'class=\"accr\"')){if(contain(bbb.innerHTML,'class=eqa')||contain(bbb.innerHTML,'class=\"eqa\"')){if(contain(bbb.innerHTML,'class=cer')||contain(bbb.innerHTML,'class=\"cer\"')){bb='1';}else{bb='2';}}
else{if(contain(bbb.innerHTML,'class=cer')||contain(bbb.innerHTML,'class=\"cer\"')){bb='3';}
else{bb='4';}}}
else{if(contain(bbb.innerHTML,'class=eqa')||contain(bbb.innerHTML,'class=\"eqa\"')){if(contain(b.innerHTML,'class=cer')||contain(bbb.innerHTML,'class=\"cer\"')){bb='5';}
else{bb='6';}}else{if(contain(bbb.innerHTML,'class=cer')||contain(bbb.innerHTML,'class=\"cer\"')){bb='7';}}}
if(aa==bb){return 0;}else if(!isCellEmpty(aa)){return 1;}else if(!isCellEmpty(bb)){return-1;}
else if(aa<bb){return-1;}else{return 1;}},sortDate:function(a,b){var that=standardistaTableSorting.that;var aa=that.getInnerText(a.cells[that.sortColumnIndex]);var bb=that.getInnerText(b.cells[that.sortColumnIndex]);var dt1,dt2,yr=-1;if(aa.length==10){dt1=aa.substr(6,4)+aa.substr(3,2)+aa.substr(0,2);}else{yr=aa.substr(6,2);if(parseInt(yr)<50){yr='20'+yr;}else{yr='19'+yr;}
dt1=yr+aa.substr(3,2)+aa.substr(0,2);}
if(bb.length==10){dt2=bb.substr(6,4)+bb.substr(3,2)+bb.substr(0,2);}else{yr=bb.substr(6,2);if(parseInt(yr)<50){yr='20'+yr;}else{yr='19'+yr;}
dt2=yr+bb.substr(3,2)+bb.substr(0,2);}
if(dt1==dt2){return 0;}else if(dt1<dt2){return-1;}
return 1;},sortNumeric:function(a,b){var that=standardistaTableSorting.that;var aa=parseFloat(that.getInnerText(a.cells[that.sortColumnIndex]));if(isNaN(aa)){aa=0;}
var bb=parseFloat(that.getInnerText(b.cells[that.sortColumnIndex]));if(isNaN(bb)){bb=0;}
return aa-bb;},makeStandardIPAddress:function(val){var vals=val.split('.');for(x in vals){val=vals[x];while(3>val.length){val='0'+val;}
vals[x]=val;}
val=vals.join('.');return val;},sortIP:function(a,b){var that=standardistaTableSorting.that;var aa=that.makeStandardIPAddress(that.getInnerText(a.cells[that.sortColumnIndex]).toLowerCase());var bb=that.makeStandardIPAddress(that.getInnerText(b.cells[that.sortColumnIndex]).toLowerCase());if(aa==bb){return 0;}else if(aa<bb){return-1;}else{return 1;}},moveRows:function(table,newRows){this.isOdd=false;for(var i=0;i<newRows.length;i++){var rowItem=newRows[i];this.doStripe(rowItem);table.tBodies[0].appendChild(rowItem);}},doStripe:function(rowItem){if(this.isOdd){css.addClassToElement(rowItem,'cmListItemOdd');}else{css.removeClassFromElement(rowItem,'cmListItemOdd');css.addClassToElement(rowItem,'cmListItem');}
this.isOdd=!this.isOdd;}}
function standardistaTableSortingInit(){standardistaTableSorting.init();}
function contain(str1,str2){var r,re;var s=str1;re=new RegExp(str2)
r=s.match(re);if(r==null)return false;else return true;}