Source: js/ZoekFormulier.js

/*
 * Copyright (c) 2013, Dienst Landelijk Gebied - Ministerie van Economische Zaken
 * 
 * Gepubliceerd onder de BSD 2-clause licentie, 
 * zie https://github.com/MinELenI/CBSviewer/blob/master/LICENSE.md voor de volledige licentie. 
 */
/**
 * Functies voor het zoekformulier zoals gedefinieerd in zoekformulier.jsp.
 * 
 * @fileoverview zorgt voor afhandeling van het adreszoek formulier.
 * @author mprins
 * @requires jQuery
 * @requires jQueryUI
 * @requires zoekformulier.jsp
 * @requires Viewer.js
 * @class {ZoekFormulier}
 */
var ZoekFormulier = {
	/**
	 * Aanhaken van autocomplete handler aan input veld van zoek formulier.
	 * 
	 * @constructor
	 */
	init : function(viewer) {
		// de zoekknop, method en action van formulier verwijderen, die hebben geen functie meer in de RIA
		jQuery('input:image').attr("disabled", true);
		jQuery('#zoekFormulier').removeAttr('action');
		jQuery('#zoekFormulier').removeAttr('method');
		jQuery('#adres').keypress(function (e){
			if (e.which == 13){
				jQuery('#searchbutton').focus().click();
				return false;
			}
		});
		// verborgen velden instellen voor RIA functies
		jQuery('#zoekFormulier').find('input[name="coreonly"]').val('false');
		jQuery('#zoekFormulier').find('input[name="forward"]').val('false');

		// aanhaken auto complete
		jQuery('#adres').autocomplete({
			source : function(request, response) {
				jQuery.ajax({
					url : 'adres',
					data : {
						adres : request.term,
						forward : false,
						format : 'json',
						coreonly : false
					},
					dataType : 'json'
				}).success(function(data) {
					var results = jQuery.map(data, function(val, i) {
						return {
							label : val.addressString,
							x : val.xCoord,
							y : val.yCoord,
							r : val.radius
						};
					});
					response(results);
				});
			},
			select : function(event, ui) {
				// console.debug(ui.item ? "Gekozen: " + ui.item.value + "
				// (x,y,r) :" + ui.item.x + ","
				// + ui.item.y + "," + ui.item.r : "Niets gekozen, de input was
				// " + this.value);
				if (ui.item) {
					Viewer.zoomTo(ui.item.x, ui.item.y, ui.item.r, true);
					//Viewer.featureInfo(ui.item.x, ui.item.y);
				}
			},
			// alleen items uit de lijst mogen ingevuld/gekozen worden
			change : function(event, ui) {
				if (!ui.item) {
					jQuery(this).val('');
				}
			},
			minLength : 4 /* characters */,
			delay : 400 /* milliseconds */,
			autoFocus : false
		});
	}
};