/* Copyright (c) 2004-2010, 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)); }; }; } }