// AJAX JS_File t.b.v. neveneffecten
// HM 2070510; op basis van object ContentLoader.js
// Hans Moree
// Ribeslaan 80
// 3053 MS Rotterdam
// 010 2182911
// hmoree@xs4all.nl

// geeft op basis van keuze handelsnamen, werkzame stoffen of beneficials (start trnm, aing of bene)
// de invoermogelijkheid van betreffende items
// verder kunnen op basis van id en name ook alvast voorkeuzes gemaakt worden
// indien vanaf externe scripts hiernaartoe wordt gelinkt
// globals:
var globScript;
var globLang;
var globStre;
var globAing;
var globBene;
var globTrnm;
var globSdefFlag = 1;// flag die ervoor moet zorgen dat een item alleen in het geheugen geplaatst wordt als er neveneffecten zijn
var globLastSource;// laatst gekozen bron (aing of bene)
var globMax;//hiermee wordt maximaal aantal te kiezen aings en benes ingesteld

// initialisatie van dit script; hierin worden bij pagina onLoad
// de globals gevuld
// de startfunctie's bepaald en aangeroepen
function init(script, lang_srcID, stre_srcID, aing_srcID, bene_srcID, trnm_srcID){
	globScript = script;
	globLang = lang_srcID;
	globStre = stre_srcID;
	globAing = aing_srcID;
	globBene = bene_srcID;
	globTrnm = trnm_srcID;
	globMax = 7;//maximaal aantal te kiezen aings en benes
	//hier wordt geregeld dat bij een externe aanroep(b.v. gebruiksaanwijzing Encarsia) het passende menu getoond wordt
	if(aing_srcID != -1)
	{
		globLastSource = 'aing';
		getStart('aing',aing_srcID);
	}else if(bene_srcID != -1){
		globLastSource = 'bene';
		getStart('bene',bene_srcID);
	}else{
		globLastSource = 'bene';
		getStart('bene');
	}
}

function getStart(start, id, name) {
	globLastSource = start;
	var left = document.getElementById('vervolgKeuze');
	var st = document.getElementById('start');
	if(st)
	{
		left.removeChild(st);
	}
	var div = document.createElement("div");
	div.id = 'start';
	left.appendChild(div);
	
	emptyOldMenu();// oude menu verwijderen om te vervangen door nieuw gevraagd menu
	var menuhead;
	var titel;
	var value;
	var clas = 'p-input';
	var keuze2 = '';
	setMenuFocus(start);// focus kleur in menubalkje zetten
	if(start == 'trnm')
	{
		globTrnm = id;
		menuhead = '<b class="infoTitle">' + getText('trnmhead') + '</b><br />';
		value = getText('firsttrnm');
		titel = getText('firsttrnm');
	}else if(start == 'aing'){
		globAing = id;
		menuhead = '<b class="infoTitle">' + getText('ainghead') + '</b><br />';
		value = getText('firstaing');
		titel = getText('firstaing');
	}else if(start == 'bene'){
		globBene = id;
		menuhead = '';
		value = getText('selectbene');
		titel = getText('firstbene');
		clas = 'b-input';
	}
	var input = menuhead;
	input += '<input type=text size=20 id=txtSearch name=txtSearch title="' + titel + '" alt=Search Criteria '; 
	input += 'onkeyup=getSuggestList(\'' + start + '\'); autocomplete=off class=' + clas;
	input += ' onClick="javascript:this.focus();this.select();" />';
	document.getElementById('start').innerHTML = input;
	//alert('globals: ' + globScript + ',' + globLang + ',' + globStre + ',' + globAing + ',' + globBene + ',' + globTrnm);
	if(id > 0)
	{
		//getName(start, id);
		if(name)
		{
			setSearch(name, start, id);
		}else{
			getName(start, id);
		}
	}else{
		document.getElementById('txtSearch').value = value;
		if(start == 'bene'){
			getSuggestList('QQQ');//bij de start van beneficials wordt - met als key 'QQQ' - de volledige lijst opgehaald
		}
	}
}

// Haalt naam op op basis van source en id om deze door te geven aan setSearch
function getName(source,id) {
	var field;
	if(source == 'trnm')
	{
		field = "trnm_srcID";
	}else if(source == 'aing'){
		field = "aing_srcID";
	}else if(source == 'bene'){
		field = "bene_srcID";
	}
	var url="result.php";
	
	url=url+"?name=1&" + field + "=" + id + "&lang_srcID=" + globLang;
	
	new net.ContentLoader(url,setExtSearch);
}

// doet op basis van ingevoerde eerste letter(s) van handelsnamen, werkzame stoffen of beneficials
// beroep op result.php om een lijst op te halen van mogelijk gezochte items
function getSuggestList(source) {
	
	var url="result.php";
	var str;
	if(source == 'QQQ')//bij opvragen beneficials (source QQQ) worden alle beneficials getoond
	{
		str = 'QQQ';
		source = 'bene';
	}else{
		str = escape(document.getElementById('txtSearch').value);
	}
	url=url+"?" + source + "=" +str + "&lang_srcID=" + globLang;
	
	if(str.length != 0){
		new net.ContentLoader(url,handleSuggestList);
	}else{
		
		document.getElementById('search_suggest').innerHTML = '';
	}
}

// verwerkt via getSuggestList binnengekomen items m.b.v. dhtml tot leesbare en verder te behandelen lijst
function handleSuggestList() {
	var ss = document.getElementById('vervolgKeuze');
	emptyOldMenu();
		
	var ul = document.createElement("ul");
	ul.id = 'search_suggest';
	ss.appendChild(ul);
		
	var str = unescape(this.req.responseText).split("\n");
	for(i=0; i < str.length - 1; i++) {
		var ar = str[i].split("#");
		//hier de textstring escapen
		var arnul = ar[0];
		arnul = escape(arnul);
		var suggestli = document.createElement("li");
		suggestli.className = 'menu_li';
				
		suggestli['onmouseover'] = new Function('return suggestOver(this);');
		suggestli['onmouseout'] = new Function('return suggestOut(this);');
		suggestli['onclick'] = new Function('return setSearch(\'' + arnul + '\',\'' + ar[1] + '\',' + ar[2] + ');');

		txt = document.createTextNode(ar[0]);
		suggestli.appendChild(txt);
		ul.appendChild(suggestli);
	}
}

// Na keuze uit de searchSuggestlist wordt hier een lijst opgehaald van items 
// die in combinatie met het gekozen item (H, W of B) een neveneffect hebben
function getCombiList(source,id) {
	var url="result.php";
	url=url+"?list=" + source + "&id=" +id + "&lang_srcID=" + globLang;
	
	new net.ContentLoader(url,handleCombiList);
}


function handleCombiList() {
	//alert(this.req.responseText);
	var str = this.req.responseText.split("\n");
	if(str.length <= 1)
	{
		// als eerste wordt hier de globSdefFlag op 0 gezet als er geen side effects zijn; 
		// dit item moet dus op basis hiervan in setSearch niet in de Memory worden geplaatst
		globSdefFlag = 0;
	}
	var ss = document.getElementById('vervolgKeuze');
		
	emptyOldMenu();
	var ul = document.createElement("ul");
	ul.id = 'combi_list';
	ss.appendChild(ul);
	
	if(str.length <= 1)
	{
		var listitem = document.createElement("li");
		listitem.className = 'list_empty';
		ul.appendChild(listitem);
		var noeffect = getText('noef');
		txt = document.createTextNode(noeffect);
		listitem.appendChild(txt);
	}else{
	
		for(i=0; i < str.length - 1; i++) {
			var ar = str[i].split("#");
		
			var listitem = document.createElement("li");
			ul.appendChild(listitem);
			txt = document.createTextNode(unescape(ar[0]));
			var a = document.createElement("a");//om een handje te maken
			a.setAttribute("href", "#");
			// de div in aref geven we een ID met L (uit List) als scheidingsteken tussen de id's
			// dit om deze link na aanklikken uit te kunnen zetten
			var div = document.createElement("div");
			div.id = ar[1] + 'L' + ar[2];
			//check of item al eerder gekozen is t.b.v. juiste weergave en opties
			var flag = 0;
			var arsource = '';
			var arid;
			var aclas = '';
			if(ar[3] == "B")
			{
				aclas = 'menu_li';
				if(document.getElementById('B' + ar[2]))
				{
					var alrt = getText('benintable');
					div['onclick'] = new Function('return alert(\'' + alrt + '\');'); 
					aclas = 'menu_li_over';
					flag = 1;
				}
				source = 'bene';
				arid = ar[2];
			}else if(ar[3] == "A"){
				aclas = 'menu_li';
				if(document.getElementById('A' + ar[1]))
				{
					var alrt = getText('ainintable');
					div['onclick'] = new Function('return alert(\'' + alrt + '\');'); 
					aclas = 'menu_li_over';
					flag = 1;
				}
				source = 'aing';
				arid = ar[1];
			}
			if(flag == 0){
				// na lang zoeken lijkt dit de manier om in IE (en Firefox) onclick aan de div toe te voegen
				div['onclick'] = new Function('return doCombiActions(' + ar[1] + ',' + ar[2] + ',\'' + ar[3] + '\');'); 
			}			
			div.className = aclas;
			div.appendChild(txt);
			a.appendChild(div);
			listitem.appendChild(a);
		}
	}
}


// keuze van een item uit de combi-list (dus vraag naar een neveneffect) zet de volgende actie's in gang
// disableLink; ter voorkoming van meerdere keren dezelfde keuze kunnen maken
// inMemory; gemaakte keuze in het geheugen plaatsen t.b.v. later gebruik
// getSdefTable; ophalen van neveneffecten van alle in memory div aanwezige items
function doCombiActions(aing_id,bene_id, source) {
	var count = 0;
	var mesg;
	if(source == 'A')
	{
		count = countMemory('A',aing_id);//tellen van aing's (max = globMax) t.b.v. doorlaten van getSdefTable
		mesg = getText('maxAing');
	}else if(source == 'B'){
		count = countMemory('B',bene_id);//tellen van bene's (max = globMax) t.b.v. doorlaten van getSdefTable
		mesg = getText('maxBene');
	}
	//alert ("count " + source + ": " + count);
	if(count < globMax)
	{
		var linkValue = aing_id + 'L' + bene_id;
		inMemory(aing_id,bene_id);// gekozen item in memory plaatsen t.b.v. later gebruik
		getSdefTable();// neveneffecten ophalen
		disableLink(linkValue); // link uitschakelen
	}else{
		alert (mesg);
	}
}

// doet op basis van meegegeven aing_id en bene_id beroep op result.php om neveneffectentable te bouwen
function getSdefTable() {
	var aing = getMemory('A');
	var bene = getMemory('B');
	
	var url="result.php";
	url=url+"?aing_srcID=" + aing + "&bene_srcID=" + bene + "&lang_srcID=" + globLang;
	
	new net.ContentLoader(url,handleSdefTable);
}

function handleSdefTable() {
	/*Stap 1 verwijder oude neveneffectentabel*/
	var ss = document.getElementById('columnMain');
	var info = document.getElementById('info');
	var options = document.getElementById('table_options');
	options.className = 'showOpt';
	
	var aing_ar = getMemory('A');
	var bene_ar = getMemory('B');
	var printref = document.getElementById('print');
	printref.href = '/print.php?stre_srcID=' + globStre + '&lang_srcID=' + globLang + '&aings=' + aing_ar + '&benes=' + bene_ar + '&print=1';
	if(info)
	{
		ss.removeChild(info);
	}
	var sdefdiv = document.getElementById('table_div');
	if(sdefdiv)
	{
		//alert ("remove");
		ss.removeChild(sdefdiv);
	}
	var pictroot = '/pict/';
	/*Stap 2 Bouw outline voor nieuwe neveffectentabel met thead element waarin de headrow komt*/
	var sdefdiv = document.createElement("div");
	sdefdiv.id = 'table_div';
	ss.appendChild(sdefdiv);
	var sdeftable = document.createElement("table");
	sdeftable.id = 'sdef_table';
	sdefdiv.appendChild(sdeftable);
	var sthead = document.createElement("thead");
	var headrow = document.createElement("tr");
	var headcell = document.createElement("th");
	// picture met link om tabel te legen (moet nog een andere pict worden!?)
	/*
	var rmva = document.createElement("a");
	rmva.href = '/index2.php?stre_srcID=75&lang_srcID=' + globLang;
	rmva['onmouseover'] = new Function('return showTablOpt();');
	rmva['onmouseout'] = new Function('return hideTablOpt();');
	var rmvimg = document.createElement("img");
	rmvimg.src = '/pict/356.gif';
	rmvimg.border = '0';
	var remove = getText('clean');
	rmvimg.className = remove;
	rmvimg.title = remove;
	rmva.appendChild(rmvimg);
	*/
	
	
	
	// set the class, colspan en rowspan attribute voor headcell;
        headcell.className = "table_title";
	headcell.colSpan = "2";
	headcell.rowSpan = "2";
	//headcell.appendChild(rmva);
	// plaats headcell in headrow
	headrow.appendChild(headcell);
	var subheadrow = document.createElement("tr");
	/* Stap 3. verwerk binnenkomende data; de string die binnen komt bevat
	str[0]. aing_srcID's met apmt_srcID's (active ingredients en toepassing)
	str[1]. bene_srcID's met lfst_srcID's (beneficials met lifestages)
	str[2]. de effecten per combinatie
	gescheiden door XX*/ 
	//alert (this.req.responseText);
	var str = this.req.responseText.split("XX");
	
	/* str[0] uit binnenkomende gesplitte string bevat de headrij van de gecreërde tabel
	en heeft per line (\n) een aing-set; deze set bevat de aing_name en ID, 
	en gekoppelde toepassingsmethoden (naam en ID)gescheiden door %	
	*/
	var headrow_content = str[0].split("\n");
	var cols = 0;
	var tdvalue = new Array();
	for(i=0; i < headrow_content.length - 1; i++) {
		var instr = headrow_content[i].split("%");
		var aingname = instr[0];
		var aingid = instr[1];
		var apmtstr = instr[2].split("|");
		var colspan = apmtstr.length - 1;
		var clas = "appl_title_parent";
		if(colspan > 1)
		{
			clas = "appl_title_child";
		}
			
		for(j=0; j < apmtstr.length - 1; j++) {
			var myclas = clas;
			var efclas = "efct_child";
			var apmt = apmtstr[j].split("#");
			var apmtname = apmt[0];
			var apmtid = apmt[1];
			var apmthead = document.createElement("th");
			if(j == colspan-1)
			{
				myclas = "appl_title_parent";
				efclas = "efct_parent";
			}
			apmthead.className = myclas;
			apmthead.id = "a" + aingid + "t" + apmtid;
			apmthead.title = apmt[2];
			var apmtnode = document.createTextNode(apmtname);
			apmthead.appendChild(apmtnode);
			subheadrow.appendChild(apmthead);
			tdvalue[cols] = efclas + "|" + aingid + "|" + apmtid;
			cols++;
		}
		var ainghead = document.createElement("th");
		// set the class, colspan en rowspan attribute voor headcell;
		ainghead.className = "aing_title";
		ainghead.id = "a" + aingid;
		ainghead.colSpan = colspan;
		//var aref = document.createElement("a");
		//aref.href = "#";
		//aref.className = "remove";
		//aref.title = "remove this item";
		//aref['onclick'] = new Function('return removeItem(\'a\',' + aingid + ');'); 
		//ainghead.appendChild(aref);
		
		createSymbols(ainghead,'aing',aingid,aingname);	
		
		var content_div = document.createElement("div");
		content_div.className = "header";
		ainghead.appendChild(content_div);
		
		var txtNode = document.createTextNode(aingname);
		
		content_div.appendChild(txtNode);
		headrow.appendChild(ainghead);
	}
	sthead.appendChild(headrow);
	sthead.appendChild(subheadrow);
	sdeftable.appendChild(sthead);
	 
	var headcol_content = str[1].split("\n");
	//alert (tdvalue[0]);
	for(i=0; i < headcol_content.length - 1; i++) {
		var instr = headcol_content[i].split("%");
		var benename = instr[0];
		var beneid = instr[1];
		var lfststr = instr[2].split("|");
		var rowspan = lfststr.length;
		var thisbenebody = document.createElement("tbody");
		var thisbenerow = document.createElement("tr");
		
		var benehead = document.createElement("th");
		benehead.className = "bene_title";
		benehead.id = "b" + beneid;
		benehead.rowSpan = rowspan;
		
		/*
		var aref = document.createElement("a");
		aref.href = "#";
		aref.className = "remove";
		aref.title = "remove this item";
		aref['onclick'] = new Function('return removeItem(\'b\',' + beneid + ');'); 
		benehead.appendChild(aref);
		*/
		createSymbols(benehead,'bene',beneid,benename);	
		var content_div = document.createElement("div");
		content_div.className = "header";
		benehead.appendChild(content_div);
		var benenode = document.createTextNode(benename);
		content_div.appendChild(benenode);
		thisbenerow.appendChild(benehead);
		for(j=0; j < lfststr.length - 1; j++) {
			var lfst = lfststr[j].split("#");
			var lfstname = lfst[0];
			var lfstid = lfst[1];
			if(j == 0)
			{
				var lfsthead = document.createElement("td");
				lfsthead.className = "lfst_title";
				lfsthead.id = "b" + beneid + "l" + lfstid;
				var lfstnode = document.createTextNode(lfstname);
				lfsthead.appendChild(lfstnode);
				thisbenerow.appendChild(lfsthead);
				
				for(k=0; k < cols; k++) {
					var newtd = tdvalue[k].split("|");
					var efcttd = document.createElement("td");
					efcttd.className = newtd[0];
					efcttd.id = "b" + beneid + "l" + lfstid + "a" + newtd[1] + "t" + newtd[2];
					thisbenerow.appendChild(efcttd);
				}
				thisbenebody.appendChild(thisbenerow);
			}else{
				var thislfstrow = document.createElement("tr");
				var lfsthead = document.createElement("td");
			
				lfsthead.className = "lfst_title";
				lfsthead.id = "b" + beneid + "l" + lfstid;
				var lfstnode = document.createTextNode(lfstname);
				lfsthead.appendChild(lfstnode);
				thislfstrow.appendChild(lfsthead);
				for(k=0; k < cols; k++) {
					var newtd = tdvalue[k].split("|");
					var efcttd = document.createElement("td");
					efcttd.className = newtd[0];
					efcttd.id = "b" + beneid + "l" + lfstid + "a" + newtd[1] + "t" + newtd[2];
					thislfstrow.appendChild(efcttd);
				}
				thisbenebody.appendChild(thislfstrow);
			}
			// als bij het laatste stadium is aangekomen, wordt ook de nawerkings row gemaakt
			if(j == rowspan - 2)
			{
				var thisnawrow = document.createElement("tr");
				var nawhead = document.createElement("td");
				nawhead.className = "naw_title";
				nawhead.id = "nab" + beneid;
				var nawtitle = getText('nawerking');
				var nawnode = document.createTextNode(nawtitle);
				nawhead.appendChild(nawnode);
				thisnawrow.appendChild(nawhead);
				for(k=0; k < cols; k++) {
					var newtd = tdvalue[k].split("|");
					var efcttd = document.createElement("td");
					if(newtd[0] == "efct_parent")
					{
						thisclas = "naw_parent";
					}else{
						thisclas = "naw_child";
					}
					efcttd.className = thisclas;
					efcttd.id = "nawb" + beneid + "a" + newtd[1] + "t" + newtd[2];
					thisnawrow.appendChild(efcttd);
				}
				thisbenebody.appendChild(thisnawrow);
			}
				
			
		}
		sdeftable.appendChild(thisbenebody);
	}
		
	/*
	//var hrowitems = headrow[2].split("|");
	var headcol = str[1].split("\n");
	//var hcolitems = headcol.split("|");
	alert(headrow);
	*/
	
	
	var list = str[2].split("\n");
	var test = new Array();
	for(i=0; i < list.length - 1; i++) {
		
		var ar = list[i].split("|");
		
		var td = document.getElementById('b' + ar[2] + 'l' + ar[3] + 'a' + ar[0] + 't' + ar[1]);
		var img = document.createElement("img");
		img.src = pictroot + ar[4] + '.gif';
		img.title = ar[7];
		td.appendChild(img);
		if(!test['nawb' + ar[2] + 'a' + ar[0] + 't' + ar[1]]){
			var nawtd = document.getElementById('nawb' + ar[2] + 'a' + ar[0] + 't' + ar[1]);
			var nawerking = ar[5].replace(/&#189;/, "½");// html wordt in textnode niet begrepen, daarom omzetting!
			nawtd.title = nawerking + " " + ar[6];
			test['nawb' + ar[2] + 'a' + ar[0] + 't' + ar[1]] = 1;
			
			var textnode = document.createTextNode(nawerking);
			nawtd.appendChild(textnode);
			//nawtd.innerHtml = ar[5];
		}
	}
}

//bij elke nieuwe menukeuze wordt hier het oude menu leeg gemaakt
//in de div met id=leftRail worden, indien aanwezig, de div's met id=search_suggest of id=combi_list verwijderd 
function emptyOldMenu() {
	var ss = document.getElementById('vervolgKeuze');
	var oldsuggest = document.getElementById('search_suggest');
	if(oldsuggest)
	{
		ss.removeChild(oldsuggest);
	}
	var oldlist = document.getElementById('combi_list');
	if(oldlist)
	{
		ss.removeChild(oldlist);
	}
}

//uitschakelen van de link om 2 keer dezelfde keuze onmogelijk te maken
function disableLink(value) {
	var link = document.getElementById(value);
	if(link.className == 'menu_li')
	{
		link.className = 'menu_li_over';
	}
	var alrt = getText('intab');
	link['onclick'] = new Function('return alert(\'' + alrt + '\');');
	//alert(value);
}

//inschakelen van de link na verwijderen uit tabel
function enableLink(value,srcBrev) {
	var link = document.getElementById(value);
	if(link)
	{
		if(link.className == 'menu_li_over')
		{
			link.className = 'menu_li';
		}
		var ar = value.split("L");
		link['onclick'] = new Function('return doCombiActions(' + ar[0] + ',' + ar[1] + ',\'' + srcBrev + '\');'); 
	}
}

// gekozen items in memory plaatsen in 2 delen
// 1. in div id=aing of div id=bene wordt een lege div gemaakt met als id de letter A(aing) of B(bene) en de srcID
// 2. in div id=aing of div id=bene wordt betreffende aing_srcID of bene_srcID in een met | gescheiden array geplaatst
function inMemory(aing_id, bene_id) {
	var A_value = 'A' + aing_id;// plaatsen in hidden A (aing) div voor later gebruik
	if(!document.getElementById(A_value) && aing_id > 0)
	{
		var A_div = document.createElement("div");
		A_div.id = A_value;
		var parentA = document.getElementById('aing');
		parentA.appendChild(A_div);
		var AtxtNode = document.createTextNode(aing_id + '|');
		var A = document.getElementById('A');
		A.appendChild(AtxtNode);
	}
	var B_value = 'B' + bene_id;// plaatsen in hidden B (bene) div voor later gebruik 
	if(!document.getElementById(B_value) && bene_id > 0)
	{
		var B_div = document.createElement("div");
		B_div.id = B_value;
		var parentB = document.getElementById('bene');
		parentB.appendChild(B_div);
		var BtxtNode = document.createTextNode(bene_id + '|');
		var B = document.getElementById('B');
		B.appendChild(BtxtNode);
	}
}

// Memory leeg maken
function emptyMemory(source) {
	var main = document.getElementById('vervolgKeuze');
	if(source == 'aing')
	{
		var aing = document.getElementById('aing');
		var A = document.getElementById('A'); 
		while (aing.childNodes[0]) {
			if(aing.childNodes[0] != A)
			{
				aing.removeChild(aing.childNodes[0]);
			}
		}
		
		if(document.all){
			A.innerText = '';
		}else{
			A.textContent = '';
		}
	}else if(source == 'bene'){
		var bene = document.getElementById('bene');
		var B = document.getElementById('B');
		while (bene.childNodes[0]) {
			if(bene.childNodes[0] != B)
			{
				bene.removeChild(bene.childNodes[0]);
			}
		}
		if(document.all){
			B.innerText = '';
		}else{
			B.textContent = '';
		}
	}
}

// aing of bene items ophalen uit memory
function getMemory(brevsource) {
	var retval;
	if(document.all){
		retval = document.getElementById(brevsource).innerText;
	}else{
		retval = document.getElementById(brevsource).textContent;
	}
	retval = retval.replace(/\|$/,'');// eind pipe verwijderen	
	return retval;
}

// tellen van in geheugen aanwezige items max globMax per brevsource (A(aing), B(bene))
function countMemory(brevsource, thisid) {
	var retval = 0;
	var ids;
	if(document.all){
		ids = document.getElementById(brevsource).innerText;
	}else{
		ids = document.getElementById(brevsource).textContent;
	}
	var id_ar = ids.split("|");
	for(i=0; i < id_ar.length - 1; i++) {
		if(id_ar[i] != thisid)// als thisid gelijk is aan al aanwezig ID mag alles doorgaan (is dan immers geen extra item)
		{
			retval++;
		}
	}
	return retval;
}

//plaatsen van gekozen item in zoekveld
function setSearch(value, source, id) {
	globSdefFlag = 1;// global side effectFlag op 1 zetten >> controle in getCombiList
	var brevsource;
	var altsource;
	var mesg;
	var aing_id = -1;
	var bene_id = -1;
	if(source == 'aing' || source == 'trnm')
	{
		brevsource = 'A';
		altsource = 'B';
		mesg = getText('maxAing');
		aing_id = id;
		globLastSource = 'aing';
		globAing = id;
	}else if(source == 'bene'){
		brevsource = 'B';
		altsource = 'A';
		mesg = getText('maxBene');
		bene_id = id;
		globLastSource = 'bene';
		globBene = id;
	}
	var count = countMemory(brevsource, id);
	var altcount = countMemory(altsource, 0);
	
	if(count < globMax)
	{
		getCombiList(source,id);// list ophalen van items waarmee gekozen item neveneffecten heeft
		value = unescape(value);
		document.getElementById('txtSearch').value = value;
		// als er nog niets in de memory staat wordt bij keuze van een item uit de suggestlist 
		// dit item ook nog niet in de memory gezet
		// omdat er immers ook nog geen side effects opgehaald kunnen worden
		// ook moet de global globSdefFlag nog steeds op 1 staan
		// hieronder wordt m.b.v. setTimeout van 250 ms naar waitFunt verwezen
		// uitleg bij waitFunct!
		
		setTimeout("waitFunct(" + count + "," + aing_id + "," + bene_id + "," + altcount + ")", 500); //count is hierin niet gedefinieerd???
		
	}else if(count >= globMax){
		alert (mesg);
	}
	
}

// vanuit setSearch uitgestelde functie om globSdefFlag de kans te geven op 0 gezet te kunnen worden
// als b.v. een handelsnaam geen neveneffecten heeft; in dat geval wordt globSdefFlag op 0 gezet om ervoor te zorgen
// dat deze handelsnaam (active ingredient) niet in de Memory gezet wordt, dus meetelt voor het maximaal aantal te kiezen
// active ingredienten
function waitFunct(count,aing_id, bene_id,altcount) {
	
	if(count > 0 && globSdefFlag == 1)
		{
			inMemory(aing_id,bene_id);// gekozen item in memory plaatsen t.b.v. later gebruik
			if(altcount > 0)
			{
				getSdefTable();// neveneffecten ophalen als er al combi's te maken zijn
			}
		}
}
//plaatsen van gekozen item in zoekveld bij externe aanroep
function setExtSearch() {
	var value = "";
	var source = "";
	var id = "";
	var str = this.req.responseText.split(",");
	value = str[0];
	source = str[1];
	id = str[2];
	globSdefFlag = 1;// global side effectFlag op 1 zetten >> controle in getCombiList
	var brevsource;
	var altsource;
	var mesg;
	var aing_id = -1;
	var bene_id = -1;
	if(source == 'aing' || source == 'trnm')
	{
		brevsource = 'A';
		altsource = 'B';
		mesg = getText('maxAing');
		aing_id = id;
		globLastSource = 'aing';
		globAing = id;
	}else if(source == 'bene'){
		brevsource = 'B';
		altsource = 'A';
		mesg = getText('maxBene');
		bene_id = id;
		globLastSource = 'bene';
		globBene = id;
	}
	var count = countMemory(brevsource, id);
	var altcount = countMemory(altsource, 0);
	
	if(count < globMax)
	{
		getCombiList(source,id);// list ophalen van items waarmee gekozen item neveneffecten heeft
		value = unescape(value);
		document.getElementById('txtSearch').value = value;
		// als er nog niets in de memory staat wordt bij keuze van een item uit de suggestlist dit item ook nog niet in de memory gezet
		// omdat er immers ook nog geen side effects opgehaald kunnen worden
		// ook moet de global globSdefFlag nog steeds op 1 staan
		
		if(count > 0 && globSdefFlag == 1)
		{
			inMemory(aing_id,bene_id);// gekozen item in memory plaatsen t.b.v. later gebruik
			if(altcount > 0)
			{
				getSdefTable();// neveneffecten ophalen als er al combi's te maken zijn
			}
		}
	}else if(count >= globMax){
		alert (mesg);
	}
	
}
//Mouse over function
function suggestOver(div_value) {
	if(div_value.className == 'menu_li')
	{
		div_value.className = 'menu_li_over';
	}
}
//Mouse out function
function suggestOut(div_value) {
	if(div_value.className == 'menu_li_over')
	{
		div_value.className = 'menu_li';
	}
}

//Mouse over function voor bene startmenu
function subBOver(div_value) {
	if(div_value.className != 'stMenuBFocus')
	{
		div_value.className = 'Bover';
	}
}
//Mouse out function voor bene startmenu
function subBOut(div_value) {
	if(div_value.className != 'stMenuBFocus')
	{
		div_value.className = 'stMenuBPlain';		
	}
}

//Mouse over function
function subPOver(div_value) {
	div_value.className = 'Pover';
}
//Mouse out function
function subPOut(div_value) {
	div_value.className = 'Pout';
}
//plaatst/verwijdert pointer bij aanwijzen/weggaan van startkeuze
function setPointer(aID,clasval,from) {
	if(document.getElementById(aID).className != "keuzeDef")
	{
		document.getElementById(aID).className = clasval;
	}else{
		if(from == "def")
		{
			document.getElementById(aID).className = clasval;
		}
	}
}
//startmenu focus instellen
function setMenuFocus(start) {
	if(start == "bene")
	{
		document.getElementById("startBene").className = 'stMenuBFocus';
		document.getElementById("startPest").className = 'stMenuAPlain';
	}else if(start == "aing"|| start == "trnm"){
		document.getElementById("startPest").className = 'stMenuAFocus';
		document.getElementById("startBene").className = 'stMenuBPlain';
	}
}
// maakt en plaatst herkies- en verwijdersymbooltjes
function createSymbols(upperdiv, source, id, name){
	var symboldiv = document.createElement("div");
	symboldiv.className = "symbols";
	
	var a = document.createElement("a");
	a.href = '#';
	var img = document.createElement("img");
	img.src = '/pict/turn.gif';
	img.border = '0';
	var more = getText('more');
	img.className = more;
	img.title = more;		
	img.align = 'left';
	img['onclick'] = new Function('return getStart(\'' + source + '\',' + id + ',\'' + name + '\');');
	a.appendChild(img);
	symboldiv.appendChild(a);
	
	
	var a2 = document.createElement("a");
	a2.href = '#';
	var rmvimg = document.createElement("img");
	rmvimg.src = '/pict/rmv.gif';
	rmvimg.border = '0';
	var remove = getText('remove');
	rmvimg.className = remove;
	rmvimg.title = remove;		
	rmvimg.align = 'right';
	rmvimg['onclick'] = new Function('return removeItem(\'' + source + '\',' + id + ');'); 
	a2.appendChild(rmvimg);
	symboldiv.appendChild(a2);
	upperdiv.appendChild(symboldiv);
}

// verwijder item uit tabel
function removeItem(source, id){
	//alert('verwijderen in ontwikkeling; nog met haperingen: HM20070524');
	var brev;
	var source_div = document.getElementById(source);
	var altbrev;
	var linkdiv = '';
	if(source == 'aing')
	{
		brev = 'A';
		altbrev = 'B';
		linkdiv = id + 'L' + globBene;
	}else if (source == 'bene'){
		brev = 'B';
		altbrev = 'A';
		linkdiv = globAing + 'L' + id;
	}
	var Id_ar = getMemory(brev).split("|"); // Alles uit memory ophalen
	// Vervolgens memory leeg maken
	// verwijderen div met huidige, te verwijderen brev+id
	var brevid = brev + id;
	var hidden_div = document.getElementById(brevid);
	source_div.removeChild(hidden_div);
	// in de huidige combi-list de weggegooide link weer enablen (als de weggegooide uit geheugen is verwijderd!!)
	enableLink(linkdiv,brev);
	
	// verwijderen id's met pipe	
	if(document.all){
		document.getElementById(brev).innerText = '';
	}else{
		document.getElementById(brev).textContent = '';
	}
	
	//Vervolgens nieuwe id-list maken zonder de te verwijderen ID
	var putback = '';
	for(i=0; i < Id_ar.length; i++) {
		if(Id_ar[i] != id){
			putback += Id_ar[i] + '|';
		}
	}
	//vervolgens putback terug in de memory plaatsen
	var txtNode = document.createTextNode(putback);
	var mem = document.getElementById(brev);
	mem.appendChild(txtNode);
			
	
	var Acount = countMemory('A', 0);
	var Bcount = countMemory('B', 0);
	
	if(Acount > 0 && Bcount > 0)
	{
		getSdefTable();
		
	}else{
		var main = document.getElementById('columnMain');
		var sdefdiv = document.getElementById('table_div');
		if(sdefdiv)
		{
			//alert ("remove");
			main.removeChild(sdefdiv);
		}
	}	
}

// submenu onder pesticiden zichtbaar maken
function showSubPest() {
	var parentdiv = document.getElementById('subPest');
	parentdiv.className = 'showSub';
}
// Legenda zichtbaar maken
function showLegend() {
	var parentdiv = document.getElementById('legend');
	parentdiv.className = 'showLegend';
}
// Legenda verbergen
function hideLegend() {
	var parentdiv = document.getElementById('legend');
	parentdiv.className = 'hideSub';
}
// submenu onder pesticiden onzichtbaar maken
function hideSubPest(flag) {
	var parentdiv = document.getElementById('subPest');
	
	if(window.event){
		if (event.srcElement.tagName == "DIV" || flag == 1){
			parentdiv.className = 'hideSub';
		}
	}else{
		parentdiv.className = 'hideSub';
	}
}
// Texten/vertalingen functie
function getText(value) {
	var retval = '';
	
	if(value == 'trnm'){
		if (globLang == 1)
		{
			retval = 'Tradenames';
		}else if(globLang == 2){
			retval = 'Handelsnamen';
		}else if(globLang == 4){
			retval = 'Nombre Comercial';
		}
	}else if(value == 'aing'){
		if (globLang == 1)
		{
			retval = 'Active ingredients';
		}else if(globLang == 2){
			retval = 'Werkzame stoffen';
		}else if(globLang == 4){
			retval = 'Materia activa';
		}
	}else if(value == 'bene'){
		if (globLang == 1)
		{
			retval = 'Beneficials';
		}else if(globLang == 2){
			retval = 'Nuttige organismen';
		}else if(globLang == 4){
			retval = 'Fauna util';
		}
	}else if(value == 'firsttrnm'){
		if (globLang == 1)
		{
			retval = 'type first character(s)';
		}else if(globLang == 2){
			retval = 'typ eerste letter(s)';
		}else if(globLang == 4){
			retval = 'introduzca la primera letra(s)';
		}
	}else if(value == 'firstaing'){
		if (globLang == 1)
		{
			retval = 'type first character(s)';
		}else if(globLang == 2){
			retval = 'typ eerste letter(s)';
		}else if(globLang == 4){
			retval = 'introduzca la primera letra(s)';
		}
	}else if(value == 'firstbene'){
		if (globLang == 1)
		{
			retval = 'type first character(s)';
		}else if(globLang == 2){
			retval = 'typ eerste letter(s)';
		}else if(globLang == 4){
			retval = 'introduzca la primera letra(s)';
		}
	}else if(value == 'noef'){
		if (globLang == 1)
		{
			retval = 'no side effects known';
		}else if(globLang == 2){
			retval = 'geen neveneffecten bekend';
		}else if(globLang == 4){
			retval = 'no se conocen efectos secundarios';
		}
	}else if(value == 'benintable'){
		if (globLang == 1)
		{
			retval = 'this beneficial is already in table!';
		}else if(globLang == 2){
			retval = 'dit organisme staat al in de tabel!';
		}else if(globLang == 4){
			retval = 'este organismo ya aparece en la tabla';
		}
	}else if(value == 'ainintable'){
		if (globLang == 1)
		{
			retval = 'this active ingredient is already in table!';
		}else if(globLang == 2){
			retval = 'deze werkzame stof staat al in de tabel!';
		}else if(globLang == 4){
			retval = 'este materia activa ya aparece en la tabla';
		}
	}else if(value == 'maxAing'){
		if (globLang == 1)
		{
			retval = globMax + ' active ingredients selected!\nRemove one or more before you can go on';
		}else if(globLang == 2){
			retval = globMax + ' werkzame stoffen geselecteerd!\nVerwijder een of meer voordat u verder kunt';
		}else if(globLang == 4){
			retval = globMax + ' materias activas fueron seleccionados! \Elimine uno o más para poder realizar la búsqueda';
		}
	}else if(value == 'maxBene'){
		if (globLang == 1)
		{
			retval = globMax + ' beneficials selected!\nRemove one or more before you can go on';
		}else if(globLang == 2){
			retval = globMax + ' nuttige organismen geselecteerd!\nVerwijder één of meer voordat u verder kunt';
		}else if(globLang == 4){
			retval = globMax + ' organismos fueron seleccionados! \Elimine uno o más para poder realizar la búsqueda';
		}
	}else if(value == 'intab'){
		if (globLang == 1)
		{
			retval = 'already in table!';
		}else if(globLang == 2){
			retval = 'staat al in de tabel!';
		}else if(globLang == 4){
			retval = 'ya incluido en la tabla!';
		}
	}else if(value == 'more'){
		if (globLang == 1)
		{
			retval = 'show all possible combinations with this item';
		}else if(globLang == 2){
			retval = 'toon alle mogelijke combinaties bij dit item';
		}else if(globLang == 4){
			retval = 'demuestre todas las combinaciones posibles con este artículo';
		}
	}else if(value == 'remove'){
		if (globLang == 1)
		{
			retval = 'remove';
		}else if(globLang == 2){
			retval = 'verwijder';
		}else if(globLang == 4){
			retval = 'elimine';
		}
	}else if(value == 'nawerking'){
		if (globLang == 1)
		{
			retval = 'persistence';
		}else if(globLang == 2){
			retval = 'nawerking';
		}else if(globLang == 4){
			retval = 'persistencia';
		}
	}else if(value == 'clean'){
		if (globLang == 1)
		{
			retval = 'empty table';
		}else if(globLang == 2){
			retval = 'tabel leeg maken';
		}else if(globLang == 4){
			retval = 'tabla vacía';
		}
	}else if(value == 'trnmhead'){
		if (globLang == 1)
		{
			retval = 'search by tradename';
		}else if(globLang == 2){
			retval = 'zoek op handelsnaam';
		}else if(globLang == 4){
			retval = 'búsqueda por la nombre comercial';
		}
	}else if(value == 'benehead'){
		if (globLang == 1)
		{
			retval = 'search by beneficial';
		}else if(globLang == 2){
			retval = 'zoek op organisme';
		}else if(globLang == 4){
			retval = 'búsqueda por la fauna util';
		}
	}else if(value == 'ainghead'){
		if (globLang == 1)
		{
			retval = 'search by active ingredient';
		}else if(globLang == 2){
			retval = 'zoek op werkzame stof';
		}else if(globLang == 4){
			retval = 'búsqueda por la materia activa';
		}
	}else if(value == 'selectbene'){
		if (globLang == 1)
		{
			retval = 'select organism from list';
		}else if(globLang == 2){
			retval = 'selecteer organisme uit lijst';
		}else if(globLang == 4){
			retval = 'seleccione el organismo de lista';
		}
	}
	return retval;
}
