
var engine = {
	ie: /MSIE/.test(navigator.userAgent),
	webkit: /WebKit|Khtml/i.test(navigator.userAgent)
}

/** **/
function getElemByClassName(name,parent) {
	if(typeof(parent) == "undefined")
		parent = document;
	var result = [];
	var e = parent.getElementsByTagName("*");
	var p = new RegExp("^(.* )?"+name+"( .*)?$","g");
	for(var x = 0; x < e.length; x++) {
		if(p.test(e[x].className))
			result.push(e[x]);
	}
	return result;
}

///////////////////

var slide = [];
var slideSelect = -1;
var slideBlock = false;
var slideTimer = null;
var sliderRand = true;
var sliderCount;

/** **/
function slide_move_ex(from,to,end) {
	var f = slide[from];
	var t = slide[to];
	var step = 0;

	if(from < to) {
		t.style.left = "605px";
	} else {
		t.style.left = "-605px";
	}

	var interval = window.setInterval(function() {
		var p = 121;
		if(from < to) {
			f.style.left = (parseInt(f.style.left)-p).toString(10) + 'px';
			t.style.left = (parseInt(t.style.left)-p).toString(10) + 'px';
		} else {
			f.style.left = (parseInt(f.style.left)+p).toString(10) + 'px';
			t.style.left = (parseInt(t.style.left)+p).toString(10) + 'px';
		}

		if(++step >= 5) {
			window.clearInterval(interval);
			end();
		}
	},40);

	var control = document.getElementById("slide-control").
		getElementsByTagName("li");
	control[from].className = "";
	control[to].className = "select";

	slideSelect = to;
	return;
}

/** **/
function slide_move(from,to) {
	var todo = [];
	var i;
	if(from < to) {
		for(i = from; i < to; i++)
			todo.push({from:i,to:(i+1)});
	} else {
		for(i = from; i > to; i--)
			todo.push({from:i,to:(i-1)});
	}
	i = 0;
	slideBlock = true;
	var ex = function() {
		if(i >= todo.length) {
			slideBlock = false;
			return;
		}
		slide_move_ex(todo[i].from,todo[i].to,ex);
		i++;
	}
	ex();
	return;
}

/** **/
function slide_set() {
	var s;
	if(sliderRand)
		sliderRand = false;
	// Szukamy ktorego li user kliknal.
	var g = this.parentNode.getElementsByTagName("li");
	for(s = 0; s < g.length; s++) {
		if(g[s] == this)
			break;
	}

	// Jezeli jest juz wybrany nie robimy nic.
	if(s == slideSelect)
		return;
	if(slideBlock == true)
		return;

	slide_move(slideSelect,s);
	return;
}

/** **/
function rand(u,l) {
	return Math.floor((Math.random() * (u-l+1))+l);
}

/** **/
function slide_init() {
	var s = document.getElementById("slide");
	// Jezeli strona nie zawiera w sobie slajdy, to przerywamy.
	if(!s)
		return;
	var c = document.createElement("ul");
	slide = getElemByClassName("article",s);

	// Dodajemy przyciski kontroli slajdow.
	c.id = "slide-control";
	s.appendChild(c);

	sliderCount = slide.length;
	for(var v = 0; v < sliderCount; v++) {
		var l = document.createElement("li");

		if(/default/.test(slide[v].className) && slideSelect == -1) {
			slideSelect = v;
			l.className = "select";
		}

		// Ustawiamy pozycje obrazkow.
		slide[v].style.position = "absolute";
		if(v == slideSelect) {
			slide[v].style.top = "0px";
			slide[v].style.left = "0px";
		} else {
			slide[v].style.top = "0px";
			slide[v].style.left = "605px";
		}

		// Cienie.
		{
			var d = getElemByClassName("description",slide[v])[0];
			var h3 = d.getElementsByTagName("h3")[0];
			var p = d.getElementsByTagName("p")[0];

			var shaddow1 = document.createElement("span");
			var shaddow2 = document.createElement("span");
			shaddow1.className = shaddow2.className = "shaddow";
			shaddow1.innerHTML = h3.getElementsByTagName("a")[0].innerHTML;
			shaddow2.innerHTML = p.innerHTML;

			h3.appendChild(shaddow1);
			p.appendChild(shaddow2);
		}

		l.onclick = slide_set;
		c.appendChild(l);
	}

	var i = 0;
	var ex = function() {
		if(sliderRand && sliderCount > 1) {
			if(i > 0) {
				var x = slideSelect + 1;
				if(x >= sliderCount)
					x = 0;
				slide_move(slideSelect,x);
			}
			i++;
			setTimeout(ex,4500);
		}
	}
	ex();
	return;
}

///////////////////

var whatnew = [];
var whatnewSelect = -1;
var whatnewBlock = false;

/** **/
function whatnew_show_ex(from,to) {
	var f = whatnew[from].body;
	var t = whatnew[to].body;

	whatnewSelect = to;
	whatnew[from].head.className = whatnew[from].head.className.replace(/.?select/,'');
	whatnew[to].head.className += " select";

	if(engine.ie) {
		f.style.display = "none";
		t.style.display = "block";
		return;
	}

	var fs = whatnew[from].body.offsetHeight;
	t.style.display = "block";
	var ts = t.offsetHeight;
	t.style.height = "0px";
	var cycles = 4;
	var cycle = cycles;
	whatnewBlock = true;

	var interval = window.setInterval(function() {
		f.style.height = (fs*(cycle/cycles)).toString(10) + "px";
		t.style.height = (ts-(ts*(cycle/cycles))).toString(10) + "px";

		cycle--;
		if(cycle < 0) {
			whatnewBlock = false;
			window.clearInterval(interval);
			t.style.height = ts.toString(10) + "px";
			f.style.display = "none";
			f.style.height = "auto";
		}
	},10);
	return;
}

/** **/
function whatnew_show() {
	var i;
	for(i = 0; i < whatnew.length; i++) {
		if(this == whatnew[i].head)
			break;
	}

	// Tego samego ponownie nie bedziemy pokazywac.
	if(i == whatnewSelect)
		return;
	if(whatnewBlock)
		return;

	whatnew_show_ex(whatnewSelect,i);
	return;
}

/** **/
function whatnew_init() {
	var w = document.getElementById("whatnew");
	if(!w)
		return;

	var h = getElemByClassName("entries-head",w);
	var e = getElemByClassName("entries",w);

	if(h.length != e.length)
		return; // WTF?!

	for(var i = 0; i < h.length; i++) {
		whatnew.push({
			head: h[i],
			body: e[i]
		});

		if(/select/.test(h[i].className) && whatnewSelect == -1) {
			whatnewSelect = i;
		} else {
			e[i].style.display = "none";
		}

		if(!engine.ie)
			e[i].style.overflow = "hidden";
		h[i].onclick = whatnew_show;
	}

	return;
}

///////////////////

function search_init() {
	var s = document.getElementById("s_search");
	var t = document.getElementById("search").getElementsByTagName("legend")[0].innerHTML;

	s.onfocus = function() {
		if(this.value == t)
			this.value = '';
	}

	s.onblur = function() {
		if(this.value == '')
			this.value = t;
	}

	if(s.value == '')
		s.value = t;
	return;
}

///////////////////

/** **/
function get_scroll_y2() {
	var scroll = 0;
	if(document.documentElement && document.documentElement.scrollTop) {
		scroll = document.documentElement.scrollTop;
	} else if(document.body && document.body.scrollTop) {
		scroll = document.body.scrollTop;
	} else if(window.pageYOffset) {
		scroll = window.pageYOffset;
	} else if(window.scrollY) {
		scroll = window.scrollY;
	}
	return scroll;
}

/** **/
function preview_click2()
{
	var desc = this.getElementsByTagName("em")[0].innerHTML;
	var href = this.href;
	var layer = document.getElementById("imgpreview");

	layer.innerHTML = "<div>Ładuje obrazek.</div>";
	layer.style.top = (get_scroll_y2() + 10) + "px";
	layer.style.left = "50%";

	var image = new Image();
	image.src = href;

	var interv = window.setInterval(function() {
		if(image.complete) {
			layer.innerHTML = "<div><img src=\""+href+"\" alt=\"\" /><em>"+desc+"</em><span>(kliknij aby zamknąć)</span></div>";

			var g = layer.getElementsByTagName("div")[0];
			g.style.width = image.width + "px";

			window.clearInterval(interv);
			interv = false;
		}
	},5);

	// Ukrywanie.
	layer.onclick = function() {
		if(interv)
			window.clearInterval(interv);
		layer.style.top = "-1024px";
		layer.style.left = "-1024px";
		layer.innerHTML = '';
	}
	return false;
}

/** **/
function init_preview2() {
	var tb = document.getElementById("text-body");
	if(!tb)
		return;
	var c = getElemByClassName("entry-thumb",tb);
	if(c.length < 1)
		return;

	// Tworzymy warstwe do wyswietlania.
	prev_layer = document.createElement("div");
	prev_layer.id = "imgpreview";
	prev_layer = document.body.appendChild(prev_layer);

	for(var x = 0; x < c.length; x++) {
		var l = c[x].getElementsByTagName("a")[0];
		l.onclick = preview_click2;
	}
}

///////////////////

/** **/
function onLoadDOM(callback) {
	// FF & Opera 9.
	if(document.addEventListener)
		document.addEventListener("DOMContentLoaded",callback,false);
	// Chrome & Safari & Konqueror & Opera 8 (?)
	if(engine.webkit) {
		var iv = setInterval(function() {
			if(/loaded|complete/.test(document.readyState)) {
				clearInterval(iv);
				callback();
			}
		},15);
	}
	// IE.
	if(engine.ie) {
		document.write("<script id=\"ie-defer\" defer=\"true\" src=\"//:\"><\/script>");
		var defer = document.getElementById("ie-defer");
		if(defer) {
			defer.onreadystatechange = function() {
				if(this.readyState == "complete")
					callback();
			}
			defer.onreadystatechange();
			defer = null;
		}
	}
	// Rest.
	window.onload = callback;
	return;
}

/** **/
(function() {
	var loaded = function() {
		if(arguments.callee.done) return;
		arguments.callee.done = true;
		//
		slide_init();
		whatnew_init();
		search_init();
		//
		init_preview2();
		return;
	}
	onLoadDOM(loaded);
})();
