var windowLoadingDiv = false;
var mutatie_timer = false;
/*var thisShopPage = false;*/
var betalenStopLinks = false;

function shop_winkelwagen_delete(product_id) {
	setWinkelwagenLoading(true);
	ajaxRequestWinkelwagen('delete', {product_id: product_id});
}

function shop_winkelwagen_delete_verp(product_id) {
	setWinkelwagenLoading(true);
	ajaxRequestWinkelwagen('delete_verp', {product_id: product_id});
}

function shop_winkelwagen_up(e) {
	// Increase the amount
	var inputElem = jQuery('#aantalInput_' + jQuery(this).attr('rel'))
	inputElem.val(parseInt(inputElem.val(), 10) + 1);
	// Reset update timeout
	if (mutatie_timer !== false) clearTimeout(mutatie_timer);
	// mutatie_timer = setTimeout("updateMutaties();", 750);
}

function shop_winkelwagen_down(e) {
	// Decrease the amount
	var inputElem = jQuery('#aantalInput_' + jQuery(this).attr('rel'))
	inputElem.val(parseInt(inputElem.val(), 10) - 1);
	// Reset update timeout
	if (mutatie_timer !== false) clearTimeout(mutatie_timer);
	// mutatie_timer = setTimeout("updateMutaties();", 750);
}

function shop_winkelwagen_keydown(e) {
	// Reset update timeout
	if (mutatie_timer !== false) clearTimeout(mutatie_timer);
	// mutatie_timer = setTimeout("updateMutaties();", 750);
}

function shop_winkelwagen_tt(trackandtrace) {
	if ((trackandtrace !== false) && ((trackandtrace.value == 'ja') || (trackandtrace.value == 'nee'))) {
		setWinkelwagenLoading(true);
		ajaxRequestWinkelwagen('muteer_trackandtrace', {trackandtrace:trackandtrace});
	}
}

function shop_winkelwagen_verzendmethode(verzendmethode) {
	if ((verzendmethode !== false) && ((verzendmethode.value == 'post') || (verzendmethode.value == 'post+tt') || (verzendmethode.value == 'expressdienst'))) {
		setWinkelwagenLoading(true);
		ajaxRequestWinkelwagen('muteer_verzendmethode', {verzendmethode:verzendmethode});
	}
}

function updateMutaties() {
	// Create data array
	var data = [];
	// Loop all containers
	jQuery('.winkelwagenAantalContainer').each(function(k, v) {
		var product_id = jQuery(v).attr('rel');
		if ($("[name='aantal_type[" + product_id + "]']:checked").val() == 'aantal_type_staffels') {
			var vwaarde = jQuery('#aantalInput_' + product_id).val();
			data.push(product_id.substring(2) + ':' + parseInt(vwaarde));
		}
		else {
			var vwaarde = $("[name='aantal_type[" + product_id + "]']:checked").val();
			data.push(product_id.substring(2) + ':' + vwaarde);
		}
	});
	console.log(data);
	//setWinkelwagenLoading(true);
	ajaxRequestWinkelwagen('muteer_winkelwagen', {mutaties: data.join('|')});
}

function setWinkelwagenLoading(loading) {
	if (loading) {
		var dims = {
			width: jQuery('#winkelwagenTable').width(),
			height: jQuery('#winkelwagenTable').height()
		}
		var pos = jQuery('#winkelwagenTable').offset();
		
		windowLoadingDiv = $('<div />')[0];
		windowLoadingDiv.style.position = 'absolute';
		windowLoadingDiv.style.left = pos.left + 'px';
		windowLoadingDiv.style.top = pos.top + 'px';
		windowLoadingDiv.style.width = dims.width + 'px';
		windowLoadingDiv.style.height = dims.height + 'px';
		windowLoadingDiv.style.backgroundColor = '#FFFFFF';
		
		var loadingImg = $('<img src="images/load.gif" />')[0];
		loadingImg.style.position = 'absolute';
		loadingImg.style.left = Math.round((dims.width / 2) - 16) + 'px';
		loadingImg.style.top = Math.round((dims.height / 2) - 16) + 'px';
		loadingImg.style.width = '32px';
		loadingImg.style.height = '32px';
		windowLoadingDiv.appendChild(loadingImg);
		windowLoadingDiv.loadingImage = loadingImg;
		
		setElementOpacity(windowLoadingDiv, 75);
		document.body.appendChild(windowLoadingDiv);
	} else {
		if (windowLoadingDiv !== false) {
			windowLoadingDiv.removeChild(windowLoadingDiv.loadingImage);
			document.body.removeChild(windowLoadingDiv);
		}
	}
}

function ajaxRequestWinkelwagen(actie, params) {
	if (typeof(params) != 'object') params = {};
	params.actie = actie;
	jQuery.ajax({
		'url': 'webshop_ajax_winkelwagen.php',
		'type': 'POST',
		'data': params,
		'dataType': 'html',
		'success': function(response) {
			jQuery('#winkelwagenDiv').html(response);
			addWinkelwagenUpDown();
			setWinkelwagenLoading(false);
		},
		'error': function() {
			alert(__SHOP_ONBEKENDE_FOUT_JS); 
			setWinkelwagenLoading(false);
		}
	});
}

function setElementOpacity(el, op) {
	jQuery(el).css('opacity', op / 100);
}

function addWinkelwagenUpDown() {
	jQuery('.winkelwagenAantalContainer').each(function(k, v) {	
		jQuery('#aantalInput_' + jQuery(v).attr('rel')).on('change', shop_winkelwagen_keydown);
	});
}

function gegevensLinkClick(e) {
	var el = jQuery(this);
	
	// Don't execute if it's a fancybox
	if (jQuery(el).parent().hasClass('zoom')) return false;
	if (jQuery(el).parent().hasClass('zoom25mm')) return false;

	// Get the closest parent a
	el = jQuery(el).closest('a');
	
	// Cancel if menu item
	if (jQuery(this).closest('ul.nav').length > 0) return;
	
	var target = jQuery(el).prop('target');
	if (target && target == "_blank") return;
	
	var href = jQuery(el).prop('href');
	if (href === null || typeof href.indexOf === 'undefined' || href.indexOf('javascript:') != -1) return;
	
	e.preventDefault();
	
	jQuery('#gegevensForm input[name="href"]').val(href);
	jQuery('#gegevensForm input[name="actie"]').val('verwerk_bestelformulier_niet_definitief');
	jQuery('#gegevensForm').submit();
}

function betalenLinkClick(e) {
	alert('Rond eerst de betaling af!');
	e.preventDefault();
}

function changeActieMelding(regelid, statustxt, melding) {

	switch(statustxt) {
		
		case 'goed':
			jQuery('.actieimg-' + regelid).attr('src', 'images/correct.png');
			jQuery('.actieimg-' + regelid).attr('data-bs-original-title', melding);	
		break;
		
		case 'leeg':
			jQuery('.actieimg-' + regelid).attr('src', 'images/info.png');
			jQuery('.actieimg-' + regelid).attr('data-bs-original-title', melding);		
		break;
		
		case 'bestaat_niet':
		case 'verkeerd_product':
		case 'al_gebruikt':
			jQuery('.actieimg-' + regelid).attr('src', 'images/fault.png');
			jQuery('.actieimg-' + regelid).attr('data-bs-original-title', melding);
		break;
	}
	
}

jQuery(window).on('load', pageLoaded);
function pageLoaded() {
	if (typeof thisShopPage !== 'undefined') {
		switch (thisShopPage) {
			case 'winkelwagen':
				addWinkelwagenUpDown();
				break;
			
			case 'gegevens':
				// Vang alle links op
				jQuery('a.stapverder').on('click', gegevensLinkClick);
				break;
			
			case 'betalen':
				break;
		}
	}
}

jQuery(document).ready(function(){
	jQuery( document ).delegate( "input[name=verzendmethode]:radio", "change", function() {
		if ((jQuery(this).val() == 'post') || (jQuery(this).val() == 'post+tt')|| (jQuery(this).val() == 'expressdienst')) {
			setWinkelwagenLoading(true);
			ajaxRequestWinkelwagen('muteer_verzendmethode', {verzendmethode:jQuery(this).val()});
		}
	});

	//	Radiobuttons voor aantallen of staffels in winkelwagen
	jQuery("#winkelwagenDiv").on("manual-click change click", "label .aantal_type", function() {
		jQuery(this).closest("ul").find(".aantalInput").val("0");
		updateMutaties();
	});

	jQuery("#winkelwagenDiv").on("change", ".aantalInput", function() {
		jQuery(this).closest("ul").find(".aantal_type_staffels").prop('checked', true);
		mutatie_timer = setTimeout("updateMutaties();", 750);
	});
	
	jQuery('#winkelwagenDiv').on('blur', '.winkelwagenregel-kortingscode', function() {
		jQuery.ajax({
			method: 'POST',
			url: 'webshop_ajax_winkelwagen.php',
			dataType: 'json',
			data: { actie: 'kortingscode_toevoegen', winkelwagenregelID: jQuery(this).data('winkelwagenregel-id'), kortingscode: jQuery(this).val() }
		}).done(function(jsonResponse) {
			if((typeof jsonResponse !== 'undefined')){
				console.log(jsonResponse);
				if(jsonResponse.statustxt != 'goed'){
					changeActieMelding(jsonResponse.regelid, jsonResponse.statustxt, jsonResponse.mededeling);
					jQuery.notify({ message: jsonResponse.mededeling });
				}else if (jsonResponse.html.length != 0){
					jQuery('#winkelwagenDiv').html(jsonResponse.html);
				}
			}
		});
	}).on('click', '.kortingscode-verwijderen', function(e) {
		e.preventDefault();
		$.ajax({
			method: 'POST',
			url: 'webshop_ajax_winkelwagen.php',
			dataType: 'json',
			data: { actie: 'kortingscode_verwijderen', winkelwagenregelID: jQuery(this).data('winkelwagenregel-id'), kortingscode: '' }

		}).done(function(jsonResponse) {
			if((typeof jsonResponse !== 'undefined') && jsonResponse.html.length != 0){
				jQuery('#winkelwagenDiv').html(jsonResponse.html);
			}
		});
	}).on("click","a.actiecode-link", function(e){
		e.preventDefault();
		var acplaceholder = ".actiecode-container.container-" + jQuery(this).attr("data-actie-container");
		if(jQuery(acplaceholder).hasClass("hide")){
			jQuery(acplaceholder).removeClass("hide");
		}else{
			jQuery(acplaceholder).addClass("hide");
		}
	});
});