//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////// Anton Belousoc  © 2006 Slideshow class  ////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* 
	required JS classes:    prototype.js,  effects.js, slider.js;

*/
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var slideshow;

function start_slideshow(delay, start_frame){
	 if(!delay || delay<2 || delay>30){
		delay = 5;
	 }
	 
	 if(!start_frame || start_frame>fadeimages.length-1){
		start_frame = 0;
	 }
	 
	 Slideshow = new InitSlideshow(fadeimages, delay*1000, start_frame);
}


function InitSlideshow(theimages, delay, curimageid){
	this.timer;
	this.timer_set = 1;
	this.delay=delay;
	this.degree=10; //initial opacity degree (10%)
	this.curimageid=curimageid;
	this.theimages=theimages;
	this.proxyimages = new Array();
	if(this.theimages.length > 1){
	//alert('Opera issues fixing - slideshow may be unavailable for few minutes!\n\n\n>>>>>> Opera time value: '+this.delay/1000);
		//$('slideshow_controls').style.display="block";
		document.getElementById ('slideshow_controls').style.display = 'block';
		new Control.Slider('ss_handle4','ss_track4',{range:$R(2,30),
	        values:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],
			sliderValue:this.delay/1000,
	        onSlide:function(v){$('ss_debug4').innerHTML='New delay: '+v+' sec.';},
	        onChange:function(v){$('ss_debug4').innerHTML='Delay: '+v+' sec.'; Slideshow.SetDelay(v);}});
		$('stop_slideshow_control').style.display = 'block';
		$('start_slideshow_control').style.display = 'none';
		$('ss_debug4').innerHTML='Delay: '+this.delay/1000+' sec.';
		setTimeout("Slideshow.LoadFrame("+this.curimageid+")",500);
	} else if(this.theimages.length == 1) {
		$('slideshow_controls').style.display="none";
		this.proxyimages[this.curimageid] = new Image();
		this.proxyimages[this.curimageid].src = this.theimages[this.curimageid][0];
		this.StaticCheckPreload(this.curimageid);
	}
	 else if(this.theimages.length == 0) {
		$('slideshow_controls').style.display="none";
		//this.proxyimages[this.curimageid] = new Image();
		//this.proxyimages[this.curimageid].src = this.theimages[this.curimageid][0];
		//this.StaticCheckPreload(this.curimageid);
		$('slideshow_frames').innerHTML = '';
		$('slideshow_captions').innerHTML = 'Sorry, there are no frames in this slideshow.';
		Effect.Appear('SlideshowFrame');
	}
}

InitSlideshow.prototype.LoadFrame = function(frame_id){
	this.proxyimages[frame_id] = new Image();
	this.proxyimages[frame_id].src = this.theimages[frame_id][0];
	this.CheckPreload(frame_id);
}
InitSlideshow.prototype.StaticCheckPreload = function(frame_id){
	if(this.proxyimages[frame_id].complete==true){
		$('slideshow_frames').innerHTML = '<img id="SlideshowFrame" src="' + this.theimages[frame_id][0] + '" style="display:none;">';
		$('slideshow_captions').innerHTML = (this.theimages[frame_id][1]!='') ? this.theimages[frame_id][1] : '';
		Effect.Appear('SlideshowFrame');
	} else {
		setTimeout("Slideshow.StaticCheckPreload("+frame_id+")",200);
	}
}
InitSlideshow.prototype.CheckPreload = function(frame_id){
	if(this.proxyimages[frame_id].complete==true){
		this.SwitchFrame();
	} else {
		setTimeout("Slideshow.CheckPreload("+frame_id+")",200);
	}
}
InitSlideshow.prototype.StartTimer = function(delay){
	this.timer = setTimeout("Slideshow.NextFrame()",delay);
	this.timer_set = 1;
}
InitSlideshow.prototype.StopTimer = function(){
	this.timer_set = 0;
	clearTimeout(this.timer);
}
InitSlideshow.prototype.ReStartTimer = function(){
	this.StartTimer(this.delay);
	this.StopTimer();
	this.timer_set = 1;
}

InitSlideshow.prototype.NextFrame = function(){
	clearTimeout(this.timer);
	this.curimageid = (this.curimageid==this.theimages.length-1)?0:this.curimageid+1;
	this.LoadFrame(this.curimageid);
}
InitSlideshow.prototype.PrevFrame = function(){
	clearTimeout(this.timer);
	this.curimageid = (this.curimageid==0)?this.theimages.length-1:this.curimageid-1;
	this.LoadFrame(this.curimageid);
}


InitSlideshow.prototype.SwitchFrame = function(){
	Effect.Fade('SlideshowFrame');
	setTimeout("Slideshow.ShowFrame()",1111);
	if ($('tot_num') != undefined) {
		$('tot_num').innerHTML = this.theimages.length;
		$('cur_num').innerHTML = this.curimageid+1;
	}
}

InitSlideshow.prototype.SetDelay = function(v){
	clearTimeout(this.timer);
	this.delay=v*1000;
	this.StartTimer(this.delay-1111);
}

InitSlideshow.prototype.ShowFrame = function(){
	$('slideshow_frames').innerHTML = '<img id="SlideshowFrame" src="' + this.theimages[this.curimageid][0] + '" style="display:none;">';
	$('slideshow_captions').innerHTML = (this.theimages[this.curimageid][1]!='') ? this.theimages[this.curimageid][1] : '';
	Effect.Appear('SlideshowFrame');
	if(this.timer_set == 1) this.StartTimer(this.delay);
}


function stop_slideshow_control(){
	Slideshow.StopTimer();
	$('stop_slideshow_control').style.display = 'none';
	$('start_slideshow_control').style.display = 'block';
}

function start_slideshow_control(){
	Slideshow.StartTimer(1500);
	$('stop_slideshow_control').style.display = 'block';
	$('start_slideshow_control').style.display = 'none';
}