init();

var KALKULATOR = false; // vrijednost ce biti prepisana samo u skripti za kalkulator

// Pocetno podesavanja elemenata stranice
function init() {
	// Ako je DOM spreman za koristenje
	if (init.dom) {
		obradiNavigaciju();
		if (KALKULATOR) {
			zKalk = new ZekatKalkulator();
			zKalk.provjeriCookies();
		}
	} else {
		// Ako se kompletna stranica ucita u medjuvremenu
		addEvent(window, "load", provjeriDOM);
		
		// Mozda je DOM spreman i prije ucitavanja stranice,
		// provjeravamo svakih 13 milisekundi
		init.timer = setInterval(provjeriDOM, 13);
	}
}

// Provjeravamo je li DOM spreman za koristenje
function provjeriDOM() {
	// Ako smo vec ustanovili da je DOM spreman
	if (init.dom) {
		init();
		return false;
	}
	// Provjeravamo da li su dostupne potrebne funkcije DOM-a
	if (document 
		&& document.getElementsByTagName 
		&& document.getElementById 
		&& document.body
	) {
		// Kad budu spremne, brisemo interval i oznacavamo da je DOM spreman
		clearInterval(init.timer);
		init.timer = null;
		init.dom = true;
		// Na kraju jos samo opet pozovemo init
		init();
	}
}

// Dodajemo animaciju linkovima navigacije
function obradiNavigaciju() {
	var nav = document.getElementById("navigacija");
	var linkovi = nav.getElementsByTagName('li');
	
	for (var i = 0; i < linkovi.length; i++) {
		if (!linkovi[i].className) {
			addEvent(linkovi[i], 'mouseover', navMouseover);
			addEvent(linkovi[i], 'click', navClick);
			addEvent(linkovi[i], 'mouseout', navMouseout);		
		}
	}
}

// Animacija boje pozadine elemenata navigacije
function navMouseover(e) {
	this.style.cursor = "pointer";
	if (e.relatedTarget != this.parentNode) {
		doBGFade(this, [237,231,209], [249,246,238], "rgb(249, 246, 238)", 15, 10, 1);
	}
	e.preventDefault();
	return false;
}
function navMouseout(e) {
	this.style.cursor = "default";
	if (this.bgFadeInt) {
		window.clearInterval(this.bgFadeInt);
	}
	if (e.relatedTarget != this.parentNode) {
		this.style.backgroundColor = "#ede7d1";
	}
//	var dijete = this.firstChild;
//	do {
//		addEvent(dijete, 'mouseout', function(e) {  });
//		dijete = dijete.nextSibling;
//	} while (dijete);
	this.gotov = false;
	return false;
}
// Click handler za link
function navClick(e) {
	var a = this.getElementsByTagName("a")[0];
	window.location = a.href;
}

//FleXiFade Lite By Hesido
function doBGFade(elem,startRGB,endRGB,finalColor,steps,intervals,powr){
//FleXiFade Lite v1.0
//BG Fader by www.hesido.com
//slightly modified by Damir Meskovic
if (elem.bgFadeInt) window.clearInterval(elem.bgFadeInt);
var actStep = 0;
elem.bgFadeInt = window.setInterval(
	function() {
		elem.style.backgroundColor = "rgb("+
			easeInOut(startRGB[0],endRGB[0],steps,actStep,powr)+","+
			easeInOut(startRGB[1],endRGB[1],steps,actStep,powr)+","+
			easeInOut(startRGB[2],endRGB[2],steps,actStep,powr)+")";
		actStep++;
		if (actStep > steps) {
		elem.style.backgroundColor = finalColor;
		elem.uToku = false;
		elem.gotov = true; // znak da je animacija gotova
		window.clearInterval(elem.bgFadeInt);
		}
	}
	,intervals)
}

function easeInOut(minValue,maxValue,totalSteps,actualStep,powr){
//Generic Animation Step Value Generator By www.hesido.com
var delta = maxValue - minValue;
var stepp = minValue+(Math.pow(((1 / totalSteps)*actualStep),powr)*delta);
return Math.ceil(stepp)
}


// addEvent/removeEvent written by Dean Edwards, 2005
// with input from Tino Zijdel
// http://dean.edwards.name/weblog/2005/10/add-event/

function addEvent(element, type, handler) {
	// assign each event handler a unique ID
	if (!handler.$$guid) {
		handler.$$guid = addEvent.guid++;
	}
	
	// create a hash table of event types for the element
	if (!element.events) {
		element.events = {};
		element.events[type] = false;
	}
	
	// create a hash table of event handlers for each element/event pairrrrrrrrr
	var handlers = null;
	if (element.events && element.events[type]) {
		handlers = element.events[type];
	}
	if (!handlers) {
		handlers = element.events[type] = {};
		
		// store the existing event handler (if there is one)
		if (element["on" + type]) {
			handlers[0] = element["on" + type];
		}
	}
	
	// store the event handler in the hash table
	handlers[handler.$$guid] = handler;
	
	// assign a global event handler to do all the work
	element["on" + type] = handleEvent;
};

// a counter used to create unique IDs
addEvent.guid = 1;

function removeEvent(element, type, handler) {
	// delete the event handler from the hash table
	if (element.events && element.events[type]) {
		delete element.events[type][handler.$$guid];
	}
};

function handleEvent(event) {
	var returnValue = true;
	
	// grab the event object (IE uses a global event object)
	event = event || fixEvent(window.event);
	
	// get a reference to the hash table of event handlers
	var handlers = this.events[event.type];
	
	// execute each event handler
	for (var i in handlers) {
		this.$$handleEvent = handlers[i];
		if (this.$$handleEvent(event) === false) {
			returnValue = false;
		}
	}
	
	return returnValue;
};

// Add some "missing" methods to IE's event object
function fixEvent(event) {
	// add W3C standard event methods
	event.preventDefault = fixEvent.preventDefault;
	event.stopPropagation = fixEvent.stopPropagation;
	if (event.type == "mouseover") {
		event.relatedTarget = event.fromElement;
	}
	if (event.type == "mouseout") {
		event.relatedTarget = event.toElement;
	}
	return event;
};

fixEvent.preventDefault = function() {
	this.returnValue = false;
};

fixEvent.stopPropagation = function() {
	this.cancelBubble = true;
};
