/* ----------------------------------------------------------------------------
 *  JavaScript Babble v1.1 (c) May 2001, Roman Nováček
 * ----------------------------------------------------------------------------
 *  Popis: Skript simuluje pohyb bublin ve vodě na pozadí celého dokumentu.
 * ----------------------------------------------------------------------------
 */

// zjištění verze prohlížeče
var isNS = navigator.appName == "Netscape";
var ver = parseFloat(navigator.appVersion);

// základní řídicí proměnné pro pohyb bublinek
var max_bubbles = 50;  // max. počet bublin
var num_bubbles = 0;  // aktuální počet bublin
var new_bubbles = 0;  // počet nových bublin
var num_images = 6;  // počet obrázků bublin
var max_speed = 3;  // max. rychlost pohybu bubliny [px/f]
var anim_period = 67;  // rychlost animace pohybu bublin [ms]
var create_period = 750;  // doba do náhodného vygenerování nové bubliny [ms]
var doc_w, doc_h;  // rozměry dokumentu v pixelech (modifikuje funkce win_resize())

// datová struktura na uložení pozic a pohybů všech bublin
var bub_tab = new Array();

// struktura (objekt) bublina pro vytváření pole
function bubble(ref) {
	this.ref = ref;
	this.x = 0;
	this.y = 0;
	this.dy = 0;
	this.act = false;
}

// funkce pro převod celého čísla na n-místný textový řetězec doplněný zleva nulami
function inttostr(x, num) {
	var tmp = "" + x;
	while (tmp.length < num)
		tmp = "0" + tmp;
	return tmp;
}

// funkce na náhodného vygenerování celého čísla z rozsahu 0 až x-1
function rand(x) {
	return (Math.round(Math.random() * (x - 1)));
}

// funkce získá velikost documentu
function win_resize() {
	if (isNS) {
	  doc_w = self.innerWidth;
	  doc_h = self.innerHeight;
	}
	else {
		doc_w = document.body.scrollWidth - 16;
		doc_h = document.body.scrollHeight;
	}
	doc_w -= 15;
	doc_h -= 15;
}

// přidání nové bubliny
function add_bubble() {
	new_bubbles++;	
	setTimeout("add_bubble()", create_period);
}

// pohyb bublin
function move_bubbles() {
	var i, bubRef;
	
	for (i = 0; i < max_bubbles; i++) {
		bubRef = bub_tab[i].ref;  // odkaz na vrstvu s bublinou
		if (bub_tab[i].act) {  // když je bublina aktivní, bude se pohybovat
			if ((bub_tab[i].y -= bub_tab[i].dy) < 0 || bub_tab[i].y >= doc_h) {  // když zmizela z výhledu, zruší se (bude neaktivní)
				bub_tab[i].act = false;
				bubRef.visibility = "hidden";
				bubRef.top = 0;
				num_bubbles--;
			}
			else {  // bublina se pohybuje
				bubRef.top = bub_tab[i].y;
			}
		}
		else {  // bublina není aktivní, ale možná vznikne nová
			if (new_bubbles > 0) {  // má vzniknout nová bublina?
				// počáteční hodnoty parametrů bubliny
				bub_tab[i].x = rand(doc_w + 1);
				bub_tab[i].y = doc_h;
				bub_tab[i].dy = rand(max_speed) + 1;
				bub_tab[i].act = true;
				// nastavení vlastností vrstvy s bublinou
				bubRef.left = bub_tab[i].x;
				bubRef.top = bub_tab[i].y;
				bubRef.visibility = "visible";
				// úprava počítadel
				num_bubbles++;
				new_bubbles--;
			}
		}
	}
	
	setTimeout("move_bubbles()", anim_period);
}

// počáteční inicializace
function init_bubbles() {
	var i, tmp, rnd, bubRef;
	
	for (i = 0; i < max_bubbles; i++) {
		tmp = inttostr(i + 1, 3);
		rnd = inttostr(rand(num_images) + 1, 2);
		if (isNS) {
			document.write("<layer name=bub" + tmp + " z-index=-1 visibility=hide><img src=\"images/bubble" + rnd + ".gif\"></layer>");
		}	else {
			document.write("<div id=bub" + tmp + " class=bubble><img src=\"images/bubble" + rnd + ".gif\"></div>");
		}
		bubRef = (isNS) ? document.layers["bub" + tmp] : document.all["bub" + tmp].style;
		bub_tab[i] = new bubble(bubRef);
	}

	setTimeout("add_bubble()", create_period);
	setTimeout("move_bubbles()", anim_period);
}

if (ver >= 4.0) {
	onresize = win_resize;
	win_resize();
	init_bubbles();
}

