// page init 1.1
// requires functions 1.6, dom 3.7, tableMagic 1.0, listMagic 3.0, ajax 0.2

var page = {
	img_url: null, // absolute URL of images directory
	elements: new Array(),  // all elements processed by javascript
	tags: {},      // all tags processed by javascript
	
	initContent: function(block) {
		// runs on each block loaded to page (including page itself)
		
		if (typeof block == "undefined")
			block = document;
		
		var i, j, k; // integer iterator
		var src, alt;
		var newWindowIcon = page.img_url + "icons/url.gif";
		var detailLinkIcon = page.img_url + "icons/arrow.gif";
		
		// init spans
		try {
			var spans = block.getElementsByTagName("span");
			page.tags["span"] = true;
			for (i = 0; i < spans.length; i++) {
				page.elements[page.elements.length] = spans[i];
				// detect spans replaced by images
				src = spans[i].getAttribute("src");
				if (src != null) {
					alt = spans[i].innerHTML;
					alt = alt.removeInlineHtml();
					replaceByImage(spans[i], src, alt);
				}
			}
		} catch(ex) { xcp.warn(ex, 'initContent spans'); }
		
		// init tables
		try {
			var tables = block.getElementsByTagName("table");
			page.tags["table"] = true;
			for (i = 0; i < tables.length; i++) {
				page.elements[page.elements.length] = tables[i];
				// init tableMagic
				tableMagic.assignRows(tables[i], new Array("odd", "even"));
				tableMagic.addRowCursor(tables[i], "activeRow");
			}
		} catch(ex) { xcp.warn(ex, 'initContent tables'); }
		
		// init definition lists
		try {
			var dls = block.getElementsByTagName("dl");
			page.tags["dl"] = true;
			for (i = 0; i < dls.length; i++) {
				page.elements[page.elements.length] = dls[i];
				// init taber
				if (cls.has(dls[i], "tabs") || cls.has(dls[i], "tabGroup"))
					taber.init(dls[i]);
			}
		} catch(ex) { xcp.warn(ex, 'initContent definition lists'); }
		
		// init forms
		try {
			var frm = block.getElementsByTagName("form");
			page.tags["form"] = true;
			for (i = 0; i < frm.length; i++) {
				// init formChecker
				page.elements[page.elements.length] = frm[i];
				formChecker.add(frm[i], form_ruleSet);
				evt.add(frm[i], "submit", jax.form.submit);
			}
		} catch(ex) { xcp.warn(ex, 'initContent forms'); }
		
		// init gallery language specific properties
		gallery.nav.prevBtn.text = "předchozí";
		gallery.nav.nextBtn.text = "další";
		gallery.nav.listBtn.text = "galerie";

		// init gallery
		try {
			if (typeof gallery != "undefined")
				gallery.init();
		} catch(ex) { xcp.warn(ex, 'initContent forms'); }
		
		return true;
	},
	
	init: function() {
		// runs only once at every page
		log.init("messages");
		xcp.init();
		
		var i; // integer iterator
		
		// init meta tags
		try {
			var metas = document.getElementsByTagName("meta");
			for (i = 0; i < metas.length; i++) {
				if (metas[i].name && metas[i].name == "img_url") {
					page.img_url = metas[i].content;
				}
			}
		} catch(ex) { xcp.err(ex, 'initContent tables'); }
		
		if (typeof jax != "undefined") {
			// application uses JAX engine
			jax.block.initContent = page.initContent;
			jax.init();
		} else {
			// standard REQ/RES application
			page.initContent();
		}
		
		return true;
	},
	
	done: function() {
		evt.flush();
	}
}

evt.add(window, "load", page.init);
evt.add(window, "unload", page.done);


