// Javascriptfunktionen fuer Dokumentenverwaltung 
// 
// (c) 2005 by Sven Stefani, ss@stefani.biz
//
//


function areyousure(msg)
{
    if (msg == "") msg="Sind Sie sicher?";
    return confirm(msg);
}



function showlayer(layername, show)
{
	if(!document.getElementById) return;
	
	var obj = document.getElementById(layername);
	if(!obj || !obj.style) return alert('Fehler!' + layername + ' existiert nicht.');
	
	obj.style.visibility = show ? "visible" : "hidden";
} 


function login_checkselection(layername,cnt){
	if (document.flogin.f_other1.options[document.flogin.f_other1.selectedIndex].value.substr(0,1) == "-") {
		for (var i=1; i<(cnt+1); i++)
		{
			showlayer(layername+i, true); 
			showlayer(layername+i, true);
		}
	}
	else
	{
		for (i=1; i<(cnt+1); i++)
		{
			showlayer(layername+i, false); 
			showlayer(layername+i, false);
		}
	}
	
}


// removes single newlines \r, \n, or \r\n
function removesinglenewline (oldtext)
{
	// replace \n\r with #~-n-~#
	oldtext = oldtext.replace(/\r\n/g, "#~-n-~#");	

	// replace \r\n with #~-n-~#
	oldtext = oldtext.replace(/\n\r/g, "#~-n-~#");	

	// replace \r with #~-n-~#
	oldtext = oldtext.replace(/\r/g, "#~-n-~#");	

	// replace \n with #~-n-~#
	oldtext = oldtext.replace(/\n/g, "#~-n-~#");	

	// replace #~-r-~#{2,} with \n
	oldtext = oldtext.replace(/(#~-n-~#){2,}/g, "\n\n");	

	// remove single #~-n-~#
	oldtext = oldtext.replace(/(#~-n-~#)/g, " ");	

	return oldtext;
}



// the function inserttag (original name was insert) was programmed by Torsten Anacker (torsten -at- anaboe.net)
// http://aktuell.de.selfhtml.org/tippstricks/javascript/bbcode/
// modified by Sven Stefani, 16.03.2005
function inserttag(myform, aTag, eTag) {
	var input = myform;
	input.focus();
	/* für Internet Explorer */
	if(typeof document.selection != 'undefined') {
		/* Einfügen des Formatierungscodes */
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = aTag + insText + eTag;
		/* Anpassen der Cursorposition */
		range = document.selection.createRange();
		if (insText.length == 0) {
			range.move('character', -eTag.length);
		} else {
			range.moveStart('character', aTag.length + insText.length + eTag.length);      
		}
		range.select();
	}
	/* für neuere auf Gecko basierende Browser */
	else if(typeof input.selectionStart != 'undefined')
	{
		/* Einfügen des Formatierungscodes */
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
		/* Anpassen der Cursorposition */
		var pos;
		if (insText.length == 0) {
			pos = start + aTag.length;
		} else {
			pos = start + aTag.length + insText.length + eTag.length;
		}
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}
	/* für die übrigen Browser */
	else
	{
		/* Abfrage der Einfügeposition */
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');
		while(!re.test(pos)) {
			pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
		}
		if(pos > input.value.length) {
			pos = input.value.length;
		}
		/* Einfügen des Formatierungscodes */
		var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
		input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
	}
}



// cbselect(cb_name, typ)
// created by Sven Stefani, 11.04.2005
// checks, unchecks, or inverts value of checkboxes
// cb_name is the name of checkbox elements (name-attribute)
// typ is what to do: 0 deselect, 1 select, 2 invert value
function cbselect(cb_name, typ)
{
	// get all elements where name-attribute is same as cb_name
	// a_cb is an array of all elements, even if there is onle one element
	a_cb = document.getElementsByName(cb_name);
	
	if (a_cb.length == 0) alert ( 'Keine Elemente mit Attribut  name="'+cb_name+'"  gefunden');
	
	// loop over all elements
	for (var i = 0; i < a_cb.length; i++)
	{
		switch (typ)
		{
			case false:
			case "0":
				a_cb[i].checked = false;
			break;

			case true:
			case "1":
				a_cb[i].checked = true;
			break;

			case "2":
			default:
				a_cb[i].checked = !a_cb[i].checked;
			break;
		}
	}
}


