1 /** cross browser event handling and tracking 2 * Not instanciable. 3 *@constructor 4 */ 5 var YEvt = { listeners:[], 6 // eventFunk(event,datas) 7 /** add event listener 8 * @param {DomElement} trigger element triggering the event. 9 * @param {string} eventDesc event name (ex:'mouseup'). 10 * @param {function} Function function called when event is fired.<br/>of type : Function(event,datas); 11 * @param {mixed} [datas] miscalenous datas that could be used by <b>Function</b>. 12 * @return {int} event listener index. 13 */ 14 "add":function(trigger,eventDesc,eventFunk,datas) { 15 trigger=YDom.get(trigger); 16 var evitm = { tr:trigger , de:eventDesc , fu:eventFunk , da:datas}; 17 var evst = "this.funk = function(e){var ls =YEvt.listeners["+(YEvt.listeners.length)+"];"+ 18 " if(ls){ls.fu(browserIsIe?event:e,ls.da);} };"; 19 eval(evst); 20 if( navigator.userAgent.toLowerCase().indexOf("firefox") && eventDesc=="mousewheel" )eventDesc = 'DOMMouseScroll'; 21 try{ if(trigger.addEventListener) trigger.addEventListener(eventDesc,this.funk,false); 22 else trigger.attachEvent("on"+eventDesc,this.funk); 23 }catch(e){ 24 throw("Error YEvt.add :\n"+e); 25 }; 26 YEvt.listeners.push(evitm); 27 this.funk = null; 28 return YEvt.listeners.lengt - 1; 29 }, 30 /** add events listener 31 * @param {DomElement} trigger element triggering the event. 32 * @param {string[]} eventDescList events names (ex:['mouseup','mousedown']). 33 * @param {function} Function function called when event is fired.<br/>of type : Function(event,eventDesc,datas); 34 * @param {mixed} [datas] miscalenous datas that could be used by <b>Function</b>. 35 * @return {int[]} events listener index list. 36 */ 37 addCollection:function(trigger,eventDescList,onEvt,datas) { 38 var indexes=[]; 39 for(var i in eventDescList){ 40 var obj={ 41 onEvt : onEvt, 42 datas : datas, 43 desc : eventDescList[i] 44 }; 45 indexes.push( 46 YEvt.add(trigger,obj.desc,function(evt,dat){ 47 dat.onEvt(evt,dat.desc,dat.datas); 48 },obj) 49 ); 50 } 51 return indexes; 52 }, 53 /** remove event listener by it's index. */ 54 "remove":function(evindx) { 55 if(evindx>-1 && evindx<YEvt.pile.length)YEvt.listeners[evindx]=null; 56 return evindx; 57 } 58 };