var thumb_group_count=5; //number of thumbs displayed at once.  Can be externally set.
var cur_image=0;		 //index image being shown right now
var cur_thumb_group=0;	 //index of current group beign shownm
var disp_images=new Array();//image list.  contains large images, their thumsb, and popup detail html
var autoplay=false;		 //automaticall play the SS
var autoplay_timer_id=0; //timer id of autoplay
var autoplay_interval=2500;//duration between skiping slides
var show_info=false;	 //show the info button
var tie_thumbs=true;	 //thumbs on left correspond to large image in center
var thumb_count=0;		 //total number of thumbs if not tied to large image/pulled from disp_images


var preload_l=new Array();
var preload_t=new Array();

//add an image to the list of displayables
function AddImage(full,thumb,info)
{
	var len=disp_images.length;
	disp_images[len]=new Array();
	disp_images[len]['full']=full;
	disp_images[len]['thumb']=thumb;  
	disp_images[len]['info']=info;  
}

//Change the display and highlighting
function ChangeImage(i_index,force)
{
  	//ignore if only safeguard call
  	if(cur_image==i_index && !force)
  		return;
	//hide the info box
  	ShowInfo(false);
  
	//remove highlighting of previous thumb
	var last_thumb=document.getElementById('image_thumb_'+cur_image);
	if(last_thumb)
		last_thumb.className='thumb';

	//who's being shown
	cur_image=i_index;
	if(cur_image>=disp_images.length)
		cur_image=0;
	if(cur_image<0)
		cur_image=disp_images.length-1;
		
	if(tie_thumbs)
		ChangeImageSet(cur_image/thumb_group_count);
	else
	{
		PreloadImages((cur_image/thumb_group_count)-1);
		PreloadImages((cur_image/thumb_group_count));
		PreloadImages((cur_image/thumb_group_count)+1);	  
	}
		    	
	//update display
	var main_image=document.getElementById('image_main_container');
	var cur_thumb=document.getElementById('image_thumb_'+cur_image);

	if(main_image)
	{
		main_image.style.backgroundImage='url("'+disp_images[cur_image]['full']+'")';	
	}

	if(cur_thumb)
		cur_thumb.className='selectedThumb';
		
}

function NextImage()
{
	ChangeImage(cur_image+1);
}

function PrevImage()
{
	ChangeImage(cur_image-1);
}

function ChangeImageSet(i_index,force)
{   	
  	var last_group=cur_thumb_group;
  	
 	//round, and ignore if only safe guard call 
  	i_index=Math.round(i_index-.5);
  	if(cur_thumb_group==i_index && !force)
  		return;

	  
	//who's being shown
	cur_thumb_group=i_index;
	if(cur_thumb_group>=disp_images.length/thumb_group_count)
		cur_thumb_group=0;
	if(cur_thumb_group<0)
		cur_thumb_group=(disp_images.length-1)/thumb_group_count;	


	MoveToImageSet(cur_thumb_group);
	
	//preload this one and one group in either direction
	PreloadImages(cur_thumb_group-1);
	PreloadImages(cur_thumb_group);
	PreloadImages(cur_thumb_group+1);

	//safe guard call to change to current image - first in group if moving foreward,last if moving back
	if(cur_thumb_group>last_group || (cur_thumb_group==0 && Math.round((disp_images.length/thumb_group_count)-.5)==last_group))
		ChangeImage(cur_thumb_group*thumb_group_count);
	else
	{
	  	var last=(cur_thumb_group+1)*thumb_group_count-1;
	  	if(last>=disp_images.length)
	  		last=disp_images.length-1;
		ChangeImage(last);
	}
	
	var showing=document.getElementById('showing_div');
	if(showing)
		showing.innerHTML='Showing '+(cur_thumb_group*thumb_group_count+1)+'-'+Math.min(((cur_thumb_group+1)*thumb_group_count),disp_images.length)+'<br/>of '+disp_images.length+' images';

}

function NextImageSet()
{
	ChangeImageSet(cur_thumb_group+1);  
}

function PrevImageSet()
{
	ChangeImageSet(cur_thumb_group-1);  
}

function MoveToImageSet(i_index)
{
	cur_thumb_group=i_index;
	if(!tie_thumbs) //otherwise, already done...
	{
		if(cur_thumb_group>=(thumb_count)/thumb_group_count)
			cur_thumb_group=0;
		if(cur_thumb_group<0)
			cur_thumb_group=(thumb_count-1)/thumb_group_count;	

  		cur_thumb_group=Math.round(cur_thumb_group-.5);
	}
	
	
  
	//animate
	var el=document.getElementById('image_thumb_container');
	if(el)
	{
		var new_top=0-(360*cur_thumb_group);	  
	  
		if(new_top<=0-el.offsetHeight)
			new_top=-1;		
		if (new_top==0)
			new_top=-1;


//		alert('next-fix:'+new_top);

		var vis=SetControlsVisible();vis=true;
		ShowSetControls(false);
		new Rico.Effect.Position('image_thumb_container', null, new_top, 1000, 25,{complete:function() {ShowSetControls(vis);}});	
	}
  
}

function MoveNextImageSet()
{
	MoveToImageSet(cur_thumb_group+1);  
}

function MovePrevImageSet()
{
	MoveToImageSet(cur_thumb_group-1);  
}

function SetImageAutoPlay(on,donotskip)
{
	//start/stop the timer
	autoplay=on;
	if(!autoplay)
		clearInterval(autoplay_timer_id);	  
	else
		autoplay_timer_id=setInterval("NextImage()",autoplay_interval);	  

	//update display
	var control=document.getElementById('autoplay_control');
	if(control)
	{
		var html='';
		if(!autoplay)
		{
			html+="<a href='#' onclick=\"SetImageAutoPlay(true)\"onmouseout='if (document.images) {play.src = play1.src}' onmouseover='if (document.images) {play.src = play2.src}'>";
			html+="<img alt='Play Photo Slideshow' title='Play Photo Slideshow' width='49' height='24' name='play' src='images/play1.gif' border='0'></a>&nbsp;&nbsp;";
		}
		else
		{
		  	ShowInfo(false);
		  	if(!donotskip)
			  	NextImage();
			html+="<a href='#' onclick=\"SetImageAutoPlay(false)\"onmouseout='if (document.images) {stop.src = stop1.src}' onmouseover='if (document.images) {stop.src = stop2.src}'>";
			html+="<img alt='Stop Photo Slideshow' title='Stop Photo Slideshow' width='49' height='24' name='stop' src='images/stop1.gif' border='0'></a>&nbsp;&nbsp;";		  
		}
		control.innerHTML=html;
	}
}

function ShowSetControls(visible)
{
	var prevcontrol=document.getElementById('prevset_control');
	var nextcontrol=document.getElementById('nextset_control');
	if(prevcontrol && nextcontrol)
	{
		var vis=visible?'visible':'hidden';
		prevcontrol.style.visibility=vis;	
		nextcontrol.style.visibility=vis;	
	}
}

function ShowImageControls(visible)
{
	var imagecontrols=document.getElementById('image_controls');
	if(imagecontrols)
	{
		var vis=visible?'visible':'hidden';
		imagecontrols.style.visibility=vis;	
	}
}

function SetControlsVisible()
{
	var prevcontrol=document.getElementById('prevset_control');
	var nextcontrol=document.getElementById('nextset_control');
	if(prevcontrol && nextcontrol)
	{
		if(prevcontrol.style.visibility=='visible')return true;	
		if(nextcontrol.style.visibility=='visible')return true;	
	}
	return false;
}

function ShowInfo(show,divname)
{
  	if(!divname)
  		divname='image_info';
  	show_info=show;
	var infodiv=document.getElementById(divname);
	var infobuttondiv=document.getElementById('image_info_button');

	if(infodiv)
	{
		infodiv.innerHTML=show_info?disp_images[cur_image]['info']:'';
//		infodiv.style.display=show_info?'block':'none';
	  	infodiv.style.overflow='hidden';
		if(show_info)
		{		
		  	infodiv.style.display='block';
		  	infodiv.style.height='1px';
		  	infodiv.style.width='1px'; 
		  	
			if (navigator.appName=="Microsoft Internet Explorer")
				new Rico.Effect.Size( divname, 358, 358, 250, 10, {complete:function() {FinishShowInfo(show,divname);}} );
			else
				new Rico.Effect.Size( divname, 356, 356, 250, 10, {complete:function() {FinishShowInfo(show,divname);}} );
		}
		else
		{
			new Rico.Effect.Size( divname, 1, 1, 250, 10, {complete:function() {FinishShowInfo(show,divname);}} );		  
		}
	} 
	if(infobuttondiv && show_info)
		infobuttondiv.style.display='none'; 
}

function FinishShowInfo(show,divname)
{
	var infodiv=document.getElementById(divname);
	var infobuttondiv=document.getElementById('image_info_button');
	if(infodiv)
	{
		infodiv.style.overflow=show?'auto':'hidden';
		infodiv.style.display=show?'block':'none';
	}
	if(infobuttondiv && !show)
		infobuttondiv.style.display='block'; 	
}

function FinishChangeImageSet(show)
{
	ShowSetControls(show);  
}

function SetTieThumbs(tie)
{
	tie_thumbs=tie;  
}

function ShowLoading(divname,beforeHTML,afterHTML)
{
	var thediv=document.getElementById(divname);

	if(!beforeHTML)
		beforeHTML='';
	if(!afterHTML)
		afterHTML='';
  	if(thediv)
  	{
  		thediv.innerHTML=beforeHTML+'<img src=/images/lightbox.gif>'+afterHTML;
  		if(thediv.style.display=='none')	
  			thediv.style.display='block';
  	}
}

function ShowOneOf(showdiv,divlist)
{
  	var curshowdiv='';
	for(var i=0;i<divlist.length;i++)  
	{
		var thediv=document.getElementById(divlist[i]);
		if(thediv)
		{
		  	if(thediv.style.display!='none')
			  	curshowdiv=divlist[i];
			thediv.style.display='none';		  
		}
	}
	var thediv=document.getElementById(showdiv);
	if(thediv && showdiv!=curshowdiv)
		thediv.style.display='block';		  
}


function PreloadImages(group)
{
  	if(group<0)
  		group=Math.floor((disp_images.length/thumb_group_count));
    
	for(var i=group*thumb_group_count;i<(group+1)*thumb_group_count;i++)
	{		
	  	if(i<disp_images.length && i>=0)
	  	{
		  	if(!preload_l[i])
		  	{
				preload_l[i]=new Image();
				preload_l[i].src=disp_images[i]['full'];


				var th=document.getElementById('image_thumb_'+i);
				if(th)
					th.src=disp_images[i]['thumb'];
			}
		}
	}				
}

//preload thread
var cur_preload=0;
function PreloadImage()
{
  	return;

	/*  
	if(cur_preload<disp_images.length)
	{
		preload=new Image();
		preload.src=disp_images[cur_preload]['thumb'];
		preload_l=new Image();
		preload_l.src=disp_images[cur_preload]['full'];	  

		cur_preload++;		
		if(cur_preload<disp_images.length)
			setTimeout("PreloadImage()",500);		
	}
	*/
}

