/*
See http://6pp.kvdb.net on how to use this script.
*/

function fromPostcode(e) {
	// Only request a lookup if the user pressed enter from the postcode field.
	// Otherwise, wait for street number to be entered.
	var keynum;
	if(window.event) // IE
	{
		keynum = window.event.keyCode;
	}
	else if(e.which) // Netscape/Firefox/Opera
	{
		keynum = e.which;
	}

	var KEY_TAB = 9;
	var KEY_RETURN = 13;
	if (keynum == KEY_RETURN || keynum == KEY_TAB)
	{
		lookup();
	}
}

function lookup() {
	// Perform an address lookup based on postcode and -if entered- street number.

	// Clear the street / city result fields.
	resetResults();

	// Enable spinner, so the user knows the lookup is being performed.
	var spinner = document.getElementById("spinner");
	if (spinner) {
		spinner.style.display = '';
	}

	var streetnumber = document.getElementById('Huisnummer').value;
	var postcode = document.getElementById('postcode').value;
	loadScript('http://6pp.kvdb.net/services/lookup?postcode=' + escape(postcode) + '&streetnumber=' + escape(streetnumber) + '&tg_format=json&jsonp=showLookupResults');
}

function edit() {
	// Return street information with postcode + street number to improve the 6pp database.
        var postcode = document.getElementById('postcode').value;
	var streets = document.getElementById('streets');
        // But only if the user chose a street instead of the default text.
	if (streets.selectedIndex == 0) { return; }
	var straatnaam = streets.options[streets.selectedIndex].text;
	var city = document.getElementById('Woonplaats').value;
	var streetnumber = document.getElementById('Huisnummer').value;
	// After the submit, perform lookup again to get the new data.
	loadScript('http://6pp.kvdb.net/services/feedback?postcode=' + escape(postcode) + '&street=' + escape(straatnaam) + '&city=' + escape(city) + '&streetnumber=' + escape(streetnumber) + '&tg_format=json&jsonp=lookup');
}

function loadScript(url)
{
	var script = document.createElement('script');
	script.src = url;
	document.getElementsByTagName('head')[0].appendChild(script);
}

function resetResults() {
	// Empty single street result field
	document.getElementById('Straatnaam').value = "";
	// Empty multiple streets result listbox
	document.getElementById('streets').options.lenght = 0;
	// Empty city result field
	document.getElementById('Woonplaats').value = "";
}

function showSingleAddress() {
	// Hide the multiple address elements
	var streets = document.getElementById('streets');
	streets.style.display = 'none';
	// Show the single address elements
	var street = document.getElementById('Straatnaam');
	street.style.display = '';
}

function showManyAddresses() {
	// Hide the single address elements
	var street = document.getElementById('Straatnaam');
	street.style.display = 'none';
	// Show the multiple address elements
	var streets = document.getElementById('streets');
	streets.style.display = '';
}

function showLookupResults(json) {
	// Disable spinner
	var spinner = document.getElementById("spinner");
	if (spinner) {
		spinner.style.display = 'none';
	}

        if (json.result == 'Invalid input') {
            document.getElementById('Woonplaats').value = "Ongeldige invoer";
            return;
        }
        var count = json.result.length;
	if (count == 0) {
		// No results found
	} else {
		// Always display the city
		document.getElementById('Woonplaats').value = json.result[0].city;
		if (count == 1) {
			// There's exactly one address available. Show the street if available (only on 6pp, not 4pp)
			showSingleAddress();
			var street = json.result[0].street;
			if (street) {
				document.getElementById('Straatnaam').value = street;
			}
		} else {
			// There are more known addresses for this postcode (+ street number). Show all options.
			showManyAddresses();
			var streets = document.getElementById('streets');
			streets.options[0] = new Option("Maak uw keuze uit " + count + " straten.", "Placeholder");
			for (var i = 0; i < count; i++)
			{
				var street = json.result[i].street;
				streets.options[i+1] = new Option(street, i);
			}
		}
	}
}


function removeJavascriptWarning() {
	// Remove the "require javascript" warning if javascript is enabled
	var jswarning = document.getElementById('jswarning');
	if (jswarning) {
		jswarning.parentNode.removeChild(jswarning);
	}
}
