var markerArray = [];
var navSlideEffects = [];
var slideshowPlaying = false;
var controlImg;
var slideshowlinks;

window.addEvent('domready', function() {
	
	if ($('klappnav')) {
		var submenus = $('klappnav').getElements('li.hassubmenu');
		if (submenus.length > 0) {
			submenus.each( function( elem ){
				var list = elem.getElement('ul.submenu');
				if (list) {
					var myFx = new Fx.Slide(list).hide();
					elem.addEvents({
						'mouseenter' : function(){
							list.setStyles({
								'visibility': 'visible'
							});
							myFx.cancel();
							myFx.slideIn();
						},
						'mouseleave' : function(){
							myFx.cancel();
							myFx.slideOut();
						}
					});
				}
			});
		}
	}
	
	if ($('holder_naviright')) {
	  var submenus = $('holder_naviright').getElements('li.hassubmenu');
		if (submenus.length > 0) {
			submenus.each( function( elem ){
				var list = elem.getElement('ul.submenu');
				if (list) {
					var myFx = new Fx.Slide(list).hide();
					elem.addEvents({
						'mouseenter' : function(){
							list.setStyles({
								'visibility': 'visible',
								'position':'relative'
							});
							myFx.cancel();
							myFx.slideIn();
						},
						'mouseleave' : function(){
							myFx.cancel();
							myFx.slideOut();
						}
					});
				}
			});
		}
	}
	
	// Carousel
	if ($('sliderlist')) {
		var carousel1 = new iCarousel("sliderlist", {  
			animation: {   
				duration: 300
			},
			idPrevious: "previous",  
			idNext: "next",  
			idToggle: "undefined",  
			item: {  
				klass: "sl_item",  
				size: 630  
			}
		});
	}
	
	if ($('sliderlist2')) {		
		var carousel2 = new iCarousel("sliderlist2", {  
			animation: {   
				duration: 300
			},
			idPrevious: "previous",  
			idNext: "next",  
			idToggle: "undefined",  
			item: {  
				klass: "sb_item",  
				size: 319
			}
		});		
	}
	
	if ($('sliderlistupps')) {		
		var carousel2 = new iCarousel("sliderlistupps", {  
			animation: {   
				duration: 300
			},
			idPrevious: "previous",  
			idNext: "next",  
			idToggle: "undefined",  
			item: {  
				klass: "sb_item",  
				size: 310
			}
		});		
	}
	
	if ($('sliderlistsidebar')) {		
		var carousel2 = new iCarousel("sliderlistsidebar", {  
			animation: {   
				duration: 300
			},
			idPrevious: "previous",  
			idNext: "next",  
			idToggle: "undefined",  
			item: {  
				klass: "sbb_item",  
				size: 159
			}
		});		
	}
	
	if ($('sliderlistkomplbreite')) {		
		var carousel2 = new iCarousel("sliderlistkomplbreite", {  
			animation: {   
				duration: 300
			},
			idPrevious: "previous",  
			idNext: "next",  
			idToggle: "undefined",  
			item: {  
				klass: "sb_item",  
				size: 419
			}
		});		
	}
	
	if ($('verticalSliderlist')) {
		var verticalCarousel = new iCarousel("verticalSliderlist", {
			animation: {
				type: "scroll",// fadeNscroll, scroll, fade
				direction: "top",// if type = scroll, set: top || left
				amount: 1,// if type = scroll, set the amount to scroll
				transition: Fx.Transitions.Cubic.easeInOut,
				duration: 1000,
				rotate: {
					type: "auto", // auto
					interval: 5000, // if type = auto, set the interval (ms)
					onMouseOver: "stop || proceed" // if type = auto, set the onmouseover behavior: stop || proceed
				}
			},			
			idPrevious: "undefined",  
			idNext: "undefined",  
			idToggle: "undefined",  
			item: {  
				klass: "s_item",  
				size: 146
			}		
		});
	}
	
	// Mobil am Handy
	if ($('sliderlist3')) {		
		var carousel3 = new iCarousel("sliderlist3", {  
			animation: {   
				duration: 600
			},
			idPrevious: "previous",  
			idNext: "next",  
			idToggle: "undefined",  
			item: {  
				klass: "sl_item",  
				size: 86
			},
			onNext : function() {
				// console.log("NEXT");
				setCenterImg(carousel3.atScreen + 2);
				dimImages();
			},
			onPrevious : function() {
				// console.log("PREVIOUS");
				setCenterImg(carousel3.atScreen + 2);
				dimImages();
			}
		});		
		carousel3.goTo(0);
		Mediabox.scanPage();	
		
		var myLinks = $A($$('#sliderlist3 li a'));	
		var slantImg;
		var innerTwo = [];
		var outerTwo = [];
		
		var setCenterImg = function(nr) {
			// console.log("atscreen: ", carousel3.atScreen);
			if (!$defined(nr)) {
				nr = carousel3.atScreen + 2;
			}
			// console.log("NR: ", nr);
			// console.log("ATSCREEN: ", carousel3.atScreen + 2);
			myLinks.each(function(lnk, index) {
				if (index == nr) {
					var myImg = myLinks[nr].getElement('img');
					// console.log("myImg: ", myImg);
					// console.log("slantImg: ", slantImg);
					
					if ($defined(slantImg)) {
						slantImg.src = slantImg.src.replace(/gs-mobile_schreg_/g, "gs-mobile_");
					}					
					myImg.src = myImg.src.replace(/gs-mobile_/g, "gs-mobile_schreg_");
					slantImg = myImg;
				}
			});		
		};
		
		var dimImages = function() {
			var myInnerTwo = [myLinks[carousel3.atScreen + 1], myLinks[carousel3.atScreen + 3]];
			// zurücksetzen
			if (innerTwo.length > 0 || outerTwo.length > 0) {
				innerTwo.extend(outerTwo).each(function(inner1) {
					var inImg = inner1.getElement('img');
					inImg.morph({ height: 127, opacity: 1, marginTop: '0px' });
				});
			}			
			myInnerTwo.each(function(inner) {
				var innerImg = inner.getElement('img');
				innerImg.morph({ height: 107, opacity: 0.6, marginTop: '20px' });
			});
			innerTwo = myInnerTwo;
						
			var myOuterTwo = [myLinks[carousel3.atScreen], myLinks[carousel3.atScreen + 4]];				
			 
			myOuterTwo.each(function(outer) {
				var outerImg = outer.getElement('img');
				outerImg.morph({ height: 95, opacity: 0.3, marginTop: '32px' });
			});
			outerTwo = myOuterTwo;			
			
		};
		setCenterImg();
		dimImages();
	}
	
	// iPhone App Carousel
	if ($('sliderlist5')) {		
		var carousel4 = new iCarousel("sliderlist5", {  
			animation: {   
				duration: 600
			},
			idPrevious: "previous2",  
			idNext: "next2",  
			idToggle: "undefined",  
			item: {  
				klass: "sl_item2",  
				size: 86
			},
			pagingDiv: "carouselpaging2",
			onNext : function() {
				setCenterImg2(carousel4.atScreen + 2);
				dimImages2();
			},
			onPrevious : function() {
				setCenterImg2(carousel4.atScreen + 2);
				dimImages2();
			}
		});
		carousel4.goTo(0);
		Mediabox.scanPage();	
		
		var myLinks2 = $A($$('#sliderlist5 li a'));	
		var slantImg2;
		var innerTwo2 = [];
		var outerTwo2 = [];
		var setCenterImg2 = function(nr) {
			if (!$defined(nr)) {
				nr = carousel4.atScreen + 2;
			}
			myLinks2.each(function(lnk, index) {
				if (index == nr) {
					var myImg2 = myLinks2[nr].getElement('img');
					if ($defined(slantImg2)) {
						slantImg2.src = slantImg2.src.replace(/iphone_schraeg_/g, "iphone_");
					}					
					myImg2.src = myImg2.src.replace(/iphone_/g, "iphone_schraeg_");
					slantImg2 = myImg2;
				}
			});		
		};
		var dimImages2 = function() {
			var myInnerTwo2 = [myLinks2[carousel4.atScreen + 1], myLinks2[carousel4.atScreen + 3]];
			// zurücksetzen
			if (innerTwo2.length > 0 || outerTwo2.length > 0) {
				innerTwo2.extend(outerTwo2).each(function(inner1) {
					var inImg = inner1.getElement('img');
					inImg.morph({ height: 127, opacity: 1, marginTop: '0px' });
				});
			}			
			myInnerTwo2.each(function(inner) {
				var innerImg = inner.getElement('img');
				innerImg.morph({ height: 107, opacity: 0.6, marginTop: '20px' });
			});
			innerTwo2 = myInnerTwo2;						
			var myOuterTwo2 = [myLinks2[carousel4.atScreen], myLinks2[carousel4.atScreen + 4]];			 
			myOuterTwo2.each(function(outer) {
				var outerImg = outer.getElement('img');
				outerImg.morph({ height: 95, opacity: 0.3, marginTop: '32px' });
			});
			outerTwo2 = myOuterTwo2;
		};
		setCenterImg2();
		dimImages2();
	}
	
	var appSlider = $('appsliderlist');
	if (appSlider) {	
		if (appSlider.getParent('#app_iphone')) {			
			var iphoneCarousel = new iCarousel("appsliderlist", {  
				animation: {   
					duration: 300
				},
				idPrevious: "previous",  
				idNext: "next",  
				idToggle: "undefined",  
				item: {  
					klass: "slider_item",  
					size: 172  
				},
				onNext: function() {
					displayInfoText(iphoneCarousel.atScreen);
				},
				onPrevious: function() {
					displayInfoText(iphoneCarousel.atScreen);
				}
			});			
		} // ende iphoneCarousel
		
		if (appSlider.getParent('#app_android')) {			
			var androidCarousel = new iCarousel("appsliderlist", {  
				animation: {   
					duration: 300
				},
				idPrevious: "previous",  
				idNext: "next",  
				idToggle: "undefined",  
				item: {  
					klass: "slider_item",  
					size: 166  
				},
				onNext: function() {
					displayInfoText(androidCarousel.atScreen);
				},
				onPrevious: function() {
					displayInfoText(androidCarousel.atScreen);
				}
			});			
		} // ende androidCarousel
		
		if (appSlider.getParent('#app_mobile')) {			
			var mobileCarousel = new iCarousel("appsliderlist", {  
				animation: {   
					duration: 300
				},
				idPrevious: "previous",  
				idNext: "next",  
				idToggle: "undefined",  
				item: {  
					klass: "slider_item",  
					size: 148  
				},
				onNext: function() {
					displayInfoText(mobileCarousel.atScreen);
				},
				onPrevious: function() {
					displayInfoText(mobileCarousel.atScreen);
				}
			});			
		} // ende androidCarousel
		
		
		var myImgs = $A($$('#appsliderlist li img'));
		var textBox = $('app_infotext').getElement('span');
		
		var displayInfoText = function(nr) {
			if (!$defined(nr)) nr = 0;
			textBox.set('html', myImgs[nr].get('alt'));
		};
		
		displayInfoText();
	}
	
	
	
	// Popup für Suchergebnis ausklappen
	if ($('tsearchsubmit') && $('searchresultpopup')) {
		$('tsearchsubmit').addEvent('click', function() {
			$('searchresultpopup').setStyle('display','block');
			var body = document.getElement('body').addEvent('click', function(evt) {
				// console.log(evt);
				if (Browser.Engine.trident) {
					var tar = $(evt.target);
				}
				else {
					var tar = evt.target;
				}				
				if (!tar.getParent('div#searchresultpopup') && tar != $('tsearchsubmit')) {
					$('searchresultpopup').setStyle('display','none');
				}
			});			
		});
	}
	
	// Slideshow Setup
	if ($('slideshow')) {		
		mySlideShow = new SlideShow('slideshow',{
	    delay: 5000,
	    transition: 'fadeThroughBackground',
	    duration: 500,
	    autoplay: true,
	    onShow: function(eventVars) {
	    	slideshowLinksHighLight(eventVars.nextIndex);
	    }
		});		
		
		slideshowlinks = $('slideshowlinklist').getElements('a');
		slideshowLinksHighLight(0);
		slideshowlinks.each(function(link) {
			link.addEvent('click', function(evt) {
				evt.stop();
				slideshowlinks.each(function(l) {
					if (l != link) {
						l.removeClass('active');
					}
					else {
						l.addClass('active');
					}
				});				
				var r = parseInt(link.get('rel').substr(link.get('rel').indexOf('[')+1, 1));
				mySlideShow.show(r);
				slideshowPause();
			})
		});		
	}
	
	var oeffnungszeiten = $('oezeiten');
	if (oeffnungszeiten) {
		// loadOptionalTimes();
	}
	
	
	var addrblock = $('lieferadressegast');
	if (addrblock) {
	  var cb = $('lieferadresse_chb');
	  var addrInputs = $$('#lieferadressegast input', '#lieferadressegast select');
	  addrblock.tween('opacity', 0.4);
	  addrInputs.each(function(el) {
	  	el.set('disabled', true);
	  });
  		
		cb.addEvent('click', function(evt) {
  		// console.log("CHECKED: ", cb.checked);
  		if (cb.checked == true) {
  			addrblock.tween('opacity', 1);
  			addrInputs.each(function(el) {
  				el.set('disabled', false);
  			});
  		}
  		else {
  			addrblock.tween('opacity', 0.4);
  			addrInputs.each(function(el) {
  				el.set('disabled', true);
  				el.value = "";
  			});
  		}
  	});
	}
	
	
	loadInputDefaultTexts();
	
	setupFormboxToggles();
	
	setupPointyTips();
			
	initKlippklappBoxes();

	initNewsletterForms();	
	
	loadOptionalTimes();
	
	initGBFancySelect();
	
	initSchliessenBox();
	
	
	
	var allFileUploads = $$('.sdFileUpload');
	if (allFileUploads.length > 0) {
		allFileUploads.each(function(fup) {
			var myFup = new SDFileUpload(fup, {
				'image': '/gb/images/btn_fileupload.gif',
				'imageheight' : 22,
     		'imagewidth' : 24,
     		'width' : 200				
			});
		});
	}	
	
	
}); // ende domready

window.addEvent('load', function() {
		var myAccordion = new Accordion($('accordion'), '#accordion h4', '#accordion div.a_item', {
			opacity: false,
			show: 0,
			trigger : 'mouseenter',
			initialDisplayFx : false
		});
});

// ####  Functions  #### //

var initNewsletterForms = function() {
	var btns = $$('.newsletterformsubmit');
	var requiredDivs = [];
	var fehlerDivs;
	
	if (btns.length > 0) {
		btns.each(function(btn) {
			btn.addEvent('click', function(evt) {
				evt.preventDefault();
				
				//var myForm = btn.form;
				var myForm = btn.getParent('form');
				//alert(myForm);
				
				// Hiddenfield mit dem zusammengesetzten Geburtsdatum erzeugen und einfügen
				var myBirthdate = myForm.getElement('select[name=tag]').value + "." + myForm.getElement('select[name=monat]').value + "." + myForm.getElement('select[name=jahr]').value;
				//console.log("birthdate: ", birthdate);
				var birthdayInput = new Element('input', {
					type : 'hidden',
					name : 'c_birth',
					value : myBirthdate
				}).inject(btn, "before");
				
				// Formular prüfung
				fehlerDivs = [];
				requiredDivs = myForm.getElements('div.required');
				var requiredInputs = myForm.getElements('div.required input');		
				
				if (requiredInputs.length > 0) {
					var f1 = 0;
					var f2 = 0;
					var alert_f = "";
					requiredInputs.each(function(input) {					
						//Inputs auf Eingabe prüfen
						//console.log("INPUTDEFAULTVALUE: ", input.retrieve('defaultValue'));
						if (input.value == "" || input.value == input.retrieve('defaultValue')) {							
							f1 += 1;
							var lbl = input.getPrevious('label').get('html');							
							var lbltext = lbl.substr(0, lbl.indexOf('<'));
							alert_f += (f1 == 1 ? " " : ", ");
							alert_f += lbltext;		
							fehlerDivs.push(input.getParent('div'));			
						}
						// E-Mail auf Gültigkeit prüfen
						if (input.name == "c_email" && !validEmail(input.value)) {
							f2 += 1;
							fehlerDivs.push(input.getParent('div'));
						}
					});
					
					//console.log("F1:", f1, "F2:", f2);				
					if (f1 > 0) {
						var alert_out = "Bitte füllen Sie ";
						alert_out += (f1 == 1 ? "das Feld" : "die Felder");
						alert_out += alert_f + " aus!";
						alert(alert_out);
						markErrors(fehlerDivs);
					}
					else if (f2 > 0) {
						alert("Bitte geben Sie eine gültige E-Mail Adresse an!");
						markErrors(fehlerDivs);
					}
					else {
						myForm.submit();
					}
				}
				else {
					myForm.submit();
				}
			});
			
			var markErrors = function(fehlerDivs) {
				//console.log("requiredDivs", requiredDivs);
				//console.log("fehlerDivs", fehlerDivs);
				requiredDivs.each(function(rd) {
					if (fehlerDivs.indexOf(rd) >= 0) {
						rd.addClass('error');
					}
					else {
						rd.removeClass('error');
					}
				});				
			};		
			
			var validEmail = function(email) {
  			var strReg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
				var regex = new RegExp(strReg);
				return(regex.test(email));
			};
		});
	}
};

var loadInputDefaultTexts = function() {
	$$('input.sdinput').each(function(input){
	  var MyInput = new SDTextInput(input);
	});
};

var initSchliessenBox = function() {
	var schliessenBox = document.getElement('div.schliessenbox');
	
	if (schliessenBox){
	var schliesser = schliessenBox.getElement('div#schliessen');
	schliesser.addEvent('click', function(evt) {
		evt.stop();
		var myRevealFx = new Fx.Reveal(schliessenBox);
		myRevealFx.dissolve();		
	});
  }
};


var initKlippklappBoxes = function() {
	var kkToggles = $$('.klappbox_header a');
	if (kkToggles.length > 0) {
		kkToggles.each(function(tg) {
			var parentDiv = tg.getParent();
			box = parentDiv.getNext('div.klappbox');
			//console.log("box", box);
			if (!tg.hasClass('open')) {
				var boxFx = new Fx.Slide(box).hide();	
			}
			else {
				var boxFx = new Fx.Slide(box);
			}
			parentDiv.addClass('closed');
			tg.addEvent('click', function(evt) {
				evt.stop();
				if (!tg.hasClass('open')) {
					boxFx.cancel();
					boxFx.slideIn();
					tg.removeClass('closed');
					tg.addClass('open');
				}
				else {
					boxFx.cancel();
					boxFx.slideOut();
					tg.removeClass('open');
					tg.addClass('closed');
				}				
			});		
		});
	}
	
	var kkCheckboxes = $$('.klappbox_header input[type=checkbox]');
	if (kkCheckboxes.length > 0) {
		kkCheckboxes.each(function(cb) {
			var parentDiv = cb.getParent();
			box = parentDiv.getNext('div.klappbox');
			if (cb.get('checked') == false) {
				var boxFx = new Fx.Slide(box).hide();	
			} 
			else {
				var boxFx = new Fx.Slide(box);
			}
			cb.addEvent('click', function(evt) {
				if (cb.get('checked') == true) {
					boxFx.cancel();
					boxFx.slideIn();
				}
				else {
					boxFx.cancel();
					boxFx.slideOut();
				}
			});
		});
	}
	
	var kk2Toggles = $$('.klappbox_header2 a');
	if (kk2Toggles.length > 0) {
		kk2Toggles.each(function(tg) {
			var parentDiv = tg.getParent();
			box = parentDiv.getNext('div.klappbox2');
			if (box) {
				//console.log("box", box);
				if (!tg.hasClass('open')) {
					var boxFx = new Fx.Slide(box).hide();	
				}
				else {
					var boxFx = new Fx.Slide(box);
				}
				parentDiv.addClass('closed');
				tg.addEvent('click', function(evt) {
					evt.stop();
					if (!tg.hasClass('open')) {
						boxFx.cancel();
						boxFx.slideIn();
						tg.removeClass('closed');
						tg.addClass('open');
					}
					else {
						boxFx.cancel();
						boxFx.slideOut();
						tg.removeClass('open');
						tg.addClass('closed');
					}				
				});	
			}	
			else {
				tg.addEvent('click', function(evt) {
					evt.stop();
				});
			}
		});
	}
}

var slideshowPause = function() {
	mySlideShow.pause();
	slideshowPlaying = false;
	controlImg.set({
		'src': '/gb/images/icon_play.gif',
		'title': 'Slideshow play'
	});
};
var slideshowPlay = function() {
	mySlideShow.play();
	slideshowPlaying = true;
	controlImg.set({
		'src': '/gb/images/icon_stop.gif',
		'title': 'Slideshow pause'
	});
	$('slideshowlinklist').getElements('a').each(function(link) {
		link.removeClass('active');
	});
};

var slideshowLinksHighLight = function(n) {
	slideshowlinks.each(function(l, index) {
		if (n != index) {
			l.removeClass('active');
		}
		else {
			l.addClass('active');
		}
	});		
}

var setupFormboxToggles = function() {
	var boxes = [];
	var myBox;
	var toggles = $$('.formboxtoggle');
	if (toggles.length > 0) {
		toggles.each(function(tg) {			
			var box = $(tg.get("rel"));
			if (!$chk(box)) {
				// console.log("LEER");
				box = tg.getNext('div.formbox');
			}
			if (!$chk(box)) {
				// console.log("IMMER NOCH LEER");
				box = tg.getParent().getNext('div.formbox');
			}			
			// console.log("BOX: ", box);		
			boxes.push(box);
			//console.log("tg.checked: ", tg.checked);
			
			if (tg.checked == true) {
				var boxFx = new Fx.Slide(box);	
			}
			else {
				var boxFx = new Fx.Slide(box).hide();	
			}
			tg.store('box', box);
			tg.store('fx', boxFx);			
			
			if (tg.get('type') == "radio") {
				var match = 'input[name=' + tg.get('name') + ']';
				// console.log("MATCH: ", match);				
				document.getElements(match).each(function(radio) {
					radio.addEvent('click', function(evt) {						
						if (radio == tg) {
							var fx = tg.retrieve('fx');
							myBox = tg.retrieve('box');
							fx.cancel();
							fx.slideIn();
						}
						else {
							if (boxes.length > 1) {
								boxes.each(function(bx) {
									if (bx != myBox) {
										boxFx.cancel();
										boxFx.slideOut();
									}
								});
							}
							else {
								boxFx.cancel();
								boxFx.slideOut();
							}							
						}						
					});
				});				
			}		
		});
	}
}

var setupPointyTips = function() {
	var myFormTips = new Tips('.pointytip',{
		text : 'rel',
		className: 'formtip',
		fixed: true,
		offset: {'x': 33, 'y': -16}
	});		
	
	var tipsWithTitle = $$('.pointytipdown');
	if (tipsWithTitle.length > 0) {
		tipsWithTitle.each(function(element,index) {
			var title = element.get("title");
			if ($chk(title)) {
				var content = title.split('::');
				element.store('tip:title', content[0]);
				element.store('tip:text', content[1]);
			}			
		});			
	}	
	var myTipsPointDown = new Tips('.pointytipdown',{
		text : 'rel',
		className: 'tipdown',
		//fixed: true,
		offset: {'x': -115, 'y': -150}
	});	
	
	
	var tipsWithTitle = $$('.pointytiponlink');
	if (tipsWithTitle.length > 0) {
		tipsWithTitle.each(function(element,index) {
			var title = element.get("title");
			if ($chk(title)) {
				var content = title.split('::');
				element.store('tip:title', content[0]);
				element.store('tip:text', content[1]);
			}			
		});			
	}	
	var myTipsPointDown = new Tips('.pointytiponlink',{
		text : 'rel',
		className: 'tipdown',
		//fixed: true,
		offset: {'x': -115, 'y': -80}
	});	
	
	
	var htmlTips = $$('.htmltip', '.csvtip');
	if (htmlTips.length > 0) {
		htmlTips.each(function(element,index) {
			var html = element.getElement('div.htmltipcontent').get('html');
			if ($chk(html)) {
				element.store('tip:text', html);
			}
		});
	}	
	var myhtmlTips = new Tips('.htmltip', {
		className : 'htmltipdown',
		fixed: true,
		hideDelay: 2000,
		offset: {'x': -100, 'y': -90}
	});
	
	var priceTips = $$('.pricetip');	
	if (priceTips.length > 0) {
		priceTips.each(function(element,index) {
			var container = element.getElement('div.pricetipcontent');
			if (container) {				
				var size = container.getSize();
				container.setStyles({
					'display':'none',
					'visibility':'visible'
				});
				var myOffset = new Object();
				myOffset['x'] = 0-(size.x/2);
				myOffset['y'] = 0-(size.y + 15);	
				var html = container.get('html');
				if ($chk(html)) {
					element.store('tip:text', html);
					element.store('tip:offset', myOffset);
				}
			}
		});
	}	
	var myPriceTips = new SDTips('.pricetip', {
		className : 'pricetipdown',
		fixed: true,
		showDelay: 0
	});
	
	
	
	var myCSVTips = new SDTips('.csvtip', {
		className : 'htmltipdown',
		fixed: true,
		hideDelay: 4000,
		offset: {'x': -110, 'y': -125}
	});
	
	var htmlTips = $$('.shoppingcarttip');
	if (htmlTips.length > 0) {
		htmlTips.each(function(element,index) {
			var container = element.getElement('div.shoppingcarttipcontent');
			if (container) {				
				var size = container.getSize();
				//console.log("height: ", size.y, "width: ", size.x);
				container.setStyles({
					'display':'none',
					'visibility':'visible'
				});

				var myOffset = new Object();
				if (Browser.Engine.trident || Browser.Engine.webkit) {
					myOffset['x'] = 0-(size.x/2) + 70;
					myOffset['y'] = 0-(size.y + 65);	
				}
				else {
					myOffset['x'] = 0-(size.x/2) + 70;
					myOffset['y'] = 0-(size.y + 65);	
				}					
				var html = container.get('html');
				if ($chk(html)) {
					element.store('tip:text', html);
					element.store('tip:offset', myOffset);
				}
			}
		});
		var myShoppingCartTips = new SDTips('.shoppingcarttip', {
			className : 'htmltipdown',
			fixed: true
		});
	}
	
	
	var lightboxTips = $$('.lightboxtip');
	if (lightboxTips.length > 0) {
		lightboxTips.each(function(element,index) {
			var container = element.getElement('div.lightboxtipcontent');
			if (container) {				
				container.setStyles({
					'display':'none',
					'visibility':'visible'
				});				
				var html = container.get('html');
				if ($chk(html)) {
					element.store('tip:text', html);
				}
			}
		});
		var myLightboxTips = new SDTips('.lightboxtip', {
			className : 'formtip',
			fixed: true,
			hideDelay: 1000,
			offset: {'x': 25, 'y': -15}, 
			onShow: function() {
				this.tip.setStyle('display', 'block');
				Mediabox.scanPage();
			}
		});
	}
}; // ende setupPointyTips


var loadOptionalTimes = function() {
	var optionals = $$('td.optional');
	var optionalths = $$('td.optionalth');
	var addBtns = $$('a.add_times');
	var optHasValue = false;

	if (optionals.length > 0) {
		optionals.each(function(opt) {
			var optInputs = opt.getElements('input');
			var valueThere = false;
			optInputs.each(function(inp) {
				if ($chk(inp.value)) {
					optHasValue = true;
					valueThere = true;
					opt.getParent('tr').getElement('a.add_times').tween('opacity', 0.3);
				}
			});
			if (valueThere === false) {
				opt.tween('opacity', 0.4);
				optInputs.each(function(inp) {
					inp.set("disabled", true);
				});
			}
		});	
	}
	
	if (addBtns.length > 0) {
		addBtns.each(function(btn) {
			btn.addEvent('click', function(evt) {
				evt.stop();
				btn.getParent('tr').getElements('td.optional').each(function(opt) {
					opt.tween('opacity', 1);
					opt.getElements('input').each(function(inp) {
						inp.set("disabled", false);
					});
					optionalths.each(function(optth) {
						optth.tween('opacity', 1);
					});
					optHasValue = true;
					btn.tween('opacity', 0.3);
					btn.setStyle('cursor', 'default');
				});
			});
		});
	}
	
	if (optHasValue === false) {
		optionalths.each(function(opt) {
			opt.tween('opacity', 0.4);
		});	
	}
};

var getInternetExplorerVersion = function () {
	// Returns the version of Internet Explorer or a -1
	// (indicating the use of another browser).
  	var rv = -1; // Return value assumes failure.
  	if (navigator.appName == 'Microsoft Internet Explorer') {
    	var ua = navigator.userAgent;
    	var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    	if (re.exec(ua) != null)
      		rv = parseFloat( RegExp.$1 );
  		}
  	return rv;
};

var setScrolly = function() {
	var scrl;
	if (document.all) {
		if (document.documentElement.scrollTop) {
			scrl = document.documentElement.scrollTop;
		} else {
			scrl = document.body.scrollTop;	
		}
	} else {
		scrl = pageYOffset;
	}
  if ($("scrolly"))	$("scrolly").value = scrl;
};

var scrollVal = function() {
	var scrl;
	if (document.all) {
		if (document.documentElement.scrollTop) {
			scrl = document.documentElement.scrollTop;
		} else {
			scrl = document.body.scrollTop;	
		}
	} else {
		scrl = pageYOffset;
	}
	return scrl;
};




/*
---
GBFancySelect
...
*/

// Gestylte Selectboxen für Gutscheinbuch.de

var initGBFancySelect = function() {
	var allSelects = $$('.gbFancySelect');
	if (allSelects.length > 0) {
		allSelects.each(function(sel) {
			var mySel = new GBFancySelect(sel);
		});
	}	
};



(function(){

this.GBFancySelect = new Class({

	Implements: Events,

	initialize: function() {
		var params = Array.link(arguments, {options: Object.type, elements: $defined});
		this.textSpan = new Element('span', {'class': 'selectText'});		
		if (params.elements) this.attach(params.elements);		
		//console.log("THIS :", this);
	},
	attach: function(elements){
		var opts = this.options;
		$$(elements).each(function(element){
			this.options = element.options;
			this.selectedIndex = element.options.selectedIndex;
			this.value = this.options[this.selectedIndex].value;
			
			this.textSpan.inject(element, 'before');
			this.textSpan.set('html', this.options[this.selectedIndex].text);
			
			element.addEvent('change', function(evt) {
				this.update();
			}.bind(this));

		},this);		
		return this;
	},
	update: function(){
		//alert("CHANGE :", this);
		this.textSpan.set('html', this.options[this.options.selectedIndex].text);
		this.value = this.options[this.options.selectedIndex].value;
	}
});
})();

var LocationField = new Class({
	initialize: function( field, useLocApi ){
		this.field = field;
    this.useLocApi = useLocApi;
  },
	updateGeoPosition : function ( pos ){
		var geodata = null;
 		if ( pos ){
 			geodata  = JSON.encode( pos.coords );
 		}
		// alert( "data: " + geodata );
 		var url = "/locationAjax" + '?rid=' + randomNumber();	
 		var req = new Request({
 			url : url,
 			data: { geodata : geodata },
	   	//onRequest: function() { alert('Request made. Please wait...'); },
  	 	onComplete: function(resp) { 
   			// alert( resp );
 	  		if ( resp && resp != "" ){
 	  			if ( this.field ){
 	  				this.field.set('value', resp );
 	  			}
 	  		}
 	  	}.bind(this)
   }).send();
 },
 fieldValue : function(){
 	if  ( !this.field ){
		return null;
  }
  var val = this.field.get('value');
  if ( !val ) return null;
  val = val.trim();
	if ( val == '' ){
		return null;
	}
	return val;
 },
 errorGeoPosition : function( err ){
   // alert( err );
   this.updateGeoPosition( null );
 },
 execute : function(){
 	var val = this.fieldValue();
	if ( val ) return;
 	if ( this.useLocApi ){
	 	try {
  		var gl = navigator.geolocation;
   	 	if ( gl ){
 	   		gl.getCurrentPosition(
 	  	 		this.updateGeoPosition.bind(this),
 	  	 		this.errorGeoPosition.bind(this)
 		  	);
	 		}
 		} catch(e){
      // alert( e.message );
     this.updateGeoPosition( null );
    }
 	} else {
     this.updateGeoPosition( null );
 	}
 }
});

var $defined = function(obj){
    return (obj != undefined);
};




