/**
 * Bestillingsskjema. Blir brukt i "Skjematabs (mal)".
 *
 * @author Adrian Dvergsdal
 * @since 2009
 */
var EbruOrderForm = Class.create(
{
	/**
	 * Konstruktør
	 */
	initialize: function(id)
	{
		var self = this;
	
		// ID-er
		this.containerId = id['container'];
		this.quickButtonsId = id['quickButtons'];
		
		// Forutsetninger
		if (!$(this.containerId))
		{
			return false;
		}
		
		// Events
		$$('#'+self.containerId+' .count').each(function(input)
		{
			Event.observe(input, 'keyup', function()
			{
				self.updateTotalPrice();
			});
		});
		$$('#'+self.containerId+' .select').each(function(input)
		{
			Event.observe(input, 'click', function()
			{
				self.updateTotalPrice();
			});
		});
		
		// Lag hurtigknapper
		self.createQuickButtons();
		
		// Trykk på den første tab-en
		$$('#formTabs li a').first().fire('nu:click');
		
		// Oppdater prisene
		self.updateTotalPrice();
	},
	
	/**
	 * Oppdaterer totalprisen basert på antall produkter og tjenester valgt
	 */
	updateTotalPrice: function()
	{
		var self = this;
	
		// Alle produktlinjer
		var orders = $$('#'+self.containerId+' .order-line');
		
		// Alle priser
		var establishChargeElements = $$('#'+self.containerId+' .establish-charge');
		var monthlyFeeElements		= $$('#'+self.containerId+' .monthly-fee');
		var totalEstablishCharge 	= 0;
		var totalMonthlyFee 	 	= 0;
		
		orders.each(function(order, index) 
		{
			var orderCount = 0;
		
			// Tekstboks med antall
			var countElement = $$('#'+$(order).readAttribute('id')+' .count').first();
			
			// Avkrysningsboks
			var selectElement = $$('#'+$(order).readAttribute('id')+' .select').first();
			
			if (countElement != undefined)
			{
				// Bruk tekstboks
				orderCount = self.realInt(countElement.value);
			}
			else if (selectElement != undefined)
			{
				// Bruk avkrysningsboks
				if ($(selectElement).getValue())
				{
					orderCount = 1;
				}
			}
			else
			{
				// Ingenting å bruke, bare legg til pris én gang
				orderCount = 1;
			}
			
			// Priser
			var establishCharge = establishChargeElements[index].innerHTML;
			var monthlyFee 		= monthlyFeeElements[index].innerHTML;
			
			if (orderCount > 0)
			{
				// Pluss på totalpris
				totalEstablishCharge = totalEstablishCharge + self.realInt(establishCharge) * orderCount;
				totalMonthlyFee = totalMonthlyFee + self.realInt(monthlyFee) * orderCount;
			}
		});
		
		// Oppdater totalpriser
		$('total-establish-charge').innerHTML 	= totalEstablishCharge;
		$('total-monthly-fee').innerHTML 		= totalMonthlyFee;
	},
	
	/**
	 * Oppretter hurtigknapper
	 */
	createQuickButtons: function()
	{
		var self = this;
		
		// HTML-mal for hver hurtigknapp
		var template = '<div id="#{id}" class="quickButton">#{name}</div>';
		
		// Legg til hurtigknapper, om innholdsmal er lagt inn for det
		if ($(self.quickButtonsId))
		{
			// ID-ene til orginal-knappene
			buttonIds = [
				'formFastOrder',
				'formCallMe',
				'formDemo',
				'formSendInfo'	
			]
			
			// Går igjennom alle knappene og lager hurtigknapper for dem
			buttonIds.each(function(buttonId)
			{
				if ($(buttonId))
				{
					var quickButtonId = buttonId + 'Quick';
					var html = template.interpolate({ id: quickButtonId, name: quickButtonId });
					$(self.quickButtonsId).insert(html);
					Event.observe($(quickButtonId), 'click', function() 
					{
						$(buttonId).up().fire('nu:click');
						Effect.ScrollTo(buttonId);
					});
				}
			});
		}
	},
	
	/**
	 * Utvider funksjonen parseInt så den ikke feiler med "NaN"
	 */
	realInt: function(value)
	{
		value = parseInt(value);
	
		if (isNaN(value))
		{
			return 0;
		}
		return value;
	}
});

// Kjør igang en instans av klassen når dokumentet er klart
Event.observe(window, 'load', function()
{
	var load = new EbruOrderForm(
	{
		'container': 'order_forms',
		'quickButtons': 'orderFormsQuickButtons'
	});
});