Event.observe(window, 'load', 
	runAutoFunctions
);

function runAutoFunctions()
{
	//common functions
	autoBlur();
	autoOver();
	autoRadioInputs();

	
//	autoTooltip();
//	autoLink();
//	fixIEFlash();	
//	fixSafariBackButton();								 
}

function autoBlur()
{
	$$('a', 'input[type=checkbox]', 'input[type=submit]', 'input[type=image]', 'input[type=button]').each
	(
		function(element) 
		{
			element.observe('focus', blur);
		}
	);
}

function blur(event)
{
	Event.element(event).blur();
}


function autoOver()
{
	$$('.autoOver').each
	(
		function(element) 
  	    {
		  	 element.onmouseover = mouseOver;
		 	 element.onmouseout  = mouseOut;
		 	 element.onmousedown = mouseDown;
		 	 element.onmouseup   = mouseUp;
   	    }
   	);
}

function autoLink()
{
	$$('.auto_link').each
	(
		function(element)
	    {
//	  		element.onmouseover = autoLinkOver;
//	  		element.onmouseout  = autoLinkOut;
	  		element.onclick     = autoLinkClick;
	    }
	);
}

function fixIEFlash()
{
	theObjects = document.getElementsByTagName("object");
	for (var i = 0; i < theObjects.length; i++) 
	{
		theObjects[i].outerHTML = theObjects[i].outerHTML;
	}	
}

function fixSafariBackButton()
{
	if (Prototype.Browser.WebKit) 
	{
    	Prototype.BrowserFeatures.XPath = false;
  	}
}


function mouseOver(obj)
{
	var element = obj;
	if((element == null || element.type == "mouseover") && this)
	{
		element = this;
	}
	
	if(element.tagName == "INPUT" || element.tagName == 'IMG')
	{
  		var image_src       = element.src;
  		var extension_index = image_src.lastIndexOf('.');
  		element.src         = image_src.substring(0,extension_index) + '-over' + image_src.substring(extension_index);
	}
	else
	{
		if(!$(element).hasClassName('hover'))
		{
			$(element).addClassName('hover');
		}
	}
}

function mouseOut(obj)
{
	var element = obj;
	if((element == null || element.type == "mouseout") && this)
	{
		element = this;
	}
	
	if(element.tagName == "INPUT" || element.tagName == "IMG") 
	{
		var image_src = element.src;
		if(image_src.indexOf('-over') > 0)
		{
  			element.src = image_src.replace('-over\.','\.');
		}
		if(image_src.indexOf('-click') > 0)
		{
  			element.src = image_src.replace('-click\.','\.');
		}
	}
	else
	{
		if(element.hasClassName('hover'))
		{
			element.removeClassName('hover');
		}
	}
}

function mouseDown(obj)
{
	var element = obj;
	if((element == null || element.type == "mousedown") && this)
	{
		element = this;
	}
	
	if(element.tagName == "INPUT" || element.tagName == "IMG") 
	{
		var image_src = element.src;
  		element.src   = image_src.replace('-over\.','-click\.');
	}
	else
	{
		if(!element.hasClassName('clicked'))
		{
			element.addClassName('clicked');
		}
	}
}

function mouseUp(obj)
{
	var element = obj;
	if((element == null || element.type == "mouseup") && this)
	{
		element = this;
	}
	
	if(element.tagName == "INPUT" || element.tagName == "IMG") 
	{
		var image_src = element.src;
		if(image_src.indexOf('-click') > 0)
		{
  			element.src = image_src.replace('-click\.','\.');
		}
	}
	else
	{
		if(element.hasClassName('clicked'))
		{
			element.removeClassName('clicked');
		}
	}
}

function autoLinkOver()
{
	if(!this.hasClassName('hover'))
	{
		this.addClassName('hover');
	}
	this.style.cursor = 'pointer';
}

function autoLinkOut()
{
	if(this.hasClassName('hover'))
	{
		this.removeClassName('hover');
	}
	this.style.cursor = 'auto';
}

function autoLinkClick()
{
	var link = $$('#' + this.id +' a.auto_link_href').first();
	location.href = link.href;
}

function autoTooltip()
{
	toggleTooltips();
	
	$$('html').first().observe('click', domNodeClicked);
	$$('.autoTooltip').each
	(
		function(element) 
		{
			var tooltip = element.select('.tooltip').first();
			element.select('input', 'textarea').each
			(
				function(tooltip, input)
				{
					input.onfocus = function(input, tooltip) {toggleTooltips(input) }.bind(this, input, tooltip);
				}.bind(this, tooltip)
			)
		}
	);
}
function domNodeClicked(event)
{
	var element = Event.element(event);
	toggleTooltips(element);
}

function toggleTooltips(focusedElement)
{ 
	$$('.autoTooltip').each
	(
		function(focusedElement, element) 
		{
			var tooltip = element.select('.tooltip').first();
			element.select('input', 'textarea').each
			(
				function(tooltip, focusedElement, input)
				{
					if(input == focusedElement)
					{
						tooltip.hide();
						$(focusedElement.parentNode).addClassName('active');
					}
					else
					{
						tooltip.hide();
						if(!input.value)
						{
							tooltip.show();
						}
						$(input.parentNode).removeClassName('active');
					}
				}.bind(this, tooltip, focusedElement)
			)
		}.bind(this, focusedElement)
	);
}

function autoRadioInputs()
{
	$$('.autoRadio').each
	(
		function(element) 
		{
			var input = element.select('input[type=radio]').first();
			input.observe('click', checkRadioInput.bind(null, input));
			element.observe('click', checkRadioInput.bind(null, input));
			selectRadioInput(input);			
		}
	);
}

function checkRadioInput(obj)
{
	var input = obj;
	if((input == null || input.type == "click") && this)
	{
		input = this;
	}
	
	//vypnutie vsetkych radio button s rovnakym nazvom
	$$('input[type=radio]').each(
		function(element) 
		{
			if(element.name == input.name)
				$(element.parentNode).removeClassName('checked');
		}
	)
	
	input.checked = true;
	
	selectRadioInput(input);
}

function selectRadioInput(input)
{
	var parent = $(input.parentNode);
	if(input.checked)
	{
		if(!parent.hasClassName('checked')) parent.addClassName('checked')
	}
}
