{
	Box = ColorToAlpha( [>>img\box.bmp] );
		
	BlendIn = 0.5;
	BlendOut = 0.2;
	TimePerKara = 0.02;
	yoff = 5;
	HighlightDur = 1.5;


	FUNC["drawme"]=
	{
		_a = range( (CurTime() - _start)/BlendIn, 0, 1 );
		_a2 = range( (_end-CurTime())/BlendOut, 0, 1 );
		_py = _rind * (1 - _a) - _rind * (1 - _a2);
		_col0_r = GetParam( _line, _colstr, CurTime(), 0 );
		_col0_g = GetParam( _line, _colstr, CurTime(), 1 );
		_col0_b = GetParam( _line, _colstr, CurTime(), 2 );
		_col1_r = GetParam( _line, _colstr2, CurTime(), 0 );
		_col1_g = GetParam( _line, _colstr2, CurTime(), 1 );
		_col1_b = GetParam( _line, _colstr2, CurTime(), 2 );
		_draw = FillColor( _drawimg, _col0_r*(1-_hi)+_col1_r*_hi, _col0_g*(1-_hi)+_col1_g*_hi, _col0_b*(1-_hi)+_col1_b*_hi );
		DrawFinal( _draw, _posx, _posy + _py*yoff*_yoffmul, 100, 100*_a, range(_a*3,0,1) );
	}

	FUNC["bg_stay"]=
	{
		if( CompEqual(-1,_init) )
		{
			_init = 1;
			_ind = _line * 1000*1000 + _kara*1000 + _char;
			_rind = Rot[_ind];
		}

		_hi = 0;
		CurKara( _line, _kara );
		_drawimg = ImgRescale(Box,CurKaraSizeX+9,CurKaraSizeY+4);
		_colstr = "Color2";
		_colstr2 = "Color3";
		_yoffmul=1;
		CallFunc( "drawme" );
	}

	FUNC["bg_stay2"]=
	{
		if( CompEqual(-1,_init) )
		{
			_init = 1;
			_ind = _line * 1000*1000 + _kara*1000 + _char;
			Rot[_ind] = -1;
			if( CompGreater(rand(0,1),0.5) )
			{
				Rot[_ind] = 1;
			}
			_rind = Rot[_ind];
		}

		_hi = 0;
		CurKara( _line, _kara );
		_drawimg = ImgRescale(Box,CurKaraSizeX+11,CurKaraSizeY+6);
		_colstr = "Color3";
		_colstr2 = "Color2";
		_yoffmul=0.5;
		CallFunc( "drawme" );
	}

	FUNC["fill_stay"]=
	{
		if( CompEqual(-1,_init) )
		{
			_init = 1;
			_ind = _line * 1000*1000 + _kara*1000 + _char;
			_rind = Rot[_ind];
		}

		_hi = 0;
		if( CompGreater( CurTime(), Highlight[_ind] ) )
		{
			_hi = range( 1 - (CurTime()-Highlight[_ind])/HighlightDur, 0,1 );
		}

		_drawimg = _img_text;
		_colstr = "Color0";
		_colstr2 = "Color1";
		_yoffmul=1;
		CallFunc( "drawme" );
	}

	FUNC["highlight_set"]=
	{
		_ind = _line * 1000*1000 + _kara*1000 + _char;
		Highlight[_ind] = _start+3;
	}



	FUNC["perKara_bg2"]=
	{
		Emit( "highlight_set", CurKaraStart-3, CurKaraStart+oneframe, CurLine, CurKara, -1 );
		Emit( "bg_stay2", CurLineStart-BlendIn+TimePerKara*CurKara, CurLineEnd, CurLine, CurKara, -1 );
	}

	FUNC["perKara_bg"]=
	{
		Emit( "bg_stay", CurLineStart-BlendIn+TimePerKara*CurKara, CurLineEnd, CurLine, CurKara, -1 );
	}

	FUNC["perKara_fill"]=
	{
		Emit( "fill_stay", CurLineStart-BlendIn+TimePerKara*CurKara, CurLineEnd, CurLine, CurKara, -1 );
	}

	FUNC["perLine"]=
	{
		EnumKaras( "perKara_bg2", CurLine );
		EnumKaras( "perKara_bg", CurLine );
		EnumKaras( "perKara_fill", CurLine );
	}

	EnumLines( "perLine" );
}