var default_pausebetweenmsg = 500; 	// pause between messages, in ms

var curobjindex = 0;
var frame_interval = 25;  // time between each screen update, in ms

var NumText = 0;
var Group = new Array();
var Completed = new Array();
var StartX = new Array();
var StartY = new Array();
var EndX = new Array();
var EndY = new Array();
var IncX = new Array();
var IncY = new Array();
var Pause = new Array();

function FlyText( group, text, start_x, start_y, end_x, end_y, duration, pause )
{
	if ( text == " " )  text = "&nbsp;";
	
	document.write( text );

	Group[ NumText ] = group;
	Completed[ NumText ] = false;
	
	StartX[ NumText ] = start_x;
	StartY[ NumText ] = start_y;
	EndX[ NumText ] = end_x;
	EndY[ NumText ] = end_y;

	IncX[ NumText ] = ( end_x - start_x ) * frame_interval / duration;
	IncY[ NumText ] = ( end_y - start_y ) * frame_interval / duration;
	
	if ( pause == 0 )  Pause[ NumText ] = default_pausebetweenmsg;
	else  			   Pause[ NumText ] = pause;
	
	NumText++;
}

function GetNextGroupObject( cur_index, group )
{
	for ( i=cur_index+1; i<NumText; i++ )
	{
		if ( Group[ i ] == group )  return( i );
	}
	return( 0 );
}

function actualstyle( el, cssproperty )
{
	if ( el.currentStyle )  return el.currentStyle[ cssproperty ];
	else if ( window.getComputedStyle )
	{
		var elstyle = window.getComputedStyle( el, "" );
		return elstyle.getPropertyValue( cssproperty );
	}
}

function collectElementbyClass()
{
	var classname = "FlyText";
	glidearray = new Array();
	var inc = 0;
	var alltags = document.all? document.all : document.getElementsByTagName( "*" );
	
	for ( i=0; i<alltags.length; i++ )
	{
		if ( alltags[ i ].className == classname )  
		{
			glidearray[ inc ] = alltags[ i ];
			glidearray[ inc ].style.left = StartX[ inc ] + "px";
			glidearray[ inc ].style.top  = StartY[ inc ] + "px";
			inc++;
		}
	}
	if ( glidearray.length > 0 )  onebyoneglide();
}

function onebyoneglide()
{
	if ( curobjindex < glidearray.length )  glidetimer = setInterval( "glideroutine()", frame_interval );
}

function glideroutine()
{
	obj_left = parseInt( actualstyle( glidearray[ curobjindex ], "left" ) );
	obj_top  = parseInt( actualstyle( glidearray[ curobjindex ], "top" ) );

	var finished = true;

	if ( ( IncX[ curobjindex ] > 0 && obj_left < EndX[ curobjindex ] ) || ( IncX[ curobjindex ] < 0 && obj_left > EndX[ curobjindex ] ) )
	{
		glidearray[ curobjindex ].style.left = obj_left + IncX[ curobjindex ] + "px";
		finished = false;
	}

	if ( ( IncY[ curobjindex ] > 0 && obj_top < EndY[ curobjindex ] ) || ( IncY[ curobjindex ] < 0 && obj_top > EndY[ curobjindex ] ) )
	{
		glidearray[ curobjindex ].style.top = obj_top + IncY[ curobjindex ] + "px";
		finished = false;
	}

	if ( finished )
	{
		glidearray[ curobjindex ].style.left = EndX[ curobjindex ];
		clearInterval( glidetimer );
		setTimeout( "onebyoneglide()", Pause[ curobjindex ] );
		curobjindex++;
	}
}

if ( window.addEventListener )  window.addEventListener( "load", collectElementbyClass, false );
else if ( window.attachEvent )	window.attachEvent( "onload", collectElementbyClass );
else if ( document.getElementById )  window.onload = collectElementbyClass;

