// JavaScript Document

function getElementsByAttribute(attribute, attributeValue)
{
	var elementArray = new Array();
	var matchedArray = new Array();
	if (document.all)			// i tidligere IE kan man ikke søge på tagname = * 
	{
		elementArray = document.all;
	}
	else
	{
		elementArray = document.getElementsByTagName("*");
	}
	for (var i = 0; i < elementArray.length; i++)
	{
		if (attribute == "class")
		{
			var pattern = new RegExp("(^| )" + attributeValue + "( |$)"); //tager højde for flere classnames i samme element begyndelse eller blank så klassenavnet og så en blank eller slut
			if (pattern.test(elementArray[i].className)) // elementets classname testes mod expression - hvis det overholder så
			{
				matchedArray[matchedArray.length] = elementArray[i]; //hvis længden er 20 så hedder næste ledige element 20, fordi 0 er det første
			}
		}
		else if (attribute == "for")
		{
			if (elementArray[i].getAttribute("htmlFor") || // hvis der er speccificeret en htmlFor
				elementArray[i].getAttribute("for"))		// eller en for
			{
				if (elementArray[i].htmlFor == attributeValue)	// så test om værdien er lig med inputparametren
				{
					matchedArray[matchedArray.length] = elementArray[i]; 
				}
			}
		}
		else if (elementArray[i].getAttribute(attribute) == attributeValue) // for alle andre attributter end class og for
		{
			matchedArray[matchedArray.length] = elementArray[i];
		}
	}
	return matchedArray;
}
//eksempel på brug:
//var tips = getElementsByAttribute("class", "hastooltip");
//nu er tips en array der indeholder alle elementer med className = hastooltip
function getScrollingPosition()
{									// tre måder alt efter hvilken browser, se JSA side 139
	var position = [0, 0];
	if (typeof window.pageYOffset != "undefined")
	{
		position = [window.pageXOffset, window.pageYOffset];
	}
	else if (typeof document.documentElement.scrollTop != "undefined" &&
			 document.documentElement.scrollTop > 0)
	{
		position = [document.documentElement.scrollLeft, document.documentElement.scrollTop];
	}
	else if (typeof document.body.scrollTop != "undefined")
	{
		position = [document.body.scrollLeft, document.body.scrollTop];
	}
	return position;
}
//eksempel på brug:
//window.onscroll = function()     dom0 måden men da window ikke er en del af dom så kan man vel ikke bruge eventlistener
//{
//   var scrollpos = getScrollingPosition();
//   document.title = "left=" + scrollpos[0] + " top=" + scrollpos[1];
//}
//getScrollingPosition bruges også i tooltip funktionerne ovenfor
	
	
function getViewportSize()
// der er tre forskellige måder alt efter browser - se JSA side 141
{
	var size = [0, 0];
	if (typeof window.innerwidth != "undefined")
	{
		size = [window.innerWidth, window.innerHeight];
	}
	else if (typeof document.documentElement != "undefined" && 
			 typeof document.documentElement.clientWidth != "undefined" && 
			 document.documentElement.clientwidth != 0)
	{
		size = [document.documentElement.clientWidth, document.documentElement.clientHeight];
	}
	else
	{
		size = [document.getElementsByTagName("body")[0].clientWidth, 
				document.getElementsByTagName("body")[0].clientheight];
	}
	return size;
}
	
function getEventTarget(event)
// det target element eventhandleren giver ikke behøver at være det element, hvorpå
// man specificerede en event handler, men derimod kan være et underliggende element.
// Denne funktion itererer opad sålænge elementet er et tekstelement og der er en forældre
// resten af opad iterationen skal udføres individuelt i den enkelte event handler funktion
{
	var targetElement = null;
	if (typeof event.target != "undefined")
	{
		targetElement = event.target;
	}
	else
	{
		targetElement = event.srcElement;
	}
	while (targetElement.nodeType == 3 && targetElement.parentNode != null)
	{
		targetElement = targetElement.parentNode;
	}
	return targetElement;
}

function stopDefaultAction(event)
//fordi return false ikke virker i w3c event listeners
// vær opmærksom på at default action slet ikke kan slås fra i Safari, se JSA side 237 
{
	event.returnValue = false;
	if (typeof event.preventDefault != "undefined")
	{
		event.preventDefault();
	}
}
	
	
	
	
	
	


