$(function () {

  initialize_menu();
  init_winkelwagen();
  init_check_bezorg();
  init_check_uwboni();
  init_bestellen();
  init_filters_en_sortering();
  init_winkelwagen_pagina();
  init_featured_carroussel();
  init_quicksearch();

  // cross browser placeholders
  $("input, textarea").placehold();

  //Spinners
  bindSpinners();

  //Fancybox
  $(".lightbox").fancybox();
  $(".inline-lightbox").fancybox({
		'hideOnContentClick': true,
		'overlayShow': false,
    'autoDimensions'	: false,
    'width': 400
	});

  //Nieuwsbrief submit
  $(function () {
		$("#aanmeldenNieuwsbriefForm #btnsubmit").live("click", function () {
			$("#aanmeldenNieuwsbriefForm").submit();
		});
		$("#aanmeldenNieuwsbriefForm").submit(function (e) {
			$.post($(this).attr("action"), $(this).serialize(), function (data) {
				if (data.Url) {
					window.location = data.Url;
					return false;
				}
				$("#aanmeldenNieuwsbriefForm").replaceWith(data);
			});
			e.preventDefault();
		});
	});

  $("img").bind("contextmenu", function () {
    return false;
  });

  // font replace
  Cufon.replace('.cr');


});

function bindSpinners() {
  // aantal spinners
  $(".spinnerNul").spinner({ min: 0, max: 99 });
  $(".spinnerEen").spinner({ min: 1, max: 99 });
  $(".spinner").attr("size", "2");
}

function UpdateWinkelwagen(open) {

	var winkelwagen = $("#miniwinkelwagen");

	$.post("/webwinkel/winkelwagen/miniWinkelwagen", null, function (data) {

		winkelwagen.replaceWith(data);
		if (open) {
			$("#winkelmand-lijst").removeClass("hidden");
		}

		$("#winkelmand-lijst .spinnerEen").spinner({ min: 1, max: 99 });

		// ook weer binden
		init_winkelwagen();

	});

}

function init_filters_en_sortering() {

	// filters
	var merkenoverflow = $(".merkenoverflow");

	merkenoverflow.hide();
	$("#toggleMerken").live("click", function () {
		merkenoverflow.toggle();
		var label = $(this).children("em").first();
		if (label.html() == "meer")
			label.html("minder");
		else
			label.html("meer");
	});

	$(".filter-nav .checkbox").live("change", function () {
		var form = $(this).parents("form").first();
		form.submit();
	});

	// sortering
	$(".sorteerbalk .sorterenop li a.sort").live("click", function () {
		var self = $(this);
		var form = self.parents("form").first();
		var mode = self.html()//data("sortmode");
		form.find(".SorteerMode").val(mode);
		form.submit();
		return false;
	});

	$(".sorteerbalk .sorterenop li a.weergave").live("click", function () {
		var self = $(this);
		var form = self.parents("form").first();
		var mode = self.html()//data("weergavemode");
		form.find(".WeergaveModus").val(mode);
		form.submit();
		return false;
	});

	$(".appddl").live("change", function () {
		$(".ProductenperPagina").val($(this).val());
		$(this).parents("form").first().submit();
	});

}

function init_bestellen() {

	var isdetail = $("#productdetail").length;

	var bestelknoppen = $(".bestelKnop");
	bestelknoppen.live("click", function () {

	  var self = $(this);
	  var productkaart = self.parents(".productkaart");

	  var artikelnummer = self.data("artikelnummer");
	  var aantal = parseInt(productkaart.find(".spinner").val());

	  if (artikelnummer === 'undefined' || isNaN(aantal) || aantal < 1)
	    return;

	  bestel(artikelnummer, aantal, function () {

	    // klaar, popup tonen
	    var popup = productkaart.find(".popup-toegevoegd");

	    // als er al een is, weghalen
	    if (popup.length) {
	      popup.remove();
	    }

	    // en weer een toevoegen
	    popup = $('<div class="popup-toegevoegd">Dit artikel is toegevoegd aan uw winkelwagentje</div>');
	    productkaart.append(popup);

	    setTimeout(function () {
	      popup.fadeOut(300);
	    }, 2000);

	  });

	  return false;
	});
}

function bestel(artikelnummer, aantal, callback) {

	var bestelurl = $("#winkelwagen-url").val();

	// doe bestellen
	$.ajax({
		type: "POST",
		url: bestelurl + "/" + artikelnummer,
		data: {
			aantal: aantal
		},
		success: function (data, textStatus, jqXHR) {
			if (data == "SUCCESS") {
				UpdateWinkelwagen();

				if (typeof (callback) === 'function')
					callback.call();
			}

		},
		error: function (xhr, status, error) {
			// er ging iets fout, hoeft niets hersteld te worden
		}
	});

}

function init_quicksearch() {

	var zoekterm = $("#header-zoeken #Zoekterm.producten");
	if (zoekterm.length > 0) {
		var zoekform = $("#zoekForm");
		zoekterm.autocomplete({
			source: "/zoek/quicksearch",
			minLength: 3,
			select: function (event, ui) {
				if (ui.item)
					window.location = ui.item.url;
			},
			open: function () {

				var li = $("<li class=\"clearfix linkmeer\"></li>");
				var link = $("<a/>", {
					'id': 'meerLink',
					'class': 'bullet-link',
					'text': 'Meer..',
					'click': function () {
						zoekform.submit();
					}
				}).appendTo(li);
				li.appendTo(".ui-autocomplete");

			}
		});

		// autocompleter items opbouwen
		zoekterm.data("autocomplete")._renderItem = function (ul, item) {

			var li = $('<li class="searchitem clearfix"><a href="' + item.url + '"><span class="titel">' + item.label + '</span><span class="prijs">' + item.prijs + '</span></a></li>');
			li.append($("<p></p>", {
				'click': function () {
					bestel(item.artikelnummer, 1, null);
				},
				'class': 'bullet-link'
			}));
			li.data('item.autocomplete', item);

			return li.appendTo(ul);
		};

		$('.ui-autocomplete #meerLink').live("click", function () {
			zoekform.submit();
			return false;
		});
	}
}

//Updaten winkelwagepagina
function UpdateWinkelwagenPagina(data) {


  $("table#winkelwagen").replaceWith(data);
  bindSpinners();

  UpdateWinkelwagen(false);
}


function initialize_menu() {

	var uitklapbaars = $(".uitklapbaar");
	var uitklapnavs = $(".uitklapnav");

	// posities berekenen
	uitklapbaars.each(function () {

		var uitklapli = $(this);
		var catId = uitklapli.attr("id").split("-")[1];
		var uitklap = $("#drop-" + catId).first();
		var bullet = uitklap.children(".bullet").first();
		var halfWidth = uitklapli.width() / 2;
		var uitklapwidth = uitklap.outerWidth();
		var lileft = uitklapli.position().left + 9;
		var uitklapleft = lileft;
		var offset = 0;
		if (lileft + uitklapwidth > 930) {
			offset = lileft + uitklapwidth - 930;
			uitklapleft = lileft - offset
		}
		uitklap.css("left", uitklapleft + "px");
		bullet.css("left", halfWidth - (bullet.outerWidth() / 2) + offset + "px");

	});

	
	var doc = $(document);

	// de baars
	doc.delegate('.uitklapbaar', 'mouseenter', function() {
		$("." + this.id).show();
	});

	doc.delegate('.uitklapbaar', 'mouseleave', function() {
		$("." + this.id).hide();
	});


	// de navs
	doc.delegate('.uitklapnav', 'mouseenter', function() {
		var catId = this.id.split("-")[1];
		$("#cat-" + catId).addClass("actief");
		$(this).show();
	});

	doc.delegate('.uitklapnav', 'mouseleave', function() {
		var catId = this.id.split("-")[1];
		$("#cat-" + catId).removeClass("actief");
		$(this).hide();
	});

}

function init_check_uwboni() {

	var winkeldichtbijform = $("#winkelDichtbijForm");
	if (!winkeldichtbijform.length)
		return;


winkeldichtbijform.submit(function (e) {

  $.post($(this).attr("action"), $(this).serialize(), function (data) {
    if (data.Url) {
      window.location = data.Url;
      return false;
    }
    else {
      winkeldichtbijform.find(".foutmelding").remove();
      winkeldichtbijform.prepend("<p class='foutmelding'>" + data.Error + "</p>");
    }
  });

  e.preventDefault();
});

	$("#PostcodeToCheck").placehold();
}

function init_check_bezorg() {

	var bezorgform = $("#checkbezorgform");
	if (!bezorgform.length)
		return;

	bezorgform.submit(function (e) {
		$.post($(this).attr("action"), $(this).serialize(), function (data) {
			if (data.Url) {
				window.location = data.Url;
				return false;
			}
			bezorgform.parent("#bezorgFormDiv").replaceWith(data);
		});
		e.preventDefault();
	});

	$("#PostcodeToCheck").placehold();

}

function init_winkelwagen() {

	var btn = $("#miniwinkelwagen .button-winkellijst");
	var lijst = $("#winkelmand-lijst");

	// winkelmand openen/sluiten dmv winkelmand link
	btn.bind('click', function () {
		lijst.toggleClass('hidden');
		return false;
	});

	// winkelmand sluiten dmv knopje
	$("#winkelmand-lijst-sluitlink").bind("click", function () {
		lijst.toggleClass('hidden');
		return false;
	});

	// aantal updaten
	$("#winkelmand-lijst input.spinner:not(.spinnerNul)").bind("change blur", function (event, ui) {
		$(this).parents("form").first().submit();
		return false;
	});

	$("#winkelmand-lijst .verwijderProduct").bind("click", function () {
		$(this).parents("form").first().submit();
		return false;
	});

	// bij het wijzigen van het aantal
	$("#winkelmand-lijst .updateForm").bind("submit", function () {
		$.post($(this).attr("action"), $(this).serialize(), function (data) {
			UpdateWinkelwagen(true);
			return false;
		});
		return false;
	});

	// bij het verwijderen van het item
	$("#winkelmand-lijst .deleteForm").bind("submit", function () {
		$.post($(this).attr("action"), $(this).serialize(), function (data) {
			UpdateWinkelwagen(true);
			return false;
		});
		return false;
	});
}

function init_winkelwagen_pagina() {

	var wrapper = $("#winkelmand-wrapper");
	if (!wrapper.length) {
		return;
	}

	var bestelurl = $("#update-aantal-url").val();
	var verwijderurl = $("#verwijder-url").val();

	$("#winkelmand-wrapper .spinnerEen").live("change", function () {
		var artikelnummer = $(this).parents("tr").first().children(".artikelnummer").html();
		$.post(bestelurl, { artikelnummer: artikelnummer, aantal: $(this).val() }, function (data) {
			UpdateWinkelwagenPagina(data);
		});
	});

	$("#winkelmand-wrapper .ui-spinner-button").live("click", function () {
	  var input = $(this).prevAll("input[name=aantal]:not(.spinnerNul)");
	  if (!input.length)
	    return;

	  var artikelnummer = $(this).parents("tr").first().children(".artikelnummer").html();
	  $.post(bestelurl, { artikelnummer: artikelnummer, aantal: input.val() }, function (data) {
	    UpdateWinkelwagenPagina(data);
	  });
	});

	$("#winkelmand-wrapper .button-verwijderen").live("click", function () {
		var regelId = $(this).attr("id").split("-")[1];
		$.post(verwijderurl, { orderRegelID: regelId }, function (data) {
			location.reload();
		});
	});

	$("#btnAddKortingscode").live("click", function () {
		var form = $(this).parents("form").first();
		$.post(form.attr('action'), form.serialize(), function (data) {
			if (data == "OK")
				location.reload();
			else {
				form.replaceWith(data);
				$("#Code").placehold();
			}
		});
		return false;
	});

	$("#btnVerwijderKortingscode").live("click", function () {
		var form = $(this).parents("form").first();
		$.post(form.attr('action'), form.serialize(), function (data) {
			location.reload();
		});
		return false;
	});

	if ($("#actiestreep").next().attr("class") != "actieregel")
		$("#actiestreep").css("display", "none");

}

/*
De featured slider op de homepage & webshop home
*/
function init_featured_carroussel() {
	
	var featured = $("#featured.enabled");
	if (!featured.length)
		return;

	// featured scrollables die aan staan
	featured
		.scrollable({
			items: '.slides',
			keyboard: false,
			circular: true,
			speed: 800
		})
		.navigator('#featured.enabled .nav li')
		.autoscroll({ autoplay: true, interval: 6000 });

}
