﻿MV = MV || {};
MV.Listener = {
    fns: [],
    fire: function(p) {
        var fireargs = arguments;
        for (var i = 0; i < this.fns.length; i++) {
            this.fns[i].apply(null, fireargs);
        }
    },
    subscribe: function(fn) {
        var alreadySubscribed = false;
        for (var i = 0, l = this.fns.length; i < l; i++) {
            if (this.fns[i] === fn) {
                alreadySubscribed = true;
                break;
            }
        }
        if (!alreadySubscribed) {
            this.fns.push(fn);
        }
    },
    unsubscribe: function(fn) {
        for (var i = 0; i < this.fns.length; i++) {
            this.fns.pop(fn);
        }
    }
};
