/**
 * Allgemeine JavaScript-Funktionen
 * @author ag
 * @date 2007-04-23
 */

function ly_functions()
{
	var app = this;

	app.closeElement = function(elemId)
	{
		var elem;

		if (document.getElementById)
		{
			elem = document.getElementById(elemId);
			if (elem) elem.style['display'] = 'none';
		}
	}

	app.showElement = function(elemId)
	{
		var elem;

		if (document.getElementById)
		{
			elem = document.getElementById(elemId);
			if (elem) elem.style['display'] = 'block';
		}
	}

	app.removeClass = function(old, remove)
	{
		var classes;
		var i;
		var f = null;

		classes = old.split(' ');
		for (i = 0; i < classes.length; i++)
		{
			if (classes[i] == remove) f = i;
		}
		if (f != null) classes.splice(f, 1);
		return(classes.join(' '));
	}

	app.replaceClass = function(old, toreplace)
	{
		var classes;
		var i;
		var f = null;

		classes = old.split(' ');
		for (i = 0; i < classes.length; i++)
		{
			if (classes[i] == toreplace) f = i;
		}
		if (f != null) classes[f] = toreplace;
		return(classes.join(' '));
	}

	app.addClass = function(old, toadd)
	{
		var classes;
		var i;
		var f = null;

		classes = old.split(' ');
		for (i = 0; i < classes.length; i++)
		{
			if (classes[i] == toadd) f = i;
		}
		if (f == null) classes.push(toadd);
		return(classes.join(' '));
	}

	app.hasClass = function(classname, classes)
	{
		var class_strings;
		var i;

		class_strings = classes.split(' ');
		for (i = 0; i < class_strings.length; i++)
		{
			if (class_strings[i] == classname) return(true);
		}
		return(false);
	}

	app.replaceImage = function(elem_id, img_src)
	{
		if (document.getElementById)
		{
			var elem = document.getElementById(elem_id);
			if (elem)
			{
				elem.src = img_src;
			}
		}
	}

	/**
	 * Filtert aus den übergebenen Nodes diejenigen heraus, dessen Tagnamen nodeName entspricht
	 * @param Array nodes
	 * @param String nodeName
	 * @return Array
	 */
	app.filterChildNodes = function(nodes, nodeName)
	{
		var treeNodes = new Array();
		var i;

		if (nodes && nodeName)
		{
			for (i = 0; i < nodes.length; i++)
			{
				if (nodes[i].nodeType == 1 && nodes[i].nodeName == nodeName) treeNodes.push(nodes[i]);
			}
		}

		return(treeNodes);
	}

	app.filterChildNodesRecursive = function(parentNode, nodeName, className)
	{
		var nodes = new Array();
		var i;
		var dummy;

		if (parentNode && nodeName)
		{
			if (parentNode.hasChildNodes())
			{
				for (i = 0; i < parentNode.childNodes.length; i++)
				{
					if (parentNode.childNodes[i].nodeType == 1)
					{
						if (parentNode.childNodes[i].nodeName == nodeName)
						{
							nodes.push(parentNode.childNodes[i]);
						}
						else
						{
							if (parentNode.childNodes[i].hasChildNodes())
							{
								dummy = app.filterChildNodesRecursive(parentNode.childNodes[i], nodeName, className);
								nodes = nodes.concat(dummy);
							}
						}
					}
				}
			}
		}
		return(nodes);
	}
}
