﻿var APP = new function() {
    this.pages = {};
    this.cachedImages = [];
    
    this.convertModuleToURL = function(moduleName) {
        var path = "/Manager/js/";
        var url = path + moduleName + ".js";
        return url;
    };
    
    this.include = function(modules) {
        if (!modules) return false;
        for (var i = 0; i < modules.length; i++) {
            if (modules[i]) {
                var newModule = document.createElement('script');
                newModule.src = this.convertModuleToURL(modules[i]);
                newModule.type = "text/javascript";
                document.getElementsByTagName('head')[0].appendChild(newModule);
            }
        }
    };
    
    this.preloadImages = function(images) {
        var numOfImages = images.length;
        for (var i = numOfImages; i--;) {
            var cachedImage = document.createElement('img');
            cachedImage.src = images[i];
            this.cachedImages.push(cachedImage);
        }
    }
    
    this.ajax = new function() {
        this.service = {};
        var numberOfRequests = 0;
        var $ajaxNotifier = $("#ajaxNotifier");
        var $notifierIcon =  $("#notifierIcon");
        var $notifierMessage = $("#notifierMessage");
        
        this.start = function(message) {
            $notifierMessage.html(message);
            $notifierIcon.attr('src', '/Manager/Images/loading.gif');
            $ajaxNotifier.slideDown('slow');
            numberOfRequests++;
        };
        
        this.success = function(message) {
            numberOfRequests--;
            if (numberOfRequests <= 0) {
                $notifierMessage.html(message);
                $notifierIcon.attr('src', '/Manager/Images/checkmark.png');
                $ajaxNotifier.fadeOut('slow');
            }
        };
        
        this.failed = function(message) {
            numberOfRequests--;
            alert(message);
        };
    };
};