$(document).ready(function() {
	var prices = new Array('0,00', '8,90', '13,45', '17,95', '20,45', '21,95', '22,90');
	
	$.select_all_magazines = function () {
        $('.magazine-basket article input[type=checkbox]').prop('checked', true);
        $('.magazine-basket div a').toggle();
        $.update_basket();
    }
	
	$.unselect_all_magazines = function () {
        $('.magazine-basket article input[type=checkbox]').prop('checked', false);
        $('.magazine-basket div a').toggle();
        $.update_basket();
    }
    
    $.update_basket = function() {
    	if ($.magazine_campaign != null && $.magazine_campaign.bundle == 1) return;
    	
    	var total = $('.magazine-basket article input[type=checkbox]').length;
    	var count = $('.magazine-basket article input[type=checkbox]:checked').length;
    	if (total == count) {
    		$('.magazine-basket div a:first').hide();
    		$('.magazine-basket div a:last').show();
    	} else {
    		$('.magazine-basket div a:first').show();
    		$('.magazine-basket div a:last').hide();
    	}
    	
    	$('.magazine-basket strong.count').html(count);
    	$('.magazine-basket strong.total').html('&euro; ' + prices[count]);
    }
    
    $('#magazine-order-payment-method, #magazine-order-payment-method-1').click(function() {
    	$(this).parent('fieldset').find('div.payment-ideal, div.payment-direct_debit').hide();
    	if ($(this).is(':checked')) {
    		$(this).parent('fieldset').find('div.payment-' + $(this).val()).show();
    	}
    });
    
    $('.magazine-form form').submit(function() {
    	if ($.magazine_campaign != null && $.magazine_campaign.bundle == 1) return true;
    	
    	var selected = $('.magazine-basket article input[type=checkbox]:checked');
    	selected.each(function() {
    		var $this = $(this);
    		$('.magazine-form form').append(
    			$('<input type="hidden" name="magazine_id[]" />').val($this.val())
    		);
    	});
    	$('.magazine-form form').append(
			$('<input type="hidden" name="magazine_order_price" />').val(prices[selected.length].replace(',', '.'))
		);
    	
    	return true;
    });
    
    $.lookup_zip = function(suffix, fields) {
    	fields.bind('blur', function(e) {
        	var valid = true;
        	fields.each(function() {
        		valid = valid && $(this).is('.valid');
        	});
        	if (!valid) {
        		return;
        	}
        	$('#' + suffix + 'address-not-found').remove();
        	
        	// TODO Make sure it does not do twice for the same address
        	var params = {
        		zip: $('#magazine-order-' + suffix + 'postal-code1').val() + ' ' + $('#magazine-order-' + suffix + 'postal-code2').val(),
        		houseNumber: $('#magazine-order-' + suffix + 'house-number').val()
        	};
        	$.post('/api/postal_code', params, function(data) {
        		if (data.indexOf(';') == false) {
        			return;
        		}
        		var splits = data.split(';');
        		if (splits.length != 2) {
        			return;
        		}
        		if (splits[0] == 'error') {
        			var warning = $('<div id="' + suffix + 'address-not-found" class="warning-box"> \
        				<img class="float-left icon" alt="pas op!" src="/images/default/uitroep-teken-icoon.png" /> \
        				<p>De combinatie postcode/huisnummer is niet bekend in onze database. <a href="#" class="underline strong">Klik hier</a> vul je adresgegevens in.</div>');
        			warning.find('a').click(function(e) {
        				e.stopPropagation();
        				e.preventDefault();
        				
        				$('#magazine-order-' + suffix + 'street, #magazine-order-' + suffix + 'city, #magazine-order-' + suffix + 'country')
        					.addClass((suffix == 'delivery-' ) ? 'deliveryRequired' : 'required')
        					.removeClass('disabled')
        					.prop('disabled', false);
        				$('#magazine-order-' + suffix + 'country').val('Nederland');
        				$('#magazine-order-' + suffix + 'street').focus();
        				
        				$('#' + suffix + 'address-not-found').remove();
        				fields.unbind('blur');
        			});
        			
        			$('#magazine-order-' + suffix + 'street').parent('fieldset').before(warning);
        		} else {
	        		$('#magazine-order-' + suffix + 'street').val(splits[0]);
	        		$('#magazine-order-' + suffix + 'city').val(splits[1]);
	        		$('#magazine-order-' + suffix + 'country').val('Nederland');
        		}
        	});
        });
    }
    $.lookup_zip('', $('#magazine-order-postal-code1, #magazine-order-postal-code2, #magazine-order-house-number'));
    $.lookup_zip('delivery-', $('#magazine-order-delivery-postal-code1, #magazine-order-delivery-postal-code2, #magazine-order-delivery-house-number'));
    
    $.update_basket();
});

