elation.extend("events", { events: {}, fire: function(type, data, target, element, fn) { if (typeof type == 'object') { data = elation.utils.arrayget(type, 'data') || data; target = elation.utils.arrayget(type, 'target') || target; element = elation.utils.arrayget(type, 'element') || element; fn = elation.utils.arrayget(type, 'fn') || fn; type = elation.utils.arrayget(type, 'type'); } //console.log('fire:',type,fn,element,data); if (!type) return false; var list = this.events[type], original_events = [], events = [], event; if (!list) { this.events[type] = []; return; } // gather all the events associated with this event type // filter by [element] and/or [fn] if present for (var i=0; i=0; i--) { var event = events[i]; event.data = data; if (event.origin) { if (typeof event.origin == 'function') event.origin(event); else if (typeof event.origin.handleEvent != 'undefined') event.origin.handleEvent(event); } if (event.cancelBubble) { break; } */ // fire each event for (var i=0; i '+custom_event_name); } if (!elation.events.events[type]) elation.events.events[type] = []; elation.events.events[type].push(event); /* if (custom_event_name) { if (!elation.events.events[custom_event_name]) elation.events.events[custom_event_name] = []; elation.events.events[custom_event_name].push(event); } */ }, // syntax: add(element || [ elements ], "type1,type2,type3", function || object); add: function(elements, types, fn, custom_event_name) { if (custom_event_name) custom_event_name = custom_event_name.replace('.','_'); if (!types || !fn || typeof types != "string") return; var elements = elation.utils.isNull(elements) ? [{}] : !elation.utils.isArray(elements) || elements == window ? [ elements ] : elements, types = types.split(','); if (typeof fn == "string") { fn = (function(func) { return function(ev) { eval(func); }; })(fn); } for (var e=0; e")) { var classes = parentClassName.split(">", 2); classDown = classes[0]; classUp = classes[1]; } else { classDown = parentClassName; } // First run DOWN the heirarchy to find the base class... while (!elation.html.hasclass(target,classDown) && target.parentNode) { target = target.parentNode; } // Now if we've specified a child to attach to, find it! if (classUp) { var elements; elements = elation.find("." + classUp, target); if (elements.length > 0) { target = elements[0]; } } } return target; }, isTransition: function(ev, parent) { var tg = this.getTarget(ev), reltg = this.getRelated(ev); return (elation.utils.isin(parent, tg) && !elation.utils.isin(parent, reltg)); }, // returns mouse or all finger touch coords coords: function(event) { if (typeof event.touches != 'undefined' && event.touches.length > 0) { var c = { x: event.touches[0].pageX, y: event.touches[0].pageY }; } else { var c = { x: (event.pageX || (event.clientX + document.body.scrollLeft)), y: (event.pageY || (event.clientY + document.body.scrollTop)) }; } return c; } }); /* backup - original elation add/remove funcs add: function(obj, type, fn) { if (obj) { var types = type.split(','); for (var i = 0; i < types.length; i++) { var type = types[i]; if (obj.addEventListener) { if (type == 'mousewheel' && elation.browser.type != 'safari') type = 'DOMMouseScroll'; if (typeof fn == "object" && fn.handleEvent) { obj[type+fn] = function(e) { fn.handleEvent(e); } obj.addEventListener( type, obj[type+fn], false ); } else { obj.addEventListener( type, fn, false ); } } else if (obj.attachEvent) { if (typeof fn == "object" && fn.handleEvent) { obj[type+fn] = function() { fn.handleEvent(elation.events.fix(window.event)); } } else { obj["e"+type+fn] = fn; obj[type+fn] = function() { obj["e"+type+fn]( elation.events.fix(window.event) ); } } obj.attachEvent( "on"+type, obj[type+fn]); } } } return this; }, remove: function( obj, type, fn ) { var types = type.split(','); for (var i = 0; i < types.length; i++) { var type = types[i]; if (obj.removeEventListener) { if (typeof fn == "object" && fn.handleEvent) { obj.removeEventListener( type, obj[type+fn], false ); delete obj[type+fn]; } else { obj.removeEventListener( type, fn, false ); } } else if (obj.detachEvent) { obj.detachEvent( "on"+type, obj[type+fn] ); obj[type+fn] = null; obj["e"+type+fn] = null; } } }, */