// Inspired by: http://www.phpied.com/preload-cssjavascript-without-execution/  http://www.devcomments.com/Preload-CSS-JavaScript-without-execution-i25870.htm
(function(window, document, undefined) {

var sites = [],
	afterOnloadWait = 3000, nbConcurrentPreloader = 3, concurrentPreloaderStartInterval = 200, preloadsInterval = 1500, beforeEndPreloadWait = 5000;

// Preloading priority order is: all JSs, all CSSs, all images, each type is preloaded in the order of declaration of its folder.
sites[sites.length] = {
	url: "http://www.mespremierssignes.com/",
	folders: [{
				path: "temporaire/images/les-cartes/",
				images: ["cartes.jpg"]
			}]
		};

var isStarted = false,
	itemsToLoad = [],
	Elem_object_preload,
	nbConcurrentPreloaderEnded = 0,
	isIE = navigator.appName.indexOf("Microsoft") === 0,
	doNothing = function(){};

var startPreload = function () {
	if (isStarted) return;
	isStarted = true;
	if (window.removeEventListener) window.removeEventListener("load", startPreload, false);
	else if (window.detachEvent) window.detachEvent("onload", startPreload);
	startPreload = doNothing;
	
	if (!isIE) {
		Elem_object_preload = document.createElement("object");
		Elem_object_preload.width = Elem_object_preload.height = 0;
		document.body.appendChild(Elem_object_preload);
	}
	
	var images = [], CSSs = [], JSs = [], s, f, i;
	for(s=0; s<sites.length; s++)
		for(f=0; f<sites[s].folders.length; f++) {
			if (sites[s].folders[f].images) for(i=0; i<sites[s].folders[f].images.length; i++)
				images[images.length] = {type: "image", path: sites[s].url + sites[s].folders[f].path + sites[s].folders[f].images[i]};
			if (sites[s].folders[f].CSSs) for(i=0; i<sites[s].folders[f].CSSs.length; i++)
				CSSs[CSSs.length] = {type: "css", path: sites[s].url + sites[s].folders[f].path + sites[s].folders[f].CSSs[i]};
			if (sites[s].folders[f].JSs) for(i=0; i<sites[s].folders[f].JSs.length; i++)
				JSs[JSs.length] = {type: "js", path: sites[s].url + sites[s].folders[f].path + sites[s].folders[f].JSs[i]};
		}
	itemsToLoad = JSs.concat(CSSs, images).reverse();
	
	for(i=0; i<nbConcurrentPreloader; i++) window.setTimeout(preloadNextItem, afterOnloadWait + i*concurrentPreloaderStartInterval);
	sites = undefined;
};

var preloadNextItem = function() {
	var item = itemsToLoad.pop();
	if (!item) {
		if(++nbConcurrentPreloaderEnded == nbConcurrentPreloader) window.setTimeout(endPreload, beforeEndPreloadWait);
		return;
	}
	if (isIE) new Image().src = item.path;
	else {
		var o = document.createElement("object");
		o.width = o.height = 0;
		o.data = item.path;
		Elem_object_preload.appendChild(o);
	}
	window.setTimeout(preloadNextItem, preloadsInterval);
};

var endPreload = function() {
	startPreload = preloadNextItem = endPreload = doNothing;
	if (!isIE) document.body.removeChild(Elem_object_preload);
	itemsToLoad = undefined;
};

if (window.addEventListener) window.addEventListener("load", startPreload, false);
else if (window.attachEvent) window.attachEvent("onload", startPreload);
else {
	if(typeof window.onload != "function") window.onload = startPreload;
	else {
		var oldOnload = window.onload;
		window.onload = function() { oldOnload(); startPreload(); }
	}
}

})(window, document)
