| /* |
| Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. |
| Available via Academic Free License >= 2.1 OR the modified BSD license. |
| see: http://dojotoolkit.org/license for details |
| */ |
| |
| |
| if(!dojo._hasResource["dojo._base.event"]){ |
| dojo._hasResource["dojo._base.event"]=true; |
| dojo.provide("dojo._base.event"); |
| dojo.require("dojo._base.connect"); |
| (function(){ |
| var _1=(dojo._event_listener={add:function(_2,_3,fp){ |
| if(!_2){ |
| return; |
| } |
| _3=_1._normalizeEventName(_3); |
| fp=_1._fixCallback(_3,fp); |
| var _4=_3; |
| if(!dojo.isIE&&(_3=="mouseenter"||_3=="mouseleave")){ |
| var _5=fp; |
| _3=(_3=="mouseenter")?"mouseover":"mouseout"; |
| fp=function(e){ |
| if(!dojo.isDescendant(e.relatedTarget,_2)){ |
| return _5.call(this,e); |
| } |
| }; |
| } |
| _2.addEventListener(_3,fp,false); |
| return fp; |
| },remove:function(_6,_7,_8){ |
| if(_6){ |
| _7=_1._normalizeEventName(_7); |
| if(!dojo.isIE&&(_7=="mouseenter"||_7=="mouseleave")){ |
| _7=(_7=="mouseenter")?"mouseover":"mouseout"; |
| } |
| _6.removeEventListener(_7,_8,false); |
| } |
| },_normalizeEventName:function(_9){ |
| return _9.slice(0,2)=="on"?_9.slice(2):_9; |
| },_fixCallback:function(_a,fp){ |
| return _a!="keypress"?fp:function(e){ |
| return fp.call(this,_1._fixEvent(e,this)); |
| }; |
| },_fixEvent:function(_b,_c){ |
| switch(_b.type){ |
| case "keypress": |
| _1._setKeyChar(_b); |
| break; |
| } |
| return _b; |
| },_setKeyChar:function(_d){ |
| _d.keyChar=_d.charCode?String.fromCharCode(_d.charCode):""; |
| _d.charOrCode=_d.keyChar||_d.keyCode; |
| },_punctMap:{106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39}}); |
| dojo.fixEvent=function(_e,_f){ |
| return _1._fixEvent(_e,_f); |
| }; |
| dojo.stopEvent=function(evt){ |
| evt.preventDefault(); |
| evt.stopPropagation(); |
| }; |
| var _10=dojo._listener; |
| dojo._connect=function(obj,_11,_12,_13,_14){ |
| var _15=obj&&(obj.nodeType||obj.attachEvent||obj.addEventListener); |
| var lid=_15?(_14?2:1):0,l=[dojo._listener,_1,_10][lid]; |
| var h=l.add(obj,_11,dojo.hitch(_12,_13)); |
| return [obj,_11,h,lid]; |
| }; |
| dojo._disconnect=function(obj,_16,_17,_18){ |
| ([dojo._listener,_1,_10][_18]).remove(obj,_16,_17); |
| }; |
| dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:dojo.isSafari?91:224,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145,copyKey:dojo.isMac&&!dojo.isAIR?(dojo.isSafari?91:224):17}; |
| var _19=dojo.isMac?"metaKey":"ctrlKey"; |
| dojo.isCopyKey=function(e){ |
| return e[_19]; |
| }; |
| if(dojo.isIE){ |
| dojo.mouseButtons={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_1a){ |
| return e.button&_1a; |
| },isLeft:function(e){ |
| return e.button&1; |
| },isMiddle:function(e){ |
| return e.button&4; |
| },isRight:function(e){ |
| return e.button&2; |
| }}; |
| }else{ |
| dojo.mouseButtons={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_1b){ |
| return e.button==_1b; |
| },isLeft:function(e){ |
| return e.button==0; |
| },isMiddle:function(e){ |
| return e.button==1; |
| },isRight:function(e){ |
| return e.button==2; |
| }}; |
| } |
| if(dojo.isIE){ |
| var _1c=function(e,_1d){ |
| try{ |
| return (e.keyCode=_1d); |
| } |
| catch(e){ |
| return 0; |
| } |
| }; |
| var iel=dojo._listener; |
| var _1e=(dojo._ieListenersName="_"+dojo._scopeName+"_listeners"); |
| if(!dojo.config._allow_leaks){ |
| _10=iel=dojo._ie_listener={handlers:[],add:function(_1f,_20,_21){ |
| _1f=_1f||dojo.global; |
| var f=_1f[_20]; |
| if(!f||!f[_1e]){ |
| var d=dojo._getIeDispatcher(); |
| d.target=f&&(ieh.push(f)-1); |
| d[_1e]=[]; |
| f=_1f[_20]=d; |
| } |
| return f[_1e].push(ieh.push(_21)-1); |
| },remove:function(_22,_23,_24){ |
| var f=(_22||dojo.global)[_23],l=f&&f[_1e]; |
| if(f&&l&&_24--){ |
| delete ieh[l[_24]]; |
| delete l[_24]; |
| } |
| }}; |
| var ieh=iel.handlers; |
| } |
| dojo.mixin(_1,{add:function(_25,_26,fp){ |
| if(!_25){ |
| return; |
| } |
| _26=_1._normalizeEventName(_26); |
| if(_26=="onkeypress"){ |
| var kd=_25.onkeydown; |
| if(!kd||!kd[_1e]||!kd._stealthKeydownHandle){ |
| var h=_1.add(_25,"onkeydown",_1._stealthKeyDown); |
| kd=_25.onkeydown; |
| kd._stealthKeydownHandle=h; |
| kd._stealthKeydownRefs=1; |
| }else{ |
| kd._stealthKeydownRefs++; |
| } |
| } |
| return iel.add(_25,_26,_1._fixCallback(fp)); |
| },remove:function(_27,_28,_29){ |
| _28=_1._normalizeEventName(_28); |
| iel.remove(_27,_28,_29); |
| if(_28=="onkeypress"){ |
| var kd=_27.onkeydown; |
| if(--kd._stealthKeydownRefs<=0){ |
| iel.remove(_27,"onkeydown",kd._stealthKeydownHandle); |
| delete kd._stealthKeydownHandle; |
| } |
| } |
| },_normalizeEventName:function(_2a){ |
| return _2a.slice(0,2)!="on"?"on"+_2a:_2a; |
| },_nop:function(){ |
| },_fixEvent:function(evt,_2b){ |
| if(!evt){ |
| var w=_2b&&(_2b.ownerDocument||_2b.document||_2b).parentWindow||window; |
| evt=w.event; |
| } |
| if(!evt){ |
| return (evt); |
| } |
| evt.target=evt.srcElement; |
| evt.currentTarget=(_2b||evt.srcElement); |
| evt.layerX=evt.offsetX; |
| evt.layerY=evt.offsetY; |
| var se=evt.srcElement,doc=(se&&se.ownerDocument)||document; |
| var _2c=((dojo.isIE<6)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement; |
| var _2d=dojo._getIeDocumentElementOffset(); |
| evt.pageX=evt.clientX+dojo._fixIeBiDiScrollLeft(_2c.scrollLeft||0)-_2d.x; |
| evt.pageY=evt.clientY+(_2c.scrollTop||0)-_2d.y; |
| if(evt.type=="mouseover"){ |
| evt.relatedTarget=evt.fromElement; |
| } |
| if(evt.type=="mouseout"){ |
| evt.relatedTarget=evt.toElement; |
| } |
| evt.stopPropagation=_1._stopPropagation; |
| evt.preventDefault=_1._preventDefault; |
| return _1._fixKeys(evt); |
| },_fixKeys:function(evt){ |
| switch(evt.type){ |
| case "keypress": |
| var c=("charCode" in evt?evt.charCode:evt.keyCode); |
| if(c==10){ |
| c=0; |
| evt.keyCode=13; |
| }else{ |
| if(c==13||c==27){ |
| c=0; |
| }else{ |
| if(c==3){ |
| c=99; |
| } |
| } |
| } |
| evt.charCode=c; |
| _1._setKeyChar(evt); |
| break; |
| } |
| return evt; |
| },_stealthKeyDown:function(evt){ |
| var kp=evt.currentTarget.onkeypress; |
| if(!kp||!kp[_1e]){ |
| return; |
| } |
| var k=evt.keyCode; |
| var _2e=k!=13&&k!=32&&k!=27&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222); |
| if(_2e||evt.ctrlKey){ |
| var c=_2e?0:k; |
| if(evt.ctrlKey){ |
| if(k==3||k==13){ |
| return; |
| }else{ |
| if(c>95&&c<106){ |
| c-=48; |
| }else{ |
| if((!evt.shiftKey)&&(c>=65&&c<=90)){ |
| c+=32; |
| }else{ |
| c=_1._punctMap[c]||c; |
| } |
| } |
| } |
| } |
| var _2f=_1._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c}); |
| kp.call(evt.currentTarget,_2f); |
| evt.cancelBubble=_2f.cancelBubble; |
| evt.returnValue=_2f.returnValue; |
| _1c(evt,_2f.keyCode); |
| } |
| },_stopPropagation:function(){ |
| this.cancelBubble=true; |
| },_preventDefault:function(){ |
| this.bubbledKeyCode=this.keyCode; |
| if(this.ctrlKey){ |
| _1c(this,0); |
| } |
| this.returnValue=false; |
| }}); |
| dojo.stopEvent=function(evt){ |
| evt=evt||window.event; |
| _1._stopPropagation.call(evt); |
| _1._preventDefault.call(evt); |
| }; |
| } |
| _1._synthesizeEvent=function(evt,_30){ |
| var _31=dojo.mixin({},evt,_30); |
| _1._setKeyChar(_31); |
| _31.preventDefault=function(){ |
| evt.preventDefault(); |
| }; |
| _31.stopPropagation=function(){ |
| evt.stopPropagation(); |
| }; |
| return _31; |
| }; |
| if(dojo.isOpera){ |
| dojo.mixin(_1,{_fixEvent:function(evt,_32){ |
| switch(evt.type){ |
| case "keypress": |
| var c=evt.which; |
| if(c==3){ |
| c=99; |
| } |
| c=c<41&&!evt.shiftKey?0:c; |
| if(evt.ctrlKey&&!evt.shiftKey&&c>=65&&c<=90){ |
| c+=32; |
| } |
| return _1._synthesizeEvent(evt,{charCode:c}); |
| } |
| return evt; |
| }}); |
| } |
| if(dojo.isWebKit){ |
| _1._add=_1.add; |
| _1._remove=_1.remove; |
| dojo.mixin(_1,{add:function(_33,_34,fp){ |
| if(!_33){ |
| return; |
| } |
| var _35=_1._add(_33,_34,fp); |
| if(_1._normalizeEventName(_34)=="keypress"){ |
| _35._stealthKeyDownHandle=_1._add(_33,"keydown",function(evt){ |
| var k=evt.keyCode; |
| var _36=k!=13&&k!=32&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222); |
| if(_36||evt.ctrlKey){ |
| var c=_36?0:k; |
| if(evt.ctrlKey){ |
| if(k==3||k==13){ |
| return; |
| }else{ |
| if(c>95&&c<106){ |
| c-=48; |
| }else{ |
| if(!evt.shiftKey&&c>=65&&c<=90){ |
| c+=32; |
| }else{ |
| c=_1._punctMap[c]||c; |
| } |
| } |
| } |
| } |
| var _37=_1._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c}); |
| fp.call(evt.currentTarget,_37); |
| } |
| }); |
| } |
| return _35; |
| },remove:function(_38,_39,_3a){ |
| if(_38){ |
| if(_3a._stealthKeyDownHandle){ |
| _1._remove(_38,"keydown",_3a._stealthKeyDownHandle); |
| } |
| _1._remove(_38,_39,_3a); |
| } |
| },_fixEvent:function(evt,_3b){ |
| switch(evt.type){ |
| case "keypress": |
| if(evt.faux){ |
| return evt; |
| } |
| var c=evt.charCode; |
| c=c>=32?c:0; |
| return _1._synthesizeEvent(evt,{charCode:c,faux:true}); |
| } |
| return evt; |
| }}); |
| } |
| })(); |
| if(dojo.isIE){ |
| dojo._ieDispatcher=function(_3c,_3d){ |
| var ap=Array.prototype,h=dojo._ie_listener.handlers,c=_3c.callee,ls=c[dojo._ieListenersName],t=h[c.target]; |
| var r=t&&t.apply(_3d,_3c); |
| var lls=[].concat(ls); |
| for(var i in lls){ |
| var f=h[lls[i]]; |
| if(!(i in ap)&&f){ |
| f.apply(_3d,_3c); |
| } |
| } |
| return r; |
| }; |
| dojo._getIeDispatcher=function(){ |
| return new Function(dojo._scopeName+"._ieDispatcher(arguments, this)"); |
| }; |
| dojo._event_listener._fixCallback=function(fp){ |
| var f=dojo._event_listener._fixEvent; |
| return function(e){ |
| return fp.call(this,f(e,this)); |
| }; |
| }; |
| } |
| } |