function formatFloat2( v )
{
	return (Math.round( v * 100.0 ) / 100.0).toString( 10 );
}

function perc( val, p )
{
	return val / 100.0 * p;
}

function navigateTo( relURL )
{
	if( window.navigate )
		window.navigate( relURL );
	else if( location && location.assign )
		location.assign( relURL );
	else
	{
		var idxSl = location.pathname.lastIndexOf( "/" );
		if( idxSl == - 1 )
			location.pathname = relURL;
		else
			location.pathname = location.pathname.substr(0, idxSl + 1) + relURL;
	}	
}

function backTo()
{
	/*if( history.back )
		history.back();
	else*/
	history.go( -1 );
}

function getClientLeft( elem )
{
	var dx = 0, tagN;
	do
	{
		tagN = elem.tagName.toLowerCase();
		dx += elem.offsetLeft;
		if( typeof(elem.clientLeft) != "undefined" && tagN != "table" && tagN != "body" )
			dx +=  elem.clientLeft;

	} while( (elem = elem.offsetParent) != null );

	return dx;
}
function getClientTop( elem )
{
	var dy = 0, tagN;

	do
	{
		tagN = elem.tagName.toLowerCase();
		dy += elem.offsetTop;

		if( typeof(elem.clientTop) != "undefined" && tagN != "table" && tagN != "body" )
			dy +=  elem.clientTop;

	} while( (elem = elem.offsetParent) != null );

	return dy;
}

function replaceVals( str, arr )
{
	var res = str;
	for( var i = 0; i < arr.length; i+=2 )
		res = res.replace( arr[i], arr[i + 1] );
	return res;
}

function getChildElementById( parent, tagName, id )
{
	var res = null;
	var els = parent.getElementsByTagName( tagName );
	for( var i = 0; i < els.length; ++i )
	{
		var sp = els[ i ];
		if( sp.getAttribute("id", 0) == id )
		{
			res = sp;
			break;
		}
	}
	return res;
}

