﻿function Zipcode(sInterfaceURL, sZipcodeElementID, sHousenumberElementID, sFeedbackElementID)
{
	this.init(sInterfaceURL, sZipcodeElementID, sHousenumberElementID, sFeedbackElementID);
	this.identifier = (this._self = "$_ZipcodeObject") + sFeedbackElementID;
	window[this.identifier] = this;
};
Zipcode.prototype.init = function(sInterfaceURL, sZipcodeElementID, sHousenumberElementID, sFeedbackElementID)
{
	this._interface = sInterfaceURL || "/interface.php";
	this._feedbackelement = document.getElementById(sFeedbackElementID);
	this._zipcodeelement = document.getElementById(sZipcodeElementID);
	this._housenumberelement = document.getElementById(sHousenumberElementID);
	this._streetelement = document.getElementById("straat");
	this._cityelement = document.getElementById("plaats");
	this._zipcodeelement._parent = this;
	this._zipcodeelement.onkeyup = this._submitHandler;
	this._housenumberelement._parent = this;
	this._housenumberelement.onkeyup = this._submitHandler;
	this.timeout = false;

	//prefill default
	if (this._feedbackelement.innerHTML == "" || this._feedbackelement.innerHTML == "<!-- -->" || this._feedbackelement.innerHTML == " , ")
		this.submitHandler();
};

Zipcode.prototype._submitHandler = function()
{
	//this._parent._feedbackelement.innerHTML = "&nbsp;&nbsp;<img src='/img/smallloader.gif' />";
	clearTimeout(this._parent.timeout);
	this._parent.timeout = setTimeout("window['" + this._parent.identifier + "'].submitHandler()", 1000);
	return false;
};
Zipcode.prototype.submitHandler = function()
{
	var oVariable = new Object();
	oVariable.zipcode = this._zipcodeelement.value;
	oVariable.housenumber = this._housenumberelement.value;
	oVariable.command = "checkzipcode";

	var oXML = new klib3.xml();
	oXML._parent = this;
	oXML._feedback = this._feedbackelement;
	oXML._street = this._streetelement;
	oXML._city = this._cityelement;
	oXML.onload = function()
	{
		var oStatus = new Status(this);
		this._feedback.className = "zipcodefeedback " + (oStatus.status == "OK" ? "zipcodeok" : "zipcodeerror");
		this._feedback.innerHTML = oStatus.message;
		this._feedback.style.display = "block";
		if (oStatus.content)
		{
			if (oStatus.content.street && this._street)
				this._street.value = oStatus.content.street
			if (oStatus.content.city && this._city)
				this._city.value = oStatus.content.city
		}
	};

	oXML.post(this._interface, true, oVariable);
};
