

function VintagePrevNext(data, current, imgTemplate)
{
	var me = this;
	this.data = data; // Objektarray
	this.current = current; // aktueller Beitrag
	this.imgTemplate = imgTemplate; // Bildverzeichnis
	this.preloadImg1 = this.preloadImg2 = {};
	this.preloadCounter = 0; 
	
	this.init = function() {
		var eles = document.getElementById('vintageButtons').getElementsByTagName('a');
		me.addListener(eles[0], 'click', me.prev);
		eles[0].href="javascript:";
		me.addListener(eles[1], 'click', me.next);
		eles[1].href="javascript:";
		
		me.preloadImg1 = new Image();
		me.addListener(me.preloadImg1, 'load', function(){me.preloadCounter++; me.change()});	
		me.preloadImg2 = new Image();
		me.addListener(me.preloadImg2, 'load', function(){me.preloadCounter++; me.change()});
	}
		
	this.prev = function(){
		me.current = (me.current+me.data.length-1)%me.data.length;
		me.preload();
	}
	this.next = function(){
		me.current = (me.current+1)%me.data.length;
		me.preload();
	}
	
	this.preload = function(){
		me.preloadCounter = 0;
		var item = me.data[me.current];
		document.getElementById('vintage').getElementsByTagName('h1')[0].innerHTML = item[0];
		me.preloadImg1.src = me.imgTemplate.replace(/#/, item[1]);
		me.preloadImg2.src = me.imgTemplate.replace(/#/, item[1]+'_silhouette');
		document.getElementById('vintageOverlay').parentNode.style.opacity = 0;
	}
	
	this.change = function() {
		/*if (me.preloadCounter == 2){
			window.setTimeout(function(){me.preloadCounter++; me.change()}, 2000);
		}*/
		if (me.preloadCounter > 1){
			var item = me.data[me.current];
			document.getElementById('vintage').className = item[2];
			document.getElementById('vintageTxt').innerHTML = item[3];
			
			document.getElementById('vintageOverlay').src = me.preloadImg1.src;
			document.getElementById('vintageBackground').src = me.preloadImg2.src;
			document.getElementById('vintageOverlay').parentNode.style.opacity = 1;
		}
	}
	

	this.addListener = function(element, event, listener, bubble) {
		if(element.addEventListener) {
			if(typeof(bubble) == 'undefined'){
				bubble = false;
			}
			element.addEventListener(event, listener, bubble);
		} else if(document.attachEvent) {
			element.attachEvent("on" + event, listener);
		}
	}
		
	// init nach Ende des Ladevorgangs aufrufen
	this.addListener(window, 'load', this.init);
}




function Shadow(params_Array)
{
	// shadownfunktion, nach einem Skript von 2001
	// (c) endo.ch 2010 Christoph Berger, www.endo.ch

	var me = this;
	this.shadowImg = null; // DOM <div>-objekt des Hintegrundbildes
	this.solidImg = null; // DOM <div>-objekt des Objekt-Bildes
	this.cssID = [params_Array[0], params_Array[1]];
	this.vars = params_Array[2];	// Breite Viewer, Höhe Viewer, Hotspot X, Hotspot Y, Breite Viewerrahmen, Breite Aktiver Bereich, Höhe Aktiver Bereich
	this.offsetTop = null;	// Offset-Position des shadow-Gesamtblocks relativ zum Body
	this.offsetLeft = null;	// Offset-Position des shadow-Gesamtblocks relativ zum Body
	
	this.lock = false; // Boolean Property zum Sperren 
	
	this.update = function(e) {
		x = (document.all) ? e.clientX + (document.documentElement.scrollLeft | document.body.scrollLeft) : e.pageX;
		y = (document.all) ? e.clientY + (document.documentElement.scrollTop  | document.body.scrollTop)  : e.pageY;
		x -= me.offsetLeft;
		y -= me.offsetTop;
		//console.log(x,y);
		
		var xShift = Math.floor(-x/me.vars[0]);
		var yShift = Math.floor(-y/me.vars[1]);
		
		me.shadowImg.style.left = xShift+'px';
		me.shadowImg.style.top = yShift+'px';
		//me.solidImg.style.left = -xShift+'px';
		//me.solidImg.style.top = -yShift+'px';
		
		var opacity = Math.min(1, Math.max(0, me.vars[3]-((Math.sqrt(xShift*xShift+yShift*yShift))/me.vars[2])));
		me.shadowImg.style.opacity = opacity;
		me.shadowImg.style.filter = 'alpha(opacity='+Math.floor(opacity*100)+')';
	}
		
	this.init = function(){
		
		if (ele = document.getElementById(me.cssID[0])) {
			me.shadowImg = ele;
			
			var halfwidth = Math.floor(ele.offsetWidth/2);
			var halfheight = Math.floor(ele.offsetHeight/2);
			
			// Offset des shadow-Gesamtblocks berechnen
			var curleft = curtop = 0;	
			if (ele.offsetParent) {
				do {
					curleft += ele.offsetLeft;
					curtop += ele.offsetTop;
				} while (ele = ele.offsetParent);
			}
			me.offsetTop = curtop + halfheight;
			me.offsetLeft = curleft + halfwidth;
		}
		
		if (ele = document.getElementById(me.cssID[1]))
			me.solidImg = ele;
		if (ele = document.getElementById(me.cssID[2])) 
			me.viewer = ele;

		me.addListener(document, 'mousemove', me.update);
	}
	
	
	
	this.addListener = function(element, event, listener, bubble) {
		if(element.addEventListener) {
			if(typeof(bubble) == 'undefined'){
				bubble = false;
			}
			element.addEventListener(event, listener, bubble);
		} else if(document.attachEvent) {
			element.attachEvent("on" + event, listener);
		}
	}
	
	// init nach Ende des Ladevorgangs aufrufen
	this.addListener(window, 'load', this.init);
}


