var Schnellerfassung = Class.create({
	initialize: function(container, artikelzeile) {
		this.last = '???????';
		this.container = container;
		this.az = artikelzeile;
		this.options = Object.extend({
			field_produktnr: 't_ProduktNr',
			field_artikelnr: 't_ArtikelNr',
			field_menge: 't_Menge',
			info: 'seInfo',
			error: 'seError',
			url: '/ajax/dimensionen/index.html?t_DataSource=Artikel&t_Method=Dimensionen&t_ProduktNr='
		}, arguments[2] || {});
		
		this.fieldProduktNr = $(this.options.field_produktnr);
		this.fieldArtikelNr = $(this.options.field_artikelnr);
		this.fieldMenge = $(this.options.field_menge);
		new ActionInput(this.fieldProduktNr, {
			onEnter: this.loadDimensions.bind(this)
		});
		new ActionInput(this.fieldArtikelNr, {
			onUp: function() {
				this.selectedIndex = Math.max(0, this.selectedIndex - 1);
			}.bind(this.fieldArtikelNr),
			onMinus: function() {
				this.selectedIndex = Math.max(0, this.selectedIndex - 1);
			}.bind(this.fieldArtikelNr),
			onPlus: function() {
				this.selectedIndex = Math.min(this.options.length - 1, this.selectedIndex + 1);
			}.bind(this.fieldArtikelNr),
			onDown: function() {
				this.selectedIndex = Math.min(this.options.length - 1, this.selectedIndex + 1);
			}.bind(this.fieldArtikelNr),
			onEnter: function() {
				this.fieldMenge.activate();
			}.bind(this)
		});
		new CountingInput(this.fieldMenge, {
			onEnter: this.addArticle.bind(this)
		});
		
		this.fieldProduktNr.observe('blur', this.loadDimensions.bind(this));
	},
	
	loadDimensions: function() {
		if ($F(this.fieldProduktNr).strip()) {
			if (this.last == $F(this.fieldProduktNr).strip() && !this.fieldMenge.disabled) {
				$(this.options.error).hide();
				$(this.options.info).hide();
				this.fieldArtikelNr.show();
				this.fieldArtikelNr.activate();
			} else {
				this.fieldMenge.disabled = true;
				new Ajax.Request(this.options.url + $F(this.fieldProduktNr).strip(), {
					onSuccess: function(tp) {
						var data = tp.responseText.evalJSON();
						if (data.error) {
							$(this.options.error).innerHTML = data.error;
							$(this.options.info).hide();
							this.fieldArtikelNr.hide();
							$(this.options.error).show();
							this.fieldProduktNr.activate();
						} else {
							while (this.fieldArtikelNr.options.length > 0) {
								this.fieldArtikelNr.removeChild(this.fieldArtikelNr.options[0]);
							}
							var opt, i = 0;
							while (opt = data.dimensionen[i++]) {
								this.fieldArtikelNr.options[i - 1] = new Option(opt[1], opt[0]);
								if (opt[0] == $F(this.fieldProduktNr).strip())
									this.fieldArtikelNr.selectedIndex = i - 1;
							}
							$(this.options.error).hide();
							$(this.options.info).hide();
							this.fieldArtikelNr.show();
							this.fieldArtikelNr.activate();
							this.fieldMenge.disabled = false;
						}
					}.bind(this)
				});
				this.last = $F(this.fieldProduktNr).strip();
			}
		} else {
			this.fieldArtikelNr.hide();
			$(this.options.error).hide();
			$(this.options.info).show();
		}
	},
	
	addArticle: function() {
		if (this.fieldMenge.disabled) return false;
		this.fieldProduktNr.activate();
		this.container.append($F(this.fieldArtikelNr), $F(this.fieldMenge));
	}	
});
