(function() {
    //special routes
    var routes = {
        '#faire-le-quiz': 'quiz-assets.lst',
        "#appli"        : 'appli-assets.lst',
        ''              : 'assets.lst'
    }
    var assets_loaded = {};
    var wrapper = document.getElementById('global-wrapper');
    var loading = document.getElementById('loading');
    var value = $('.value', loading)[0];
    var inner = $('.progress-inner', loading)[0];

    var base = "/layout/frontoffice/";
    //var base = "";

    var toload = [routes['']]; // load generate assets is the default   
    var hash = window.location.hash;
    if(routes[hash]) toload.unshift(routes[hash]);

    function loadAssets (url) {
        $.ajax(base + url, {
            dataFilter: filterLines,
            error: reveal('error downloading assets'),
            success: load,
            cache: true
        })
    }

    loadAssets(toload.shift());

    //setTimeout("reveal('timeout')", 60000); // override after ONE MINUTE

    function filterLines (data, type) {
        var split = data.split(/\r\n|\n|\r/);
        if (split[split.length-1] === '') {
            split.pop()
        }
        for (var i = 0; i < split.length; ++i) {
            var line = split[i].split(/\s+/);
            file = {
                filename: line[0],
                size: parseInt(line[1])
            }
            split[i] = file;
        };
        return split;
    }

    var revealed = false;
    function reveal (cause) {
        return function() {
            if(revealed) return;
            revealed = true;
            $(wrapper).removeClass('loading');
            
            if ($.browser.msie  && parseInt($.browser.version) <= 9  && parseInt($.browser.version) >= 7) {
              setTimeout('window.Artisanat.ready();', 1000);
            } else {
              window.Artisanat.ready();
            }
            
            //if(toload[0]) loadAssets(toload.shift());
        }
    }

    function load (data, textStatus, xhr) {
        var loaded = 0;
        var total = 0;
        for (var i = 0; i < data.length; ++i) {
            total += data[i].size;
        }
        
        function onload (size) {
            return function() {
                loaded += size;
                var percent = (loaded/total)*100;
                percent = Math.floor(percent);
                value.innerHTML = percent;
                inner.style.width = ''+percent+'%';
                if(loaded < total) return;
                reveal('finished loading')();
            }
        }


        for (var i = 0; i < data.length; ++i) {
            var src = data[i].filename;
            var size = data[i].size;
            if(!assets_loaded[src])
                $.ajax(src, {complete: onload(size)});
            assets_loaded[src] = true;
        }
        if(data.length == 0) reveal("nothing to load")();
    }
})()

