function Sortiment () {
    this.artikel_nrs = new Array();
    this.artikel_count = 0;
    this.items_count = 0;
    this.cb_map = new Array();
    this.ti_map = new Array();
    this.formRef = "";
    this.maySubmit = false;
    
    this.addArtikel = function(art_nr) {
        this.artikel_nrs.push(art_nr);
        this.cb_map[String(art_nr)] = 0;
        this.ti_map[String(art_nr)] = 0;
    };

    this.setMaxItems = function(nr) {
        this.items_count = nr;
    };

    this.setMaxArtikel = function(nr) {
        this.artikel_count = nr;
    };

    this.setForm = function(nr) {
        this.formRef = window.document.forms[nr];
    };
    
    this.isInteger = function (n) {
		return (!isNaN(n)) && (Math.floor(n)==n)
	}
	
	this.deactivateField = function (id) {
		if(!this.formRef.elements["cb_"+id].checked && this.formRef.elements["ti_"+id].value > 0){ 
			this.formRef.elements["ti_"+id].value = 0;
			this.checkValid();
		}
	}
	
	this.submitSortiment = function() {
		if(this.maySubmit) {
			this.formRef.submit();
		}
		else {
			alert("In der Summe der gewaehlten Artikel muss Ihr eigenes Sortiment genau 20 Karten ergeben, damit Sie das Sortiment in den Warenkorb legen koennen.");
			return false;
		}
	}
	
	this.checkValid = function() {
		checkCount = 0;
		itemCount = 0;
	
		/*
			- Korrigiert Zahlenwerte falls !int und z�hlt anzahl der einzelteile
		*/
		for(i in this.ti_map) {
			if(typeof(this.ti_map[i]) != "function") {
				if(!this.isInteger(this.formRef.elements["ti_"+i].value)) {
					this.formRef.elements["ti_"+i].value = this.ti_map[i];
				}
				itemCount += Number(this.formRef.elements["ti_"+i].value);
			}
		}
		/*
			falls mehr einzelteile als vorgaben ausgew�hlt sind werden alle felder auf die richtigen Werte zur�ckgesetzt...
		*/
		if(itemCount > this.items_count) {
			for(i in this.ti_map) {
				if(typeof(this.ti_map[i]) != "function") {
					this.formRef.elements["ti_"+i].value = this.ti_map[i];
				}
			}
		}
		/*
			wenn genau die richtige Zahl ausgew�hlt ist werden alle anderen felder deaktiviert
		*/
		
		if(itemCount == this.items_count) {
			
			this.maySubmit = true;
		
			for(i in this.ti_map) {
				if(typeof(this.ti_map[i]) != "function" && this.formRef.elements["ti_"+i].value == 0) {
						this.formRef.elements["ti_"+i].style.backgroundColor="#AAAAAA";
						this.formRef.elements["ti_"+i].disabled = true;
						this.formRef.elements["cb_"+i].disabled = true;
				}
			}
		}
		else {
			this.maySubmit = false;
			for(i in this.ti_map) {
				if(typeof(this.ti_map[i]) != "function") {
						this.formRef.elements["ti_"+i].style.backgroundColor="#FFFFFF";
						this.formRef.elements["ti_"+i].disabled = false;
						this.formRef.elements["cb_"+i].disabled = false;
				}
			}		
		}
		/*
			z�hlt angecheckte elemente, 
		*/
		for(i in this.cb_map) {
			if(typeof(this.cb_map[i]) != "function") {
				if(this.formRef.elements["cb_"+i].checked) {
					checkCount++;
				}
			}
		}
		/*
			z�hlt anzahl der ausgew�hlten versch. artikel
		*/
		if(checkCount > this.artikel_count) {
			exceeded = true;
		}
		else {
			exceeded = false;
		}
		
		for(i in this.cb_map) {
			if(typeof(this.cb_map[i]) != "function") {
				if(exceeded) {
					if(this.cb_map[i] == 1) {
						this.formRef.elements["cb_"+i].checked = true;
						this.formRef.elements["ti_"+i].style.backgroundColor="#FFFFFF";
						this.formRef.elements["ti_"+i].disabled = false;
						this.formRef.elements["ti_"+i].value = this.ti_map[i];	
					}
					else {
						this.formRef.elements["cb_"+i].checked = false;
						this.formRef.elements["ti_"+i].disabled = true;
						this.formRef.elements["ti_"+i].value = 0;
						this.formRef.elements["ti_"+i].value = this.ti_map[i];					
					}
				}
				else {
					if(this.formRef.elements["cb_"+i].checked) {
						if(this.formRef.elements["ti_"+i].value <= 0) {
							this.formRef.elements["cb_"+i].checked = false;
							this.cb_map[i] = 0;
							this.ti_map[i] = this.formRef.elements["ti_"+i].value;							
						}
						else {
							this.cb_map[i] = 1;
							this.ti_map[i] = this.formRef.elements["ti_"+i].value;
						} 
					} 
					else {
						//this.formRef.elements["ti_"+i].style.backgroundColor="#AAAAAA";
						//this.formRef.elements["ti_"+i].disabled = true;
						if(this.formRef.elements["ti_"+i].value > 0) {
							this.formRef.elements["cb_"+i].checked = true;
							this.cb_map[i] = 1;
							this.ti_map[i] = this.formRef.elements["ti_"+i].value;
						}

						//this.formRef.elements["ti_"+i].value = 0;
					}
				}
			}
		}
	}
}


