/*---------------------------------------------*/
/*              johno@host.sk 2002             */
/*---------------------------------------------*/


// returns inner window height & width
// wow! i never knew that this works.
// works in mozilla 1.1+, opera 7, IE 5+
//
function winW(){ return document.getElementsByTagName("html")[0].offsetWidth; }
function winH(){ return document.getElementsByTagName("html")[0].offsetHeight; }

// center layout if possible
//
function centerIt() {
	width  = template.offsetWidth;
	height = template.offsetHeight;

	if (winW() > width) { 
		template.style.left = (winW() - width) / 2 + "px";
	} else template.style.left =  "0px";

	if (winH() > height) { 
		template.style.top = (winH() - height) / 2 + "px";
	} else template.style.top =  "0px";

	template.headnav.style.left = (winW() - template.headnav.offsetWidth) / 2 + "px";
	template.footnav.style.left = (winW() - template.footnav.offsetWidth) / 2 + "px";

	template.headnav.style.top = parseInt(template.style.top) - template.headnav.offsetHeight + "px";
	template.footnav.style.top = parseInt(template.style.top) + height + "px";		
}                                

// sets columns content
// 
function setColumns(first) {
	for (i = 0; i < template.cols.length; i++)
		if (i+first < Columns.cols.length) template.cols[i].innerHTML = Columns.cols[i+first];
		else template.cols[i].innerHTML = "";
}


// feed elements initialization
//
function feedInit() {
	feed            = document.getElementById("feed");
	feed.content    = fixInnerHTML(document.getElementById("feedContent").innerHTML);
	feed.heading    = document.getElementById("feedHeader").getElementsByTagName("h1")[0].innerHTML;
	feed.subheading = document.getElementById("feedHeader").getElementsByTagName("h2")[0].innerHTML;
	feed.date       = document.getElementById("feedHeader").getElementsByTagName("p")[0].innerHTML;
	feed.prev       = document.getElementById("previousLink").href;
	feed.next       = document.getElementById("nextLink").href;
}

// initialize template elements
//
function templateInit() {
	template            = document.getElementById("template");
	template.heading    = document.getElementById("templateHeading");
	template.subheading = document.getElementById("templateSubHeading");
	template.date       = document.getElementById("templateDate");
	template.prev       = document.getElementById("templatePreviousLink");
	template.next       = document.getElementById("templateNextLink");

	// not contained in template element
	template.headnav    = document.getElementById("templateHeaderNav"); 
	template.footnav    = document.getElementById("templateFooterNav"); 

	// generate column divs array ( id == "templateColumn..." )
	template.cols = new Array();
	j = 0;
	for (i = 0; elm = template.getElementsByTagName("div")[i]; i++) {
		if (elm.id.indexOf("templateColumn") == 0) template.cols[j++] = elm;
	}
}

// previous&next link onclick event functions
//
clickNext = function(event) {
	if (firstPage + template.cols.length < Columns.cols.length) {
		event = fixE(event);
		firstPage += template.cols.length;
		setColumns(firstPage);
		template.next.innerHTML = (firstPage + template.cols.length < Columns.cols.length) ? "nasledujúca strana" : "nasledujúci článok";
		template.prev.innerHTML = (firstPage - template.cols.length >= 0) ? "predchádzajúca strana" : "predchádzajúci článok";

		// browser branching required -> DAMN!
		if (isIE()) event.returnValue = false;
			else event.preventDefault();

		// remove focus because it's ugly !
		template.next.blur();

		return false;
	} else return true;
}

clickPrevious = function(event){
	// if this first page of text is not displayed display previous xxx columns
	if (firstPage - template.cols.length >= 0) {
		event = fixE(event);
		firstPage -= template.cols.length;
		setColumns(firstPage);
		template.next.innerHTML = (firstPage + template.cols.length < Columns.cols.length) ? "nasledujúca strana" : "nasledujúci článok";
		template.prev.innerHTML = (firstPage - template.cols.length >= 0) ? "predchádzajúca strana" : "predchádzajúci článok";
		
		// browser branching required -> DAMN!
		if (isIE()) event.returnValue = false;
			else event.preventDefault();

		// remove focus because it's ugly !
		template.prev.blur();

		return false;
	} else return true;
}

function showNav() {
		template.headnav.style.display = "block";
		template.footnav.style.display = "block";
}

// startup initializations
//
function init() {
	// frameburster (www.fczbkk.com)
	if (top != self) top.location = self.location;		
	
	// additional navigation bar for IE
	initNavigationBar();

	// stop here when cookie == "no"
	if (readCookie("JSColumns") == null) saveCookie("JSColumns","yes",365);
		else if (readCookie("JSColumns") == "no") return false;


       	// LAYOUT GENERATION STARTS HERE
	// -----------------------------
	
	// extract feed
	feedInit();

	// hide raw content
	feed.style.display = "none";
	document.getElementById("navigation").style.display = "none";
	document.getElementById("footer").style.display = "none";

	// layout template elements initialization
	templateInit();

	// creates divSizer element. Required for column text fragments calculation (lib_columns.js) 	
	sizer = document.createElement("div");
	sizer.id = "divSizer";
	document.getElementsByTagName("body")[0].appendChild(sizer);

	// create column template element (column sizes in CSS stylesheet)
	column_temp = document.createElement("div");
	column_temp.id = "divColumnTemplate";
	document.getElementsByTagName("body")[0].appendChild(column_temp);
		
	// create text fragments that fit in columns
	Columns.splitText(feed.content, column_temp.offsetWidth, column_temp.offsetHeight);

	// hide sizer&column template
	document.getElementById("divSizer").style.display = "none";
	document.getElementById("divColumnTemplate").style.display = "none";

	// setup navigation & footer
	template.headnav.innerHTML = document.getElementById("navigation").innerHTML;
	template.footnav.innerHTML = document.getElementById("footer").innerHTML;
	
	// setup links
	template.next.href = feed.next;
	template.prev.href = feed.prev;
	template.next.innerHTML = (firstPage + template.cols.length < Columns.cols.length) ? "nasledujúca strana" : "nasledujúci článok";
	template.prev.innerHTML = (firstPage - template.cols.length >= 0) ? "predchádzajúca strana" : "predchádzajúci článok";

	// attach events on scrolling links
	template.next.event = addEvent(template.next, "click", clickNext);
	template.prev.event = addEvent(template.prev, "click", clickPrevious);

	// apply content
	setColumns(firstPage);		
	template.heading.innerHTML = feed.heading;
	template.subheading.innerHTML = feed.subheading;
	template.date.innerHTML =  feed.date;

	// hide loader if present
	if (loader = document.getElementById("preloader")) loader.style.display = "none";

	// show layout
	template.style.display = "block";

	// center layout
	centerIt();
	
	showNav();

	addEvent(window, "resize", centerIt);  // recalculate position on window resize
	initExternalLinks();
}


// global variables
var template;
var firstPage = 0;
var feed;

// event attachments
//
addEvent(window, "load", init);
