var isIE6 = (navigator.appVersion.indexOf("6.0") != -1);

var AJAXLoader = {
	
	isLoading: false,
	actContentURL: "",
	
	loadContent: function(obj) {
		var objParent = obj.parentNode;
		var fileName = objParent.select("a.ajaxHref");
		
		if (!fileName || fileName == AJAXLoader.actContentURL) {
			return false;
		}
		
		// Active Thumbs zurücksetzen
		var objThumbWrapper = objParent.parentNode;
		var objThumbs = objThumbWrapper.select("div.thumb");
		for (var i=0; i<objThumbs.length; i++) {
			var objActives = objThumbs[i].select("div.active");
			for (var j=0; j<objActives.length; j++) {
				objActives[j].className = "";
			}
		}
		// Thumb auf Active setzen
		var objLabels = objParent.select("div");
		for (var i=0; i<objLabels.length; i++) {
			if (!objLabels[i].className || objLabels[i].className.length <= 0) {
				objLabels[i].className = "active";
			}
		}
		
		if (Prototype.Browser.IE && isIE6) {
			var allDivs = $("ajax_content").getElementsByTagName("div");
			for (var i=0; i<allDivs.length; i++) {
				if (allDivs[i].attributes["class"].nodeValue == "text") {
					allDivs[i].style.visibility = "hidden";
				}
			}
		}

		new Effect.Opacity('ajax_content', { to: 0, duration: 0, afterFinish: function() {
			
			if (AJAXLoader.isLoading) {
				return false;
			}
			
			AJAXLoader.isLoading = true;
			AJAXLoader.actContentURL = fileName;
			
			new Ajax.Request(fileName, {
				method: 'get',
				onSuccess: function(response) {
					var begin = response.responseText.indexOf("<body");
					begin = response.responseText.indexOf(">", begin) + 1;
					var end = response.responseText.indexOf("</body>")
					var text = response.responseText.substring(begin, end);
					var loadDiv = document.createElement("div");
					loadDiv.innerHTML = text;
					// loadDiv.getElementsByTagName("img")[0].onload = function() {
						$("ajax_content").innerHTML = loadDiv.innerHTML;
						loadDiv = null;
						var textDiv;
						if (Prototype.Browser.IE && isIE6) {
							var allDivs = $("ajax_content").getElementsByTagName("div");
							for (var i=0; i<allDivs.length; i++) {
								if (allDivs[i].attributes["class"].nodeValue == "text") {
									textDiv = allDivs[i];
								}
							}
							if (textDiv) {
								textDiv.style.visibility = "hidden";
							}
						}
						new Effect.Opacity('ajax_content', { to: 1, duration: 0.3, afterFinish: function() {
							if (textDiv) {
								textDiv.style.visibility = "";
							}
							AJAXLoader.isLoading = false;
						} });
					// }
				},
				onException: function(sender, e) {
					//alert(e.message);
					AJAXLoader.isLoading = false;;
					AJAXLoader.actContentURL = "";
				},
				onFailure: function(response) {
					//alert("Status " + response.status + ": " + response.statusText);
					AJAXLoader.isLoading = false;;
					AJAXLoader.actContentURL = "";
				}
			});
			
		} });
		
		return false;
		
	}
	
}

var Slider = {
	
	width: 861,
	height: 140,
	actFirstThumb: 0,
	pageCount: 1,
	thumbsPerPage: 7,
	thumbCount: 0,
	thumbWidth: 0,
	isInitialized: false,
	buttonLeft: null,
	buttonRight: null,
	
	init: function(count, width, height) {
		if (!Slider.isInitialized) {
			if (Slider.actPage > 0) {
				return false;
			}
			
			if (count) {
				Slider.thumbsPerPage = count; 
			}
			if (width) {
				Slider.width = width;
			}
			if (height) {
				Slider.height = height;
			}
			Slider.thumbWidth = Slider.width / Slider.thumbsPerPage;
			Slider.thumbCount = $$('#thumbs .thumb').length;
			Slider.pageCount = parseInt(Slider.thumbCount / Slider.thumbsPerPage);
			if (Slider.thumbCount % Slider.thumbsPerPage > 0) {
				Slider.pageCount++;
			}
			
			for (var i=1; i<Slider.pageCount; i++) { //Jede Seite
				for (var j=i*Slider.thumbsPerPage; j<(i+1)*Slider.thumbsPerPage; j++) { //Jedes Thumb der Seite
					var thumb = $$('#thumbs .thumb')[j];
					var offsetX = i * Slider.width;
					var offsetY = i * -Slider.height;
					if (thumb) {
						new Effect.Move(thumb, { x: offsetX, y: offsetY, duration: 0, mode:'relative' });
					}
				}
			}
			
			// Buttons suchen
			Slider.buttonLeft = $$('#slider .button')[0].firstDescendant();
			Slider.buttonRight = $$('#slider .button')[1].firstDescendant();
			
			// Button Activity prüfen
			Slider.setButtonActivity();
			
			Slider.isInitialized = true;
		}
	},
	
	move: function(direction) {
	
		var direction = (direction.toUpperCase() == "RIGHT" || direction > 0) ? 1 : -1;
		if ((Slider.thumbCount <= Slider.thumbsPerPage || Slider.actFirstThumb + Slider.thumbsPerPage >= Slider.thumbCount) && direction > 0 || Slider.actFirstThumb == 0 && direction < 0) {
			return false;
		}
		
		//return false;
		
		var newFirstThumb;
		if (direction > 0) {
			newFirstThumb = Slider.thumbCount - Slider.thumbsPerPage;
			if (newFirstThumb > Slider.actFirstThumb + Slider.thumbsPerPage) {
				newFirstThumb = Slider.actFirstThumb + Slider.thumbsPerPage;
			}
		}
		else {
			newFirstThumb = Slider.actFirstThumb - Slider.thumbsPerPage;
			if (newFirstThumb < 0) {
				newFirstThumb = 0;
			}
		}
		
		var deltaThumbs = Slider.actFirstThumb - newFirstThumb;
		
		for (var i=0; i<Slider.thumbCount; i++) {
			var thumb = $$('#thumbs .thumb')[i];
			if (thumb) {
				new Effect.Move(thumb, { x: Slider.thumbWidth * deltaThumbs, duration: 0.1 * Math.abs(deltaThumbs), mode:'relative' });
			}
		}
				
		Slider.actFirstThumb = newFirstThumb;
		
		// Button Activity prüfen
		Slider.setButtonActivity();
	},
	
	setButtonActivity: function() {
		//alert(Slider.buttonLeft + " / " + Slider.buttonRight);
		
		if (Slider.actFirstThumb == 0) {
			new Effect.Opacity(Slider.buttonLeft, { to: 0.5, duration: 0 });
		}
		else {
			new Effect.Opacity(Slider.buttonLeft, { to: 1, duration: 0 });
		}
		if (Slider.actFirstThumb + Slider.thumbsPerPage >= Slider.thumbCount) {
			new Effect.Opacity(Slider.buttonRight, { to: 0.5, duration: 0 });
		}
		else {
			new Effect.Opacity(Slider.buttonRight, { to: 1, duration: 0 });
		}
	}

}

var Menu = {

	actMenu: null,
	isHolding: false,
	isShowing: false,

	show: function(name) {
		if (!$('menu_' + name)) { 
			return false;
		}
		Menu.isShowing = true;
		if ($('menu_' + name) == Menu.actMenu) { 
			return false;
		}
		//
		Menu.actMenu = $('menu_' + name);
		Menu.actMenu.setStyle({opacity:0, display:'block'});
		new Effect.Opacity(Menu.actMenu, { to: 0.9, duration: 0.3 });
	},
	
	hide: function() {
		if (!Menu.actMenu) { 
			return false;
		}
		//
		Menu.isShowing = false;
		new PeriodicalExecuter(function(pe) {
			pe.stop();
			if (Menu.actMenu && !Menu.isHolding && !Menu.isShowing) {
				new Effect.Opacity(Menu.actMenu, { to: 0, duration: 0, afterFinishInternal: function() {
					if (!Menu.actMenu) { return false; }
					Menu.actMenu.setStyle({display:'none'});
					Menu.actMenu = null;
				} });
			}
		}, 0.2);
	},
	
	hold: function(menu, isHolding) {
		Menu.isHolding = (Menu.actMenu == menu && isHolding);
		if (!isHolding) { Menu.hide(); }
	}

}

var ProductMenuImage = {

	show: function(name) {
		var divImg = $('menu_products').getElementsByClassName('image')[0];
		if (!divImg) { return false; }
		var img = divImg.getElementsByTagName('img')[0];
		if (!img) { return false; }
		var match = img.src.match(/(.*\/).*?(\.jpg|\.gif)$/i);
		img.src = match[1] + name + '.jpg';
	}
	
}

var PageElement = {

	activeElement: null,
	
	show: function(id) {
		var newElement = $(id);
		var textSpan;
		if (this.activeElement) {
			this.activeElement.setStyle({ display:'none' });
		}
		if (!newElement) { return false; }
		newElement.setStyle({ opacity:0, display:'block' });
		if (Prototype.Browser.IE && isIE6) {
			textSpan = newElement.getElementsByClassName('text')[0];
			textSpan.setStyle({ display:'none' });
		}

		new Effect.Opacity(newElement, { to: 1, duration: 0.3, afterFinishInternal:function() {
			if (textSpan) {
				textSpan.setStyle({ display:'block' });
			}
		} });
		this.activeElement = newElement;
	}
	
}