function PhotoAnimationNone( id, isFirst, OpacityStart, OpacityEnd, WaitExit, OpacityExit, GoToID, Timeout ) {
	var PhotoAnimation = document.getElementById( id );
	PhotoAnimation.OpacityStart = OpacityStart;
	PhotoAnimation.OpacityEnd = OpacityEnd;
	PhotoAnimation.WaitExit = WaitExit;
	PhotoAnimation.OpacityExit = OpacityExit;
	PhotoAnimation.GoToID = GoToID;
	PhotoAnimation.NextPhotoAnimation = GoToID != "" ? document.getElementById( GoToID ) : null;
	PhotoAnimation.Timeout = Timeout;
	
	PhotoAnimation.Complete = function( Photo, func ) {
		if( !Photo ) return true;
		if( Photo.firstChild.firstChild.firstChild.complete ) return true;
		setTimeout( "document.getElementById( '" + this.id + "' )." + func + "()", 100 );
		return false;
	}

	PhotoAnimation.Set = function( Opacity ) {
		with( this.firstChild.firstChild.style ) {
			visibility = "visible";
			opacity = Opacity / 100;
			filter = "alpha(opacity=" + Opacity + ")";
		}
	}
	
	PhotoAnimation.Start = function() {
		if( !this.Complete( this.firstChild, "Start" ) ) return;
		this.Set( this.OpacityStart );
		setTimeout( "document.getElementById( '" + this.id + "' ).End()", this.Timeout );
	}
	
	PhotoAnimation.End = function() {
		this.Set( this.OpacityEnd );
		setTimeout( "document.getElementById( '" + this.id + "' ).GoNext()", this.WaitExit );
	}
	
	PhotoAnimation.GoNext = function() {
		this.Set( this.OpacityExit );
		if( this.NextPhotoAnimation ) this.NextPhotoAnimation.Start();
	}
	
	if( isFirst ) PhotoAnimation.Start();
}

function PhotoAnimationSoloOpacity( id, isFirst, OpacityStart, OpacityEnd, WaitExit, OpacityExit, GoToID, Timeout, Step, Times, CircleWait ) {
	var PhotoAnimation = document.getElementById( id );

	PhotoAnimation.OpacityStart = OpacityStart;
	PhotoAnimation.OpacityEnd = OpacityEnd;
	PhotoAnimation.WaitExit = WaitExit;
	PhotoAnimation.OpacityExit = OpacityExit;
	PhotoAnimation.GoToID = GoToID;
	PhotoAnimation.NextPhotoAnimation = GoToID != "" ? document.getElementById( GoToID ) : null;
	PhotoAnimation.Timeout = Timeout;
	PhotoAnimation.Step = Step;
	PhotoAnimation.Times = Times;
	PhotoAnimation.cntTimes = 1;
	PhotoAnimation.CircleWait = CircleWait;
	
	PhotoAnimation.Complete = function( Photo, func ) {
		if( !Photo ) return true;
		if( Photo.firstChild.firstChild.firstChild.complete ) return true;
		setTimeout( "document.getElementById( '" + this.id + "' )." + func + "()", 100 );
		return false;
	}

	PhotoAnimation.Set = function() {
		with( this.firstChild.firstChild.style ) {
			visibility = "visible";
			opacity = this.WorkOpacity / 100;
			filter = "alpha(opacity=" + this.WorkOpacity + ")";
		}
	}
	
	PhotoAnimation.Start = function() {
		if( !this.Complete( this.firstChild, "Start" ) ) return;
		this.WorkOpacity = this.OpacityStart;
		this.Step = Math.abs( this.Step );
		this.WorkStep = this.OpacityEnd >= this.OpacityStart ? this.Step : -this.Step;
		this.Set();
		setTimeout( "document.getElementById( '" + this.id + "' ).doStep()", this.Timeout );
	}
	
	PhotoAnimation.doStep = function() {
		this.WorkOpacity += this.WorkStep;
		if( this.WorkOpacity > 100 ) {
			this.WorkOpacity = 100;
		}
		
		if( this.WorkOpacity < 0 ) {
			this.WorkOpacity = 0;
		}
		
		this.Set();

		if( this.WorkOpacity == this.OpacityEnd ) {
			if( PhotoAnimation.cntTimes++ < PhotoAnimation.Times ) {
				setTimeout( "document.getElementById( '" + this.id + "' ).Start()", this.CircleWait );
				return;
			}
			this.End();
			return;
		}
		
		setTimeout( "document.getElementById( '" + this.id + "' ).doStep()", this.Timeout );
	}
	
	PhotoAnimation.Circle = function() {
		this.setOpacity( this.PrevPhoto, 0 );
		this.Start();
	}
	
	PhotoAnimation.End = function() {
		this.WorkOpacity = this.OpacityEnd;
		this.Set();
		setTimeout( "document.getElementById( '" + this.id + "' ).GoNext()", this.WaitExit );
	}
	
	PhotoAnimation.GoNext = function() {
		PhotoAnimation.cntTimes = 1;
		this.WorkOpacity = this.OpacityExit;
		this.Set();
		if( this.NextPhotoAnimation ) this.NextPhotoAnimation.Start();
	}
	
	if( isFirst ) PhotoAnimation.Start();
}

function PhotoAnimationOpacity( id, isFirst, OpacityStart, OpacityEnd, WaitExit, OpacityExit, GoToID, Timeout, Step, NextPhotoWait, Times, CircleWait ) {
	var PhotoAnimation = document.getElementById( id );

	PhotoAnimation.OpacityStart = OpacityStart;
	PhotoAnimation.OpacityEnd = OpacityEnd;
	PhotoAnimation.WaitExit = WaitExit;
	PhotoAnimation.OpacityExit = OpacityExit;
	PhotoAnimation.GoToID = GoToID;
	PhotoAnimation.NextPhotoAnimation = GoToID != "" ? document.getElementById( GoToID ) : null;
	PhotoAnimation.Timeout = Timeout;
	PhotoAnimation.Step = Step;
	PhotoAnimation.NextPhotoWait = NextPhotoWait;
	PhotoAnimation.Times = Times;
	PhotoAnimation.cntTimes = 1;
	PhotoAnimation.CircleWait = CircleWait;
	
	PhotoAnimation.Complete = function( Photo, func ) {
		if( !Photo ) return true;
		if( Photo.firstChild.firstChild.firstChild.complete ) return true;
		setTimeout( "document.getElementById( '" + this.id + "' )." + func + "()", 100 );
		return false;
	}

	PhotoAnimation.nextPhoto = function() {
		var nextPhoto = this.Photo.nextSibling;
		if( !nextPhoto ) return null;
		if( nextPhoto.nodeName.toUpperCase() != "DIV" ) return null;
		return nextPhoto;
	}
	
	PhotoAnimation.setOpacity = function( Photo, Opacity ) {
		if( !Photo ) return;
	
		with( Photo.firstChild.style ) {
			visibility = "visible";
			opacity = Opacity / 100;
			filter = "alpha(opacity=" + Opacity + ")";
		}
	}
	
	PhotoAnimation.Set = function() {
		this.setOpacity( this.Photo, this.WorkOpacity  );
		this.setOpacity( this.PrevPhoto, 100 - this.WorkOpacity  );
	}
	
	PhotoAnimation.Start = function() {
		this.WorkOpacity = this.OpacityStart;
		this.WorkStep = this.Step;
		this.Photo = this.firstChild;
		this.PrevPhoto = null;
		if( !this.Complete( this.Photo, "Start" ) ) return;
		this.Set();
		setTimeout( "document.getElementById( '" + this.id + "' ).doStep()", this.Timeout );
	}
	
	PhotoAnimation.doStep = function() {
		if( !this.Complete( this.Photo, "doStep" ) ) return;
		if( !this.Complete( this.PrevPhoto, "doStep" ) ) return;
	
		this.WorkOpacity += this.WorkStep;

		if( this.WorkOpacity > 100 ) {
			this.WorkOpacity = 100;
		}
		
		if( this.WorkOpacity < 0 ) {
			this.WorkOpacity = 0;
		}
		
		this.Set();

		if( this.WorkOpacity == 100 || this.WorkOpacity == 0 || ( !this.nextPhoto() && this.WorkOpacity == this.OpacityEnd ) ) {
			if( this.WorkOpacity == 100 ) this.WorkOpacity = 0;
			else if( this.WorkOpacity == 0 ) this.WorkOpacity = 100;
			if( !this.nextPhoto() ) this.setOpacity( this.PrevPhoto, 0 );
			this.PrevPhoto = this.Photo;
			this.Photo = this.nextPhoto();
			if( this.Photo ) {
				setTimeout( "document.getElementById( '" + this.id + "' ).doStep()", this.NextPhotoWait );
			}
			else if( PhotoAnimation.cntTimes++ < PhotoAnimation.Times ) {
				setTimeout( "document.getElementById( '" + this.id + "' ).Circle()", this.CircleWait );
			}
			else {
				setTimeout( "document.getElementById( '" + this.id + "' ).End()", this.NextPhotoWait );
			}
			return;
		}
		
		setTimeout( "document.getElementById( '" + this.id + "' ).doStep()", this.Timeout );
	}
	
	PhotoAnimation.Circle = function() {
		if( !this.Complete( this.PrevPhoto, "Circle" ) ) return;
		this.WorkOpacity = this.OpacityStart;
		this.WorkStep = this.Step;
		this.Photo = this.firstChild;
		if( !this.Complete( this.Photo, "Start" ) ) return;
		this.Set();
		setTimeout( "document.getElementById( '" + this.id + "' ).doStep()", this.Timeout );
	}
	
	PhotoAnimation.End = function() {
		if( !this.Complete( this.PrevPhoto, "End" ) ) return;
		this.setOpacity( this.PrevPhoto, this.OpacityEnd );
		setTimeout( "document.getElementById( '" + this.id + "' ).GoNext()", this.WaitExit );
	}
	
	PhotoAnimation.GoNext = function() {
		if( !this.Complete( this.PrevPhoto, "GoNext" ) ) return;
		PhotoAnimation.cntTimes = 1;
		this.setOpacity( this.PrevPhoto, this.OpacityExit );
		if( this.NextPhotoAnimation ) this.NextPhotoAnimation.Start();
	}
	
	if( isFirst ) PhotoAnimation.Start();
}





function PhotoAnimationMovie( id, isFirst, OpacityStart, OpacityStep, Timeout, RepeatTimes, RestartTimeout, WaitAtEnd, OpacityEnd ) {
	var PhotoAnimation = document.getElementById( id );

	PhotoAnimation.OpacityStart = OpacityStart;
	PhotoAnimation.OpacityStep = OpacityStep;
	PhotoAnimation.Timeout = Timeout;
	PhotoAnimation.RepeatTimes = RepeatTimes;
	PhotoAnimation.RestartTimeout = RestartTimeout;
	PhotoAnimation.WaitAtEnd = WaitAtEnd;
	PhotoAnimation.OpacityEnd = OpacityEnd;
	PhotoAnimation.NextPhotoAnimation = PhotoAnimation.nextSibling ? PhotoAnimation.nextSibling : PhotoAnimation.parentNode.firstChild;

	PhotoAnimation.FirstPhoto = function() {
		return this.firstChild;
	}

	PhotoAnimation.NextPhoto = function( CurrentPhoto ) {
		if( CurrentPhoto == this.LastPhoto() ) return null;
		return CurrentPhoto.nextSibling;
	}

	PhotoAnimation.LastPhoto = function() {
		return this.lastChild.previousSibling;
	}

	PhotoAnimation.Start = function() {
		this.RepeatTimesCnt = 1;
		this.doStart();
		this.Step();
	}
	
	PhotoAnimation.doStart = function() {
		this.CurrentPhoto = this.FirstPhoto();
		this.Opacity = this.OpacityStart;
	}
		
	PhotoAnimation.Step = function() {
		with( this.CurrentPhoto.firstChild.style ) {
			visibility = "visible";
			opacity = this.Opacity / 100;
			filter = "alpha(opacity=" + this.Opacity + ")";
		}
		for( var Photo = this.FirstPhoto(); Photo; Photo = this.NextPhoto( Photo ) ) {
			if( Photo != this.CurrentPhoto ) {
				with( Photo.firstChild.style ) {
					opacity = 0;
					filter = "alpha(opacity=0)";
				}
			}
		}

		this.CurrentPhoto = this.NextPhoto( this.CurrentPhoto );

		this.Opacity += this.OpacityStep;
		if( this.Opacity > 100 ) this.Opacity = 100;
		if( this.Opacity < 0 ) this.Opacity = 0;
		
		if( this.CurrentPhoto ) {
			setTimeout( "document.getElementById( '" + this.id + "' ).Step()", this.Timeout );
			return;
		}
		
		if( this.RepeatTimesCnt++ < this.RepeatTimes ) {
			this.doStart();
			setTimeout( "document.getElementById( '" + this.id + "' ).Step()", this.RestartTimeout );
			return;
		}

		setTimeout( "document.getElementById( '" + this.id + "' ).End()", this.RestartTimeout );
	}
	
	PhotoAnimation.End = function() {
		with( this.LastPhoto().firstChild.style ) {
			opacity = this.OpacityEnd / 100;
			filter = "alpha(opacity=" + this.OpacityEnd + ")";
		}

		for( var Photo = this.FirstPhoto(); Photo; Photo = this.NextPhoto( Photo ) ) {
			if( Photo != this.LastPhoto() ) {
				with( Photo.firstChild.style ) {
					opacity = 0;
					filter = "alpha(opacity=0)";
				}
			}
		}
		
		if( this.WaitAtEnd ) setTimeout( "document.getElementById( '" + this.NextPhotoAnimation.id + "' ).Start()", this.WaitAtEnd );
	}
	
	if( isFirst ) PhotoAnimation.Start();
}

