var AJAX_NOTICE = null

function show_ajax_notice(text) {
	hide_ajax_notice()
	AJAX_NOTICE = $('<div id="ajax-notice"></div>')
	AJAX_NOTICE.addClass('loading')
	AJAX_NOTICE.text(text)
	AJAX_NOTICE.appendTo($('body'))
	var y_position = $(window).scrollTop() + $(window).height()/2
	y_position += 'px'
	AJAX_NOTICE.css({
		'position': 'absolute',
		'left': '50%',
		'top': y_position,
		'margin-left': '-' + AJAX_NOTICE.width()/2 + 'px',
		'margin-top': '-' + AJAX_NOTICE.height()/2 + 'px'
	})
}

function hide_ajax_notice(speed) {
	var my_AJAX_NOTICE = AJAX_NOTICE 
	AJAX_NOTICE = null
	if (speed != null) {
		my_AJAX_NOTICE.fadeOut(speed, function() {
			if (my_AJAX_NOTICE != null) {
				my_AJAX_NOTICE.remove()
			}
		})
	}
	else if (my_AJAX_NOTICE != null) {
		my_AJAX_NOTICE.remove()
	}
}

$(function() {
	$('form.add-to-cart').each(function() {
		var form = $(this)
		var submit = form.find('input[type=submit]')
		function updateCart(data, textStatus) {
			var old_cart = $('#shop-box .cart')
			var new_cart = $(data).find('#shop-box .cart')
			old_cart.replaceWith(new_cart.clone())
			// be nice to IE8
			$('#shop-box .cart').replaceWith(new_cart.clone())
		}
		function onSuccess(data, textStatus) {
			AJAX_NOTICE.text('Warenkorb aktualisiert.')
			AJAX_NOTICE.removeClass('loading')
			AJAX_NOTICE.addClass('ok')
			hide_ajax_notice(2000)
			$.ajax({
				url: window.location.pathname,
				type: 'GET',
				cache: false,
				dataType: 'html',
				success: updateCart
			})
		}
		function onError(data, textStatus, errorThrown) {
			AJAX_NOTICE.text('Der gewünschte Artikel ist z.Zt. nicht lieferbar.')
			AJAX_NOTICE.removeClass('loading')
			AJAX_NOTICE.addClass('error')
			hide_ajax_notice(4000)
		}
		function doRequest() {
			var data = {}
			form.find('input, select').each(function() {
				var select = $(this)
				data[select.attr('name')] = select.val()
			})
			show_ajax_notice('Warenkorb wird aktualisiert...')
                        $.ajax({
				url: form.attr('action'),
				type: 'POST',
				cache: false,
				data: data,
				dataType: 'html',
				success: onSuccess,
				error: onError
                        })
			return false
		}
		form.submit(doRequest)
	})
})

