addOnLoad('productLayer.init()');

var productLayer = {
	ProductZoomURL: '/misc/ProductZoom.aspx?ImageSource=',
	SOAPUrl: '/Services/MixMatch.asmx',
	ObjTree: new XML.ObjTree(),
	oldArticleDisplayText: '',

	init: function() {
		// Get text strings
		var strings = new Array();
		strings["productLayer.txtChooseArticle"] = "product_pickcolor";
		strings["productLayer.txtChooseSize"] = "product_picksize";
		strings["productLayer.txtFindYourSize"] = "detailpage_find_size";
		strings["productLayer.txtSelectQuantity"] = "detailpage_selectquantity";
		strings["productLayer.txtArticleNo"] = "curtainshop_productDetails_articleNr";
		strings["productLayer.txtSimilarProductsAvailiability"] = "DetailPage_futureDeliveryDate";
		strings["productLayer.txtSimilarProductsLink"] = "DetailPage_simularProducts";
		strings["productLayer.txtAddToCart"] = "detailpage_putinbasket";
		strings["productLayer.txtAddToCartLoader"] = "DetailPage_AddingToBasket";
		strings["productLayer.txtFavoriteButton"] = "curtainshop_productDetails_favoriteButton";
		strings["productLayer.txtFavoriteButtonUpdate"] = "curtainshop_productDetails_favoriteButton_update";
		strings["productLayer.txtProductImageZoom"] = "zoom_text";
		strings["productLayer.txtReadMore"] = "detailpage_read_more";
		strings["productLayer.txtAvailabilityLabel"] = "product_deliveryinformation";
		strings["productLayer.txtAvailabilityInStock"] = "product_deliverynow";
		strings["productLayer.txtWashingAdvice"] = "detailpage_washing_advice";
		strings["productLayer.txtBrowseInCatalog"] = "detailpage_cataloge_lookup";
		strings["productLayer.txtErrorPickColor"] = "error_pickcolor";
		strings["productLayer.txtErrorPickSize"] = "error_picksize";
		strings["productLayer.txtLayerClose"] = "productlayer_close";
		//+ Get correct text for txtVariantUnavailable
		productLayer.txtVariantUnavailable = "Selected size is out of stock. Please choose another size.";
		productLayer.getTextParameters(strings);
		if (!productLayer.txtFavoriteButtonUpdate) productLayer.txtFavoriteButtonUpdate = "Uppdatera favorit"
	},

	show: function(prodId, categoryId, articleId, variantId, trackingNum, sendMixMaxImage, typeOfClothes, showFavButton) {
		productLayer.destroy();
		// alert('Prod: '+prodId+'\nCat: '+categoryId)
		if (!(prodId && categoryId)) {
			alert("Inget prodId eller categoryId");
			return false;
	  }
		if (showFavButton) productLayer.showFavButton = true;
		if (!document.getElementById('prod-layer_wrapper1')) {
			prodXML = productLayer.getProduct(prodId, categoryId);
			if (!prodXML) {
				alert("Could not fetch XML!");
				return false;
			}
			prodObj = productLayer.ObjTree.parseDOM(prodXML.getElementsByTagName('GetMixMatchProductInfoResult').item(0)).GetMixMatchProductInfoResult;
			productLayer.prodObj = prodObj;
			productLayer.horizontal = (prodObj.ProductOrientation == "Horizontal") ? true : false
			productLayer.trackingNum = (trackingNum) ? trackingNum : null
			productLayer.create();
			productLayer.populate();
			productLayer.display();
			if (articleId && parseInt(articleId) > 0) { productLayer.changeArticle(articleId); }
			if (variantId && parseInt(variantId) > 0) { productLayer.changeVariant(variantId); }
			if (categoryId) { productLayer.categoryId = categoryId; }
		}
		if (sendMixMaxImage) productLayer.sendMixMaxImage = true;
		if (typeOfClothes) productLayer.typeOfClothes = typeOfClothes;
	},

	create: function() {
		var prodObj = productLayer.prodObj;

		// Create layer wrappers
		// var wrap1 = document.createElement('div');
		var wrap2 = document.createElement('div');
		// wrap1.id = "prod-layer_wrapper1";
		wrap2.id = "prod-layer_wrapper2";

		// Create product_container
		var productContainer = document.createElement('div');
		productContainer.className = (productLayer.horizontal) ? 'product_ls_container' : 'product_container';

		// Create close button
		var closeButton = document.createElement('a');
		closeButton.id = 'layer-close';
		closeButton.href = '#';
		if (productLayer.horizontal) closeButton.className = 'horizontal';
		closeButton.onclick = productLayer.destroy;
		productLayer.closeButton = closeButton;

		// -- product_miljobild
		var productMiljobild = document.createElement('div');
		var productImageLargeLink = document.createElement('a');
		var productImageLarge = document.createElement('img');
		var productMiljobildZoom = document.createElement('div');
		var productMiljobildZoomLink = document.createElement('a');
		var productMiljobildZoomLinkImage = document.createElement('img');
		var productMiljobildThumbs = document.createElement('div');
		productMiljobild.id = 'RcnProductImage';
		productMiljobild.className = (productLayer.horizontal) ? 'product_ls_miljobild' : 'product_miljobild';
		productMiljobildZoom.className = (productLayer.horizontal) ? 'product_ls_miljobild_zoom' : 'product_miljobild_zoom';
		productImageLargeLink.id = 'RcnProductImageLink';
		productImageLargeLink.target = '_blank';
		productImageLargeLink.href = '';
		productImageLarge.alt = '';
		productImageLarge.title = '';
		productMiljobildZoomLink.target = '_blank';
		productMiljobildZoomLinkImage.alt = '';
		productMiljobildThumbs.className = (productLayer.horizontal) ? 'product_ls_miljobild_t' : 'product_miljobild_thumbs';

		productImageLargeLink.appendChild(productImageLarge);
		productMiljobild.appendChild(productImageLargeLink);
		productMiljobild.appendChild(productMiljobildZoom);
		productMiljobild.appendChild(document.createTextNode(' '));
		if (!productLayer.horizontal) productMiljobild.appendChild(productMiljobildThumbs);

		productMiljobildZoomLink.appendChild(productMiljobildZoomLinkImage);
		productMiljobildZoom.appendChild(productMiljobildZoomLink);

		productLayer.productMiljobild = productMiljobild;
		productLayer.productImageLargeLink = productImageLargeLink;
		productLayer.productImageLarge = productImageLarge;
		productLayer.productMiljobildZoomLink = productMiljobildZoomLink;
		productLayer.productMiljobildZoomLinkImage = productMiljobildZoomLinkImage;
		productLayer.productMiljobildThumbs = productMiljobildThumbs;
		// -- //product_miljobild

		// -- toFixIssue
		var toFixIssue = document.createElement('div');
		toFixIssue.className = (productLayer.horizontal) ? 'product_ls_content' : 'toFixIssue';

		// -- product_right_content
		var productRightContent = document.createElement('div');
		var productSmallCaps = document.createElement('div');
		var posLeft = document.createElement('span');
		var posRight = document.createElement('span');
		var productTitle = document.createElement('div');
		var productInfo = document.createElement('span');
		var specialCase = document.createElement('span');
		productRightContent.className = (productLayer.horizontal) ? 'product_text' : 'product_right_content';
		productSmallCaps.className = 'product_small_caps';
		posLeft.className = 'posLeft';
		posRight.className = 'posRight';
		productTitle.className = 'product_title';
		specialCase.className = 'specialCase1';
		productSmallCaps.appendChild(posLeft);
		productSmallCaps.appendChild(posRight);
		if (!productLayer.horizontal) productRightContent.appendChild(productSmallCaps);
		productRightContent.appendChild(document.createElement('br'));productRightContent.appendChild(document.createElement('br'));
		productRightContent.appendChild(productTitle);
		productRightContent.appendChild(productInfo);
		productRightContent.appendChild(document.createElement('br'));
		productRightContent.appendChild(specialCase);
		productRightContent.appendChild(document.createElement('br'));

		productLayer.posLeft = posLeft;
		productLayer.posRight = posRight;
		productLayer.productTitle = productTitle;
		productLayer.productInfo = productInfo;
		// -- //product_right_content

		// -- Hidden inputs
		var RcnArticleId = document.createElement('input');
		var RcnVariantId = document.createElement('input');
		RcnArticleId.type = 'hidden';
		RcnVariantId.type = 'hidden';
		RcnArticleId.id = 'RcnArticleId';
		RcnVariantId.id = 'RcnVariantId';
		RcnArticleId.value = 0;
		RcnVariantId.value = 0;
		RcnArticleId.name = 'RcnArticleId';
		RcnVariantId.name = 'RcnVariantId';

		productLayer.RcnArticleId = RcnArticleId;
		productLayer.RcnVariantId = RcnVariantId;
		// -- //Hidden inputs

		if (prodObj.MixMatchArticles.MixMatchArticle.length) {
			// -- product_smallthumb_container
			var productAvailiabilityWrapper = document.createElement('div');
			var productSmallThumbTitleWrapper = document.createElement('div');
			var productSmallThumbTitle = document.createElement('span');
			var RcnArticleDisplay = document.createElement('span');
			var productSmallthumbContainer = document.createElement('div');
			productAvailiabilityWrapper.className = 'Availiability';
			productSmallThumbTitleWrapper.className = 'product_small_caps lessMargin';
			RcnArticleDisplay.id = 'RcnArticleDisplay';
			productSmallthumbContainer.className = 'product_smallthumb_container';
			productSmallThumbTitleWrapper.appendChild(productSmallThumbTitle);
			productSmallThumbTitleWrapper.appendChild(document.createTextNode(' '));
			productSmallThumbTitleWrapper.appendChild(RcnArticleDisplay);
			productAvailiabilityWrapper.appendChild(productSmallThumbTitleWrapper);

			productLayer.productSmallthumbContainer = productSmallthumbContainer;
			productLayer.RcnArticleDisplay = RcnArticleDisplay;
			// -- //product_smallthumb_container

			// -- Article dropdown
			var productArticleDropdown = document.createElement('select');
			var productArticleDropdownFirst = document.createElement('option');
			var productArticleDropdownError = document.createElement('span');
			productArticleDropdown.name = '_ctl7';
			productArticleDropdownFirst.value = '';
			productArticleDropdown.onchange = productLayer.changeArticle;
			productArticleDropdown.appendChild(productArticleDropdownFirst);
			productArticleDropdownError.style.color = 'red';
			productArticleDropdownError.style.display = 'none';
			productArticleDropdownError.appendChild(document.createTextNode('*'));

			productLayer.productArticleDropdown = productArticleDropdown;
			productLayer.productArticleDropdownError = productArticleDropdownError;
			// -- //Article dropdown
		}

		// -- Validation container
		var validationText = document.createElement('div');
		validationText.style.color = 'red';
		validationText.style.clear = 'left';
		productLayer.validationText = validationText;
		// -- //Validation container

		// -- Size dropdown
		if (
			((prodObj.MixMatchArticles.MixMatchArticle.length) && prodObj.MixMatchArticles.MixMatchArticle[0].MixMatchVariants.MixMatchVariant.length)
			|| ((prodObj.MixMatchArticles.MixMatchArticle.MixMatchVariants) && prodObj.MixMatchArticles.MixMatchArticle.MixMatchVariants.MixMatchVariant.length))
		{
			var productSizeDropdown = document.createElement('select');
			var productSizeDropdownFirst = document.createElement('option');
			var productSizeDropdownError = document.createElement('span');
			productSizeDropdown.name = '_ctl8';
			productSizeDropdown.className = 'sizedropdown';
			productSizeDropdownFirst.value = '';
			productSizeDropdown.appendChild(productSizeDropdownFirst);
			productSizeDropdown.onchange = productLayer.changeVariant;
			productSizeDropdownError.style.color = 'red';
			productSizeDropdownError.style.display = 'none';
			productSizeDropdownError.appendChild(document.createTextNode('*'));

			productLayer.productSizeDropdown = productSizeDropdown;
			productLayer.productSizeDropdownError = productSizeDropdownError;
		}
		// -- //Size dropdown

		// -- Find your size link
			if (prodObj.MeasurementsLink && (prodObj.MeasurementsLink != '')) {
			var findYourSizeLinkWrapper = document.createElement('span');
			var findYourSizeLink = document.createElement('a');
			var findYourSizeImg = document.createElement('img');
			findYourSizeLinkWrapper.className = 'prod_label3';
			findYourSizeLink.href = prodObj.MeasurementsLink;
			findYourSizeImg.alt = '';
			findYourSizeImg.src = '//media.redcatsnordic.com/jotex/Images/Generic/RightRaquo.gif';
			findYourSizeImg.style.borderWidth = '0';
			findYourSizeImg.style.marginRight = '5px';
			findYourSizeLink.appendChild(findYourSizeImg);
			findYourSizeLinkWrapper.appendChild(document.createTextNode(' '));
			findYourSizeLinkWrapper.appendChild(findYourSizeLink);

			productLayer.findYourSizeLinkWrapper = findYourSizeLinkWrapper;
		}
		// -- //Find your size link

		// -- Quantity select
		var quantityWrapper = document.createElement('span');
		var quantitySelect = document.createElement('select');
		var quantitySelectFirst = document.createElement('option');
		var RcnAvailability = document.createElement('span');
		var availabilityLabel = document.createElement('span');
		var RcnAvailabilityInStock = document.createElement('span');
		var RcnAvailabilityNoStock = document.createElement('span');
		var RcnAvailabilityDeliveryStatus = document.createElement('span');
		quantityWrapper.className = 'prod_label';
		quantitySelect.style.width = '110px';
		quantitySelectFirst.value = 0;
		RcnAvailability.id = 'RcnAvailability';
		RcnAvailability.className = 'prod_label1';
		RcnAvailability.style.display = 'none';
		RcnAvailabilityInStock.id = 'RcnAvailabilityInStock';
		RcnAvailabilityInStock.style.display = 'none';
		RcnAvailabilityInStock.className = 'product_price_small';
		RcnAvailabilityNoStock.id = 'RcnAvailabilityNoStock';
		RcnAvailabilityNoStock.style.display = 'none';
		RcnAvailabilityNoStock.className = 'product_price_small';
		RcnAvailabilityDeliveryStatus.id = 'RcnAvailabilityDeliveryStatus';
		RcnAvailabilityDeliveryStatus.style.display = 'none';
		quantitySelect.appendChild(quantitySelectFirst);
		quantitySelect.appendChild(document.createTextNode('\n'));
		RcnAvailabilityNoStock.appendChild(RcnAvailabilityDeliveryStatus);
		RcnAvailability.appendChild(availabilityLabel);
		RcnAvailability.appendChild(document.createTextNode(' '));
		RcnAvailability.appendChild(RcnAvailabilityInStock);
		RcnAvailability.appendChild(RcnAvailabilityNoStock);
		quantityWrapper.appendChild(quantitySelect);
		quantityWrapper.appendChild(RcnAvailability);

		productLayer.RcnAvailability = RcnAvailability;
		productLayer.RcnAvailabilityInStock = RcnAvailabilityInStock;
		productLayer.RcnAvailabilityNoStock = RcnAvailabilityNoStock;
		productLayer.RcnAvailabilityDeliveryStatus = RcnAvailabilityDeliveryStatus;

		productLayer.quantitySelect = quantitySelect;

		// Choices
		for (var i = 0; i < 5; i++) {
			var option = document.createElement('option');
			option.value = i+1;
			option.appendChild(document.createTextNode(i+1));
			quantitySelect.appendChild(option);
		}
		// -- //Quantity select

		// -- Article no
		var articleNoWrapper = document.createElement('div');
		var RcnArticleNoText = document.createElement('span');
		var RcnArticleNo = document.createElement('span');
		articleNoWrapper.className = 'product_small_caps';
		RcnArticleNoText.id = 'RcnArticleNoText';
		RcnArticleNoText.className = 'posLeft';
		RcnArticleNoText.style.visibility = 'hidden';
		RcnArticleNo.id = 'RcnArticleNo';
		RcnArticleNo.className = 'posLeft';
		articleNoWrapper.appendChild(RcnArticleNoText);
		articleNoWrapper.appendChild(document.createTextNode(' '));
		articleNoWrapper.appendChild(RcnArticleNo);

		productLayer.RcnArticleNoText = RcnArticleNoText;
		productLayer.RcnArticleNo = RcnArticleNo;
		// -- //Article no

		// -- Price communicator
		var RcnPriceCommunicator = document.createElement('p');
		var PCFromPrice = document.createElement('span');
		var PCPrice = document.createElement('span');
		var PCNicePrice = document.createElement('span');
		var PCAlternatePrice = document.createElement('span');
		var PCDate = document.createElement('span');
		var PCDiscountInfoText = document.createElement('span');
		RcnPriceCommunicator.id = 'RcnPriceCommunicator';
		PCFromPrice.id = 'PCFromPrice';
		PCFromPrice.className = '';
		PCFromPrice.style.display = 'none';
		PCPrice.id = 'PCPrice';
		PCPrice.className = 'price';
		PCPrice.style.display = 'none';
		PCNicePrice.id = 'PCNicePrice';
		PCNicePrice.className = 'price_sale';
		PCNicePrice.style.display = 'none';
		PCAlternatePrice.id = 'PCAlternatePrice';
		PCAlternatePrice.className = '';
		PCAlternatePrice.style.display = 'none';
		PCDate.id = 'PCDate';
		PCDate.className = '';
		PCDate.style.display = 'none';
		PCDiscountInfoText.id = 'PCDiscountInfoText';
		PCDiscountInfoText.className = 'sale';
		PCDiscountInfoText.style.display = 'none';
		RcnPriceCommunicator.appendChild(PCFromPrice);
		RcnPriceCommunicator.appendChild(PCPrice);
		RcnPriceCommunicator.appendChild(PCNicePrice);
		RcnPriceCommunicator.appendChild(PCAlternatePrice);
		RcnPriceCommunicator.appendChild(document.createTextNode(' '));
		RcnPriceCommunicator.appendChild(PCDate);
		RcnPriceCommunicator.appendChild(PCDiscountInfoText);

		productLayer.PCFromPrice = PCFromPrice;
		productLayer.PCPrice = PCPrice;
		productLayer.PCNicePrice = PCNicePrice;
		productLayer.PCAlternatePrice = PCAlternatePrice;
		productLayer.PCDate = PCDate;
		productLayer.PCDiscountInfoText = PCDiscountInfoText;
		// -- //Price communicator

		// -- RcnSimilarProducts
		var RcnSimilarProducts = document.createElement('div');
		var RcnSimilarProductsAvailiability = document.createElement('span');
		var RcnSimilarProductsLink = document.createElement('a');
		var RcnSimilarProductsLinkImg = document.createElement('img');
		var RcnSimilarProductsLinkText = document.createElement('span');
		RcnSimilarProducts.id = 'RcnSimilarProducts';
		RcnSimilarProducts.style.display = 'none';
		RcnSimilarProductsAvailiability.className = 'Availiability';
		RcnSimilarProductsLink.id = 'RcnSimilarProductsLink';
		RcnSimilarProductsLink.href = '#';
		RcnSimilarProductsLinkImg.border = '';
		RcnSimilarProductsLinkImg.alt = '';
		RcnSimilarProductsLinkImg.src = '//media.redcatsnordic.com/jotex/images/generic/link_arrow_right.gif';
		RcnSimilarProductsLink.appendChild(RcnSimilarProductsLinkText);
		RcnSimilarProducts.appendChild(RcnSimilarProductsAvailiability);
		RcnSimilarProducts.appendChild(document.createTextNode(' '));
		RcnSimilarProducts.appendChild(RcnSimilarProductsLinkImg);
		RcnSimilarProducts.appendChild(document.createTextNode(' '));
		RcnSimilarProducts.appendChild(RcnSimilarProductsLink);
		// -- //RcnSimilarProducts

		// -- Add to cart
		var addToCartWrapper = document.createElement('div');
		var addToCartButton = document.createElement('div');
		var addToCartPos = document.createElement('span');
		var addToCartButtonLink = document.createElement('a');
		var addToCartButtonLinkText = document.createElement('span');
		addToCartButton.id = 'AddToCart_Button';
		addToCartPos.className = 'add_to_cart_pos';
		addToCartButtonLink.className = 'button_green';
		addToCartButtonLink.href = '#';
		addToCartButtonLink.appendChild(addToCartButtonLinkText);
		addToCartButtonLink.onclick = productLayer.addToCart;
		addToCartPos.appendChild(addToCartButtonLink);
		addToCartButton.appendChild(addToCartPos);
		addToCartWrapper.appendChild(addToCartButton);
		// Loader:
		var addToCartLoaderWrapper = document.createElement('div');
		var addToCartLoader = document.createElement('div');
		var addToCartLoaderImg = document.createElement('img');
		var addToCartLoaderText = document.createElement('span');
		addToCartLoaderWrapper.style.display = 'none';
		addToCartLoader.className = 'asyncProgressAddToBasket';
		addToCartLoaderImg.alt = '';
		addToCartLoaderImg.src = '//media.redcatsnordic.com/jotex/images/generic/cart_loader.gif';
		addToCartLoader.appendChild(addToCartLoaderImg);
		addToCartLoader.appendChild(document.createTextNode(' '));
		addToCartLoader.appendChild(addToCartLoaderText);
		addToCartLoaderWrapper.appendChild(addToCartLoader);

		productLayer.addToCartWrapper = addToCartWrapper;
		productLayer.addToCartLoaderWrapper = addToCartLoaderWrapper;
		// -- //Add to cart

		// -- Favorite button
		if (productLayer.showFavButton) {
			var favoriteButtonWrapper = document.createElement('div');
			var favoriteButton = document.createElement('div');
			var favoriteButtonPos = document.createElement('span');
			var favoriteButtonLink = document.createElement('a');
			var favoriteButtonLinkText = document.createElement('span');
			favoriteButton.id = 'Favorite_Button';
			favoriteButtonPos.className = 'favorite_button_pos';
			favoriteButtonLink.className = 'button';
			favoriteButtonLink.href = '#';
			favoriteButtonLink.appendChild(favoriteButtonLinkText);
			favoriteButtonLink.onclick = productLayer.saveFavorite;
			favoriteButtonPos.appendChild(favoriteButtonLink);
			favoriteButton.appendChild(favoriteButtonPos);
			favoriteButtonWrapper.appendChild(favoriteButton);
		}
		// -- //Favorite button

		// Append contents to toFixIssue
		toFixIssue.appendChild(productRightContent);
		if (productLayer.horizontal) toFixIssue.appendChild(productSmallCaps);
		toFixIssue.appendChild(RcnArticleId);
		toFixIssue.appendChild(RcnVariantId);
		toFixIssue.appendChild(document.createElement('br'));toFixIssue.appendChild(document.createElement('br'));
		if (productAvailiabilityWrapper) { toFixIssue.appendChild(productAvailiabilityWrapper); }
		if (productAvailiabilityWrapper) { toFixIssue.appendChild(productSmallthumbContainer); }
		toFixIssue.appendChild(document.createElement('br'));
		toFixIssue.appendChild(validationText);
		if (productArticleDropdown) { toFixIssue.appendChild(productArticleDropdown); }
		if (productArticleDropdownError) { toFixIssue.appendChild(productArticleDropdownError); }
		toFixIssue.appendChild(document.createElement('br'));
		if (productSizeDropdown) { toFixIssue.appendChild(productSizeDropdown); }
		if (productSizeDropdownError) { toFixIssue.appendChild(productSizeDropdownError); }
		if (findYourSizeLinkWrapper) { toFixIssue.appendChild(findYourSizeLinkWrapper); }
		toFixIssue.appendChild(document.createElement('br'));
		toFixIssue.appendChild(quantityWrapper);
		toFixIssue.appendChild(articleNoWrapper);
		toFixIssue.appendChild(document.createElement('br'));
		toFixIssue.appendChild(RcnPriceCommunicator);
		toFixIssue.appendChild(RcnSimilarProducts);
		toFixIssue.appendChild(document.createElement('br'));
		toFixIssue.appendChild(addToCartWrapper);
		toFixIssue.appendChild(addToCartLoaderWrapper);
		if (productLayer.showFavButton) toFixIssue.appendChild(favoriteButton);
		// -- //toFixIssue

		// Append contents to product_container
		productContainer.appendChild(productMiljobild);
		if (productLayer.horizontal) productContainer.appendChild(productMiljobildThumbs);
		productContainer.appendChild(toFixIssue);
		toFixIssue.appendChild(closeButton);

		// Set general text strings
		closeButton.appendChild(document.createTextNode('x '+productLayer.txtLayerClose));
		if (productAvailiabilityWrapper) { productSmallThumbTitle.appendChild(document.createTextNode(productLayer.txtChooseArticle)); }
		if (productArticleDropdownFirst) { productArticleDropdownFirst.appendChild(document.createTextNode(productLayer.txtChooseArticle)); }
		if (productSizeDropdownFirst) { productSizeDropdownFirst.appendChild(document.createTextNode(productLayer.txtChooseSize)); }
		if (findYourSizeLink) { findYourSizeLink.appendChild(document.createTextNode(productLayer.txtFindYourSize)); }
		quantitySelectFirst.appendChild(document.createTextNode(productLayer.txtSelectQuantity));
		RcnArticleNoText.appendChild(document.createTextNode(productLayer.txtArticleNo));
		RcnSimilarProductsAvailiability.appendChild(document.createTextNode(productLayer.txtSimilarProductsAvailiability));
		RcnSimilarProductsLinkText.appendChild(document.createTextNode(productLayer.txtSimilarProductsLink));
		addToCartButtonLinkText.appendChild(document.createTextNode(productLayer.txtAddToCart));
		addToCartLoaderText.appendChild(document.createTextNode(productLayer.txtAddToCartLoader));
		if (productLayer.trackingNum && productLayer.showFavButton) {
			favoriteButtonLinkText.appendChild(document.createTextNode(productLayer.txtFavoriteButtonUpdate));
		} else if (productLayer.showFavButton) {
			favoriteButtonLinkText.appendChild(document.createTextNode(productLayer.txtFavoriteButton));
		}
		availabilityLabel.appendChild(document.createTextNode(productLayer.txtAvailabilityLabel));

		productImageLarge.alt = productLayer.txtProductImageZoom;
		productImageLarge.title = productLayer.txtProductImageZoom;

		// Handle product labels
		if (prodObj.MixMatchProductLabels && prodObj.MixMatchProductLabels.MixMatchProductLabel) {
			var prodObj = productLayer.prodObj;
			if (prodObj.MixMatchProductLabels.MixMatchProductLabel.length) {
				for (i in prodObj.MixMatchProductLabels.MixMatchProductLabel) {
					productLayer.addLabel(prodObj.MixMatchProductLabels.MixMatchProductLabel[i]);
				}
			} else {
				productLayer.addLabel(prodObj.MixMatchProductLabels.MixMatchProductLabel);
			}
		}

		// Handle alternate images
		if (prodObj.AlternativeImagesDetail.string) {
			if (prodObj.AlternativeImagesDetail.string.sort) {
				productLayer.firstImage = {
					detail: prodObj.AlternativeImagesDetail.string[0],
					normal: prodObj.AlternativeImagesNormal.string[0],
					large: prodObj.AlternativeImagesLarge.string[0]
				}

				for (i in prodObj.AlternativeImagesDetail.string) {
					productLayer.addAlternateImage(prodObj.AlternativeImagesDetail.string[i], prodObj.AlternativeImagesNormal.string[i], prodObj.AlternativeImagesLarge.string[i]);
				}
			} else {
				productLayer.firstImage = {
					detail: prodObj.AlternativeImagesDetail.string,
					normal: prodObj.AlternativeImagesNormal.string,
					large: prodObj.AlternativeImagesLarge.string
				}

				productLayer.addAlternateImage(prodObj.AlternativeImagesDetail.string, prodObj.AlternativeImagesNormal.string, prodObj.AlternativeImagesLarge.string);
			}
		}

		// Append product_container to wrapper
		wrap2.appendChild(productContainer);
		// Append layer wrappers
		// productLayer.wrap1 = wrap1;
		productLayer.wrap2 = wrap2;
		productLayer.specialCase = specialCase;
		if (productSmallthumbContainer) { productLayer.productSmallthumbContainer = productSmallthumbContainer; }
	},

	populate: function() {
		// Reset
		while (productLayer.productTitle.lastChild) { productLayer.productTitle.removeChild(productLayer.productTitle.lastChild); }
		while (productLayer.posLeft.lastChild) { productLayer.posLeft.removeChild(productLayer.posLeft.lastChild); }
		while (productLayer.posRight.lastChild) { productLayer.posRight.removeChild(productLayer.posRight.lastChild); }
		while (productLayer.productInfo.lastChild) { productLayer.productInfo.removeChild(productLayer.productInfo.lastChild); }
		if (productLayer.productSmallthumbContainer) {
			while (productLayer.productSmallthumbContainer.lastChild) { productLayer.productSmallthumbContainer.removeChild(productLayer.productSmallthumbContainer.lastChild); }
		}
		if (productLayer.RcnArticleDisplay) {
			while (productLayer.RcnArticleDisplay.lastChild) { productLayer.RcnArticleDisplay.removeChild(productLayer.RcnArticleDisplay.lastChild); }
		}
		productLayer.oldArticleDisplayText = '';
		if (productLayer.productArticleDropdown) {
			while (productLayer.productArticleDropdown.lastChild.value != "") { productLayer.productArticleDropdown.removeChild(productLayer.productArticleDropdown.lastChild); }
		}
		if (productLayer.productSizeDropdown) {
			while (productLayer.productSizeDropdown.lastChild.value != "") { productLayer.productSizeDropdown.removeChild(productLayer.productSizeDropdown.lastChild); }
		}
		while (productLayer.specialCase.lastChild) { productLayer.specialCase.removeChild(productLayer.specialCase.lastChild); }

		prodObj = productLayer.prodObj;
		// Basic product info
		productLayer.productTitle.appendChild(document.createTextNode(prodObj.DisplayName));
		if (prodObj.BoutiqueDescription) { productLayer.posLeft.appendChild(document.createTextNode(prodObj.BoutiqueDescription)); }
		if (prodObj.ProductBrandDescription) { productLayer.posRight.appendChild(document.createTextNode(prodObj.ProductBrandDescription)); }

		// Shorten product info and add "Read more" link if necessary
		var descClean = prodObj.Description.replace(/^([\s]+)?/, "");
		var descClean = descClean.replace(/([\s]+)?$/, "");
		var descAry = descClean.split(/\s+/);
		if (descAry.length > 23) {
			var descShort = "";
			var descBread = " ";
			for (var i = 0; i < descAry.length; i++) {
				if (i < 23) {
					descShort += descAry[i];
					if (i < 23-1) { descShort += " "; }
				} else {
					descBread += descAry[i];
					if (i < (descAry.length-1)) { descBread += " "; }
				}
			}
			var shortenSpan = document.createElement('span');
			var breadSpan = document.createElement('span');
			shortenSpan.className = 'shorten';
			shortenSpan.style.display = 'inline';
			shortenSpan.appendChild(document.createTextNode('...'));
			breadSpan.className = 'shorten';
			breadSpan.style.display = 'none';
			breadSpan.appendChild(document.createTextNode(descBread));
			productLayer.productInfo.appendChild(document.createTextNode(descShort));
			productLayer.productInfo.appendChild(shortenSpan);
			productLayer.productInfo.appendChild(breadSpan);
			productLayer.productInfoShorten = shortenSpan;
			productLayer.productInfoBread = breadSpan;
			productLayer.addSpecialCase('#', productLayer.txtReadMore, function() {
				if (productLayer.productInfoShorten.style.display == 'inline') {
					productLayer.productInfoShorten.style.display = 'none';
					productLayer.productInfoBread.style.display = 'inline';
				} else {
					productLayer.productInfoShorten.style.display = 'inline';
					productLayer.productInfoBread.style.display = 'none';
				}
				return false;
			});
		} else {
			productLayer.productInfo.appendChild(document.createTextNode(descClean));
		}

		// Reset hidden fields
		productLayer.RcnArticleId.value = 0;
		productLayer.RcnVariantId.value = 0;
		productLayer.currentColor = null;
		productLayer.currentSize = null;
		productLayer.currentThumbnail = null;

		// Set product image to the first alternate image
		if (productLayer.firstImage) { productLayer.updateProductImage(productLayer.firstImage.normal); }

		productLayer.productMiljobildZoomLinkImage.src = '//media.redcatsnordic.com/jotex/images/generic/icon_zoom.gif';

		// Get information about and handle specialCases
		if (prodObj.WashingAdviceLink && (prodObj.WashingAdviceLink != "")) { productLayer.addSpecialCase(prodObj.WashingAdviceLink, productLayer.txtWashingAdvice); }
		if (prodObj.BrowseInCatalogLink && (prodObj.BrowseInCatalogLink != "")) { productLayer.addSpecialCase(prodObj.BrowseInCatalogLink, productLayer.txtBrowseInCatalog); }

		// Articles:
		if (prodObj.MixMatchArticles.MixMatchArticle.length) {
			for (i in prodObj.MixMatchArticles.MixMatchArticle) { productLayer.addArticle(prodObj.MixMatchArticles.MixMatchArticle[i]); }
		} else {
			productLayer.changeArticle(prodObj.MixMatchArticles.MixMatchArticle.ArticleNo);
		}

		// Set initial price and reset the booking no
		productLayer.resetPrice();
		productLayer.resetBookingNo();
		productLayer.resetCloseButton();
	},

	display: function() {
		extraContainer = document.getElementById("extra_container");
		// getElementsByClassName(extraContainer, 'div', 'main_no_ads')[0].appendChild(productLayer.wrap1);
		getElementsByClassName(extraContainer, 'div', 'main_no_ads')[0].appendChild(productLayer.wrap2);
		productLayer.resetCloseButton();
	},

	addArticle: function(articleObj) {
		var container = productLayer.productSmallthumbContainer || false;

		// Thumbnails
		var wrapper = document.createElement('span');
		var link = document.createElement('a');
		var img = document.createElement('img');
		link.href = '#';
		img.border = '0';
		img.title = articleObj.Color;
		img.src = articleObj.ImageThumbFullPath;

		img.articleNo = articleObj.ArticleNo;

		img.onclick = productLayer.changeArticle;
		img.onmouseover = function() {
			if (productLayer.RcnArticleDisplay.firstChild) { productLayer.oldArticleDisplayText = productLayer.RcnArticleDisplay.firstChild.nodeValue; }
			while (productLayer.RcnArticleDisplay.lastChild) { productLayer.RcnArticleDisplay.removeChild(productLayer.RcnArticleDisplay.lastChild); }
			productLayer.RcnArticleDisplay.appendChild(document.createTextNode(this.title));
		}
		img.onmouseout = function() {
			while (productLayer.RcnArticleDisplay.lastChild) { productLayer.RcnArticleDisplay.removeChild(productLayer.RcnArticleDisplay.lastChild); }
			productLayer.RcnArticleDisplay.appendChild(document.createTextNode(productLayer.oldArticleDisplayText));
		}
		img.onload = productLayer.resetCloseButton;

		link.appendChild(img);
		wrapper.appendChild(link);
		container.appendChild(wrapper);

		// Dropdown
		var dropdown = productLayer.productArticleDropdown || false;
		var option = document.createElement('option');
		option.value = articleObj.ArticleNo;
		option.appendChild(document.createTextNode(articleObj.Color));

		if (dropdown) { dropdown.appendChild(option); }
	},

	addSpecialCase: function(url, text, onclickAction) {
		specialCase = productLayer.specialCase;
		link = document.createElement('a');
		img = document.createElement('img');
		if (onclickAction) { link.onclick = onclickAction; }
		link.href = url;
		img.alt = '';
		img.src = '//media.redcatsnordic.com/jotex/Images/Generic/RightRaquo.gif';
		img.style.borderWidth = '0';
		img.style.marginRight = '5px';
		link.appendChild(img);
		link.appendChild(document.createTextNode(text));
		specialCase.appendChild(link);
		specialCase.appendChild(document.createTextNode(' '));
	},

	addSmallThumb: function() {
		var productSmallthumbContainer = productLayer.productSmallthumbContainer;
		var link = document.createElement('a');
		var img = document.createElement('img');
	},

	addLabel: function(labelObj) {
		var productMiljobild = productLayer.productMiljobild;
		if (!labelObj.ImageText) { return false; }

		//+ Finish label handling
		var className;
		switch(labelObj.ImagePlacement) {
			default:
				className = 'label_detailpage_pos2';
		}

		var image = document.createElement('img');
		if (className) { image.className = className; }
		image.src = labelObj.ImagePath;
		image.alt = labelObj.ImageText;
		image.title = labelObj.ImageText;

		productMiljobild.appendChild(image);
	},

	addAlternateImage: function(detailImage, normalImage, largeImage) {
		var productMiljobildThumbs = productLayer.productMiljobildThumbs;
		var productImageLarge = productLayer.productImageLarge;
		var productImageLargeLink = productLayer.productImageLargeLink;
		var productMiljobildZoomLink = productLayer.productMiljobildZoomLink;

		var link = document.createElement('a');
		var image = document.createElement('img');
		link.href = '#';
		image.src = detailImage;
		image.alt = '';

		link.onclick = function() {
			productLayer.productImageLarge.src = normalImage;
			productLayer.productImageLargeLink.href = productLayer.ProductZoomURL+productLayer.basename(largeImage);
			productLayer.productMiljobildZoomLink.href = productLayer.ProductZoomURL+productLayer.basename(largeImage);
			return(false);
		}

		link.appendChild(image);
		productMiljobildThumbs.appendChild(link);
		productMiljobildThumbs.appendChild(document.createTextNode(' '));
	},

	changeArticle: function(articleNo) {
		var isLink;
		//+ Keep the current size/variant selected when changing article?
		if (this.articleNo) { //An article thumbnail was clicked
			isLink = true;
			articleNo = this.articleNo;
		}
		if (!((typeof(articleNo) == 'string') || (typeof(articleNo) == 'number'))) { articleNo = productLayer.productArticleDropdown.value; } //Article number was passed as an argument
		if (articleNo == "") {
			productLayer.RcnArticleId.value = 0;
			productLayer.RcnVariantId.value = 0;
			productLayer.currentColor = null;
			productLayer.currentSize = null;
			productLayer.currentThumbnail = null;
			productLayer.currentMixMaxImage = null;
			productLayer.populate();
		}

		var prodObj = productLayer.prodObj;
		var articleObj = false;

		if (prodObj.MixMatchArticles.MixMatchArticle.length) {
			for (i in prodObj.MixMatchArticles.MixMatchArticle) {
				if (prodObj.MixMatchArticles.MixMatchArticle[i].ArticleNo == articleNo) {
					articleObj = prodObj.MixMatchArticles.MixMatchArticle[i];
				}
			}
		} else {
			articleObj = prodObj.MixMatchArticles.MixMatchArticle;
		}

		if (!articleObj) { return false; }

		// Update the product image
		if (prodObj.MixMatchArticles.MixMatchArticle.length) { productLayer.updateProductImage(articleObj.ImageFullPath); }
		// Set article color name
		if (productLayer.RcnArticleDisplay) {
			while (productLayer.RcnArticleDisplay.lastChild) { productLayer.RcnArticleDisplay.removeChild(productLayer.RcnArticleDisplay.lastChild); }
			productLayer.RcnArticleDisplay.appendChild(document.createTextNode(articleObj.Color));
		}
		productLayer.oldArticleDisplayText = articleObj.Color;
		// Set article dropdown selection
		var articleDropdown = productLayer.productArticleDropdown || false;
		if (articleDropdown) {
			for (j in articleDropdown.childNodes) {
				node = articleDropdown.childNodes[j];
				if (node && node.nodeName && node.nodeName.match(/^option$/i)) {
					if (node.value == articleNo) {
						node.selected = true;
					} else if(node.selected) {
						node.selected = false;
					}
				}
			}
		}

		// Reset price
		productLayer.resetPrice();

		// Reset Booking number
		productLayer.resetBookingNo();

		// Update hidden inputs
		productLayer.RcnArticleId.value = articleObj.ArticleNo;
		productLayer.currentColor = articleObj.Color;
		productLayer.currentThumbnail = articleObj.ImageThumbFullPath;

		// Update sizes
		var sizeDropdown = productLayer.productSizeDropdown || false;
		var findYourSizeLinkWrapper = productLayer.findYourSizeLinkWrapper || false;
		if (sizeDropdown) { sizeDropdown.style.display = 'inline'; }
		if (findYourSizeLinkWrapper) { findYourSizeLinkWrapper.style.display = 'inline'; }

		if (sizeDropdown) {
			while (sizeDropdown.lastChild.value != "") {
				sizeDropdown.removeChild(sizeDropdown.lastChild);
			}

			if (articleObj.MixMatchVariants.MixMatchVariant.length) {
				for (j in articleObj.MixMatchVariants.MixMatchVariant) {
					var variant = articleObj.MixMatchVariants.MixMatchVariant[j];
					if (variant.Availability != "3") {
						var option = document.createElement('option');
						option.value = variant.VariantId;
						option.appendChild(document.createTextNode(variant.Size));
						sizeDropdown.appendChild(option);
					}
				}
			}
		} else {
			variant = articleObj.MixMatchVariants.MixMatchVariant;
			productLayer.changeVariant(variant.VariantId);
		}

		// Set MixMaxImage
		if (articleObj.ImageMixMaxNormal) {
			productLayer.currentMixMaxImage = articleObj.ImageMixMaxNormal;
		} else {
			productLayer.currentMixMaxImage = null;
		}

		if (isLink) { return false; }

		productLayer.resetCloseButton();
	},

	changeVariant: function(variantId) {
		var sizeDropdown = productLayer.productSizeDropdown || false;
		if (!((typeof(variantId) == 'string') || (typeof(variantId) == 'number'))) {
			var variantId = productLayer.productSizeDropdown.value;
		} else {
			if (sizeDropdown) {
				var options = sizeDropdown.getElementsByTagName('option');
				for (i in options) {
					if (options[i].value == variantId) {
						options[i].selected = true;
					} else {
						options[i].selected = false;
					}
				}
			} else {
				productLayer.currentSize = variantId;
			}
		}

		productLayer.resetPrice();
		productLayer.resetBookingNo();

		if (variantId == "") {
			productLayer.RcnVariantId.value = 0;
			productLayer.currentSize = null;
			return false;
		}

		var articleObj = false;

		if (productLayer.prodObj.MixMatchArticles.MixMatchArticle.length) {
			for (i in productLayer.prodObj.MixMatchArticles.MixMatchArticle) {
				productLayer.changeVariant_check(productLayer.prodObj.MixMatchArticles.MixMatchArticle[i], variantId);
			}
		} else {
			productLayer.changeVariant_check(productLayer.prodObj.MixMatchArticles.MixMatchArticle, variantId);
		}

		productLayer.resetCloseButton();
	},

	changeVariant_check: function(articleObj, variantId) {
		if (articleObj.MixMatchVariants.MixMatchVariant.length) {
			for (j in articleObj.MixMatchVariants.MixMatchVariant) {
				variant = articleObj.MixMatchVariants.MixMatchVariant[j];
				if (variant.VariantId == variantId) {
					if (parseInt(variant.Availability) == 3) {
						alert(productLayer.txtVariantUnavailable);
						return false;
					}
					productLayer.updateBookingNo(variant);
					productLayer.updatePrice(variant);
					productLayer.RcnVariantId.value = variant.VariantId;
				}
			}
		} else {
			variant = articleObj.MixMatchVariants.MixMatchVariant;
			if (variant.VariantId == variantId) {
				if (parseInt(variant.Availability) == 3) {
					alert(productLayer.txtVariantUnavailable);
					return false;
				}
				productLayer.updateBookingNo(variant);
				productLayer.updatePrice(variant);
				productLayer.RcnVariantId.value = variant.VariantId;
				productLayer.currentSize = variant.Size;
			}
		}
	},

	updateProductImage: function(imageFullPath) {
		productLayer.productImageLarge.src = imageFullPath;
		productLayer.productImageLargeLink.href = productLayer.ProductZoomURL+(productLayer.basename(imageFullPath));
		productLayer.productMiljobildZoomLink.href = productLayer.ProductZoomURL+(productLayer.basename(imageFullPath));
	},

	resetBookingNo: function() {
		var RcnArticleNoText = productLayer.RcnArticleNoText;
		var RcnArticleNo = productLayer.RcnArticleNo;

		RcnArticleNoText.style.visibility = 'hidden';
		while (RcnArticleNo.lastChild) { RcnArticleNo.removeChild(RcnArticleNo.lastChild); 2}
	},

	updateBookingNo: function(variantObj) {
		var RcnArticleNoText = productLayer.RcnArticleNoText;
		var RcnArticleNo = productLayer.RcnArticleNo;

		RcnArticleNoText.style.visibility = 'visible';
		RcnArticleNo.appendChild(document.createTextNode(variantObj.BookingNo));
	},

	resetPrice: function() {
		productLayer.updatePrice(productLayer.prodObj);
	},

	resetQuantity: function() {
		var quantitySelect = productLayer.quantitySelect;
		var options = quantitySelect.getElementsByTagName('option');
		for (i in options) {
			if (i == 0) {
				options[i].selected = true;
			} else {
				options[i].selected == false;
			}
		}
	},

	updatePrice: function(obj) {
		productLayer.clearPrice();
		var PCFromPrice = productLayer.PCFromPrice; var PCPrice = productLayer.PCPrice; var PCNicePrice = productLayer.PCNicePrice; var PCAlternatePrice = productLayer.PCAlternatePrice; var PCDate = productLayer.PCDate; var PCDiscountInfoText = productLayer.PCDiscountInfoText;
		var RcnAvailability = productLayer.RcnAvailability; var RcnAvailabilityInStock = productLayer.RcnAvailabilityInStock; var RcnAvailabilityNoStock = productLayer.RcnAvailabilityNoStock; var RcnAvailabilityDeliveryStatus = productLayer.RcnAvailabilityDeliveryStatus;

		if (obj.IsFromPrice == "true") {
			PCFromPrice.appendChild(document.createTextNode(productLayer.stripJunk(obj.PricePrefix)+' '));
			PCFromPrice.style.display = 'inline';
			productLayer.pricePrefix = productLayer.stripJunk(obj.PricePrefix);
		} else {
			productLayer.pricePrefix = '';
		}
		if (obj.ShowNicePrice == "true") {
			PCNicePrice.appendChild(document.createTextNode(productLayer.stripJunk(obj.CurrentPriceDisplay)+' ')); PCNicePrice.style.display = 'inline';
			if (obj.ShowAlternatePrice == "true") {
				PCAlternatePrice.appendChild(document.createTextNode('('+productLayer.stripJunk(obj.AlternatePriceDisplay)+')')); PCAlternatePrice.style.display = 'inline';
			}
		} else {
			PCPrice.appendChild(document.createTextNode(productLayer.stripJunk(obj.CurrentPriceDisplay))); PCPrice.style.display = 'inline';
		}

		productLayer.currentPrice = productLayer.stripJunk(obj.CurrentPriceDisplay);

		if (obj.ShowDate == "true") {
			PCDate.appendChild(document.createTextNode(productLayer.stripJunk(obj.DateDisplay))); PCDate.style.display = 'inline';
		}
		if ((obj.DiscountPercentageDisplay && (obj.DiscountPercentageDisplay != "")) || (obj.DiscountInfoText && (obj.DiscountInfoText != ""))) {
			if (obj.DiscountInfoText && (obj.DiscountInfoText != "")) {
				PCDiscountInfoText.appendChild(document.createTextNode(obj.DiscountInfoText));
			} else if (obj.DiscountPercentageDisplay && (obj.DiscountPercentageDisplay != "")) {
				PCDiscountInfoText.appendChild(document.createTextNode(obj.DiscountPercentageDisplay));
			}
			PCDiscountInfoText.appendChild(document.createTextNode(' '));
			PCDiscountInfoText.style.display = 'inline';
		} else {
			while (PCDiscountInfoText.lastChild) { PCDiscountInfoText.removeChild(PCDiscountInfoText.lastChild); }
			PCDiscountInfoText.style.display = 'none';
		}

		// Delivery status
		if (obj.Availability) {
			if (obj.Availability == "1") {
				RcnAvailability.style.display = 'inline';
				RcnAvailabilityInStock.appendChild(document.createTextNode(productLayer.txtAvailabilityInStock));
				RcnAvailabilityInStock.style.display = 'inline';
			} else if (obj.Availability == "2") {
				RcnAvailability.style.display = 'inline';
				RcnAvailabilityDeliveryStatus.appendChild(document.createTextNode(obj.DeliveryStatus));
				RcnAvailabilityDeliveryStatus.style.display = 'inline';
				RcnAvailabilityNoStock.style.display = 'inline';
			}
		}
		productLayer.resetCloseButton();
	},

	addToCart: function() {
		var quantitySelect = productLayer.quantitySelect;
		var addToCartWrapper = productLayer.addToCartWrapper;
		var addToCartLoaderWrapper = productLayer.addToCartLoaderWrapper;
		var RcnArticleId = productLayer.RcnArticleId;
		var RcnVariantId = productLayer.RcnVariantId;
		var validationText = productLayer.validationText;
		var productArticleDropdownError = productLayer.productArticleDropdownError || false;
		var productSizeDropdownError = productLayer.productSizeDropdownError || false;

		var isOk = productLayer.validate();
		productLayer.resetCloseButton();

		if ((quantitySelect.value == 0) || (quantitySelect == "0")) {
			quantity = 1;
		} else {
			quantity = quantitySelect.value;
		}

		if (isOk) {
			// Show loader:
			addToCartWrapper.style.display = 'none';
			addToCartLoaderWrapper.style.display = 'block';

			// Make request:
			var result;
			var params = new SOAPClientParameters();
			params.add("articleId", RcnArticleId.value);
			params.add("variantId", RcnVariantId.value);
			params.add("quantity", quantity);
			SOAPClient.invoke(productLayer.SOAPUrl, "AddToBasket", params, true,
				function(o,r) {
					if (r.getElementsByTagName('faultstring').length > 0) {
						result = false;
					} else {
						result = r.getElementsByTagName('AddToBasketResult')[0].firstChild.nodeValue;
						if (result == "true") {
							result = true;
						} else {
							result = false;
						}
					}

					updateBasketCount(quantity);

					addToCartWrapper.style.display = 'block';
					addToCartLoaderWrapper.style.display = 'none';

					productLayer.populate();
					productLayer.resetQuantity();

					if (!result) {
						throw("Could not add product to basket (articleId: "+RcnArticleId.value+", variantId: "+RcnVariantId.value+", quantity: "+quantity+")");
					} else {
						productLayer.destroy();
					}
				}
			);
		}

		return false;
	},

	validate: function() {
		var quantitySelect = productLayer.quantitySelect;
		var RcnArticleId = productLayer.RcnArticleId;
		var RcnVariantId = productLayer.RcnVariantId;
		var validationText = productLayer.validationText;
		var productArticleDropdownError = productLayer.productArticleDropdownError || false;
		var productSizeDropdownError = productLayer.productSizeDropdownError || false;

		var isOk = true;

		while (validationText.lastChild) { validationText.removeChild(validationText.lastChild); }
		validationText.style.display = 'none';
		if (productArticleDropdownError) { productArticleDropdownError.style.display = 'none'; }
		if (productSizeDropdownError) { productSizeDropdownError.style.display = 'none'; }

		if ((RcnArticleId.value == 0)) {
			isOk = false;
			validationText.appendChild(document.createTextNode(productLayer.txtErrorPickColor));
			validationText.appendChild(document.createElement('br'));
			validationText.style.display = 'block';
			if (productArticleDropdownError) { productArticleDropdownError.style.display = 'inline'; }
		}

		if ((RcnVariantId.value == 0)) {
			isOk = false;
			validationText.appendChild(document.createTextNode(productLayer.txtErrorPickSize));
			validationText.appendChild(document.createElement('br'));
			validationText.style.display = 'block';
			if (productSizeDropdownError) { productSizeDropdownError.style.display = 'inline'; }
		}

		return isOk;
	},

	saveFavorite: function() {
		if (typeof(flashProxy) != 'undefined') {
			var prodObj = productLayer.prodObj;
			var quantitySelect = productLayer.quantitySelect;
			var RcnArticleId = productLayer.RcnArticleId;
			var RcnVariantId = productLayer.RcnVariantId;
			var validationText = productLayer.validationText;
			var productArticleDropdownError = productLayer.productArticleDropdownError || false;
			var productSizeDropdownError = productLayer.productSizeDropdownError || false;

			var isOk = productLayer.validate();

			if ((quantitySelect.value == 0) || (quantitySelect == "0")) {
				quantity = 1;
			} else {
				quantity = quantitySelect.value;
			}

			if (isOk) {
				if (!productLayer.sendMixMaxImage) productLayer.currentMixMaxImage = null;
				flashProxy.call('updateItem', prodObj.ProductID, RcnArticleId.value, RcnVariantId.value, productLayer.currentPrice, productLayer.currentSize, escape(productLayer.currentColor), productLayer.currentThumbnail, escape(prodObj.DisplayName), quantity, productLayer.trackingNum, productLayer.categoryId, productLayer.currentMixMaxImage, productLayer.pricePrefix, productLayer.typeOfClothes);
				productLayer.destroy();
			}
		}

		return false;
	},

	clearPrice: function() {
		var PCFromPrice = productLayer.PCFromPrice; var PCPrice = productLayer.PCPrice; var PCNicePrice = productLayer.PCNicePrice; var PCAlternatePrice = productLayer.PCAlternatePrice; var PCDate = productLayer.PCDate; var PCDiscountInfoText = productLayer.PCDiscountInfoText;
		var RcnAvailability = productLayer.RcnAvailability; var RcnAvailabilityInStock = productLayer.RcnAvailabilityInStock; var RcnAvailabilityNoStock = productLayer.RcnAvailabilityNoStock; var RcnAvailabilityDeliveryStatus = productLayer.RcnAvailabilityDeliveryStatus;

		while (PCFromPrice.lastChild) { PCFromPrice.removeChild(PCFromPrice.lastChild); }
		while (PCPrice.lastChild) { PCPrice.removeChild(PCPrice.lastChild); }
		while (PCNicePrice.lastChild) { PCNicePrice.removeChild(PCNicePrice.lastChild); }
		while (PCAlternatePrice.lastChild) { PCAlternatePrice.removeChild(PCAlternatePrice.lastChild); }
		while (PCDate.lastChild) { PCDate.removeChild(PCDate.lastChild); }
		while (PCDiscountInfoText.lastChild) { PCDiscountInfoText.removeChild(PCDiscountInfoText.lastChild); }
		PCFromPrice.style.display = 'none';
		PCPrice.style.display = 'none';
		PCNicePrice.style.display = 'none';
		PCAlternatePrice.style.display = 'none';
		PCDate.style.display = 'none';
		PCDiscountInfoText.style.display = 'none';

		productLayer.currentPrice = null;

		// Delivery status
		while (RcnAvailabilityInStock.lastChild) { RcnAvailabilityInStock.removeChild(RcnAvailabilityInStock.lastChild); }
		while (RcnAvailabilityDeliveryStatus.lastChild) { RcnAvailabilityDeliveryStatus.removeChild(RcnAvailabilityDeliveryStatus.lastChild); }
		RcnAvailability.style.display = 'none';
		RcnAvailabilityInStock.style.display = 'none';
		RcnAvailabilityNoStock.style.display = 'none';
	},

	getTextParameter: function(key) {
		var params = new SOAPClientParameters();
		var result;
		params.add("messageKey", key);
		SOAPClient.invoke(productLayer.SOAPUrl, "GetTextParameter", params, false,
			function(o,r) {
				result = r.getElementsByTagName('GetTextParameterResult')[0].firstChild.nodeValue;
				if (result.match(/is missing$/)) {
					throw('Couldn\'t fetch string "'+key+'"');
					result = '[MISSING]';
				}
			}
		);
		return result;
	},

	getTextParameters: function(arr) {
		var params = new SOAPClientParameters();
		var result;
		var keys = new Array();
		for (var i in arr) { keys.push(arr[i]); }
		params.add("messageKeys", keys);
		SOAPClient.invoke(productLayer.SOAPUrl, "GetTextParameters", params, false,
			function(o,r) {
				result = r;
				var strings = r.getElementsByTagName('GetTextParametersResult')[0].getElementsByTagName('string');
				
				j = 0;
				for (var i in arr) {
					var value = strings[j].firstChild.nodeValue;
					value = value.replace('\n', '\\n');
					eval(i+" = \""+value+"\";");
					j++;
					if (value.match(/is missing$/)) {
						eval(i+" = null;");
					}
				}
			}
		);
		return result;
	},

	getProduct: function(prodId, categoryId) {
		var params = new SOAPClientParameters();
		var result = false;
		params.add("productId", prodId);
		params.add("categoryId", categoryId);
		SOAPClient.invoke(productLayer.SOAPUrl, "GetMixMatchProductInfo", params, false,
			function(o,r) {
				if (r.getElementsByTagName('faultstring').length > 0) {
					throw('Couldn\'t get product');
				} else {
					result = r;
				}
			}
		);
		return result;
	},

	resetCloseButton: function() {
		// productLayer.closeButton.style.bottom = '0';
		productLayer.closeButton.style.bottom = 0;
		productLayer.closeButton.style.bottom = (productLayer.horizontal) ? '-18px' : '18px';
		// productLayer.closeButton.style.top = productLayer.wrap2.offsetHeight-30+'px';
	},

	basename: function(str) {
		var temp = str.split("/");
		return temp[(temp.length)-1];
	},

	stripJunk: function(str) {
		str = str.replace('&nbsp', '');
		str = str.replace(/^(\s+)?/, '');
		str = str.replace(/(\s+)?$/, '');
		return str;
	},

	destroy: function() {
		if (productLayer.wrap2) {
			// productLayer.wrap1.parentNode.removeChild(productLayer.wrap1);
			productLayer.wrap2.parentNode.removeChild(productLayer.wrap2);
			productLayer.trackingNum = null;
			// Reset hidden fields
			productLayer.RcnArticleId.value = 0;
			productLayer.RcnVariantId.value = 0;
			productLayer.currentColor = null;
			productLayer.currentSize = null;
			productLayer.currentThumbnail = null;
			productLayer.productArticleDropdown = null;
			productLayer.productSizeDropdown = null;
			productLayer.sendMixMaxImage = null;
			productLayer.wrap2 = false;
		}
		return false;
	}
}

XML.serialize = function(node) {
	if (typeof XMLSerializer != "undefined") 
		return (new XMLSerializer()).serializeToString(node);
	else if (node.xml) return node.xml;
	else throw "XML.serialize is not supported or can't serialize " + node;
}

/* Written by Jonathan Snook, http://www.snook.ca/jonathan
   Add-ons by Robert Nyman, http://www.robertnyman.com */
function getElementsByClassName(oElm, strTagName, strClassName) {
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];	  
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

function showProps(obj) {
	s = "";
	for (property in obj) {
		s = s + property + "\n";
	}
	alert(s)
}

