/* Funktionen zur dynamischen Anzeige */

function initPage(){
	//debugger;
	contSwitch('name',$('h_name'));
	btn = $('submit');
	btn.style.display = "none";
	btn.setAttribute('disabled','disabled');
}

function contSwitch(el,hd){
	var myel = $(el);
	/* Suchen der Formular-divs */
	var pel = $('search');
	var formel = pel.getElementsByTagName('form')[0];
	var divels = formel.getElementsByTagName('div');
	for (i=0; i<divels.length; i++) {
		var cel = divels[i];
		var classname = Try.these (
			function() { return cel.className; },
			function() { return cel.getAttribute('class'); }
		);
		if (classname != "forms")
			continue; /* kein Formular-Tabreiter-div */
		cel.style.display = "none";
	}
	var tabel = $('tab');
	var tabels = tabel.getElementsByTagName('a');
	for (i=0; i<tabels.length; i++) {
		var cel = tabels[i];
		Try.these(
			function() {return cel.className="";},
			function() {return cel.removeAttribute("class");}
			);
	}
	myel.style.display = "block";
	Try.these(
		function() {return hd.className="atab";},
		function() {return hd.setAttribute("class","atab");}
		);
	return false;
}

function setStruct(newpic,el) {
	var strpic = $('strpic');
	var picpath = "bilder/str/"+newpic+".gif";
	strpic.setAttribute('src',picpath);
	el.getElementsByTagName('input')[0].checked = true;
	updatePage(el,'h_struktur','0');
	return false;
}

function markChangedParam(el) {
	el.style.color = "red";
}

function unmarkChangedParam(el) {
	el.style.color = "";
}

function selectorUpdate(el,header,def,type) {
	var inpel = $(type);
	newval = $F('funktional');
	inpel.value = newval;
	/* Array aus der Liste der verschiedenen Auswahlen */
	var litags = $A($('funktion').getElementsByTagName('li'));
	/* alte Auswahl */
	if (newval != 0) {
		markChangedParam(litags[$F('fldtype')]);
	} else {
		unmarkChangedParam(litags[$F('fldtype')]);
	}
	updatePage(el,'h_funktion',0);
}

function resetGroup(tagid,tagname) {
	var tabel = $(tagid);
	var tags = $A(tabel.getElementsByTagName(tagname));
	tags.each(function(hdr) {
		unmarkChangedParam(hdr);
	});
}
	

function resetHeaders(tagid) {
	resetGroup(tagid,'a');
	resetGroup('funktion','li');
	/* Strukturbild zurücksetzen */
	setStruct('dummy',$('rb0').parentNode);
	document.forms[0].reset();
	/* Seltsamerweise wird ein hidden-Feld
	 * nicht auf 0 zurückgesetzt - machen wir jetzt manuell
	 */
	hel = $('funk');
	hel.value = 0;
	hel = $('verf');
	hel.value = 0;
	hel = $('anwe');
	hel.value = 0;
 	hel = $('uc');
 	hel.value = 0;
 	hel = $('ic');
 	hel.value = 0;
 	hel = $('cu');
 	hel.value = 0;
	updateResults();
	/* Normale Funktionalität auch ausführen - für alle Fälle */
	return 1;	
}

function setBranchen(state) {
	for (i= 0; i<document.getElementsByName("brcheck[]").length; i++) {
		document.getElementsByName("brcheck[]")[i].checked = state;
	}
	/* Das erste Argument ist in diesem Fall ein Dummy. */
	updatePage('in_name','h_branche',0);
}

/* verändert den Inhalt des numerischen Feldes field um amount */
function advance(field,amount) {
	var el = document.getElementById(field);
	var val = el.value;
	val = parseInt(val) + amount;
	if (val < 0) {
		val = 0;
	} else {
		var mxval = parseInt(document.getElementById('ntreff').firstChild.nodeValue)-1;
		if (val > mxval) {
			val = parseInt(mxval/10) * 10;
		}
	}
	el.value = val;
	updateResults();
}

function setTo(field, value) {
	var el = document.getElementById(field);
	var mxval = parseInt(document.getElementById('ntreff').firstChild.nodeValue);
	if (mxval - value < 10) {
		value = parseInt(mxval/10) * 10;
	}
	el.value = value;
	updateResults();
}

function setToEnd(field, endfield) {
	var fld = $(field);
	var endfld = $(endfield);
	var endval = parseInt(endfld.firstChild.nodeValue)-1;
	endval = parseInt(endval/10)*10;
	fld.value = endval;
	updateResults();
}

function toParameter(pname,pval,bchar) {
	bchar = bchar || '&';
	if (pval != '' && pval != undefined) {
		return bchar + pname + "=" + pval;
	} else {
		return '';
	}
}

function toParameter0(pname,pval,bchar) {
	if (pval != 0) {
		return toParameter(pname,pval,bchar);
	} else {
		return '';
	}
}

function updatePage(node,hid,def) {
	var lastcallel = $('lastcall');
	var lctime = $F('lastcall');
	lctime = parseInt(lctime);
	var sval;
	if (hid == 'h_struktur') {
		sval = getStructValue();
	} else {
		sval = $F(node);
	}
	if (sval != def) {
		markChangedParam($(hid));
	} else {
		unmarkChangedParam($(hid));
	}
	/* Sonderfall. Unelegant. FIXME! */
	if (hid == 'h_funktion') {
		var fldlist = $A($('funktion').getElementsByTagName('ul')[0].getElementsByTagName('input'));
		fldlist.each(function(iel) {
			if ($F(iel) != 0) {
				markChangedParam($('h_funktion'));
			}
		});
	}
	/* Noch ein uneleganter Sonderfall */
	if (hid == 'h_branche') {
		var fldlist = $A($('branche').getElementsByTagName('input'));
		checked = 0;
		fldlist.each(function(iel) {
			if (iel.checked == true) {
				checked++;
			}
		});
		if (checked == 0 || checked == 8) {
			unmarkChangedParam($(hid));
		} else {
			markChangedParam($(hid));
		}
	}
	var zeit = new Date();
	var jetzt = zeit.getTime();
	if ((jetzt - lctime) < 500) {
		return;
	}
	lastcallel.value = jetzt;
	updateResults();
}

function getStructValue() {
	var radios = document.getElementsByName('struct');
	for (i = 0; i < radios.length; i++) {
		if (radios[i].checked == true) {
			break;
		}
	}
	return radios[i].value;
}

function resetCursor(foo,bar) {
	document.body.style.cursor = 'default';
}

function updateResults() {
/* Cursor auf "aktiv" setzen */
	document.body.style.cursor = 'wait';
/* Der ganze Haufen Parameter zum Einsammeln */
	var i;
	var par = '';
/*	var iels = Form.getElements('dbsearch');
	iels.each( function(param,idx) {
		if (param.value != '') {
			var name = param.getAttribute('name');
			var val = param.value;
			pars = pars + name + '=' + val + '&';
		}
	});
*/
	par = toParameter('name',$F('in_name'),'');
	par = par + toParameter('cas',$F('casnr'));
/*	var namtyp = document.getElementsByName('in_nametyp'); */
	var frag;
/*	if (document.getElementById('in_frag') == 'frag') {
		frag = 1;
	} else {
		frag = 0;
	} */
	par = par + toParameter('in_frag',$F('in_frag'));
/* Kennummern */
	par = par + toParameter('einecs',$F('einecs')) + toParameter('unnr',$F('unnr'));
	par = par + toParameter('s_bem',$F('s_bem')) + toParameter('s_son',$F('s_son'));
	par = par + toParameter('textsrch',$F('textsrch'));
/* physikalisch-chemisch */
	par = par + toParameter('mplo',$F('pc_mplo')) + toParameter('mphi',$F('pc_mphi'));
	par = par + toParameter('bplo',$F('pc_bplo')) + toParameter('bphi',$F('pc_bphi'));
	par = par + toParameter('powlo',$F('pc_powlo')) + toParameter('powhi',$F('pc_powhi'));
	par = par + toParameter('mollo',$F('pc_mollo')) + toParameter('molhi',$F('pc_molhi'));
//	par = par + toParameter('denslo',$F('pc_denslo')) + toParameter('denshi',$F('pc_denshi'));
/* Strukturformelausschnitt */
// als <input type="radio">
//	var radios = document.getElementsByName('struct');
//	for (i = 0; i < radios.length; i++) {
//		if (radios[i].checked == true) {
//			par = par + toParameter('struct',radios[i].value);
//			break;
//		}
//	}
	par = par + toParameter0('struct',getStructValue());
// als <select>
//	par = par + toParameter('struct',$F('struct'));
/* Branchen */
	var branchen = $A(document.getElementsByName('brcheck[]'));
	branchen.each(function(rel) {
		if (rel.checked == true) {
			par = par + toParameter(rel.value,'1');
		}
	});
/* Offset */
	par = par + toParameter('offset',$F('start'));
/* Konstanten */
	var url = 'ajaxsearch.php';
/* Funktion, Verfahren, Anwendung */
	par = par + toParameter0('funk',$F('funk'));
	par = par + toParameter0('verf',$F('verf'));
	par = par + toParameter0('anwe',$F('anwe'));
/* Funktionskategorien */
	par = par + toParameter0('ic',$F('ic'));
	par = par + toParameter0('uc',$F('uc'));
	par = par + toParameter0('cu',$F('cu'));
/* Sortierung des Ergebnisses */
	par = par + toParameter('sort',$F('sortby'));
/* Art des Namens */
/*	for (i = 0; i< namtyp.length ; i++) {
		if (namtyp[i].checked == true) {
			break;
		}
	}
*/	var namtypval = $F('in_nametyp');
	par = par + '&in_nametyp='+namtypval;

//	var rlist = $('result').getElementsByTagName('dl');
/* AJAX request */
	var arq = new Ajax.Updater('resultlist',url,
		{
			method: 'get',
			parameters: par,
			onComplete: resetCursor
		}
		);
	return true;
}

function loadSelect(parel,type,idx) {
	/* Cursor auf 'busy' */
	document.body.style.cursor = 'wait';
	/* Array aus der Liste der verschiedenen Auswahlen */
	var litags = $A($(parel).getElementsByTagName('li'));
	/* alte Auswahl */
	var oldtype = $F('fldtype');
	oldtag = litags[oldtype];
	/* entfernen der "aktiv"-Markierung */
	Try.these(
			function() {return oldtag.className="";},
			function() {return oldtag.removeAttribute("class");}
			);
	/* setzen der neuen "aktiv"-Markierung */
	Try.these(
		function() {return litags[idx].className="alist";},
		function() {return litags[idx].setAttribute("class","alist");}
		);
	$('fldtype').value = idx;
	param = "type=" + type;
	var sarq = new Ajax.Updater('selectshell','selector.php',
	{
		method: 'get',
		parameters: param,
		onComplete: resetCursor
	}
	);
}
