$(document).ready(function() {
	
	// Warenkorb mit fixierter Position
	if($('.top_ministore').length) positionFixed('div.sidebar div.warenkorb', 'animated');
	
});

// Artikel zum Warenkorb hinzufügen
function addToCart(article)
{
	// Artikel per AJAX zum Warenkorb hinzufügen
	$.get(processAjaxRequestsURL, { action: 'addToCart', article: article, time: utcTimeTillNow() }, function(data) {
		
		// Falls beim ablegen des Artikel in den Warenkorb ein Fehler aufgetreten ist
		if(data=='error') 
		{
			alert('Der Artikel konnte nicht zum Warenkorb hinzugefügt werden.')
		}
		// Falls der Artikel erfolgreich hinzugefügt wurde
		else
		{
			// Abbrechen falls der Datensatz bereits im Warenkorb enthalten ist
			if($('#sidebarCartItem_'+article).length) return;
			
			// AddToCart-Link anpassen
			$('a#addToCartLink_'+article).removeAttr('href').fadeOut('fast', function () {
				$('a#addToCartLink_'+article).addClass('is_in_cart').attr('title', 'Artikel befindet sich bereits im Warenkorb').fadeIn('fast');
			});
			
			// Warenkorb Sidebar anpassen: Artikel hinzufügen
			$('#ministore_cart_sidebar').prepend(data);
			$('#sidebarCartItem_'+article).append('<span class="blink"></span>').slideDown('fast', function() {
				$('#sidebarCartItem_'+article+' span.blink').fadeOut('slow', function() {
					$('#sidebarCartItem_'+article+' span.blink').remove();
					$('#sidebarCartItem_'+article).removeClass('hide');
				});
			});
			
			// Warenkorb Sidebar anpassen: Warenkorb-Leerhinweis entfernen, Links anzeigen
			if($('#ministore_cart_sidebar div.entry').length>2)
			{
				$('#ministore_cart_sidebar div.cart_empty').slideUp();
				$('#ministore_cart_sidebar div.links').slideDown('fast').fadeIn('fast');
			}
		}
		
	});
}

// Artikel aus dem Warenkorb löschen
function removeFromCart(article, mode)
{
	// Cursor auf Wait-Symbol setzen Sidebar
	$('div#ministore_cart_sidebar, div#ministore_cart_sidebar a').css('cursor', 'wait');
	
	// Cursor auf Wait-Symbol setzen Warenkorb-Tabelle
	$('table#ministore_cart, table#ministore_cart a').css('cursor', 'wait');
	
	
	// Artikel per AJAX aus dem Warenkorb entfernen
	$.get(processAjaxRequestsURL, { action: 'removeFromCart', article: article, time: utcTimeTillNow() }, function(data) {
		
		// Falls beim ablegen des Artikel in den Warenkorb ein Fehler aufgetreten ist
		if(data=='error') 
		{			
			alert('Der Artikel konnte nicht aus dem Warenkorb gelöscht werden.')
		}
		// Falls der Artikel erfolgreich hinzugefügt wurde
		else 
		{
			// Erhaltene Daten zuweisen
			var dataArray=data.split('/');
			var zwischensumme=dataArray[0];
			var gesamtsumme=dataArray[1];
			var mwst=dataArray[2];
			
			// AddToCart-Link anpassen
			$('a#addToCartLink_'+article).fadeOut('fast', function () {
				$('a#addToCartLink_'+article).removeClass('is_in_cart').attr('title', 'In den Warenkorb').attr('href', 'javascript:addToCart('+article+');').fadeIn('fast');
			});
			
			// Warenkorb Sidebar anpassen: Artikel entfernen
			$('#sidebarCartItem_'+article).append('<span class="blink"></span>');
			$('#sidebarCartItem_'+article+' span.blink').fadeOut('slow', function() {
				$('#sidebarCartItem_'+article).slideUp('fast', function() {
					
					// Artikel aus dem DOM entfernen
					$('#sidebarCartItem_'+article).remove();
					
					// Cursor zurücksetzen
					$('div#ministore_cart_sidebar, div#ministore_cart_sidebar a').css('cursor', 'auto');
					
					// Falls der Warenkorb leer ist:
					if($('#ministore_cart_sidebar div.entry').length==2)
					{
						// Warenkorb Sidebar anpassen: Warenkorb-Leerhinweis anzeigen, Links verbergen
						$('#ministore_cart_sidebar div.cart_empty').slideDown('fast').fadeIn('fast');
						$('#ministore_cart_sidebar div.links').slideUp('fast').fadeOut('fast');
					}
				});
			});
			
			// Warenkorb anpassen: Artikel entfernen
			$('#cartItem_'+article+' td').wrapInner('<div class="effect_wrapper"></div>');
			$('#cartItem_'+article+' td').addClass('blink');
			$('#cartItem_'+article+' td').fadeTo('slow', 0.1, function() {
				$('#cartItem_'+article+' td div.effect_wrapper').slideUp('fast', function() {
					
					// Artikel aus dem DOM entfernen
					$('#cartItem_'+article).remove();
					
					// Cursor zurücksetzen
					$('table#ministore_cart, table#ministore_cart a').css('cursor', 'auto');
				
					// Falls der Warenkorb leer ist:
					if($('#ministore_cart tr.cart_item').length==0)
					{
						// Warenkorb anpassen: Warenkorb-Leerhinweis anzeigen
						$('#ministore_cart').slideUp('slow').fadeOut('fast');
						$('div.main p.cart_empty').slideDown('fast').fadeIn('fast');
						
						// Link „zur Kasse“ ausblenden
						$('div.main a.zur_Kasse').fadeOut('fast');
					}
				});
			});
			
			// Zwischensumme anpassen
			modifyCartTableFied('change', 'table#ministore_cart tr.Zwischensumme td.Zwischensumme', zwischensumme);
			
			// Gesamtsumme anpassen
			modifyCartTableFied('change', 'table#ministore_cart tr.Gesamtsumme td.Gesamtsumme', gesamtsumme);
			
			// Enthaltene Mehrwertsteuer anpassen
			modifyCartTableFied('change', 'table#ministore_cart tr.Enthaltene_Mehrwertsteuer td.Enthaltene_Mehrwertsteuer', mwst);
		}
		
	});
}

// Artikelmenge anpassen
function setArticleQuantity(article, quantity)
{	
	// Artikelmenge per AJAX anpassen
	$.get(processAjaxRequestsURL, { action: 'setArticleQuantity', article: article, quantity: quantity, time: utcTimeTillNow() }, function(data) {
		
		// Falls bei der Anpassung der Artikelmenge ein Fehler aufgetreten ist
		if(data=='error') 
		{
			alert('Die Menge konnte angepasst werden.')
		}
		// Falls die Artikelanzahl erfolgreich geändert wurde
		else 
		{
			// Erhaltene Daten zuweisen
			var dataArray=data.split('/');
			var gesamtpreis=dataArray[0];
			var zwischensumme=dataArray[1];
			var gesamtmenge=dataArray[2];
			var gesamtsumme=dataArray[3];
			var mwst=dataArray[4];
			
			// Gesamtpreis Artikel anpassen
			modifyCartTableFied('change', '#cartItem_'+article+' td.Gesamtpreis', gesamtpreis);
			
			// Gesamtmenge anpassen
			modifyCartTableFied('change', 'table#ministore_cart tr.Zwischensumme td.Gesamtmenge', gesamtmenge);
			
			// Zwischensumme anpassen
			modifyCartTableFied('change', 'table#ministore_cart tr.Zwischensumme td.Zwischensumme strong', zwischensumme);
			
			// Gesamtsumme anpassen
			modifyCartTableFied('change', 'table#ministore_cart tr.Gesamtsumme td.Gesamtsumme strong', gesamtsumme);
			
			// Enthaltene Mehrwertsteuer anpassen
			modifyCartTableFied('change', 'table#ministore_cart tr.Enthaltene_Mehrwertsteuer td.Enthaltene_Mehrwertsteuer', mwst);
			
		}
	});
}

// Zahlungsart anpassen
function setPayment(payment)
{
	// Zahlungsart per AJAX anpassen
	$.get(processAjaxRequestsURL, { action: 'setPayment', article: payment, time: utcTimeTillNow() }, function(data) {
		
		// Falls bei der Zahlungsart ein Fehler aufgetreten ist
		if(data=='error') 
		{
			alert('Die Zahlungsart konnte angepasst werden.')
		}
		// Falls die Artikelanzahl erfolgreich geändert wurde
		else 
		{
			// Erhaltene Daten zuweisen
			var dataArray=data.split('/');
			var price=dataArray[0];
			var prevElementClass=dataArray[1];
			var newElementClass=dataArray[2];
			var gesamtsumme=dataArray[3];
			var mwst=dataArray[4];
			
			// Neue Zahlungsart anpassen
			modifyCartTableFied('set', 'table#ministore_cart tr.'+newElementClass+' td.Gesamtpreis', price);
			modifyCartTableFied('set', 'table#ministore_cart tr.'+newElementClass+' td.Menge', '1');
			
			// Alte Zahlungsart anpassen
			modifyCartTableFied('unset', 'table#ministore_cart tr.'+prevElementClass+' td.Gesamtpreis');
			modifyCartTableFied('unset', 'table#ministore_cart tr.'+prevElementClass+' td.Menge');	
			
			// Gesamtsumme anpassen
			modifyCartTableFied('change', 'table#ministore_cart tr.Gesamtsumme td.Gesamtsumme strong', gesamtsumme);
			
			// Enthaltene Mehrwertsteuer anpassen
			modifyCartTableFied('change', 'table#ministore_cart tr.Enthaltene_Mehrwertsteuer td.Enthaltene_Mehrwertsteuer', mwst);
		}	
	});
}

// Versandart anpassen
function setShipment(shipment)
{
	// Zahlungsart per AJAX anpassen
	$.get(processAjaxRequestsURL, { action: 'setShipment', article: shipment, time: utcTimeTillNow() }, function(data) {
		
		// Falls bei der Anpassung ein Fehler aufgetreten ist
		if(data=='error') 
		{
			alert('Die Versandart konnte angepasst werden.')
		}
		// Falls die Versandart erfolgreich geändert wurde
		else 
		{
			// Erhaltene Daten zuweisen
			var dataArray=data.split('/');
			var price=dataArray[0];
			var prevElementClass=dataArray[1];
			var newElementClass=dataArray[2];
			var gesamtsumme=dataArray[3];
			var mwst=dataArray[4];
			
			// Neue Versandart anpassen
			modifyCartTableFied('set', 'table#ministore_cart tr.'+newElementClass+' td.Gesamtpreis', price);
			modifyCartTableFied('set', 'table#ministore_cart tr.'+newElementClass+' td.Menge', '1');
			
			// Alte Versandart anpassen
			modifyCartTableFied('unset', 'table#ministore_cart tr.'+prevElementClass+' td.Gesamtpreis');
			modifyCartTableFied('unset', 'table#ministore_cart tr.'+prevElementClass+' td.Menge');
			
			// Gesamtsumme anpassen
			modifyCartTableFied('change', 'table#ministore_cart tr.Gesamtsumme td.Gesamtsumme strong', gesamtsumme);
			
			// Enthaltene Mehrwertsteuer anpassen
			modifyCartTableFied('change', 'table#ministore_cart tr.Enthaltene_Mehrwertsteuer td.Enthaltene_Mehrwertsteuer', mwst);	
		}		
	});
}

function modifyCartTableFied(action, selector, value)
{
	// Feld leeren
	if(action=='unset')
	{
		$(selector).wrapInner('<span class="effect_wrapper"></span>');
		$(selector+' span.effect_wrapper').addClass('blink');
		$(selector+' span.effect_wrapper').fadeOut('slow', function() {
			$(selector).html('');
		});
	}
	// Leeres Feld mit Wert füllen
	else if(action=='set')
	{
		$(selector).html(value);
	}
	// Feld ändern
	else if(action=='change')
	{
		$(selector).wrapInner('<span class="effect_wrapper"></span>');
		$(selector+' span.effect_wrapper').addClass('blink');
		$(selector+' span.effect_wrapper').fadeOut('slow', function() {
			$(selector).html(value);
		});
	}
}
