$(document).ready(function()
{
	$.extend({
		gegevens_status: function(callback)
		{
			$.ajax({
				url: '/v4/p/overige-diensten/ajax/gegevens.php?action=status',
				type: 'GET',
				dataType: 'json',
				success: function(json)
				{
					if (undefined != callback)
					{
						return callback(json);
					}
					return json;
				}
			});
		},
		gegevens_load: function(callback)
		{
			$.gegevens_status(function(json)
			{
				$("input[name=storage][value="+ json.storage +"]").attr("checked", "checked");
				$.each(json.gegevens, function(i, n)
				{
					if (n.length > 0)
					{
						var a = $("input[@title=offerte_input][name="+ i +"]");
						a.attr("value", unescape(n));
						$.geg___inputValid(a);
					}
				});
			});
		},
		/*item: function(type)
		{
			$.ajax({
				url: 'ajax/item.php?type=' + type,
				type: 'GET',
				dataType: 'json',
				success: function(json)
				{
					if (callback != undefined)
					{
						return callback(json);
					}
					return json;
				}
			});
		},*/
		geg___inputHandle: function(ob, action)
		{
			$.get('/v4/p/overige-diensten/ajax/gegevens.php',
			{
				name: ob.name,
				value: escape(ob.value),
				action: action
			});
            
            // If zipCode has been changed, fetch address + city information from
            // database and copy it to the appropriate fields.
            
            if ("Postcode" == ob.name) {
                $.ajax(
                {
                    url: '/shop/ajax/gegevens/address.php',
                    type: 'GET',
                    data: {"zipCode": ob.value},
                    dataType: 'json',
                    success: function(json) {
                        if (false === json) {
                            return;
                        }
                        
                        $('input[name=Straat]').attr("value", json.straatnaam);
                        $('input[name=Straat]').trigger("change");
                        $('input[name=Plaats]').attr("value", json.plaatsnaam);
                        $('input[name=Plaats]').trigger("change");
                    }
                });
            }
		},
		geg___inputValid: function(ob)
		{
			if (ob.name == 'Geslacht')
			{
				return;
			}

			$(ob).css('color', 'green');

			if ($(ob).parent().parent().hasClass('mark_geg_tableLoReq'))
			{
				$(ob).parent().parent().removeClass('geg_tableLoRequired');
				if ($(ob).parent().parent().hasClass('geg_tableLoError'))
				{
					$(ob).parent().parent().removeClass('geg_tableLoError');
				}
				$(ob).parent().parent().addClass('geg_tableLoSucces');
			}

			$('input[name='+ ob.name +']').css('color', 'green');

			if ($(ob).parent().next().children()[0])
			{
				$(ob).parent().next().children()[0].src = '/images/shop/accept.gif';
			}
		},
		geg___inputInvalid: function(ob)
		{
			$(ob).css('color', 'red');

			if ($(ob).parent().parent().hasClass('mark_geg_tableLoReq'))
			{
				$(ob).parent().parent().removeClass('geg_tableLoRequired');
				if ($(ob).parent().parent().hasClass('geg_tableLoSucces'))
				{
					$(ob).parent().parent().removeClass('geg_tableLoSucces');
				}
				$(ob).parent().parent().addClass('geg_tableLoError');
			}

			$('input[name='+ ob.name +']').css('color', 'red');

			if ($(ob).parent().next().children()[0])
			{
				$(ob).parent().next().children()[0].src = '/images/shop/cancel.gif';
			}
		}
	});
});

var bs =
{
	input_listen: function(ob)
	{
		if (Validators.validate(ob.name, ob.value))
		{
			$.geg___inputHandle(ob, 'add');
			$.geg___inputValid(ob);
		}
		else {
			$.geg___inputHandle(ob, 'remove');
			$.geg___inputInvalid(ob);
		}
	},
	offerte: function()
	{
		var method = $("input[name=offerte_method]:checked").attr('value');
		var required = new Array('Achternaam','Voorletters','Straat','Huisnummer','Postcode','Telefoonnummer');
		for (var i in required)
		{
			if (!$("input[name=Achternaam]").parent().parent().hasClass('geg_tableLoSucces'))
			{
				alert(required[i] + ' invullen a.u.b.');
				return false;
			}
		}
		switch (method)
		{
			case 'email':
				if ($('input[name=E-mail]').css('color') != 'green')
				{
					alert('E-mail invullen a.u.b.');
					return false;
				}
			break;
			case 'fax':
				if ($('input[name=Faxnummer]').css('color') != 'green')
				{
					alert('Fax invullen a.u.b.');
					return false;
				}
			break;
		}

		window.location = '/overige-diensten/offerte?type=' + method;
	}
}

$(document).ready(function()
{
	$("#form").submit(function()
	{
		return bs.offerte();
	});
	$("input.geg___gegInput").change(function()
	{
		bs.input_listen(this);
	});
	$("select[name=Geslacht]").change(function()
	{
		bs.input_listen(this);
	});
	/*
	$("input[name=storage]").click(function()
	{
		$.geg___inputHandle(this, 'storage');
	});
	*/
	$.gegevens_load();
});
