(function() {
	$.portlet_cart = {
		update: function(json) {
			$('#portlet-cart-object').text(json.object.length > 24 ? json.object.substr(0, 21) + '...' : json.object);
			$('#portlet-cart-object').attr('title', json.object);
			$('#portlet-cart-association').text(json.association.length > 24 ? json.object.substr(0, 21) + '...' : json.association);
			$('#portlet-cart-association').attr('title', json.association);
			$('#portlet-cart-count').text(json.count);
			$('#portlet-cart-total').text(json.total);
			if (json['package']) {
				$('#shop-portlet-cart .portlet-cart-packages').show();
				$.removeUpdaterEvents();
				var ul = $('#portlet-cart-packages');
				ul.html('');
				for (pos in json.packages) {
					$('#cart-acceptance-obligation').removeClass('cart-acceptance-obligation-show');
					for (ppos in json.packages[pos]['positions']) {
						if (json.packages[pos]['positions'][ppos]['calculation']['acceptance_obligation']) {
							$('#cart-acceptance-obligation').addClass('cart-acceptance-obligation-show');
							break;
						}
					}
					var li = document.createElement('li');
					var input = document.createElement('input');
					input.type = 'hidden';
					input.name = 'package_id';
					input.value = json.packages[pos].id;
					li.appendChild(input);
					var table = document.createElement('table');
					var tr = table.insertRow(0);
					var td = tr.insertCell(0);
					td.title = json.packages[pos].label;
					var h5 = document.createElement('h5');
					td.appendChild(h5);
					var td = tr.insertCell(1);
					td.title = json.packages[pos].label;
					li.appendChild(table);
					ul.get(0).appendChild(li);
					$(h5).text(json.packages[pos].label);
					$(td).text('(' + json.packages[pos].count + ')');
					$(td).addClass('ar');
					$(li).addClass('portlet-cart-package-' + json.packages[pos].id);
					$(table).addClass('shop-table-100');
					if (json['package'] == json.packages[pos].id) $(li).addClass('portlet-cart-package-active');
				}
				$.updateEvents();
			} else {
				$('#cart-acceptance-obligation').removeClass('cart-acceptance-obligation-show');
				for (ppos in json.positions) {
					if (json.positions[ppos]['calculation']['acceptance_obligation']) {
						$('#cart-acceptance-obligation').addClass('cart-acceptance-obligation-show');
						break;
					}
				}
				$('#shop-portlet-cart .portlet-cart-packages').hide();
			}
			var container = $('#portlet-cart-messages').empty();
			if (json.small_messages.length) {
				$.each(json.small_messages, function(i, item) {
					if (item.messagetype == 'error') {
						var message = $('<div class="shop-alert-3"></div>');
					} else if (item.messagetype == 'warning') {
						var message = $('<div class="shop-alert-2"></div>');
					} else {
						var message = $('<div class="shop-info-2"></div>');
					}
					container.append(message.text(item.content));
				});
			}
			if (json.count) {
				if (json.orderable) {
					$('#portlet-cart-button-checkout').show();
				} else {
					$('#portlet-cart-button-checkout').hide();
				}
			} else {
				$('#portlet-cart-button-checkout').hide();
			}
		}
	};
	
	$.attachUpdater(function() {
		$('.cart-button-import').bind('click.update', function(event) {
			event.preventDefault();
			event.stopPropagation();
			$('#cart-import-popup').popup();
		});
		
		$('#portlet-cart-button-checkout').bind('click.update', function(event) {
			if ($('#cart-acceptance-obligation.cart-acceptance-obligation-show').length) {
				event.preventDefault();
				event.stopPropagation();
				$('#cart-acceptance-obligation').popup('/cart/acceptance_obligation');
			}
		});
		
		$('#cart-acceptance-obligation-checkbox').bind('change.update', function(event) {
			if (!this.checked) {
				$('#cart-acceptance-obligation-accept').hide();
			} else {
				$('#cart-acceptance-obligation-accept').show();
			}
		});
		
		$('.oci-submit').bind('click.update', function(event) {
			event.preventDefault();
			event.stopPropagation();
			
			$.ajax({url: '/portlet/cart/oci_template/',
					dataType: 'json', 
					success: function(json) {
						$('#ocioutbound').html(json);
						$.ajax({url: '/cart/delete_oci_cart',
								success: function() {
									$('#ocioutbound').submit();
								}
							}
						);
					}
				}
			);
		});
		
		$('#cart-form-import-text select[name="prop_fields"]').bind('change.update', function() {
			if ($(this).val() == 'eltop') {
				$('#cart-form-import-text input[name="type"]').val('eltop');
				$('#cart-import-delimiter').get(0).disabled = true;
			} else {
				$('#cart-form-import-text input[name="type"]').val('csv');
				$('#cart-import-delimiter').get(0).disabled = false;
			}
		});
	});
	
	$(window).load(function() {
		if ($('#cart-import-popup-error').length && $('#cart-import-popup-error').css('display') != 'none') {
			$('#cart-import-popup').popup();
		} else if ($('#cart-import-popup-success').length) {
			document.location.replace($('form.cart').attr('action'));
		}
	});
	
})();
