var NumericSpan = new Class({

	initialize: function()
	{
		this.fields = new Array(arguments.length);

		for(var i = 0; i < arguments.length; i++)
		{
			this.fields[i] = $(arguments[i]);
			this.fields[i].addEvent('keydown', this.handleKey.bindWithEvent(this));
		}
	},

	handleKey: function(event)
	{
		//Allow numbers
		if( ( (event.code >= 48) && (event.code <= 57) )
			|| ( (event.code >= 96) && (event.code <= 105) ) )
		{
			if(event.target.value.length == event.target.maxLength)
			{
				//Find next field
				for(var j = 0; j < this.fields.length - 1; j++)
				{
					if(this.fields[j] == event.target)
					{
						this.fields[j+1].focus();
						this.fields[j+1].select();
					}
				}
			}
			return;
		}
		else if( event.key == 'backspace' )
		{
			if( event.target.value.length == 0 )
			{
				//Find previous field
				for(var j = 1; j < this.fields.length; j++)
				{
					if(this.fields[j] == event.target)
					{
						this.fields[j-1].value = this.fields[j-1].value.substring(0, this.fields[j-1].value.length - 1);
						this.fields[j-1].focus();
						this.fields[j-1].value = this.fields[j-1].value;//Sets caret position to end rather than beginning in IE
						event.stop();
					}
				}
			}
		}
		//Allowed keys
		else if( ( event.key == 'delete' )
				|| (event.code == 9) //Tab
				|| (event.code == 13) //Enter
				|| event.control
				|| event.alt
				)
			return;
		else
			event.stop();
	}

});