(function(){fdTableSort={regExp_Currency:/^[Â£$â‚¬Â¥Â¤]/,regExp_Number:/^(\-)?[0-9]+(\.[0-9]*)?$/,pos:-1,uniqueHash:1,thNode:null,tableId:null,tableCache:{},tmpCache:{},sortActiveClass:"sort-active",/*@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,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="#";a.className="fdTableSortTrigger";var e=document.createElement("span");for(var k=0,tbl;tbl=d[k];k++){if(tbl.id){fdTableSort.removeTableCache(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++};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],10)]={"reverse":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){columnNumSortObj[i]["thNode"]=workArr[c][i];columnNumSortObj["active"]=true};thtext=fdTableSort.getInnerText(workArr[c][i]);for(var f=workArr[c][i].childNodes.length;f--;){if(workArr[c][i].childNodes[f].nodeType==1&&(workArr[c][i].childNodes[f].className=="fdFilterTrigger"||/img/i.test(workArr[c][i].childNodes[f].nodeName))){continue};if(workArr[c][i].childNodes[f].nodeType==1&&/^a$/i.test(workArr[c][i].childNodes[f].nodeName)){workArr[c][i].childNodes[f].onclick=workArr[c][i].childNodes[f].onkeydown=null};workArr[c][i].removeChild(workArr[c][i].childNodes[f])};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 columnNumSortObj){fdTableSort.tableId=tbl.id;fdTableSort.prepareTableData(document.getElementById(fdTableSort.tableId));delete columnNumSortObj["active"];for(col in columnNumSortObj){obj=columnNumSortObj[col];if(!("thNode"in obj)){continue};fdTableSort.multi=true;len=obj.reverse?2:1;for(ii=0;ii<len;ii++){fdTableSort.thNode=obj.thNode;if(!showOnly){fdTableSort.initSort(false,true)}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?" \u2193":" \u2191"))}}};if(showOnly&&(fdTableSort.tableCache[tbl.id].colStyle||fdTableSort.tableCache[tbl.id].rowStyle)){fdTableSort.redraw(tbl.id,false)}}else if(tbl.className.search(/onload-zebra/)!=-1){fdTableSort.tableId=tbl.id;fdTableSort.prepareTableData(tbl);if(fdTableSort.tableCache[tbl.id].rowStyle){fdTableSort.redraw(tbl.id,false)}}};fdTableSort.thNode=aclone=a=e=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;fdTableSort.addSortActiveClass();setTimeout(fdTableSort.initSort,5,false);return fdTableSort.stopEvent(e)};return a!=-1?true:fdTableSort.stopEvent(e)},jsWrapper:function(a,b){if(!(a in fdTableSort.tmpCache)){return false};if(!(a in fdTableSort.tableCache)){fdTableSort.prepareTableData(document.getElementById(a))};if(!(b instanceof Array)){b=[b]};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}};fdTableSort.addSortActiveClass();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,fdTableSort.sortActiveClass);fdTableSort.addClass(document.getElementsByTagName('body')[0],fdTableSort.sortActiveClass)},removeSortActiveClass:function(){if(fdTableSort.thNode==null)return;fdTableSort.removeClass(fdTableSort.thNode,fdTableSort.sortActiveClass);fdTableSort.removeClass(document.getElementsByTagName('body')[0],fdTableSort.sortActiveClass)},doCallback:function(a){if(!fdTableSort.tableId||!(fdTableSort.tableId in fdTableSort.tableCache)){return};fdTableSort.callback(fdTableSort.tableId,a?fdTableSort.tableCache[fdTableSort.tableId].initiatedCallback: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,fdTableSort.tableCache[a].thList)};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;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,b){var c=fdTableSort.thNode;var g=document.getElementById(fdTableSort.tableId);if(!(fdTableSort.tableId in fdTableSort.tableCache)){fdTableSort.prepareTableData(document.getElementById(fdTableSort.tableId))};fdTableSort.addThNode();if(!a){fdTableSort.doCallback(true)};fdTableSort.pos=c.className.match(/fd-column-([0-9]+)/)[1];var h=fdTableSort.tableCache[g.id];var j=h.pos&&h.pos.className?h.pos.className.match(/fd-column-([0-9]+)/)[1]:-1;var k=h.data.length;var m=h.data.length>0?h.data[0].length-1:0;var n=h.identical[fdTableSort.pos];var o="forwardSort";if(h.thList.length>1){var q="var sortWrapper = function(a,b) {\n";var l=h.thList.length;var r=0;var e,d,th,p,f;for(var i=0;i<l;i++){th=h.thList[i];p=th.className.match(/fd-column-([0-9]+)/)[1];if(h.identical[p]){continue};r++;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";q+="fdTableSort.pos   = "+p+";\n";q+="var "+e+" = "+f+"("+d+");\n";q+="if("+e+") return "+e+";\n";q+="else { \n"};q+="return 0;\n";for(var i=0;i<r;i++){q+="};\n"};if(r)q+="return 0;\n";q+="};\n";eval(q);h.data.sort(sortWrapper);n=false}else if((j==fdTableSort.pos&&!n)||(c.className.search(/sortable-keep/)!=-1&&j==-1)){h.data.reverse();o=c.className.search(/reverseSort/)!=-1?"forwardSort":"reverseSort";if(c.className.search(/sortable-keep/)!=-1&&j==-1)fdTableSort.tableCache[g.id].pos=c}else{fdTableSort.tableCache[g.id].pos=c;o=c.className.search(/forwardSort/)!=-1?"reverseSort":"forwardSort";if(!n){if(c.className.match(/sortable-(numeric|currency|date|keep)/)){h.data.sort(fdTableSort.sortNumeric)}else if(c.className.match('sortable-text')){h.data.sort(fdTableSort.sortText)}else if(c.className.search(/sortable-([a-zA-Z\_]+)/)!=-1&&c.className.match(/sortable-([a-zA-Z\_]+)/)[1]in window){h.data.sort(window[c.className.match(/sortable-([a-zA-Z\_]+)/)[1]])};if(c.className.search(/(^|\s)favour-reverse($|\s)/)!=-1){o=o=="forwardSort"?"reverseSort":"forwardSort";h.data.reverse()}}};if(b){n=false};if(h.thList.length==1){fdTableSort.removeClass(c,"(forwardSort|reverseSort)");fdTableSort.addClass(c,o)};if(!h.noArrow){var s=fdTableSort.thNode.getElementsByTagName('span')[0];if(s.firstChild)s.removeChild(s.firstChild);s.appendChild(document.createTextNode(fdTableSort.thNode.className.search(/forwardSort/)!=-1?" \u2193":" \u2191"))};if(!h.rowStyle&&!h.colStyle&&n){fdTableSort.removeSortActiveClass();if(!a){fdTableSort.doCallback(false)};fdTableSort.thNode=null;return};if("tablePaginater"in window&&"tableInfo"in tablePaginater&&fdTableSort.tableId in tablePaginater.tableInfo){tablePaginater.redraw(fdTableSort.tableId,n)}else{fdTableSort.redraw(fdTableSort.tableId,n)};fdTableSort.removeSortActiveClass();if(!a){fdTableSort.doCallback(false)};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=0;var m=/(^|\s)invisibleRow(\s|$)/;var n,tds;for(var i=0;i<e;i++){n=d[i][f];if(h){tds=n.cells;for(thPos in k){if(!k[thPos])fdTableSort.removeClass(tds[thPos],h);else fdTableSort.addClass(tds[thPos],h)}};if(!b){if(j&&n.className.search(m)==-1){if(l++&1)fdTableSort.addClass(n,j);else fdTableSort.removeClass(n,j)};g.appendChild(n)}};n=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,cnt=0,numFormats=c.length;while(cnt<numFormats){e=(cnt+(b?numFormats+1:numFormats))%numFormats;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};cnt++};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);
