/**
 * @author riccardocanalicchio
 */
var Sum = Class.create({
	initialize:function(q,t,add,remove,options){
		//attributi
		this.qta = $(q);
		this.tot = $(t);
		this.add = $(add);
		this.options = Object.extend({
			maxValue: 300,
			minValue: 1,
			step: 1,
			mulfact: 1,
			qtainitValue:0,
			disableClassName:'disabled',
			increment:function(value){
				value = value + this.step;
				return value;
			},
			decrement:function(value){
				value = value - this.step;
				return value;				
			},
			onCalcTot:function(tot){}
		}, arguments[4] || { });
		this.remove = $(remove);
		this.qta.readOnly=true;
	//	this.qta.value = this.options.qtainitValue;
		if(this.tot){
			this.tot.readOnly=true;
		}
		if(eval(this.qta.value)>0){
			this.calcTot();
		}
		if((eval(this.qta.value)<this.options.minValue)){
			this.disable(this.remove);
		}
			
		
		//handler
		this.add.observe('click',this.addHandler.bind(this));
		this.remove.observe('click',this.removeHandler.bind(this));
	},
	addHandler:function(e){
		if (this.qta.value == 0) {
			this.qta.value = this.options.minValue;
		}
		else {
			if (this.options.increment(eval(this.qta.value)) < this.options.maxValue) 
			{
				this.qta.value = this.options.increment(eval(this.qta.value));
			}
			else 
			{
				this.qta.value = this.options.maxValue;
				this.disable(this.add);
			}
		}
		this.enable(this.remove);
		this.calcTot();
	},
	removeHandler:function(e){
		if (this.options.decrement(eval(this.qta.value)) < this.options.minValue) 
		{
			this.qta.value = 0;
			this.disable(this.remove);			
		}
		else
		{
			this.qta.value = this.options.decrement(eval(this.qta.value));
		}
		this.enable(this.add);
		this.calcTot();
	},
	calcTot:function(){
		if(this.tot)
		{
			this.tot.value = parseFloat((eval(this.qta.value)*this.options.mulfact)).toFixed(2);
			this.options.onCalcTot(eval(this.tot.value));
		}
	},
	disable:function(el){
		$(el).addClassName(this.options.disableClassName);
	},
	enable:function(el){
		$(el).removeClassName(this.options.disableClassName);
	}
});