$(document).ready(function ()
{
	/**
	 * Speichert die aktuelle Variante der Farbe
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	var sCurrentColorId = '';

	/**
	 * Speichert die aktuelle Variante der Groesse
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	var sCurrentSizeId = '';

	// add the event handler
	$('.color-link').click(loadColorChanges);
	$('.sizechange').change(loadSizeChanges);


	// hide the status template layers
	$('.status-change').hide();


	/**
	 * Laed alle Varianten Informationen, wenn die Groesse geaendert wird
	 * und stellt diese dar.
	 * @return void
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function loadColorChanges()
	{
		sCurrentColorId = $(this).find('img:first').attr('name');

		$('.sizechange').hide();
		$('#mdvariantselect_' + sCurrentColorId).show();

		// hide all active color plates
		$('.colorplateselectactive').hide();

		// show all inactive color plates
		$('.colorplateselectinactive').show();

		// show active and hide inactive for clicked colorplate
		$(this).find('.colorplateselectactive').show();
		$(this).find('.colorplateselectinactive').hide();

		sCurrentSizeId = $('#mdvariantselect_' + sCurrentColorId).find('option:first').val();

		showMorePics();
		showBigPic();
		showArtNumber();
		showStatus();
		showBasket();
		showCrossselling();
		setIDs();
		showNoticeLink();
		showSuggestLink();
	} // function


	/**
	 * Laed alle Varianten Informationen, wenn die Groesse geaendert wird
	 * und stellt diese dar.
	 * @return void
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function loadSizeChanges()
	{
		sCurrentSizeId = $(this).val();
		showMorePics();
		showBigPic();
		showArtNumber();
		showStatus();
		showBasket();
		showCrossselling();
		setIDs();
		showNoticeLink();
		showSuggestLink();
	} // function


	/**
	 * Zeigt die entsprechenden Morepics an.
	 * @return void
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function showMorePics()
	{
		pics = getObjectFromJson(getRealVariantValue('pics'));
		$('#morepics').empty();

		$('.product').removeClass('nomorepics').removeClass('margin-img-small-product');
		$('.product').find('.picture').removeClass('nomorepics').removeClass('margin-img-small-product');
		if (pics.length == 0)
		{
			$('.product').addClass('nomorepics');
			$('.product').find('.picture').addClass('nomorepics');
		} // if
		else if (pics.length > 5)
		{
			$('.product').addClass('margin-img-small-product');
			$('.product').find('.picture').addClass('margin-img-small-product');
		} // else if

		for (var i=0; i<pics.length; i++)
		{
			var pic = pics[i];
			$('#morepics').append(
				'<a onclick="oxid.image(\'details-img-std\',\'' + pic.pic + '\');changePic(\'' + pic.zoom + '\'); return false;" href="#" rel="nofollow"'+(i==4?' style="margin: 0px;"':'')+'>' +
				'<img alt="' + pic.ico + '" src="' + pic.ico + '" />' +
				'</a>'
				);
		} // for
	} // function


	/**
	 * Zeigt das grosse Bild bei aenderung einer Farbe an
	 * @return void
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function showBigPic()
	{
		pics = getObjectFromJson(getRealVariantValue('pics'));
		$('#details-img-std').attr('src', pics[0].pic);

		changePic(pics[0].zoom);
	} // function

	/**
	 * Aendert die Artikelnummer
	 * @return void
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function showArtNumber()
	{
		$('#details-sku').html(getRealVariantValue('id'));
	} // function


	/**
	 * Aendert den Preis
	 * @return void
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function showPrice()
	{
		$('#current-price').html(getRealVariantValue('price'));
	} // function


	/**
	 * Zeigt den Lieferstatus
	 * @return void
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function showStatus()
	{
		$('#details-status-std, .status-change').hide();
		$('#details-status-' + getRealVariantValue('stock')).show();
	} // function


	/**
	 * Aendert die Anzeige des Warenkorb buttons, wenn eine Variante nicht
	 * kaufbar ist.
	 * @return void
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function showBasket()
	{
		if (getRealVariantValue('buyable'))
			$('#scripttocart').find('input').removeAttr('disabled');
		else
			$('#scripttocart').find('input').attr('disabled', true);
	} // function

	/**
	 * Zeigt das Crossselling an.
	 * @return void
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function showCrossselling()
	{
		changeCrossselling(getRealVariantValue('id'));
	} // function

	/**
	 * Zeigt den Link fuer den Merkzettel an.
	 * @return void
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function showNoticeLink()
	{
		if (getRealVariantValue('noticelink'))
		{
			$('#slist').attr('href', getRealVariantValue('noticelink'));
		} // if
	} // function

	/**
	 * Zeigt den Link fuer Artikel empfehlen an.
	 * @return void
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function showSuggestLink()
	{
		if (getRealVariantValue('noticelink'))
		{
			$('#suggestlink').attr('href', getRealVariantValue('suggestlink'));
		} // if
	} // function

	/**
	 * Setzt die IDs, um die Variante in den WK legen zu koennen.
	 * @return void
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function setIDs()
	{
		$('#details-anid').val(getRealVariantValue('id'));
		$('#details-aid').val(getRealVariantValue('id'));
	} // function


	/**
	 * Liefert einen gespeicherten Wert fuer eine gesetzte Variante zurueck.
	 * @return string
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function getRealVariantValue(sKey)
	{
		return mdRealVariants[sCurrentSizeId][sKey];
	} // function


	/**
	 * Liefert ein Objekt aus einem JSON string zurueck
	 * @return string
	 * @author Sebastian Seidelmann <sebastian.seidelmann@twt.de>
	 */
	function getObjectFromJson(sData)
	{
		var obj = jQuery.parseJSON(sData);
		return obj;
	} // function
});
