function GetElement( id )
{
	return document.getElementById( id );
}

function DOMSetParent( newparent, node )
{
	if ( node.parentElement != newparent )
	{
		//node.parentElement.removeNode( node );
		newparent.appendChild( node );
	}
}

function DOMEmpty( node )
{
	while ( node.firstChild )
		node.removeChild( node.firstChild );
}

function DOMDiv( parent, id )
{
	var div = document.createElement( 'div' );
	div.id = id;
	return parent.appendChild( div );
}

function DOMTable( parent, border, cellspacing, cellpadding, id, w )
{
	var table = document.createElement( 'table' );
	if ( w != null )
		table.width = w;
	table.border = border;
	table.cellSpacing = cellspacing;
	table.cellPadding = cellpadding;
	if ( id != null )
		table.id = id;
	var tbody = document.createElement( 'tbody' );
	table.appendChild( tbody );
	parent.appendChild( table );
	
	return tbody;
}

function DOMText( parent, text )
{
	var span = document.createElement( 'span' );
	span.innerHTML = text;
	return parent.appendChild( span );
}

function DOMInput( parent, size, clss, name, val )
{	
	var input = document.createElement( '<input type="text" name="' + name + '">' );
	input.size = size;
	input.value = val;
	input.id = name;
	input.className = clss;
	return parent.appendChild( input );
}

function DOMTextarea( parent, rows, cols, clss, name, val )
{
	var input = document.createElement( '<textarea name="' + name + '">' );
	input.rows = rows;
	input.cols = cols;
	//input.innerHTML = val;
	input.value = val;
	input.id = name;
	input.className = clss;
	return parent.appendChild( input );
}

function DOMRadio( parent, name, val, checked )
{
	var input = document.createElement( '<input type="radio" name="' + name + '"' 
											+ (checked ? ' checked':'') + '>' );
	input.type = 'radio';
	input.value = val;
	input.id = name;
	return parent.appendChild( input );
}

function DOMElement( parent, tag, id )
{
	var newchild = document.createElement( tag );
	if ( id != null )
		newchild.id = id;
	return parent.appendChild( newchild );
}

function DOMSelect( parent, name, clss, names, values, val )
{
	var select = document.createElement( '<select name="' + name + '">' );
	select.className = clss;
	select.id = name;
	var options = select.options;
	for ( var i = 0 ; i < names.length ; i++ )
	{
		var option = document.createElement( 'option' );
		option.text = names[ i ];
		option.value = values[ i ];
		select.options[ select.options.length ] = option;
		if ( values[ i ] == val )
			option.selected = true;
	}
	return parent.appendChild( select );
}

function DOMSelectSetValue( select, val )
{
	var options = select.options;
	for ( var i = 0 ; i < options.length ; i++ )
		options[ i ].selected = (options[ i ].value == val);
}

function AddEvent( obj, evType, fn, useCapture )
{
	if ( obj.addEventListener )
	{
		obj.addEventListener( evType, fn, useCapture );
		return true;
	} 
	else if ( obj.attachEvent )
	{
		var r = obj.attachEvent( "on"+evType, fn );
		return r;
	} 
}

function RemoveEvent( obj, evType, fn, useCapture )
{
	if ( obj.removeEventListener )
	{
		obj.removeEventListener( evType, fn, useCapture );
		return true;
	} 
	else if ( obj.detachEvent )
	{
		var r = obj.detachEvent( "on"+evType, fn );
		return r;
	}
}

function ParentOffset( e )
{
	var x = 0;
	var y = 0;
	while ( e.offsetParent )
	{
		x += parseInt( e.offsetParent.offsetLeft );
		y += parseInt( e.offsetParent.offsetTop );
		e = e.offsetParent;
	}
	
	return [ x, y ];	
}

function FlyerAppear( trig, flyer, dx, dy )
{
	var e = GetElement( trig );
	var f = GetElement( flyer );
	
	var t = ParentOffset( e );
	
	var x = t[ 0 ] + parseInt( e.offsetLeft );
	var y = t[ 1 ] + parseInt( e.offsetTop );
	
	if ( dx == null )
	{
		// offset from right edge of trigger element
		x += e.offsetWidth;
	}
	else
	{
		x += dx, 
		y += dy;
	}
	
	if ( navigator.appVersion.indexOf( "MSIE 5" )>-1 && navigator.appVersion.indexOf( "Mac" )>-1 )
	{
		x += parseInt( document.body.leftMargin );
		y += parseInt( document.body.topMargin );
	}
		
	f.style.left = x + 'px';
	f.style.top = y + 'px';
	f.style.visibility = 'visible';
}

function DOMScrollToView( id )
{
	var e = GetElement( id );
	if ( e && e.scrollIntoView )
		setTimeout( 'GetElement("' + id + '").scrollIntoView();', 0 );
}

function InitFloaterButton()
{
	var bDiv = GetElement( 'floatingbutton' );
	if ( bDiv )
	{
		bDiv.style.top = "16px";
		bDiv.style.left = "8px";
		window.setInterval( 'FloatButton()', 1000 );
	}
}
function FloatButton() 
{
	var topOffset = 16;
	var bDiv = GetElement( 'floatingbutton' );
	var tp = parseInt( bDiv.style.top );
	var yscr = typeof( window.scrollY ) != 'undefined' ? window.scrollY : parseInt( document.body.scrollTop );
	var dif = ( yscr + 26 <= topOffset ) ? 0 - tp : yscr + 26 - tp - topOffset;
	//dif = dif * .5;
	bDiv.style.top = tp + dif + "px";
}

