(function(){fdTableSort={regExp_Currency:/^[£$€¥¤]/,regExp_Number:/^(\-)?[0-9]+(\.[0-9]*)?$/,pos:-1,uniqueHash:1,thNode:null,tableId:null,tableCache:{},tmpCache:{},/*@cc_on/*@if(@_win32)colspan:"colSpan",rowspan:"rowSpan",@else@*/colspan:"colspan",rowspan:"rowspan",/*@end@*/addEvent:function(a,b,c,d){d||(d=true);if(a.attachEvent){a["e"+b+c]=c;a[b+c]=function(){a["e"+b+c](window.event)};a.attachEvent("on"+b,a[b+c])}else{a.addEventListener(b,c,true)}},removeEvent:function(a,b,c,d){d||(d=true);try{if(a.detachEvent){a.detachEvent("on"+b,a[b+c]);a[b+c]=null}else{a.removeEventListener(b,c,true)}}catch(err){}},stopEvent:function(e){e=e||window.event;if(e.stopPropagation){e.stopPropagation();e.preventDefault()};/*@cc_on@*//*@if(@_win32)e.cancelBubble=true;e.returnValue=false;/*@end@*/return false},parseClassName:function(a,b){var c=b.className.match(new RegExp(a+"((-[\\d]+([r]){0,1})+)"));return c&&c.length?c[0].replace(a,"").split("-"):[]},disableSelection:function(a){a.onselectstart=function(){return false};a.unselectable="on";a.style.MozUserSelect="none"},removeTableCache:function(b){if(!(b in fdTableSort.tableCache))return;fdTableSort.tableCache[b]=null;delete fdTableSort.tableCache[b];var c=document.getElementById(b);if(!c)return;var d=c.getElementsByTagName("th");var a;for(var i=0,th;th=d[i];i++){a=th.getElementsByTagName("a");if(a.length)a[0].onkeydown=a[0].onclick=null;th.onclick=th.onselectstart=th=a=null}},removeTmpCache:function(b){if(!(b in fdTableSort.tmpCache))return;var c=fdTableSort.tmpCache[b].headers;var a;for(var i=0,row;row=c[i];i++){for(var j=0,th;th=row[j];j++){a=th.getElementsByTagName("a");if(a.length)a[0].onkeydown=a[0].onclick=null;th.onclick=th.onselectstart=th=a=null}};fdTableSort.tmpCache[b]=null;delete fdTableSort.tmpCache[b]},initEvt:function(e){fdTableSort.init(false)},init:function(b){if(!document.getElementsByTagName||!document.createElement||!document.getElementById)return;var d=b&&document.getElementById(b)?[document.getElementById(b)]:document.getElementsByTagName("table");var c,ii,len,onLoadSort,colMatch,showOnly,match,showArrow,columnNumSortObj,obj,workArr,headers,thtext,aclone,multi,colCnt,cel,allRowArr,rowArr,sortableTable,celCount,colspan,rowspan,rowLength;var a=document.createElement("a");a.href="#";var e=document.createElement("span");for(var k=0,tbl;tbl=d[k];k++){if(tbl.id)fdTableSort.removeTableCache(tbl.id);if(tbl.id)fdTableSort.removeTmpCache(tbl.id);allRowArr=tbl.getElementsByTagName('thead').length?tbl.getElementsByTagName('thead')[0].getElementsByTagName('tr'):tbl.getElementsByTagName('tr');rowArr=[];sortableTable=false;for(var i=0,tr;tr=allRowArr[i];i++){if(tr.getElementsByTagName('td').length||!tr.getElementsByTagName('th').length)continue;rowArr[rowArr.length]=tr.getElementsByTagName('th');for(var j=0,th;th=rowArr[rowArr.length-1][j];j++){if(th.className.search(/sortable/)!=-1)sortableTable=true}};if(!sortableTable)continue;if(!tbl.id)tbl.id="fd-table-"+fdTableSort.uniqueHash++;onLoadSort={};showArrow=tbl.className.search(/no-arrow/)==-1;showOnly=tbl.className.search("sortable-onload-show")!=-1;columnNumSortObj={};colMatch=fdTableSort.parseClassName(showOnly?"sortable-onload-show":"sortable-onload",tbl);for(match=1;match<colMatch.length;match++){columnNumSortObj[parseInt(colMatch[match])]=colMatch[match].search("r")!=-1};rowLength=rowArr[0].length;for(c=0;c<rowArr[0].length;c++){if(rowArr[0][c].getAttribute(fdTableSort.colspan)&&rowArr[0][c].getAttribute(fdTableSort.colspan)>1){rowLength=rowLength+(rowArr[0][c].getAttribute(fdTableSort.colspan)-1)}};workArr=new Array(rowArr.length);for(c=rowArr.length;c--;){workArr[c]=new Array(rowLength)};for(c=0;c<workArr.length;c++){celCount=0;for(i=0;i<rowLength;i++){if(!workArr[c][i]){cel=rowArr[c][celCount];colspan=(cel.getAttribute(fdTableSort.colspan)>1)?cel.getAttribute(fdTableSort.colspan):1;rowspan=(cel.getAttribute(fdTableSort.rowspan)>1)?cel.getAttribute(fdTableSort.rowspan):1;for(var t=0;((t<colspan)&&((i+t)<rowLength));t++){for(var n=0;((n<rowspan)&&((c+n)<workArr.length));n++){workArr[(c+n)][(i+t)]=cel}};if(++celCount==rowArr[c].length)break}}};for(c=0;c<workArr.length;c++){for(i=0;i<workArr[c].length;i++){if(workArr[c][i].className.search("fd-column-")==-1&&workArr[c][i].className.search("sortable")!=-1)workArr[c][i].className=workArr[c][i].className+" fd-column-"+i;if(workArr[c][i].className.match('sortable')){workArr[c][i].className=workArr[c][i].className.replace(/forwardSort|reverseSort/,"");if(i in columnNumSortObj&&!("column-"+i in onLoadSort)){onLoadSort["column-"+i]={"thNode":workArr[c][i],"reverse":columnNumSortObj[i]};onLoadSort["active"]=true};thtext=fdTableSort.getInnerText(workArr[c][i]);if(workArr[c][i].getElementsByTagName&&workArr[c][i].getElementsByTagName('a').length){workArr[c][i].getElementsByTagName('a')[0].onclick=workArr[c][i].getElementsByTagName('a')[0].onkeydown=null}while(workArr[c][i].firstChild)workArr[c][i].removeChild(workArr[c][i].firstChild);aclone=a.cloneNode(true);aclone.appendChild(document.createTextNode(thtext));aclone.title="Sort on \u201c"+thtext+"\u201d";aclone.onclick=aclone.onkeydown=workArr[c][i].onclick=fdTableSort.initWrapper;workArr[c][i].appendChild(aclone);if(showArrow)workArr[c][i].appendChild(e.cloneNode(false));workArr[c][i].className=workArr[c][i].className.replace(/fd-identical|fd-not-identical/,"");fdTableSort.disableSelection(workArr[c][i]);aclone=null}}};fdTableSort.tmpCache[tbl.id]={cols:rowLength,headers:workArr};workArr=null;multi=0;if("active"in onLoadSort){fdTableSort.tableId=tbl.id;fdTableSort.prepareTableData(document.getElementById(fdTableSort.tableId));delete onLoadSort.active;for(col in onLoadSort){fdTableSort.multi=multi>0?true:false;obj=onLoadSort[col];len=obj.reverse?2:1;for(ii=0;ii<len;ii++){fdTableSort.thNode=obj.thNode;if(!showOnly){fdTableSort.initSort()}else{fdTableSort.addThNode()}};if(showOnly){fdTableSort.removeClass(obj.thNode,"(forwardSort|reverseSort)");fdTableSort.addClass(obj.thNode,obj.reverse?"reverseSort":"forwardSort");if(showArrow){e=fdTableSort.thNode.getElementsByTagName('span')[0];if(e.firstChild)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(len==1?" \u2191":" \u2193"))}};multi++};if(showOnly&&(fdTableSort.tableCache[tbl.id].colStyle||fdTableSort.tableCache[tbl.id].rowStyle)){fdTableSort.redraw(tbl.id,false)}}};fdTableSort.thNode=null;aclone=a=e=onLoadSort=columnNumSortObj=thNode=tbl=allRowArr=rowArr=null},initWrapper:function(e){e=e||window.event;var a=e.type=="keydown"?e.keyCode!=null?e.keyCode:e.charCode:-1;if(fdTableSort.thNode==null&&(e.type=="click"||a==13)){var b=this;while(b.tagName.toLowerCase()!="th"){b=b.parentNode};fdTableSort.thNode=b;while(b.tagName.toLowerCase()!="table"){b=b.parentNode};fdTableSort.tableId=b.id;fdTableSort.multi=e.shiftKey;setTimeout(fdTableSort.initSort,5,false);return fdTableSort.stopEvent(e)};return a!=-1?true:fdTableSort.stopEvent(e)},jsWrapper:function(a,b){if(!(b instanceof Array)){b=[b]};if(!(a in fdTableSort.tmpCache)){return false};if(!(a in fdTableSort.tableCache)){fdTableSort.prepareTableData(document.getElementById(a))};fdTableSort.tableId=a;var c=b.length,colNum;if(fdTableSort.tableCache[a].thList.length==b.length){var d=true;var e;for(var i=0;i<c;i++){colNum=b[i];e=fdTableSort.tmpCache[a].headers[0][colNum];if(e!=fdTableSort.tableCache[a].thList[i]){d=false;break}};if(d){fdTableSort.thNode=e;fdTableSort.initSort(true);return}};for(var i=0;i<c;i++){fdTableSort.multi=i;colNum=b[i];fdTableSort.thNode=fdTableSort.tmpCache[a].headers[0][colNum];fdTableSort.initSort(true)}},addSortActiveClass:function(){if(fdTableSort.thNode==null){return};fdTableSort.addClass(fdTableSort.thNode,"sort-active");fdTableSort.addClass(document.getElementsByTagName('body')[0],"sort-active");if(!fdTableSort.tableId||!(fdTableSort.tableId in fdTableSort.tableCache)){return};fdTableSort.callback(fdTableSort.tableId,fdTableSort.tableCache[fdTableSort.tableId].initiatedCallback)},removeSortActiveClass:function(){if(fdTableSort.thNode==null)return;fdTableSort.removeClass(fdTableSort.thNode,"sort-active");fdTableSort.removeClass(document.getElementsByTagName('body')[0],"sort-active");if(!fdTableSort.tableId||!(fdTableSort.tableId in fdTableSort.tableCache)){return};fdTableSort.callback(fdTableSort.tableId,fdTableSort.tableCache[fdTableSort.tableId].completeCallback)},addClass:function(e,c){if(new RegExp("(^|\\s)"+c+"(\\s|$)").test(e.className))return;e.className+=(e.className?" ":"")+c},/*@cc_on/*@if(@_win32)removeClass:function(e,c){e.className=!c?"":e.className.replace(new RegExp("(^|\\s)"+c+"(\\s|$)")," ").replace(/^\s*((?:[\S\s]*\S)?)\s*$/,'$1')},@else@*/removeClass:function(e,c){e.className=!c?"":e.className.replace(new RegExp("(^|\\s)"+c+"(\\s|$)")," ").replace(/^\s\s*/,'').replace(/\s\s*$/,'')},/*@end@*/callback:function(a,b){var c;if(b.indexOf(".")!=-1){var d=b.split(".");c=window;for(var i=0,f;f=d[i];i++){if(f in c){c=c[f]}else{c="";break}}}else if(b+a in window){c=window[b+a]}else if(b in window){c=window[b]};if(typeof c=="function"){c(a)};c=null},prepareTableData:function(a){var b=[];var c=a.getElementsByTagName('tbody');c=c.length?c[0]:a;var d=c.rows;var e=a.getElementsByTagName('th');var f=d.length;var g=fdTableSort.tmpCache[a.id].cols;var b=[];var h=new Array(g);var i=new Array(g);for(var j=0;j<g;j++)h[j]=true;var k,td,th,txt,tds,col,row;var l=new RegExp(/fd-column-([0-9]+)/);var m=0;var n=[];for(var j=0,th;th=e[j];j++){if(th.className.search(l)==-1)continue;n[n.length]=th};for(row=0;row<f;row++){k=d[row];if(k.parentNode!=c||k.getElementsByTagName("th").length||(k.parentNode&&k.parentNode.tagName.toLowerCase().search(/thead|tfoot/)!=-1))continue;b[m]=[];tds=k.cells;for(var j=0,th;th=n[j];j++){col=th.className.match(l)[1];td=tds[col];txt=fdTableSort.getInnerText(td)+" ";txt=txt.replace(/^\s+/,'').replace(/\s+$/,'');if(th.className.search(/sortable-date/)!=-1){txt=fdTableSort.dateFormat(txt,th.className.search(/sortable-date-dmy/)!=-1)}else if(th.className.search(/sortable-numeric|sortable-currency/)!=-1){txt=parseFloat(txt.replace(/[^0-9\.\-]/g,''));if(isNaN(txt))txt=""}else if(th.className.search(/sortable-text/)!=-1){txt=txt.toLowerCase()}else if(th.className.search(/sortable-keep/)!=-1){txt=m}else if(th.className.search(/sortable-([a-zA-Z\_]+)/)!=-1){if((th.className.match(/sortable-([a-zA-Z\_]+)/)[1]+"PrepareData")in window){txt=window[th.className.match(/sortable-([a-zA-Z\_]+)/)[1]+"PrepareData"](td,txt)}}else if(txt!=""){fdTableSort.removeClass(th,"sortable");if(fdTableSort.dateFormat(txt)!=0){fdTableSort.addClass(th,"sortable-date");txt=fdTableSort.dateFormat(txt)}else if(txt.search(fdTableSort.regExp_Number)!=-1||txt.search(fdTableSort.regExp_Currency)!=-1){fdTableSort.addClass(th,"sortable-numeric");txt=parseFloat(txt.replace(/[^0-9\.\-]/g,''));if(isNaN(txt))txt=""}else{fdTableSort.addClass(th,"sortable-text");txt=txt.toLowerCase()}};if(m>0&&h[col]&&i[col]!=txt){h[col]=false};i[col]=txt;b[m][col]=txt};b[m][g]=k;m++}var o=a.className.search(/colstyle-([\S]+)/)!=-1?a.className.match(/colstyle-([\S]+)/)[1]:false;var p=a.className.search(/rowstyle-([\S]+)/)!=-1?a.className.match(/rowstyle-([\S]+)/)[1]:false;var q=a.className.search(/sortinitiatedcallback-([\S-]+)/)==-1?"sortInitiatedCallback":a.className.match(/sortinitiatedcallback-([\S]+)/)[1];var r=a.className.search(/sortcompletecallback-([\S-]+)/)==-1?"sortCompleteCallback":a.className.match(/sortcompletecallback-([\S]+)/)[1];q=q.replace("-",".");r=r.replace("-",".");fdTableSort.tableCache[a.id]={hook:c,initiatedCallback:q,completeCallback:r,thList:[],colOrder:{},data:b,identical:h,colStyle:o,rowStyle:p,noArrow:a.className.search(/no-arrow/)!=-1};n=b=k=td=th=d=h=i=null},onUnload:function(){for(tbl in fdTableSort.tableCache){fdTableSort.removeTableCache(tbl)};for(tbl in fdTableSort.tmpCache){fdTableSort.removeTmpCache(tbl)};fdTableSort.removeEvent(window,"load",fdTableSort.initEvt);fdTableSort.removeEvent(window,"unload",fdTableSort.onUnload);fdTableSort.tmpCache=fdTableSort.tableCache=null},addThNode:function(){var a=fdTableSort.tableCache[fdTableSort.tableId];var b=fdTableSort.thNode.className.match(/fd-column-([0-9]+)/)[1];var c=false;a.colOrder={};if(!fdTableSort.multi){if(a.colStyle){var d=a.thList.length;for(var i=0;i<d;i++){a.colOrder[a.thList[i].className.match(/fd-column-([0-9]+)/)[1]]=false}};if(a.thList.length&&a.thList[0]==fdTableSort.thNode)c=true;a.thList=[]};var e=false;var l=a.thList.length;for(var i=0,n;n=a.thList[i];i++){if(n==fdTableSort.thNode){e=true;break}};if(!e){a.thList.push(fdTableSort.thNode);if(a.colStyle){a.colOrder[b]=true}};var f=document.getElementById(fdTableSort.tableId).getElementsByTagName("th");for(var i=0,th;th=f[i];i++){e=false;for(var z=0,n;n=a.thList[z];z++){if(n==th){e=true;break}};if(!e){fdTableSort.removeClass(th,"(forwardSort|reverseSort)");if(!a.noArrow){span=th.getElementsByTagName('span');if(span.length){span=span[0];while(span.firstChild)span.removeChild(span.firstChild)}}}};if(a.thList.length>1){classToAdd=fdTableSort.thNode.className.search(/forwardSort/)!=-1?"reverseSort":"forwardSort";fdTableSort.removeClass(fdTableSort.thNode,"(forwardSort|reverseSort)");fdTableSort.addClass(fdTableSort.thNode,classToAdd);a.pos=-1}else if(c){a.pos=fdTableSort.thNode}},initSort:function(a){var b=fdTableSort.thNode;var c=document.getElementById(fdTableSort.tableId);if(!(fdTableSort.tableId in fdTableSort.tableCache)){fdTableSort.prepareTableData(document.getElementById(fdTableSort.tableId))};fdTableSort.addThNode();if(!a){fdTableSort.addSortActiveClass()};fdTableSort.pos=b.className.match(/fd-column-([0-9]+)/)[1];var g=fdTableSort.tableCache[c.id];var h=g.pos&&g.pos.className?g.pos.className.match(/fd-column-([0-9]+)/)[1]:-1;var j=g.data.length;var k=g.data.length>0?g.data[0].length-1:0;var m=g.identical[fdTableSort.pos];var n="forwardSort";if(g.thList.length>1){var o="var sortWrapper = function(a,b) {\n";var l=g.thList.length;var q=0;var e,d,th,p,f;for(var i=0;i<l;i++){th=g.thList[i];p=th.className.match(/fd-column-([0-9]+)/)[1];if(g.identical[p]){continue};q++;if(th.className.match(/sortable-(numeric|currency|date|keep)/)){f="fdTableSort.sortNumeric"}else if(th.className.match('sortable-text')){f="fdTableSort.sortText"}else if(th.className.search(/sortable-([a-zA-Z\_]+)/)!=-1&&th.className.match(/sortable-([a-zA-Z\_]+)/)[1]in window){f="window['"+th.className.match(/sortable-([a-zA-Z\_]+)/)[1]+"']"}else f="fdTableSort.sortText";e="e"+i;d=th.className.search('forwardSort')!=-1?"a,b":"b,a";o+="fdTableSort.pos   = "+p+";\n";o+="var "+e+" = "+f+"("+d+");\n";o+="if("+e+") return "+e+";\n";o+="else { \n"};o+="return 0;\n";for(var i=0;i<q;i++){o+="};\n"};if(q)o+="return 0;\n";o+="};\n";eval(o);g.data.sort(sortWrapper);m=false}else if((h==fdTableSort.pos&&!m)||(b.className.search(/sortable-keep/)!=-1&&h==-1)){g.data.reverse();n=b.className.search(/reverseSort/)!=-1?"forwardSort":"reverseSort";if(b.className.search(/sortable-keep/)!=-1&&h==-1)fdTableSort.tableCache[c.id].pos=b}else{fdTableSort.tableCache[c.id].pos=b;n=b.className.search(/forwardSort/)!=-1?"reverseSort":"forwardSort";if(!m){if(b.className.match(/sortable-(numeric|currency|date|keep)/)){g.data.sort(fdTableSort.sortNumeric)}else if(b.className.match('sortable-text')){g.data.sort(fdTableSort.sortText)}else if(b.className.search(/sortable-([a-zA-Z\_]+)/)!=-1&&b.className.match(/sortable-([a-zA-Z\_]+)/)[1]in window){g.data.sort(window[b.className.match(/sortable-([a-zA-Z\_]+)/)[1]])}}};if(g.thList.length==1){fdTableSort.removeClass(b,"(forwardSort|reverseSort)");fdTableSort.addClass(b,n)};if(!g.noArrow){var r=fdTableSort.thNode.getElementsByTagName('span')[0];if(r.firstChild)r.removeChild(r.firstChild);r.appendChild(document.createTextNode(fdTableSort.thNode.className.search(/forwardSort/)!=-1?" \u2191":" \u2193"))};if(!g.rowStyle&&!g.colStyle&&m){if(!a)fdTableSort.removeSortActiveClass();fdTableSort.thNode=null;return};if("tablePaginater"in window&&"tableInfo"in tablePaginater&&fdTableSort.tableId in tablePaginater.tableInfo){tablePaginater.redraw(fdTableSort.tableId,m)}else{fdTableSort.redraw(fdTableSort.tableId,m)};if(!a){fdTableSort.removeSortActiveClass()};fdTableSort.thNode=null},redraw:function(a,b){if(!a||!(a in fdTableSort.tableCache)){return};var c=fdTableSort.tableCache[a];var d=c.data;var e=d.length;var f=e?d[0].length-1:0;var g=c.hook;var h=c.colStyle;var j=c.rowStyle;var k=c.colOrder;var l,tds;for(var i=0;i<e;i++){l=d[i][f];if(h){tds=l.cells;for(thPos in k){if(!k[thPos])fdTableSort.removeClass(tds[thPos],h);else fdTableSort.addClass(tds[thPos],h)}};if(!b){if(j){if(i&1)fdTableSort.addClass(l,j);else fdTableSort.removeClass(l,j)};g.appendChild(l)}};l=tds=g=null},getInnerText:function(a){if(typeof a=="string"||typeof a=="undefined")return a;if(a.innerText)return a.innerText;var b='',i;for(i=a.firstChild;i;i=i.nextSibling){if(i.nodeType==3)b+=i.nodeValue;else if(i.nodeType==1)b+=fdTableSort.getInnerText(i)};return b},dateFormat:function(a,b){var c=[{regExp:/^(0?[1-9]|1[012])([- \/.])(0?[1-9]|[12][0-9]|3[01])([- \/.])((\d\d)?\d\d)$/,d:3,m:1,y:5},{regExp:/^(0?[1-9]|[12][0-9]|3[01])([- \/.])(0?[1-9]|1[012])([- \/.])((\d\d)?\d\d)$/,d:1,m:3,y:5},{regExp:/^(\d\d\d\d)([- \/.])(0?[1-9]|1[012])([- \/.])(0?[1-9]|[12][0-9]|3[01])$/,d:5,m:3,y:1}];var e;var f=0;var g=c.length;while(f<g){e=(f+(b?g+1:g))%g;if(a.match(c[e].regExp)){res=a.match(c[e].regExp);y=res[c[e].y];m=res[c[e].m];d=res[c[e].d];if(m.length==1)m="0"+String(m);if(d.length==1)d="0"+String(d);if(y.length!=4)y=(parseInt(y)<50)?"20"+String(y):"19"+String(y);return y+String(m)+d};f++};return 0},sortNumeric:function(a,b){var c=a[fdTableSort.pos];var d=b[fdTableSort.pos];if(c==d)return 0;if(c===""&&!isNaN(d))return-1;if(d===""&&!isNaN(c))return 1;return c-d},sortText:function(a,b){var c=a[fdTableSort.pos];var d=b[fdTableSort.pos];if(c==d)return 0;if(c<d)return-1;return 1}}})();fdTableSort.addEvent(window,"load",fdTableSort.initEvt);fdTableSort.addEvent(window,"unload",fdTableSort.onUnload);
