(function(_window){ 'use strict'; var _skykick = {}; var _loaded = false; var _configBackup = null; var _configMig = null; var _baseDomain = 'https://app.skykick.com'; if (typeof angular != 'undefined' && angular != null) { _skykick.$angular = angular; } ///////////////////////////////////////////////////////// // // Public methods // ///////////////////////////////////////////////////////// _skykick.backup = function(config){ // Validate the configuration properties _validateConfig(config); _configBackup = config; // If angular is already loaded, lets get the backup code if(_loaded){ _downloadProductCore('backup'); } return _skykick; } _skykick.migration = function(config){ _validateConfig(config); _configMig = config; // If angular is already loaded, lets get the migration code if(_loaded){ _downloadProductCore('migration'); } return _skykick; } _skykick.initialize = function (config) { console.log("The initialize method is deprecated. Please use the backup or migration methods instead.") if (config.product == 'migration') { _skykick.migration(config); } else if(config.product == 'backup') { _skykick.backup(config); } } /* * Name: getConfig * Description: Getter method that provides read access to the config object for use by the product libraries * */ _skykick.getBackupConfig = function(){ return _configBackup; } _skykick.getMigrationConfig = function(){ return _configMig; } _skykick.downloadScript = function (url, callback){ var script = document.createElement('script'); script.src = url; script.onload = callback; document.head.appendChild(script); } ///////////////////////////////////////////////////////// // // Private methods // ///////////////////////////////////////////////////////// /* * Name: downloadProductCore * Description: Adds a script tag to the page which downloads the correct product and version * */ function _downloadProductCore(product){ var revision = ''; if(product == 'backup') { var url = _baseDomain+'/js/syndication/syndication.backup' + revision + '.js'; }else{ var url = _baseDomain+'/js/syndication/syndication.migration' + revision + '.js'; } _skykick.downloadScript(url); } /* * Name: validateConfig * Description: Method for ensuring our config object is valid */ function _validateConfig(config){ if(config.subscriptionId == null){ throw new Error("Please provide a valid SubscriptionId"); } // Do more? } function getNGResource(){ try { // Try to get the ngResource angular.module('ngResource'); }catch(e) { skykick.downloadScript(_baseDomain+'/scripts/angular-resource/angular-resource.min.js', finish); } } function init(){ _skykick.downloadScript(_baseDomain+'/scripts/angular/angular.min.js', getNGResource); } function finish(){ _loaded = true; if(_configBackup) { _downloadProductCore('backup'); } if(_configMig) { _downloadProductCore('migration'); } } // Give global access to our APIs _window.skykick = _skykick; init(); }(window));