			
		function ImageSlider(ImageSliderName,ImageSliderContainerName,ButtonIdPrefix,ButtonClassName,ButtonClassActiveName)
{
	this.ImageSliderName=ImageSliderName;
	this.ImageSliderContainerName=ImageSliderContainerName;
	this.ImageSlideContainer;
	this.ImageWidth=0;
	this.ButtonIdPrefix=ButtonIdPrefix;
	this.ButtonClassName=ButtonClassName;
	this.ButtonClassActiveName=ButtonClassActiveName;
	this.ImageStartLeft=new Array();
	this.NextImage=1;
	this.LastImage=1;
	this.ImageDirection=1;
	this.resetDirection=0;
	this.activeSlideImage=1;
	this.autoSlideActive=1;			// ein möglicher button für die wiedergabe des Slides nach dem manuellen Slide sollte diese Variable auf 1 setzen
	this.SlideActive=0;
	this.changeButtonBeforeSlide=1;	//1= ja
	this.changeButtonBeforeAutoSlide=0;	//1= ja
	this.SlideVertical=0;				// 1 =  Der Slide findet in der Vertikalen statt
	this.SlideDirection=1;			// 1 oder -1 (Vor-/Rück- bzw Ab-/Aufwärts)
	this.SlideType=1;				// 0=linear ; 1=beschleunigen &| bremsen; 2=Fading
	this.SlideIn=3;					// Anzahl der normalen Frames der zum beschleunigen verwendet werden soll (um die gleiche Anzahl an Frames wird der Slide länger)
	this.SlideOut=10;				// Anzahl der normalen Frames der zum abbremsen verwendet werden soll (um die gleiche Anzahl an Frames wird der Slide länger)
	this.sliderSpeed=10;			// sollte SliderSpeed bei einer anderen Bilderbreite größer sein als die anzahl der Elemente im array sliderSpeeds, so wird es auf die höchste mögliche Geschwindigkeit eingestellt
	this.delayTimer=20;				// delayTimer ist die anzahl von Millisekunden welche zwischen jedem Frame gewartet werden soll
	this.sliderDelay=4000;			// solange autoSlideActive==1 die Zeit in welcher ein Bild statisch zwischen dem automatischen Sliden angezeigt wird in Millisekunden

	// sliderSpeeds ist die mögliche Schrittgröße die für einen optimalen Slide verwendet werden soll Die Auswahl auf ganze Teiler der Bildbreite zu reduzieren ist förderlich für die Sauberkeit des Slides auch auf schwächeren Systemen
	// wenn ImageWidth=0 ist wird das Array onload automatisch anhand der breite der Bilder neu erzeugt
	this.sliderSpeeds=new Array(1,2,3,4,6,8,11,12,16,22,24,33,44,48,66,88,132,176,264,528);

	this.actualSlide=0;
	this.actualSliderSpeed=0;
	this.bremsStrecke=0;
	this.slideBremse=0;
	this.beschlStrecke=0;
	this.slideBeschl=0;
		
	this.setImages=setImages;
	this.slideImages=slideImages;
	this.slideImagesBounce=slideImagesBounce;
	this.selectButton=selectButton;
	this.slideToImage=slideToImage;
	this.resetImages=resetImages;
	this.startImageSlider=startImageSlider;
}
function setImages(step)
{
	for(imagesC=0;imagesC<this.ImageSlideContainer.childNodes.length;imagesC++)
	{
		if(this.SlideType==2)
		{
			if(imagesC==this.NextImage-1)this.ImageStartLeft[imagesC]=this.ImageStartLeft[imagesC]+step;
			if(imagesC==this.LastImage-1)this.ImageStartLeft[imagesC]=this.ImageStartLeft[imagesC]-step;
			this.ImageSlideContainer.childNodes[imagesC].style.filter = "Alpha(opacity="+ (this.ImageStartLeft[imagesC]) + ")";
			this.ImageSlideContainer.childNodes[imagesC].style.MozOpacity=(this.ImageStartLeft[imagesC]/100);
			this.ImageSlideContainer.childNodes[imagesC].style.opacity=(this.ImageStartLeft[imagesC]/100);
		}
		else
		{
			this.ImageStartLeft[imagesC]=this.ImageStartLeft[imagesC]+step;
			if(this.SlideVertical==1)this.ImageSlideContainer.childNodes[imagesC].style.top=Math.round(this.ImageStartLeft[imagesC])+'px';
			else this.ImageSlideContainer.childNodes[imagesC].style.left=Math.round(this.ImageStartLeft[imagesC])+'px';
		}
	}
}
function slideImages(way)
{
	if(this.changeButtonBeforeSlide==1 && this.autoSlideActive==0 || this.changeButtonBeforeAutoSlide==1 && this.autoSlideActive==1)this.selectButton(this.NextImage);	
	for(SlideC=1;SlideC<=this.ImageWidth/this.sliderSpeeds[this.sliderSpeed];SlideC++)
	{
		window.setTimeout(this.ImageSliderName+".setImages("+(way/this.ImageWidth*this.sliderSpeeds[this.sliderSpeed])+")", SlideC*this.delayTimer);
	}
}
function slideImagesBounce(way,intoImage,resetImagesNow)
{
	this.actualSliderSpeed=this.sliderSpeeds[this.sliderSpeed];
	this.actualSlide=0;
	if(this.SlideOut>0)
	{
		this.bremsStrecke=this.actualSliderSpeed*this.SlideOut;
		this.slideBremse=-2*this.bremsStrecke/((this.SlideOut*2)*(this.SlideOut*2));
		this.bremsStrecke=this.bremsStrecke*Math.abs(way/this.ImageWidth);
	}
	if(this.SlideIn>0)
	{
		this.beschlStrecke=this.actualSliderSpeed*this.SlideIn;
		this.slideBeschl=2*this.beschlStrecke/((this.SlideIn*2)*(this.SlideIn*2));
		this.beschlStrecke=this.beschlStrecke*Math.abs(way/this.ImageWidth);
		this.actualSliderSpeed=0;
	}
	SlideC=0;
	if(this.changeButtonBeforeSlide==1 && this.autoSlideActive==0 || this.changeButtonBeforeAutoSlide==1 && this.autoSlideActive==1)this.selectButton(intoImage);	
	while(Math.abs(this.actualSlide)<Math.abs(way) && SlideC<(this.ImageWidth/this.sliderSpeeds[this.sliderSpeed]+this.SlideIn+this.SlideOut))
	{
		if(this.SlideOut>0 && Math.abs(this.actualSlide)>Math.abs(way)-this.bremsStrecke)
		{
			stepLength=this.actualSliderSpeed+this.slideBremse;
			this.actualSliderSpeed=stepLength;
		}
		else if(this.SlideIn>0 && Math.abs(this.actualSlide)<this.beschlStrecke)
		{
			stepLength=this.actualSliderSpeed+this.slideBeschl;
			this.actualSliderSpeed=stepLength;
		}
		else
		{
			stepLength=this.actualSliderSpeed;
		}
		SlideC++;
		this.actualSlide=this.actualSlide+(way/this.ImageWidth*stepLength);
		window.setTimeout(this.ImageSliderName+".setImages("+(way/this.ImageWidth*stepLength)+")", SlideC*this.delayTimer);
	}
	if(this.changeButtonBeforeSlide==0 && this.autoSlideActive==0 || this.changeButtonBeforeAutoSlide==0 && this.autoSlideActive==1)resetStr=this.ImageSliderName+".selectButton("+intoImage+")";
	else resetStr="";
	if(resetImagesNow==1)window.setTimeout(this.ImageSliderName+".resetImages();"+this.ImageSliderName+".SlideActive=0;"+resetStr,SlideC*this.delayTimer+this.delayTimer);
	else window.setTimeout(this.ImageSliderName+".SlideActive=0;"+this.ImageSliderName+".selectButton("+intoImage+")",SlideC*this.delayTimer+this.delayTimer);
}
function selectButton(buttonID)
{
	if(this.ButtonIdPrefix!="")
	for(ButtonC=1;ButtonC<=this.ImageStartLeft.length;ButtonC++)
	{
		if(ButtonC==buttonID)document.getElementById(this.ButtonIdPrefix+buttonID).className=this.ButtonClassActiveName;
		else document.getElementById(this.ButtonIdPrefix+ButtonC).className=this.ButtonClassName;
	}
	//document.getElementById(this.ButtonIdPrefix+buttonID).className='slider_'+activeB+'button_center';
	//document.getElementById(this.ButtonIdPrefix+buttonID).className='slider_'+activeB+'button_right';
}
function slideToImage(toImage)
{
	if(this.SlideActive==0 && toImage!=this.activeSlideImage)
	{
		if(toImage==this.ImageSlideContainer.childNodes.length && this.resetDirection==1)
		{
			this.ImageDirection=-1;
			//toImage=this.ImageSlideContainer.childNodes.length-1;
		}
		if(toImage==1 && this.resetDirection==1)this.ImageDirection=1;
		this.NextImage=toImage;
		this.LastImage=this.activeSlideImage;
		this.SlideActive=1;

		if(this.SlideType==2)
		{
			for(imC=0;imC<this.ImageSlideContainer.childNodes.length;imC++)
			{
				if(imC==this.activeSlideImage-1) 
				{
					this.ImageStartLeft[imC]=100;
					this.ImageSlideContainer.childNodes[imC].style.zIndex=2;
				}
				else if(imC==toImage-1) 
				{
					this.ImageStartLeft[imC]=0;
					this.ImageSlideContainer.childNodes[imC].style.filter = "Alpha(opacity="+ (this.ImageStartLeft[imC]) + ")";
					this.ImageSlideContainer.childNodes[imC].style.MozOpacity=(this.ImageStartLeft[imC]/100);
					this.ImageSlideContainer.childNodes[imC].style.opacity=(this.ImageStartLeft[imC]/100);
					this.ImageSlideContainer.childNodes[imC].style.zIndex=this.ImageSlideContainer.childNodes.length+1;
					//this.ImageSlideContainer.childNodes[imC].style.zIndex=this.ImageSlideContainer.childNodes.length;
				}
				else 
				{
					this.ImageStartLeft[imC]=0;
					this.ImageSlideContainer.childNodes[imC].style.zIndex=1;
				}
			}
		}
		
		if(this.changeButtonBeforeSlide==0 && this.autoSlideActive==0 || this.changeButtonBeforeAutoSlide==0 && this.autoSlideActive==1)resetStr=this.ImageSliderName+".selectButton("+toImage+")";
		else resetStr="";
		if(toImage>this.ImageSlideContainer.childNodes.length)
		{
			if(this.SlideType<2)
			{
				this.ImageStartLeft[0]=this.ImageWidth*this.SlideDirection;
				if(this.SlideVertical==1)this.ImageSlideContainer.childNodes[0].style.top=this.ImageStartLeft[0]+"px";
				else this.ImageSlideContainer.childNodes[0].style.left=this.ImageStartLeft[0]+"px";
			}
			toImage=1;
			this.NextImage=toImage;
			if(this.SlideType==1)this.slideImagesBounce(this.ImageStartLeft[this.activeSlideImage-1]-this.ImageStartLeft[toImage-1],toImage,1);
			else
			{
				this.slideImages(this.ImageStartLeft[this.activeSlideImage-1]-this.ImageStartLeft[toImage-1]);
				window.setTimeout(this.ImageSliderName+".resetImages();"+this.ImageSliderName+".SlideActive=0;"+resetStr,this.ImageWidth/this.sliderSpeeds[this.sliderSpeed]*this.delayTimer+this.delayTimer);
			}
			this.activeSlideImage=1;
		}
		else
		{
			if(this.SlideType==1)this.slideImagesBounce(this.ImageStartLeft[this.activeSlideImage-1]-this.ImageStartLeft[toImage-1],toImage,0);
			else
			{
				this.slideImages(this.ImageStartLeft[this.activeSlideImage-1]-this.ImageStartLeft[toImage-1]);
				if(this.activeSlideImage!=toImage)window.setTimeout(this.ImageSliderName+".SlideActive=0;"+resetStr, this.ImageWidth/this.sliderSpeeds[this.sliderSpeed]*this.delayTimer+this.delayTimer);
			}
			this.LastImage=this.activeSlideImage;
			this.activeSlideImage=toImage;
		}
	}
	//SlideActive=0;
}
function resetImages()
{
	for(imagesC=0;imagesC<this.ImageSlideContainer.childNodes.length;imagesC++)
	{
		this.ImageSlideContainer.childNodes[imagesC].style.position="absolute";
		if(this.ImageWidth==0)
		{
			if(this.SlideType==2)this.ImageWidth=100;
			else if(this.SlideVertical==1)this.ImageWidth=this.ImageSlideContainer.childNodes[imagesC].offsetHeight;
			else this.ImageWidth=this.ImageSlideContainer.childNodes[imagesC].offsetWidth;
			this.sliderSpeeds=new Array();
//var testStr="";
			for(sSC=1;sSC<=this.ImageWidth && sSC<=this.ImageWidth/(this.SlideIn+this.SlideOut);sSC++)
			{
				if(this.ImageWidth%sSC==0)this.sliderSpeeds.push(sSC);
			}
//			this.sliderSpeeds.push(this.ImageWidth );
			if(this.sliderSpeed>=this.sliderSpeeds.length)this.sliderSpeed=this.sliderSpeeds.length-1;
//alert(testStr);
			if(this.SlideType==2)
			{
				this.ImageStartLeft[imagesC]=0;
				this.ImageStartLeft[0]=this.ImageWidth;
				this.ImageSlideContainer.childNodes[imagesC].style.opacity=this.ImageStartLeft[imagesC]/100;
				this.ImageSlideContainer.childNodes[imagesC].style.zIndex=this.ImageSlideContainer.childNodes.length-imagesC+1;
				this.ImageSlideContainer.childNodes[imagesC].style.top='0px';
				this.ImageSlideContainer.childNodes[imagesC].style.left='0px';
			}
		}
		if(this.SlideType<2)
		{
			this.ImageSlideContainer.childNodes[imagesC].style.position="absolute";
			this.ImageStartLeft[imagesC]=imagesC*this.ImageWidth*this.SlideDirection;
			if(this.SlideVertical==1)
			{
				this.ImageSlideContainer.childNodes[imagesC].style.top=this.ImageStartLeft[imagesC]+'px';
				this.ImageSlideContainer.childNodes[imagesC].style.left='0px';
			}
			else
			{
				this.ImageSlideContainer.childNodes[imagesC].style.left=this.ImageStartLeft[imagesC]+'px';
				this.ImageSlideContainer.childNodes[imagesC].style.top='0px';
			}
		}
	}
	this.selectButton('1');
}
function startImageSlider()
{
	this.ImageSlideContainer=document.getElementById(this.ImageSliderContainerName);
	if(this.ImageSlideContainer.childNodes.length>1)
	{
		this.resetImages();
		window.setInterval('if('+this.ImageSliderName+'.autoSlideActive==1)'+this.ImageSliderName+'.slideToImage('+this.ImageSliderName+'.activeSlideImage+'+this.ImageSliderName+'.ImageDirection);', (this.sliderSpeeds[this.sliderSpeed]*this.delayTimer+this.delayTimer+this.sliderDelay));
	}
}
		var Startseitenslider=new ImageSlider("Startseitenslider","ImageSlideContainerDiv","slider_button_"	,"slider_button","slider_button_active");
			Startseitenslider.changeButtonBeforeSlide=1;	//1= ja
			Startseitenslider.changeButtonBeforeAutoSlide=1;	//1= ja
			Startseitenslider.SlideVertical		=1;			// 1 =  Der Slide findet in der Vertikalen statt
			Startseitenslider.SlideDirection	=1;			// 1 oder -1 (Vor-/Rück- bzw Ab-/Aufwärts)
			Startseitenslider.SlideType		=2;			// 0=linear ; 1=beschleunigen &| bremsen
			Startseitenslider.SlideIn			=0;			// Anzahl der normalen Frames der zum beschleunigen verwendet werden soll (um die gleiche Anzahl an Frames wird der Slide länger)
			Startseitenslider.resetDirection	=0;			// wenn 1 dann Ändert der Slider am Anfang und am Ende die Richtung
			Startseitenslider.SlideOut		=0;			// Anzahl der normalen Frames der zum abbremsen verwendet werden soll (um die gleiche Anzahl an Frames wird der Slide länger)
			Startseitenslider.sliderSpeed		=2;			// sollte SliderSpeed bei einer anderen Bilderbreite größer sein als die anzahl der Elemente im array sliderSpeeds, so wird es auf die höchste mögliche Geschwindigkeit eingestellt
			Startseitenslider.delayTimer		=40;			// delayTimer ist die anzahl von Millisekunden welche zwischen jedem Frame gewartet werden soll (40=25f/s; 20=50f/s; ...)
			Startseitenslider.sliderDelay		=5000;		// solange autoSlideActive==1 die Zeit in welcher ein Bild statisch zwischen dem automatischen Sliden angezeigt wird in Millisekunden

		var ReferenzSlider=new ImageSlider("ReferenzSlider","ReferenzSlideContainerDiv","","","");
			ReferenzSlider.changeButtonBeforeSlide=1;	//1= ja
			ReferenzSlider.changeButtonBeforeAutoSlide=1;	//1= ja
			ReferenzSlider.SlideVertical		=1;			// 1 =  Der Slide findet in der Vertikalen statt
			ReferenzSlider.SlideDirection		=1;			// 1 oder -1 (Vor-/Rück- bzw Ab-/Aufwärts)
			ReferenzSlider.SlideType			=2;			// 0=linear ; 1=beschleunigen &| bremsen; 2=Fading
			ReferenzSlider.SlideIn			=0;			// Anzahl der normalen Frames der zum beschleunigen verwendet werden soll (um die gleiche Anzahl an Frames wird der Slide länger)
			ReferenzSlider.SlideOut			=0;			// Anzahl der normalen Frames der zum abbremsen verwendet werden soll (um die gleiche Anzahl an Frames wird der Slide länger)
			ReferenzSlider.sliderSpeed		=1;			// sollte SliderSpeed bei einer anderen Bilderbreite größer sein als die anzahl der Elemente im array sliderSpeeds, so wird es auf die höchste mögliche Geschwindigkeit eingestellt
			ReferenzSlider.delayTimer		=40;			// delayTimer ist die anzahl von Millisekunden welche zwischen jedem Frame gewartet werden soll (40=25f/s; 20=50f/s; ...)
			ReferenzSlider.sliderDelay		=7000;		// solange autoSlideActive==1 die Zeit in welcher ein Bild statisch zwischen dem automatischen Sliden angezeigt wird in Millisekunden

		function startPageSlider()
		{
			Startseitenslider.startImageSlider();
			ReferenzSlider.startImageSlider();
		}

