document.observe("dom:loaded", function() 
{
	if($('intro'))
	{
		adjustIntroDimensions();							 
	}
});


Event.observe(window, 'load', runAutoFunctions);

function runAutoFunctions()
{
	//common functions
	autoBlur();
	autoOver();
	autoLink();
	autoPopupMenu();
//		fixIEFlash();	
//	fixSafariBackButton();								 
	
	//specific functions
	autoInterlace();
	autoValidate();
	autoFocus();
}

function autoBlur()
{
	$$('a', 'input[type=checkbox]', 'input[type=submit]', 'input[type=image]').each
	(
		function(element) 
		{
			element.observe('focus', blur);
		}
	);
}

function blur(event)
{
	Event.element(event).blur();
}


function autoOver()
{
	$$('.auto_over').each
	(
		function(element) 
  	    {
		  	 element.onmouseover = mouseOver;
		 	 element.onmouseout  = mouseOut;
   	    }
   	);
}

function autoLink()
{
	$$('.auto_link').each
	(
		function(element)
	    {
	  		element.onmouseover = autoLinkOver;
	  		element.onmouseout  = autoLinkOut;
	  		element.onclick     = autoLinkClick;
	    }
	);
}

function autoPopupMenu()
{
	$$('a.auto_popupmenu').each
	(
		function(element)
	    {
	    	element.href = "javascript:;";
	    	element.onclick = showPopupMenu;
	    	$$('html').first().observe('click', hidePopupMenu);
	    }
	);
}

function showPopupMenu()
{
	var popupmenu = $$("#" + this.id + "_popupmenu").first();
	var activationLinkPosition = this.positionedOffset();
	popupmenu.style.left = activationLinkPosition[0] - 82 + "px";
	popupmenu.style.top  = activationLinkPosition[1] + this.getHeight() + "px";
	
	if(!this.hasClassName('selected'))
	{
		this.addClassName('selected');
	}
	popupmenu.show();
}

function hidePopupMenu(event)
{
	var clickedElement = Event.element(event);
	
	$$(".popupmenu").each(
		function(element)
		{
			if(element.id != clickedElement.id + "_popupmenu")
			{
				element.hide();
				var activationLink = $(element.id.replace('_popupmenu', ''));
				if(activationLink.hasClassName('selected'))
				{
					activationLink.removeClassName('selected');
				}
			}
		}
	);
}


function autoInterlace()
{
	$$('img.auto_interlace').each
	(
		function(element)
        {	
      		var label   = $$('label[for=' + element.id + ']').first();
      		element.src = label.innerHTML;								      		
        }
    );
}

function autoValidate()
{
	$$('html').first().observe('click', validate);
	$$('input', 'select', ' textarea').each
	(
		function(element) 
		{
		  	 element.observe('focus', validate);
		}
	);
}

function autoFocus()
{
	$$('html').first().observe('click', leaveFocus);								      		
	$$('input', 'select', 'textarea').each
	(
		function(element)
        {
      		element.observe('focus', inputFocused);								      		
        }
    );
}


var lastFocused;
function inputFocused(event)
{
	var input  = Event.element(event);
	var parent = $(input.parentNode);
	
	if(lastFocused && lastFocused != parent && lastFocused.hasClassName('focus'))
	{
		lastFocused.removeClassName('focus');
	}
	
	lastFocused = null;
	if(input.hasClassName('auto_focus')) 
	{
		if(!parent.hasClassName('focus'))
		{
			parent.addClassName('focus');
			
			//fix opera select box background problem
			if(input.tagName == "SELECT" && Prototype.Browser.Opera)
			{
				input.disable();
				input.enable();
				input.focus();
			}
		}
		lastFocused = parent;
	}
}

function leaveFocus(event)
{
	var element = Event.element(event);
	var parent  = $(element.parentNode);
	if(element.tagName == 'OPTION')
	{
		parent  = $(parent.parentNode);
	}
	if(lastFocused && lastFocused != parent && lastFocused.hasClassName('focus'))
	{
		lastFocused.removeClassName('focus');
		lastFocused = null;	
	}
}

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;
		safariBackButtonFixed = true;
	}
}


function mouseOver(obj)
{
	var element = obj;
	if((element == null || element.type == "mouseover") && this)
	{
		element = this;
	}
	
	if(element.tagName == "INPUT")
	{
  		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")
	{
		var image_src = element.src;
  		element.src   = image_src.replace('_over\.','\.');
	}
	else
	{
		if(element.hasClassName('hover'))
		{
			element.removeClassName('hover');
		}
	}
}

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;
}