function _attachCustomEvent(sEventName, fHandler, sNamespace){
        if(typeof sEventName === "object"){
            sNamespace = fHandler ? (fHandler+".") : "";
            for(var sKey in sEventName){
                htHandlers[sNamespace + sKey] = htHandlers[sNamespace + sKey] || [];
                htHandlers[sNamespace + sKey].push(sEventName[sKey]);
            }
        } else {
            sNamespace = sNamespace ? (sNamespace+".") : "";
            htHandlers[sNamespace + sEventName] = htHandlers[sNamespace + sEventName] || [];
            htHandlers[sNamespace + sEventName].push(fHandler);
        }
    }
Attach custom event handler

@param {String} sEventName
@param {Function} fHandler
@param {String} sNamespace
@example
yobi.Files.attach("eventName", function(){}, "namespace");
// or
yobi.Files.attach({
   "event1st": function(){},
   "event2nd": function(){}
}, "namespace");