/* * File: KeyTable.min.js * Version: 1.1.7 * Author: Allan Jardine (www.sprymedia.co.uk) * * Copyright 2009-2011 Allan Jardine, all rights reserved. * * This source file is free software, under either the GPL v2 license or a * BSD (3 point) style license, as supplied with this software. * * This source file is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. */functionKeyTable(n){functionG(a){returnfunction(d,c,j){(null===d||"number"==typeofd)&&(null===c||"number"==typeofc)&&"function"==typeofj?i[a].push({x:d,y:c,fn:j}):"object"==typeofd&&"function"==typeofc?(d=A(d),i[a].push({x:d[0],y:d[1],fn:c})):alert("Unhandable event type was added: x"+d+" y:"+c+" z:"+j)}}functionH(a){returnfunction(d,c,j){(null===d||"number"==typeofd)&&(null===c||"number"==typeofc)?"function"==typeofj?w(a,d,c,j):w(a,d,c):"object"==typeofd?(d=A(d),"function"==typeofc?w(a,d[0],d[1],c):w(a,d[0],d[1])):alert("Unhandable event type was removed: x"+d+" y:"+c+" z:"+j)}}functionw(a,d,c,j){for(varb=0,e=0,g=i[a].length;e<g-b;e++)if("undefined"!=typeofj)i[a][e-b].x==d&&(i[a][e-b].y==c&&i[a][e-b].fn==j)&&(i[a].splice(e-b,1),b++);elseif(i[a][e-b].x==d&&i[a][e-b].y==c)returni[a].splice(e,1),1;returnb}functionx(a,d,c){for(varb=0,a=i[a],h=0;h<a.length;h++)if(a[h].x==d&&a[h].y==c||null===a[h].x&&a[h].y==c||a[h].x==d&&null===a[h].y||null===a[h].x&&null===a[h].y)a[h].fn(t(d,c),d,c),b++;returnb}functionl(a,d){if(r!=a){"undefined"==typeofd&&(d=!0);null!==r&&B(r);jQuery(a).addClass(u);jQuery(a).parent().addClass(u);varc;if(k){c=k.fnSettings();for(varb=C(a)[1],h=o;b>=c.fnDisplayEnd();)0<=c._iDisplayLength?c._iDisplayStart+c._iDisplayLength<c.fnRecordsDisplay()&&(c._iDisplayStart+=c._iDisplayLength):c._iDisplayStart=0,k.oApi._fnCalculateEnd(c);for(;b<c._iDisplayStart;)c._iDisplayStart=0<=c._iDisplayLength?c._iDisplayStart-c._iDisplayLength:0,0>c._iDisplayStart&&(c._iDisplayStart=0),k.oApi._fnCalculateEnd(c);k.oApi._fnDraw(c);o=h}b=A(a);r=a;m=b[0];g=b[1];vare,i,l,n,f;if(d){e=document.documentElement.clientHeight;b=document.documentElement.clientWidth;i=document.body.scrollTop||document.documentElement.scrollTop;h=document.body.scrollLeft||document.documentElement.scrollLeft;l=a.offsetHeight;n=a.offsetWidth;f=a;varp=0,q=0;if(f.offsetParent){p=f.offsetLeft;q=f.offsetTop;for(f=f.offsetParent;f;)p+=f.offsetLeft,q+=f.offsetTop,f=f.offsetParent}f=[p,q];if(k&&"undefined"!=typeofc.oScroll&&(""!==c.oScroll.sX||""!==c.oScroll.sY))f[1]-=$(c.nTable.parentNode).scrollTop(),f[0]-=$(c.nTable.parentNode).scrollLeft();f[1]+l>i+e?(e=f[1]+l-e,document.documentElement.scrollTop=e,document.body.scrollTop=e):f[1]<i&&(e=f[1],document.documentElement.scrollTop=e,document.body.scrollTop=e);f[0]+n>h+b?(b=f[0]+n-b,document.documentElement.scrollLeft=b,document.body.scrollLeft=b):f[0]<h&&(b=f[0],document.documentElement.scrollLeft=b,document.body.scrollLeft=b)}if(k&&"undefined"!=typeofc.oScroll&&(""!==c.oScroll.sX||""!==c.oScroll.sY))(c=c.nTable.parentNode,e=c.clientHeight,b=c.clientWidth,i=c.scrollTop,h=c.scrollLeft,l=a.offsetHeight,n=a.offsetWidth,a.offsetTop+l>e+i?c.scrollTop=a.offsetTop+l-e:a.offsetTop<i&&(c.scrollTop=a.offsetTop),a.offsetLeft+n>b+h)?c.scrollLeft=a.offsetLeft+n-b:a.offsetLeft<h&&(c.scrollLeft=a.offsetLeft);o||(o=!0);x("focus",m,g)}}functiony(){B(r);r=g=m=null;o=!1}functionB(a){jQuery(a).removeClass(u);jQuery(a).parent().removeClass(u);x("blur",m,g)}functionD(){for(vara=this;"TD"!=a.nodeName;)a=a.parentNode;l(a);o||(o=!0)}functionE(a){if(F.block||!o||a.metaKey||a.altKey||a.ctrlKey)return!0;varb;b=v.getElementsByTagName("tr")[0].getElementsByTagName("td").length;varc;if(k){c=k.fnSettings().aiDisplay.length;varj=C(r);if(null===j)return;m=j[0];g=j[1]}elsec=v.getElementsByTagName("tr").length;j=9==a.keyCode&&a.shiftKey?-1:a.keyCode;switch(j){case13:returna.preventDefault(),a.stopPropagation(),x("action",m,g),!0;case27:if(!x("esc",m,g)){y();return}a=m;b=g;break;case-1:case37:if(0<m)a=m-1,b=g;elseif(0<g)a=b-1,b=g-1;elsereturn-1==j&&z?(q=!0,p.focus(),setTimeout(function(){q=!1},0),o=!1,y(),!0):!1;break;case38:if(0<g)a=m,b=g-1;elsereturn!1;break;case9:case39:if(m<b-1)a=m+1,b=g;elseif(g<c-1)a=0,b=g+1;elsereturn9==j&&z?(q=!0,p.focus(),setTimeout(function(){q=!1},0),o=!1,y(),!0):!1;break;case40:if(g<c-1)a=m,b=g+1;elsereturn!1;break;default:return!0}l(t(a,b));return!1}functiont(a,b){if(k){varc=k.fnSettings();return"undefined"!=typeofc.aoData[c.aiDisplay[b]]?c.aoData[c.aiDisplay[b]].nTr.getElementsByTagName("td")[a]:null}returnjQuery("tr:eq("+b+")>td:eq("+a+")",v)[0]}functionA(a){if(k){varb=k.fnSettings();return[jQuery("td",a.parentNode).index(a),jQuery("tr",a.parentNode.parentNode).index(a.parentNode)+b._iDisplayStart]}return[jQuery("td",a.parentNode).index(a),jQuery("tr",a.parentNode.parentNode).index(a.parentNode)]}functionC(a){for(varb=k.fnSettings(),c=0,g=b.aiDisplay.length;c<g;c++)for(varh=b.aoData[b.aiDisplay[c]].nTr.getElementsByTagName("td"),e=0,i=h.length;e<i;e++)if(h[e]==a)return[e,c];returnnull}this.block=!1;this.event={remove:{}};this.fnGetCurrentPosition=function(){return[m,g]};this.fnGetCurrentData=function(){returnr.innerHTML};this.fnGetCurrentTD=function(){returnr};this.fnSetPosition=function(a,b){"object"==typeofa&&a.nodeName?l(a):l(t(a,b))};varv=null,r=null,m=null,g=null,F=null,u="focus",o=!1,i={action:[],esc:[],focus:[],blur:[]},k=null,z,p,q=!1,s;for(sini)s&&(this.event[s]=G(s),this.event.remove[s]=H(s));varb=n,F=this;"undefined"==typeofb&&(b={});"undefined"==typeofb.focus&&(b.focus=[0,0]);"undefined"==typeofb.table?b.table=jQuery("table.KeyTable")[0]:$(b.table).addClass("KeyTable");"undefined"!=typeofb.focusClass&&(u=b.focusClass);"undefined"!=typeofb.datatable&&(k=b.datatable);"undefined"==typeofb.initScroll&&(b.initScroll=!0);"undefined"==typeofb.form&&(b.form=!1);z=b.form;v=b.table.getElementsByTagName("tbody")[0];z?(n=document.createElement("div"),p=document.createElement("input"),n.style.height="1px",n.style.width="0px",n.style.overflow="hidden","undefined"!=typeofb.tabIndex&&(p.tabIndex=b.tabIndex),n.appendChild(p),b.table.parentNode.insertBefore(n,b.table.nextSibling),jQuery(p).focus(function(){if(!q){o=true;q=false;typeofb.focus.nodeName!="undefined"?l(b.focus,b.initScroll):l(t(b.focus[0],b.focus[1]),b.initScroll);setTimeout(function(){p.blur()},0)}}),o=!1):("undefined"!=typeofb.focus.nodeName?l(b.focus,b.initScroll):l(t(b.focus[0],b.focus[1]),b.initScroll),o||(o=!0));jQuery.browser.mozilla||jQuery.browser.opera?jQuery(document).bind("keypress",E):jQuery(document).bind("keydown",E);k?jQuery("tbody td",k.fnSettings().nTable).live("click",D):jQuery("td",v).live("click",D);jQuery(document).click(function(a){for(vara=a.target,d=false;a;){if(a==b.table){d=true;break}a=a.parentNode}d||y()})};