/* Table sorting script by site.ctrl, based on http://www.kryogenix.org/code/browser/sorttable/ (MIT license) */
var SORT_COLUMN_INDEX;function sortables_init(){if (!document.getElementsByTagName){return;}
var tbls=document.getElementsByTagName(
"table"
);for (ti=0;ti<tbls.length;ti++){thisTbl=tbls[ti];if (thisTbl.className==
"sortable"
&&thisTbl.id){ts_makeSortable(thisTbl);}}}
function ts_makeSortable(table){if (!table.rows||table.rows.length<1||!table.tHead||table.tHead.rows.length<1){return;}
var firstRow=table.tHead.rows[table.tHead.rows.length-1];for (var i=0;i<firstRow.cells.length;i++){var cell=firstRow.cells[i];var txt=ts_getInnerText(cell);if (cell.className !=
"unsortable"
&&cell.className.indexOf(
"unsortable"
)==-1){cell.innerHTML=
'<a href="#" class="sortheader" onclick="this.blur(); ts_resortTable(this, '
+i+
'); return false;">'
+txt+
'</a>'
;}}
alternate(table);}
function ts_getInnerText(el){if (typeof el==
"string"
) return el;if (typeof el==
"undefined"
) return el;if (el.innerText) return el.innerText;var str=
""
;var cs=el.childNodes;var l=cs.length;for (var i=0;i<l;i++){switch (cs[i].nodeType){case 1:
str+=ts_getInnerText(cs[i]);break;case 3:
str+=cs[i].nodeValue;break;}}
return str;}
function ts_resortTable(lnk,clid){var td=lnk.parentNode;var column=clid||td.cellIndex;var table=getParent(td,
'TABLE'
);if (table.rows.length<=1) return;var itm=
""
;var i=1;while (itm==
""
){var itm=ts_getInnerText(table.tBodies[0].rows[i].cells[column]);itm=trim(itm);if (itm.substr(0,4)==
"<!--"
||itm.length==0){itm=
""
;}
i++;}
sortfn=ts_sort_caseinsensitive;if (itm.match(
/^\d\d[\/\.-][a-zA-z][a-zA-Z][a-zA-Z][\/\.-]\d\d\d\d$/)) sortfn=ts_sort_date;if (itm.match(
/^\d\d[\/\.-]\d\d[\/\.-]\d\d\d{2}?$/)) sortfn=ts_sort_date;if (itm.match(
/^[£$€Û¢´]/)) sortfn=ts_sort_currency;if (itm.match(
/^-?[\d\.,]+(E[-+][\d]+)?$/)) sortfn=ts_sort_numeric;if (itm.match(
/^-?[\d\.,]+%?$/)) sortfn=ts_sort_numeric;SORT_COLUMN_INDEX=column;var firstRow=new Array();var newRows=new Array();for (k=0;k<table.tBodies.length;k++){for (i=0;i<table.tBodies[k].rows[0].length;i++){firstRow[i]=table.tBodies[k].rows[0][i];}}
for (k=0;k<table.tBodies.length;k++){for (j=0;j<table.tBodies[k].rows.length;j++){newRows[j]=table.tBodies[k].rows[j];}}
newRows.sort(sortfn);if (lnk.className==
'sortheader_asc'
){newRows.reverse();lnk.className=
'sortheader_desc'
;}
else
{lnk.className=
'sortheader_asc'
;}
for (i=0;i<newRows.length;i++){table.tBodies[0].appendChild(newRows[i]);}
var alllnks=table.tHead.getElementsByTagName(
"a"
);for (var ci=0;ci<alllnks.length;ci++){if (alllnks[ci]==lnk){continue;}
alllnks[ci].className=
'sortheader'
;}
alternate(table);}
function getParent(el,pTagName){if (el==null) return null;else if (el.nodeType==1&&el.tagName.toLowerCase()==pTagName.toLowerCase()) return el;else return getParent(el.parentNode,pTagName);}
function sort_date(date){dt=
"00000000"
;if (date.length==11){monthstr=date.substr(3,3);monthstr=monthstr.toLowerCase();switch(monthstr){case
"jan"
:var month=
"01"
;break;case
"feb"
:var month=
"02"
;break;case
"mar"
:var month=
"03"
;break;case
"apr"
:var month=
"04"
;break;case
"may"
:var month=
"05"
;break;case
"jun"
:var month=
"06"
;break;case
"jul"
:var month=
"07"
;break;case
"aug"
:var month=
"08"
;break;case
"sep"
:var month=
"09"
;break;case
"oct"
:var month=
"10"
;break;case
"nov"
:var month=
"11"
;break;case
"dec"
:var month=
"12"
;break;}
dt=date.substr(7,4)+month+date.substr(0,2);return dt;}
else if (date.length==10){if (europeandate==false){dt=date.substr(6,4)+date.substr(0,2)+date.substr(3,2);return dt;}
else
{dt=date.substr(6,4)+date.substr(3,2)+date.substr(0,2);return dt;}}
else if (date.length==8){yr=date.substr(6,2);if (parseInt(yr)<50){yr=
'20'
+yr;}
else
{yr=
'19'
+yr;}
if (europeandate==true){dt=yr+date.substr(3,2)+date.substr(0,2);return dt;}
else
{dt=yr+date.substr(0,2)+date.substr(3,2);return dt;}}
return dt;}
function ts_sort_date(a,b){dt1=sort_date(ts_getInnerText(a.cells[SORT_COLUMN_INDEX]));dt2=sort_date(ts_getInnerText(b.cells[SORT_COLUMN_INDEX]));if (dt1==dt2) return 0;if (dt1<dt2) return-1;return 1;}
function ts_sort_currency(a,b){aa=ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).replace(
/[^0-9.]/g,
''
);bb=ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).replace(
/[^0-9.]/g,
''
);return compare_numeric(aa,bb);}
function ts_sort_numeric(a,b){aa=ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).replace(
/,/,
""
).replace(
/\./,
""
).replace(
/\%/,
""
);bb=ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).replace(
/,/,
""
).replace(
/\./,
""
).replace(
/\%/,
""
);return compare_numeric(aa,bb);}
function compare_numeric(a,b){a=parseFloat(a);a=(isNaN(a)?0:a);b=parseFloat(b);b=(isNaN(b)?0:b);return a-b;}
function ts_sort_caseinsensitive(a,b){aa=ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).toLowerCase();bb=ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).toLowerCase();if (aa==bb) return 0;if (aa<bb) return-1;return 1;}
function ts_sort_default(a,b){aa=ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);bb=ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);if (aa==bb) return 0;if (aa<bb) return-1;return 1;}
function addEvent(elm,evType,fn,useCapture){if (elm.addEventListener){elm.addEventListener(evType,fn,useCapture);return true;}
else if (elm.attachEvent){var r=elm.attachEvent(
"on"
+evType,fn);return r;}}
function replace(s,t,u){r=
""
;i=s.indexOf(t);if (i==-1) return s;r+=s.substring(0,i)+u;if (i+t.length<s.length){r+=replace(s.substring(i+t.length,s.length),t,u);}
return r;}
function trim(s){while (s.substring(0,1)==
' '
){s=s.substring(1,s.length);}
while (s.substring(s.length-1,s.length)==
' '
){s=s.substring(0,s.length-1);}
return s;}
function alternate(table){var td_class=
''
;var tr_class=
''
;var tableBodies=table.getElementsByTagName(
"tbody"
);for (var i=0;i<tableBodies.length;i++){var tableRows=tableBodies[i].getElementsByTagName(
"tr"
);for (var j=0;j<tableRows.length;j++){tr_class=
'row_'
+j;if (j==0){tr_class+=
' row_first'
;}
else if (j>=(tableRows.length-1)){tr_class+=
' row_last'
;}
tr_class+=((j%2)==0)?
' even'
:
' odd'
;tableRows[j].className=tr_class;var tableCols=tableRows[j].getElementsByTagName(
"td"
);for (var k=0;k<tableCols.length;k++){td_class=
'col_'
+k;if (k==0){td_class+=
' col_first'
;}
else if (k>=(tableCols.length-1)){td_class+=
' col_last'
;}
tableCols[k].className=td_class;}}}}
addEvent(window,
"load"
,sortables_init);
