
/*
 * Setzt ein zufälliges Hintergrundsbild
 */
hoeRandomBackgroundImage = function() {
	var bgarray = new Array('fileadmin/images/bg_1.jpg','fileadmin/images/bg_2.jpg','fileadmin/images/bg_3.jpg','fileadmin/images/bg_4.jpg','fileadmin/images/bg_5.jpg','fileadmin/images/bg_17.jpg','fileadmin/images/bg_6.jpg','fileadmin/images/bg_7.jpg','fileadmin/images/bg_8.jpg','fileadmin/images/bg_9.jpg','fileadmin/images/bg_10.jpg','fileadmin/images/bg_11.jpg','fileadmin/images/bg_12.jpg','fileadmin/images/bg_13.jpg','fileadmin/images/bg_14.jpg','fileadmin/images/bg_15.jpg','fileadmin/images/bg_16.jpg','fileadmin/images/bg_18.jpg'); 
	var bodyElement = $(document.body);
	
	bodyElement.setStyle('background-image', 'url('+bgarray.getRandom()+')');	
}

/*
 * Nimmt ein Array von Elementen entgegen und gibt diesen einen Hover Effekt
 */
hoeHoverEffect = function(elements) {
	var mouseEnterFunction = function(elemID){
		$(elemID).setStyle('background-color', '#000');
		$(elemID).setStyle('color', '#e3e4e4');
	}

	var mouseLeaveFunction = function(elemID){
		$(elemID).setStyle('background-color', '#fff');
		$(elemID).setStyle('color', '#000');
	}
	
	elements.each(function(id) {
		$(id).addEvents({
			mouseenter: function() {
				mouseEnterFunction(this.get('id'));
			},
			mouseleave: function() {
				mouseLeaveFunction(this.get('id'));
			}
		});
	});
	
}
 
/*
 * Lässt das Element mit der übergebenen ID reinsliden und faden
 */  
hoeSlideFadeIn = function(elemID) {
	var slideElement = $(elemID);

	var slideVar = new Fx.Slide(slideElement, {
		mode: 'vertical',
		transition: 'sine:in',
		duration: 3750,
		fps:60,
		
		onStart: function() {
			var morphObject = new Fx.Morph(slideElement, {
				duration: '3000',
				transition: 'sine:in'
			});
			morphObject.set({
				'opacity': 0
			});
			var fadeFunction = function() {
				morphObject.start({
					'opacity': 1,
					'fps': 1
				});
			}
			var delayedFadeFunction = fadeFunction.create({
				delay: 750
			});
			delayedFadeFunction();
		}
	});

	new Fx.Slide(slideElement, {}).hide();
	slideVar.toggle();
	slideVar.start({
		'display': 'block'
	});
}

/*
 * Lässt das Element mit der übergebenen ID reinfaden (Delay = Wartezeit vor Beginn des Fades, Duration = Dauer des Fades)
 */
hoeFadeIn = function(elemID, p_delay, p_duration, opacity) {
	fadeElement = $(elemID);
	
	var morphObject = new Fx.Morph(fadeElement, {
		duration: p_duration,
		transition: 'sine:in'
	});
	morphObject.set({
		'opacity': 0
	});
	var fadeFunction = function() {
		morphObject.start({
			'opacity': opacity,
			'fps': 60
		});
	}
	var delayedFadeFunction = fadeFunction.create({
		delay: p_delay
	});
	delayedFadeFunction();
}





/*
 * Lässt das Element mit der übergebenen classe reinfaden (Delay = Wartezeit vor Beginn des Fades, Duration = Dauer des Fades)
 */
hoeFadeInClass = function(elemclass, p_delay, p_duration, opacity) {
	var fadeElement = getElements(elemclass);
	for(i=0;i<fadeElement.length;i++){
	var morphObject = new Fx.Morph(fadeElement[i], {
		duration: p_duration,
		transition: 'sine:in'
	});
	morphObject.set({
		'opacity': 0
	});
	var fadeFunction = function() {
		morphObject.start({
			'opacity': opacity,
			'fps': 60
		});
	}
	var delayedFadeFunction = fadeFunction.create({
		delay: p_delay
	});
	delayedFadeFunction();
					
		}
}


/*
 * Slideshow
 */
var slideshowFunction = function() {
  /* settings */
  var showDuration = 5000;
  var container = $('slideshow-container');
  var images = container.getElements('img');
  var currentIndex = 0;
  var interval;
  var toc = [];
  var tocActive = 'toc-active';
  var thumbOpacity = 0.7;
  
  /* new: create caption area */
  var captionDIV = new Element('div',{
    id: 'slideshow-container-caption',
    styles: {
      //display:none,
      opacity: thumbOpacity
    }
  }).inject(container);
  var captionHeight = captionDIV.getSize().y;
  captionDIV.setStyle('height',0);
  
  /* new: starts the show */
  var start = function() { interval = show.periodical(showDuration); };
  var stop = function() { $clear(interval); };
  /* worker */
  var show = function(to) {
    images[currentIndex].fade('out');
    toc[currentIndex].removeClass(tocActive).fade(thumbOpacity);
    images[currentIndex = ($defined(to) ? to : (currentIndex < images.length - 1 ? currentIndex+1 : 0))].fade('in');
    toc[currentIndex].addClass(tocActive).fade(1);
    captionDIV.set('tween',{
      onComplete: function() {
        captionDIV.set('tween',{
          onComplete: $empty
        }).tween('height',captionHeight);
        /* parse caption */
        var title = '';
        var captionText = '';
        if(images[currentIndex].get('alt')) {          
          captionDIV.set('html','<p style="font-weight: bold; font-size: 14px;">' + images[currentIndex].get('alt') + '</p>');
        }
      }
    }).tween('height',0);
  };
  
  
  /* new: control: table of contents */
  images.each(function(img,i){
    /* add to table of contents */
    toc.push(new Element('img',{
      src: img.get('src'),
      title: img.get('alt'),
      styles: {
        opacity: thumbOpacity
      },
      events: {
        click: function(e) {
          if(e) e.stop();
          stop();
          show(i);
          start();
        },
        mouseenter: function() {
          this.fade(1);
        },
        mouseleave: function() {
          if(!this.hasClass(tocActive)) this.fade(thumbOpacity);
        }
      }  
    }));
    if(i > 0) { img.set('opacity',0); }
    
  });
  
  /* control: start/stop on mouseover/mouseout */
  container.addEvents({
    mouseenter: function() { stop(); },
    mouseleave: function() { start(); }
  });
  
  /* start once the page is finished loading */
  window.addEvent('load',function(){ show(0); start(); });
};

