// Copyright 2004 by Alexander von Weiss | www.vonweiss.de

// m o v e D u a l L i s t  {

function moveDualList(fromList,toList,moveAll) {
    if (toList.options.length > 0 && toList.options[0].value == 'tempGAGA') {
        toList.options.length = 0;
    }
    for (i=0;i<fromList.options.length;i++) {
        var obj = fromList.options[i];
        if ((obj.selected && obj.value != 'temp') || moveAll) {
            toList.options[toList.length] = new Option(obj.text,obj.value);
            fromList.options[i] = null;
            i--;
        }
    }
}

function moveOptionUp(obj) {
    for (i=0; i<obj.options.length; i++) {
        if (obj.options[i].selected) {
            if (i != 0 && !obj.options[i-1].selected) {
                swapOptions(obj,i,i-1);
                obj.options[i-1].selected = true;
            }
        }
    }
}

function moveOptionDown(obj) {
    for (i=obj.options.length-1; i>=0; i--) {
        if (obj.options[i].selected) {
            if (i != (obj.options.length-1) && ! obj.options[i+1].selected) {
                swapOptions(obj,i,i+1);
                obj.options[i+1].selected = true;
            }
        }
    }
}

function swapOptions(obj,i,j) {
    var o = obj.options;
    var i_selected = o[i].selected;
    var j_selected = o[j].selected;
    var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
    var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);
    o[i] = temp2;
    o[j] = temp;
    o[i].selected = j_selected;
    o[j].selected = i_selected;
}

function allSelect(obj) {
    for (i=0;i<obj.length;i++) {
        obj.options[i].selected = true;
    }
}

function FilterLeftList(ListLeft,ListRight,FilterInput,thisName) {
	knownIds = eval(thisName + "_Ids.length")
	OptionCounter = 0;

	// Select Feld leeren
	for (i = ListLeft.length; i >= 0; i--) {
		ListLeft.options[i] = null;
	}

	if (FilterInput.value == "" || FilterInput.value == "*") {
		for (i = 0; i < knownIds; i++) {
			sLen = ListLeft.length;
	      ListLeft.options[sLen]= new Option(eval(thisName + "_Strings[i]"),eval(thisName + "_Ids[i]"));
		}
	} else {
		RightListIds = "";
		for (i = 0; i < ListRight.length; i++) {
			RightListIds += "_" + ListRight.options[i].value;
		}
		for (i = 0; i < knownIds; i++) {
			findIn = eval(thisName + "_Strings[i]");
			thisId = eval(thisName + "_Ids[i]");
			if (findIn.length > 0 && RightListIds.indexOf(thisId) == -1) {
				foundPos = eval('findIn.search(/' + FilterInput.value + '/i);');
				if (foundPos != -1) {
					sLen = ListLeft.length;
			      ListLeft.options[sLen] = new Option(findIn,thisId);
					OptionCounter++;
				}
			}
		}
	}
}

// }


// i n s e r t F r o m W o r d {

function insertFromWord(copyFrom,copyTo) {
	D = copyFrom.innerHTML;

	D = D.replace(/<(\/?)(i|b|u)>/gi,"[$1$2]");
	D = D.replace(/<(\/?)strong>/gi,"[$1b]");

	// Liste
	D = D.replace(/<li[^>]*>\r\n/gi,"[*]");
	D = D.replace(/<(\/?)ul[^>]*>/gi,"[$1list]");
	D = D.replace(/<ol[^>]*>/gi,"[list=nr]");
	D = D.replace(/<\/ol[^>]*>/gi,"[/list]");

	D = D.replace(/&nbsp;/g," ");

	D = D.replace(/<a[^>]*href="mailto:[^<]*<([^>]*)>">([^<]*)<\/a>/gi,"[email=$1]$2[/email]");
	D = D.replace(/<a[^>]*href="([^"]*)"[^>]*>([^<]*)<\/a>/gi,"[url=$1]$2[/url]");

	var zaehler = 0;
	while (D.search(/<img[^>]*>/i) > -1)
		D = D.replace(/<img[^>]*>/i,"[_Bild" + ++zaehler + "Hier_]");

//	D = D.replace(/<\/p>/gi,'\r\n');
	D = D.replace(/<br ?\/?>/gi,'\r\n');

	oldlen = D.length + 1;
	while(oldlen > D.length) {
		oldlen = D.length;
		D = D.replace(/<([a-z][a-z]*)> *<\/\1>/gi,' ').
			replace(/<([a-z][a-z]*)> *<([a-z][^>]*)> *<\/\1>/gi,'<$2>');
	}
	D = D.replace(/<([a-z][a-z]*)><\1>/gi,'<$1>').
		replace(/<\/([a-z][a-z]*)><\/\1>/gi,'<\/$1>');

	D = D.replace(/  */gi,' ');
	
	D = D.replace(/<[^>]*>/g,"");

	copyTo.value = D;
	
	copyFrom.style.visibility = 'hidden';
	copyTo.style.visibility = 'visible';
	copyTo.style.position = 'relative';
	copyFrom.style.position = 'absolute';
}

// }


// e x t i n p u t  {
 
function searchEntriesSelectId(thisName,thisForm,sel,isint) {
	form = document.forms[thisForm];
	formId = form.elements["forminput[" + thisName + "_id]"];
	formSelect = form.elements[thisName + "_select"];

	if ((typeof(sel) == 'string') && (sel.charAt(0) == 'u')) {
		resetOptionButtons(thisName,'u');
		id_update_info = document.getElementById( thisName + "_id_update")
		id_update_info.firstChild.data = 'Update';
		return false;
	}
	
	resetOptionButtons(thisName,'');
	id_update_info = document.getElementById( thisName + "_id_update")
	id_update_info.firstChild.data = 'Alten Eintrag benutzen.';

	if (isint) {
		for (i=0;i<eval(thisName + "_Ids.length");i++) {
			if (eval(thisName + "_Ids[" + i + "]") == sel)
				this_id = i;
		}
		formId.value = sel;
	} else {
		this_id = formSelect.options[sel].value;
		formId.value = eval(thisName + "_Ids[" + this_id + "]");
	}
	if (isint && this_id == -1)
		return false;
	
	document.getElementById( thisName + "_selectspan").style.display = 'none';
	for (i in eval(thisName)) {	
		val = eval(thisName+"[i]");
		document.getElementById(thisName + "_" + val).firstChild.data = eval(thisName + "_" + val +"["+this_id+"]")
	}
}

function moveString(thisForm,thisName) {
	form = document.forms[thisForm];
	thisInput = form.elements["forminput[" + thisName + "]"];
	thisSpan = document.getElementById( thisName );
	thisInput.value = thisSpan.firstChild.data;
}

function resetOptionButtons(thisName,changeSwitch) {
	document.getElementById( thisName + "_switch_u").firstChild.data = '.u.';
	document.getElementById( thisName + "_switch_L").firstChild.data = '.L.';
	document.getElementById( thisName + "_switch_n").firstChild.data = '.n.';
	document.getElementById( thisName + "_switch_R").firstChild.data = '.R.';
	if (changeSwitch != '')
		document.getElementById( thisName + "_switch_"+changeSwitch).firstChild.data = '[' + changeSwitch + ']';
}

function pressedOptionSwitch(thisName,thisForm,changeSwitch) {
	form = document.forms[thisForm];
	formId = form.elements["forminput[" + thisName + "_id]"];
	id_update_info = document.getElementById( thisName + "_id_update")
	if (changeSwitch == "u" && (formId.value == "" || formId.value == "neu")) {
		alert("Erst einen Eintrag aus der Liste auswählen");
		return false;
	}
	resetOptionButtons(thisName,changeSwitch);
	switch (changeSwitch) {
		case 'u':
			if (formId.value.charAt(0) != "u") {
				id_update_info.firstChild.data = 'Update ID ' + formId.value + '. Umbedingt mit "<-" alte benötigte Werte Übernehmen!';
				formId.value = "u"+formId.value;
			}
			break;
		case 'R':
			formId.value = form.elements["forminput[" + thisName + "_oldid]"].value;
			searchEntriesSelectId(thisName,thisForm,formId.value,true)
			for (i=0; i < eval(thisName +".length"); i++)
				form.elements["forminput[" + thisName + "_" + eval(thisName + "[i]") + "]"].value = '';
			break;
		case 'L':
			formId.value = '';
			id_update_info.firstChild.data = 'Kein Eintrag';
			for (i=0; i < eval(thisName +".length"); i++)
				form.elements["forminput[" + thisName + "_" + eval(thisName + "[i]") + "]"].value = '';
			break;
		case 'n':
			formId.value = 'neu';
			id_update_info.firstChild.data = 'Neuer Eintrag ';
			break;
		default:
			break;
	}
}

function searchEntries(thisName,thisInputName,thisForm) {
	// Forumarfelder
	form = document.forms[thisForm];
	formInput = form.elements["forminput[" + thisName + "_" + thisInputName + "]"];
	formId = form.elements["forminput[" + thisName + "_id]"];
	formSelect = form.elements[thisName + "_select"];
	formInputValue = formInput.value.toLowerCase();
	
	if (formInputValue == "") {
		document.getElementById( thisName + "_selectspan").style.display = 'none';
	} else {
		// Variablen
		sLen = formSelect.length;
		OptionCounter = 0;
		if (formId.value != "" && formId.value != "neu")
			pressedOptionSwitch(thisName,thisForm,'u');

		// Select Feld leeren
		for (i = sLen; i >= 0; i--) {
			formSelect.options[i] = null;
		}

		for (i = 0; i < eval(thisName + "_Content.length") - 1; i++) {
			findIn = eval(thisName + "_" + thisInputName + "[i]")
			if (findIn.length > 0) {
				foundPos = eval('findIn.search(/^' + formInputValue + '|^((http:\\\/\\\/www\\\.|http:\\\/\\\/|www\\\.)' + formInputValue + ')|([ ]' + formInputValue + ')/i);');
				if (foundPos != -1  ||  formInputValue == "*") {
					sLen = formSelect.length;
			      formSelect.options[sLen]= new Option(findIn,i);
					OptionCounter++;
				}
			}
		}
	
		if (OptionCounter > 0) {
			if (document.getElementById( thisName + "_selectspan").style.display == 'none') {
				document.getElementById( thisName + "_selectspan").style.display = '';
				document.getElementById( thisName + "_list_options").style.display = '';
				document.getElementById( thisName + "_list_text").firstChild.data = 'Liste';
			}
		} else {
			document.getElementById( thisName + "_selectspan").style.display = 'none';
			document.getElementById( thisName + "_list_options").style.display = 'none';
			document.getElementById( thisName + "_list_text").firstChild.data = 'Nichts gefunden';
		}
	}
}

// }

function SimpleSearchEntries(thisName,thisForm) {
	// Forumarfelder
	form = document.forms[thisForm];
	formInput = form.elements["forminput[" + thisName + "_suche]"];
	formListe = form.elements[thisName +"_select"];
	formSelect = form.elements["forminput[" + thisName +"]"];
	formInputValue = formInput.value.toLowerCase();
	
	if (formInputValue == "") {
		document.getElementById( thisName + "_selectspan").style.display = 'none';
	} else {
	 	// Variablen
	 	sLen = formListe.length;
	 	OptionCounter = 0;
	
	 	// Liste leeren
	 	for (i = sLen; i >= 0; i--)
	 		formListe.options[i] = null;
	
	 	for (i = 0; i < eval(thisName + "_Content.length"); i++) {
	 		findIn = eval(thisName + "_Content[i]")
	 		if (findIn.length > 0) {
	 			foundPos = eval('findIn.search(/^' + formInputValue + '|^((http:\\\/\\\/www\\\.|http:\\\/\\\/|www\\\.)' + formInputValue + ')|([ ]' + formInputValue + ')/i);');
	 			if (foundPos != -1  ||  formInputValue == "*") {
	 				sLen = formListe.length;
	 		    formListe.options[sLen] = new Option(findIn,i);
	 				OptionCounter++;
	 				thisId = i;
          thisEntryChosen = findIn;
	 			}
	 		}
		}
	
	 	if (OptionCounter > 1) {
	 		if (document.getElementById( thisName + "_selectspan").style.display == 'none') {
	 			document.getElementById( thisName + "_selectspan").style.display = '';
	 			document.getElementById( thisName + "_list_options").style.display = '';
	 			document.getElementById( thisName + "_list_text").firstChild.data = 'Liste';
	 		}
	 	} else {
	 		document.getElementById( thisName + "_selectspan").style.display = 'none';
	 		document.getElementById( thisName + "_list_options").style.display = 'none';
	 		if (OptionCounter < 1)
	 			document.getElementById( thisName + "_list_text").firstChild.data = 'Nichts gefunden';
	 		else {
    	 	for (i = 0; i < formSelect.length; i++) {
          if (formSelect[i].text == thisEntryChosen) {
    	 			formSelect[i].selected = true;
     	 			document.getElementById( thisName + "_list_text").firstChild.data = 'Eintrag ausgewählt';
          }
        }
	 		}
	 	}
	}
}

function SimpleSelectEntry(thisName,thisForm) {
	// Forumarfelder
	form = document.forms[thisForm];
	formListe = form.elements[thisName +"_select"];
	formSelect = form.elements["forminput[" + thisName +"]"];
	
 	for (i = 0; i < eval(thisName + "_Content.length"); i++) {
		if (formListe.options[i].selected == true) {
  	 	for (i2 = 0; i2 < formSelect.length; i2++) {
        if (formSelect[i2].text == formListe.options[i].text) {
  	 			formSelect[i2].selected = true;
    			document.getElementById( thisName + "_selectspan").style.display = 'none';
    			return false;
        }
      }
		}
	}
}