/**
 * For when the dom is ready.
 */
window.addEvent('domready', function() {

	setupProducts();
	
});

var setupProducts	= function()
{
	$$('.product').each(function(fieldset){

		var total	= new Element('span')
					. setStyles({	'color'			: 'navy',
									'display'		: 'none',
									'margin-left'	: '3em'})
					. inject(fieldset.getElement('input[name=quantity]'), 'after');

		fieldset.addEvent('mouseenter',function(){total.setStyle('display','inline')});
		fieldset.addEvent('mouseleave',function(){total.setStyle('display','none')});
		
		reCalculateTotal(total);
		
		var rows	= fieldset.getElements('tbody tr');

		//only make table selectable if there is more than one size
		if (rows.length > 1)
		{
			//set to pointers
			rows.setStyle('cursor', 'pointer')
				.addEvent('click', function(){
					
					this.getParent('tbody').getElements('tr').removeClass('productSelectedRow');
					this.addClass('productSelectedRow');
					this.getParent('form').getElement('select[name=product_size]').selectedIndex = this.rowIndex - 1;
					
					reCalculateTotal(total);
				});

			//first row is selected
			rows[0].addClass('productSelectedRow');
		}

		var select	= fieldset.getElement('select[name=product_size]');
		
		if (select)
		{
			select.addEvent('change', function(){
			
				rows.removeClass('productSelectedRow');
				rows[this.selectedIndex].addClass('productSelectedRow');
			
				reCalculateTotal(total);
			});
		}
		
		fieldset.getElement('input[name=quantity]').addEvent('change',function(){reCalculateTotal(total)});
		
	});
}

var reCalculateTotal	= function(total)
{
	fieldset	= total.getParent('fieldset');
	
	var select	= fieldset.getElement('select[name=product_size]');
	
	if (select)
	{	
		var rows	= fieldset.getElements('tbody tr');
	
		var price	= rows[select.selectedIndex].getElements('td')[1].get('text');
	}
	else
	{
		var price	= fieldset.getElements('tbody td')[1].get('text');
	}
	
	var qty	= fieldset.getElement('input[name=quantity]').value;
	
	total.set('text', '(\£' + (qty.toInt() * price.toFloat()).round(2) + ')');
}

