take a spin through this. I'll do some basic cleanups on container.js to clean up some of the chaff for when you run gjslint..
thanks! http://codereview.appspot.com/4536097/diff/1/features/src/main/javascript/features/container/container.js File features/src/main/javascript/features/container/container.js (right): http://codereview.appspot.com/4536097/diff/1/features/src/main/javascript/features/container/container.js#newcode35 features/src/main/javascript/features/container/container.js:35: * @type {Array} array of callback objects, all of which have an "preloaded", "navigated", "closed" and "unloaded" methods. Array of what? I think you want functions that take optional objects. http://codereview.appspot.com/4536097/diff/1/features/src/main/javascript/features/container/container.js#newcode38 features/src/main/javascript/features/container/container.js:38: this.gadgetLifecycleCallbacks_ = []; style: newline between statement/comment http://codereview.appspot.com/4536097/diff/1/features/src/main/javascript/features/container/container.js#newcode182 features/src/main/javascript/features/container/container.js:182: var selfSite=site; style: spaces around =, != here and throughout http://codereview.appspot.com/4536097/diff/1/features/src/main/javascript/features/container/container.js#newcode664 features/src/main/javascript/features/container/container.js:664: * @param {methodName} name of the callback method to be called. methodName is not a type. I think you want {string} http://codereview.appspot.com/4536097/diff/1/features/src/main/javascript/features/container/container.js#newcode665 features/src/main/javascript/features/container/container.js:665: * @param {data} data to be passed to the callback method data is not a type. Maybe {Object} is data optional? If it is rename to opt_data and use {Object?} See http://code.google.com/closure/compiler/docs/js-for-compiler.html http://codereview.appspot.com/4536097/
