var Calculator = {
	calculator : null,
	exampleObj : null,
	rezultObj : null,	
	init : function() {
		this.calculator = $('div#calc');
		this.rezultObj = this.calculator.find('span.result');
		this.step1();
		this.step2();
		this.step3();
		this.step4();
		this.step5();
		this.step6();
		this.step7();
		this.calculate();
		this.setStyles();
		this.initExample();
	},
	setStyles : function() {
		var data = this.calculator.find('tr');
		for (var i = 0; i < data.length; i++) {
			data.eq(i).find('td:last').attr('class', 'last');
		}
	},
	calculate : function() {
		var sum = 0;
		var area = 0;
		sum += parseFloat(this.calculator.find('input[name=typeStone]:checked').attr('value'));
		area = parseFloat(this.calculator.find('input[name=area]').attr('value'));
		sum *= area;
		this.calculator.find('input[name=cutting]:checked').each(function() {
			sum += parseFloat(this.value);
		});
		this.calculator.find('input[name=typeHem]').each(function() {
			var current = $(this);
			if (current.attr('value') != '') {
				sum += current.attr('value')* current.attr('price');
			}
		});
		this.calculator.find('input[name=typeBoard]').each(function() {
			var current = $(this);
			if (current.attr('value') != '') {
				sum += current.attr('value')* current.attr('price');
			}
		});
		this.calculator.find('input[name=elements]').each(function() {
			var current = $(this);
			var value = current.attr('value');
			if (!value) value = 0;
			sum += value * current.attr('price');
		});
		sum += parseFloat(this.calculator.find('input[name=typeWasher]:checked').attr('value'));
		if (area > 1.5) sum += sum/10;
		else sum += sum/20;
		if (sum && area) {
			this.rezultObj.text(sum);
		}
	},
	initExample : function() {
		this.calculator.append('<div class="example"><img /></div>');
		this.exampleObj = this.calculator.find('div.example:first');
		this.calculator.find('a[name=example]').hover(
			function() {
				Calculator.example(this, 1);
			}, 
			function() {
				Calculator.example(this, 0);
			}
		).click(function() {
			return false;
		});
	},
	example : function(obj, show) {
		obj = $(obj);
		var src = obj.attr('href');
		var left = obj.position().left + obj.width();
		var top = obj.position().top + obj.height();
		if (show) {
			this.exampleObj.find('img').attr('src', src)
			this.exampleObj.css({
				'top' : top,
				'left' : left,
				'display' : 'block'
			});
		} else {
			this.exampleObj.hide();
		}
		
	},
	step1 : function() {
		var data = this.calculator.find('div[name=step1] tr');
		for (var i = 0; i < data.length; i++) {
			var values = data.eq(i).find('td');
			values.eq(0).append(' <a name="example" class="i" href="' + values.eq(1).find('img:first').attr('src') + '">?</a>');
			values.eq(1).hide();
			values.eq(2).html('<input type="radio" name="typeStone" value="' + values.eq(2).text() + '"/>');
		}
		data.find('input[name=typeStone]').click(
			function() {
				Calculator.calculate();	
			}	
		).eq(0).click();
	},
	step2 : function() {
		var data = this.calculator.find('div[name=step2] tr');
		data.append('<td><input name="area" type="text" value="1">&nbsp;м<sup>2</sup></td>');
		data.find('input[name=area]').change(function() {
			Calculator.calculate();
		});
		var img = data.find('td').eq(1);
		data.find('td:first').append(' <a name="example" href="' + img.find('img:first').attr('src') + '">?</a>');
		img.hide();
	},
	step3 : function() {
		var data = this.calculator.find('div[name=step3] tr');
		for (var i = 0; i < data.length; i++) {
			var td = data.eq(i).find('td:last');
			td.html('<input name="cutting" type="checkbox" value="' + td.text() + '" />');
		}
		data.find('input[name=cutting]').click(function() {
			Calculator.calculate();
		});
	},
	step4 : function() {
		var data = this.calculator.find('div[name=step4] tr');
		for (var i = 0; i < data.length; i++) {
			var td = data.eq(i).find('td:last');
			td.html('<input name="typeHem" type="text" price="' + td.text() + '" />&nbsp;м.п.');
		}
		data.find('input[name=typeHem]').change(function() {
			var current = $(this);
			var value = current.attr('value');
			Calculator.calculator.find('input[name=typeHem]').attr('value', '');
			current.attr('value', value);
			Calculator.calculate();
		});
	},
	step5 : function() {
		var data = this.calculator.find('div[name=step5] tr');
		for (var i = 0; i < data.length; i++) {
			var td = data.eq(i).find('td:last');
			td.html('<input name="typeBoard" type="text" price="' + td.text() + '" />&nbsp;м.п.');
		}
		data.find('input[name=typeBoard]').change(function() {
			var current = $(this);
			var value = current.attr('value');
			Calculator.calculator.find('input[name=typeBoard]').attr('value', '');
			current.attr('value', value);
			Calculator.calculate();
		});
	},
	step6 : function() {
		var data = this.calculator.find('div[name=step6] tr');
		for (var i = 0; i < data.length; i++) {
			var td = data.eq(i).find('td:last');
			td.html('<input name="elements" type="text" price="' + td.text() + '" />&nbsp;шт.');
		}
		data.find('input[name=elements]').change(function() {
			Calculator.calculate();
		});
	},
	step7 : function() {
		var data = this.calculator.find('div[name=step7] tr');
		for (var i = 0; i < data.length; i++) {
			var td = data.eq(i).find('td:last');
			td.html('<input name="typeWasher" type="radio" value="' + td.text() + '" />');
		}
		data.find('input[name=typeWasher]').click(function() {
			Calculator.calculate();
		}).eq(0).click();
	}
}

$(document).ready(function() {
	Calculator.init();
});
