+'use strict';
+
 # ES 5 compability functions
 Object.keys or= (o) -> name for own name of o
 Array.isArray or= (a) -> a.push is Array.prototype.push and a.length?

  root.molo.delete = (name) ->
    delete cache[name] if cache[name]
    delete queue[name] if queue[name]

  # Overwrite module only if it hasn't been defined
  root.module or= moloFunc

  # Compability to official definition
  root.define = (name, deps, defines) -> 
    moloFunc name, 
      require: deps, 
      define: defines

  # Some general definitions
  root.define.amd =
    jQuery: true
    cacheDeps = []

    for i in deps
      # Need to check for hasOwnProperty
      # Checking for cache[i] is not strict enough
      # because a module could have undefined, null, 0 or an empty string
      # as its export value
      if cache.hasOwnProperty(i)
        cacheDeps.push cache[i]
      else
        if root.molo.scriptLoader
          if isJavaScriptFile(root.molo.paths[name])
            # If the path is complete (e.g. 'js/lib/mymodule.js') take that as a path
            scriptPath = root.molo.paths[name]
