var NumericQuestion = new Class({
	
	Extends: Question,
	
	maxValue: undefined,
	minValue: undefined,
	
	initialize: function(id, question, minValue, maxValue)
	{
		if($defined(maxValue)) this.maxValue = maxValue.toInt();
		if($defined(minValue)) this.minValue = minValue.toInt();
		this.parent(id, question);
	},
	
	createAnswers: function()
	{
		this.input 	= new Element("input", {type:"text"}).inject(this.answerOptions).inject(this.answerOptions);
		this.configInput();
		
		this.button = new Element("a", {"href":"#", text:"Ok"}).inject(this.answerOptions);
		
		this.button.addEvent("click", 	this.preventEvent.bind(this));
		this.button.addEvent("click",  	this.answerEvent.bind(this));
		
	},
	
	configInput: function()
	{
		this.input.addEvent("enter", this.preventEvent.bind(this));
		this.input.addEvent("enter", this.answerEvent.bind(this));
		this.input.addEvent("keyup", this.checkRangeValues.bind(this));
		
		this.mask 	= new meio.Mask(this.input, {mask:"99999999999999999"});
		if($defined(this.minValue))
		{
			this.input.set("value", this.minValue);
		}
	},
	
	checkRangeValues: function(e)
	{
		var value = this.input.get("value");
		var valueIsLessThanMinValue = (($defined(this.minValue) && value < this.minValue) || this.input.get("value") == "");
		var valueIsGreaterThanMaxValue = ($defined(this.maxValue) && value > this.maxValue);
		
		if(valueIsGreaterThanMaxValue)
		{
			this.input.set("value", this.maxValue);
		}
		
		if(valueIsLessThanMinValue)
		{
			this.input.set("value", this.minValue);
		}
	},
	
	answerEvent: function()
	{
		this.checkRangeValues()
		var value = this.input.get("value");
		
		if(value != "")
		{
			this.answer(value);
		}
	},
	
	mouseenter: function()
	{
		this.input.focus();
		this.input.select();
		this.input.addClass("focus");
		this.wrapper.addClass("Hover");
		document.addEvent("esc", this.preventEvent.bind(this));
		document.addEvent("esc", this.answer.bind(this, [0]));
	},
	
	mouseleave: function()
	{
		this.parent();
		this.input.removeClass("focus");
		
	},
	
	answer: function(params)
	{
		this.parent(params);
		this.input.set("value", "");
	},
	
	setData: function(id, question , minValue, maxValue)
	{
		this.parent(id, question)
		
		if ($defined(minValue)) {
			this.minValue = minValue.toInt();
			this.checkRangeValues();
		}
		
		if ($defined(maxValue)) {
			this.maxValue = maxValue.toInt();
			this.checkRangeValues();
		}
	}
	
});