<?xml version="1.0" encoding="UTF-8"?>
<rmml>
<!--
$RCSfile: rnmc_stdSlideshow.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_stdSlideshow">
<script> <![CDATA[
// константы
	CONTROL_MODE_LINEAR = 1
	CONTROL_MODE_CYCLIC = 2

// Идентификатор задания
	this.id = null;
	this.visibility = false;
	this.disabled = false;
	this.isObjectShow = false;

//	режим работы - обычный и покадровое воспроизведение (с остановом после каждого кадра)
	this.slideshowMode = SLIDESHOW_MODE_NORMAL;
	//this.slideshowMode = SLIDESHOW_MODE_BYFRAME;
//	режим управления - линейный и зацикленный (перехот с последнего на первый кадр и наоборот)	
	this.controlMode = CONTROL_MODE_LINEAR;
	this.playing = false;
	this.originalPlaying = false;
	this.playOnEnterFrame = true;
	this.rewindOnPlayed = false;
//	управление
	this.controlStyle = null;
	this.controlX = 0;
	this.controlY = 0;
	this.controlDepth = 0;

// Перечень фреймов
	this.frameObjects = null;
//	текущий кадр
	this.currentFrame = 0;
//
	this.preloadedFrame = null;

	this.framesPlayList = null;
//	последний активный фрейм (потому как если менять плейлист, то текущего кадра может не быть в плейлисте)
	this.lastActiveFrame = -1;

	this.loop = false;

	function initFromNode(srcNode){
//trace("rnmc_stdSlideshow.initFromNode()");
		var xmlNode = null;
		var xmlAttributeMap = null;
		var xmlAttribute = null;
		var newFramesList = null;

		this.frameObjects = new Array();
		this.framesPlayList = new Array();

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

		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.toLowerCase() == "false")
				this.disabled = true;
			xmlAttribute = xmlAttributeMap.getNamedItem("playing");
			if (xmlAttribute != null && xmlAttribute.specified){
				if (xmlAttribute.value.toLowerCase() == "true")
					this.originalPlaying = true;
				else
					this.originalPlaying = false;
			}
		}

		xmlNode = srcNode.firstChild;
		while(xmlNode){
			if(xmlNode.nodeName == "settings"){
				var setNode = xmlNode.firstChild;
				while(setNode){
					if(setNode.nodeName == "general"){
						xmlAttributeMap = setNode.attributes;
						if (xmlAttributeMap){
							xmlAttribute = xmlAttributeMap.getNamedItem("rewindOnPlayed");
							if (xmlAttribute != null && xmlAttribute.specified){
								if(xmlAttribute.value.toLowerCase() == "true"){
									this.rewindOnPlayed = true;
								} else if(xmlAttribute.value.toLowerCase() == "false"){
									this.rewindOnPlayed = false;
								}
							}
							xmlAttribute = xmlAttributeMap.getNamedItem("mode");
							if (xmlAttribute != null && xmlAttribute.specified){
								if(xmlAttribute.value == "normal"){
									this.slideshowMode = SLIDESHOW_MODE_NORMAL;
								} else if(xmlAttribute.value == "play_by_frame"){
									this.slideshowMode = SLIDESHOW_MODE_BYFRAME;
								}
							}
							xmlAttribute = xmlAttributeMap.getNamedItem("activeFrame");
							if (xmlAttribute != null && xmlAttribute.specified){
								this.currentFrame = parseInt(xmlAttribute.value) - 1;
							}
							xmlAttribute = xmlAttributeMap.getNamedItem("loop");
							if (xmlAttribute != null && xmlAttribute.specified){
								this.loop = (xmlAttribute.value.toLowerCase() == "true");
							}
						// режим управления 
							xmlAttribute = xmlAttributeMap.getNamedItem("control");
							if (xmlAttribute != null && xmlAttribute.specified){
								if(xmlAttribute.value == "linear"){
									this.controlMode = CONTROL_MODE_LINEAR;
								} else if(xmlAttribute.value == "cyclic"){
									this.controlMode = CONTROL_MODE_CYCLIC;
								}
							}
						}
					} else if(setNode.nodeName == "playlist"){
						if(setNode.textContent){
							newFramesList = (setNode.textContent).split(";");
						}
					} else if(setNode.nodeName == "control"){
						xmlAttributeMap = setNode.attributes;
						if (xmlAttributeMap){
							this.controlVisible = true;
							xmlAttribute = xmlAttributeMap.getNamedItem("style");
							if (xmlAttribute != null && xmlAttribute.specified)
								this.controlStyle = xmlAttribute.value;
							xmlAttribute =  xmlAttributeMap.getNamedItem("x");
							if (xmlAttribute != null && xmlAttribute.specified)
								this.controlX = parseInt(xmlAttribute.value);
							xmlAttribute =  xmlAttributeMap.getNamedItem("y");
							if (xmlAttribute != null && xmlAttribute.specified)
								this.controlY = parseInt(xmlAttribute.value);
							xmlAttribute =  xmlAttributeMap.getNamedItem("depth");
							if (xmlAttribute != null && xmlAttribute.specified)
								this.controlDepth = parseInt(xmlAttribute.value);
						}
					}
					setNode = setNode.nextSibling;
				}
			} else if(xmlNode.nodeName == "frames"){
				var frameNode = xmlNode.firstChild;
				while(frameNode){
					if(frameNode.nodeName == "frame"){
						var newObject = new Composition();
						newObject._class = "slideshowFrame";
						newObject.parent = this;
						newObject.setFrameNode(frameNode);
						this.frameObjects.push(newObject);
					};
					frameNode = frameNode.nextSibling;
				}
			};
			xmlNode = xmlNode.nextSibling;
		};
		if(this.frameObjects &&  this.frameObjects.length > 0){
			if(newFramesList){ //	если плейлист задан
				for(var i = 0; i < newFramesList.length; i++){
					if(this.frameObjects[parseInt(newFramesList[i])])
						this.framesPlayList.push(parseInt(newFramesList[i]));
				}
			} else {	//	если плейлист не задан то вносим в него все фреймы
				for(var i = 0; i < this.frameObjects.length; i++){
					this.framesPlayList.push(i);
				}
			}
		} else {
			return false;
		}
		return true;
	};

	function showObject(){
//trace("rnmc_stdSlideshow.showObject()");
		this.playing = this.originalPlaying;
		if(!this.attachedControl){
			if(this.controlStyle){
				this.attachedControl = scene.ControlManager.getControl(this.controlStyle, this);
				if(this.attachedControl){
					this.attachedControl.visible = false;
					this.attachedControl.x = this.controlX;
					this.attachedControl.y = this.controlY;
					this.attachedControl.depth = this.controlDepth;
					this.attachedControl.showObject();
					this.attachedControl.setDispatcher(this, this.buttonDispatcher);
					this.btnPlay = this.attachedControl.getChildControl("play");
					if(this.btnPlay){
						this.btnPlay.showObject();
					}
					this.btnPause = this.attachedControl.getChildControl("pause");
					if(this.btnPause){
						this.btnPause.hideObject();
					}
					this.btnStop = this.attachedControl.getChildControl("stop");
					if(this.btnStop){
						this.btnStop.showObject();
					}
					this.btnPrevious = this.attachedControl.getChildControl("previous");
					if(this.btnPrevious){
						this.btnPrevious.showObject();
					}
					this.btnNext = this.attachedControl.getChildControl("next");
					if(this.btnNext){
						this.btnNext.showObject();
					}
					this.sliderObject = this.attachedControl.getChildControl("slider");
					if(this.sliderObject){
						this.sliderObject.callOnMouseMove = false;
						this.sliderObject.callOnRelease = true;
						this.sliderObject.setUseTicks(true);
						this.sliderObject.setCallback(this, this.goToFrame);
						this.sliderObject.setItems(this.framesPlayList.length);
						this.sliderObject.showObject();
					}
					this.textCounter = this.attachedControl.getChildControl("index");
					if(this.textCounter){
						this.textCounter.showObject();
					}
				}
			}
		}
		this.frameObjects[this.framesPlayList[this.currentFrame]].loadFrame();
		this.frameObjects[this.framesPlayList[this.currentFrame]].enterFrame(this.playing);
		if(this.sliderObject)
			this.sliderObject.synchronizeSliderItem(this.currentFrame);
		this.displayCount();
		this.displayButton();

		this.visible = true;
		this.isObjectShow = true;
	}

	function hideObject(){
		if(this.attachedControl){
			this.attachedControl.clearDispatcher();
			if(this.btnPlay){
				this.btnPlay.parent = null;
				this.btnPlay = null;
			}
			if(this.btnPause){
				this.btnPause.parent = null;
				this.btnPause = null;
			}
			if(this.btnStop){
				this.btnStop.parent = null;
				this.btnStop = null;
			}
			if(this.btnPrevious){
				this.btnPrevious.parent = null;
				this.btnPrevious = null;
			}
			if(this.btnNext){
				this.btnNext.parent = null;
				this.btnNext = null;
			}
			if(this.sliderObject){
				this.sliderObject.clearCallback();
				this.sliderObject.parent = null;
				this.sliderObject = null;
			}
			if(this.textCounter){
				this.textCounter.parent = null;
				this.textCounter = null;
			}
			this.attachedControl.parent = null;
			this.attachedControl = null;
		}
		this.frameObjects[this.framesPlayList[this.currentFrame]].unloadFrame();
		this.currentFrame = 0;
		this.visible = false;
		this.isObjectShow = false;
	}

	function displayButton(){
		if (this.playing){
			if(this.btnPlay)
				this.btnPlay.hideObject();
			if(this.btnPause)
				this.btnPause.showObject();
		}
		else{
			if(this.btnPlay)
				this.btnPlay.showObject();
			if(this.btnPause)
				this.btnPause.hideObject();
		}
	}

	function displayCount(){
		if(this.textCounter){
			if (this.textCounter.printFormat){
				var formatString = this.textCounter.printFormat;

				var re = new RegExp("(%total%)", "g");
				formatString = formatString.replace(re, this.framesPlayList.length);

				re = new RegExp("(%elapsed%)", "g");
				formatString = formatString.replace(re, this.currentFrame + 1);

				re = new RegExp("(%remaining%)", "g");
				formatString = formatString.replace(re, this.framesPlayList.length - this.currentFrame);

				this.textCounter.setTextValue(formatString);
			}
			else{
				this.textCounter.setTextValue(parseInt(this.currentFrame + 1) + " / " + this.framesPlayList.length)
			}
		}
	}

	function buttonDispatcher(btnId){
		switch(btnId){
		case "play":
			this.playObject();
			break;
		case "pause":
			this.pauseObject();
			break;
		case "stop":
			this.stopObject();
			break;
		case "previous":
			previousFrame();
			break;
		case "next":
			nextFrame();
			break;
		default:
			trace("ERROR: ");
			break;
		}
	}

	function playObject(){
//trace("rnmc_stdSlideshow.playObject()");
		this.playing = true;
		this.displayButton();

		this.frameObjects[this.framesPlayList[this.currentFrame]].playFrame();
	}

	function pauseObject(){
//trace("rnmc_stdSlideshow.pauseObject()");
		this.playing = false;
		this.displayButton();

		this.frameObjects[this.framesPlayList[this.currentFrame]].pauseFrame();
	}

	function stopObject(){
//trace("rnmc_stdSlideshow.stopObject()");
		var playOnEnterFrameCopy = this.playOnEnterFrame;
		this.playOnEnterFrame = false;
		this.pauseObject();
		this.goToFrame(0);
		if(this.sliderObject)
			this.sliderObject.synchronizeSliderItem(this.currentFrame);
		this.playOnEnterFrame = playOnEnterFrameCopy;
	}

	function previousFrame(){
		if(this.currentFrame == 0){
			if (this.controlMode == CONTROL_MODE_CYCLIC)
				goToFrame(this.framesPlayList.length-1);
		} else {
			goToFrame(this.currentFrame-1);
		};
	}

	function nextFrame(){
		if(this.currentFrame == (this.framesPlayList.length - 1)){
			if (this.controlMode == CONTROL_MODE_CYCLIC)
				goToFrame(0);
		} else {
			goToFrame(this.currentFrame+1);
		};
	}
	
	function goToFrame(frameIndex){
		if (frameIndex >= this.framesPlayList.length || frameIndex < 0)
			return;

		this.frameObjects[this.framesPlayList[this.currentFrame]].leaveFrame(false);

		this.currentFrame = frameIndex;
		this.displayCount();
		if(this.sliderObject)
			this.sliderObject.synchronizeSliderItem(this.currentFrame);
		this.frameObjects[this.framesPlayList[this.currentFrame]].loadFrame();
		if(this.slideshowMode == SLIDESHOW_MODE_BYFRAME && this.playOnEnterFrame){
			this.playing = true;
			this.displayButton();
		}
		this.frameObjects[this.framesPlayList[this.currentFrame]].enterFrame(this.playing);
	}

	function notifyLeaveFrame(){
//trace("rnmc_stdSlideshow.notifyLeaveFrame()");
		if(this.slideshowMode == SLIDESHOW_MODE_NORMAL){
			if(this.currentFrame < this.framesPlayList.length - 1){
				this.frameObjects[this.framesPlayList[this.currentFrame]].leaveFrame(this.playing);
				this.currentFrame++;
				this.frameObjects[this.framesPlayList[this.currentFrame]].loadFrame();
				if(this.sliderObject)
					this.sliderObject.synchronizeSliderItem(this.currentFrame);
				this.displayCount();
				this.frameObjects[this.framesPlayList[this.currentFrame]].enterFrame(this.playing);
			} else {
			//	проиграли последний фрейм
				if (this.loop){
					if (this.framesPlayList && this.framesPlayList.length > 0)
						goToFrame(this.framesPlayList[0]);
					else
						goToFrame(0);
				}
				else if(this.rewindOnPlayed)
					this.stopObject();
				else
					this.pauseObject();
			}
		} else if(this.slideshowMode == SLIDESHOW_MODE_BYFRAME){
//trace("notifyLeaveFrame: РЕЖИМ ПОКАДРОВОГО ВОСПРОИЗВЕДЕНИЯ");
			this.playing = false;
			this.displayButton();
			this.frameObjects[this.framesPlayList[this.currentFrame]].pauseFrame();
			this.frameObjects[this.framesPlayList[this.currentFrame]].rewindFrame();
		}
	}

	function setFramesPlayList(playList){
//trace("setFramesPlayList");
		if(playList instanceof Array){
//trace("setFramesPlayList(" + playList);
			var newPlayList = new Array();
			for(var i = 0; i < playList.length; i++){
				if(playList[i] < this.frameObjects.length && playList[i] >= 0 && this.frameObjects[playList[i]])
					newPlayList.push(playList[i]);
			}
			if(newPlayList.length > 0){
				this.lastActiveFrame = this.framesPlayList[this.currentFrame];
				this.framesPlayList = newPlayList;
				if(this.sliderObject){
					this.sliderObject.hideObject();
					this.sliderObject.setItems(this.framesPlayList.length);
					this.sliderObject.showObject();
				}
				this.displayCount();
			}
		}
	}
]]> </script>
</composition>
<!--	===================================================================== 
					КЛАСС КАДРА СЛАЙДШОУ
	===================================================================== -->	

<composition name="slideshowFrame" visible="false">
<sequencer name="frameSequencer" playing="false" loop="true">
<script>
	updateFrame();
</script>
</sequencer>
<script> <![CDATA[
	this.frameSrcNode = null;
	
//	длительность фрейма в мс
	this.frameDuration = 0;
	this.frameLoaded = false;

	this.playing = false;
	this.childObjects = null;

	this.playStart = 0;
	this.playTime = 0;

//	устнавливаем узел из которого инизиализироваться
	function setFrameNode(srcNode){
		if(srcNode != undefined && srcNode != null && srcNode.nodeName == "frame"){
			this.frameSrcNode = srcNode;
      this.ownerDocument = srcNode.ownerDocument;
    }
	}

//	загрузка фрейма
	function loadFrame(){
//trace("slideshowFrame.loadFrame()");

		var xmlNode = null;
		var xmlAttributeMap = null;
		var xmlAttribute = null;

	//	если не установлен узел для фрейма
		if(!this.frameSrcNode)
			return;

		this.objectStartTime = 0;
		this.objectDuration = 0;
		this.playStart = 0;
		this.playTime = 0;
		if(this.childObjects){
			while(this.childObjects.length){
				var object = this.childObjects.pop();
				object.unloadObject();
				object.parent = null;
			}
			this.childObjects = null;
		}
		this.childObjects = new Array();
				
		xmlAttributeMap = this.frameSrcNode.attributes;
		if (xmlAttributeMap){
			xmlAttribute =  xmlAttributeMap.getNamedItem("duration");
			if (xmlAttribute != null && xmlAttribute.specified)
				this.frameDuration = parseInt(xmlAttribute.value);
		}
		xmlNode = this.frameSrcNode.firstChild;
		while(xmlNode){
			if(xmlNode.nodeName == "image"){
				var newObject = new Composition();
				newObject._class = "slideshowImage";
				newObject.parent = this;
				newObject.visible = false;
				if(newObject.initFromNode(xmlNode)){
					newObject.setHideCallBack(this, this.notifyObjectHidden);
					this.childObjects.push(newObject);
				} else {
					newObject.parent = null;
					newObject = null;
				};
			} else if(xmlNode.nodeName == "animation"){
				var newObject = new Composition();
				newObject._class = "slideshowAnimation";
				newObject.parent = this;
				newObject.visible = false;
				if(newObject.initFromNode(xmlNode)){
					newObject.setHideCallBack(this, this.notifyObjectHidden);
					this.childObjects.push(newObject);
				} else {
					newObject.parent = null;
					newObject = null;
				};
			} else if(xmlNode.nodeName == "text"){
				var newObject = new Composition();
				newObject._class = "slideshowText";
				newObject.parent = this;
				newObject.visible = false;
				if(newObject.initFromNode(xmlNode)){
					newObject.setHideCallBack(this, this.notifyObjectHidden);
					this.childObjects.push(newObject);
				} else {
					newObject.parent = null;
					newObject = null;
				};
			} else if(xmlNode.nodeName == "audio"){
				var newObject = new Composition();
				newObject._class = "slideshowAudio";
				newObject.parent = this;
				newObject.visible = false;
				if(newObject.initFromNode(xmlNode)){
					newObject.setHideCallBack(this, this.notifyObjectHidden);
					this.childObjects.push(newObject);
				} else {
					newObject.parent = null;
					newObject = null;
				};
			} else if(xmlNode.nodeName == "video"){
				var newObject = new Composition();
				newObject._class = "slideshowVideo";
				newObject.parent = this;
				newObject.visible = false;
				if(newObject.initFromNode(xmlNode)){
					newObject.setHideCallBack(this, this.notifyObjectHidden);
					this.childObjects.push(newObject);
				} else {
					newObject.parent = null;
					newObject = null;
				};
			} else if(xmlNode.nodeName == "flash"){
				var newObject = new Composition();
				newObject._class = "slideshowFlash";
				newObject.parent = this;
				newObject.visible = false;
				if(newObject.initFromNode(xmlNode)){
					newObject.setHideCallBack(this, this.notifyObjectHidden);
					this.childObjects.push(newObject);
				} else {
					newObject.parent = null;
					newObject = null;
				};
			} else if(xmlNode.nodeName == "quicktime"){
				var newObject = new Composition();
				newObject._class = "slideshowQuickTime";
				newObject.parent = this;
				newObject.visible = false;
				if(newObject.initFromNode(xmlNode)){
					newObject.setHideCallBack(this, this.notifyObjectHidden);
					this.childObjects.push(newObject);
				} else {
					newObject.parent = null;
					newObject = null;
				};
			} else if(xmlNode.nodeName == "object3D"){
				var newObject = new Composition();
				newObject._class = "slideshowObject3D";
				newObject.parent = this;
				newObject.visible = false;
				if(newObject.initFromNode(xmlNode)){
					newObject.setHideCallBack(this, this.notifyObjectHidden);
					this.childObjects.push(newObject);
				} else {
					newObject.parent = null;
					newObject = null;
				};
			}

			xmlNode = xmlNode.nextSibling;
		}
		var newDuration = 0;
//	пока автоматом перебираем все объекты и смотрим их длительность 
		for(var i = 0; i < this.childObjects.length; i++){
			this.childObjects[i].loadObject();
			if("getDuration" in this.childObjects[i]){
				var objectDuration = this.childObjects[i].getDuration();
				if(objectDuration > newDuration)
					newDuration = objectDuration;
			}
		}
//trace("----------------------------------------");
		if(newDuration > this.frameDuration){
			this.frameDuration = newDuration + 1000;
		}
		this.frameLoaded = true;
		return true;
	}

//	выгрузка фрейма (удаление всех дочерних объектов)
	function unloadFrame(){
		frameSequencer.playing = false;
		if(this.childObjects){
			while(this.childObjects.length){
				var currentObject = this.childObjects.pop();
				currentObject.effectsEnabled = false;
				currentObject.hideObject();
				currentObject.parent = null;
			}
//			this.childObjects = null;
		}
		this.frameLoaded = false;
	}

//	вход в фрейм
	function enterFrame(slideshowPlaying){
		this.playStart = 0;
		this.playTime = 0;
		for(var i = 0; i < this.childObjects.length; i++){
			this.childObjects[i].onEnterFrame(slideshowPlaying);
//trace("this.childObjects[i].id == "+this.childObjects[i].id);
		}
		if(slideshowPlaying){
			this.playStart = Player._time;
			frameSequencer.playing = true;
		}
		this.visible = true;
	}

//	выход из фрейма
	function leaveFrame(slideshowPlaying){
//trace("slideshowFrame.leaveFrame(" + slideshowPlaying + ")");
		frameSequencer.playing = false;
		for(var i = 0; i < this.childObjects.length; i++){
			this.childObjects[i].onLeaveFrame(slideshowPlaying);
		}
	}

//	цикл обновления фрейма
	function updateFrame(){
		if (((Player._time - this.playStart) + this.playTime) > this.frameDuration){
			frameSequencer.playing = false;
			parent.notifyLeaveFrame();
		}
	}

//	переводит фрейм в режим воспроизведения
	function playFrame(){
//trace("slideshowFrame.playFrame()");
		this.playing = true;
		for(var i = 0; i < this.childObjects.length; i++){
			this.childObjects[i].playObject();
		}
		this.playStart = Player._time;
		frameSequencer.playing = true;
	}

//	переводит фрейм в режим паузы
	function pauseFrame(){
//trace("slideshowFrame.pauseFrame()");
		this.playing = false;
		frameSequencer.playing = false;
		for(var i = 0; i < this.childObjects.length; i++){
			this.childObjects[i].pauseObject();
		}
		if(this.playStart > 0)
			this.playTime += (Player._time - this.playStart);
	}

	function getFrameDuration(){
		if(this.frameLoaded)
			return this.frameDuration;
	}

//	вызывается из каждого дочернего объекта для уведомлении о полном "прятанье"
//	если остались еще объекты, у которых ещё происходят эффекты, то ничего не делаем, в противном случае
//	вызываем unloadFrame
	function notifyObjectHidden(){
		var objectsRemaining = 0;
		for(var i = 0; i < this.childObjects.length; ++i){
			if(this.childObjects[i].objectContent){
				++objectsRemaining;
			}
		}
		if(objectsRemaining == 0){
			this.unloadFrame();
		}
	}

//	перемотка фрейма в начало. Нужна для режима покадрового воспроизведения
	function rewindFrame(){
//trace("slideshowFrame.rewindFrame()");
//		this.playing = false;
//		frameSequencer.playing = false;

		this.playTime = 0;
		if(this.playing){
			this.playStart = Player._time;
			frameSequencer.playing = true;
		} else {
			this.playStart = 0;
			frameSequencer.playing = false;
		}

		for(var i = 0; i < this.childObjects.length; i++){
			this.childObjects[i].rewindObject()
		}
	}
]]> </script>
</composition>
<!--	===================================================================== 
					БАЗОВЫЙ КЛАСС ДЛЯ СЛАЙДШОУ ОБЪЕКТОВ
	===================================================================== -->	
<composition name="slideshowMediaObject">
<script> <![CDATA[
//	временные параметры 
	this.objectStartTime = 0;
	this.objectDuration = 0;
	this.objectVisible = false;

//	появление
//	SLIDESHOW_APPEARANCE_ALWAYS - всегда (и в режиме паузы и в режиме воспроизведеия). По умолчанию
//	SLIDESHOW_APPEARANCE_PAUSEONLY - только в режиме паузы
//	SLIDESHOW_APPEARANCE_PLAYONLY - только в режиме воспроизведеия
	this.objectAppearance = SLIDESHOW_APPEARANCE_ALWAYS;

//	время (Player._time) начала проигрывания объекта
	this.playStart = 0;
//	время которое воспроизводился объект
	this.playTime = 0;
	this.playing = false;

//this.slideshowState = OBJECT_STATUS_NOTLOADED;
	this.objectState = OBJECT_STATE_HIDDEN;

//	разбор тега showparam
	function parseShowParamNode(srcNode){
		var xmlAttributeMap = null;
		var xmlAttribute = null;

		this.objectStartTime = 0;
		this.objectDuration = 0;
		this.playStart = 0;
		this.playTime = 0;

		if(srcNode.nodeName == "showparam"){
			xmlAttributeMap = srcNode.attributes;
			if (xmlAttributeMap){
				xmlAttribute = xmlAttributeMap.getNamedItem("start");
				if (xmlAttribute != null && xmlAttribute.specified)
					this.objectStartTime = parseInt(xmlAttribute.value);
				xmlAttribute =  xmlAttributeMap.getNamedItem("duration");
				if (xmlAttribute != null && xmlAttribute.specified)
					this.objectDuration = parseInt(xmlAttribute.value);
				xmlAttribute =  xmlAttributeMap.getNamedItem("appearance");
				if (xmlAttribute != null && xmlAttribute.specified){
					switch((xmlAttribute.value).toLowerCase()){
					case "always":
						this.objectAppearance = SLIDESHOW_APPEARANCE_ALWAYS;
						break;
					case "pause":
						this.objectAppearance = SLIDESHOW_APPEARANCE_PAUSEONLY;
						break;
					case "play":
						this.objectAppearance = SLIDESHOW_APPEARANCE_PLAYONLY;
						break;
					}
				}
			}
		}
		return true;
	}

//	вызывается при входе в фрэйм
	function onEnterFrame(slideshowPlaying){
		if(slideshowPlaying){

			this.playStart = Player._time;

			if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS){
				if(this.objectStartTime > 0 || this.objectDuration > 0){
				// если объект имеет некоторую длительность
					if(this.playStart > 0)
						this.playTime += (Player._time - this.playStart);
					this.playStart = Player._time;
					updateSequencer.playing = true;
				} else {
				//	вошли на play - сразу надо показать с эффектам
					this.effectsEnabled = true;
					this.showObject();
					this.playObject();
					this.objectState = OBJECT_STATE_VISIBLE;
				}
			} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
				if(this.objectStartTime > 0 || this.objectDuration > 0){
				// если объект имеет некоторую длительность
					if(this.playStart > 0)
						this.playTime += (Player._time - this.playStart);
					this.playStart = Player._time;
					updateSequencer.playing = true;
				} else {
				//	вошли на play - сразу надо показать с эффектам
					this.effectsEnabled = true;
					this.showObject();
					this.playObject();
					this.objectState = OBJECT_STATE_VISIBLE;
				}
			} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PAUSEONLY){
			//	возможно это лишняя работа
				updateSequencer.playing = false;
				this.effectsEnabled = false;
				this.hideObject();
			}
		} else {
			if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS){
				if(this.objectStartTime == 0){
					this.effectsEnabled = true;
					this.showObject();
					this.objectState = OBJECT_STATE_VISIBLE;
				}
			} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
			//	если знать что объект гарантировано еще не показан, то можно и не вызывать
				//this.effectsEnabled = false;
				//this.hideObject();
			} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PAUSEONLY){
				this.effectsEnabled = true;
				this.showObject();
			}
		}
	}

//	вызывается по окончанию фрэйма
	function onLeaveFrame(slideshowPlaying){
//	trace("#FF0000MediaObject.onLeaveFrame" + slideshowPlaying);
		if(slideshowPlaying){
			if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS){
				updateSequencer.playing = false;
				this.stopObject();
				this.effectsEnabled = true;
				this.hideObject();
			} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
				updateSequencer.playing = false;
				this.stopObject();
				this.effectsEnabled = true;
				this.hideObject();
			} /*
			else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PAUSEONLY){
				
			}
			*/
		} else {
			if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS){
//trace("Always " + this.type + ": " + this.id);
				//this.effectsEnabled = false;
				this.effectsEnabled = true;
				this.hideObject();
			} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
				//trace("Playonly " + this.type + ": " + this.id);
				updateSequencer.playing = false;
				this.stopObject();
				this.effectsEnabled = false;
				this.hideObject();
			} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PAUSEONLY){
//trace("Pauseonly " + this.type + ": " + this.id);
				//this.effectsEnabled = false;
				this.effectsEnabled = true;
				this.hideObject();
			}
		}
	}

	function updateObject(){
//trace(((Player._time - this.playStart) + this.playTime) + "" +  this.objectDuration + this.objectStartTime);

		if (((Player._time - this.playStart) + this.playTime) > this.objectDuration + this.objectStartTime && this.objectState == OBJECT_STATE_VISIBLE){
			this.stopObject();
			this.effectsEnabled = true;
			this.hideObject();

		//	переводим статус в OBJECT_STATE_PLAYED
		//		- за счет этого можно кое-что оптимизировать
			this.objectState = OBJECT_STATE_PLAYED;	
			updateSequencer.playing = false;
		} else if(((Player._time - this.playStart) + this.playTime) > this.objectStartTime
					&& this.objectState == OBJECT_STATE_HIDDEN){
		//	=======  отключаем контрол и проч..
		//	this.disableOption(OPTION_ALL);
		//	======================
		//	показываем объект в первый раз - энаблим эффекты
			this.effectsEnabled = true;
			this.showObject();
			this.objectState = OBJECT_STATE_VISIBLE;
		//	если не указана длительность - вырубаем секвенсор
			if(this.objectDuration == 0)
				updateSequencer.playing = false;
		}
		else if (Player._time - this.playStart + this.playTime < this.objectStartTime){
		// Сюда мы можем попасть при повторном просмотре фрейма,
		// если у последней картинки не выставлена длительность
			this.stopObject();
			this.effectsEnabled = false;
			this.hideObject();
		}
	}

	function playObject(){

		this.playStart = Player._time;

		if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS){
			if(this.objectStartTime > 0 || this.objectDuration > 0){
			// если объект имеет некоторую длительность
				if(this.playStart > 0)
					this.playTime += (Player._time - this.playStart);	
				this.playStart = Player._time;
				if(this.objectState == OBJECT_STATE_VISIBLE && this.objectDuration > 0){
					updateSequencer.playing = true;
				} else if(this.objectState == OBJECT_STATE_HIDDEN){
					updateSequencer.playing = true;
				}
			} else {
				if(this.objectState == OBJECT_STATE_VISIBLE){
				//	объект был показан до паузы - его надо показать моментально (без эффектов)
					this.effectsEnabled = false;
					this.showObject();
				} else {
				//	значит тока первый раз вызывается опказ
				//		(тока что вошли в фрейм но на плей не нажимали)
					this.effectsEnabled = true;
					this.showObject();
					this.objectState = OBJECT_STATE_VISIBLE;
				}
			}
		} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
			if(this.objectStartTime > 0 || this.objectDuration > 0){
			// если объект имеет некоторую длительность
				if(this.playStart > 0)
					this.playTime += (Player._time - this.playStart);
				this.playStart = Player._time;
				if(this.objectState == OBJECT_STATE_VISIBLE){
				//	объект был показан до паузы - его надо показать моментально (без эффектов)
					this.effectsEnabled = false;
					this.showObject();
				}
				updateSequencer.playing = true;
			} else {
				if(this.objectState == OBJECT_STATE_VISIBLE){
				//	объект был показан до паузы - его надо показать моментально (без эффектов)
					this.effectsEnabled = false;
					this.showObject();
				} else {
				//	значит тока первый раз вызывается опказ
				//		(тока что вошли в фрейм но на плей не нажимали)
					this.effectsEnabled = true;
					this.showObject();
					this.objectState = OBJECT_STATE_VISIBLE;
				}
			}
		} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PAUSEONLY){
		//	если нажали плей надо сразу спртятать данный объект (тк он только для паузы)
			this.effectsEnabled = false;
			this.hideObject();
		}
	}

	function pauseObject(){
		if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS){
			if(this.objectStartTime > 0 || this.objectDuration > 0){
				updateSequencer.playing = false;
				if(this.playStart > 0)
					this.playTime += (Player._time - this.playStart);
			}
		} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
			if(this.objectStartTime > 0 || this.objectDuration > 0){
				updateSequencer.playing = false;
				if(this.playStart > 0)
					this.playTime += (Player._time - this.playStart);
			}
			this.effectsEnabled = false;
			this.hideObject();
		} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PAUSEONLY){
			//if(this.objectState == OBJECT_STATE_VISIBLE){
			//	объект был показан до паузы - его надо показать моментально (без эффектов)
			//	this.effectsEnabled = false;
			//	this.showObject();
			//} else {
			//	значит тока первый раз вызывается опказ
			//		(тока что вошли в фрейм но на плей не нажимали)
				this.effectsEnabled = true;
				this.showObject();
			//	this.objectState = OBJECT_STATE_VISIBLE;
			//}	
		}
	}

	function stopObject(){
	}

//	функция возвращает продолжительность объекта
	function getDuration(){
		var totalDuration = 0;
		if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS
			|| this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
			totalDuration += this.objectStartTime;
			
			if(this.objectDuration){
				totalDuration += this.objectDuration;
			} else if(this.objectContent){
				if(this.objectContent instanceof Audio || this.objectContent instanceof Video)
					totalDuration += this.objectContent.duration;
			}
		}
		return totalDuration;
	}

	function rewindObject(){
		updateSequencer.playing = false;

		this.playStart = 0;
		this.playTime = 0;
		this.objectState = OBJECT_STATE_HIDDEN;
	}
]]></script>
</composition>

<composition name="slideshowImage"  class="rnmc_stdImage" scriptProviders="slideshowMediaObject">
<script><![CDATA[
	function initFromNode(srcNode){
//trace("slideshowImage.initFromNode()");
		var xmlNode = null;
		var xmlAttributeMap = null;
		var xmlAttribute = null;

		xmlNode = srcNode.firstChild;
		while(xmlNode){
			if(xmlNode.nodeName == "showparam"){
				this.parseShowParamNode(xmlNode);
			}
			xmlNode = xmlNode.nextSibling;
		}
		rnmc_stdImage_initFromNode(srcNode);
		return true;
	}
]]></script>
<sequencer name="updateSequencer" playing="false" loop="true">
<script>
	updateObject();
</script>
</sequencer>
</composition>

<composition name="slideshowAnimation"
	class="rnmc_stdAnimation" scriptProviders="slideshowMediaObject">
	<script><![CDATA[
		function initFromNode(srcNode){
			var xmlNode = null;
			var xmlAttributeMap = null;
			var xmlAttribute = null;

			xmlNode = srcNode.firstChild;
			while(xmlNode){
				if(xmlNode.nodeName == "showparam"){
					this.parseShowParamNode(xmlNode);
				}
				xmlNode = xmlNode.nextSibling;
			}
			rnmc_stdAnimation_initFromNode(srcNode);
			return true;
		}

		function playObject(){
			if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS
				|| this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
				if(this.objectContent)
					this.objectContent.playing = true;
				if(this.playControl)
					this.playControl.synchronizeControl();
				if (this.rolloverMenuObject)
					this.rolloverMenuObject.synchronizeControl();
			//	!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
			// может быть здесь надо добавить обработку - если звук стартует не сразу
			} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PAUSEONLY){
				if(parent.playing){
					rnmc_stdAnimation_stopObject();
					rnmc_stdAnimation_hideObject();
				} else {
					rnmc_stdAnimation_playObject();
				}
			}
		}

		function pauseObject(){
			if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS
				|| this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
				if(this.objectContent)
					this.objectContent.playing = false;
				if(this.playControl)
					this.playControl.synchronizeControl();
				if (this.rolloverMenuObject)
					this.rolloverMenuObject.synchronizeControl();
			} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PAUSEONLY){
				if(parent.playing){
					rnmc_stdAnimation_stopObject();
				} else {
					rnmc_stdAnimation_showObject();
					rnmc_stdAnimation_pauseObject();
				}
			}
		}

		function stopObject(){
			if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS
				|| this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
				if(this.objectContent){
					this.objectContent.playing = false;
					this.objectContent.rewind();
				}

				if(this.playControl)
					this.playControl.synchronizeControl();
				if (this.rolloverMenuObject)
					this.rolloverMenuObject.synchronizeControl();
			} else {
				rnmc_stdAnimation_stopObject();
			}
		}

		function rewindObject(){
			if(this.objectContent)
				this.objectContent.rewind();
			slideshowMediaObject_rewindObject();
		}
	]]></script>
	<sequencer name="updateSequencer" playing="false" loop="true">
		<script>
			updateObject();
		</script>
	</sequencer>
</composition>

<composition name="slideshowText" class="rnmc_stdText" scriptProviders="slideshowMediaObject">
<script><![CDATA[
	function initFromNode(srcNode){
//trace("slideshowText.initFromNode()");
		var xmlNode = null;
		var xmlAttributeMap = null;
		var xmlAttribute = null;
		
		xmlNode = srcNode.firstChild;
		while(xmlNode){
			if(xmlNode.nodeName == "showparam"){
				this.parseShowParamNode(xmlNode);
			}
			xmlNode = xmlNode.nextSibling;
		}
		rnmc_stdText_initFromNode(srcNode);
		return true;
	}
]]></script>  
<sequencer name="updateSequencer" playing="false" loop="true">
<script>
	updateObject();
</script>
</sequencer></composition>

<composition name="slideshowAudio" class="rnmc_stdAudio" scriptProviders="slideshowMediaObject">
<script><![CDATA[
	function initFromNode(srcNode){
//trace("slideshowAudio.initFromNode()");
		var xmlNode = null;
		var xmlAttributeMap = null;
		var xmlAttribute = null;

		xmlNode = srcNode.firstChild;
		while(xmlNode){
			if(xmlNode.nodeName == "showparam"){
				this.parseShowParamNode(xmlNode);
			}
			xmlNode = xmlNode.nextSibling;
		}
		rnmc_stdAudio_initFromNode(srcNode);
		return true;
	}

	function playObject(){
//trace("slideshowAudio.playObject()");
		if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS
			|| this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
			if(this.objectContent)
				this.objectContent.playing = true;
			if(this.playControl)
				this.playControl.synchronizeControl();
			if (this.rolloverMenuObject)
				this.rolloverMenuObject.synchronizeControl();
		//	!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		// может быть здесь надо добавить обработку - если звук стартует не сразу
		} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PAUSEONLY){
			if(parent.playing){
				rnmc_stdAudio_stopObject();
				rnmc_stdAudio_hideObject();
			} else {
				rnmc_stdAudio_playObject();
			}
		}
	}

	function pauseObject(){
//trace("slideshowAudio.pauseObject()");
		if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS
			|| this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
			if(this.objectContent)
				this.objectContent.playing = false;
			if(this.playControl)
				this.playControl.synchronizeControl();
			if (this.rolloverMenuObject)
				this.rolloverMenuObject.synchronizeControl();
		} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PAUSEONLY){
			if(parent.playing){
				rnmc_stdAudio_stopObject();
			} else {
				rnmc_stdAudio_showObject();
				rnmc_stdAudio_pauseObject();
			}
		}
	}

	function stopObject(){
//trace("slideshowAudio.stopObject()");
		if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS
			|| this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
			if(this.objectContent){
				this.objectContent.playing = false;
				this.objectContent.rewind();
			}
		} else {
			rnmc_stdAudio_stopObject();
		}
	}

	function rewindObject(){
//trace("#slideshowAudio.rewindObject()");
		if(this.objectContent)
			this.objectContent.rewind();
		slideshowMediaObject_rewindObject();
	}
]]></script>
<sequencer name="updateSequencer" playing="false" loop="true">
<script>
	updateObject();
</script>
</sequencer>
</composition>

<composition name="slideshowVideo" class="rnmc_stdVideo" scriptProviders="slideshowMediaObject">
<script><![CDATA[
	function initFromNode(srcNode){
//trace("slideshowVideo.initFromNode()");
		var xmlNode = null;
		var xmlAttributeMap = null;
		var xmlAttribute = null;

		xmlNode = srcNode.firstChild;
		while(xmlNode){
			if(xmlNode.nodeName == "showparam"){
				this.parseShowParamNode(xmlNode);
			}
			xmlNode = xmlNode.nextSibling;
		}
		rnmc_stdVideo_initFromNode(srcNode);
		return true;
	}

	function playObject(){
//trace("slideshowVideo.playObject()");
		if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS
			|| this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
			if(this.objectContent)
				this.objectContent.playing = true;
			if(this.playControl)
				this.playControl.synchronizeControl();
			if (this.rolloverMenuObject)
				this.rolloverMenuObject.synchronizeControl();
		//	!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		// может быть здесь надо добавить обработку - если звук стартует не сразу
		} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PAUSEONLY){
			if(parent.playing){
				rnmc_stdVideo_stopObject();
				rnmc_stdVideo_hideObject();
			} else {
				rnmc_stdVideo_playObject();
			}
		}
	}

	function pauseObject(){
		if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS
			|| this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
			if(this.objectContent)
				this.objectContent.playing = false;
			if(this.playControl)
				this.playControl.synchronizeControl();
			if (this.rolloverMenuObject)
				this.rolloverMenuObject.synchronizeControl();
		} else if(this.objectAppearance == SLIDESHOW_APPEARANCE_PAUSEONLY){
			if(parent.playing){
				rnmc_stdVideo_stopObject();
			} else {
				rnmc_stdVideo_showObject();
				rnmc_stdVideo_pauseObject();
			}
		}
	}

	function stopObject(){
		if(this.objectAppearance == SLIDESHOW_APPEARANCE_ALWAYS
			|| this.objectAppearance == SLIDESHOW_APPEARANCE_PLAYONLY){
			if(this.objectContent){
				this.objectContent.playing = false;
				this.objectContent.rewind();
			}

			if(this.playControl)
				this.playControl.synchronizeControl();
			if (this.rolloverMenuObject)
				this.rolloverMenuObject.synchronizeControl();
		} else {
			rnmc_stdVideo_stopObject();
		}
	}

	function rewindObject(){
		if(this.objectContent)
			this.objectContent.rewind();
		slideshowMediaObject_rewindObject();
	}

]]></script>
<sequencer name="updateSequencer" playing="false" loop="true">
<script>
	updateObject();
</script>
</sequencer>
</composition>

<composition name="slideshowFlash" class="rnmc_stdFlash" scriptProviders="slideshowMediaObject">
<script><![CDATA[
	function initFromNode(srcNode){
//trace("slideshowFlash.initFromNode()");
		var xmlNode = null;
		var xmlAttributeMap = null;
		var xmlAttribute = null;
		
		xmlNode = srcNode.firstChild;
		while(xmlNode){
			if(xmlNode.nodeName == "showparam"){
				this.parseShowParamNode(xmlNode);
			}
			xmlNode = xmlNode.nextSibling;
		}
		rnmc_stdFlash_initFromNode(srcNode);
		return true;
	}
]]></script>
<sequencer name="updateSequencer" playing="false" loop="true">
<script>
	updateObject();
</script>
</sequencer>
</composition>

<composition name="slideshowQuickTime" class="rnmc_stdQuickTime" scriptProviders="slideshowMediaObject">
<script><![CDATA[
	function initFromNode(srcNode){
//trace("slideshowQuickTime.initFromNode()");
		var xmlNode = null;
		var xmlAttributeMap = null;
		var xmlAttribute = null;

		xmlNode = srcNode.firstChild;
		while(xmlNode){
			if(xmlNode.nodeName == "showparam"){
				this.parseShowParamNode(xmlNode);
			}
			xmlNode = xmlNode.nextSibling;
		}
		rnmc_stdQuickTime_initFromNode(srcNode);
		return true;
	}
]]></script>
<sequencer name="updateSequencer" playing="false" loop="true">
<script>
	updateObject();
</script>
</sequencer>
</composition>

<composition name="slideshowObject3D"
	class="rnmc_std3DObject" scriptProviders="slideshowMediaObject">
	<script><![CDATA[
		function initFromNode(srcNode){
			var xmlNode = null;
			var xmlAttributeMap = null;
			var xmlAttribute = null;

			xmlNode = srcNode.firstChild;
			while(xmlNode){
				if(xmlNode.nodeName == "showparam"){
					this.parseShowParamNode(xmlNode);
				}
				xmlNode = xmlNode.nextSibling;
			}
			rnmc_rnmc_std3DObject_initFromNode(srcNode);
			return true;
		}
	]]></script>
	<sequencer name="updateSequencer" playing="false" loop="true">
	<script>
		updateObject();
	</script>
	</sequencer>
</composition>

</rmml>