// hier komt de observer die zowel de check uitvoert voor de cart als de individuele items in de cart.
Event.observe(window, 'load', function() 
{
	// hier alvast automatisch mijn cartitems aanmaken.
    if($('streetservice') != null)
    {
    	var service = new UserService();
		
    	Event.observe('zipcode', 'focus', function()	{    service.fillFields();    	});
    	Event.observe('zipcode', 'blur', function()		{    service.fillFields();    	});
    	
    	Event.observe('streetnumber', 'blur', function()		{    service.fillFields();    	});
    	Event.observe('streetnumber', 'focus', function()		{    service.fillFields();    	});

    	Event.observe('formnawdata', 'submit', function(event) 
    	{
    		service.submitted = true;
    		
    		if(service.triggered)
    		{
    			$('nawsubmit').disabled = true;
    			$('formmessage').innerHTML = 'Een ogenblik geduld...';
    			event.stop();
    		}
    		else
    		{		
    			$('formnawdata').submit();
    		}
    	});
		    	
    	Event.observe('country', 'change', function(event) 
    	{
    		service.changeCountry()
    	});
    }
}
);

var UserService = Class.create
(
		{
			initialize: function()
			{
				this.streetnumber = '';
				this.zipcode 			= '';
				this.street 			= '';
				this.place 				= '';
				this.knownstreetnumber 	= '';
				this.knownzipcode		= '';
				this.triggered			= false;
				this.submitted 			= false;
			},
			fillFields: function(event)
			{
				if(!$('zipcode').value.empty())
				{
					this.zipcode = $('zipcode').value;
					this.fieldsAreFilled();
				}
				if(!$('streetnumber').value.empty())
				{
					this.streetnumber = $('streetnumber').value;
					this.fieldsAreFilled();
				}
			},
			fieldsAreFilled: function()
			{
				if(!this.streetnumber.empty() && !this.zipcode.empty())
				{
					if((this.knownstreetnumber != this.streetnumber) || (this.knownzipcode != this.zipcode))
					{
						if ($('country').value == 147)
						{	
							this.performWebserviceRequest();
						}
					}
				}
			},
			performWebserviceRequest: function()
			{								
				this.knownstreetnumber 	= this.streetnumber;
				this.knownzipcode 		= this.zipcode;
				
				var self = this;  
			    var url = '/_ctrl/auth/new/ajax';
			    
			    self.triggered = true;
			    var AllOptions = 
			    {
			        method: 'post',
			        parameters: { address: this.zipcode+this.streetnumber },
			        
			        onSuccess: function(oXHR, oJson)
			        {    
			            //self.updateCart(oXHR, oJson);
			            jsonobj 	= oXHR.responseText.evalJSON();
			    		if(jsonobj[0] == undefined)
			            {
			            	self.street = '';
			            	self.place 	= '';
							
			            	$('street').style.display = 'block';
							$('place').style.display = 'block';
							$('streetservice').hide();
							$('placeservice').hide();
							
							//$('streetservice').update('test');
							//$('placeservice').update('test');
							$('street').value = '';
							//$('streetservice').value = 'test';
							$('place').value = '';
			            }
			            else if(jsonobj[0] == 'error')
			            {
			            	
			            	$('streetservice').update(jsonobj[1]);
			            }
			            else
			            {
				            self.street 		= jsonobj[0];
				            self.place			= jsonobj[1];
			           
				            self.updateRegistration();
			            }
			            self.triggered = false;
			            
			            if(self.submitted)
			            {
			            	$('formnawdata').submit();
			            	
			            }
			            		            
			        },
			        onFailure: function(oXHR, oJson)
			        {
				        alert('mislukt om een ajax request uit te voeren.');
						
			        }
			    }
			    
			    var myAjax = new Ajax.Request(url, AllOptions);	
				
			},
			updateRegistration: function()
			{
				$('streetservice').update(this.street);
				$('placeservice').update(this.place);
				$('street').value = this.street;
				$('place').value = this.place;
			},
			changeCountry: function()
			{
				countryid = $('country').value;
				
				if (countryid == 147)
				{
					$('street').style.display = 'none';
					$('place').style.display = 'none';
					$('streetservice').show();
					$('placeservice').show();
					
				}
				else
				{
					$('street').style.display = 'block';
					$('place').style.display = 'block';
					$('streetservice').hide();
					$('placeservice').hide();
				}
				
			}
		}
);


