<?xml version="1.0" encoding="UTF-8"?>
<rmml>
<!--
$RCSfile: rnmc_stdAnimation.xml $
$Revision: 957 $

last change: $Date: 2009-02-17 14:00:06 +0300 (Вт, 17 фев 2009) $
             $Author: toha $

	Lacerta Project
	version 1.0.0.1
	Copyright (C) 2007-2009 RNMC
-->
<composition name="rnmc_stdAnimation" class="rnmc_stdMediaObject">
<script><![CDATA[
	this.type = "rnmc_StdAnimation";
	this.soundId  = null;	

//	для каждого объекта необходимо определить
//	какие эффекты к нему применимы
	this.fadeEffectEnabled = true;
	this.moveEffectEnabled = true;
	this.scaleEffectEnabled = false;

	function initFromNode(srcNode){
		var xmlNode = null;
		var xmlAttributeMap = null;
		var xmlAttribute = null;

	//	считывание настроек по умолчанию
		if(scene.defaultSettings && scene.defaultSettings.stdAnimation){
			this.playing = scene.defaultSettings.stdAnimation.playing;
			this.objectLoop = scene.defaultSettings.stdAnimation.objectLoop;
			this.titleStyle = scene.defaultSettings.stdAnimation.titleStyle;
		}

	//	
		xmlAttributeMap = srcNode.attributes;
		if (xmlAttributeMap){
			xmlAttribute = xmlAttributeMap.getNamedItem("id");
			if (xmlAttribute != null && xmlAttribute.specified)
				this.id = xmlAttribute.value;
			xmlAttribute = xmlAttributeMap.getNamedItem("visible");
			if (xmlAttribute != null && xmlAttribute.specified){
				if(xmlAttribute.value == "true")
					this.visibility = OBJECT_VISIBILITY_TRUE;
				else if(xmlAttribute.value == "false")
					this.visibility = OBJECT_VISIBILITY_FALSE;
			}
			xmlAttribute = xmlAttributeMap.getNamedItem("enabled");
			if (xmlAttribute != null && xmlAttribute.specified && xmlAttribute.value == "false")
				this.disabled = true;
			xmlAttribute = xmlAttributeMap.getNamedItem("playing");
			if (xmlAttribute != null && xmlAttribute.specified){
				if(xmlAttribute.value == "true"){
					this.playing = OBJECT_PLAYING_TRUE;
				} else if(xmlAttribute.value == "false"){
					this.playing = OBJECT_PLAYING_FALSE;
				}
			}
		}

		xmlNode = srcNode.firstChild;
		while(xmlNode){
			if(xmlNode.nodeName == "param"){
				this.parseParamNode(xmlNode);
			} else if(xmlNode.nodeName == "rollovermenu"){
				this.parseRolloverMenuNode(xmlNode);
			} else if(xmlNode.nodeName == "control"){
				this.parseControlNode(xmlNode);
			} else if(xmlNode.nodeName == "actions"){
				//	стандартые события
				rnmc_stdMediaObject_parseActionsNode(xmlNode);
			} else if(xmlNode.nodeName == "title"){
				this.parseTitleNode(xmlNode);
			} else if(xmlNode.nodeName == "hint"){
				this.parseHintNode(xmlNode);
			} else if(xmlNode.nodeName == "effects"){
				this.parseEffectsNode(xmlNode);
			} else if(xmlNode.nodeName == "drag"){ //	таскание медиа-объекта
				this.parseDraggingNode(xmlNode);
			} else if(xmlNode.nodeName == "scrollmenu"){ //	таскание медиа-объекта
				this.parseScrollMenuNode(xmlNode);
			}
			xmlNode = xmlNode.nextSibling;
		}
	// добавляем в саундменеждер сцылу, он возвращает нам идентификатор звука
		this.soundId = scene.SoundManager.registerSound(this);
		return true;
	}

	function loadObject(){
		if(!this.objectContent){
			this.objectContent = new Animation();
			this.objectContent.src = this.objectSrc;
			if (this.objectHitArea != null)
				this.objectContent.hitArea = this.objectHitArea;
			this.objectContent.parent = this;
		}
	}

	function unloadObject(){
		this.effectsTarget = null;
		if(this.objectContent){
			this.objectContent.src = null;
			this.objectContent.parent = null;
			this.objectContent = null;
		}
	}

	function showObject(){
//trace("rnmc_stdAnimation.showObject()");
		this.x = 0;
		this.y = 0;
		this.loadObject();
		if(this.objectContent){
			var objectPosition = this.getPosition();
		// PG: в версии плеера 1.0.0.58 при установки габаритов на 0
		//   размеры объекта НЕ устанавливаются в размеры по умолчанию
			if (objectPosition[2] == 0)
				objectPosition[2] = this.objectContent.width;
			if (objectPosition[3] == 0)
				objectPosition[3] = this.objectContent.height;

			this.setPosition(objectPosition[0], objectPosition[1], objectPosition[2], objectPosition[3], this.objectDepth);
			this.objectContent.opacity = this.objectOpacity;
		};

		this.objectContent.onPlayed = onPlayedHandlerAlias;

		if(this.playing == OBJECT_PLAYING_TRUE)
			this.playObject();
		rnmc_stdMediaObject_showObject();
	}

	function hideObject(){
		rnmc_stdMediaObject_hideObject();
	}

// функция для использования только в саунд-менеджере
	function interruptBySoundManager(){
		if(this.objectContent){
			this.objectContent.playing = false;
			if(this.playControl)
				this.playControl.synchronizeControl();
			if (this.rolloverMenuObject)
				this.rolloverMenuObject.synchronizeControl();
		}
	}	

	function buttonDispatcher(btnId){
		switch(btnId){
		case "play":
			this.playObject();
			break;
		case "pause":
			this.pauseObject();
			break;
		case "stop":
			this.stopObject();
			break;
		default:
			rnmc_stdMediaObject_buttonDispatcher(btnId);
			break;
		}
	}

	function playObject(){
//trace("rnmc_stdAnimation.playObject()");
	// сообщаем саунд-менеджеру о play
		scene.SoundManager.notifyPlay(this.soundId);
		if(this.objectContent){
			this.objectContent.playing = true;
		}
		if(this.playControl)
			this.playControl.synchronizeControl();
		if (this.rolloverMenuObject)
			this.rolloverMenuObject.synchronizeControl();
		this.applyActions(EVENT_ON_PLAY);
	}

	function pauseObject(){
	// сообщаем саунд-менеджеру о pause
		scene.SoundManager.notifyPause(this.soundId);
		if(this.objectContent){
			this.objectContent.playing = false;
		}
		if(this.playControl)
			this.playControl.synchronizeControl();
		if (this.rolloverMenuObject)
			this.rolloverMenuObject.synchronizeControl();
		this.applyActions(EVENT_ON_PAUSE);
	}

	function stopObject(){
	// сообщаем саунд-менеджеру о stop
		scene.SoundManager.notifyStopped(this.soundId);
		if(this.objectContent){
			this.objectContent.playing = false;
			this.objectContent.rewind();
		}
		if(this.playControl)
			this.playControl.synchronizeControl();
		if (this.rolloverMenuObject)
			this.rolloverMenuObject.synchronizeControl();
		this.applyActions(EVENT_ON_STOP);
	}

	function onPlayedHandler(){
		rnmc_stdMediaObject_onPlayedHandler();
		if (this.objectLoop){
			this.stopObject();
			this.playObject();
		}
		else if (this.objectRewind)
			this.stopObject();
		else
			this.pauseObject();	
	}
]]></script>
</composition>
</rmml>
