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

// Namespacing the code so the examples don't clash.
var net = {};
net.kvdb = {};
net.kvdb.Range = {};
var _range = net.kvdb.Range;

_range.isValidPostcode = function(postcode) {
        // Check if input is a valid 4PP.
        return /^\d{4}$/.test(postcode);
}

_range.lastLookup = null;
_range.fromRange = function(e) {
  //Script alleen uitvoeren wanneer zowel productgroep als postcode zijn geselecteerd/ingevoerd.
  if (document.getElementById('postcode').value != '' && document.getElementById('productgroep').value != ''
	&& (document.getElementById('productgroep').value == 1 && document.getElementById('subproductgroep').value != '')
  ) {
    // Only request a lookup if the user entered a new postcode or range.
    var postcode = document.getElementById('postcode').value;
  	var range = document.getElementById('range');
  	//range = range.options[range.selectedIndex].value; Dit alleen bij selectbox
  	range = range.value;
  	if (this.isValidPostcode(postcode)) {
  		// If the same range was already retrieved, skip.
      if (_range.lastLookup != postcode + range) {
        this.lookupRange();
      }
    } else {
      this.resetResults();
    }
    _range.lastLookup = postcode + range;
  }
}

_range.isBakkersProduct = function(e){
	if(e == "1"){
		document.getElementById('subproductgroep').style.display = 'block';
  	} else {
		document.getElementById('subproductgroep').style.display = 'none';
  	}
}

_range.submitForm = function(){
    if(document.getElementById('productgroep').value != 1 && document.getElementById('productgroep').value != '' && this.isValidPostcode(document.getElementById('postcode').value)){
        document.getElementById('nobp').value = 1;
        document.bestelform.submit();
    } else if(document.getElementById('productgroep').value == 1 && document.getElementById('subproductgroep').value != ''&& this.isValidPostcode(document.getElementById('postcode').value)){
        document.getElementById('nobp').value = 1;
        document.bestelform.submit();
    } else {
        document.getElementById('nobp').value = 0;
    }
}


_range.lookupRange = function() {
	// Perform a range lookup based on postcode

	// Clear fields.
	this.resetResults();

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

	var range_postcode = document.getElementById('postcode').value;
	var range = document.getElementById('range');
	//range = range.options[range.selectedIndex].value; Dit alleen bij selectbox
	range = range.value;
	this.loadScript('http://6pp.kvdb.net/services/getpostcode?fourpp=' + range_postcode + '&range=' + range + '&tg_format=json&jsonp=_range.showRangeResults');
}

_range.loadScript = function(url) {
  // Insert javascript dynamically for JSONP cross-site callback
  var script = document.createElement('script');
	script.type = 'text/javascript';
  script.src = url;
  document.getElementsByTagName('head')[0].appendChild(script);
}

_range.resetResults = function() {
	// Empty the result element
	//document.getElementById('range_results').innerHTML = ""; Dit gebruiken bij bijvoorbeeld een <div>
	document.getElementById('range_results').value = "";
}

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

  var verzenden = false;

  // Check the amount of results, or show an error.
  try {
		var count = json.result['postcodes'].length;
  }
  catch(err){
    if (err = "No geo information found for starting point") {
      alert("U heeft een ongeldige postcode ingevoerd.");
      document.getElementById('postcode').focus();
    } else {
      alert("FOUTE POSTCODE  " + json.result);
    }
  }

	// Show the neighbouring postcodes
	var range_results = document.getElementById('range_results');
	for (var i = 0; i < count; i++)
	{
		var fourpp = json.result['postcodes'][i]['fourpp'];
		var city_name = json.result['postcodes'][i]['city_name'];
		var distance = json.result['postcodes'][i]['distance'];
		//range_results.innerHTML += fourpp + ": " + city_name + " (" + distance + "km)<br/>"; Dit gebruiken bij bijvoorbeeld een <div>
		range_results.value += fourpp + "," + city_name + "," + distance;
		if (i != (count - 1)) {
		  range_results.value += ";";
		}
		verzenden = true;
	}
	//alert("Postcodes in hidden field zijn:\n" + range_results.value);
	if (verzenden) {
	  document.bestelform.submit();
	}
}


