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

//>>built
define("dojo/on",["./has!dom-addeventlistener?:./aspect","./_base/kernel","./has"],function(_1,_2,_3){
"use strict";
if(1){
var _4=window.ScriptEngineMajorVersion;
_3.add("jscript",_4&&(_4()+ScriptEngineMinorVersion()/10));
_3.add("event-orientationchange",_3("touch")&&!_3("android"));
_3.add("event-stopimmediatepropagation",window.Event&&!!window.Event.prototype&&!!window.Event.prototype.stopImmediatePropagation);
}
var on=function(_5,_6,_7,_8){
if(typeof _5.on=="function"&&typeof _6!="function"){
return _5.on(_6,_7);
}
return on.parse(_5,_6,_7,_9,_8,this);
};
on.pausable=function(_a,_b,_c,_d){
var _e;
var _f=on(_a,_b,function(){
if(!_e){
return _c.apply(this,arguments);
}
},_d);
_f.pause=function(){
_e=true;
};
_f.resume=function(){
_e=false;
};
return _f;
};
on.once=function(_10,_11,_12,_13){
var _14=on(_10,_11,function(){
_14.remove();
return _12.apply(this,arguments);
});
return _14;
};
on.parse=function(_15,_16,_17,_18,_19,_1a){
if(_16.call){
return _16.call(_1a,_15,_17);
}
if(_16.indexOf(",")>-1){
var _1b=_16.split(/\s*,\s*/);
var _1c=[];
var i=0;
var _1d;
while(_1d=_1b[i++]){
_1c.push(_18(_15,_1d,_17,_19,_1a));
}
_1c.remove=function(){
for(var i=0;i<_1c.length;i++){
_1c[i].remove();
}
};
return _1c;
}
return _18(_15,_16,_17,_19,_1a);
};
var _1e=/^touch/;
function _9(_1f,_20,_21,_22,_23){
var _24=_20.match(/(.*):(.*)/);
if(_24){
_20=_24[2];
_24=_24[1];
return on.selector(_24,_20).call(_23,_1f,_21);
}
if(_3("touch")){
if(_1e.test(_20)){
_21=_25(_21);
}
if(!_3("event-orientationchange")&&(_20=="orientationchange")){
_20="resize";
_1f=window;
_21=_25(_21);
}
}
if(_26){
_21=_26(_21);
}
if(_1f.addEventListener){
var _27=_20 in _28,_29=_27?_28[_20]:_20;
_1f.addEventListener(_29,_21,_27);
return {remove:function(){
_1f.removeEventListener(_29,_21,_27);
}};
}
_20="on"+_20;
if(_2a&&_1f.attachEvent){
return _2a(_1f,_20,_21);
}
throw new Error("Target must be an event emitter");
};
on.selector=function(_2b,_2c,_2d){
return function(_2e,_2f){
var _30=typeof _2b=="function"?{matches:_2b}:this,_31=_2c.bubble;
function _32(_33){
_30=_30&&_30.matches?_30:_2.query;
while(!_30.matches(_33,_2b,_2e)){
if(_33==_2e||_2d===false||!(_33=_33.parentNode)||_33.nodeType!=1){
return;
}
}
return _33;
};
if(_31){
return on(_2e,_31(_32),_2f);
}
return on(_2e,_2c,function(_34){
var _35=_32(_34.target);
return _35&&_2f.call(_35,_34);
});
};
};
function _36(){
this.cancelable=false;
};
function _37(){
this.bubbles=false;
};
var _38=[].slice,_39=on.emit=function(_3a,_3b,_3c){
var _3d=_38.call(arguments,2);
var _3e="on"+_3b;
if("parentNode" in _3a){
var _3f=_3d[0]={};
for(var i in _3c){
_3f[i]=_3c[i];
}
_3f.preventDefault=_36;
_3f.stopPropagation=_37;
_3f.target=_3a;
_3f.type=_3b;
_3c=_3f;
}
do{
_3a[_3e]&&_3a[_3e].apply(_3a,_3d);
}while(_3c&&_3c.bubbles&&(_3a=_3a.parentNode));
return _3c&&_3c.cancelable&&_3c;
};
var _28={};
if(!_3("event-stopimmediatepropagation")){
var _40=function(){
this.immediatelyStopped=true;
this.modified=true;
};
var _26=function(_41){
return function(_42){
if(!_42.immediatelyStopped){
_42.stopImmediatePropagation=_40;
return _41.apply(this,arguments);
}
};
};
}
if(_3("dom-addeventlistener")){
_28={focusin:"focus",focusout:"blur"};
on.emit=function(_43,_44,_45){
if(_43.dispatchEvent&&document.createEvent){
var _46=_43.ownerDocument.createEvent("HTMLEvents");
_46.initEvent(_44,!!_45.bubbles,!!_45.cancelable);
for(var i in _45){
var _47=_45[i];
if(!(i in _46)){
_46[i]=_45[i];
}
}
return _43.dispatchEvent(_46)&&_46;
}
return _39.apply(on,arguments);
};
}else{
on._fixEvent=function(evt,_48){
if(!evt){
var w=_48&&(_48.ownerDocument||_48.document||_48).parentWindow||window;
evt=w.event;
}
if(!evt){
return evt;
}
if(_49&&evt.type==_49.type){
evt=_49;
}
if(!evt.target){
evt.target=evt.srcElement;
evt.currentTarget=(_48||evt.srcElement);
if(evt.type=="mouseover"){
evt.relatedTarget=evt.fromElement;
}
if(evt.type=="mouseout"){
evt.relatedTarget=evt.toElement;
}
if(!evt.stopPropagation){
evt.stopPropagation=_4a;
evt.preventDefault=_4b;
}
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;
_4c(evt);
break;
}
}
return evt;
};
var _49,_4d=function(_4e){
this.handle=_4e;
};
_4d.prototype.remove=function(){
delete _dojoIEListeners_[this.handle];
};
var _4f=function(_50){
return function(evt){
evt=on._fixEvent(evt,this);
var _51=_50.call(this,evt);
if(evt.modified){
if(!_49){
setTimeout(function(){
_49=null;
});
}
_49=evt;
}
return _51;
};
};
var _2a=function(_52,_53,_54){
_54=_4f(_54);
if(((_52.ownerDocument?_52.ownerDocument.parentWindow:_52.parentWindow||_52.window||window)!=top||_3("jscript")<5.8)&&!_3("config-_allow_leaks")){
if(typeof _dojoIEListeners_=="undefined"){
_dojoIEListeners_=[];
}
var _55=_52[_53];
if(!_55||!_55.listeners){
var _56=_55;
_55=Function("event","var callee = arguments.callee; for(var i = 0; i<callee.listeners.length; i++){var listener = _dojoIEListeners_[callee.listeners[i]]; if(listener){listener.call(this,event);}}");
_55.listeners=[];
_52[_53]=_55;
_55.global=this;
if(_56){
_55.listeners.push(_dojoIEListeners_.push(_56)-1);
}
}
var _57;
_55.listeners.push(_57=(_55.global._dojoIEListeners_.push(_54)-1));
return new _4d(_57);
}
return _1.after(_52,_53,_54,true);
};
var _4c=function(evt){
evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";
evt.charOrCode=evt.keyChar||evt.keyCode;
};
var _4a=function(){
this.cancelBubble=true;
};
var _4b=on._preventDefault=function(){
this.bubbledKeyCode=this.keyCode;
if(this.ctrlKey){
try{
this.keyCode=0;
}
catch(e){
}
}
this.defaultPrevented=true;
this.returnValue=false;
};
}
if(_3("touch")){
var _58=function(){
};
var _59=window.orientation;
var _25=function(_5a){
return function(_5b){
var _5c=_5b.corrected;
if(!_5c){
var _5d=_5b.type;
try{
delete _5b.type;
}
catch(e){
}
if(_5b.type){
_58.prototype=_5b;
var _5c=new _58;
_5c.preventDefault=function(){
_5b.preventDefault();
};
_5c.stopPropagation=function(){
_5b.stopPropagation();
};
}else{
_5c=_5b;
_5c.type=_5d;
}
_5b.corrected=_5c;
if(_5d=="resize"){
if(_59==window.orientation){
return null;
}
_59=window.orientation;
_5c.type="orientationchange";
return _5a.call(this,_5c);
}
if(!("rotation" in _5c)){
_5c.rotation=0;
_5c.scale=1;
}
var _5e=_5c.changedTouches[0];
for(var i in _5e){
delete _5c[i];
_5c[i]=_5e[i];
}
}
return _5a.call(this,_5c);
};
};
}
return on;
});
