﻿var PageIsFullyLoaded = false;

var QueryLoader = {
    /*
    * QueryLoader:           Preload full page content before display it.
    * Updated:               David Horák 
    * Contact:               david.horak@comtesys.cz
    * Date:                  14.03.2011
    *
    * Original Author:	     Gaya Kessler
    * Original Author URL:   http://www.gayadesign.com
    * 
    */


    items: new Array(),
    doneStatus: 0,
    doneNow: 0,
    ieLoadFixTime: 2000,
    ieTimeout: "",
    viewportHeight: 0,
    viewportWidth: 0,

    init: function () {
        
        // Don't support IE 6
        if (navigator.userAgent.match(/MSIE (\d+(?:\.\d+)+(?:b\d*)?)/) == "MSIE 6.0,6.0") {
            alert("Omlouváme se, ale váš internetový prohlížeč není podporován.");
            return false;
        }
        // User viewport size
        QueryLoader.viewportHeight = $(window).height();
        QueryLoader.viewportWidth = $(window).width();

        QueryLoader.spawnLoader();
        QueryLoader.getImages();
        QueryLoader.createPreloading();

        //help IE drown if it is trying to die :)
        QueryLoader.ieTimeout = setTimeout("QueryLoader.ieLoadFix()", QueryLoader.ieLoadFixTime);
    },

    ieLoadFix: function () {
        var ie = navigator.userAgent.match(/MSIE (\d+(?:\.\d+)+(?:b\d*)?)/);
        if (ie[0].match("MSIE")) {
            while ((100 / QueryLoader.doneStatus) * QueryLoader.doneNow < 100) {
                QueryLoader.imgCallback();
            }
        }
    },

    imgCallback: function () {
        QueryLoader.doneNow++;
        QueryLoader.animateLoader();
    },

    getImages: function () {
        
        var everything = $("body").find("*:not(script)").each(function () {
            var url = "";
            if ($(this).css("background-image") != "none") {
                url = $(this).css("background-image");
            } else if (typeof ($(this).attr("src")) != "undefined" && $(this).attr("tagName").toLowerCase() == "img") {
                url = $(this).attr("src");
            }

            url = url.replace("url(\"", "");
            url = url.replace("url(", "");
            url = url.replace("\")", "");
            url = url.replace(")", "");

            if (url.length > 0) {
                QueryLoader.items.push(url);
            }
        });
    },

    createPreloading: function () {
        
        QueryLoader.preloader = $("<div></div>").appendTo(QueryLoader.selectorPreload);
        $(QueryLoader.preloader).css({
            height: "0px",
            width: "0px",
            overflow: "hidden"
        });

        var length = QueryLoader.items.length;
        QueryLoader.doneStatus = length;

        for (var i = 0; i < length; i++) {
            var imgLoad = $("<img />");
            $(imgLoad).attr("src", QueryLoader.items[i]);
            $(imgLoad).unbind("load");
            $(imgLoad).bind("load", function () {
                QueryLoader.imgCallback();
            });
            $(imgLoad).appendTo($(QueryLoader.preloader));
        }
    },

    spawnLoader: function () {
        
        // Add Preloader bar
        $("body").append("<div id=\"preloader\">Načítám obsah.<div id=\"preloader_bar\"></div></div>");
        $("#preloader_bar").css("width", "0px");

        $("#preloader").css("top", ($("#header").height() + $("#logo").height() + 14) + "px");
        $("#preloader").css("left", ((QueryLoader.viewportWidth / 2) - 100) + "px");
        
    },

    animateLoader: function () {
        var perc = (100 / QueryLoader.doneStatus) * QueryLoader.doneNow;
        if (perc > 99) {
            $("#preloader_bar").stop(false, true).animate({ width: perc + "%" }, 500, function () { QueryLoader.doneLoad(); });
        } else {
            $("#preloader_bar").stop(false, true).animate({ width: perc + "%" }, 500);
        }
    },

    doneLoad: function () {
        
        // mark full load
        PageIsFullyLoaded = true;

        // prevent IE from calling the fix
        clearTimeout(QueryLoader.ieTimeout);
      
        // Leave preloading and Start display engine
        $("#preloader").fadeOut(300, function () {
            $("#preloader").remove();
            $("#menu").fadeIn(300);
            $("#menu_footer").fadeIn(300);
            MenuAndContent();         
        });

    }
}
