function addClass(el,c) { if(!containsClass(el, c)) el.className += " " + c; }
function removeClass(el, c) { el.className = el.className.replace(new RegExp(c,"g"),""); }
function containsClass(el, c) { return el.className.indexOf(c) != -1 }
function $(id) { return document.getElementById(id); }
function $c(name) { return document.createElement(name); }
function setOpacity(el, o)
{
	el.style.opacity = o/100;
	el.style.filter = "alpha(opacity="+o+")";
}

function addEvent(obj, type, fn){
  if (obj.addEventListener)
    obj.addEventListener(type, fn, false);
  else if (obj.attachEvent){
    obj["e"+type+fn] = fn;
    obj[type+fn] = function(){obj["e"+type+fn](window.event);}
    obj.attachEvent("on"+type, obj[type+fn]);
  }
}

function myAlert(errorMessage, elementFocus)
{
	alert(errorMessage);
	if(elementFocus)
		elementFocus.focus();
	return false;
}

function niceForm()
{
	var xImage = new Image();
	xImage.src = "/images/contact/x.gif";
	var vImage = new Image();
	vImage.src = "/images/contact/v.gif";
	
	var form = $("form");
	var init = false;
	var labels = form.getElementsByTagName("label");
	
	niceElements(form.getElementsByTagName("input"));
	niceElements(form.getElementsByTagName("textarea"));
	
	function niceElements(elements)
	{
		for( var i = 0; i < elements.length; i++ )
		{
			var field = elements[i];
			field.onfocus = function() { addClass(this,"field_hover"); validate(this); }
			field.onblur = function() { removeClass(this,"field_hover"); validate(this); }
			field.onkeyup = function() { validate(this); }
		}
	}
	
	function validate(element)
	{
		if(!init) initValidation();

		if(containsClass(element.parentNode,"not_obligatory")) return false;

		if(validateElement(element,element.parentNode.className))
		{
			addClassToLabel(element,"v");
			removeClassFromLabel(element,"x");
		}
		else
		{
			addClassToLabel(element,"x");
			removeClassFromLabel(element,"v");
		}
	}
	
	function validateElement(element,type)
	{
		//alert((type.indexOf("input") != -1) + " - " + checkInput(element.id));
		if( type.indexOf("input") != -1 && checkInput(element.id)) return true;
		else if( type.indexOf("email") != -1 && checkEmail(element.id)) return true;
		else if( type.indexOf("textarea") != -1 && checkTextarea(element.id)) return true;
		else return false;
	}
	
	function initValidation()
	{
		init = true;
		for( var i = 0; i < labels.length; i++ )
			if(!containsClass(labels[i].parentNode,"not_obligatory"))
				addClass(labels[i],"x");
		
	}
	
	function addClassToLabel(element,className)
	{
		addClass(element.parentNode.getElementsByTagName("label")[0],className);
	}

	function removeClassFromLabel(element,className)
	{
		removeClass(element.parentNode.getElementsByTagName("label")[0],className);
	}
}

// gallery
function niceGallery()
{
	var image = $("zdjecie");
	if(!image) return;
	
	var loadingImage = new Image();
	loadingImage.src = "/images/loading.gif";
	var buffer = new Array();
	var imageSrc = $("zdjecie").getElementsByTagName("img")[0];
	var images = $("images").getElementsByTagName("a");
	var desc = image.getElementsByTagName("p")[0];
	if(!desc) desc = document.createElement("p");
	desc.className = "desc";
	image.appendChild(desc);
	desc.style.visibility = "hidden";
	
	imageSrc.onload = updateImageDesc;
	
	for(var i = 0; i < images.length; i++)
		images[i].onclick = changeImage;
	
	function updateImageDesc()
	{
		var desc = image.getElementsByTagName("p")[0];
		if(!desc) return;
		addClass(desc,"nice");
		desc.style.width = (imageSrc.width - 20) + "px";
		desc.style.bottom = (((image.offsetHeight - imageSrc.height)/2)-1) + "px";
		desc.style.left = ((image.offsetWidth - imageSrc.width)/2) + "px";
		setOpacity(desc,70);
		desc.style.visibility = "visible";
	}
	
	function changeImage()
	{
		this.blur();
		if(containsClass(this,"active")) return false;
		
		var loading = setTimeout(function() { image.style.backgroundImage = "url('"+loadingImage.src+"')"; }, 300);
		desc.style.visibility = "hidden";
		
		var currentNo;
		for(var i = 0; i < images.length; i++)
		{
			if( images[i] == this )
			{
				currentNo = i;
				addClass(images[i],"active");
			}
			else removeClass(images[i],"active");
		}
		
		var bufferedImage;
		if(buffer[currentNo])
		{
			bufferedImage = buffer[currentNo];
			replaceImage(currentNo);
		}
		else
		{
			bufferedImage = new Image();
			bufferedImage.src = imageSrc.src.replace(/image([0-9]*).jpg/i,"image"+images[currentNo].id.slice(4)+".jpg");
			bufferedImage.onload = function() { replaceImage(currentNo) };
			buffer[currentNo] = bufferedImage;
		}
		
		function replaceImage(currentNo)
		{
			clearTimeout(loading);
			image.style.backgroundImage = "url('"+bufferedImage.src+"')";
			var newDesc = images[currentNo].parentNode.getElementsByTagName("p")[0];
			if(!newDesc) return;
			desc.innerHTML = newDesc.innerHTML;
			updateImageDesc();
		}
		
		
		return false;
	}
}

function replaceIStatsText(text)
{while(text.lastIndexOf("&") > 0){text = text.replace('&', '[i-Stats]');} return text;}