//==========================================================================
// Copyright (c) 2011 by Donald R. Ziesig.  All Rights Reserved
//==========================================================================

//==========================================================================
// Start of stuff that the DOM model needs but does not provide
//==========================================================================

function getChildElementsByTagName( tag_name, node )
{
	var elems = node.getElementsByTagName( tag_name );
	var result = new Array();
	var i;
	for(i=0;i<elems.length;i++)
	{
		if(elems[i].parentNode == node)
		{
			result.push(elems[i]);
		}
	}
	return result;
}

function getElementIndex( elem, array )
{
	var i;
	
	for(i=0;i<array.length;i++)
	{
		if(elem == array[i]){ return i; }
	}
	return -1;
}

function removeClassName( node, name )
{
		var before;
		var name_rxp = new RegExp( name );
		do
		{
			before = node.className;
			node.className = node.className.replace(name_rxp,'');
		} while(node.className != before);	
}

function addUniqueClassName( node, name )
{
	// remove the name if it exists
	removeClassName( node, name );
	node.className += ' ' + name;
}

function fireEvent(element,event)
{
  debug('fire event:  ' + element + ' ' + event);
	if (document.createEventObject)
	{
// dispatch for IE
		var evt = document.createEventObject();
		return element.fireEvent('on'+event,evt)
	}
	else
	{
// dispatch for firefox + others
		var evt = document.createEvent("HTMLEvents");
		evt.initEvent(event, true, true ); // event type,bubbling,cancelable
		return !element.dispatchEvent(evt);
	}
}

//==========================================================================
// Copyright (c) 2011 by Donald R. Ziesig.  All Rights Reserved
//==========================================================================

