/*jsl:option explicit*/
/**
 * @fileoverview
 * Hilfsfunktionen zum Füllen der Kategoriefelder Kat1 und Kat2 (Haupt- und Unterkategorie)
 * <br>&nbsp;<br>
 * Voraussetzungen: Kategoriefelder müssen Kat1 und Kat2 heißen
 * 23.6.2008: optional nur Werte oder Text/Value bei Optionsfeldern Kat1 u. Kat2
 *
 * @author Susanne Mauritz, 2007
 * @version 1.0
 */
var allKat;
/**
 * Optionen in Kat1 Feld setzen<br>
 * Liest Feld PKat aus und füllt das Feld Kat1
 *
 * @param elem {array}  Ein Array aller Felder des Formulars
 *
 * @return Nichts (Kat1 Optionen gefüllt)
 * 
 * @author Gerhard Schuster, 2003
 * @author Susanne Mauritz, 2007
 * @version 1.1
 */
function setKatVars(elem) {/*get Kat1/2 vars from Notes field*/
	if (!elem['Kat1']) return;/*if Kat1 not in form*/
	if (!elem['PKat']) {		/* PKat in Parameterform? */
		var pform = doc.forms['Parameters']
		if (!pform) return /* Parameterform nicht gefunden */
		if (!pform.PKat) return;
		var tempPKat = pform.PKat.value;
	}
	else {
		var tempPKat = elem['PKat'].value;
	}
	/* in einzelne Zeilen zerlegen */
	allKat = tempPKat.split('~');
	/* Hauptkategorie von den Unterkategorien trennen */
	/* Format: Hauptkat$HK|Unterkat1$UK1|Unterkat2$UK2|Unterkat2$UK2	*/
	/* oder:   Hauptkat|Unterkat1|Unterkat2|Unterkat2				*/
	for (var i=0;i<allKat.length;i++) allKat[i] = allKat[i].split('|');
	/* Kat1 Select Options füllen												*/
	var kats = elem['Kat1'];/*set Kat1 w/o Domino encoding*/
	/* Options einlesen */
	for (var i=0; i<allKat.length; i++) {/*Kat1[0] is --Bitte..--*/
		if (allKat[i][0].indexOf('$') > 0 ) {		// mit Alias (Trennzeichen $)
			allKatSplit=allKat[i][0].split('$')
			kats.options[i+1] = new Option(allKatSplit[0],allKatSplit[1]);
		} else {
			kats.options[i+1] = new Option(allKat[i][0],allKat[i][0]);
		}
	}/*fo*/
} /* setKatVars */
/**
 * Aufgrund der Auswahl von Kat1 Optionen in Kat2 Feld setzen<br>
 *
 * @param sel   {field} Feld-Objekt Kat1 (Drop-Down Kategoriefeld)
 *
 * @return Nichts (Kat2 Optionen gefüllt)
 * 
 * @author Gerhard Schuster, 2003
 * @author Susanne Mauritz, 2007
 * @version 1.1
 */
function setKat2(sel) {/*set Kat2 options dep on selected Kat1 option*/
	var kat2 = sel.form.elements['Kat2'];
	var num = kat2.options.length;	/* wie viele Optionen gibt es? */
	/* Optionen von hinten nach vorne leeren */
	for (var i=num-1; i>0; i-- ) kat2.options[i]=null;
	var kat2opt0 = new Option('--Keine Auswahl--','NUL');
	num = 0;
	for (var i=1; i<sel.options.length; i++) if (sel.options[i].selected) num++;
		/*more>1 option selected? (Suche only)*/
		if (num>1) {kat2.options[0] = kat2opt0;kat2.options[0].selected=true;return
	}
	var selind = sel.selectedIndex;
	if (selind<=0) { /* keine Kat1 gewählt */
		kat2.options[0] = kat2opt0;
		kat2.options[0].selected=true;
		return
	}
	var kat2opt = allKat[selind-1]; //eval(selval);
	if (kat2opt) ; else {alert('Kat2 Options not found');return};
 		/*no suboptions avlbl?*/
 	if (kat2opt.length==1) {	/* keine Kat2 Werte */
		kat2.options[0] = kat2opt0;
		kat2.options[0].selected=true;
		return;
	}
	/* Kat2 Options füllen */
	kat2opt0 = new Option('--Bitte wählen--','NUL');
	kat2.options[0] = kat2opt0;
	kat2.options[0].selected = true;
	for (var i=1; i<kat2opt.length; i++) {/*[0] is Kat1*/
	if (kat2opt[i].indexOf('$') > 0 ) {	// mit Alias (Trennzeichen $)
		var kat2optsplit = kat2opt[i].split('$')
		kat2.options[i] = new Option(kat2optsplit[0],kat2optsplit[1])
	} else {
		kat2.options[i] = new Option(kat2opt[i],kat2opt[i]);
	}
	}
} /* setKat2 (sel) */
/**
 * Versucht, aus einem übergebenen String die Kategorie herauszufiltern und zu setzen
 *
 * @param sel   {field} Feld-Objekt (Drop-Down Kategoriefeld)
 * @param passedquery {string}  Query String. Muster: ~[Kat1]=Audio, HiFi~[AukH]=027
 *
 * @return Nichts (Werte sind in Dropdown gewählt)
 * 
 * @author Gerhard Schuster, 2003
 * @author Susanne Mauritz, 2007
 * @version 1.1
 */
function tryKat12options(sel,passedquery) {/*set option to selected if found in simQuery*/
	/* Setzen Default, Initialisieren der Variablen */
	if (passedquery.length==0) return;
	sel.options[0].selected = true;	/* wenn nichts gewählt */
	var oldopt = '';
	var name = sel.name;/*Kat1 | Kat2*/
	/* Array der einzelnen Query-Elemente */
	var oldquery = passedquery.split('~');/*split into array*/
	for (var i=0; i<oldquery.length; i++) {
		if (oldquery[i].substr(0,name.length+2) != '['+name+']') continue;
		oldquery[i] = oldquery[i].replace(/\(\)/g,'');/*remove ()*/
		if(name=='Kat1') {
			oldquery[i] = oldquery[i].replace(/\[Kat1\]\=/g,'');/*remove [Kat1]=*/
		} else {
			oldquery[i] = oldquery[i].replace(/\[Kat2\]\=/g,'');/*remove [Kat2]=*/
		}
		oldopt = oldquery[i].split(' | ');/*rem [fld]= & split into array*/
	}/*fo i*/
	/* übergebene Option finden */
	var optix = -1;/*index into sel.options*/
	for (var i=0; i<oldopt.length; i++) {
		while (optix < sel.options.length) {
			if (oldopt[i]!=sel.options[++optix].value) continue;
			sel.options[optix].selected = true;
			sel.options[0].selected = false;
			break;
		}/*wh*/
	}/*fo i*/
} /* tryKat12options */

