		var count; 
		var interval	= 4000;
		var src;
		var src_slide	= 2;
		var src_comment	= 1;
		var src_download= 3;	
		var direction	= 1;
		var current		= 0;
		var	on			= 0;
		var photo_ids 	= new Array;
		var photo_cap 	= new Array;
		var photos		= new Array;
		var photo_size	= 4;
		var timer;
		var increase_interval = 0;
			photos[0]   = new Array;
        	photos[4]   = new Array;
        	photos[5]   = new Array;

		function init_slideshow(p_src, p_count, start) {
			set_photo_src(p_src);
			set_photo_count(p_count);

			current = start;
			preload(start);
			preload(start + 1);
		} 

		function add_photo_ids(index, id){
			photo_ids[index] = id;
		}

		function add_photo_cap(index, cap){
			photo_cap[index] = cap;
		}

		function set_photo_count(num) {
			count = num;
		}

		function set_photo_src(source) {
			src 			= source + src_slide;
			src_download	= source + src_download;	
			src_comment		= source + src_comment;
		}

		function slideshow_pic_link(download) {
			if(download)
				location.href = src_download + '&uid2=' + photo_ids[current];
			else	
				window.open(src_comment + '&uid2=' + photo_ids[current] + '&var4_form=1#var4_form');	
		}
		
		function change_photo_size(change){
			if(change != 1) {
				if(on) stop_show();
				photo_size 	= document.slideshow_form.size.options[document.slideshow_form.size.selectedIndex].value;
				timer		= setTimeout('change_photo_size(1)', 100);
			}
			else {
				preload(current);

				get_next_pic(2,1);
			}
		}

		function play() {
			change_text("ealbum_slideshow_status", 'slideshow is in progress');
			interval = document.slideshow_form.time.options[document.slideshow_form.time.selectedIndex].value * 1000;
			timer = setTimeout('get_next_pic(2)', interval);
		}

		function stop_show() {
			on = 0;
			clearTimeout(timer);
			show_hide("ealbum_slideshow_stop", "ealbum_slideshow_start");
			change_text("ealbum_slideshow_status", 'slideshow is stopped');
		}

		function start_show(){
			on = 1;
			play();
			show_hide("ealbum_slideshow_start", "ealbum_slideshow_stop");
		}

		function reverse_show() {	
			direction = (direction) ? 0 : 1;
			rev_title = (direction) ? 'reverse' : 'fowards';
			change_text("ealbum_slideshow_reverse", rev_title);
		}

		function preload(id) {
			if(!photos[photo_size][id]) {
				photos[photo_size][id] 			= new Image();
				photos[photo_size][id].src 		= src + "&size=" + photo_size + "&id=" + photo_ids[id];
			}
		}

		function change_text(id, newtext) {
			elmt			= findDOM(id);
			elmt.innerHTML 	= newtext;
		}

		function update_interval() {
			document.slideshow_form.time.selectedIndex = document.slideshow_form.time.selectedIndex + 1;
		}

		function change_pic(pic_id) {
			id			= "ealbum_slideshow_pic";
			pic			= findDOM(id);

			if(!photos[photo_size][pic_id] || !photos[photo_size][pic_id].complete) {
				preload(pic_id);
				if(increase_interval == 0) {
					show_hide('ealbum_slideshow_next_link', 'ealbum_slideshow_next');
            		show_hide('ealbum_slideshow_prev_link', 'ealbum_slideshow_prev');
				}

				change_text("ealbum_slideshow_status", 'loading next photo...');
				increase_interval = 1;

				if(increase_interval) {
                    update_interval(interval);
                }

				clearTimeout(timer);
				timer = setTimeout('change_pic(' + pic_id + ')', interval);
			}
			else {
				holder			= findDOM("ealbum_slideshow_photo_holder", 1);
				holder.width 	= photos[photo_size][pic_id].width + 24 + 'px'; 

				caption			= findDOM("ealbum_slideshow_caption_box", 1);
				caption.width	= photos[photo_size][pic_id].width -5 + 'px';

				pic.src 			= src + "&size=" + photo_size + "&id=" + photo_ids[pic_id];
				change_text("ealbum_slideshow_caption", photo_cap[current]);
				change_text("ealbum_slideshow_state", current + 1);

				if(increase_interval) {
					show_hide('ealbum_slideshow_prev', 'ealbum_slideshow_prev_link');
            		show_hide('ealbum_slideshow_next', 'ealbum_slideshow_next_link');
					if(on)
						change_text("ealbum_slideshow_status", 'slideshow in progress');
					else
						change_text("ealbum_slideshow_status", "slideshow is stopped");
				}

				increase_interval 	= 0;
			}
		}

		function calculate_bounds(num, dir, max) {
			if(num >= max && dir)
				num = 0;
			else if(num < 0 && !dir)
				num = max -1;

			return num;
		}

		function calculate_current(dir, num, max) {
			num = (dir) ? num + 1 : num - 1;
			return calculate_bounds(num, dir, max);
		}

		function calculate_next(dir, num, max) {
			num = num + 1;
			return calculate_bounds(num, dir, max);
		}
	
		function calculate_prev(dir, num, max) {
			num = num - 1;
			return calculate_bounds(num, dir, max);
		}	

		function reset(end){
			current = (end) ? count - 1 : 0;
			current = (direction) ? current - 1 : current + 1;
			get_next_pic(2);
		}

		function get_next_pic(dir, refresh) {
			dir 	= (dir == 2) ? direction : dir;

			if(refresh != 1)
				current = calculate_current(dir, current, count);

			next	= calculate_next(dir, current, count);
			prev	= calculate_prev(dir, current, count);

			preload(next);
            preload(prev);

			change_pic(current);

			if(on)
				play();
		}
