function addClass(el,c) { el.className += " " + c; }
function removeClass(el, c) { el.className = el.className.replace(new RegExp(c,"g"),""); }
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 setMultiOpacity(elems, o)
{
	for(var i = 0; i < elems.length; i++ )
	{
		elems[i].style.opacity = o/100;
		elems[i].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 focusInputs()
{
	var form = $("contact_form");
	focusElements(form,"input");
	focusElements(form,"textarea");
	
	function focusElements(form,elementName)
	{
		var elements = form.getElementsByTagName(elementName);
		for(var i=0; i<elements.length; i++)
		{
			elements[i].onfocus = function() { addClass(this,"focus") }
			elements[i].onblur = function() { removeClass(this,"focus") }
		}
	}
}

function ajaxRequest(url, method, containerResponse, postFunction)
{
	var req;
	if(window.XMLHttpRequest)
		req = new XMLHttpRequest();
	else if(window.ActiveXObject)
		req = new ActiveXObject("Microsoft.XMLHTTP");
	// if browser doesn't support ajax return true
	if(!req) return false;
	
	method = method.toUpperCase();
	
	// process function
 	req.onreadystatechange=function()
 	{
  		if (req.readyState == 4) 
  			if(req.status == 200)
  			{
  				if(containerResponse) containerResponse.innerHTML = req.responseText;
  				if(postFunction) postFunction(req.responseText);
  			}
	}
	
	// send request
	if(method == "GET")
	{
		req.open(method, url, true );
		req.send(null);
	}
	else if(method == "POST")
	{
		try // catch an exception to prevent errors (opera <= 8 doesn't support post request)
		{
			req.open(method, url.slice(0,url.indexOf("?")), true );
			var parameters = url.slice(url.indexOf("?") + 1);
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	      	req.setRequestHeader("Content-length", parameters.length);
	      	req.setRequestHeader("Connection", "close");
	      	req.send(parameters);
      	}
      	catch (e)
      	{
      		return false;
      	}
	}
	else
	{
		alert("Unsupported method: " + method);
		return false;
	}
	
	return true;
}

function alphaShow(element,afterFunc)
{
	var absElements = getAbsElements(element);
	
	var opacity = 0;
	setOpacity(element,opacity);
	setMultiOpacity(absElements,opacity);
	removeClass(element,"hidden");
	var interval = setInterval(function()
	{
		opacity += 5;
		setOpacity(element,opacity);
		setMultiOpacity(absElements,opacity);
		if(opacity >= 100)
		{
			clearInterval(interval);
			if(afterFunc) afterFunc();
		}
	},50);
}

function alphaHide(element, afterFunc)
{
	var absElements = getAbsElements(element);
		
	var opacity = 100;
	setOpacity(element,opacity);
	setMultiOpacity(absElements,opacity);
	var interval = setInterval(function()
	{
		opacity -= 5;
		setOpacity(element,opacity);
		setMultiOpacity(absElements,opacity);
		if(opacity <= 0)
		{
			clearInterval(interval);
			addClass(element,"hidden");
			if(afterFunc) afterFunc();
		}
	},50);	
}

function getAbsElements(element)
{
	var elements = element.childNodes;
	var absElements = new Array();
	for( var i = 0; i < elements.length; i++ )
		if(elements[i].nodeType == 1 && elements[i].style.position == "absolute")
			absElements[absElements.length] = elements[i];
	return absElements;
}

function dynamicPager()
{
	var pager = $("pager");
	if(!pager) return;
	pager.style.position = "absolute";
	var links = pager.getElementsByTagName("a");
	for( var i = 0; i < links.length; i++ )
		links[i].onclick = ajaxSwitch;
		
	function ajaxSwitch()
	{
		this.blur();
		var content = $("content_body");
		var url = this.pathname;
		if(url.charAt(0) == "/") url = url.slice(1);
		url = "/ajax," + url;
		ajaxRequest(url,"GET",null,afterSwitch);
		
		function afterSwitch(text)
		{
			alphaHide(content,function()
			{
				content.innerHTML = text;	
				dynamicPager();
				alphaShow(content);
			});
		}
		
		return false;
	}
}

// google
var gMap = null;
function showMap()
{
	$("overgmap").style.display = "block"
	if(gMap != null)
		return;
	
	gMap = new GMap2(document.getElementById("gmap"));
	gMap.addControl(new GLargeMapControl());
	gMap.setCenter(new GLatLng(51.208174,16.861267), 10);
	
	var point = new GLatLng(51.264708,16.728605);
	var marker = new GMarker(point);
	gMap.addOverlay(marker);
	mapInfoContent = "<b>JPJ Aerograf</b><br>ul. Towarowa 5<br>56-120 Brzeg Dolny";
	marker.openInfoWindowHtml(mapInfoContent);
	
	GEvent.addListener(marker, "mouseover", function() { marker.openInfoWindowHtml(mapInfoContent);} );
	//map.checkResize();
}

function hideMap()
{
	$("overgmap").style.display = "none"
}
