var eyjafjallajokull_ash_loop_flag = 0;
	
		var eyjafjallajokull_main_factor = 1.0;
		var eyjafjallajokull_main_probability = 0.985;

		var eyjafjallajokull_pos = geo.Coord.new().set_latlon(63.628335, -19.62823);

	
		var eyjafjallajokull_ash_loop = func (timer) {

		if (eyjafjallajokull_ash_loop_flag == 0) 
			{
			print("Ending Eyjafjallajökull ash eruption simulation.");
			return;
			}
			
		if (timer < 0.0) 
			{
			
			if (rand() > 0.6)
				{
				setprop("/environment/volcanoes/eyjafjallajokull/ash-main-alpha", (rand() - 0.5) * 60.0);
				setprop("/environment/volcanoes/eyjafjallajokull/ash-main-beta", (rand() - 0.5) * 60.0);
				}
			else
				{	
				setprop("/environment/volcanoes/eyjafjallajokull/ash-main-alpha", 0.0);
				setprop("/environment/volcanoes/eyjafjallajokull/ash-main-beta", 0.0);					
				}
			timer = 2.0 + 3.0 * rand();
			}
			
		var aircraft_pos = geo.aircraft_position();
		var dist = aircraft_pos.distance_to(eyjafjallajokull_pos);
		var turbulence = 1000000.0/(dist * dist);
		if (turbulence > 1.0) {turbulence = 1.0;}
		
		setprop("/environment/volcanoes/turbulence", turbulence);
		
		timer = timer - 0.1;
		
		settimer(func {eyjafjallajokull_ash_loop(timer);}, 0.1);
		}
	
	
	eyjafjallajokull_state_manager = func {
				
		var state_main = getprop("/environment/volcanoes/eyjafjallajokull/main-activity");
		
		if ( (state_main > 0) and (eyjafjallajokull_ash_loop_flag == 0))
			{
			print ("Starting Eyjafjallajökull ash eruption simulation.");
			eyjafjallajokull_ash_loop_flag = 1;
			eyjafjallajokull_ash_loop(0.0);
			}
		else if  ((state_main < 1) and (eyjafjallajokull_ash_loop_flag == 1)) 
			{
			eyjafjallajokull_ash_loop_flag = 0;	
			setprop("/environment/volcanoes/turbulence", 0);
			
			}
		
		
		

		}
		
	# call state manager once to get correct autosaved behavior, otherwise use listener
		
	eyjafjallajokull_state_manager();
	setlistener("/environment/volcanoes/eyjafjallajokull/main-activity", eyjafjallajokull_state_manager);