* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/*global ExercisePlanner, tizen, $, document*/
-var c = null, exercisePlanner = null, appService = null, ui = null;
-exercisePlanner = new ExercisePlanner();
-$(document).ready(exercisePlanner.init.bind(exercisePlanner));
+/*jslint devel: true*/
+/*global $, tizen, App */
+/**
+ * This file acts as a loader for the application and its dependencies
+ *
+ * First, the 'app.js' script is loaded .
+ * Then, scripts defined in 'app.requires' are loaded.
+ * Finally, the app is initialised - the app is instantiated ('app = new App()')
+ * and 'app.init()' is called.
+ */
+
+var app = null;
+
+(function () { // strict mode wrapper
+ 'use strict';
+
+ ({
+ /**
+ * Loader init - load the App constructor
+ */
+ init: function init() {
+ var self = this;
+ $.getScript('js/app.js').done(function onAppLoaded() {
+ // once the app is loaded, create the app object
+ // and load the libraries
+ app = new App();
+ self.loadLibs();
+ }).fail(this.onGetScriptError);
+ },
+ /**
+ * Load dependencies
+ */
+ loadLibs: function loadLibs() {
+ var loadedLibs = 0;
+ if ($.isArray(app.requires)) {
+ $.each(app.requires, function onLibLoaded(index, filename) {
+ $.getScript(filename).done(function () {
+ loadedLibs += 1;
+ if (loadedLibs >= app.requires.length) {
+ // All dependencies are loaded - initialise the app
+ app.init();
+ }
+ }).fail(function (e) {
+ console.error('Loading libs failed');
+ });
+ });
+ }
+ },
+ /**
+ * Handle ajax errors
+ */
+ onGetScriptError: function onGetScriptError(
+ e,
+ jqxhr,
+ setting,
+ exception
+ ) {
+ alert('An error occurred: ' + e.message);
+ }
+ }).init(); // run the loader
+
+}());