--// Local auxiliary functions - - - - - - - - - - - - - - - - - - - - - - - -

--// 1.	rename:					" -> '
--// 2. comment root compositions routine:
--//	"createComposition16_TempleHall_01 = function()"
--// 3. add auxiliaru routines for managing animations: 
--		auxPlayTempleHallAnimation(), 
--		auxGetTempleHallAnimation(), 
--		auxCreateTempleHallAnimations()
--// 4. replace CreateCompositionElement() with auxCreateCompositionElement() for some corrections ...

------------------------------------------------------------------------------
--
function auxPlayTempleHallAnimation(compositionName)
    local composition = auxGetTempleHallAnimation(compositionName);
    composition:SetVisible(true);
    composition:Play();
end

------------------------------------------------------------------------------
--
function auxHideTempleHallAnimation(compositionName)
    local composition = auxGetTempleHallAnimation(compositionName);
    composition:Stop();
    composition:SetVisible(false);
end

------------------------------------------------------------------------------
--
function auxGetTempleHallAnimation(compositionName)
    assert(templeHallCompositions ~= nil and compositionName ~= nil);
	assert(templeHallCompositions[compositionName] ~= nil and 'Composition with specified name not exists !');

    return templeHallCompositions[compositionName];
end

-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--

function CreateComposition(parent, compositionRoutine, name, x,y,z, hotSpotX,hotSpotY, duration, isCyclic)
    assert(parent ~= nil and compositionRoutine ~= nil and name ~= nil and z ~= nil and duration ~= nil);

    local element = compositionRoutine();
    element:SetName(name);
    element:SetHotSpot(hotSpotX,hotSpotY);
    element:SetXY(x, y);
    assert(z - parent:GetZ());
    element:SetZ(z - parent:GetZ());
    element:AttachTo(parent);

    element:SetScaleX(1);
    element:SetScaleY(1);
    element:SetAngle(0);
    element:SetOpacity(1);
    
    if (isCyclic == true) then
        element:SetDuration(duration);
        element:SetCyclic(true);
	else
		element:SetDestroysOnEnd(false);
    end
	element:Stop();
    element:SetVisible(false);
    element:AssignClippingRect(parent);
	element:SetConsiderParentOpacity(true);

	return element;
end

-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function auxCreateCompositionElement(resourceName)
	local element = CreateCompositionElement(resourceName);
    local texName = string.sub(resourceName, string.len('data/Texture/Scenes/16_TempleHall/Animations/') + 1);

	--// set up flies animation
	if (texName == 'Env/Bug_fly[01-02].png') then
		local anim = element:GetTexture();
		anim:Stop();
		anim:SetTextureRect(0,0, 19,18);
		anim:SetFrames(2);
		anim:SetFrame(0);
		anim:SetSpeed(30.0);
		anim:SetMode(HGEANIM_FWD + HGEANIM_LOOP);
		anim:Play();
    end
	--// set up colibri animation
	if (texName == 'Env/Colibri_[01-02].png') then
		local anim = element:GetTexture();
		anim:Stop();
		anim:SetTextureRect(0,0, 43,26);
		anim:SetFrames(2);
		anim:SetFrame(0);
		anim:SetSpeed(30.0);
		anim:SetMode(HGEANIM_FWD + HGEANIM_LOOP);
		anim:Play();
    end

    --// set additive alpha blending mode for light & flare objects without alpha chanel (*.jpg)
    if (texName == 'Env/Bird_glow01.jpg' or
		texName == 'Env/EF_Dust_01.jpg' or
		texName == 'Env/EF_light_ring_01.jpg') then

        element:GetTexture():SetBlendMode(0);
    end
	return element;
end

------------------------------------------------------------------------------
--
function auxCreateTempleHallAnimations(parent)
    assert(parent ~= nil);

    templeHallCompositions = {};
    local CreateAndRegisterComposition = function (parent, compositionRoutine, name, x,y,z, hotSpotX,hotSpotY, duration, isCyclic)
        local element = CreateComposition(parent, compositionRoutine, name, x,y,z, hotSpotX,hotSpotY, duration, isCyclic);
        templeHallCompositions[element:GetName()] = element;
    end

	--//
    CreateAndRegisterComposition(parent, createCompositionEnvTop,		'EnvTop',		0,0,108.6, 512,384, 10, true);
    CreateAndRegisterComposition(parent, createCompositionFrog,			'Frog',		    5,0,108.5, 512,384, 10, true);
    CreateAndRegisterComposition(parent, createCompositionBird1,		'Bird1',		0,0,108.4, 512,384, 10, true);
    CreateAndRegisterComposition(parent, createCompositionBird2,		'Bird2',		0,0,108.3, 512,384, 10, true);
    CreateAndRegisterComposition(parent, createCompositionBird3,		'Bird3',		0,0,108.2, 512,384, 10, true);
    CreateAndRegisterComposition(parent, createCompositionCrystalGlows,	'CrystalGlows',	0,0,108.1, 512,384, 10, true);
end

------------------------------------------------------------------------------
--createComposition16_TempleHall_01 = function()
--
--    local composition16_TempleHall_01 = CreateCompositionSequence();
--    local compositionDuration = 10;
--    composition16_TempleHall_01:SetDuration(compositionDuration);
--
--
--    -- Layer Layer_1
--    local element = createCompositionEnvTop();
--    element:SetName('Layer_1');
--    composition16_TempleHall_01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(composition16_TempleHall_01);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--
--    -- Layer Layer_2
--    local element = createCompositionFrog();
--    element:SetName('Layer_2');
--    composition16_TempleHall_01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(composition16_TempleHall_01);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--
--    -- Layer Layer_3
--    local element = createCompositionBird1();
--    element:SetName('Layer_3');
--    composition16_TempleHall_01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(composition16_TempleHall_01);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--
--    -- Layer Layer_4
--    local element = createCompositionBird2();
--    element:SetName('Layer_4');
--    composition16_TempleHall_01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(composition16_TempleHall_01);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--
--    -- Layer Layer_5
--    local element = createCompositionBird3();
--    element:SetName('Layer_5');
--    composition16_TempleHall_01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(composition16_TempleHall_01);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--
--    -- Layer Layer_6
--    local element = createCompositionCrystalGlows();
--    element:SetName('Layer_6');
--    composition16_TempleHall_01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(composition16_TempleHall_01);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--
--    -- Layer Layer_7
--    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/16_TempleHall_01.jpg');
--    element:SetName('Layer_7');
--    composition16_TempleHall_01:AddElement(element);
--    element:SetHotSpot(512, 384);
--    element:SetParentElement(composition16_TempleHall_01);
--    element:SetXY(512, 384);
--
--    element:SetScaleX(1);
--    element:SetScaleY(1);
--    element:SetAngle(0);
--    element:SetOpacity(1);
--
--    effector = element:GetEffector();
--    effector:SetLifeTime(0, 10);
--
--
--    effector:Play();
--
--    composition16_TempleHall_01:Play();
--
--    return composition16_TempleHall_01;
--end

createCompositionBird1 = function()

    local compositionBird1 = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionBird1:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = createCompositionColibri_01();
    element:SetName('Layer_1');
    compositionBird1:AddElement(element);
    element:SetHotSpot(64, 64);
    element:SetParentElement(compositionBird1);
    element:SetScaleX(-0.32);
    element:SetScaleY(0.32);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_X, 0, 286.814880371094);
    effector:SetKey(_TRACK_Y, 0, 98.1315002441406);
    effector:SetKey(_TRACK_X, 0.56666666666667, 279.314880371094);
    effector:SetKey(_TRACK_Y, 0.56666666666667, 123.631500244141);
    effector:SetKey(_TRACK_X, 1.05113932291667, 317.314880371094);
    effector:SetKey(_TRACK_Y, 1.05113932291667, 129.631500244141);
    effector:SetKey(_TRACK_X, 2.48951822916667, 348.314880371094);
    effector:SetKey(_TRACK_Y, 2.48951822916667, 97.1315002441406);
    effector:SetKey(_TRACK_X, 2.93209635416667, 321.314880371094);
    effector:SetKey(_TRACK_Y, 2.93209635416667, 60.1315002441406);
    effector:SetKey(_TRACK_X, 3.31936848958333, 272.314880371094);
    effector:SetKey(_TRACK_Y, 3.31936848958333, 60.6315002441406);
    effector:SetKey(_TRACK_X, 3.81725260416667, 231.314880371094);
    effector:SetKey(_TRACK_Y, 3.81725260416667, 89.1315002441406);
    effector:SetKey(_TRACK_X, 4.56666666666667, 231.314880371094);
    effector:SetKey(_TRACK_Y, 4.56666666666667, 89.1315002441406);
    effector:SetKey(_TRACK_X, 5.07942708333333, 225.314880371094);
    effector:SetKey(_TRACK_Y, 5.07942708333333, 128.131500244141);
    effector:SetKey(_TRACK_X, 5.46666666666667, 257.314880371094);
    effector:SetKey(_TRACK_Y, 5.46666666666667, 153.131500244141);
    effector:SetKey(_TRACK_X, 6.33333333333333, 262.814880371094);
    effector:SetKey(_TRACK_Y, 6.33333333333333, 153.131500244141);
    effector:SetKey(_TRACK_X, 7.13662109375, 275.314880371094);
    effector:SetKey(_TRACK_Y, 7.13662109375, 176.631500244141);
    effector:SetKey(_TRACK_X, 7.57919921875, 300.814880371094);
    effector:SetKey(_TRACK_Y, 7.57919921875, 168.131500244141);
    effector:SetKey(_TRACK_X, 8.43333333333333, 300.814880371094);
    effector:SetKey(_TRACK_Y, 8.43333333333333, 168.131500244141);
    effector:SetKey(_TRACK_X, 9.57080078125, 310.814880371094);
    effector:SetKey(_TRACK_Y, 9.57080078125, 106.131500244141);
    effector:SetKey(_TRACK_X, 9.96666666666667, 286.814880371094);
    effector:SetKey(_TRACK_Y, 9.96666666666667, 98.1315002441406);

    effector:Play();

    compositionBird1:Play();

    return compositionBird1;
end

createCompositionBird2 = function()

    local compositionBird2 = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionBird2:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = createCompositionColibri_01();
    element:SetName('Layer_1');
    compositionBird2:AddElement(element);
    element:SetHotSpot(64, 64);
    element:SetParentElement(compositionBird2);
    element:SetScaleX(0.31487889273356);
    element:SetScaleY(0.31487889273356);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_X, 0, 795.842559814453);
    effector:SetKey(_TRACK_Y, 0, 103.891021728516);
    effector:SetKey(_TRACK_X, 0.60856119791667, 753.842559814453);
    effector:SetKey(_TRACK_Y, 0.60856119791667, 93.8910217285156);
    effector:SetKey(_TRACK_X, 2.36666666666667, 753.842559814453);
    effector:SetKey(_TRACK_Y, 2.36666666666667, 93.8910217285156);
    effector:SetKey(_TRACK_X, 3.31936848958333, 779.842559814453);
    effector:SetKey(_TRACK_Y, 3.31936848958333, 40.3910217285156);
    effector:SetKey(_TRACK_X, 4.8, 779.842559814453);
    effector:SetKey(_TRACK_Y, 4.8, 40.3910217285156);
    effector:SetKey(_TRACK_X, 6.63870442708333, 760.342559814453);
    effector:SetKey(_TRACK_Y, 6.63870442708333, 29.3910217285156);
    effector:SetKey(_TRACK_X, 8.16666666666667, 760.342559814453);
    effector:SetKey(_TRACK_Y, 8.16666666666667, 29.3910217285156);
    effector:SetKey(_TRACK_X, 8.7962890625, 759.842559814453);
    effector:SetKey(_TRACK_Y, 8.7962890625, 50.3910217285156);
    effector:SetKey(_TRACK_X, 9.18356119791667, 779.842559814453);
    effector:SetKey(_TRACK_Y, 9.18356119791667, 83.8910217285156);
    effector:SetKey(_TRACK_X, 9.57080078125, 810.342559814453);
    effector:SetKey(_TRACK_Y, 9.57080078125, 112.391021728516);
    effector:SetKey(_TRACK_X, 9.96666666666667, 795.842559814453);
    effector:SetKey(_TRACK_Y, 9.96666666666667, 103.891021728516);

    effector:Play();

    compositionBird2:Play();

    return compositionBird2;
end

createCompositionBird3 = function()

    local compositionBird3 = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionBird3:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = createCompositionColibri_01();
    element:SetName('Layer_1');
    compositionBird3:AddElement(element);
    element:SetHotSpot(64, 64);
    element:SetParentElement(compositionBird3);
    element:SetScaleX(0.4);
    element:SetScaleY(0.4);
    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_X, 0, 740);
    effector:SetKey(_TRACK_Y, 0, 56);
    effector:SetKey(_TRACK_X, 0.23333333333333, 705);
    effector:SetKey(_TRACK_Y, 0.23333333333333, 62.5);
    effector:SetKey(_TRACK_X, 0.4, 669);
    effector:SetKey(_TRACK_Y, 0.4, 58);
    effector:SetKey(_TRACK_X, 0.66666666666667, 643);
    effector:SetKey(_TRACK_Y, 0.66666666666667, 45.5);
    effector:SetKey(_TRACK_X, 0.86666666666667, 626.5);
    effector:SetKey(_TRACK_Y, 0.86666666666667, 31.5);
    effector:SetKey(_TRACK_X, 1.16666666666667, 611);
    effector:SetKey(_TRACK_Y, 1.16666666666667, 30.5);
    effector:SetKey(_TRACK_X, 1.6, 622.937453347573);
    effector:SetKey(_TRACK_Y, 1.6, 55.4999585311763);
    effector:SetKey(_TRACK_X, 1.96666666666667, 651.5);
    effector:SetKey(_TRACK_Y, 1.96666666666667, 66.5);
    effector:SetKey(_TRACK_X, 2.3, 695);
    effector:SetKey(_TRACK_Y, 2.3, 58);
    effector:SetKey(_TRACK_X, 2.63333333333333, 747);
    effector:SetKey(_TRACK_Y, 2.63333333333333, 74);
    effector:SetKey(_TRACK_X, 2.83333333333333, 811.5);
    effector:SetKey(_TRACK_Y, 2.83333333333333, 59.5);
    effector:SetKey(_TRACK_X, 3.1, 873);
    effector:SetKey(_TRACK_Y, 3.1, 39);
    effector:SetKey(_TRACK_X, 3.43333333333333, 901.5);
    effector:SetKey(_TRACK_Y, 3.43333333333333, 39.5);
    effector:SetKey(_TRACK_X, 3.7, 926);
    effector:SetKey(_TRACK_Y, 3.7, 53);
    effector:SetKey(_TRACK_X, 5.43333333333333, 926);
    effector:SetKey(_TRACK_Y, 5.43333333333333, 53);
    effector:SetKey(_TRACK_X, 6.93333333333333, 789.776435199707);
    effector:SetKey(_TRACK_Y, 6.93333333333333, 83.2643116965916);
    effector:SetKey(_TRACK_X, 7.83333333333333, 789.776435199707);
    effector:SetKey(_TRACK_Y, 7.83333333333333, 83.2643116965916);
    effector:SetKey(_TRACK_X, 8.76666666666667, 776.236639640774);
    effector:SetKey(_TRACK_Y, 8.76666666666667, 51.5834635716188);
    effector:SetKey(_TRACK_X, 9.36666666666667, 757.118038133486);
    effector:SetKey(_TRACK_Y, 9.36666666666667, 66.7917661179239);
    effector:SetKey(_TRACK_X, 9.96666666666667, 740);
    effector:SetKey(_TRACK_Y, 9.96666666666667, 56);

    effector:Play();

    compositionBird3:Play();

    return compositionBird3;
end

createCompositionColibri_01 = function()

    local compositionColibri_01 = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionColibri_01:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/Colibri_[01-02].png');
    element:SetName('Layer_1');
    compositionColibri_01:AddElement(element);
    element:SetHotSpot(21.5, 13);
    element:SetParentElement(compositionColibri_01);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_X, 0, 63.3148803710938);
    effector:SetKey(_TRACK_Y, 0, 64.6436004638672);
    effector:SetKey(_TRACK_X, 0.36666666666667, 54.4911476090369);
    effector:SetKey(_TRACK_Y, 0.36666666666667, 63.3615384657835);
    effector:SetKey(_TRACK_X, 0.63333333333333, 51.5648803710938);
    effector:SetKey(_TRACK_Y, 0.63333333333333, 56.1436004638672);
    effector:SetKey(_TRACK_X, 1.06666666666667, 58.7392895184284);
    effector:SetKey(_TRACK_Y, 1.06666666666667, 49.2849529251855);
    effector:SetKey(_TRACK_X, 1.4, 70.3653737929077);
    effector:SetKey(_TRACK_Y, 1.4, 48.9939574073071);
    effector:SetKey(_TRACK_X, 1.7, 71.2057830215267);
    effector:SetKey(_TRACK_Y, 1.7, 54.9522368905405);
    effector:SetKey(_TRACK_X, 1.96666666666667, 63.3148803710938);
    effector:SetKey(_TRACK_Y, 1.96666666666667, 64.6436004638672);
    effector:SetKey(_TRACK_X, 2.23333333333333, 54.4911476090369);
    effector:SetKey(_TRACK_Y, 2.23333333333333, 63.3615384657835);
    effector:SetKey(_TRACK_X, 2.5, 51.5648803710938);
    effector:SetKey(_TRACK_Y, 2.5, 56.1436004638672);
    effector:SetKey(_TRACK_X, 2.93333333333333, 58.7392895184284);
    effector:SetKey(_TRACK_Y, 2.93333333333333, 49.2849529251855);
    effector:SetKey(_TRACK_X, 3.26666666666667, 70.3653737929077);
    effector:SetKey(_TRACK_Y, 3.26666666666667, 48.9939574073071);
    effector:SetKey(_TRACK_X, 3.56666666666667, 71.2057830215267);
    effector:SetKey(_TRACK_Y, 3.56666666666667, 54.9522368905405);
    effector:SetKey(_TRACK_X, 3.83333333333333, 63.3148803710938);
    effector:SetKey(_TRACK_Y, 3.83333333333333, 64.6436004638672);
    effector:SetKey(_TRACK_X, 4.2, 54.4911476090369);
    effector:SetKey(_TRACK_Y, 4.2, 63.3615384657835);
    effector:SetKey(_TRACK_X, 4.46666666666667, 51.5648803710938);
    effector:SetKey(_TRACK_Y, 4.46666666666667, 56.1436004638672);
    effector:SetKey(_TRACK_X, 4.9, 58.7392895184284);
    effector:SetKey(_TRACK_Y, 4.9, 49.2849529251855);
    effector:SetKey(_TRACK_X, 5.23333333333333, 70.3653737929077);
    effector:SetKey(_TRACK_Y, 5.23333333333333, 48.9939574073071);
    effector:SetKey(_TRACK_X, 5.53333333333333, 71.2057830215267);
    effector:SetKey(_TRACK_Y, 5.53333333333333, 54.9522368905405);
    effector:SetKey(_TRACK_X, 5.8, 63.3148803710938);
    effector:SetKey(_TRACK_Y, 5.8, 64.6436004638672);
    effector:SetKey(_TRACK_X, 6.26666666666667, 54.4911476090369);
    effector:SetKey(_TRACK_Y, 6.26666666666667, 63.3615384657835);
    effector:SetKey(_TRACK_X, 6.53333333333333, 51.5648803710938);
    effector:SetKey(_TRACK_Y, 6.53333333333333, 56.1436004638672);
    effector:SetKey(_TRACK_X, 6.96666666666667, 58.7392895184284);
    effector:SetKey(_TRACK_Y, 6.96666666666667, 49.2849529251855);
    effector:SetKey(_TRACK_X, 7.3, 70.3653737929077);
    effector:SetKey(_TRACK_Y, 7.3, 48.9939574073071);
    effector:SetKey(_TRACK_X, 7.6, 71.2057830215267);
    effector:SetKey(_TRACK_Y, 7.6, 54.9522368905405);
    effector:SetKey(_TRACK_X, 7.86666666666667, 63.3148803710938);
    effector:SetKey(_TRACK_Y, 7.86666666666667, 64.6436004638672);
    effector:SetKey(_TRACK_X, 8.36666666666667, 54.4911476090369);
    effector:SetKey(_TRACK_Y, 8.36666666666667, 63.3615384657835);
    effector:SetKey(_TRACK_X, 8.63333333333333, 51.5648803710938);
    effector:SetKey(_TRACK_Y, 8.63333333333333, 56.1436004638672);
    effector:SetKey(_TRACK_X, 9.06666666666667, 58.7392895184284);
    effector:SetKey(_TRACK_Y, 9.06666666666667, 49.2849529251855);
    effector:SetKey(_TRACK_X, 9.4, 70.3653737929077);
    effector:SetKey(_TRACK_Y, 9.4, 48.9939574073071);
    effector:SetKey(_TRACK_X, 9.7, 71.2057830215267);
    effector:SetKey(_TRACK_Y, 9.7, 54.9522368905405);
    effector:SetKey(_TRACK_X, 9.96666666666667, 63.3148803710938);
    effector:SetKey(_TRACK_Y, 9.96666666666667, 64.6436004638672);
    effector:SetKey(_TRACK_SX, 0, 1);
    effector:SetKey(_TRACK_SY, 0, 1);
    effector:SetKey(_TRACK_SX, 0.53333333333333, 0.9);
    effector:SetKey(_TRACK_SY, 0.53333333333333, 0.9);
    effector:SetKey(_TRACK_SX, 1.2, 1.1);
    effector:SetKey(_TRACK_SY, 1.2, 1.1);
    effector:SetKey(_TRACK_SX, 1.96666666666667, 1);
    effector:SetKey(_TRACK_SY, 1.96666666666667, 1);
    effector:SetKey(_TRACK_SX, 2.4, 0.9);
    effector:SetKey(_TRACK_SY, 2.4, 0.9);
    effector:SetKey(_TRACK_SX, 3.06666666666667, 1.1);
    effector:SetKey(_TRACK_SY, 3.06666666666667, 1.1);
    effector:SetKey(_TRACK_SX, 3.83333333333333, 1);
    effector:SetKey(_TRACK_SY, 3.83333333333333, 1);
    effector:SetKey(_TRACK_SX, 4.36666666666667, 0.9);
    effector:SetKey(_TRACK_SY, 4.36666666666667, 0.9);
    effector:SetKey(_TRACK_SX, 5.03333333333333, 1.1);
    effector:SetKey(_TRACK_SY, 5.03333333333333, 1.1);
    effector:SetKey(_TRACK_SX, 5.8, 1);
    effector:SetKey(_TRACK_SY, 5.8, 1);
    effector:SetKey(_TRACK_SX, 6.43333333333333, 0.9);
    effector:SetKey(_TRACK_SY, 6.43333333333333, 0.9);
    effector:SetKey(_TRACK_SX, 7.1, 1.1);
    effector:SetKey(_TRACK_SY, 7.1, 1.1);
    effector:SetKey(_TRACK_SX, 7.86666666666667, 1);
    effector:SetKey(_TRACK_SY, 7.86666666666667, 1);
    effector:SetKey(_TRACK_SX, 8.53333333333333, 0.9);
    effector:SetKey(_TRACK_SY, 8.53333333333333, 0.9);
    effector:SetKey(_TRACK_SX, 9.2, 1.1);
    effector:SetKey(_TRACK_SY, 9.2, 1.1);
    effector:SetKey(_TRACK_SX, 9.96666666666667, 1);
    effector:SetKey(_TRACK_SY, 9.96666666666667, 1);
    effector:SetKey(_TRACK_A, 0, 0);
    effector:SetKey(_TRACK_A, 0.5, -0.09674850812134);
    effector:SetKey(_TRACK_A, 1.03333333333333, 0.10672828623168);
    effector:SetKey(_TRACK_A, 1.56666666666667, -0.30018515852839);
    effector:SetKey(_TRACK_A, 1.96666666666667, 0);
    effector:SetKey(_TRACK_A, 2.36666666666667, -0.09674850812134);
    effector:SetKey(_TRACK_A, 2.9, 0.10672828623168);
    effector:SetKey(_TRACK_A, 3.43333333333333, -0.30018515852839);
    effector:SetKey(_TRACK_A, 3.83333333333333, 0);
    effector:SetKey(_TRACK_A, 4.33333333333333, -0.09674850812134);
    effector:SetKey(_TRACK_A, 4.86666666666667, 0.10672828623168);
    effector:SetKey(_TRACK_A, 5.4, -0.30018515852839);
    effector:SetKey(_TRACK_A, 5.8, 0);
    effector:SetKey(_TRACK_A, 6.4, -0.09674850812134);
    effector:SetKey(_TRACK_A, 6.93333333333333, 0.10672828623168);
    effector:SetKey(_TRACK_A, 7.46666666666667, -0.30018515852839);
    effector:SetKey(_TRACK_A, 7.86666666666667, 0);
    effector:SetKey(_TRACK_A, 8.5, -0.09674850812134);
    effector:SetKey(_TRACK_A, 9.03333333333333, 0.10672828623168);
    effector:SetKey(_TRACK_A, 9.56666666666667, -0.30018515852839);
    effector:SetKey(_TRACK_A, 9.96666666666667, 0);

    effector:Play();

    compositionColibri_01:Play();

    return compositionColibri_01;
end

createCompositionCrystalGlows = function()

    local compositionCrystalGlows = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionCrystalGlows:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/Bird_glow01.jpg');
    element:SetName('Layer_1');
    compositionCrystalGlows:AddElement(element);
    element:SetHotSpot(48, 48);
    element:SetParentElement(compositionCrystalGlows);
    element:SetXY(297.934265136719, 172.141860961914);

    element:SetScaleX(3.30219146482122);
    element:SetScaleY(2.12355824682814);
    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_O, 0, 0.2);
    effector:SetKey(_TRACK_O, 0.56666666666667, 0.15);
    effector:SetKey(_TRACK_O, 1.66666666666667, 0);
    effector:SetKey(_TRACK_O, 2.66666666666667, 0.15);
    effector:SetKey(_TRACK_O, 3.46666666666667, 0.05);
    effector:SetKey(_TRACK_O, 4.4, 0.3);
    effector:SetKey(_TRACK_O, 5.23333333333333, 0.05);
    effector:SetKey(_TRACK_O, 6.06666666666667, 0.15);
    effector:SetKey(_TRACK_O, 6.7, 0.05);
    effector:SetKey(_TRACK_O, 7.9, 0.4);
    effector:SetKey(_TRACK_O, 8.9, 0.05);
    effector:SetKey(_TRACK_O, 9.96666666666667, 0.2);

    effector:Play();


    -- Layer Layer_2
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/Bird_glow01.jpg');
    element:SetName('Layer_2');
    compositionCrystalGlows:AddElement(element);
    element:SetHotSpot(48, 48);
    element:SetParentElement(compositionCrystalGlows);
    element:SetXY(778.930801391602, 162.8408203125);

    element:SetScaleX(3.30219146482122);
    element:SetScaleY(2.12355824682814);
    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_O, 0, 0.2);
    effector:SetKey(_TRACK_O, 0.9, 0.15);
    effector:SetKey(_TRACK_O, 2, 0);
    effector:SetKey(_TRACK_O, 3, 0.15);
    effector:SetKey(_TRACK_O, 3.8, 0.05);
    effector:SetKey(_TRACK_O, 4.73333333333333, 0.3);
    effector:SetKey(_TRACK_O, 5.56666666666667, 0.05);
    effector:SetKey(_TRACK_O, 6.4, 0.15);
    effector:SetKey(_TRACK_O, 7.03333333333333, 0.05);
    effector:SetKey(_TRACK_O, 8.23333333333333, 0.4);
    effector:SetKey(_TRACK_O, 9.1, 0.05);
    effector:SetKey(_TRACK_O, 9.96666666666667, 0.2);

    effector:Play();


    -- Layer Layer_3
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/Bird_glow01.jpg');
    element:SetName('Layer_3');
    compositionCrystalGlows:AddElement(element);
    element:SetHotSpot(48, 48);
    element:SetParentElement(compositionCrystalGlows);
    element:SetXY(716.480972290039, 273.124557495117);

    element:SetScaleX(2.33333333333333);
    element:SetScaleY(1.70833333333333);
    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_O, 0, 0.2);
    effector:SetKey(_TRACK_O, 0.93333333333333, 0.4);
    effector:SetKey(_TRACK_O, 1.8, 0.05);
    effector:SetKey(_TRACK_O, 2.66666666666667, 0.15);
    effector:SetKey(_TRACK_O, 3.76666666666667, 0);
    effector:SetKey(_TRACK_O, 4.76666666666667, 0.15);
    effector:SetKey(_TRACK_O, 5.56666666666667, 0.05);
    effector:SetKey(_TRACK_O, 6.5, 0.3);
    effector:SetKey(_TRACK_O, 7.33333333333333, 0.05);
    effector:SetKey(_TRACK_O, 8.16666666666667, 0.15);
    effector:SetKey(_TRACK_O, 9.16666666666667, 0.05);
    effector:SetKey(_TRACK_O, 9.96666666666667, 0.2);

    effector:Play();


    -- Layer Layer_4
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/Bird_glow01.jpg');
    element:SetName('Layer_4');
    compositionCrystalGlows:AddElement(element);
    element:SetHotSpot(48, 48);
    element:SetParentElement(compositionCrystalGlows);
    element:SetXY(363.041519165039, 275.781997680664);

    element:SetScaleX(2.33333333333333);
    element:SetScaleY(1.70833333333333);
    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_O, 0, 0.2);
    effector:SetKey(_TRACK_O, 0.56666666666667, 0.4);
    effector:SetKey(_TRACK_O, 1.43333333333333, 0.05);
    effector:SetKey(_TRACK_O, 2.3, 0.15);
    effector:SetKey(_TRACK_O, 3.4, 0);
    effector:SetKey(_TRACK_O, 4.4, 0.15);
    effector:SetKey(_TRACK_O, 5.2, 0.05);
    effector:SetKey(_TRACK_O, 6.13333333333333, 0.3);
    effector:SetKey(_TRACK_O, 6.96666666666667, 0.05);
    effector:SetKey(_TRACK_O, 7.8, 0.15);
    effector:SetKey(_TRACK_O, 8.8, 0.05);
    effector:SetKey(_TRACK_O, 9.96666666666667, 0.2);

    effector:Play();

    compositionCrystalGlows:Play();

    return compositionCrystalGlows;
end

createCompositionEnvTop = function()

    local compositionEnvTop = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionEnvTop:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/EF_light_ring_01.jpg');
    element:SetName('Layer_1');
    compositionEnvTop:AddElement(element);
    element:SetHotSpot(128, 80);
    element:SetParentElement(compositionEnvTop);
    element:SetXY(540, 356);

    element:SetScaleX(2.5);
    element:SetScaleY(5.3875);
    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_O, 0, 0.3);
    effector:SetKey(_TRACK_O, 0.73333333333333, 0.2);
    effector:SetKey(_TRACK_O, 1.6, 0.4);
    effector:SetKey(_TRACK_O, 2.2, 0.3);
    effector:SetKey(_TRACK_O, 2.83333333333333, 0.5);
    effector:SetKey(_TRACK_O, 3.16666666666667, 0.36778570229667);
    effector:SetKey(_TRACK_O, 3.7, 0.39999999455043);
    effector:SetKey(_TRACK_O, 4.1, 0.45);
    effector:SetKey(_TRACK_O, 4.73333333333333, 0.25);
    effector:SetKey(_TRACK_O, 5.26666666666667, 0.3);
    effector:SetKey(_TRACK_O, 5.9, 0.15);
    effector:SetKey(_TRACK_O, 6.76666666666667, 0.25000000544957);
    effector:SetKey(_TRACK_O, 7.3, 0.35000000871931);
    effector:SetKey(_TRACK_O, 8.06666666666667, 0.29999999128069);
    effector:SetKey(_TRACK_O, 8.53333333333333, 0.39999999455043);
    effector:SetKey(_TRACK_O, 9.2, 0.25);
    effector:SetKey(_TRACK_O, 9.96666666666667, 0.3);

    effector:Play();


    -- Layer Layer_2
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/EF_Dust_01.jpg');
    element:SetName('Layer_2');
    compositionEnvTop:AddElement(element);
    element:SetHotSpot(130.5, 131);
    element:SetParentElement(compositionEnvTop);
    element:SetScaleX(1.5);
    element:SetScaleY(1.5);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_X, 0, 635.128036499023);
    effector:SetKey(_TRACK_Y, 0, 538.131484985352);
    effector:SetKey(_TRACK_X, 9.96666666666667, 623.169555664063);
    effector:SetKey(_TRACK_Y, 9.96666666666667, 301.619369506836);
    effector:SetKey(_TRACK_A, 0, 0.7853981625);
    effector:SetKey(_TRACK_A, 9.96666666666667, 0.7853981625);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.73333333333333, 0.4);
    effector:SetKey(_TRACK_O, 1.36666666666667, 0);
    effector:SetKey(_TRACK_O, 2.26666666666667, 0.6);
    effector:SetKey(_TRACK_O, 2.73333333333333, 0.2);
    effector:SetKey(_TRACK_O, 3.2, 0.6);
    effector:SetKey(_TRACK_O, 3.56666666666667, 0);
    effector:SetKey(_TRACK_O, 4.2, 0.2);
    effector:SetKey(_TRACK_O, 4.6, 0);
    effector:SetKey(_TRACK_O, 5.2, 0.4);
    effector:SetKey(_TRACK_O, 5.86666666666667, 0);
    effector:SetKey(_TRACK_O, 6.6, 0.6);
    effector:SetKey(_TRACK_O, 7.7, 0);
    effector:SetKey(_TRACK_O, 8.26666666666667, 0.8);
    effector:SetKey(_TRACK_O, 8.66666666666667, 0);
    effector:SetKey(_TRACK_O, 9.2, 0.2);
    effector:SetKey(_TRACK_O, 9.96666666666667, 0);

    effector:Play();


    -- Layer Layer_3
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/EF_Dust_01.jpg');
    element:SetName('Layer_3');
    compositionEnvTop:AddElement(element);
    element:SetHotSpot(130.5, 131);
    element:SetParentElement(compositionEnvTop);
    element:SetScaleX(1.5);
    element:SetScaleY(1.5);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_X, 0, 293.647064208984);
    effector:SetKey(_TRACK_Y, 0, 589.951553344727);
    effector:SetKey(_TRACK_X, 9.96666666666667, 308.262985229492);
    effector:SetKey(_TRACK_Y, 9.96666666666667, 370.712799072266);
    effector:SetKey(_TRACK_A, 0, 0);
    effector:SetKey(_TRACK_A, 9.96666666666667, -0.7853981625);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 1.1, 0.4);
    effector:SetKey(_TRACK_O, 1.73333333333333, 0);
    effector:SetKey(_TRACK_O, 2.63333333333333, 0.6);
    effector:SetKey(_TRACK_O, 3.1, 0.2);
    effector:SetKey(_TRACK_O, 3.56666666666667, 0.6);
    effector:SetKey(_TRACK_O, 3.93333333333333, 0);
    effector:SetKey(_TRACK_O, 4.56666666666667, 0.2);
    effector:SetKey(_TRACK_O, 4.96666666666667, 0);
    effector:SetKey(_TRACK_O, 5.56666666666667, 0.4);
    effector:SetKey(_TRACK_O, 6.23333333333333, 0);
    effector:SetKey(_TRACK_O, 6.96666666666667, 0.6);
    effector:SetKey(_TRACK_O, 8.06666666666667, 0);
    effector:SetKey(_TRACK_O, 8.63333333333333, 0.8);
    effector:SetKey(_TRACK_O, 9.03333333333333, 0);
    effector:SetKey(_TRACK_O, 9.56666666666667, 0.2);
    effector:SetKey(_TRACK_O, 9.96666666666667, 0);

    effector:Play();

    compositionEnvTop:Play();

    return compositionEnvTop;
end

createCompositionFrog = function()

    local compositionFrog = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionFrog:SetDuration(compositionDuration);

    compositionFrog:Play();

    return compositionFrog;
end

createCompositionFrog = function()

    local compositionFrog = CreateCompositionSequence();
    local compositionDuration = 10;
    compositionFrog:SetDuration(compositionDuration);


    -- Layer Layer_1
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/Bug_fly[01-02].png');
    element:SetName('Layer_1');
    compositionFrog:AddElement(element);
    element:SetHotSpot(9.5, 9);
    element:SetParentElement(compositionFrog);
    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_X, 0, 251.314880371094);
    effector:SetKey(_TRACK_Y, 0, 810.534606933594);
    effector:SetKey(_TRACK_X, 0.36666666666667, 279.629999151726);
    effector:SetKey(_TRACK_Y, 0.36666666666667, 731.430268420489);
    effector:SetKey(_TRACK_X, 0.63333333333333, 305.814880371094);
    effector:SetKey(_TRACK_Y, 0.63333333333333, 705.534606933594);
    effector:SetKey(_TRACK_X, 0.9, 345.314880371094);
    effector:SetKey(_TRACK_Y, 0.9, 688.534606933594);
    effector:SetKey(_TRACK_X, 1.1, 384.814880371094);
    effector:SetKey(_TRACK_Y, 1.1, 679.034606933594);
    effector:SetKey(_TRACK_X, 1.33333333333333, 419.814880371094);
    effector:SetKey(_TRACK_Y, 1.33333333333333, 674.034606933594);
    effector:SetKey(_TRACK_X, 1.53333333333333, 447.814880371094);
    effector:SetKey(_TRACK_Y, 1.53333333333333, 665.534606933594);
    effector:SetKey(_TRACK_X, 1.83333333333333, 482.314880371094);
    effector:SetKey(_TRACK_Y, 1.83333333333333, 666.534606933594);
    effector:SetKey(_TRACK_X, 2.13333333333333, 513.814880371094);
    effector:SetKey(_TRACK_Y, 2.13333333333333, 676.034606933594);
    effector:SetKey(_TRACK_X, 2.36666666666667, 541.314880371094);
    effector:SetKey(_TRACK_Y, 2.36666666666667, 692.534606933594);
    effector:SetKey(_TRACK_X, 2.6, 570.814880371094);
    effector:SetKey(_TRACK_Y, 2.6, 697.034606933594);
    effector:SetKey(_TRACK_X, 2.8, 594.314880371094);
    effector:SetKey(_TRACK_Y, 2.8, 692.534606933594);
    effector:SetKey(_TRACK_X, 2.96666666666667, 615.314880371094);
    effector:SetKey(_TRACK_Y, 2.96666666666667, 679.534606933594);
    effector:SetKey(_TRACK_X, 3.13333333333333, 465.314880371094);
    effector:SetKey(_TRACK_Y, 3.13333333333333, 700.534606933594);
    effector:SetKey(_TRACK_X, 3.16666666666667, 435.314880371094);
    effector:SetKey(_TRACK_Y, 3.16666666666667, 704.034606933594);
    effector:SetKey(_TRACK_X, 5.3, 302.314880371094);
    effector:SetKey(_TRACK_Y, 5.3, 814.034606933594);
    effector:SetKey(_TRACK_X, 5.53333333333333, 292.314880371094);
    effector:SetKey(_TRACK_Y, 5.53333333333333, 755.034606933594);
    effector:SetKey(_TRACK_X, 5.73333333333333, 279.814880371094);
    effector:SetKey(_TRACK_Y, 5.73333333333333, 719.534606933594);
    effector:SetKey(_TRACK_X, 6, 254.814880371094);
    effector:SetKey(_TRACK_Y, 6, 684.534606933594);
    effector:SetKey(_TRACK_X, 6.26666666666667, 218.314880371094);
    effector:SetKey(_TRACK_Y, 6.26666666666667, 651.534606933594);
    effector:SetKey(_TRACK_X, 6.53333333333333, 200.814880371094);
    effector:SetKey(_TRACK_Y, 6.53333333333333, 614.034606933594);
    effector:SetKey(_TRACK_X, 6.83333333333333, 243.613225015872);
    effector:SetKey(_TRACK_Y, 6.83333333333333, 571.915723601708);
    effector:SetKey(_TRACK_X, 7.26666666666667, 335.330461768057);
    effector:SetKey(_TRACK_Y, 7.26666666666667, 560.560001874311);
    effector:SetKey(_TRACK_X, 7.63333333333333, 430.660132387159);
    effector:SetKey(_TRACK_Y, 7.63333333333333, 570.505514755496);
    effector:SetKey(_TRACK_X, 8.06666666666667, 531.882099132199);
    effector:SetKey(_TRACK_Y, 8.06666666666667, 606.482805344364);
    effector:SetKey(_TRACK_X, 8.36666666666667, 579.22895397815);
    effector:SetKey(_TRACK_Y, 8.36666666666667, 613.683242982275);
    effector:SetKey(_TRACK_X, 8.63333333333333, 621.314880371094);
    effector:SetKey(_TRACK_Y, 8.63333333333333, 607.534606933594);
    effector:SetKey(_TRACK_X, 8.83333333333333, 633.814880371094);
    effector:SetKey(_TRACK_Y, 8.83333333333333, 644.034606933594);
    effector:SetKey(_TRACK_X, 9.06666666666667, 655.314880371094);
    effector:SetKey(_TRACK_Y, 9.06666666666667, 688.034606933594);
    effector:SetKey(_TRACK_X, 9.33333333333333, 692.814880371094);
    effector:SetKey(_TRACK_Y, 9.33333333333333, 727.034606933594);
    effector:SetKey(_TRACK_X, 9.5, 735.314880371094);
    effector:SetKey(_TRACK_Y, 9.5, 746.534606933594);
    effector:SetKey(_TRACK_X, 9.76666666666667, 788.814880371094);
    effector:SetKey(_TRACK_Y, 9.76666666666667, 822.034606933594);
    effector:SetKey(_TRACK_X, 9.96666666666667, 800.814880371094);
    effector:SetKey(_TRACK_Y, 9.96666666666667, 802.034606933594);
    effector:SetKey(_TRACK_SX, 0, 2);
    effector:SetKey(_TRACK_SY, 0, 2);
    effector:SetKey(_TRACK_SX, 0.63333333333333, 1.2);
    effector:SetKey(_TRACK_SY, 0.63333333333333, 1.2);
    effector:SetKey(_TRACK_SX, 1.36666666666667, 1.5);
    effector:SetKey(_TRACK_SY, 1.36666666666667, 1.5);
    effector:SetKey(_TRACK_SX, 2.13333333333333, 1.2);
    effector:SetKey(_TRACK_SY, 2.13333333333333, 1.2);
    effector:SetKey(_TRACK_SX, 2.93333333333333, 1);
    effector:SetKey(_TRACK_SY, 2.93333333333333, 1);
    effector:SetKey(_TRACK_SX, 2.96666666666667, 2);
    effector:SetKey(_TRACK_SY, 2.96666666666667, 2);
    effector:SetKey(_TRACK_SX, 3.16666666666667, 1.2);
    effector:SetKey(_TRACK_SY, 3.16666666666667, 1.2);
    effector:SetKey(_TRACK_SX, 5.33333333333333, 1.5);
    effector:SetKey(_TRACK_SY, 5.33333333333333, 1.5);
    effector:SetKey(_TRACK_SX, 6.9, 1);
    effector:SetKey(_TRACK_SY, 6.9, 1);
    effector:SetKey(_TRACK_SX, 8.9, 0.9);
    effector:SetKey(_TRACK_SY, 8.9, 0.9);
    effector:SetKey(_TRACK_SX, 9.96666666666667, 1.4);
    effector:SetKey(_TRACK_SY, 9.96666666666667, 1.4);
    effector:SetKey(_TRACK_O, 0, 1);
    effector:SetKey(_TRACK_O, 3.13333333333333, 1);
    effector:SetKey(_TRACK_O, 3.16666666666667, 0);
    effector:SetKey(_TRACK_O, 5.23333333333333, 0);
    effector:SetKey(_TRACK_O, 5.3, 1);
    effector:SetKey(_TRACK_O, 9.96666666666667, 1);

    effector:Play();


    -- Layer Layer_2
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/jaba_yazik.png');
    element:SetName('Layer_2');
    compositionFrog:AddElement(element);
    element:SetHotSpot(111.75, 5.25);
    compositionFrog:RegisterParentInfo('Layer_2', 'Layer_6');
    element:SetXY(139.809692382813, 22.8157501220703);

    element:SetAngle(-0.13916399110136);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_SX, 2.86666666666667, -0.08442691412014);
    effector:SetKey(_TRACK_SY, 2.86666666666667, 0.96433036769296);
    effector:SetKey(_TRACK_SX, 2.96666666666667, -1.74305689700499);
    effector:SetKey(_TRACK_SY, 2.96666666666667, 1.73880434498923);
    effector:SetKey(_TRACK_SX, 3.16666666666667, -0.08442691412014);
    effector:SetKey(_TRACK_SY, 3.16666666666667, 0.96433036769296);
    effector:SetKey(_TRACK_O, 2.86666666666667, 0);
    effector:SetKey(_TRACK_O, 2.9, 1);
    effector:SetKey(_TRACK_O, 3.13333333333333, 1);
    effector:SetKey(_TRACK_O, 3.16666666666667, 0);

    effector:Play();


    -- Layer Layer_3
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/jaba_eye.png');
    element:SetName('Layer_3');
    compositionFrog:AddElement(element);
    element:SetHotSpot(9.5, 4);
    compositionFrog:RegisterParentInfo('Layer_3', 'Layer_6');
    element:SetXY(142.622192382813, 7.75325012207031);

    element:SetAngle(-0.07463428505386);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_SX, 0, 0.17533099756238);
    effector:SetKey(_TRACK_SY, 0, 0.09064606884396);
    effector:SetKey(_TRACK_SX, 0.63333333333333, 0.17533099756238);
    effector:SetKey(_TRACK_SY, 0.63333333333333, 0.09064606884396);
    effector:SetKey(_TRACK_SX, 0.73333333333333, 0.34638362914132);
    effector:SetKey(_TRACK_SY, 0.73333333333333, 0.93886035455825);
    effector:SetKey(_TRACK_SX, 0.9, 0.08322573440448);
    effector:SetKey(_TRACK_SY, 0.9, 0.1442174974154);
    effector:SetKey(_TRACK_SX, 5.96666666666667, 0.17533099756238);
    effector:SetKey(_TRACK_SY, 5.96666666666667, 0.09064606884396);
    effector:SetKey(_TRACK_SX, 6.06666666666667, 0.34638362914132);
    effector:SetKey(_TRACK_SY, 6.06666666666667, 0.93886035455825);
    effector:SetKey(_TRACK_SX, 6.23333333333333, 0.08322573440448);
    effector:SetKey(_TRACK_SY, 6.23333333333333, 0.1442174974154);
    effector:SetKey(_TRACK_SX, 6.39755859375, 0.17533099756238);
    effector:SetKey(_TRACK_SY, 6.39755859375, 0.09064606884396);
    effector:SetKey(_TRACK_SX, 6.44283854166667, 0.34638362914132);
    effector:SetKey(_TRACK_SY, 6.44283854166667, 0.93886035455825);
    effector:SetKey(_TRACK_SX, 6.51826171875, 0.08322573440448);
    effector:SetKey(_TRACK_SY, 6.51826171875, 0.1442174974154);
    effector:SetKey(_TRACK_SX, 9.96666666666667, 0.08322573440448);
    effector:SetKey(_TRACK_SY, 9.96666666666667, 0.1442174974154);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.6, 0);
    effector:SetKey(_TRACK_O, 0.66666666666667, 1);
    effector:SetKey(_TRACK_O, 0.73333333333333, 1);
    effector:SetKey(_TRACK_O, 0.9, 1);
    effector:SetKey(_TRACK_O, 0.93333333333333, 0);
    effector:SetKey(_TRACK_O, 5.93333333333333, 0);
    effector:SetKey(_TRACK_O, 6, 1);
    effector:SetKey(_TRACK_O, 6.06666666666667, 1);
    effector:SetKey(_TRACK_O, 6.23333333333333, 1);
    effector:SetKey(_TRACK_O, 6.26666666666667, 0);
    effector:SetKey(_TRACK_O, 6.38248697916667, 0);
    effector:SetKey(_TRACK_O, 6.41266276041667, 1);
    effector:SetKey(_TRACK_O, 6.44283854166667, 1);
    effector:SetKey(_TRACK_O, 6.51826171875, 1);
    effector:SetKey(_TRACK_O, 6.53333333333333, 0);
    effector:SetKey(_TRACK_O, 9.96666666666667, 0);

    effector:Play();


    -- Layer Layer_4
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/jaba_eye.png');
    element:SetName('Layer_4');
    compositionFrog:AddElement(element);
    element:SetHotSpot(9.5, 4);
    compositionFrog:RegisterParentInfo('Layer_4', 'Layer_6');
    element:SetXY(120.122192382813, 10.7532501220703);

    element:SetAngle(0);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_SX, 0, 0.82894736842105);
    effector:SetKey(_TRACK_SY, 0, 0.15178571428571);
    effector:SetKey(_TRACK_SX, 0.63333333333333, 0.82894736842105);
    effector:SetKey(_TRACK_SY, 0.63333333333333, 0.15178571428571);
    effector:SetKey(_TRACK_SX, 0.73333333333333, 1);
    effector:SetKey(_TRACK_SY, 0.73333333333333, 1);
    effector:SetKey(_TRACK_SX, 0.9, 0.73684210526316);
    effector:SetKey(_TRACK_SY, 0.9, 0.20535714285715);
    effector:SetKey(_TRACK_SX, 5.96666666666667, 0.82894736842105);
    effector:SetKey(_TRACK_SY, 5.96666666666667, 0.15178571428571);
    effector:SetKey(_TRACK_SX, 6.06666666666667, 1);
    effector:SetKey(_TRACK_SY, 6.06666666666667, 1);
    effector:SetKey(_TRACK_SX, 6.23333333333333, 0.73684210526316);
    effector:SetKey(_TRACK_SY, 6.23333333333333, 0.20535714285715);
    effector:SetKey(_TRACK_SX, 6.39755859375, 0.82894736842105);
    effector:SetKey(_TRACK_SY, 6.39755859375, 0.15178571428571);
    effector:SetKey(_TRACK_SX, 6.44283854166667, 1);
    effector:SetKey(_TRACK_SY, 6.44283854166667, 1);
    effector:SetKey(_TRACK_SX, 6.51826171875, 0.73684210526316);
    effector:SetKey(_TRACK_SY, 6.51826171875, 0.20535714285715);
    effector:SetKey(_TRACK_SX, 9.96666666666667, 0.73684210526316);
    effector:SetKey(_TRACK_SY, 9.96666666666667, 0.20535714285715);
    effector:SetKey(_TRACK_O, 0, 0);
    effector:SetKey(_TRACK_O, 0.6, 0);
    effector:SetKey(_TRACK_O, 0.66666666666667, 1);
    effector:SetKey(_TRACK_O, 0.73333333333333, 1);
    effector:SetKey(_TRACK_O, 0.9, 1);
    effector:SetKey(_TRACK_O, 0.93333333333333, 0);
    effector:SetKey(_TRACK_O, 5.93333333333333, 0);
    effector:SetKey(_TRACK_O, 6, 1);
    effector:SetKey(_TRACK_O, 6.06666666666667, 1);
    effector:SetKey(_TRACK_O, 6.23333333333333, 1);
    effector:SetKey(_TRACK_O, 6.26666666666667, 0);
    effector:SetKey(_TRACK_O, 6.38248697916667, 0);
    effector:SetKey(_TRACK_O, 6.41266276041667, 1);
    effector:SetKey(_TRACK_O, 6.44283854166667, 1);
    effector:SetKey(_TRACK_O, 6.51826171875, 1);
    effector:SetKey(_TRACK_O, 6.53333333333333, 0);
    effector:SetKey(_TRACK_O, 9.96666666666667, 0);

    effector:Play();


    -- Layer Layer_5
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/jaba_gorlo.png');
    element:SetName('Layer_5');
    compositionFrog:AddElement(element);
    element:SetHotSpot(22.25, 8.75);
    compositionFrog:RegisterParentInfo('Layer_5', 'Layer_6');
    element:SetXY(125.309692382813, 28.3157501220703);

    element:SetAngle(-0.05062611293971);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_SX, 0, 1.01428685739625);
    effector:SetKey(_TRACK_SY, 0, 0.25218694236517);
    effector:SetKey(_TRACK_SX, 0.06666666666667, 1.00548989351779);
    effector:SetKey(_TRACK_SY, 0.06666666666667, 0.60103418161913);
    effector:SetKey(_TRACK_SX, 0.13333333333333, 1.15933042043548);
    effector:SetKey(_TRACK_SY, 0.13333333333333, 0.79413859377817);
    effector:SetKey(_TRACK_SX, 0.16666666666667, 1.31203376780366);
    effector:SetKey(_TRACK_SY, 0.16666666666667, 0.95829463573356);
    effector:SetKey(_TRACK_SX, 0.2, 1.29755090617768);
    effector:SetKey(_TRACK_SY, 0.2, 1.16240002396931);
    effector:SetKey(_TRACK_SX, 0.23333333333333, 1.17964941606773);
    effector:SetKey(_TRACK_SY, 0.23333333333333, 1.02499215700222);
    effector:SetKey(_TRACK_SX, 0.26666666666667, 1.18575366733122);
    effector:SetKey(_TRACK_SY, 0.26666666666667, 0.89399109268071);
    effector:SetKey(_TRACK_SX, 0.3, 1.16714044102322);
    effector:SetKey(_TRACK_SY, 0.3, 0.70656008476213);
    effector:SetKey(_TRACK_SX, 0.33333333333333, 1.15974877395146);
    effector:SetKey(_TRACK_SY, 0.33333333333333, 0.51839567843843);
    effector:SetKey(_TRACK_SX, 0.36666666666667, 1.15406287620395);
    effector:SetKey(_TRACK_SY, 0.36666666666667, 0.37365382742021);
    effector:SetKey(_TRACK_SX, 0.4, 0.91784154246807);
    effector:SetKey(_TRACK_SY, 0.4, 0.37458100882576);
    effector:SetKey(_TRACK_SX, 0.43333333333333, 0.82352035038011);
    effector:SetKey(_TRACK_SY, 0.43333333333333, 0.26465471525209);
    effector:SetKey(_TRACK_SX, 0.46666666666667, 0.82367058663888);
    effector:SetKey(_TRACK_SY, 0.46666666666667, 0.55487181569366);
    effector:SetKey(_TRACK_SX, 0.5, 0.95279363598507);
    effector:SetKey(_TRACK_SY, 0.5, 0.69154628425564);
    effector:SetKey(_TRACK_SX, 0.53333333333333, 0.90335868084209);
    effector:SetKey(_TRACK_SY, 0.53333333333333, 0.57868639706152);
    effector:SetKey(_TRACK_SX, 0.56666666666667, 0.98573948766029);
    effector:SetKey(_TRACK_SY, 0.56666666666667, 0.38465480349692);
    effector:SetKey(_TRACK_SX, 0.6, 1.01485544717101);
    effector:SetKey(_TRACK_SY, 0.6, 0.26666112746699);
    effector:SetKey(_TRACK_SX, 0.63333333333333, 0.92224002440731);
    effector:SetKey(_TRACK_SY, 0.63333333333333, 0.20015738919879);
    effector:SetKey(_TRACK_SX, 2.96666666666667, 1.01428685739625);
    effector:SetKey(_TRACK_SY, 2.96666666666667, 0.25218694236517);
    effector:SetKey(_TRACK_SX, 3.03333333333333, 1.00548989351779);
    effector:SetKey(_TRACK_SY, 3.03333333333333, 0.60103418161913);
    effector:SetKey(_TRACK_SX, 3.1, 1.15933042043548);
    effector:SetKey(_TRACK_SY, 3.1, 0.79413859377817);
    effector:SetKey(_TRACK_SX, 3.13333333333333, 1.31203376780366);
    effector:SetKey(_TRACK_SY, 3.13333333333333, 0.95829463573356);
    effector:SetKey(_TRACK_SX, 3.16666666666667, 1.29755090617768);
    effector:SetKey(_TRACK_SY, 3.16666666666667, 1.16240002396931);
    effector:SetKey(_TRACK_SX, 3.2, 1.17964941606773);
    effector:SetKey(_TRACK_SY, 3.2, 1.02499215700222);
    effector:SetKey(_TRACK_SX, 3.23333333333333, 1.18575366733122);
    effector:SetKey(_TRACK_SY, 3.23333333333333, 0.89399109268071);
    effector:SetKey(_TRACK_SX, 3.26666666666667, 1.16714044102322);
    effector:SetKey(_TRACK_SY, 3.26666666666667, 0.70656008476213);
    effector:SetKey(_TRACK_SX, 3.3, 1.15974877395146);
    effector:SetKey(_TRACK_SY, 3.3, 0.51839567843843);
    effector:SetKey(_TRACK_SX, 3.33333333333333, 1.15406287620395);
    effector:SetKey(_TRACK_SY, 3.33333333333333, 0.37365382742021);
    effector:SetKey(_TRACK_SX, 3.36666666666667, 0.91784154246807);
    effector:SetKey(_TRACK_SY, 3.36666666666667, 0.37458100882576);
    effector:SetKey(_TRACK_SX, 3.4, 0.82352035038011);
    effector:SetKey(_TRACK_SY, 3.4, 0.26465471525209);
    effector:SetKey(_TRACK_SX, 3.43333333333333, 0.82367058663888);
    effector:SetKey(_TRACK_SY, 3.43333333333333, 0.55487181569366);
    effector:SetKey(_TRACK_SX, 3.46666666666667, 0.95279363598507);
    effector:SetKey(_TRACK_SY, 3.46666666666667, 0.69154628425564);
    effector:SetKey(_TRACK_SX, 3.5, 0.90335868084209);
    effector:SetKey(_TRACK_SY, 3.5, 0.57868639706152);
    effector:SetKey(_TRACK_SX, 3.53333333333333, 0.98573948766029);
    effector:SetKey(_TRACK_SY, 3.53333333333333, 0.38465480349692);
    effector:SetKey(_TRACK_SX, 3.56666666666667, 1.01485544717101);
    effector:SetKey(_TRACK_SY, 3.56666666666667, 0.26666112746699);
    effector:SetKey(_TRACK_SX, 3.6, 0.92224002440731);
    effector:SetKey(_TRACK_SY, 3.6, 0.20015738919879);
    effector:SetKey(_TRACK_SX, 8.86666666666667, 0.82352035038011);
    effector:SetKey(_TRACK_SY, 8.86666666666667, 0.26465471525209);
    effector:SetKey(_TRACK_SX, 8.9, 0.82367058663888);
    effector:SetKey(_TRACK_SY, 8.9, 0.55487181569366);
    effector:SetKey(_TRACK_SX, 8.93333333333333, 0.95279363598507);
    effector:SetKey(_TRACK_SY, 8.93333333333333, 0.69154628425564);
    effector:SetKey(_TRACK_SX, 8.96666666666667, 0.90335868084209);
    effector:SetKey(_TRACK_SY, 8.96666666666667, 0.57868639706152);
    effector:SetKey(_TRACK_SX, 9, 0.98573948766029);
    effector:SetKey(_TRACK_SY, 9, 0.38465480349692);
    effector:SetKey(_TRACK_SX, 9.03333333333333, 1.01485544717101);
    effector:SetKey(_TRACK_SY, 9.03333333333333, 0.26666112746699);
    effector:SetKey(_TRACK_SX, 9.06666666666667, 0.92224002440731);
    effector:SetKey(_TRACK_SY, 9.06666666666667, 0.20015738919879);

    effector:Play();


    -- Layer Layer_6
    local element = auxCreateCompositionElement('data/Texture/Scenes/16_TempleHall/Animations/Env/jaba_body.png');
    element:SetName('Layer_6');
    compositionFrog:AddElement(element);
    element:SetHotSpot(53, 49.5);
    element:SetParentElement(compositionFrog);
    element:SetXY(336.190307617188, 732.18424987793);

    element:SetAngle(0);
    element:SetOpacity(1);

    effector = element:GetEffector();
    effector:SetLifeTime(0, 10);

    effector:SetKey(_TRACK_SX, 0, 1);
    effector:SetKey(_TRACK_SY, 0, 1);
    effector:SetKey(_TRACK_SX, 0.63333333333333, 1);
    effector:SetKey(_TRACK_SY, 0.63333333333333, 0.92118226600985);
    effector:SetKey(_TRACK_SX, 1.43333333333333, 1);
    effector:SetKey(_TRACK_SY, 1.43333333333333, 0.96734693877551);
    effector:SetKey(_TRACK_SX, 2.16666666666667, 1);
    effector:SetKey(_TRACK_SY, 2.16666666666667, 0.94161681914145);
    effector:SetKey(_TRACK_SX, 2.86666666666667, 1);
    effector:SetKey(_TRACK_SY, 2.86666666666667, 0.8858618432115);
    effector:SetKey(_TRACK_SX, 2.93333333333333, 1.0421686746988);
    effector:SetKey(_TRACK_SY, 2.93333333333333, 1.03076145218668);
    effector:SetKey(_TRACK_SX, 3.23333333333333, 1);
    effector:SetKey(_TRACK_SY, 3.23333333333333, 1.07810010775963);
    effector:SetKey(_TRACK_SX, 3.7, 1);
    effector:SetKey(_TRACK_SY, 3.7, 1);
    effector:SetKey(_TRACK_SX, 4.43333333333333, 1);
    effector:SetKey(_TRACK_SY, 4.43333333333333, 0.94088669950739);
    effector:SetKey(_TRACK_SX, 5.7, 1);
    effector:SetKey(_TRACK_SY, 5.7, 1.01353196035373);
    effector:SetKey(_TRACK_SX, 6.8, 1);
    effector:SetKey(_TRACK_SY, 6.8, 0.98048660157873);
    effector:SetKey(_TRACK_SX, 7.7, 1);
    effector:SetKey(_TRACK_SY, 7.7, 1.03529359855809);
    effector:SetKey(_TRACK_SX, 8.83333333333333, 1);
    effector:SetKey(_TRACK_SY, 8.83333333333333, 0.98809014903274);
    effector:SetKey(_TRACK_SX, 9.96666666666667, 1);
    effector:SetKey(_TRACK_SY, 9.96666666666667, 1);

    effector:Play();

    compositionFrog:Play();

    return compositionFrog;
end

