
/* FUNCTION: start_slideshow(prefix, photo_array, start_frame, end_frame, delay [,fadeduration])
 * 
 * SAMPLE USAGE
 * 
 * 	
	<script type="text/javascript">
		photo_array = [];
		photo_array.push(...);
		photo_array.push(...);
		photo_array.push(...);
		start_slideshow('slideshow_', photo_array, 1, 5, 2000, 750);
	</script>
 * 
 */


function start_slideshow(prefix, photo_array, start_frame, end_frame, delay, fadeduration) {
    if (!window.slideshows){
		window.slideshows = {};
	}
	if (typeof window.slideshows[prefix] == 'undefined') {
		window.slideshows[prefix] = {};
	}
	if (typeof window.slideshows[prefix].timer != 'undefined') {
		window.clearTimeout(window.slideshows[prefix].timer);
	}
	window.slideshows[prefix] = {
		timer: setTimeout(switch_slides(prefix, photo_array, start_frame, start_frame, end_frame, delay, fadeduration), delay)
		,slide: 1
	};
}

function end_slideshow(prefix) {
	if (!window.slideshows){
		window.slideshows = {};
	}
	if (typeof window.slideshows[prefix] == 'undefined') {
		return;
	} else if (typeof window.slideshows[prefix].timer != 'undefined') {
		window.clearTimeout(window.slideshows[prefix].timer);
	}
}

function switch_slides(prefix, photo_array, frame, start_frame, end_frame, delay, fadeduration) {
    if (typeof(fadeduration) == 'undefined') {
    	/* Default fade duration */
    	var _fadeduration = 0.75;
    } else {
    	/* convert milliseconds to seconds (scriptaculous needs this) */
    	var _fadeduration = fadeduration/1000;
    }
    return (function() {
		var hide_slide = window.slideshows[prefix].slide;
		var show_slide = (hide_slide==2)?1:2;
		var hide_id = prefix + hide_slide;
		var show_id = prefix + show_slide;
		
        if (frame == end_frame) {
			frame = start_frame;
		} else {
			frame = frame + 1;
		}
		
		if($(show_id)){
	        Effect.Fade(hide_id, {duration:_fadeduration});
			$(show_id).src = photo_array[frame-1];
	        
			setTimeout("Effect.Appear('" + show_id + "', {duration:"+_fadeduration+"});", fadeduration*0.5);
	        window.slideshows[prefix] = {
				timer: setTimeout(switch_slides(prefix, photo_array, frame, start_frame, end_frame, delay, fadeduration), delay)
				,slide: (window.slideshows[prefix].slide==2)?1:2
			};
		}
    })
}