// Detailview2011-Funktionen die von SV/SH/YM genutzt werden (shared)

// Helper-Funktion fuer das Laden der aktuellen Dropdowns nach Auswahl
function getProductAttributes(aSelectBox) {
	var productRef 	= $(aSelectBox).children("option:selected").val();
	var parameters 	= "ProductRef=" + productRef + "&reload=true";
	var boxID	   	= $(aSelectBox).attr('id');
	
	// detailview2011 -> nicht ganz klar was hier passiert
	//add additional parameter if dimension is selected and color has changed
	if(boxID == 'color') {
		if($("#dimension4selection").children().length > 0  || $("#dimension3selection").children().length > 0  ) {
			
			var selectedSize 	= jQuery.trim($("#size").children("option:selected").text());
			parameters = parameters+"&selectedSize="+selectedSize;
		}
	}

	// reloadURL is defined in template:
	// dyn_ProductDetailAttribute
	$.ajax({ 
			url: reloadURL, 
			data: parameters, 
			dataType: "html",
			beforeSend: function(data){
				toggleFormFields(false);
			},
			success: function(data){
				updateProductAttributes(aSelectBox,data);
				// call kal js functions to update delivery date state
				dv.init();
				// detailview2011 -> prüfen was hier passiert
				av.loadArticleVariationSuccess();
				toggleFormFields(true);
			}
	});
}


// Bei Farbwechsel die entsprechenden Elemente aktualisieren (Hauptbild, Farbfleck-Auswahl, Vorschaubilder-Auswahl)
function colorSelectionImageChanger() {	
	if($("#color").length > 0) {
		var picturePosition = 0;
		var colorTitle = jQuery.trim(jQuery("#color option:selected").text());
		
		// alle Farbflecken deselektieren
		$('#colorFlagConsole a').removeClass('active');
		
		// alle Bilder aus der "Mehr Bilder"-Box deselektieren
		$("div#artImgCarouselOuter li a").removeClass("active");
		
		//search in moreproduct and change image
		jQuery("div#artImgCarouselOuter").find('li a').each(function() {
			picturePosition++;
			
			var currentColor  = $(this).children("img").attr("title");
			var imageSource   = $(this).attr("rel");

			if(currentColor == colorTitle) {
		    	var carousel = $('#artImgCarousel').data('jcarousel');
		    	carousel.scroll(picturePosition);
		    	$(this).addClass("active");
				
				var imageFunctionsContainer = $('#artImgCont');
				if(imageFunctionsContainer.length != 0) {
					var productImg = imageFunctionsContainer.find('#artImg');
					imageSource = imageSource.replace(/format[buqs]/,"formata");
					showVariationImage(productImg,imageSource);

					// Bild wieder anzeigen, falls z.B. Video angezeigt wurde
					showMainImageContainer();
					
					// Farbfleck selektieren
					selectColorFlag(currentColor);

					// ??
					av.loadArticleVariationSuccess();
				}
				return false;
			}
		});
	}
}


// Hauptbild und Farbfleck wechseln
function changeSelectedVariation(aColor, aImageSrc) {
	var hasChanged = false;
	var imageFunctionsContainer = $('#artImgCont');
	var productImg = imageFunctionsContainer.find('#artImg');
	
	// Umrandung der Farbflecken entfernen
	$('#colorFlagConsole a').removeClass('active');
	
	// TODO: Beschreibung einfuegen
	jQuery('#colorFlagConsole a').each(function() {
		if($(this).attr('title') == aColor) {
			if(imageFunctionsContainer.length != 0) {
				if(aImageSrc != null && aImageSrc.length >0) {
					aImageSrc = aImageSrc.replace(/format[uqs]/,"formatk");
					showVariationImage(productImg,aImageSrc);
				} else {
					showVariationImage(productImg,$(this).attr('rel'));
				}

				var productCol = $(this).attr('title');

				// Farbfleck zur passenden Farbe umranden
				$(this).addClass('active');
				
				hasChanged = true;
				
				// Schleifen-Durchlaufe (.each) beenden (Performance+)
				return false;
			}
		}
	});
	
	return hasChanged;
}


// Aktuelles Produktbild aendern
function showVariationImage(productImage,imageSrc) {
	// edit product detail variables (global to product detail page)
	if(typeof productDetailVars != 'undefined') {
		productDetailVars.CurrentPicture = imageSrc.substring(imageSrc.lastIndexOf("/") + 1);
	}
	
	// detailview2011: nicht mehr benötigt?
	var zoomImageUrl = "javascript:$.layer.getMessageBox($.urlAppend(productDetailVars.ZoomImageUrl, 'Picture', productDetailVars.CurrentPicture, 'ProductID', productDetailVars.ProductID), null, null, null, true);";
	jQuery('.zoomView').attr('href',zoomImageUrl);
	
	var variationImageZ = new Image();
	$(variationImageZ).load(function() {
		productImage.attr('src', variationImageZ.src);
		updateMagicZoomImage();
	}).error(function () {
		var variationImageA	 = 	new Image();
		$(variationImageA).load(function(){
			productImage.attr('src', variationImageA.src);
			updateMagicZoomImage();
		}).error(function () {
			productImage.attr('src', dv.webroot + '/imagesOnline/sonstiges/platzhalter_formata.gif');
			MagicZoomPlus.stop();
		})
		variationImageA.src = imageSrc.replace(/format[bzk]/, "formata");
	})
	variationImageZ.src = imageSrc.replace(/format[abz]/, "formatk");
}


// MagicZoom-Bild aendern bzw. deaktivieren wenn notwendig
function updateMagicZoomImage() {
	// Container für Hauptbild
	var imageFunctionsContainer = $('#artImgCont');
	// Hauptbild
	var productImg = imageFunctionsContainer.find('#artImg');
	
	// detailview2011: Wird wohl nicht mehr genutzt? (".quickView" scheint es nicht zu geben)
	imageFunctionsContainer.find('.quickView').attr("href", productImg.attr("src").replace(/format[kbqs]/,"formata"));
	
	// Onload of "formatz" set new zoomimage and refresh MagicZoom.
	// If "formatz" doesn't exist try to load "formata".
	var magicImageZ = new Image();	
	$(magicImageZ).load( function() {
		if(!$('#magic').hasClass("MagicZoomPlus")) {
			$('#magic').addClass("MagicZoomPlus");
		}
		$('.MagicZoomPlus').attr("href", magicImageZ.src);
		MagicZoomPlus.refresh();
	}).error( function () {
		MagicZoomPlus.stop();
	});
	magicImageZ.src = productImg.attr("src").replace(/format[abqsk]/,"formatz");
}


// Produktbild aendern
function plSwitchArticleImage(colorFlag, imageFormat) {
	var prodteaserContainer = $(colorFlag).parents('.prodteaserImg');
	var imageFunctionsContainer = $('#artImgCont');
	var zoomImageContainer = $(colorFlag).parents('.zoomimage');
	
	if (prodteaserContainer.length != 0) {
		window.jsUI.lastColorFlag=colorFlag;
		
		var productImg = prodteaserContainer.find('.productImg');
		var imagePathToLoad = $(colorFlag).attr('rel');
    	
		if (imagePathToLoad != productImg.attr('src')) {
			$(productImg).parents('div.prodteaserImg:first').find('a.productLink, a.quickView, .clrBop').unbind('mouseover');
	    	$(productImg).parents('div.prodteaserImg:first').find('a.productLink, a.quickView, .clrBop').unbind('mouseout');
	    	$(productImg).parents('div.prodteaserImg:first').find('a.quickView').attr('style','display:none');
			var ProductListImage = new Image();
			$(ProductListImage).load(function() {
				productImg.attr('src', ProductListImage.src);
				$(productImg).parents('div.prodteaserImg:first').find('a.quickView').attr('style','display:block');
				enableZoomImageHover();
		    }).error(function() {
		    	if(imageFormat!="undefined" && imageFormat!="") {
		    		productImg.attr('src', '/is-bin/intershop.static/WFS/Schwab-SchwabDe-Site/-/de_DE/imagesOnline/sonstiges/platzhalter_format'+imageFormat+'.gif');
		    	} else {
		    		productImg.attr('src', '/is-bin/intershop.static/WFS/Schwab-SchwabDe-Site/-/de_DE/imagesOnline/sonstiges/platzhalter_formatb.gif');
		    	}
		    })
		    ProductListImage.src = imagePathToLoad; 
		
			// Update quickView image
			$(colorFlag).parents('.prodteaserImg').find('.quickView').attr("href", productImg.attr("src").replace(/format[kbqs]/,"formata"));
		
			// Set clrBop-image active
			$(colorFlag).siblings().removeClass('active').end().addClass('active');
			
			// Update product links
			$(colorFlag).parents('.prodteaser').find('.productLink').attr("href", $(colorFlag).attr("href"));
		}
	// detailview2011 - this path is used on the detailview
	} else if (imageFunctionsContainer.length != 0) {
		// Image functions for product detail
		var productImg = imageFunctionsContainer.find('#artImg');
		showVariationImage(productImg,$(colorFlag).attr('rel'));
		
		//Bild wieder anzeigen, falls z.B. Video angezeigt wurde
		showMainImageContainer();
		
		$(colorFlag).siblings().removeClass('active').end().addClass('active');
		
		var productCol = $(colorFlag).attr('title');
		
		// get position of the first image of the given color in the jcarousel
		var picturePosition = getFirstImageByColor(productCol);

    	var carousel = $('#artImgCarousel').data('jcarousel');
    	carousel.scroll(picturePosition);
		
		if(productCol ==null || productCol.length <1) {
			productCol = $(colorFlag).children('img').attr('alt');
		}
		
		//change selected option of colorselection and update ProductAttributes
		changeSelectedDropdownColor(productCol);
	// path used on zoomed productlist
	} else if (zoomImageContainer.length != 0) {
		// Image functions for zoom-layer products
		var productImg = zoomImageContainer.find('.bigimg');
		productImg.attr('src',$(colorFlag).attr('rel'));

		// Update quickView image
		 $(colorFlag).parents('.clrBop').find('.quickView').attr("href", productImg.attr("src").replace(/format[kbqs]/,"formata"));
		// Set clrBop-image active
		// $(colorFlag).siblings().removeClass('active').end().addClass('active');
		
		// Update product links
		// $(colorFlag).parents('.clrBop').find('.productLink').attr("href", $(colorFlag).attr("href"));
		
		// Don't follow clicked link
		return false;
	}
	return false;
}


// Die Position des ersten Vorschaubildes passend zur gewaehlten Farbe berechnen
function getFirstImageByColor(color) {
	var imagePosition = 0;
	
	$("div#artImgCarouselOuter li a").removeClass("active");
	$("div#artImgCarouselOuter").find('li a').each(function() {
		imagePosition++;
		var currentColor  = $(this).children("img").attr("title");
		if($.trim(currentColor) == $.trim(color)) {
			$(this).addClass("active");
			return false;
		}
	});
	
	return imagePosition;
}


// Aktualisiert die Werte in den Dropdowns und waehlt die vorher selektierten Werte erneut aus
function updateProductAttributes(aSelectBox,data) {
	var productData = data;
	var eleID = "";
	if(aSelectBox != null && aSelectBox != undefined) {
		eleID = $(aSelectBox).attr('id');
	}
	
	if(productData) {
		// Felder aus Antwort auslesen
		var dimension3Options = $(productData).children("#dimension3selection").children();
		var dimension4Options = $(productData).children("#dimension4selection").children();
		var warrantyOptions = $(productData).children("#warrantyselection").children();
		var sizeOptions = $(productData).children("#articleSizeSelection").children();
		var colorOptions = $(productData).children("#colorSelection").children();
		
		// Konfiguration
		var productRefRegex = /^(.*?)-(.*?)-(.*?)@(.*)$/;
		var selectedProductRef = "";
		var selectedArticleNo = "";
		var selectedArticleSize = "";
		
		// Aktuelle prodref auslesen
		if(eleID == 'size') {
			selectedProductRef = $("#size").val();
		} else if(eleID == 'color') {
			selectedProductRef = $("#color").val();
		} else if(eleID == 'dimension3selection') {
			selectedProductRef = $("#dimension3selection").val();
		} else if(eleID == 'dimension4selection') {
			selectedProductRef = $("#dimension4selection").val();
		} else if(eleID == 'warrantyselection') {
			selectedProductRef = $("#warrantyselection").val();
		} else {//take currently stored Productref as default
			selectedProductRef = $("#hiddenProductRef").val();
		}
		
		// Aktuelle Artikelnummer auslesen aus ProdRef
		selectedArticleNo = selectedProductRef.match(productRefRegex)[1];
		// Aktuelle Groesse auslesen aus ProdRef
		selectedArticleSize = selectedProductRef.match(productRefRegex)[2];
		
		if(colorOptions.length > 0) {
			//add new option values for dimension4 (falsch? richtig = color ?) and set selected index
			var tColor = $("#color").children("option:selected").html().replace(/\s/g, "");
			var colorSet = false;
			
			$("#color").children().remove();
			$("#color").append(colorOptions);
			
			$.each($("#color").children(), function(index, value) {
				result = value.value.match(productRefRegex);
				if(result[1] == selectedArticleNo) {
					$(value).attr('selected', 'selected');
					colorSet = true;
				}
			});

			// Articles with multiple dimensions have multiple articlenumbers for the same color so the previous check sometime fails because the dropdown contains only one articleno per color
			// Fallback: If possible, set the color to the value that was selected before resetting the color-dropbox
			if (colorSet == false) {
				$("#color").children().each(function(index) {
					if($(this).html().replace(/\s/g, "") == tColor) {
						$(this).attr("selected", "selected");
					}
				})
			}
		}
		
		if(dimension3Options.length > 0) {
			// get previous selected value
			dimension3PreviousValue = $("#dimension3selection option:selected").text();
			
			// add new option values for dimension3 and set selected index
			$("#dimension3selection").children().remove();
			$("#dimension3selection").append(dimension3Options);
			
			$.each($("#dimension3selection").children(), function(index, value) {
				result = value.value.match(productRefRegex);
				if(result[1] == selectedArticleNo) {
					$(value).attr('selected', 'selected');
					
					if(eleID != "") {
						checkForValueChange($("#dimension3selection"), dimension3PreviousValue);
					}
				} else {
					// IE9-Fix: remove selection to prevent wrong reading of current selection later on
					$(value).removeAttr("selected");
				}
			});
			
		}

		if(dimension4Options.length > 0) {
			// get previous selected value
			dimension4PreviousValue = $("#dimension4selection option:selected").text();
			
			// unklar
			var dim4Index = $("#dimension4selection").attr('selectedIndex');
			
			//add new option values for dimension4 and set selected index
			$("#dimension4selection").children().remove();
			$("#dimension4selection").append(dimension4Options);
			
			$.each($("#dimension4selection").children(), function(index, value) {
				result = value.value.match(productRefRegex);
				if(result[1] == selectedArticleNo) {
					$(value).attr('selected', 'selected');
					
					if(eleID != "") {
						checkForValueChange($("#dimension4selection"), dimension4PreviousValue);
					}
				} else {
					// IE9-Fix: remove selection to prevent wrong reading of current selection later on
					$(value).removeAttr("selected");
				}
			});
		}

		if(sizeOptions.length > 0) {
			// get previous selected value
			sizePreviousValue = $("#size option:selected").text();
			
			//add new option values for size and set selected index
			$("#size").children().remove();
			$("#size").append(sizeOptions);
			
			$.each($("#size").children(), function(index, value) {
				if(value.value.match(productRefRegex)[2] == selectedArticleSize) {
					$(value).attr('selected', 'selected');

					if(eleID != "") {
						checkForValueChange($("#size"), sizePreviousValue);
					}
				} else {
					// IE9-Fix: remove selection to prevent wrong reading of current selection later on
					$(value).removeAttr("selected");
				}
			});
		}

		if(warrantyOptions.length > 0){
			// get previous selected value
			warrantyPreviousValue = $("#warrantyselection option:selected").text();
			
			var warrantyIndex = $("#warrantyselection").attr('selectedIndex');
			$("#warrantyselection").children().remove();
			$("#warrantyselection").append(warrantyOptions);

			$.each($("#warrantyselection").children(), function(index, value) {
				result = value.value.match(productRefRegex);
				if(result[1] == selectedArticleNo) {
					$(value).attr('selected', 'selected');
					
					if(eleID != "") {
						checkForValueChange($("#warrantyselection"), warrantyPreviousValue);
					}
				} else {
					// IE9-Fix: remove selection to prevent wrong reading of current selection later on
					$(value).removeAttr("selected");
				}
			});
		}
		
		if(aSelectBox != null && aSelectBox != undefined) {
			jQuery("#hiddenProductRef").val((aSelectBox).children("option:selected").val())
		}

		// Streichpreis aktualisieren
		if($(productData).find("#priceStrike").length){
			if(!$("#priceStrike").length) {
				$("#artPriceConsole .content").prepend('<p id="priceStrike" class="mb10"></p>');
			}
			$("#priceStrike").text($(productData).find("#priceStrike").text());
		} else {
			$("#priceStrike").remove();
		}

		// "Sie sparen"-Anzeige aktualisieren
		if($("#priceSave").length){
			if($(productData).find("#priceSave").length){
				$("#priceSave").text($(productData).find("#priceSave").text());
			} else {
				$("#priceSave").text('');
			}
		}
		
		// Preis aktualisieren
		if($("#priceReg").length){
			if($(productData).find("#priceReg").length){
				$("#priceReg").text($(productData).find("#priceReg").text());
				// VIP-Preis aktualisieren
				if(typeof provision != 'undefined' && provision > 0 && showVipPrice == true) {
					$("#priceVipValue").text(calculateReducedPrice($("#priceReg").text().replace(",", ".").replace(/[^0-9.]/g, "")));
				}
			} else {
				$("#priceReg").text('N/A');
			}
		}

		// Bestellnummer aktualisieren
		//$("p.ordernumber").text($(productData).find("p.ordernumber").text());
		var orderNumber = jQuery("#hiddenProductRef").val().split('-')[0];
		var orderNumberShort = orderNumber.substring(0, 6);
		$("#artNo span").text(orderNumber);
		
		// detailview2011 -> nicht mehr benötigt?
		//update availability
		$("div.stockInfo").children().remove();
		$("div.stockInfo").append($(productData).find("div.stockInfo").children());
		$("div.stockInfo").attr('class',$(productData).find("div.stockInfo").attr('class'));
	}
}


// Aktivieren / Deaktivieren aller Input-Felder, wenn ein Input-Feld gewechselt wurde
// Damit wird verhindert das waehrend eines laufenden Backend-Requests weitere Aenderungen gemacht werden 
function toggleFormFields(state) {
	// Wenn state = true werden alle Felder wieder aktiviert
	if(state) {
		// Alle Formular-Felder wieder aktivieren
		$("#artSelection").find('input, select').each(function() {
			$(this).removeAttr("disabled");
		});
		$("#artPriceConsole form input").removeAttr("disabled");
		
		// Das "Anzahl"-Feld ist manchmal standarmaessig deaktiviert, was hier sichergestellt wird
		$("#artPriceConsole form input.disabledQuantity").attr("disabled", true);
		
		// Ueberpruefen ob noch input-Felder mit dem Wert 0 vorliegen
		// Erst wenn dies nicht der Fall ist, wird der WK-Button wieder aktiviert
		// Ausserdem wird noch abgefragt, ob der aktuelle Artikel nicht liefberbar ist
		// Nur wenn der Artikel lieferbar ist, wird der WK-Button wieder aktiviert
		if(checkArticleSelectionIntegrity() && av.KALProductUnavailable == false) {
			// Bild von wkButton aktiv anzeigen
			var wkButtonImg = $("input.wkButton").attr("src");
			wkButtonImg = wkButtonImg.replace(/BasketGrey.gif/,"Basket.gif");
			$("input.wkButton").attr("src", wkButtonImg);
			
			// return false Click-Event entfernen
			$("input.wkButton").unbind();
			
			// Click-Event hinzufügen
			$("input.wkButton").bind('click', function() {
				basket_add_new();
				return false;
			});
		}
		// Der Hilfsparameter fuer die Verfuegbarkeit eines Artikels wird zur Sicherheit zurueckgesetzt
		// Dies ist notwendig damit der WK-Button in Ausnahmefaellen (KAL fuer Artikel nicht verfuegbar z.B.) nicht deaktiviert wird
		av.KALProductUnavailable = false;
	// Wenn state = false werden alle Felder wieder deaktiviert
	} else {
		// Alle Formularfelder deaktivieren
		$("#artSelection").find('input, select').each(function() {
			$(this).attr("disabled", true);
		});
		$("#artPriceConsole form input").attr("disabled", true);
		
		// Bild von wkButton inaktiv anzeigen
		var wkButtonImg = $("input.wkButton").attr("src");
		wkButtonImg = wkButtonImg.replace(/Basket.gif/,"BasketGrey.gif");
		$("input.wkButton").attr("src", wkButtonImg);
		
		// Click-Event entfernen
		$("input.wkButton").unbind();
		
		// return false Click-Event hinzufuegen, damit das Formular nicht abgeschickt wird
		$("input.wkButton").bind('click', function(event) {
			event.preventDefault();
		});
	}
}


// Warenkorb-Knopf aktivieren oder deaktivieren, abhaenigig von aktueller Verfuegbarkeit des Artikels
function toggleWkButton() {
	// Wenn der aktuelle Artikel nicht lieferbar ist wird der WK-Button deaktiviert
	if(av.KALProductUnavailable == true) {
		// Deaktivieren aller Felder + WK-Button (nicht die schoenste Implementierung, aber so muss keine extra Funktion geschrieben werden)
		toggleFormFields(false);
		// Aktivieren der Felder und WK-Button sollte nicht aktiviert werden, wenn der Artikel nicht lieferbar ist
		toggleFormFields(true);
	}
}


// Ueberpruefen das kein "Bitte waehlen" in den Input-Felder der Dimensionsauswahlen vorhanden ist
function checkArticleSelectionIntegrity() {
	returnValue = true;
	
	$("#artSelection").find('select option:selected').each(function() {
		// Wenn ein <option> mit Wert 0 gefunden wurde
		if($(this).val() == '0') {
			// Verfuegbarkeit aktualisieren
			$('.delivery').html("Unvollst&auml;ndige Auswahl. Bitte pr&uuml;fen Sie Ihre Angaben.");
			$('.deliveryDesc').html('');
			$('.delivery ').removeClass('green');
			$('.delivery ').removeClass('orange');
			$('.delivery ').addClass('red');	// ausverkauft
			
			returnValue = false;
			
			// Dieses return false beendet nur die .each-Schleife
			return false;
		}
	});
	return returnValue;
}


// pruefen ob sich ein Formular-Wert geaendert hat
// Sofern ja "Bitte waehlen" einfuegen
function checkForValueChange(selector, previousValue) {
	if($.trim(selector.find("option:selected").text()) != $.trim(previousValue)) {
		selector.prepend("<option value='0'>Bitte wählen Sie...</option>");
		selector.find("option:first").select();
		selector.addClass("changedSelection");
		return true;
	}
	selector.removeClass("changedSelection");
	return false;
}


// Bild wieder anzeigen, falls z.B. Video angezeigt wurde
function showMainImageContainer() {
	$('#artImgConsoleOuter #artImgCont').css({display: 'none'});
	$('#artImgConsoleOuter #art360Cont').css({display: 'none'});
	$('#artImgConsoleOuter #artVideoCont').css({display: 'none'});
	$('#artImgConsoleOuter div#artImgCont').css({display: 'block'});
	fixIEPositioning();
}


// Farbfleck initial auswaehlen
function selectColorFlag(selectedColor) {
	$('#colorFlagConsole a').each(function() {
		if($.trim($(this).attr('title')) == $.trim(selectedColor)) {
			// Farbfleck selektieren (umranden)
			$(this).addClass('active');
			// .each-Schleife beenden (performance+)
			return false;
		}
	});
}


// Bild in "Mehr Bilder"-Box initial auswaehlen
function selectMorePicturesSelection(selectedColor) {
	// Eventuell vorhandene Auswahlen entfernen
	$("div#artImgCarouselOuter li a").removeClass("active");
	
	$("div#artImgCarouselOuter li a").each(function() {
		if($.trim($(this).find('img').attr('title')) == $.trim(selectedColor)) {
			// Bild ausaehlen
			$(this).addClass('active');
			// .each-Schleife beenden (performance+)
			return false;
		}
	});
}


// change the selected color in the color select field
// updates the form-fields if a new color is selected
function changeSelectedDropdownColor(targetColor) {
	// only update the form fields if a new color is selected
	if($.trim($("#color :selected").text()) != $.trim(targetColor)) {
		$("#color option").each(function() {
			if(jQuery.trim($(this).text()) == jQuery.trim(targetColor)) {
				$(this).attr("selected","selected");
				getProductAttributes($(this).parent());
				// Schleife unterbrechen
				return false;
			}
		});
	}
}


// Refresh variations based on hiddenProductRef. Can be used for KAL refresh 
// if productref is not available.
// @author Daniel Rezek (Daniel.Rezek@dmc.de)
function updateProductVariations() {
	var productRef 	= $("#hiddenProductRef").val();
	var parameters 	= "ProductRef=" + productRef + "&reload=true";
	
	dv.setProductRefID(productRef);
	
	// reloadURL is defined in template:
	// dyn_ProductDetailAttribute
	$.ajax({ 
			url: reloadURL, 
			data: parameters, 
			dataType: "html",
			success: function(data){
				updateProductAttributes(null,data);
				dv.init();
				colorSelectionImageChanger();
				av.loadArticleVariationSuccess();

				// Warenkorb-Knopf aktivieren oder deaktivieren, abhaenigig von aktueller Verfuegbarkeit des Artikels
				toggleWkButton();
			}
	});
}


// Fix fuer Buttons beim Hauptbild wenn IE7 genutzt wird
function fixIEPositioning() {
	if ( $.browser.msie ) {
		if($.browser.version == 7.0) {
			var consoleHeight = $('#artImgConsoleOuter').outerHeight();
			$('#artImgConsoleOuter #buttonConsole').css({top: consoleHeight - 42});
			$('#artImgConsoleOuter .consoleCornerBottom').css({top: consoleHeight - 4});
		}
	}
}


//Default-Hook fuer Glossar-Links ueberschreiben
function enableGlossarLinks() {
	jQuery("a.glossarlink,a.explanationlink").each(function(index) {
		// Get href of link
		var href = jQuery(this).attr("href");
		
		// Extract glossar id
		var contentID = href.substring(href.indexOf("(") + 1, href.indexOf(")"));
		
		jQuery(this).click(function(event) {
			var y = event.pageY;
			var x = event.pageX;
			
			if( $(this).hasClass( 'explanationlink' ) ) {
				openExplanationPopup(contentID, x, y);
			} else if( $(this).hasClass( 'glossarlink' )) {
				OpenGlossar(contentID, x, y);
			}
			
		});
	});
}


// Laden der Videodaten anhand der gesetzten Klassen am Element
function getVideoData(element){
	var result = new Array();
	var classNames = $(element).attr("class").split(" ");
	
	result['articleNo'] = classNames[0];
	
	if(classNames[1]=="Cliplister") {
		result['actionName1'] = "Cliplister WK";
		result['actionName2'] = "Cliplister angesehen";
	} else if(classNames[1]=="SchwabVideo"){
		result['actionName1'] = "Schwab WK";
		result['actionName2'] = "Schwab angesehen";
	} else if(classNames[1]=="YOUMANVideo"){
		result['actionName1'] = "Youman WK";
		result['actionName2'] = "Youman angesehen";
	} else if(classNames[1]=="sheegoVideo"){
		result['actionName1'] = "Sheego WK";
		result['actionName2'] = "Sheego angesehen";
	}
	
	return result;
}


// Cliplister aktivieren (wird von cliplisterBase.java ausgefuehrt)
function enableCliplister() {
	// Cliplister-Button anzeigen, wenn vorhanden
	$('div.Cliplister').css('display','block');
	
	// Button fuer eigene Videos entfernen, wenn Cliplister-Video vorhanden
	// (OriginalVideo ist aktuell nur bei sheego/YM als class definiert)
	// Sonderanforderung aus T+23288 um Cliplister-Videos über eigene zu priorisieren
	$('div.OriginalVideo').remove();
	
	// Sonderanforderung aus T+23288 um Cliplister-Videos über eigene zu priorisieren
	$('#video').remove();
	
	// Click Event für den Video-Play Button
	$('#bt_artVideoCont').click(function() {
		loadCliplisterVideo();
		var videoData = getVideoData(this);
		
		//Tracking auslösen falls der Artikel in den WK gelegt wird
		$('#putToBasket').click(function(){
			try {
				$.gaTracker.trackEvent(
				'Produktvideo',
				videoData['actionName1'],
				videoData['articleNo'],
				undefined,
				false
				);
			} catch(err) {}
		});
		
		// Tracking, dass das Video angeschaut wurde
		try {
			$.gaTracker.trackEvent(
			'Produktvideo',
			videoData['actionName2'],
			videoData['articleNo'],
			undefined,
			false
			);
		} catch(err) {}
	});
	
	var videoData = getVideoData($('#bt_artVideoCont'));
	
	try {
		$.gaTracker.trackEvent(
		'Produktvideo',
		'Cliplister vorhanden', 
		videoData['articleNo'],
		undefined,
		false
		);
	} catch(err) {}
} 
/*else {
	try {
		$.gaTracker.trackEvent(
		'Produktvideo',
		'kein Video vorhanden', 
		videoData['articleNo'],
		undefined,
		false
		);
	} catch(err) {}
}*/


// DOM-Ready abwarten
$(document).ready(function() {
	// enable glossar functionality
	enableGlossarLinks();
	
	
	// trigger for color, size selection in productDetail
	jQuery("#color,#size,#warrantyselection,#dimension3selection,#dimension4selection").change(function () {
		getProductAttributes($(this));
	});


	// Bilder und Farbflecken auswaehlen wenn Farbe geaendert wurde
	jQuery("#color").change(function() {
		colorSelectionImageChanger();
	});
	
	
	// productDetail: moreproducts image changer
	jQuery("div#artImgCarouselOuter").find('li a').each(function() { 
		$(this).click(function() {
			var colorTitle = $(this).children("img").attr("title");
			var imageSource   = $(this).attr("rel");
			
			// Bild wieder anzeigen, falls z.B. Video angezeigt wurde
			showMainImageContainer();
	
			// alle Bilder aus der "Mehr Bilder"-Box deselektieren
			$("div#artImgCarouselOuter li a").removeClass("active");
			// aktuelles Bild selektieren
			$(this).addClass("active");
			
			//search in variatons and change image
			// detailview2011: Was macht das hier genau?
			if(!changeSelectedVariation(colorTitle,imageSource)) {
				//change image
				var imageFunctionsContainer = $('#artImgCont');
				
				if(imageFunctionsContainer.length != 0) {
					// ??????????
					var productImg = imageFunctionsContainer.find('#artImg');
					imageSource = imageSource.replace(/format[uqs]/,"formatz");
					showVariationImage(productImg,imageSource);
				}
			}
			
			//change selected option of colorselection and update ProductAttributes
			changeSelectedDropdownColor(colorTitle);
		});
	});
	
	
	// Product image changer Detail-View
	// Bildwechsel reagiert onClick
	// jQuery('.imageFunctions div a')
	jQuery('#colorFlagConsole a').click(function() {
		plSwitchArticleImage($(this));
		return false;
	}).mouseenter(function () {
		$(this).addClass('on');
	}).mouseleave(function () {
		$(this).removeClass('on');
	});


	// Warenkorb-Knopf
	jQuery("input.wkButton").click(function() {
		basket_add_new();
		return false;
	});
	
	
	// jcarousel-Konfigurationen
    $('#artImgCarousel').jcarousel({
		scroll:4
    });
    
    
    $('#combiCarousel').jcarousel({
		scroll:2
    });
    
    
    $('#recoCarousel').jcarousel({
		scroll:2
    });
	
	// Unschoenen Effekt beim Aufbau des Carousel vermeiden. 
	// Deshalb ist es im Stylesheet ausgeblendet und wird 
	// erst am Ende des Ladevorgangs hier eingeblendet
	$('.recoCarouselOuter').css({visibility: 'visible'});
    $('#artImgCarouselOuter').css({visibility: 'visible'});
    $('#combiCarouselOuter').css({visibility: 'visible'});

    
    // Hover-Effekt bei Tabs von Tab-Box
	$('#artDetailsContainer ul.nav li').mouseover(function() {
		if (!($(this).hasClass('active'))){
			$(this).addClass('mo');	
			$('#artDetailsContainer ul.nav li',this).find('a').addClass('mo');
		}
	}).mouseout(function(){
		$(this).removeClass('mo');	
		$('#artDetailsContainer ul.nav li',this).find('a').removeClass('mo');	
	});

	
	// Div zu entsprechendem Tab anzeigen in Tab-Box
	$('#artDetailsContainer ul.nav li').click(function() {
		if (!($(this).hasClass('active'))){
			$('#artDetailsContainer ul.nav li').removeClass('active');
			$('#artDetailsContainer ul.nav li').find('a').removeClass('active');
			$(this).removeClass('mo');
			$('#artDetailsContainer ul.nav li',this).find('a').removeClass('mo');
			$(this).addClass('active');
			$('#artDetailsContainer ul.nav li',this).find('a').addClass('active');
			var divName = $(this).attr("id");
			divName = divName.slice(4);
			$('#artDetailsContent div.cont').css({display: 'none'});
			$('#artDetailsContent div#' + divName ).css({display: 'block'});		
		}
	});	
	
	
	// Umschalten der angezeigten divs bei Icons in Bild-Box (Bild, 360Grad-Ansicht, Video)
	$('#artImgConsoleOuter #buttonConsole div').click(function() {
		var btName = $(this).attr("id");
		btName = btName.slice(3);
		
		// MagicZoom Expand anzeigen, wenn Bild-Icon geklickt wurde und das Bild bereits angezeigt wird
		if(btName == "artImgCont") {
			currentValue = $('#artImgConsoleOuter #artImgCont').css("display");
			if(currentValue == 'block') {
				MagicThumb.expand('magic');
			}
		}
		
		// Container passend zum angeklickten Symbol anzeigen
		$('#artImgConsoleOuter #artImgCont').css({display: 'none'});
		$('#artImgConsoleOuter #art360Cont').css({display: 'none'});
		$('#artImgConsoleOuter #artVideoCont').css({display: 'none'});
		$('#artImgConsoleOuter div#' + btName ).css({display: 'block'});
		fixIEPositioning();
	});	
	
	
	// MagicZoomPlus-Konfiguration
	MagicZoomPlus.options = {
		'opacity': 30,
		'background-color': '#fff',
		'background-opacity': 70,
		'show-title': 'bottom',
		'zoom-width': '408',
		'zoom-height': '480',
		'zoom-position': 'right',
		'buttons-position': 'top right'
	};
	
	
	// Click-Handler für Details-Tab
	$('#nci_productdetail').click(function() {
		$('#tab_details').click();
	});
	
	
	// Gravur-Tooltip anzeigen
	$('.engravingImg').tooltip({
		showURL: false,
		delay: 0,
		showBody: "-"
	});

	
	// Verfuegbarkeit eines Artikels pruefen (falls KAL nicht vorhanden ist, gibt es einen Link der diese Funktion aufruft)
	$('.nci_getDeliveryInfo').click(function(event) {
		event.preventDefault();
		dv.checkAvailabilityFromMMDB();
		setLandmark('page','&pc=detailview_deliveryinfo');
	});
	

	// Eingabe in Felder fuer Laenge, Breite, und PLZ korrigieren
	$("input[name='UnitLength'],input[name='UnitWidth'],input[name='PostalCode']").bind('keyup keydown blur', function(){
		$(this).val($(this).val().replace(/[^0-9]/,''));
	});
	
	
	// Eingabe in Feld fuer Anzahl korrigieren
	$("input[name='Quantity']").bind('keyup keydown blur', function(){
		$(this).val($(this).val().replace(/[^0-9]/,''));
		if($(this).val() == '') {
			$(this).val('1');
		}
	});
});

