function init_slideshow(id, enable_loop, enable_nextprev, enable_stopstart) {
    ssp = slideshowPages(id);
    ssp = $A(ssp);
    
    loadSlide(id, ssp.first(), 'current');
    
    if(enable_nextprev) {
    	Event.observe($('nextSlideTrigger'+id),'click',function(evt) { nextSlide(id); Event.stop(evt); return false; });
    	Event.observe($('prevSlideTrigger'+id),'click',function(evt) { prevSlide(id); Event.stop(evt); return false; });
    	$('nextSlideTrigger'+id).show();
    	$('prevSlideTrigger'+id).show();
    }
    
    if(enable_stopstart) {
    	Event.observe($('startSlideshowTrigger'+id),'click',function(evt) { startSlideshow(id); Event.stop(evt); return false; });
    	Event.observe($('stopSlideshowTrigger'+id),'click',function(evt) { stopSlideshow(id); Event.stop(evt); return false; });
    	$('startSlideshowTrigger'+id).show();
    }
    
    loadSlide(id, ssp[1], 'next');
    loadSlide(id, ssp.last(), 'prev');
}

function stopSlideshow(id) {
    var timer = slideshowTimer(id);
    if(timer && timer.stop) {
	   timer.stop();
	}
    $('stopSlideshowTrigger'+id).hide();
    $('startSlideshowTrigger'+id).show();
}

function startSlideshow(id) {
    stopSlideshow(id);
    $('startSlideshowTrigger'+id).hide();
    $('stopSlideshowTrigger'+id).show();
    eval('slideshowTimer'+id+' = new PeriodicalExecuter(function() { nextSlide(id); },slideshowInterval(id))');
}

function nextSlide(id) {
   copyHolder(id,'current','prev');
   copyHolder(id,'next','current');
   preLoadNextSlide(id)
}

function prevSlide(id) {
   copyHolder(id,'current','next');
   copyHolder(id,'prev','current');
   preLoadNextSlide(id);
}

function jumpToSlide(id, page) {
	var ssp = slideshowPages(id);
	loadSlide(id, page, 'current');
	preLoadNextSlide(id);
	preLoadPreviousSlide(id);
}

function preLoadNextSlide(id) {
   var ssp = slideshowPages(id);
   var nextindex = ssp.indexOf(slideshowHolder(id,'current').slide_page) + 1;
   if(nextindex >= ssp.length) {
      nextindex = 0;
   }
   loadSlide(id, ssp[nextindex], 'next');
}

function preLoadPreviousSlide(id) {
   var ssp = slideshowPages(id);
   var previndex = ssp.indexOf(slideshowHolder(id,'current').slide_page) - 1;
   if(previndex < 0) {
      previndex = ssp.length - 1;
   }
   loadSlide(id, ssp[previndex], 'prev');
}

function loadSlide(id, page, target) {
    var url = eval('slideshowDatapage'+id);
    var pars = 'id='+page;
    var targetelement = slideshowHolder(id,target);
    var myAjax = new Ajax.Updater(
    			targetelement, 
			url, 
			{
				method: 'get', 
				parameters: pars
			});
    targetelement.slide_page = page;

    //preloadElementsImages(targetelement);
}

function slideshowPages(id) {
    return eval('slideshowPages'+id);
}

function slideshowInterval(id) {
	return eval('slideshowInterval'+id);
}

function slideshowTimer(id) {
	return eval('slideshowTimer'+id);
}

function slideshowHolder(id,holder) {
    return $('slideshow'+id+'_'+holder);
}

function copyHolder(id,from,to) {
    var from = slideshowHolder(id,from);
    var to = slideshowHolder(id,to);
    to.innerHTML = from.innerHTML;
    to.slide_page = from.slide_page;
}

/*
function preloadElementsImages(e) {
    var images = e.getElementsByTagName('img');
    $A(images).each(function(image) {
	var preimg = new Image();
	preimg.src = image.src;
    });
}
*/
