Вход Регистрация
Файл: admin/js/events.js
Строк: 213
<?php
varienEvents 
= Class.create();

varienEvents.prototype = { 
    
initialize: function() {
        
this.arrEvents = {};
        
this.eventPrefix '';
    },

    
/**
    * Attaches a {handler} function to the publisher's {eventName} event for execution upon the event firing
    * @param {String} eventName
    * @param {Function} handler
    * @param {Boolean} asynchFlag [optional] Defaults to false if omitted. Indicates whether to execute {handler} asynchronously (true) or not (false).
    */ 
    
attachEventHandler : function(eventNamehandler) {
        
eventName eventName this.eventPrefix;
        
// using an event cache array to track all handlers for proper cleanup
        
if (this.arrEvents[eventName] == null){
            
this.arrEvents[eventName] = [];
        }
        
//create a custom object containing the handler method and the asynch flag
        
var asynchVar arguments.length arguments[2] : false;
        var 
handlerObj = {
            
methodhandler,
            
asynchasynchVar
        
};  
        
this.arrEvents[eventName].push(handlerObj);
    },
  
    
/**
    * Removes a single handler from a specific event
    * @param {String} eventName The event name to clear the handler from
    * @param {Function} handler A reference to the handler function to un-register from the event
    */ 
    
removeEventHandler : function(eventNamehandler) {
        
eventName eventName this.eventPrefix;
        if (
this.arrEvents[eventName] != null){
            
this.arrEvents[eventName] = this.arrEvents[eventName].reject(function(obj) { return obj.method == handler; });
        }
    },
  
    
/**
    * Removes all handlers from a single event
    * @param {String} eventName The event name to clear handlers from
    */ 
    
clearEventHandlers : function(eventName) {
        
eventName eventName this.eventPrefix;
        
this.arrEvents[eventName] = null;
    },
  
    
/**
    * Removes all handlers from ALL events
    */ 
    
clearAllEventHandlers : function() {
        
this.arrEvents = {};
    },
  
    
/**
    * Fires the event {eventName}, resulting in all registered handlers to be executed.
    * @param {String} eventName The name of the event to fire
    * @params {Object} args [optional] Any object, will be passed into the handler function as the only argument
    */
    
fireEvent : function(eventName) {
        var 
evtName eventName this.eventPrefix;
        if (
this.arrEvents[evtName] != null) {
            var 
len this.arrEvents[evtName].length//optimization       
            
for (var 0leni++) {
                try {
                    if (
arguments.length 1) {
                        if (
this.arrEvents[evtName][i].asynch) {
                            var 
eventArgs arguments[1];
                            var 
method this.arrEvents[evtName][i].method.bind(this);
                            
setTimeout(function() { method(eventArgs) }.bind(this), 10);
                        }
                        else{
                            
this.arrEvents[evtName][i].method(arguments[1]);
                        }
                    } 
                    else {
                        if (
this.arrEvents[evtName][i].asynch) {
                            var 
eventHandler this.arrEvents[evtName][i].method;
                            
setTimeout(eventHandler1);
                        }
                        else if (
this.arrEvents && this.arrEvents[evtName] && this.arrEvents[evtName][i] && this.arrEvents[evtName][i].method){
                            
this.arrEvents[evtName][i].method();
                        }
                    }
                } 
                catch (
e) {
                    if (
this.id){
                        
alert("error: error in " this.id ".fireEvent():nnevent name: " eventName "nnerror message: " e.message);
                    }
                    else {
                        
alert("error: error in [unknown object].fireEvent():nnevent name: " eventName "nnerror message: " e.message);
                    }
                }
            }
        }
    }
};

varienGlobalEvents = new varienEvents();
?>
Онлайн: 2
Реклама