$(document).ready(function(e){

	var delay = (function(){

		var timer = 0;
		
		return function(callback, ms){
			
			clearTimeout (timer);
			timer = setTimeout(callback, ms);
			
		};

	})();

	$('#order').on('change', 'input[name=billing_addressid], input[name=shipping_addressid]', function(){
		
		$('#loader').show();

		var addressid 	= parseInt($(this).val());
		var name 		= $(this).attr('name');
		var type 		= (name == 'billing_addressid' ? 'billing' : 'shipping');

		$('div[name='+type+'_gender] span').html('Dhr.');
		$('input[name='+type+'_gender]').val(1);
		$('input[name='+type+'_firstname]').val('');
		$('input[name='+type+'_subname]').val('');
		$('input[name='+type+'_lastname]').val('');
		$('input[name='+type+'_company]').val('');
		$('input[name='+type+'_street]').val('');
		$('input[name='+type+'_housenumber]').val('');
		$('input[name='+type+'_addition]').val('');
		$('input[name='+type+'_zipcode]').val('');
		$('input[name='+type+'_place]').val('');
		$('input[name='+type+'_country]').val('').trigger('change');
        $('div[name='+type+'_country] span').html('Land');

		if(addressid > 0){

			$.post("dynamic/get?what=getCustomerAddress", { id: addressid }, function(data){

				if(data.gender > 0){
					$('input[name='+type+'_gender]').val(data.gender);
				}

				$('input[name='+type+'_firstname]').val(data.firstname);
				$('input[name='+type+'_subname]').val(data.subname);
				$('input[name='+type+'_lastname]').val(data.lastname);
				$('input[name='+type+'_company]').val(data.company);
				$('input[name='+type+'_street]').val(data.street);
				$('input[name='+type+'_housenumber]').val(data.housenumber);
				$('input[name='+type+'_addition]').val(data.addition);
				$('input[name='+type+'_zipcode]').val(data.zipcode);
				$('input[name='+type+'_place]').val(data.place);
				$('input[name='+type+'_country]').val(data.country).trigger('change');
	            $('div[name='+type+'_country] span').html(data.country_name);

	            if(data.gender > 0){
		            
		            if(data.gender == 1){
		            	$('div[name='+type+'_gender] span').html('Dhr.');
		            } else {
		            	$('div[name='+type+'_gender] span').html('Mevr.');
		            }

	        	}

	            $('#loader').hide();
	            

	        }, "json");

		} else {
			$('#loader').hide();
		}

	});
	
	$('.housenumber').keyup(function(){
		
		var parent	= $(this).parent().parent();
		var zipcode	= $('.zipcode', parent).val();
		var url		= 'https://cdn.meludo.com/api/zipcode/lookup.php'; // http://utility.visitwebtools.com/zipcode/lookup.php';
		
		delay(function(){
			
			$.getJSON(url, { postcode: zipcode }, function(data) { var street	= data.street; var city	= data.city; $('.street', parent).val(street); $('.place', parent).val(city); });
		
		}, 500);
	
	});
	
	$('#order div.copy-address-2').click(function(){
		
		// Source: Billing
		var company		= $('#order .order-section-block-address .company').val();
		var gender		= $('#order .order-section-block-address input[name=billing_gender]').val();
		var firstname	= $('#order .order-section-block-address .firstname').val();
		var subname		= $('#order .order-section-block-address .subname').val();
		var lastname	= $('#order .order-section-block-address .lastname').val();
		var zipcode		= $('#order .order-section-block-address .zipcode').val();
		var place		= $('#order .order-section-block-address .place').val();
		var street		= $('#order .order-section-block-address .street').val();
		var housenumber	= $('#order .order-section-block-address .housenumber').val();
		var addition	= $('#order .order-section-block-address .addition').val();
		var country		= $('#order input[name=billing_country]').val();
		var country_name = $('#order div[name=billing_country] span').html();

		// Destination: Shipping
		$('#order .order-section-block-delivery input[name=shipping_gender]').val(gender);
		$('#order .order-section-block-delivery .firstname').val(firstname);
		$('#order .order-section-block-delivery .subname').val(subname);
		$('#order .order-section-block-delivery .lastname').val(lastname);
		$('#order .order-section-block-delivery .company').val(company);
		$('#order .order-section-block-delivery .zipcode').val(zipcode);
		$('#order .order-section-block-delivery .place').val(place);
		$('#order .order-section-block-delivery .street').val(street);
		$('#order .order-section-block-delivery .housenumber').val(housenumber);
		$('#order .order-section-block-delivery .addition').val(addition);
		$('#order .order-section-block-delivery input[name=shipping_country]').val(country).trigger('change');			
		$('#order .order-section-block-delivery div[name=shipping_country] span').html(country_name);
		
        if(gender == 1){
        	$('#order div[name=shipping_gender] span').html('Dhr.');
        } else {
        	$('#order div[name=shipping_gender] span').html('Mevr.');
        }

	});
	
	$("input, select, textarea").keyup(function(){
		
		if($(this).hasClass('warning') && $(this).val().length > 0){
			
			if($(this).attr('name') == 'shipping_country' || $(this).attr('name') == 'billing_country'){
				$(this).closest('.select_replacement').removeClass('warning');
			} else {
				$(this).removeClass('warning');
			}

		}			
		
		if(!$(this).hasClass('warning') && $(this).val().length == 0 && $(this).attr('required')){
			
			if($(this).attr('name') == 'shipping_country' || $(this).attr('name') == 'billing_country'){
				$(this).closest('.select_replacement').addClass('warning');
			} else {
				$(this).addClass('warning');
			}

		}
		
	});
		
	var submitted=0;
	// $('#order .proceed').click(function(){
	$('#order').on('touchstart click', '.proceed', function(){
		
		$(this).find('[placeholder]').each(function() {
				var input = $(this);
				if (input.val() == input.attr('placeholder')) {
				input.val('');
				}
		});

		if ($('#order .terms_accept').is(':checked')) {
			var termsAccepted = 1;	
		} else {
			var termsAccepted = 0;
		}
		
		if($(this).hasClass('acceptTerms') && termsAccepted != 1){
			
			$('.terms_span').css('border-color', '#FF0000');
			$('.terms_span').css('background-color', '#f3e5e5');
			
			$.notifyBar({ 
				cssClass: "error", 
				html: "Het is verplicht eerst akkoord te gaan met onze algemene voorwaarden."
			});

			return false;
			
		} else {
		
			var errors = 0;
			
			$('.warning').removeClass('warning');
			
			$("input, select, textarea").each(function(){			

				var attr = $(this).attr('required');
				// For some browsers, `attr` is undefined; for others,
				// `attr` is false.  Check for both.
				if (typeof attr !== typeof undefined && attr !== false) {
					
					var name		= $(this).attr('name');
					var value		= $(this).val();
					var placeholder	= $(this).attr('placeholder');
					
					if(value.length == 0 || value == placeholder){
						
						if($(this).attr('name') == 'shipping_country' || $(this).attr('name') == 'billing_country'){
							$(this).parent().addClass('warning');
						} else {
							$(this).addClass('warning');
						}

						errors++;
					}

				} 

			});
			/*$("input[required], select[required], textarea[required]").each(function(){

				$(this).removeClass('warning');
				
				var name		= $(this).attr('name');
				var value		= $(this).val();
				var placeholder	= $(this).attr('placeholder');
				
				if(value.length == 0 || value == placeholder){
					$(this).addClass('warning');
					errors++;
				}
					
			});*/
					
			if(errors == 0){

				if($('.password, .password_confirm').length==2){
					
					var password 			= $('.password').val();
					var password_confirm	= $('.password_confirm').val();
					var placeholder			= $('.password').attr('placeholder');

					if(password.length > 0 && password_confirm.length > 0 && password != password_confirm && password != placeholder){
						
						$('.password, .password_confirm').addClass('warning');
						
					} else {

						if(submitted==0){

							submitted=1;
							$('#loader').show();
							$('#order').submit();

						} else { }
						
					}
				
				} else {

					if(submitted==0){

						submitted=1;
						$('#loader').show();
						$('#order').submit();

					} else { }			
				}
					
			} else {

				$(document).scrollTop(0);
				$.notifyBar({ 
					cssClass: "error", 
					html: "Niet alle verplichte velden zijn ingevuld."
				});
				
			}
		
		}
		
		return false;
		
	});
	
	$('#order .login .order_login').click(function(){
		
		var login_email 	= $('#order .login .login_email').val();
		var login_password	= $('#order .login .login_password').val();
		
		if(login_email.length > 0 && login_password.length > 0){
			
			$('#order.login').submit();
			
		} else {
			
			alert('Vul uw e-mailadres én wachtwoord in om in te loggen.');			
		
		}
		
		return false;	
	});
	
	
	$('#order .login .order_recover-password').click(function(){
		
		var login_email 	= $('#order .login .login_email').val();
		
		
		if(login_email.length > 0){
			
			$('#order.login').submit();
			
		} else {
			
			alert('Vul uw e-mailadres in om een nieuw wachtwoord op te vragen.');
		
		}
		
		return false;	
	});	
	
	$('#order').on('change', 'input[name=shipping_country]', function(){

		var country = $(this).val();	

		$.post("dynamic/get_shipping_methods?_=" + new Date().getTime(), { country: country, language: 'nl' }, function(data){
			
			$('#order .order-section-block-shipping-methods').html(data.content);
			// $('#order .delivery .methods').append(data.content);
			
		}, "json");
		
	});

	$('#order').on('change', 'input[name=type]', function(){
		
		var type = $(this).val();	
		
		if(type === 'company'){
			$('.type-company').show();
			$(".type-company").prop('required', true);
		} else {
			$('.type-company').hide();
			$(".type-company").prop('required', false);
		}
			
	});	
		
});