var $module=(function($B) {
  return {
    JSObject: $B.JSObject,
    JSConstructor: $B.JSConstructor,
    console: $B.JSObject(window.console),
    load:function(script_url, names){
        // Load and eval() the Javascript file at script_url
        // Set the names in array "names" in the Javacript global namespace
        var file_obj = $B.builtins.open(script_url)
        var content = $B.builtins.getattr(file_obj, 'read')()
        eval(content)
        if(names!==undefined){
            if(!Array.isArray(names)){
                throw $B.builtins.TypeError("argument 'names' should be a list, not '"+$B.get_class(names).__name__)
            }else{
                for(var i=0;i<names.length;i++){
                    try{window[names[i]]=eval(names[i])}
                    catch(err){throw $B.builtins.NameError("name '"+names[i]+"' not found in script "+script_url)}
                }
            }
        }
    },
    py2js: function(src, module_name){
        if (is_none(module_name)) {
            module_name = '__main__'+$B.UUID()
        }
        return $B.py2js(src,module_name,module_name,'__builtins__').to_js()
    },
    pyobj2jsobj:function(obj){ return $B.pyobj2jsobj(obj)},
    jsobj2pyobj:function(obj){ return $B.jsobj2pyobj(obj)},
    $$this: function(){return this}
    
  }
})(__BRYTHON__)
