Event.observe(window, 'load', function() {
	
	var forma = $('calculatorForm');
	var flashObject = $('calculatorDom');
	
	if (!forma || !flashObject) {
		return;
	}
	
	forma.enable();
	
	var params = [
		'productWidth',
		'productLength',
		'wallHeight',
		'roofOver',
		'roofHeight',
		'roofType'
	];
	
	var numberFilter = function(e) {
		var key = (typeof e.charCode == 'undefined' ? e.keyCode : e.charCode);
		var event = e || event;
		if (e.ctrlKey || e.altKey || key < 32) {
			return true;
		}
		key = String.fromCharCode(key);
		return /[\d\.,]/.test(key);
	};
	
	var sendParamToFlash = function(e) {
		if (!this.value || this.value == '.' || this.value == ',' || this.value == '0') {
			return;
		}
		if (this.fieildName == 'roofOver' && this.value.replace(',', '.') > .5) {
			this.value = .5;
		}
		if (this.fieildName != 'roofOver' && this.value.replace(',', '.') > 500) {
			this.value = 500;
		}
		flashObject.setParam(this.fieildName, this.value.replace(',', '.'));
	};
	
	var getParamFromFlash = function(paramName) {
		return flashObject.getParam(paramName).replace('.', ',');
	};
	
	var getFieldName = function(field) {
		return field.name.replace(/^form\[([^\]]+)\].*/, '$1');
	};
	
	$A(forma.getElementsByTagName('input')).each(function(field) {
		var fieildName = field.name.replace(/^form\[([^\]]+)\].*/, '$1');
		if (params.indexOf(fieildName) !== -1) {
			field.fieildName = fieildName;
			
			switch (field.type) {
				case 'text':
					Event.observe(field, 'keyup', sendParamToFlash);
					field.onkeypress = numberFilter;
				break;
				case 'radio':
					Event.observe(field, 'click', sendParamToFlash);
				break;
			}
		}
	});
	
	$A(forma.getElementsByTagName('select')).each(function(field) {
		var fieildName = field.name.replace(/^form\[([^\]]+)\].*/, '$1');
		if (params.indexOf(fieildName) !== -1) {
			field.fieildName = fieildName;
			Event.observe(field, 'change', sendParamToFlash);
		}
	});
	
	
	Event.observe(forma, 'submit', function(event) {
		if (this.down('.f-error')) {
			return false;
		}
		
		window.open(
			this.action +'?'+ this.serialize(),
			
			null,
			
			'left=' + (screen.availWidth / 2 - 850 / 2) + ', ' +
			'top=' + (screen.availHeight / 2 - 650 / 2) + ', ' +
			'width=850, ' +
			'height=650, ' +
			'resizable=yes, ' +
			'toolbar=no, ' +
			'scrollbars=yes, ' +
			'status=no'
		);
		
		Event.stop(event);
		return false;
	});
	
});
