function createButton( hElement, className ) 
{
	cDomEvent.addEvent( hElement, "mouseover", createButton.mouseover, true )	
	cDomEvent.addEvent( hElement, "mouseout", createButton.mouseout, true )	
	cDomEvent.addEvent( hElement, "mousedown", createButton.mousedown, true )	
	cDomEvent.addEvent( hElement, "mouseup", createButton.mouseup, true )
	if( (typeof className == "undefined") || (className.length = 0) ) className = ""
	hElement.isButton = true
	hElement.buttonClassName = className
	hElement.statusEnabled = true
	hElement.setEnabled = createButton.setEnabled
	
	return hElement
}

createButton.setEnabled = function( bEnabled )
{
	this.statusEnabled = bEnabled
	createButton.setButtonClass( this )
}

createButton.mouseover = function( e )
{
	hElement = createButton.getRealElement( e )
	if( hElement == null || !hElement.statusEnabled ) return
	hElement.statusOver = true
	createButton.setButtonClass( hElement )
}

createButton.mouseout = function( e )
{
	hElement = createButton.getRealElement( e )
	if( hElement == null || !hElement.statusEnabled ) return
	hElement.statusOver = false
	hElement.statusDown = false
	createButton.setButtonClass( hElement )
}

createButton.mousedown = function( e )
{
	hElement = createButton.getRealElement( e )
	if( hElement == null || !hElement.statusEnabled ) return
	hElement.statusDown = true
	createButton.setButtonClass( hElement )
}

createButton.mouseup = function( e )
{
	hElement = createButton.getRealElement( e )
	if( hElement == null || !hElement.statusEnabled ) return
	hElement.statusDown = false
	createButton.setButtonClass( hElement )
}

createButton.getElement = function( hElement )
{
	if( typeof hElement.tagName == 'undefined' ) return  null
	
	while( ( hElement.tagName ) && !( /body/i.test( hElement.tagName ) ) && !( /html/i.test( hElement.tagName ) ) )
	{
		if ( /button/i.test( hElement.className ) && ( !/button(h|v)?sep/i.test( hElement.className ) ) )
		{
			return hElement
		}
		hElement = hElement.parentNode
	}
	return null
}

createButton.getRealElement = function( hEvent )
{
	if( hEvent == null ) hEvent = window.event
	hElement = ( hEvent.srcElement ) ? hEvent.srcElement : hEvent.originalTarget

	if( hElement == null )
	{
		return null
	}

	if( typeof hElement.tagName == 'undefined' ) return  null
	
	while( ( hElement.tagName ) && !( /body/i.test( hElement.tagName ) ) && !( /html/i.test( hElement.tagName ) ) )
	{
		if ( /button/i.test( hElement.className ) && ( !/button(h|v)?sep/i.test( hElement.className ) ) )
		{
			return hElement
		}
		hElement = hElement.parentNode
	}
	return null
}

createButton.setButtonClass = function( hElement )
{

	sClass = ""
	
	if( !hElement.statusEnabled )
	{
		sClass = "buttonDisabled"	
	}
	else
	{
		if( hElement.statusOver )
		{
			if( hElement.statusDown )
			{
				sClass = "buttonDown"
			}
			else
			{
				sClass = "buttonOver"
			}
		}
		else
		{
			sClass = "buttonOut"
		}
	}
	
	sNewClassName = hElement.buttonClassName + sClass
	hElement.className = sNewClassName
}


//autoInit
function autoInit( e )
{
	hElement = createButton.getRealElement( e )
	if ( hElement != null )
	{	
		if( ( typeof hElement.isButton == 'undefined' ) || ( hElement.isButton != true ) )
		{	
			createButton( hElement )
			createButton.mouseover( e )
		}
	}
	return true
}

function initButtonGroup( hButtons )
{
	for( nI = 0; nI < hButtons.length; nI ++ )
	{
		hElement = createButton.getElement( hButtons[nI] )
		if ( hElement != null )
		{	
			if( ( typeof hElement.isButton == 'undefined' ) || ( hElement.isButton != true ) )
			{	
				createButton( hElement )
			}
		}
	}
}

function autoInit2()
{
	hButtons = document.getElementsByTagName( "TD" )
	initButtonGroup( hButtons )

	hButtons = document.getElementsByTagName( "A" )
	initButtonGroup( hButtons )

	hButtons = document.getElementsByTagName( "SPAN" )
	initButtonGroup( hButtons )

	hButtons = document.getElementsByTagName( "DIV" )
	initButtonGroup( hButtons )
	
	return true
}

//cDomEvent.addEvent( document, 'mouseover', autoInit, true )
cDomEvent.addEvent( window, 'load', autoInit2, true )
