/* Programming by alpaxo@jabber.kiev.ua */
/*
var Calculator = new function(){
	this.container = '';
};

Calculator.prototype = {
	inputFilter: function(event){

	}
};
*/
// validating input
aikenOnKeyPress = function(evt){
	var keynum;
	var keychar;
	var numcheck;

	if(window.event){	// IE
		keynum = window.event.keyCode;
	}else if(evt.which){	// Netscape/Firefox/Opera
		keynum = evt.which;
	}
	keychar = String.fromCharCode(keynum);
	numcheck = /\d/;
	if(numcheck.test(keychar) || '08'==keynum || typeof(keynum)=='undefined'){
		return true;
	}
	return false;
}
// building calculator
aikenMakeCalc = function(){
	var containerNode = $('inject');
	var id_calc = $('calc');
	var id_wall = $('wall');
	var id_table= $('table');
	var walls = id_wall.value;
	var bool = false;

	if(id_wall && id_calc &&  walls > 0){
		if(walls>9){
			walls = id_wall.value = 9;
		}
		containerNode.update();

		var inputContainer, label, wall_id;
		regexp = /^id_wall_(\d+)$/;
		for(var i=0; i<walls;i++){
			wall_id = 'wall_' + (i+1);
			inputContainer = Element.extend(document.createElement('div'));
			inputContainer.setAttribute('id', 'id_' + wall_id);

			label = Element.extend(document.createElement('label'));
			label.setAttribute('for', 'id_' + wall_id);
			label.update('Стена ' + (i+1) + ': ');

			input = Element.extend(document.createElement('input'));
			input.type="text";
			input.name='wall_' + (i+1);
			
			inputContainer.appendChild(label);
			inputContainer.appendChild(input);
			inputContainer.appendChild(document.createElement('br'));

			containerNode.appendChild(inputContainer);

			Event.observe(input, 'keypress', function(event){
				aikenOnKeyPress(event);
			});
			Event.observe(input, 'keyup', function(event){
				aikenCheckCalc();
			});
			containerNode.appendChild(inputContainer);
		}
	}
	aikenCheckCalc();
}

aikenCheckCalc = function(){
	var INPUTs = $('inject').getElementsByTagName('input');
	var hasErrors = false;
	var total = 0;
	var calc_sum = $('calc_sum');
	var calc_cnt = $('calc_cnt');
	var calc_elm = $('calc_elm');
	
	re1 = /^wall_(\d+)$/;
	re2 = /^(\d+)$/;
	for(var i = 0; i<INPUTs.length; i++){
		if(re1.test(INPUTs[i].name)){
			if(re2.test(INPUTs[i].value)){
				INPUTs[i].value = INPUTs[i].value;
				total = total + (INPUTs[i].value - 0);
			}else{
				hasErrors = true;
				INPUTs[i].addClassName('error');
			}
		}
	}
	calc_cnt.value = total;
	if(!hasErrors){
		var length = $('calc_len').value;
		var placeToBasket = $('PlaceToBasket');
		var totalElements = Math.ceil(total/length);
		calc_sum.show();
		calc_elm.update(totalElements);
		if(placeToBasket){
			placeToBasket.value = totalElements
		}
	}else{
		calc_sum.hide();
		calc_elm.innerHTML = 0;
	}	
}
