var varObj = new Object();
varObj.defaultImg = true;
varObj.controlProductAdviser = '';
varObj.storeTexts = null;
varObj.previousSelectedItem = null;

varObj.setStoreTexts = function(storeTexts) {
	varObj.storeTexts = storeTexts;
}

varObj.setVariations = function(variations) {
	varObj.variations = variations;
}

varObj.setItemInfos = function(itemInfos) {
	varObj.itemInfos = itemInfos;
}

varObj.setControlProductAdviser = function(controlProductAdviser) {
	if (controlProductAdviser) {
		varObj.controlProductAdviser = controlProductAdviser;
	} else {
		varObj.controlProductAdviser = '';
	}
}
varObj.getControlProductAdviser = function() {
	return varObj.controlProductAdviser;
}

varObj.setPreviousSelectedItemId = function() {
	var defaultItemId = varObj.getDefaultItemId();
	if (defaultItemId) {
		var itemId = varObj.getItemId();
		if (!itemId) {
			itemId = defaultItemId;
		}
		varObj.previousSelectedItem = itemId;
	} else {
		varObj.previousSelectedItem = null;
	}
}

varObj.getPreviousSelectedItemIdData = function(dataKey) {
	if (varObj.previousSelectedItem && varObj.itemInfos[varObj.previousSelectedItem]) {
		return varObj.itemInfos[varObj.previousSelectedItem][dataKey];
	}
	
	return null;
}

varObj.selectFirstValid = function() {
	varObj.setItemId(varObj.getFirstValidItemId());
}

varObj.getFirstValidItemId = function() {
	return varObj.rec_getFirstValidItemId(varObj.variations.definingAttributes, 0);
}

varObj.rec_getFirstValidItemId = function(definingAttributesTree, level) {
	if($type(definingAttributesTree) == 'object') {
		var attName = varObj.variations.attributes[level];
		if (attName == varObj.variations.availabilityAtt) {
			return varObj.rec_getFirstValidItemId(definingAttributesTree[''], level + 1);
		}
		for(var i = 0; i < varObj.variations.complete[attName].length; i++) {
			var value = varObj.variations.complete[attName][i];
			var tmpResult = varObj.rec_getFirstValidItemId(definingAttributesTree[value], level + 1);
			if(tmpResult) {
				return tmpResult;
			}
		}
	} else {
		var itemId = definingAttributesTree;
		var updateData = varObj.itemInfos[itemId];
		if(updateData) {
			return itemId;
		}
	}
	return null;

}

varObj.firstValueForAttribute = function(id) {
	return varObj.variations.complete[id][0];
}

/*
 * Called by created select boxes at their onchange event.
 */
varObj.selectChanged = function(attValueElement) {
	varObj.setPreviousSelectedItemId();
	
	varObj.changeSelections(attValueElement.getParent().getProperty('attribute_id'), attValueElement.getProperty('attribute_value'));
	varObj.updateDetails();
}

/*
 * Selects the value of the attribute with the given name.
 * Calls setting of availability state of items.
 * Calls item availability handling.
 */
varObj.changeSelections = function(name, value) {
	varObj.selectAttributeValue(name, value);
	varObj.setStateOfAvailabilityAttButtons();
	varObj.handleSelectedItemAvailability();
}

/*
 * Selects the value of the given attribute and sets the value to the selected text.
 */
varObj.selectAttributeValue = function(attribute, value) {
	// setting selected value to attribute header
	if (attribute) {
		$(attribute + '_selected').set('text', value);
		// setting the selection marker
		var attValues = $(attribute + '_values').getChildren();
		if (attValues.length == 1) {
			attValues[0].addClass('active');
		} else {
			for(var i = 0; i < attValues.length; i++) {
				attValues[i].removeClass('active');
				if(attValues[i].getProperty('attribute_value') == value) {
					attValues[i].addClass('active');
				}
			}
		}
	}
}

/*
 * Sets the state (available, itemnotavailable, itemnotdefined) of the buttons of the availabilityAtt.
 * It also controls the amount of buttons in a row and check the amount of the visible buttons. 
 * If there is exactly one buttons selectable the buttons are hid and the selectable buttons get selected.
 */
varObj.setStateOfAvailabilityAttButtons = function() {
	if (varObj.variations.availabilityAtt) {
		// setting the availability of the availabilityAtt
		// getting the possible values of the attributeWithAvailableState
		var tmpTree = varObj.variations.definingAttributes;
		for(var i = 0; i < varObj.variations.attributes.length; i++) {
			var attName = varObj.variations.attributes[i];
			if (attName == varObj.variations.availabilityAtt) {
				break;
			}
			var value = varObj.getSelectedValue(attName);
			tmpTree = tmpTree[value];
		}
		// setting the definition state of the values
		var attValues = $(varObj.variations.availabilityAtt + '_values').getChildren();
		var buttonsCount = 0;
		var selectableAttValueDiv = null;
		for (var i = 0; i < attValues.length; i++) {
			var attValueDiv = attValues[i];
			var attValue = attValueDiv.getProperty('attribute_value');
			if (tmpTree && tmpTree[attValue] && varObj.itemInfos[tmpTree[attValue]]) {
				var infos = varObj.itemInfos[tmpTree[attValue]];
				if (infos['stock_available'] == 0 && infos['stock_available_future'] == 0) {
					attValueDiv.removeClass('itemnotdefined');
					attValueDiv.addClass('itemnotavailable');
				} else {
					attValueDiv.removeClass('itemnotdefined');
					attValueDiv.removeClass('itemnotavailable');
				}
				
				if (buttonsCount % varObj.variations.buttonsPerRow[varObj.variations.availabilityAtt] == 0) {
					attValueDiv.addClass('first');
				} else {
					attValueDiv.removeClass('first');
				}
				selectableAttValueDiv = attValueDiv;
				buttonsCount++;
			} else {
				if (attValueDiv.hasClass('active')) {
					attValueDiv.removeClass('active');
					$(varObj.variations.availabilityAtt + '_selected').set('text', '');
				}
				attValueDiv.removeClass('itemnotavailable');
				attValueDiv.addClass('itemnotdefined');
				
				attValueDiv.removeClass('first');
			}
		}
		var attributeDiv = $(varObj.variations.availabilityAtt + '_att');
		if (buttonsCount == 1) {
			// only one selectable => hide the buttons and select it
			attributeDiv.addClass('onlyOneValue');
			selectableAttValueDiv.addClass('active');
		} else {
			attributeDiv.removeClass('onlyOneValue');
		}
	}
}

/*
 * Checks if the item defined by the currently selected attributes is available and sets the result to the availabilityAtt.
 * It also handles if there is no availabilityAtt value selected (initial state).
 */
varObj.handleSelectedItemAvailability = function() {
	var availabilityAtt = varObj.variations.availabilityAtt;
	var attAvailableDiv;
	if (availabilityAtt) {
		attAvailableDiv = $(availabilityAtt + '_available');
	} else {
		attAvailableDiv = $('_available');
	}
	var valueSelected = !availabilityAtt || varObj.getSelectedValue(availabilityAtt);
	if (valueSelected) {
		if (!varObj.getItemId()) {
			// the selected attribute combination is not possible
			varObj.setAvailabilityDivState(false, attAvailableDiv, 'never', 'PRODUCT_NOTDEFINED');
		} else {
			var infos = varObj.itemInfos[varObj.getItemId()];
			// infos may be null because this function may be called before all defining attributes are selected
			if (infos) {
				if (infos['stock_available'] > 0) {
					varObj.setAvailabilityDivState(true, attAvailableDiv, 'now', 'PRODUCT_AVAILABLE');
				} else if (infos['stock_available_future'] > 0) {
					varObj.setAvailabilityDivState(true, attAvailableDiv, 'notyet', 'PRODUCT_NOTAVAILABLE', {0: infos['delivery_date_text']});
				} else {
					varObj.setAvailabilityDivState(false, attAvailableDiv, 'never', 'PRODUCT_SOLDOUT');
				}
			} else {
				attAvailableDiv.set('text', '');
			}
		}
	} else {
		// checking if it is possible to select a valid attribute combination
		var valueSelectable = true;
		if (availabilityAtt) {
			var attValues = $(availabilityAtt + '_values').getChildren();
			valueSelectable = false;
			for(var i = 0; i < attValues.length; i++) {
				if (!attValues[i].hasClass('itemnotdefined')) {
					valueSelectable = true;
					break;
				}
			}
		}
		if (valueSelectable) {
			varObj.setAvailabilityDivState(false, attAvailableDiv, 'notselected', 'PRODUCT_ATTRIBUTE_NOT_SELECTED_' + availabilityAtt);
		} else {
			varObj.setAvailabilityDivState(false, attAvailableDiv, 'never', 'PRODUCT_NOTDEFINED');
		}
	}
}

/*
 * Sets text and class of the given div that shows the item availability.
 */
varObj.setAvailabilityDivState = function(enableBasket, attAvailableDiv, availabilityClass, availabilityText, availabilityTextParams) {
	var text = varObj.storeTexts[availabilityText];
	if (availabilityTextParams != null) {
		text = text.substitute(availabilityTextParams);
	}
	attAvailableDiv.set('text', text);
	attAvailableDiv.removeClass('notselected');
	attAvailableDiv.removeClass('now');
	attAvailableDiv.removeClass('notyet');
	attAvailableDiv.removeClass('never');
	attAvailableDiv.addClass(availabilityClass);
	
	var priceLine3 = $('price-line3');
	if (enableBasket) {
		priceLine3.removeClass('disabled');
		priceLine3.addClass('enabled');
	} else {
		priceLine3.removeClass('enabled');
		priceLine3.addClass('disabled');
	}
}

/*
 * Returns the selected value of the given attribute.
 * Returns null if no value is selected.
 */
varObj.getSelectedValue = function(attribute) {
	var attValues = $(attribute + '_values').getChildren();
	for(var i = 0; i < attValues.length; i++) {
		if (attValues[i].hasClass('active')) {
			return attValues[i].getProperty('attribute_value');
		}
	}
	return null;
}

/*
 * Returns the amount of item that will be added to the basket / wishlist
 */
varObj.getQuantity = function() {
//TODO remove or return => anzahl feld gibt es nicht mehr
//	return $('number').value;
	return 1;
}

/*
 * Returns the value with infoKey from the current item or if no item selected of the defaultItem
 */
varObj.getSelectedItemInfo = function(infoKey) {
	var defaultItemId = varObj.getDefaultItemId();
	if (defaultItemId) {
		var itemId = varObj.getItemId();
		if (!itemId) {
			itemId = defaultItemId;
		}
		return varObj.itemInfos[itemId][infoKey];
	}
	return null;
}

/*
 * Selects the article (item) with the value 'number' in given field. 
 * If there is more than one item that one is selected which attribute values appears first in the varObj.variations.complete list.
 * E.g. if item with Größe=44 and item with Größe=40 the item with Größe=40 is selected.
 */
varObj.setArticleByField = function(number, field) {
	var itemId;
	var data;
	for(var tmpItemId in varObj.itemInfos) {
		var updateData = varObj.itemInfos[tmpItemId];
		if(updateData[field] && updateData[field] == number) {
			if(itemId) {
				// now after we have found the first item having the info[field]==number 
				// we are looking for a similar item where its attributes are at a position in the complete list 
				// that is in front of the position of the current item's attributes.
				tmpData = varObj.getSelectableAttributes(tmpItemId);
				for(var variation in data) {
					if(varObj.variations.complete[variation]) {
						var tmpRank = 0;
						var rank = 0;
						for(var i = 0; i < varObj.variations.complete[variation].length; i++) {
							if(varObj.variations.complete[variation][i] == tmpData[variation]) {
								tmpRank = i;
							}
							if(varObj.variations.complete[variation][i] == data[variation]) {
								rank = i;
							}
						}
						if(tmpRank < rank) {
							itemId = tmpItemId;
							data = tmpData;
						}
					}
				}
			} else {
				itemId = tmpItemId;
				data = varObj.getSelectableAttributes(tmpItemId);
			}
		}
	}
	
	if(itemId) {
		varObj.setItemId(itemId);
	}
	
	if (varObj.variations.availabilityAtt) {
		// check the availability buttons => 
		varObj.setStateOfAvailabilityAttButtons();
		// deselect the attribute with available state (e.g. Größe) if it is visible
		if (!$(varObj.variations.availabilityAtt + '_att').hasClass('onlyOneValue')) {
			varObj.selectAttributeValue(varObj.variations.availabilityAtt, null);
		}
		varObj.handleSelectedItemAvailability();
	}
	
	return itemId ? true : false;
}

/*
 * Selected the attributes of the given item and updates the details.
 * Return true if an item with the given itemId was found.
 */
varObj.setItemId = function(itemId) {
	varObj.setPreviousSelectedItemId();

	var itemData = varObj.getSelectableAttributes(itemId);
	if(itemData) {
		for(var attribute in itemData) {
			if(varObj.variations.complete[attribute]) {
				varObj.changeSelections(attribute, itemData[attribute]);
			}
		}
	}
	
	varObj.updateDetails();
	
	return itemData ? true : false;
}

/*
 * Returns all attribute names and value the user can select (defining attributes). 
 * The buttons to select the values might be hidden.
 */
varObj.getSelectableAttributes = function(itemId) {
	var itemInfos = varObj.itemInfos[itemId];
	if (itemInfos) {
		var result = new Object();
		for(var i = 0; i < varObj.variations.attributes.length; i++) {
			var attName = varObj.variations.attributes[i];
			var attValue = itemInfos['def_att_' + attName];
			if (attValue) {
				result[attName] = attValue;
			}
		}
		return result;
	}
	return null;
}

/*
 * see getDefaultItemId(); and getItemId();
 */
varObj.internalGetItemId = function(returnDefaultItemId) {
	if (varObj.variations.attributes.length == 0 && varObj.itemInfos) {
		for(key in varObj.itemInfos) {
			return key;
		}
		return null;
	}
	var result = varObj.variations.definingAttributes;
	var i = 0;
	for(var i = 0; i < varObj.variations.attributes.length; i++) {
		attribute = varObj.variations.attributes[i];
		var varValue;
		if (returnDefaultItemId && varObj.variations.availabilityAtt == attribute) {
			varValue = '';
		} else {
			varValue = varObj.getSelectedValue(attribute);
		}
		
		if(result) {
			result = result[varValue];
			if ($type(result) == 'string') {
				return result;
			}
		} else {
			break;
		}
	}
	return result;
}

/*
 * Returns the ID of the default item of the selected attributes. 
 * Should not return null.
 */
varObj.getDefaultItemId = function() {
	return varObj.internalGetItemId(true);
}

/*
 * Returns the ID of the selected item or null if the item is not found (the selection might be incomplete)
 */
varObj.getItemId = function() {
	return varObj.internalGetItemId(false);
}

// TODO => currently the productdetailprint.jsp is not reachable but if it is build in again the must method be fixed
varObj.updatePrintDetails = function(itemId) {
	var updateData = varObj.itemInfos[itemId];
	
	if(updateData['img_big']) {
		var dataToUpdate = $('prd_img_big');
		dataToUpdate.src = storeImgServer + updateData['img_big'][0];
	}

	if(updateData['ordernumber']) {
		var dataToUpdate = $('order_number');
		dataToUpdate.set('html',updateData['ordernumber']);
	}
	
	if(varObj.variations.complete['Variation'].length > 1){
		$('var').removeClass('nonvisible');
	}
	
	if(varObj.variations.complete['Farbe'].length > 0){
		$('color').removeClass('nonvisible');
	}
	
	if(updateData['price_retail']) {
		var dataToUpdate = $('price_retail_value');
		dataToUpdate.set('html',updateData['price_retail']);
	}

	if(!updateData['price_list']) {
//			alert("no Price_list");
			$('price_diff').removeClass('visit');
			$('price_diff').addClass('nonvisit');
			$('price_list').removeClass('visit');
			$('price_list').addClass('nonvisit');
 //TODO		 $('price_list_value').removeClass('visit');
//TODO			$('price_list_value').addClass('nonvisit');
//TODO			var dataToUpdate = $('price_list_value');
//TODO			dataToUpdate.set('html','');
			var dataToUpdate = $('price_diff_value');
			dataToUpdate.set('html','');
	}else{
//			alert("has NEW Price_list");
			$('price_diff').removeClass('nonvisit');
			$('price_diff').addClass('visit');
			$('price_list').removeClass('nonvisit');
			$('price_list').addClass('visit');
//TODO			$('price_list_value').removeClass('nonvisit');
//TODO			$('price_list_value').addClass('visit');
//TODO		var dataToUpdate = $('price_list_value');
//TODO		dataToUpdate.set('html',updateData['price_list'] + '*');
		var dataToUpdate = $('price_diff_value');
		dataToUpdate.set('html',updateData['price_saving_percent']);
	}


	itemDataZoom = varObj.getItemData(itemId, varObj.variations.dependencies, new Object());
	var lDiv = $('item_infos');

	tempTreeZoom = varObj.variations.dependencies['Variation'][itemDataZoom['Variation']]['Farbe'];
	type = 'Farbe';
	if(!tempTreeZoom) {
		tempTreeZoom = varObj.variations.dependencies['Variation'];
		type = 'Variation';
	}

	for(var dependency in tempTreeZoom) {
		subItemId = varObj.getFirstValidItemId(tempTreeZoom[dependency]);
		subItemTagId = varObj.getFirstValidItemId(tempTreeZoom[dependency])+'_print';
		var li = new	Element('li', {'class' : 'itemlist_print'});
		li.set('id', subItemTagId);
		li.set('html', '<img src="' + storeImgServer + varObj.itemInfos[subItemId].img[0] + '" border="0" title="' + dependency + ' - ' + productName + '" alt="' + dependency + ' - ' + productName + '" width="60"/>')
		li.injectInside(lDiv);
	}
	
}

/* ----------------------- ProductDetails -------------------------------- */
varObj.updateDetails = function() {

	var defaultItemId = varObj.getDefaultItemId();
	if (defaultItemId) {
		var isDefaultItem = false;
		var itemId = varObj.getItemId();
		if (!itemId) {
			itemId = defaultItemId;
			isDefaultItem = true;
		}
		var updateData = varObj.itemInfos[itemId];
		
		if($('product_item_name') && updateData['shortdescription']){
			$('product_item_name').set('text', updateData['shortdescription']);
		}
		
		if($('articleAttributeFit') && $('attributeFit')){
			var fitValue = null;
			if (updateData['att_passform']) {
				fitValue = updateData['att_passform'];
			}
			if (fitValue && varObj.storeTexts[fitValue]) {
				$('articleAttributeFit').removeClass('nonvisible');
				$('attributeFit').set('text', varObj.storeTexts[fitValue]);
			} else {
				$('articleAttributeFit').addClass('nonvisible');
				$('attributeFit').set('text', '');
			}
		}
		
		if ($('itemId')) {
			$('itemId').set('value',varObj.getItemId());
		}
		
		if(updateData['longdescription']) {
			varObj.changeLongDescription(updateData);
		}

		if(updateData['price_retail']) {
			var dataToUpdate = $('price_retail_value');
			dataToUpdate.set('html',updateData['price_retail']);
			if (isDefaultItem && updateData['items_has_different_prices']) {
				new Element('span', {'class': 'producthaspricemargin', 'text': 'ab '}).inject(dataToUpdate, 'top');
			}
		}

		if (updateData['has_price_icon']) {
			$('pd_item_prices').removeClass('standard');
			$('pd_item_prices').addClass('reduced');
		} else {
			$('pd_item_prices').removeClass('reduced');
			$('pd_item_prices').addClass('standard');
		}

		if(updateData['price_icon']) {
			var dataToUpdate = $('price_icon_img');
			dataToUpdate.src = updateData['price_icon'];
		}
	
		if(updateData['price_list']) {
			var dataToUpdate = $('price_list_value');
			dataToUpdate.set('html',updateData['price_list']);
			if (isDefaultItem && updateData['items_has_different_prices']) {
				new Element('span', {'class': 'producthaspricemargin', 'text': 'ab '}).inject(dataToUpdate, 'top');
			}
			dataToUpdate.adopt(new Element('span', {'class': 'price_list_value_web_asterisk', 'text': '*'}));
			var dataToUpdate = $('price_diff_value');
			dataToUpdate.set('html',updateData['price_saving_percent']);
		} else {
			var dataToUpdate = $('price_list_value');
			dataToUpdate.set('html','');
			var dataToUpdate = $('price_diff_value');
			dataToUpdate.set('html','');
		}
		if(updateData['img']){
			var perspectives = $('product_item_perspectives');
			perspectives.empty();
			for(var i = 0; i < updateData['img'].length; i++) {
				var perspectiveImage = updateData['img'][i]
				var perspectiveId = 'perspectiveImage_'+i
				var li = new Element('li', {'class' : 'perspectivelist'});
				li.set('id', perspectiveId);
				// IE7 problem 
				//li.set('value', i);
				var productDesc = productName;
				if (updateData['defining_attributes']['Farbe']) {
					productDesc = updateData['defining_attributes']['Farbe'] + ' - ' + productName;
				} else if (updateData['defining_attributes']['Variation']) {
					productDesc = updateData['defining_attributes']['Variation'] + ' - ' + productName;
				} else if (updateData['defining_attributes']['Setmöglichkeiten']) {
					productDesc = updateData['defining_attributes']['Setmöglichkeiten'] + ' - ' + productName;
				}
				li.set('html', '<img src="' + storeImgServer + perspectiveImage + '" border="0" title="' + productDesc + '" alt="' + productDesc + '" class="perspectiveimg" onmouseover="varObj.updateBigAndZoom(\''+updateData['img_big'][i]+'\',\''+updateData['img_zoom'][i]+'\')" />');
				var perspectiveindex = i+0;
				li.injectInside(perspectives);
			}
		}
		if(updateData['img_big'] && (varObj.getPreviousSelectedItemIdData('img_big') == null 
									|| updateData['img_big'][0] != varObj.getPreviousSelectedItemIdData('img_big')[0] 
									|| updateData['img_zoom'][0] != varObj.getPreviousSelectedItemIdData('img_zoom')[0])) {
			varObj.updateBigAndZoom(updateData['img_big'][0],updateData['img_zoom'][0]);
		}
		
		if (varObj.variations.availabilityAtt) {
			if ($(varObj.variations.availabilityAtt + '_att').hasClass('onlyOneValue')) {
				$('product_adviser_link').addClass('hidden');
			} else {
				$('product_adviser_link').removeClass('hidden');
			}
		}
		
		//product details
		if ($('productdetails_title')) {
			var farbe = null;
			if (updateData['defining_attributes']) {
				farbe = updateData['defining_attributes']['Farbe'];
			}
			$('productdetails_title').set('html', farbe ? productName + ' - ' + farbe : productName);
		}
		//product details list
		if ($('tab-productdetails-list')) {
			var productDetails = $('tab-productdetails-list');
			productDetails.empty();
			var list = new Element('ul');
			productDetails.adopt(list);
			// first: all defining attributes with extactly one element because they don't appear as select buttons
			for (var attName in varObj.variations.complete) {
				if ($(attName + '_att').hasClass('onlyOneValue')) {
					list.adopt(new Element('li', {'text': attName + ': ' + updateData['def_att_' + attName]}));
				}
			}
			if (updateData['filter_attributes']) {
				var attributeNames = updateData['filter_attributes'];
				for (var i = 0; i < attributeNames.length; i++) {
					var attValues = updateData['filter_attribute_values'][attributeNames[i]]
					list.adopt(new Element('li', {'text': attributeNames[i] + ': ' + attValues}));
				}
				list.adopt(new Element('li', {'text': varObj.storeTexts['PRODUCT_ORDER_NUMBER'] + ' ' + updateData['ordernumber']}));
			}
		}
		
		if (varObj.controlProductAdviser != updateData['control_product_adviser']) {
			// reload the Größenberater if its control attribute changed
			varObj.controlProductAdviser = updateData['control_product_adviser'];
			$('productAdviserTab').empty();
			$('productAdviserTab').adopt(new Element('div', {'class': 'EMPTY'}));
			loadTabContent('tab3')
		}
		
	} else {
		// there is no article for the selected attribute combination
		
		if ($('attributeFit')) $('attributeFit').set('text', '');
		$('itemId').set('value', '');
		varObj.changeLongDescription();
		$('pd_item_prices').removeClass('reduced');
		$('pd_item_prices').addClass('standard');
		$('price_retail_value').set('html', '');
		$('price_list_value').set('html','');
		$('price_diff_value').set('html','');
		$('product_item_perspectives').empty();
		$('tab-productdetails-list').empty();
		varObj.updateBigAndZoom();
	}
}

/*
 * Recreates the product long description section. Add more/less links if required.
 */
varObj.changeLongDescription = function(updateData){
	var dataToUpdateLess = $('item_description_less');
	var dataToUpdateMore = $('item_description_more');
	dataToUpdateLess.removeClass('nonvisit');
	dataToUpdateMore.removeClass('nonvisit');
	if (updateData) {
		dataToUpdateLess.set('html',updateData['shorten_longdescription']);
		dataToUpdateMore.set('html',updateData['longdescription']);
		if(dataToUpdateLess != dataToUpdateMore) {
			var am = new Element('a');
			am.set('text', '... mehr')
			am.set('href', '#');
			am.addEvent('click', function(event){
				$('item_description_less').setStyle('display', 'none');
				$('item_description_more').setStyle('display', 'inline');
				return false;
			});
			am.injectInside(dataToUpdateLess);
			
			var al = new Element('a');
			al.set('text', ' weniger')
			al.set('href', '#');
			al.addEvent('click', function(event){
				$('item_description_less').setStyle('display', 'inline');
				$('item_description_more').setStyle('display', 'none');
				return false;
			});
			al.injectInside(dataToUpdateMore);
		}
	} else {
		dataToUpdateLess.addClass('nonvisit');
		dataToUpdateMore.addClass('nonvisit');
	}
}

varObj.updateBigAndZoom = function(imgBig, imgZoom){
	var zoomerThumb = $('zoomer_thumb');
	zoomerThumb.empty();
	if (imgBig) {
		var thumbLink = new Element('a',{href:storeImgServer + imgZoom,id:'zoom','class':'MagicZoom',rel:'zoom-fade: true; zoom-width: 636; zoom-height: 350; show-title: false;'});		 
		var thumbImage = new Element('img',{'src':storeImgServer + imgBig , 'class':'zoomer_thumb_style','width':'275','height':'275'});		 
		thumbImage.injectInside(thumbLink);
		thumbLink.injectInside(zoomerThumb);
		prepareZoomer(); 
	}
}

varObj.updateZoomImage = function(itemId) {
	itemId = itemId.replace("_zoom", "");
	var updateData = varObj.itemInfos[itemId];
	if(updateData) {
		if(updateData['img_zoom']) {
			var dataToUpdate = $('itemzoom_image');
			dataToUpdate.src = storeImgServer + updateData['img_zoom'];
		}
	}
}

