
/*
// JavaScript Library lowres_preload.js ("Funktionen für Unterstützung des Lowres-Preload - Features")
// Created by C. Gensler, c_gensler@icaros.de, (C) 2005-2010 by I.C.A.R.O.S. GmbH, Hamburg/Ostheim, Germany, http://www.icaros.de/ and Alcan Composites
// This script may not be used without author's written permission!
*/
/* ATTN: only works on flat framesets with only one frame level - nested framesets are unsupported currently! */
var handle_bgimages = true;
top.document.swapdelay = false;
top.document.onloadtimer = 0;
var onloadrepeat = 20;
var onloadslowrepeat = 10;
var onloadmilliseconds = 200;
var onloadfunc = "doOnload()";

function lowresPreloadDocLoaded(frame,formname,formclass) {
	window.docIsLoaded = true;
	if ((top==frame) 								/* loaded complete frameset or subframe outside frameset */
	   || (top.doneLowresPreload && ! frame.doneLowresPreload)) 		/* manually reloaded single frame within frameset */
	   init_onload_timer(true);
};
function init_onload_timer(isFirst) {
	//if (top.document.onloadtimer == 0 && window == window.top) {
	var timeout = (isFirst)?50:((onloadrepeat>onloadslowrepeat)?onloadmilliseconds:2*onloadmilliseconds);
	if (top.document.onloadtimer == 0) {
		top.document.onloadtimer = setTimeout(onloadfunc,timeout);
		//alert("timer set in window '"+window.name+"'");
	};
};
function doOnload() {
	/*
	When all documents in frameset are loaded, this is called and initiates a caching of all needed highres images.
	For each needed image a second, hidden image is created by DOM, loading the highres images. All these images
	do have a onload event that is fired when ready. This handler then replaces the src tag of the lowres image.
	So flickering is minimized.
	 */
	clearTimeout(top.document.onloadtimer);
	top.document.onloadtimer = 0;
	top.document.imagecache = new Array;
	var cache = top.document.imagecache;
	var allLoaded = true;
	var fr = new Array();
	var supported = false;
	var loaded = false;
	var done = false;
	var b;
	var bs;
	var ss;
	var im;
	var cacheimg;
	var doc;
	var f;
	var i;
	var j;
	fr[0]=window;
	for (i=0;i<window.top.frames.length;i++) fr[i+1]=window.top.frames[i];
	//var txt="frame status"+c_crlf;
	for (i=0;i<fr.length;i++) {
		//alert(i+" / "+fr[i].name+" / "+fr[i].window.docIsLoaded);
		supported = fr[i].supportLowresPreload;
		loaded = fr[i].docIsLoaded;
		//txt+="frame #"+i+", name="+fr[i].name+", supported="+supported+", loaded="+loaded+c_crlf
		if ( supported === true && loaded === false) {
			allLoaded=false;
		};
	};
	//txt+="allLoaded="+allLoaded+c_crlf;
	//alert(txt);
	if (!allLoaded) {
		if (--onloadrepeat>0) {
			init_onload_timer(false);
		} else {
			allLoaded=true;		// at last do it, even if not all loaded (in case of a bug or something else ...)
		};
	};
	if (allLoaded) {
		//alert("all loaded, now modifying images ...");
		//document.write(objProfile(o));
		for (i=0;i<fr.length;i++) {
			done = fr[i].doneLowresPreload;
			cacheimg=cache.length;
			if (!done) {
				doc=fr[i].document;
				im=doc.images;
				for (j=0;j<im.length;j++) if (im[j].src.indexOf("_lowres")>-1) {
					cache[++cacheimg]=new Array;
					cache[cacheimg][0]=im[j];
					cache[cacheimg][1]=new Image();
					cache[cacheimg][1].onload=new Function("highresImageLoaded(false,"+cacheimg+")");
					cache[cacheimg][1].src=substituteLowresImages(fr[i].window,im[j].src);
				};
				if (handle_bgimages) {
					b = doc.getElementsByTagName("body")
					if (b) if (b.length>0) {
						bs=b[0].style;
						if (bs) if (bs.backgroundImage.indexOf("_lowres")>-1) {
							ss=bs.backgroundImage.split("_lowres.").join(".");
							cache[++cacheimg]=new Array;
							cache[cacheimg][0]=bs;
							cache[cacheimg][1]=new Image();
							cache[cacheimg][1].onload=new Function("highresImageLoaded(true,"+cacheimg+")");
							cache[cacheimg][1].src=ss.substring(4,ss.length-1); /* remove "url(..)" around src string */
						};
					};
				};
				//fr[i].window.status="";
				fr[i].doneLowresPreload=true;
			};
		};
		top.document.swapdelay=false;
		top.window.status="";
	};
};
function substituteLowresImages(win,src) {
	// uses Array, created in LotusScript "CreateTableFields" as "window.lowresReplacementArray = new Array(k)"
	var s1 = "";
	var s2 = "";
	if (win.lowresReplacementSupported === true) {
		for (var i=0;i<win.lowresReplacementCount;i++) {
			s1=win.lowresReplacementArray[i][0];
			s2=win.lowresReplacementArray[i][1];
			if (s1!="" && s2!="") src=src.split(s1).join(s2);
		};
	};
	src=src.split("_lowres.").join(".");
	return src;
};
function highresImageLoaded(bg,id) {
	/* called when highres image is loaded, to replace lowres image by highres image */
	var cache = top.document.imagecache;
	if (bg) {
		cache[id][0].backgroundImage="url("+cache[id][1].src+")";
	} else {
		cache[id][0].src=cache[id][1].src;
	};
};
// End of JavaScript Library lowres_preload.js ("Funktionen für Unterstützung des Lowres-Preload - Features")
