// Globale Parameter definieren
var globalVars=new Array();
var selector=new String();

$(document).ready(function() {
	
	//
	// DOM-Manipulationen
	//

	// Seitenaufbau: Schatten Bild Kopfbereich
	$('p.head_image').append('<span class="shadow_top"></span>');
	$('p.head_image').append('<span class="shadow_bottom"></span>');
	
	// Seitenaufbau: Ansprechpartner
	$('div.ansprechpartner div.entry').each(function(index) {

		// Höhe feststellen
		$(this).find('div.info').wrapInner('<div class="wrapper"></div>');
		if($(this).find('div.wrapper').height()>165)
		{
			$(this).append('<a href="#show-all" class="show_all"><strong>Gesamten Text anzeigen …</strong></a>');
		}
	});
	
	// Team: Gesamten Text anzeigen Funktion
	$('div.ansprechpartner a.show_all').each(function(index) {
		$(this).click(function(event) {
			event.preventDefault();
			
			// Ausklappen
			$(this).parent().find('div.info').animate({
				height: $(this).parent().find('div.info div.wrapper').height()
			}, 1000);
			
			// Button ausblenden
			$(this).fadeOut();
		});
	});
		
	// IE6-Helper
	if($.browser.msie && $.browser.version=='6.0')
	{
		// Hover-Indikator
		$('div.angebote ul li').hover(
			function() {
				$(this).addClass('hover');
			},
			function() {
				$(this).removeClass('hover');
			}
		);
	}
	
	// Tabellen mit Zeilenlinien
	$('table.row_lines tr:odd').addClass('odd');
	$('table.row_lines tr:even').addClass('even');
	
	
	//
	// Formular-Validierung
	//
	
	// CSS-Klassen setzen
	$('#Default .mandatory').each(function(index) {
		
		// Leere Felder passend kennzeichnen
		if($(this).hasClass('text')) $(this).addClass('validate[required]');
		else if($(this).tagName()=='select') $(this).addClass('validate[required]');
		else if($(this).tagName()=='textarea') $(this).addClass('validate[required]');
	});

	// Formular-Validierung aktivieren
	if($('#Default').length>0) $('#Default').validationEngine({
		validationEventTriggers: 'blur',
		inlineValidation: true,
		success: false,
		scroll: true,
		promptPosition: 'topRight', // Verfügbar: topLeft, topRight, bottomLeft,  centerRight, bottomRight
		failure: function() { checkForm() }
	});
	
	// Funktionen beim Verlassen der Pflichtformularfelder
	$('#Default input.text.mandatory, #Default select.mandatory, #Default textarea.mandatory').each(function(index) {
		$(this).blur(function() {
			
			// Aktionen bei einem Fehler
			if($.validationEngine.isError)
			{
				// Error-Klassen hinzufügen
				$(this).addClass('error');
				$(this).parents('p.form_input').addClass('error');
				
				// Error-Position merken
				globalVars[this.id]=true;
				
				// Prompt verzögert ausblenden
				setTimeout('$.validationEngine.closePrompt("#'+this.id+'")', 2000);
			}
			else if(globalVars[this.id]==true)
			{
				// Error-Klassen entfernen
				$(this).removeClass('error');
				$(this).parents('p.form_input').removeClass('error');
				
				// Error-Position löschen
				globalVars[this.id]=true;
			}
		});
	});
	
	
	//
	// jQuery-Tools Anfang
	//
	
	// Tooltip vorbereiten
	$('.show_tooltip').each(function(index) {
		
		// Alle Links anpassen
		if(this.href)
		{
			// href-Attribut entfernen ...
			$(this).data('href', this.href).removeAttr('href').addClass('link');
			
			// ... und bei Klick wieder einfügen
			$(this).click(function() {
				$(this).attr('href', $(this).data('href'));
			});
		}
	});
	
	// Tooltip Initialisieren
	$('.show_tooltip').tooltip({
		tipClass: 'tooltip',
		position: 'top center',
		offset: [0, 0],
		effect: 'fade', // slide | toggle | fade
		predelay: 0,
		delay: 100
	});

	// Overlay Einzelbilder
	globalVars['ajaxLoaderImage']='assets/site/images/ajax-loader.gif';
	selector='div.content a.img_enlarge';
	if($(selector).length>0)
	{
		// Overlays anlegen
		$(selector).each(function(index) {
			
			// Overlay-Container anlegen
			$('body').append('<div id="overlay_single_'+index+'" class="overlay"> <div class="image"><img src="'+globalVars['ajaxLoaderImage']+'"></div> <div class="info"><p class="caption">'+this.title+'</p></div></div>');
			
			// Overlay-Bild laden
			$(this).click(function() {
				loadOverlayImage('#overlay_single_'+index+' img', this.href, '#overlay_single_'+index);				
			});
			
			// Overlay aktivieren
			$(this).overlay({
				target: '#overlay_single_'+index,
				mask: {
					color: 'black',
					loadSpeed: 200,
					opacity: 0.7
				},
				speed: 200,
				closeOnClick: true
			});
		});
	}

	// Overlay-Initialisierung für Galerien
	selector='div.content p.img_list_box.img_enlarge';
	if($(selector).length>0)
	{
		// Overlays anlegen
		$(selector).each(function(index) {
			
			// Overlay-Container anlegen
			$('body').append('<div id="overlay_gallery_'+index+'" class="overlay"> <div class="image"><img src="'+globalVars['ajaxLoaderImage']+'"></div> <div class="info"><p class="caption">'+$(selector+' a:first').attr('title')+'</p> <p class="position">Bild <span class="index"></span> von '+$(selector+' a').length+'</p> </div> <a class="prev">&nbsp;</a> <a class="next">&nbsp;</a> </div>');
			
			// Overlay-Bild laden
			$(selector+' a').click(function() {
				loadOverlayImage('#overlay_gallery_'+index+' img', $(this).attr('href'), '#overlay_gallery_'+index);
				
				// Aktuelle Position bestimmen
				globalVars['activeGalleryImage']=$(selector+' a').index($(this));
				
				// Position in der Bildunterschrift setzen
				$('#overlay_gallery_'+index+' span.index').html(globalVars['activeGalleryImage']+1);
				
				// Prev-Button prüfen
				if(globalVars['activeGalleryImage']==0) $('#overlay_gallery_'+index+' a.prev').addClass('disabled');
				else $('#overlay_gallery_'+index+' a.prev').removeClass('disabled');
				
				// Next-Button prüfen
				if(globalVars['activeGalleryImage']==$(selector+' a').length-1) $('#overlay_gallery_'+index+' a.next').addClass('disabled');
				else $('#overlay_gallery_'+index+' a.next').removeClass('disabled');
			});
			
			// Overlay aktivieren
			$(selector+' a').overlay({
				target: '#overlay_gallery_'+index,
				mask: {
					color: 'black',
					loadSpeed: 200,
					opacity: 0.7
				},
				onClose: function() {
					$('#overlay_gallery_'+index+' img').hide();
				},
				speed: 400,
				closeOnClick: true
			});
			
			// Funktion Next-Button
			$('#overlay_gallery_'+index+' a.next').click(function() {
				
				// Falls es ein weiteres Bild gibt
				if($(selector+' a').eq(globalVars['activeGalleryImage']+1).length)
				{
					// Bild laden
					loadOverlayImage('#overlay_gallery_'+index+' img', $(selector+' a').eq(globalVars['activeGalleryImage']+1).attr('href'), '#overlay_gallery_'+index);
					
					// Position in der Bildunterschrift setzen
					$('#overlay_gallery_'+index+' span.index').html(globalVars['activeGalleryImage']+2);
					
					// Prev-Button aktivieren
					$('#overlay_gallery_'+index+' a.prev').removeClass('disabled');
					
					globalVars['activeGalleryImage']++;
				}
				
				// Falls es keine weiteren Bilder mehr gibt, Next-Button deaktivieren
				if($(selector+' a').eq(globalVars['activeGalleryImage']+1).length==0)
				{
					$(this).addClass('disabled');
				}				
			});
			
			// Funktion Prev-Button
			$('#overlay_gallery_'+index+' a.prev').click(function() {
				
				// Falls es ein weiteres Bild gibt
				if($(selector+' a').eq(globalVars['activeGalleryImage']-1).length)
				{
					// Bild laden
					loadOverlayImage('#overlay_gallery_'+index+' img', $(selector+' a').eq(globalVars['activeGalleryImage']-1).attr('href'), '#overlay_gallery_'+index);
					
					// Position in der Bildunterschrift setzen
					$('#overlay_gallery_'+index+' span.index').html(globalVars['activeGalleryImage']);
					
					// Next-Button aktivieren
					$('#overlay_gallery_'+index+' a.next').removeClass('disabled');
					
					globalVars['activeGalleryImage']--;
				}
				
				// Falls es keine weiteren Bilder mehr gibt, Prev-Button deaktivieren
				if(globalVars['activeGalleryImage']==0)
				{
					$(this).addClass('disabled');
				}				
			});
		});
	}
	
	// Overlay-Funktion: Bild laden
	function loadOverlayImage(overlayImage, bigImage, overlay)
	{
		// Altes Bild ausblenden
		$(overlayImage).fadeOut(200, function() {
			var loadEventCounter=1;
			
			// Neues Bild laden
			$(overlayImage).attr('src', bigImage).load(function() {
				// Mehrfach-Animationen verhindern
				if(loadEventCounter>1) return;
				
				// Größe und Position des Overlay-Containers anpassen
				$(overlay).animate({
					width: $(overlayImage).width(),
					height: $(overlayImage).height(),
					left: $(document).width()/2-$(overlayImage).width()/2
				}, 200, function() {
					// Neues Bild einblenden
					$(overlayImage).fadeIn(200);
					
					// Größe und Position des Overlay-Containers sichern
					$(overlay).css('left', $(document).width()/2-$(this).width()/2);
				});
				
				loadEventCounter++;
			});
		});
	}
		
	
	//
	// Bilderwechsel-Parameter prüfen und Bilderwechsel starten: headImages
	//
		
	if(typeof(headImages)!='undefined') startImageChange('6000');
	
	
	//
	// E-Mails entschlüsseln
	//
	
	// Expression erweitern
	$.extend($.expr[':'], {
		mailToLink: function (obj) {
			return obj.href.match(/^mailto\:/);
		}
	});
	
	// Mailto-Links anpassen
	$('a:mailToLink').each(function() {
		this.href=this.href.split("?")[0].replace("ANTI[at]SPAMBOT", "@");
		$(this).html($(this).html().replace("TOBMAPS]ta[ITNA", "@"));
	});


	//
	// SmoothScroll
	//
	
	$('a[href*=#]').click(function() {
		
		// Abbrechen falls der Link zu den Apsprechpartner gehör
		if($(this).hasClass('show_all'))	return;

		// duration in ms
		var duration=1000;

		// easing values: swing | linear
		var easing='swing';

		// get / set parameters
		var newHash=this.hash;
		var target=$(newHash).offset().top;
		var oldLocation=window.location.href.replace(window.location.hash, '');
		var newLocation=this;

		// make sure it's the same location		
		if(oldLocation+newHash==newLocation)
		{
			// set selector
			if($.browser.safari) var animationSelector='body:not(:animated)';
			else var animationSelector='html:not(:animated)';
			
			// animate to target and set the hash to the window.location after the animation
			$(animationSelector).animate({ scrollTop: target }, duration, easing, function() {

				// add new hash to the browser location
				window.location.href=newLocation;
			});

			// cancel default click action
			return false;
		}
	});
		
});


//
// Funktionen Bildwechsel
//

// Funktion zum Start des Bildwechsels
function startImageChange(intervalTime)
{
	// Parameter bestimmen
	var container='p.head_image';
	var type='head';

	// Anzahl der Bilder feststellen
	var headImagesTotal=0;
	$.each(headImages, function() { headImagesTotal++; });

	// Bildwechselfunktion mit Intervall aufrufen
	setInterval('imageChange("'+type+'", "'+container+'", "'+headImagesTotal+'")', intervalTime);
}

// Funktion für den Bildwechsel
function imageChange(type, container, imagesTotal)
{
	// Parameter bestimmen
	if(type=='head')
	{
		var imagesArray=headImages;
		var imagePath=headImagePath;
	}
	
	// Neues Bild bestimmen
	var imageID=globalVars['imageChange'];		
	while(imageID==globalVars['imageChange'])
	{
		var imageRand=rnd(imagesTotal);
		imageID='gallery_image_'+imageRand;
	}

	// Neues Bild einfügen
	var newImage='<img src="'+imagePath+imagesArray[imageRand-1]+'" alt="" class="fade" id="'+imageID+'">';
	$(container).append(newImage);
	
	// Neues Bild einblenden	
	$('#'+imageID).load(function () {
		$('#'+imageID).fadeIn(1000, function() {
			
			// Altes Bild löschen und neues Bild merken
			$('#'+globalVars['imageChange']).remove();
			globalVars['imageChange']=imageID;				
		});
	});
}


//
// Funktionen Divers
//

function checkForm()
{
	// Alle Felder prüfen
	$('#Default .mandatory').each(function(index) {
		
		// Leere Felder kennzeichnen
		if($.validationEngine.loadValidation($(this))) $(this).parents('p.form_input').addClass('error');
	});
	
	// Prompt(s) verzögert ausblenden
	setTimeout('$.validationEngine.closePrompt(".formError", true)', 3000);
}

// Element mit angepasster fixer Position
function positionFixed(selector, type)
{
	if($('body').hasClass('msie6') || type=='animated')
	{
		// Positionierung per JS-Animation
		var offset = $(selector).offset();
		var topPadding = 15;
		
		$(window).scroll(function() {
			if ($(window).scrollTop() > offset.top) {
				$(selector).stop().animate({
					marginTop: $(window).scrollTop() - offset.top + topPadding
				});
			} else {
				$(selector).stop().animate({
					marginTop: 0
				});
			}
		});
	}
	else
	{
		// Position mit CSS-Position fixed
		var elementTopPos=$(selector).offset().top;
		var elementCssPositon=$(selector).css('position');
		
		$(window).scroll(function() {		
			if($(this).scrollTop()>elementTopPos) $(selector).css({'position': 'fixed', 'padding-top': '10px', 'margin-top': '-'+elementTopPos+'px'});
			else $('div.sidebar div.warenkorb').css({'padding-top': 0, 'position': elementCssPositon, 'margin-top': '0'});
		});			
	}
}

// Zufallswert ermitteln
function rnd(max)
{
	var rndNum = max * Math.random();
	rndNum = Math.ceil (rndNum);
	return rndNum;
}

// Millisekunen seit dem 01.01.1970 bis jetzt ermitteln
function utcTimeTillNow()
{
	var time=new Date();
	var year=time.getFullYear();
	var month=time.getMonth();
	var day=time.getDate();
	var hours=time.getHours();
	var minutes=time.getMinutes();
	var seconds=time.getSeconds();

	return Date.UTC(year, month, day, hours, minutes, seconds);
}

// jQuery-Anpassung: Toggle mit Fade-Effekt
jQuery.fn.fadeToggle=function(speed, easing, callback) {
   return this.animate({opacity: 'toggle'}, speed, easing, callback);
};

// Tag-Name ermitteln
$.fn.tagName=function() {
    return this.get(0).tagName.toLowerCase();
}
