﻿(function () {
    BootStrapper = {
        cuedFunctions: new Array(),

        CueFunction: function (value) {
            ///	<summary>
            ///		Adds a function to the cue
            ///	</summary>
            ///	<param name="value" type="Function">
            ///		The function to execute
            ///	</param>
            BootStrapper.cuedFunctions.push(value);
        },

        RunCuedFunctions: function () {
            for (i = 0; i < BootStrapper.cuedFunctions.length; i++) {
                BootStrapper.cuedFunctions[i]();
                delete BootStrapper.cuedFunctions[i];
            }
        },

        LoadScript: function (src) {
            ///	<summary>
            ///		Dynamicly loads a script file
            ///	</summary>
            ///	<param name="src" type="String">
            ///		The file to load:
            ///     ie. BootStrapper.LoadScript("/common/js/all-min.js");		
            ///	</param>        
            if (ReloadFile("script", src))
                return;

            var dom = document.createElement("script");

            dom.setAttribute("type", "text/javascript");
            dom.setAttribute("charset", "utf-8");
            dom.setAttribute("src", src);

            return document.body.appendChild(dom);
        },

        LoadStyle: function (src) {
            ///	<summary>
            ///		Dynamicly loads a style sheet
            ///	</summary>
            ///	<param name="src" type="String">
            ///		The file to load:
            ///     ie. BootStrapper.LoadStyle("/content/images/design.css");		
            ///	</param>          
            if (ReloadFile("link", src))
                return;

            var dom = document.createElement("link");

            dom.setAttribute("type", "text/css");
            dom.setAttribute("rel", "stylesheet");
            dom.setAttribute("charset", "utf-8");
            dom.setAttribute("href", src);

            document.body.appendChild(dom);
        },

        ReloadFile: function (type, src) {
            if (typeof (src) != "string")
                return true;

            var files = document.getElementsByTagName(type);

            for (i = 0; i < files.length; i++) {
                switch (type) {
                    case "script":
                    case "img":
                        if (files[i].src == src) {
                            files[i].src = src + "?" + Math.random();
                            return true;
                        }
                        break;

                    case "link":
                        if (files[i].href == src) {
                            files[i].href = src + "?" + Math.random();
                            return true;
                        }
                        break;
                }
            }

            return false;
        }
    };
} ());


