function $(id) {return document.getElementById(id)}

function stopPropagation(e) {
    e = e || window.event
    if (e.stopPropagation) e.stopPropagation()
    else e.cancelBubble = true
}

function clear(o) {
    for (var c = o.firstChild; c; c = o.firstChild) o.removeChild(c)
}

var Mediator = {

    LOAD_CHANNEL     : 'loadchannel',
    LOAD_GENRE       : 'loadgenre',
    LOAD_ANONS       : 'loadanons',
    MOVE_SETKA       : 'movesetka',
    END_MOVE_SETKA   : 'endmovesetka',
    MOVE_SCROLL      : 'movescroll',
    MOVE_SCROLL_MENU : 'movescrollmenu',

    //listeners : {},
    observers : {},

    notify : function(eventName, eventSource, params, request){
        //for (var ls = this.listeners[event], i=0; ls && i<ls.length; ls[i++].exec(eventSource, params, request));

        var os = this.observers[eventName]
        for (var o in os){
        	var ls = os[o].listeners[eventName]                    
        	if (ls) for (var i=0, ilen=ls.length; i<ilen; ls[i++].exec(eventSource, params, request));
        }
    },

    addListener : function(eventName, listener){
    	if (!this.listeners) this.listeners = {}
        if (!this.listeners[eventName]) this.listeners[eventName] = []
        this.listeners[eventName][this.listeners[eventName].length] = listener
        listener.observer = this
        Mediator.addObserver(eventName, this)
    },
    
    addObserver : function(eventName, observer){
    	if (!this.observers[eventName]) this.observers[eventName] = {}
    	this.observers[eventName][observer] = observer
    }
}