/* (c) 2009 by Gerald Wodni */

/* as IE is unable to give us the className as attribute, we need this function, sorry to every other browser :( */
function getElementsByClassname( tag, className )
{
        var elements = document.getElementsByTagName( tag );
        var retter = new Array();

        for( var i = 0; i < elements.length; i++ )
                if( elements[i].className == className )
                        retter.push( elements[i] );

        return retter;
}

function getElementsByAttributeValue( tag, attribute, value )
{
        var elements = document.getElementsByTagName( tag );
        var retter = new Array();

        for( var i = 0; i < elements.length; i++ )
                if( elements[i].getAttribute( attribute ) == value )
                        retter.push( elements[i] );

        return retter;
}

function getChildElementsByTagName( target, tag )
{
        var found = new Array();

        if( target.nodeName == tag )
                found.push( target );

        var node = target.firstChild;
        while( node )
        {
                found = found.concat( getChildElementsByTagName( node, tag ) );

                node = node.nextSibling;
        }

        return found;
}

function getChildElementByTagName( target, tag )
{
        var node = target;
        while( node )
        {
		if( node.nodeName == tag )
			return node;
		else
		{
			var childTarget = getChildElementByTagName( target.firstChild, tag );
			if( childTarget != null )
				return childTarget;
		}

                node = node.nextSibling;
        }

        return null;
}

function getTarget( evt )
{
        evt = ( (evt) ? evt : event);
        return ( (evt.target) ? evt.target : evt.srcElement );
}

/* as IE is unable to give us the className as attribute, we need this function, sorry to every other browser :( */
function getChildElementsByClassname( target, tag, className )
{
        var retter = new Array();
        var found = getChildElementsByTagName( target, tag );

        for( var i = 0; i < found.length; i++ )
                if( found[i].className == className )
                        retter.push( found[i] );

        return retter;
}

function getChildElementsByAttributeValue( target, tag, attribute, value )
{
        var retter = new Array();
        var found = getChildElementsByTagName( target, tag );

        for( var i = 0; i < found.length; i++ )
                if( found[i].getAttribute( attribute ) == value )
                        retter.push( found[i] );

        return retter;
}

