// JavaScript Document
// green points map common functions (engine)
// depends: ttipdata.js, initpagedata.js, timerfn.js
// code by Azer Manafov (azerman[at]hotmail[dot]com)

function clickOff( e )
{
	if ( !CURR_ROUTE ) return;
	e = e || window.event;
	if ( e.button == 1 )
	{
		ballClickVisible( CURR_ROUTE );
	}
}
function findById( id )
{   for ( var  i = 0; i < ROUTES_ARRAY.length; i++ )
    {   if ( ROUTES_ARRAY[i][0].getId() == id )
             return ROUTES_ARRAY[i][0];
    }
    return null;
}
function findByConnectId( id )
{   for ( var  i = 0; i < ROUTES_ARRAY.length; i++ )
    {   if ( ROUTES_ARRAY[i][0].getconnectid() == id )
             return ROUTES_ARRAY[i][0];
    }
    return null;
}
function ballClickVisible( id, callback )
{   var behav = findById(id);
    if ( behav == null ) return;	
	
    if ( AUTO_MODE == true )
    {
        AUTO_MODE = false;
    }
    else
    {
		AUTO_MODE = true;
		prvtDisable( behav );
	    if ( callback )
             callback( id );
    }
}
function prvtEnable( behav )
{   behav.iconSet( 'on' );
    for ( var  i = 0; i < ROUTES_ARRAY.length; i++ )
	{	var curr = ROUTES_ARRAY[i][0];
		if ( !behav.isEqual( curr ))
        {   if ( curr.canBlend( ))
                 curr.showIcon( false );
        }
    }
    if ( behav.canBlend( ))
    {   behav.iconBlend  ( 10 );
        behav.showIcon   ( false );
    }
    behav.showImage  ( true );
    behav.showMovie  ( true );
	
    CURR_ROUTE = behav.getId( );
    if ( isTimer( TM_ID ) == false )
         setTimer( TM_ID );
}
function prvtDisable( behav )
{	
//  if ( isTimer( TM_ID ) == false )
//	     stopTimer( TM_ID );
    killTimer ( TM_ID );
    CURR_ROUTE = null;
	
    behav.iconSet('off');
    for ( var  i = 0; i < ROUTES_ARRAY.length; i++ )
    {   var curr = ROUTES_ARRAY[i][0];
        if ( !behav.isEqual( curr ))
              curr.showIcon( true );
    }
    if ( behav.canBlend( ))
    {   behav.iconBlend( 6 );
   	    behav.showIcon ( true );
    }
    behav.showImage( false );
    behav.showMovie( false );
}
function ballToggleVisible( id, enable )
{	
    splashWait(true);
    var behav = findById(id);
    if ( behav == null ) return;	
    if ( enable == true )
    {   if ( CURR_ROUTE )
             prvtDisable( findById(CURR_ROUTE));
        prvtEnable      ( behav );
        AUTO_MODE = true;
        ballClickVisible( id );
    }
	else
    {   if ( AUTO_MODE == true )
             prvtDisable( behav );
    }
}
// creates embedded DIV for parent, defined in HTML
// id    - parent DIV identifier
// behav - clsTtipData class object for this id ( ttipdata.js )
function writeGreenPoint( behav, bEnableWrite, fnClickCallback )
{
	var id              = behav.getId( );
	var bEnableWrite    = (bEnableWrite    == null )?true:false;
	var fnClickCallback = (fnClickCallback == null )?null:fnClickCallback;

	var str  = '';
    var iconRc      = behav.getIconRect ( );
	var imageRc     = behav.getImageRect( );
	
	var strPointStl = ' style="z-index:20; position:relative; left:' + iconRc.x + 'px; top:' + iconRc.y + 'px;" ';
	var strImageStl = ' style="visibility:hidden; z-index:10; position:relative; left:' + imageRc.x + 'px; top:' + imageRc.y + 'px;" ';
	var strPtImgStl = ' style="width:' + iconRc.width + 'px; height:' + iconRc.height + 'px;" ';
	
	str+=' <DIV  ID=\'' + id + '1\'' + strPointStl + ' > ';
	str+=' <A HREF="' + behav.getLink() + '"';

	str+=' onMouseOver="ballToggleVisible(\'' + id + '\',true);"  ';
	str+=' onMouseOut ="ballToggleVisible(\'' + id + '\',false);" ';
	str+=' onClick    ="ballClickVisible (\'' + id + '\','+fnClickCallback+');"  ';

	str+='>';
    //    str+=' <IMG ID=\'' + id + '3\' SRC="' + behav.getImgOn() + '" alt="' + behav.getAlttxt() +'" hspace=0 border=0';
	str+='\n <IMG ID=\'' + id + '3\' SRC="' +  behav.getIconOn() + '" alt="' + "" +'" hspace=0 border=0 '+strPtImgStl;
	str+=' width="'+iconRc.width + '" height="'+iconRc.height + '">';
	str+='\n <\/A>';
	str+=' <\/DIV>'+"\n";
	str+=' <DIV ID=\'' + id + '2\'' + strImageStl + ' > ';
	str+='\n <IMG SRC="' + behav.getImgTtip( ) + '" hspace="0" border="0" ';
	str+=' width="'+imageRc.width + '" height="'+imageRc.height + '">';
	str+='\n <\/DIV>';
	if ( bEnableWrite )
	     document.write(str);
	
	behav.correctTtipPos( );
	return str;

}
function splashWait    ( bForseClose )
{	if ( !SPLASH_ENBL ) return;
	if ( bForseClose )
	{	SPLASH_CNT = 0;
		visi.setVisible( SPLASH_DIV,'hidden');
		visi.setOpacity( SPLASH_DIV,10);
		return false;
	}
	
	if ( SPLASH_CNT > 0 )
	{	visi.setVisible( SPLASH_DIV,'visible');
		SPLASH_CNT -= 50;
		var opasity =  SPLASH_CNT/50;
		if ( opasity > 10 ) opasity = 10;
		if ( opasity <  0 ) opasity =  0;
		
		visi.setOpacity( SPLASH_DIV, opasity);
		
		if ( SPLASH_CNT <= 0 )
			return splashWait(true);//recurs.call  for close
		return true;
	}
	return false;
}
function timer_callback( timerState )
{	
    if ( splashWait(false)) return;
//ROUTES_ARRAY - two dimension array of clsTtipData and clsRouteAnimation objects. Defined in initpagedata.js
	if ( !CURR_ROUTE ) return;
	for ( var i = 0; i < ROUTES_ARRAY.length; i++ )
	{	var behavData      = ROUTES_ARRAY[i][0];
		if ( behavData.getId() == CURR_ROUTE)
		{	
			switch( timerState )
			{	case TM_STATE_START:
					visi.showTtip( CURR_ROUTE+'2', true, behavData.getAlttxt());
					TIME_BREAK = 0;
					break;
				case TM_STATE_RUN:
					if ( visi.pointInObject(behavData.getId(),100,100))
					     break;
					TIME_BREAK += 50;
					if ( TIME_BREAK >= 500 )//2500
					{   AUTO_MODE = true;
						prvtDisable( behavData );
					}
					break;
				case TM_STATE_STOP:
					visi.showTtip( CURR_ROUTE+'2', false,'');
					TIME_BREAK = 0;
					break;
			}
		}
	}
}
var CURR_ROUTE   = null;
var AUTO_MODE    = true;
var TIME_BREAK   = 0;

var SPLASH_ENBL  = false;
var SPLASH_TIME  = 7000;
var SPLASH_CNT   = 0;//SPLASH_TIME set for splash
var SPLASH_DIV   = 'description1';

var TM_ID        = setTimerCallback( timer_callback ); // timerfn.js gpointmap.js


