var shippingDemandController = Class.create(
{
	initialize: function(radioDemandId, radioCreditId, acceptCheckBoxId)
	{
		if(!$(radioDemandId)) { return false; }
		this.accept = false;
		
		this.setObservers(radioDemandId, radioCreditId, acceptCheckBoxId);
	},
	
	setObservers: function(demandId, creditId, acceptId)
	{
		var self = this;
		$(demandId).disabled = true;
		$(demandId).observe('click', function()
		{
			if(self.accept == true)
			{
			}
			else
			{
				$(creditId).click();
				return false;
			}
		});
		$(acceptId).observe('click', function()
		{
			if($(this).checked == true)
			{
				self.accept = true;
				$(demandId).disabled = false;
			}
			else
			{
				self.accept = false;
				$(creditId).click();
				$(demandId).disabled = true;
			}
		});
	}	

});


var JiggyCargoModule = Class.create(
{
	initialize: function(cargoObj)
	{
		if(!cargoObj) {return false;}
		if(!$(cargoObj.totalTaxHolder)) { return false; }
		this.isHighlighted = false;
		this.demandController = new shippingDemandController('paymentMethodId_cod', 'paymentMethodId_dibs', 'akseptoppkrav');
		this.setObservers(cargoObj);
		if($(cargoObj.zipValueId).value.length == 4)
		{
			this.checkCheckoutData(cargoObj);
		}
	},
	
	setObservers: function(cargoObj)
	{
		var self = this;
		Event.observe(cargoObj.zipValueId, 'keyup', function()
		{
			if($(cargoObj.zipValueId).value.length == 4)
			{
				this.checkCheckoutData(cargoObj);
			}
		}.bind(this));
		$(cargoObj.shippingDelivery).observe('click', function()
		{
			if(this.demandController.accept == true)
			{
				this.checkCheckoutData(cargoObj);
			}
			else
			{
				return false;
				//console.log('feiler');
			}
		}.bind(this));

		$(cargoObj.paymentDemand).observe('click', function()
		{
			this.checkCheckoutData(cargoObj);
		}.bind(this));

		$(cargoObj.paymentCreditCard).observe('click', function()
		{
			this.checkCheckoutData(cargoObj);
		}.bind(this));
	},
	
	checkCheckoutData: function(cargoObj)
	{
		var demand = 0;

		if($(cargoObj.paymentDemand).checked == true)
		{
			demand = 1;
		}
		this.changeZip($(cargoObj.zipValueId).value, cargoObj, demand);
	},
	
	changeZip: function(zipValue, cargoObj, demand)
	{
		var self = this;
		new Ajax.Request('/index.php',
		{
			method: 'get',
			parameters: {
				'c_' : 'Jiggy_ShippingDisplay',
				'm_' : 'displayShipping',
				'ajax' : '1',
				'zip' : zipValue,
				'demand' : demand || 0	
			},
			onSuccess: function(transport)
			{
				var ShipObj = transport.responseText.evalJSON();
				var sumContainer = cargoObj.totalTaxHolder;
				if(self.isHighlighted == false)
				{
					if($(cargoObj.totalTaxHolder).innerHTML != ShipObj.sumimva)
					{
						new Effect.Highlight(sumContainer, 
						{ 
							startcolor: '#8BE6FA',
							endcolor: '#FFFFFF',
							beforeStart: function()
							{
								self.isHighlighted = true;
							},
							afterFinish: function()
							{
								self.isHighlighted = false;
								$(sumContainer).setStyle({'backgroundColor':'#FFFFFF'});
							}
						});
					}
				}
				$(cargoObj.totalTaxHolder).update(ShipObj.sumimva);
			}
		});
	}	
});

Event.observe(window, 'load', function()
{
	var checkout = new JiggyCargoModule(
	{
		zipValueId : 'shippingZip',
		shippingDelivery : 'paymentMethodId_cod',
		paymentCreditCard : 'paymentMethodId_dibs',
		totalTaxHolder: 'sum',
		paymentDemand : 'paymentMethodId_cod',
		cargoHolder : '',
		totalHolder : ''
	});	
});