/*---------------------------
  Cycling of images
  ---------------------------*/
var localimages;   // array of loaded images
var image;         // current image number
var firstImage;    // display first image asap
var delay = 9000;  // delay between images in auto show
var autoshow = 1;  // auto or manual show
var timeout;       // next slide change in auto show
var lasttimer; 	   // last one to call setTimer
function changeShow(){
	select = document.getElementById("showselect");
	if (select) {
		showKey = select.value;
		startShow(showKey)
		}
}
function startShow(showKey){
	image = 0;
	clearTimer();
	getShow(showKey)
}
function clearTimer() {
	if (timeout) {
		clearTimeout(timeout);
		timeout = 0;
		}
}
function setTimer(delay,caller) {
	if (timeout) {
//		alert("Timer already running! Last: "
//			+ lasttimer + " Current:" + caller);
		clearTimer();
		}
	lasttimer = caller;
	timeout = setTimeout("changeImage('"+autoshow+"')",delay);
}
function getShow(showKey) {
	new Ajax.Request('ajaxshowrequest.php',
		{ method:'get',
		  parameters:{showselect:showKey},
	      onSuccess:
	      	function(transport,json){
	            var resp = transport.responseText || "no response text";
//				alert ("ajax response: "+resp);
	            var func = new Function ("return "+resp)
	            var showinfo = func()
    	        var imagelist = showinfo["show_pics"];
				updateInfoBox(showinfo)
	            updateImageSelector(imagelist);
				localimages = new Array();
				firstImage = true;
				image = 0; // may shorten localimages
	            for (i=0; i<imagelist.length; i++) {
	            	localimages[i] = document.createElement('img');
	            	localimages[i].onload = loadOk;
					localimages[i].onerror = loadError;
					localimages[i].onabort = loadAbort;
					localimages[i].url = imagelist[i].url;
	            	localimages[i].src = imagelist[i].url;
					localimages[i].loaded = false;
	            	}

	            },
	      onFailure:
	      	function(){
	      		alert('Something went wrong...')
	      		}
	 	});
}
function updateInfoBox(showinfo) {
	document.getElementById("showtitle").innerHTML = showinfo["show_title"];
	document.getElementById("showartist").innerHTML = showinfo["show_artist"];
	document.getElementById("showdate").innerHTML = showinfo["show_date"];
	url = document.getElementById("showlink");
	pat = /(.*show_key=)\d+/
	url.href = url.href.replace(pat,"$1")+showinfo["show_key"];
}
function updateImageSelector(imagelist) {
	select = document.getElementById("imagelist");
	select.options.length = 0;
	for (var i=0;i<imagelist.length;i++) {
		t = imagelist[i].title;
		select.options[i] = new Option(t,i,false,false);
	}
}
function loadOk() {
	this.error = false;
	this.reloaded = false;
	if (firstImage) {
		firstImage = false;
		showImage(this);
		clearTimer();
		image = 0;
		setTimer(delay,"loadOK");
		}
}
function loadError() {
	this.error = true;
	if (!this.reloaded) {
		this.reloaded = true; // try reload once
		this.src = this.url; //reload
		}
}
function loadAbort() {
	this.abort = true;
}
function setDelay() {
	select = document.getElementById("delaylist");
	if (select) {
		delay = select.value * 1000;
	}
}
function setAutoshow(onoff) {
	autoshow = onoff;
	if (onoff==0) {
		document.getElementById("automatic").className="";
		document.getElementById("manual").className="on";
		clearTimer();
		}
	else {
		document.getElementById("automatic").className="on";
		document.getElementById("manual").className="";
		setTimer(delay,"setAutoShow");
		}
}
function setImage() {
	select = document.getElementById("imagelist");
	if (select && select.value<localimages.length) {
		image = select.value;
	}
	setAutoshow(0);
	changeImage();
}
function nextImage() {
	image = (image+1)%(localimages.length);
	setAutoshow(0);
	changeImage();
}
function prevImage() {
	L = localimages.length;
	image = (image+L-1)%(L);
	setAutoshow(0);
	changeImage();
}
function showImage(img) {
	var h = img.height;
	var w = img.width;
	var elem = document.getElementById("cycleimage");
	elem.src = null;
	if (h>w) {
		if (h>600) {
			w = (600/h)*w;
			h = 600;
			}
		}
	else {
		if (w>600) {
			h = (600/w) * h;
			w = 600;
			}
	}
	elem.style.width = w+"px";
	elem.style.height = h+"px";
	mt = 20;
	elem.style.marginTop = mt+"px";
	elem.src = img.src;
}
function changeImage() {
	clearTimer();
	L = localimages.length;
//	if (!localimages)
//		alert("localimages null");
//	if (!localimages[image])
//		alert("localimages ["+image+"] null");
	if (image>L || !(localimages[image].complete)) {
		i = image;
//		if (L==0) alert("L = 0");
		while (i=(i+1)%L != image && !(localimages[i].complete)) ;
		if (i==image) {
//			alert("ran out of images on changeImage")
			setTimer(1000,"ran out");
			return;
			}
		image = i;
	}
	showImage(localimages[image]);
	image = (image+1)%L;
	if (autoshow)
		setTimer(delay,"changeImage");
}
