/**
 * Wait for document to be loaded.
 */
$('document').ready(function() {

	// Disable right click (lol)

	$('body').mousedown(function(event) {
	 
		if(event.which == 3) {
			alert("Copyright Den Hollandsche");
			event.preventDefault();
			return false;
		}	
	});

	/**
	 * Even er voor zorgen dat na 6 items in 
	 * een submenu er een nieuwe kolom wordt gemaakt
	 *
	 */
	$("#nav_container > ul > li > ul > li > ul").each(function() {
		
		var column2 = [];
		
		$(this).children("li:nth-child(n + 7)").each(function() {
			column2.push($(this));
		});
		
		if(column2.length > 0) {
			$(this).parent().append("<ul class=\"sub-menu\"></ul>");
		}
		
		for(var i = 0; i < column2.length; i++) {
		
			$(this).parent().children("ul:last-child").append(column2[i]);
		
		}
		
	});
	
	if($("#query_resultaten").exists()) {
		
		$("input:checkbox").click(redraw);
		redraw();
		
	}
	
	$(".itemdb").each(function() {
		
		var id = $(this).data('id');

		// All available properties
		var image = $(this).find(".itemdb_afbeelding");
		var naam = $(this).find(".itemdb_naam");
		var identificatie = $(this).find(".itemdb_identificatie");
		var omschrijving = $(this).find(".itemdb_omschrijving");
		var materiaal = $(this).find(".itemdb_materiaal");
		var bijzonderheden = $(this).find(".itemdb_bijzonderheden");
		
		$.get(DBAPP_URL + "gravestone/id/" + id,

			function(data) {
				
				image.attr("src", DBIMAGE_URL + data.bestandsnaam);
				image.attr("alt", data.naam);
				image.parent().attr("href", DBIMAGE_URL + data.bestandsnaam);
				image.parent().attr("title", "Identificatie: " + data.identificatie);
								
				naam.html(data.naam);
				identificatie.html(data.identificatie);
				omschrijving.html(data.omschrijving);
				materiaal.html(data.materiaal);
				bijzonderheden.html(data.bijzonderheden);
				
			}, 'json'

		);
	
	});
	
	$(".fancybox").fancybox({
		"overlayColor": "#000",
		"padding": 0
	});
	
	$(".pagination").append($(".pagination_origin"));
	
});

/**
 * Add function exists() to jQuery
 */
jQuery.fn.exists = function(){return jQuery(this).length>0;}

/**
 * getResults
 * Puts query results in #query_resultaten
 */
function getResults(categories, price_from, price_to, page, per_page) {

	$.post(DBAPP_URL + "gravestones/list_gravestones", {categories: categories, price_from: price_from, price_to: price_to, page: page, per_page: per_page},
	
		function(data) {
			$("#query_resultaten").html(data);
			
			$(".pagination li a").click(function() {
				$(".pagination li").removeClass("current");
				$(this).parent().addClass("current");				
				redraw();
				return false;
			});
				
			$(".fancybox").fancybox({
				"overlayColor": "#000",
				"padding": 0
			});
			
			// hide all distant sibling pages
			
			var position = $(".pagination li.current").index();
			
			$(".pagination li").each(function() {
				
				if($(this).index() < (position - 2) || $(this).index() > (position + 2)) {
					$(this).hide();
				}
				
			});
			
			if(position > 3) {
			
				$(".pagination li:first-child").append("...");
			
			}
			
			$(".pagination li:first-child").show();
			
			if(position < $(".pagination li:last-child").index() - 3) {
			
				$(".pagination li:last-child").prepend("...");
				
			}
			
			$(".pagination li:last-child").show();
		}
		
	);
	
}

/**
 * Must be executed each time the page is rerendered.
 */
function redraw() {

	var categories = [];
	
	$("#categorie input:checked").each(function() {
	
		categories.push($(this).attr("rel"));
		
	});
	
	var category_string = categories.join('-');
	
	var price_from = $("#prijs_slider").slider("values", 0);
	var price_to = $("#prijs_slider").slider("values", 1);
	
	if(category_string != "") {
		
		var page = $(".pagination li.current a").html();
		if(!page) {
			page = 1;
		}
		
		var per_page = $("#query_resultaten").attr("rel");
		
		getResults(category_string, price_from, price_to, page, per_page);
	
	} else {
	
		$("#query_resultaten").html("");
		
	}

}

/**
 * Filters in sidebar
 */
 
$("#sidebar_right").prepend($("#filters"));

/**
 * Slider filter
 */
 
var min_prijs = $("#prijzen").data('van');
var max_prijs = $("#prijzen").data('tot');
 
$("#prijs_slider").slider({
	range: true,
	min: min_prijs,
	max: max_prijs,
	values: [ min_prijs, max_prijs ],
	step: 500,
	slide: function( event, ui ) {
		$( "#prijs_van" ).html( "Van &euro;" + ui.values[ 0 ] + ",-" );
		$( "#prijs_tot" ).html( "Tot &euro;" + ui.values[ 1 ] + ",-" );
		redraw();
	}
});

$( "#prijs_van" ).html( "Van &euro;" + $("#prijs_slider").slider("values", 0) + ",-" );
$( "#prijs_tot" ).html( "Tot &euro;" + $("#prijs_slider").slider("values", 1) + ",-" );

$("#prijs_slider").mouseup(redraw);
