	var numPhotos;
	var slideFlowSlider;
	var slideFlow;
	var currentImg;
	var preloader;
	var fadeInTimeout;
	var scrollHandler;
	var photos;
	var currentEffect;
	var slHover;
	
	var SLIDE_TPL = {
		'b_vertical' : false, 'b_watch': true	/* update while dragging */, 'n_controlWidth': 580, 'n_controlHeight': 7,
		'n_sliderWidth': 14, 'n_sliderHeight': 7, 'n_pathLeft' : 0, 'n_pathTop' : 0, 'n_pathLength' : 580-14, 'n_zIndex': 1
	}
	
	var SLIDE_INIT = {
		'n_minValue' : 0, 'n_maxValue' : 100, 'n_value' : 0, 'n_step' : 1
	}
	
	var SLIDEFLOW_DATA = {
		'imgWidthNormal': 90, 'imgWidthTilted': 90, 'imgHeight': 50, 'slideDistance': 30,
		'onCenterClick': handleSlideClick, 'handleSlideMove': handleSlideMove, 'containerElement': null,
		'pathLeft': '/assets/uploads/left', 'pathCenter': '/assets/uploads/center', 'pathRight': '/assets/uploads/right',
		'transparentImg': '/assets/images/slideflow_images/transparent.gif', 'cursorOpenHand': '/assets/images/slideflow_images/openhand.cur', 'cursorClosedHand': '/assets/images/slideflow_images/closedhand.cur'
	}
	
	function handleSlideMove(pos) {
		if (slideFlowSlider)
			slideFlowSlider.f_setValue(pos, false, true /* kein update */);
	}
	
	function handleSlideClick(imgNumber) {
		swapPhoto(imgNumber);
	}
	
	function handleSlideSeek(pos) {
		slideFlow.disableMoveUpdate();
		slideFlow.glideToPerc(pos);
	}
	
	function swapPhoto(photoNumber) {
		/* Preload */
		var imgSrc = '/assets/uploads/'+ photos.item(photoNumber - 1).getElementsByTagName("src")[0].childNodes[0].nodeValue;
		var wasPreloading = (preloader != undefined);
		preloader = new Image;
		preloader.src = imgSrc;
		currentImg = photoNumber;
	
		/* Fade out and show new photo */
		if (!wasPreloading) {
			if (currentEffect && currentEffect.state != 'finished')
				currentEffect.cancel();
	
			currentEffect = new Effect.Fade($('fadeArea'), { duration:0.4, to: 0.001, afterFinish: fadeIn });
		}
	}
	
	function skipPhoto(offset) {
		photoNumber = currentImg + offset;
		if (photoNumber < 1 || photoNumber > numPhotos)
			return;
	
		swapPhoto(photoNumber);
		slideFlow.glideToSlide(photoNumber);
	}
	
	function fadeIn() {
		fadeInTimeout = null;
	
		if (!preloader)
			return;
		else if (preloader.complete) {
			if (currentEffect && currentEffect.state != 'finished')
				currentEffect.cancel();
			currentEffect = new Effect.Appear($('fadeArea'), {duration: 0.8, beforeSetup: function(effect) {
				$('photo').src = preloader.src;
				$('title').innerHTML = photos.item(currentImg - 1).getElementsByTagName("title")[0].childNodes[0].nodeValue;
				//$('subtitle').innerHTML = photos.item(currentImg - 1).getElementsByTagName("subtitle")[0].childNodes[0].nodeValue;
				preloader = undefined;
			  }});
		} else if (!fadeInTimeout) {
			fadeInTimeout = window.setTimeout("fadeIn()", 100);
		}
	}
	function handleKeys(evt) {
		evt = (evt) ? evt : ((window.event) ? event : null);
		if (evt) {
			//debugLog("key " + evt.keyCode);
			switch (evt.keyCode) {

				case 40: /* down */
				case 39: /* right */
					skipPhoto(1);
					return false;
					break;
				case 38: /* up */
				case 37: /* left */
					skipPhoto(-1);
					return false;
					break;
			 }
		}
	}