function stopPropagation(event) {
	if (typeof event.stopPropagation != 'undefined') event.stopPropagation();
	else if (typeof event.cancelBubble != 'undefined') event.cancelBubble = true;
}

function get_id(id_or_ele) {
	if (is_object(id_or_ele)) return id_or_ele.id;
	else return id_or_ele;
}
function get_ele(id_or_ele) {
	if (is_object(id_or_ele)) return id_or_ele;
	else return id2Element(id_or_ele);
}

function id2Element(idStr) {
//	if (typeof arguments[0] == 'object') return idStr;
	var ele = null;
	if (document.getElementById) {
		ele = document.getElementById(idStr);
	} else if (document.all){
		ele = document.all[idStr];
	} else if (document.layers){
		ele = document.layers[idStr];
	}
	return ele;
}

function get_radio_value(radioN) {
	radiobox_coll = document.getElementsByName(radioN);
	for(i=0;i < radiobox_coll.length;i++) {
		if (radiobox_coll[i].checked == true) return radiobox_coll[i].value;
	}
}

function get_GET_params() {
   var GET = new Array();
   if(location.search.length > 0) {
      var get_param_str = location.search.substring(1, location.search.length);
      var get_params = get_param_str.split("&");
      for(i = 0; i < get_params.length; i++) {
         var key_value = get_params[i].split("=");
         if(key_value.length == 2) {
            var key = key_value[0];
            var value = key_value[1];
            GET[key] = value;
         }
      }
   }
   return(GET);
}
 
function get_GET_param(key) {
   var get_params = get_GET_params();
   if(get_params[key])
      return(get_params[key]);
   else
      return false;
}

function popup_coord(nr) {
	step_cnt = 3; coord = new Object;
	x_base = 10;
	x_step = ( (nr-1) % step_cnt ) * 50
	coord.x = x_base + x_step;
	y_base = Math.floor( (nr-1) / step_cnt ) * 70 + 10;
	y_step = ( (nr-1) % step_cnt ) * 45; 
	coord.y = y_base + y_step;
	return coord;
}


function popup(URL, nr, popup_source_id, ele, width, height) {	
	// alles ausser URL optional
	// nr: Nummer des Popups
	// popup_source_id: ID des Elements (z.B. Input-Feld), das einen Wert des Popups (z.B. Handle aus einer Liste) erhalten soll
	// ele: Element, das angeklickt wurde, um das Popup zu oeffnen (oft ein Icon neben dem Input-Feld)
	if ( ! nr ) nr = 1;
	if ( ! width ) width = 800; if ( ! height ) height = 650;

	if (is_object(ele)) { 
		if ( is_object(window.popup_ele) ) style_restore(window.popup_ele);
		style_backup(ele); style_set(ele, '#eea'); // #ffa
		window.popup_ele = ele; 
	}
	
//	x = (nr-1) * 80 + 10; y = (nr-1) * 80 + 10;
	coord = popup_coord(nr); x = coord.x; y = coord.y;
	popup_window_name = "popup_" + nr;
	win_params = ',menubar=yes,status=yes,toolbar=no,resizable=yes,scrollbars=yes'; // ',location=yes,menubar=yes,status=yes,toolbar=no,resizable=yes,scrollbars=yes';

/*
if ( ! window.popWins ) window.popWins = new Array();
else if ( window.popWins[nr] ) {
	popWin = window.popWins[nr];
//	x=popWin.screenX; y=popWin.screenY; popWin.close();
	popWin.blur();
}
*/
	popupWindow = window.open(URL, popup_window_name, 'width='+width+',height='+height+',left='+x+',top='+y+',screenX='+x+',screenY='+y+win_params);
// window.popWins[nr] = popupWindow;

	window.popup_source_id = popup_source_id;
	if ( navigator.userAgent.indexOf('Chrome/') > 0 ) popupWindow.blur(); 
	popupWindow.focus();
}

function popup_close() { return;	// fkt. beim IE nicht richtig. Nach jeder Aktion geht das Popup in den Hintergrund. 
	if (opener) {
		if (opener.window.popup_ele) style_restore(opener.window.popup_ele);
		opener.window.focus();
	}
}

function set_value(ele, val) {
	ele = get_ele(ele); //if ( ! ele ) return;
	ele.value = val;
	hilite_timeout(ele, 600, "#ccffcc");
}

function passValueToOpener_iframe(new_value, do_submit) {
	popup_source_id = top.window.popup_source_id;
	ele = top.document.getElementById(popup_source_id);
	if (ele) {
		ele.value = new_value;
		top.window.hilite_timeout(ele, 600, "#ccffcc");
		if (do_submit) ele.form.submit();
	}
}

function passValueToOpener(verwenden_ele, popup_source_id, new_value, do_submit) {
	// form_name und popup_source_id nicht mehr notwendig, also reicht: passValueToOpener('', '', new_value)
	ele = null;
	if ( opener ) {	// popup_window ueber overlib
		popup_source_id = opener.window.popup_source_id;
		ele = opener.document.getElementById(popup_source_id);
		if (ele) {
			ele.value = new_value;
			opener.window.hilite_timeout(ele, 600, "#ccffcc");
			if (do_submit) ele.form.submit(new_value, 1);
		}
	} else {		// popup_frame ueber overlib
		passValueToOpener_iframe(new_value, 1);
	}
	if ( ! ele ) { alert('Wert '+new_value+' hat kein Zielelement'); return; }
	self.close();
}


function toggle_class(ids, targetClass1, targetClass2) {
	for (i=0; i < ids.length; i++){ 
		ele = get_ele(ids[i]);
		if (ele.className == targetClass1) ele.className = targetClass2;
		else ele.className = targetClass1;
	}
}


function toggle_style(id, attrib, val1, val2) {
	ele = get_ele(id);
	ele.style[attrib] = (ele.style[attrib] == val1) ? val2 : val1;
}

function toggle_display(id, display_type) {
	if (!display_type) display_type = 'block';
	toggle_style(id, 'display', 'none', display_type);
}

function id2ElementArray(ids) {
	str_arr = ids.split(",");
	ret_arr = new Array();
	for (i=0; i<str_arr.length; i++) { ret_arr[i] = id2Element(str_arr[i]); }
	return ret_arr;
}


var obj_count_div = new Object();
function display_div_init(id_prefix, count) { obj_count_div[id_prefix] = count; }
function display_div(id_prefix, nr_offset, nr_max) {
	if (! obj_count_div[id_prefix]) obj_count_div[id_prefix] = 1;
	nr =  obj_count_div[id_prefix];
	
	if (nr_offset > 0) nr = nr + nr_offset; 
	if ((nr > nr_max) || (nr < 2)) return 0;
	
	id = id_prefix + '_' + nr;
	
	display = (nr_offset > 0) ? 'block' : 'none';
	get_ele(id).style['display'] = display;
	
	sub_nodes = get_sub_nodes(id, "input");
	for (i=0; i<sub_nodes.length; i++) { sub_nodes[i].value = ""; }
	
	obj_count_div[id_prefix] += nr_offset;
}

function subnodes_set_value(parent_id, value) {
	input_nodes = get_sub_nodes(parent_id, 'input'); select_nodes = get_sub_nodes(parent_id, 'select');
	widget_nodes = concat_collections(input_nodes, select_nodes);	
	for (i=0; i<widget_nodes.length; i++) { 
		widget_nodes[i].value = value;
	}
}

function disable_widget(ele, yes_no) {
	ele = get_ele(ele);
	ele.disabled = yes_no;
	ele.readOnly = yes_no;

	if (yes_no) {
		ele.style.backgroundColor = 'rgb(238,238,238)'; // '#eee;'; 
		ele.style.color = 'rgb(160,160,160)';
	} else { 
		ele.style.backgroundColor = 'rgb(255,255,255)'; //'#fff;'; 
		ele.style.color = 'rgb(110,110,110)'; //'#6E6E6E;'; 
	}
}

function disable_widgets(id, yes_no) {
	input_nodes = get_sub_nodes(id, 'input');
	select_nodes = get_sub_nodes(id, 'select');
	widget_nodes = concat_collections(input_nodes, select_nodes);	
	for (i=0; i<widget_nodes.length; i++) { 
		disable_widget(widget_nodes[i], yes_no);
	}
}

function box_disabled(box_id, yes_no) {
	input_box_handle = get_ele(box_id);
	
	box_id = box_id + '_parent';
	box_div_nodes = get_sub_nodes(box_id, 'div');
	for (i=0; i<box_div_nodes.length; i++) { 
		div_node = box_div_nodes[i];
		if (yes_no && div_node.className == "enabled") {
			div_node.className = "disabled";
		} else if (! yes_no && div_node.className == "disabled") {
			div_node.className = "enabled";
		}
	}
	disable_widgets(box_id, yes_no);
}

function box_form_fill(from_id, to_id) {
	from_parent_id = from_id + '_parent'; to_parent_id = to_id + '_parent'; 
	
	source_input_nodes = get_sub_nodes(from_parent_id, 'input');
	source_select_nodes = get_sub_nodes(from_parent_id, 'select');
	source_nodes = concat_collections(source_input_nodes, source_select_nodes);

	target_input_nodes = get_sub_nodes(to_parent_id, 'input');
	target_select_nodes = get_sub_nodes(to_parent_id, 'select');
	target_nodes = concat_collections(target_input_nodes, target_select_nodes);

	for (i=0; i<source_nodes.length; i++) { 
		target_nodes[i].value = source_nodes[i].value;
		target_nodes[i].checked = source_nodes[i].checked;
		window.hilite_timeout(target_nodes[i], 500, "#ffffc5", "#000");
	}
}

function collection_to_arr(collection) {
	a = new Array();
	for (i = 0; i < collection.length; i++) a[a.length] = collection[i];
	return a;
}
function concat_collections(c_1, c_2) {
	c_all = collection_to_arr(c_1).concat(collection_to_arr(c_2));
	return c_all;
}


function set_dependent_style(id, postfix, style) {
	dependent_ele = get_ele(id + postfix);
	if (dependent_ele) {
		dependent_ele.style['fontWeight'] = style;
	}
}

function set_checked_regexp(id_regexp, on_off) { 
	ele_arr = get_elements_by_regexp(id_regexp, 'input');
	if (on_off == 'toggle') {
		on_off = 0; for (i=0; i<ele_arr.length; i++) { if (!ele_arr[i].checked) on_off = 1; }
	} 		
	for (i=0; i<ele_arr.length; i++) { set_checked(ele_arr[i], on_off); }
}
function set_checked_prefix(id_prefix, on_off) { 
	ele_arr = getElementsByIdPrefix(id_prefix, 'input');
	if (on_off == 'toggle') {
		on_off = 0; for (i=0; i<ele_arr.length; i++) { if (!ele_arr[i].checked) on_off = 1; }
	} 		
	for (i=0; i<ele_arr.length; i++) { set_checked(ele_arr[i], on_off); }
}

function set_checked(id_or_ele, on_off) { 
	get_ele(id_or_ele).checked = on_off; 
}
function toggle_value(id_or_ele) { 
	ele = get_ele(id_or_ele);
	val = parseInt(ele.value);
	if (val == 1) val = 0; else val = 1;
	return val;
}
function toggle_checkbox_js(id_or_ele, src_0, src_1, label_0, label_1) {
	ele = get_ele(id_or_ele);
	img_ele = get_sub_ele(ele, 'toggle_img', 'img'); 		// alert(img_ele);
	label_ele = get_sub_ele(ele, 'toggle_label', 'span'); 		// alert(img_ele);
	input_ele = get_sub_ele(ele, 'toggle_input', 'input');	// alert(input_ele);
//	parent_ele = ele.parentNode;
	
	new_val = toggle_value(input_ele);	// VORSICHT! Das lokale ele ist nach diesem Aufruf (toggle_value()) nicht mehr das selbe ?!?
	input_ele.value = new_val;
	
	if (new_val) { img_ele.src = src_1; if (label_1) label_ele.innerHTML = label_1; }
	else { img_ele.src = src_0; if (label_0) label_ele.innerHTML = label_0; }
	get_ele(id_or_ele).val = new_val;
}

function set_enabled_prefix(id_prefix, on_off) { 
	ele_arr = getElementsByIdPrefix(id_prefix, 'input'); 
	for (i=0; i<ele_arr.length; i++) { set_enabled(ele_arr[i], on_off); }
	ele_arr = getElementsByIdPrefix(id_prefix, 'select'); 
	for (i=0; i<ele_arr.length; i++) { set_enabled(ele_arr[i], on_off); }
}
function set_enabled(id_or_ele, on_off) { 
	id = get_id(id_or_ele); ele = get_ele(id_or_ele);
	label_ele = get_ele(id + '_label'); 
	if (label_ele) {
		if (!on_off) label_ele.style['fontWeight'] = 'normal';
		label_ele.disabled = !on_off;
	}
	ele.disabled = !on_off; 
}




function get_sub_nodes(node, filter_tag_name) {
	node = get_ele(node);
	if (!filter_tag_name) filter_tag_name = "*";
	child_arr = node.getElementsByTagName(filter_tag_name);
	return child_arr;
}

function get_elements_by_regexp(id_regexp, filter_tag_name) {
	if (!filter_tag_name) filter_tag_name = "*"; ele_arr = document.getElementsByTagName(filter_tag_name);
	ret_arr = new Array(); inc = 0;
	for (i=0; i<ele_arr.length; i++) {
		ele = ele_arr[i]; ele_id = ele.id;
		if (ele_id.search(id_regexp) != -1) { ret_arr[inc++] = ele; }
	}
	return ret_arr;
}
function getElementsByIdPrefix(id_prefix, filter_tag_name) {
	if (!filter_tag_name) filter_tag_name = "*";
	ele_arr = document.getElementsByTagName(filter_tag_name);
	ret_arr = new Array(); inc = 0;
	for (i=0; i<ele_arr.length; i++) {
		ele = ele_arr[i];
		if (ele.id.indexOf(id_prefix) == 0) { ret_arr[inc++] = ele; }
	}
	return ret_arr;
}
function toggle_checkboxes_by_id(id_prefix) {
	partial_unchecked = activate_checkboxes_by_id(id_prefix, 0);
	if (partial_unchecked) activate_checkboxes_by_id(id_prefix, 1);
}

function activate_checkboxes_by_id(id_prefix, do_check) {
	// ele_arr = getElementsByIdPrefix('tr_'+id_prefix, 'tr');
	ele_arr = getElementsByIdPrefix(id_prefix, 'input');
	partial_unchecked = 0;
	for (i=0; i<ele_arr.length; i++) {
		ele = ele_arr[i];
//		alert(ele.id);
		if (! ele.checked) partial_unchecked = 1;
		ele.checked = do_check;
//		checkbox_changed(ele_arr[i]);
	}
	return partial_unchecked;
}


var reset_colors;
function reset_style(ids) {
	for (i=0; i < reset_colors.length; i++){ 
		ele = id2Element(ids[i]);
		ele.style['backgroundColor'] = reset_colors[i];
	}
}
function set_style(ids, attrib, value) {
	reset_colors = new Array();
	for (i=0; i < ids.length; i++){ 
		ele = id2Element(ids[i]);
		reset_colors[i] = ele.style[attrib];
		ele.style[attrib] = value;
	}
}

function set_val( toID, val ) {
	to_ele = id2Element(toID);
	to_ele.value = val;
}
function get_val( fromID ) {
	from_ele = id2Element(fromID);
	return from_ele.value;
}

function copy_val( fromID, toID ) {
	set_val ( toID, get_val(fromID) );
	// to_ele = id2Element(toID); 
	// to_ele.value = get_val(fromID);
}

/****************************************************************************************************************************/
function remove_element(id){
  var element = document.getElementById('id');
  // if (element) element.removeChild(scriptTag);
}
function create_element(parent_id, new_tag){
	var parent = document.getElementById(parent_id);
	if (parent) {
		new_element = document.createElement(new_tag);
		parent.appendChild(new_element);
		return new_element;
	}
}
function create_element_by_tag(parent_tag, nr, new_tag){
	var parent = document.getElementsByTagName(parent_tag).item(nr);
	if (parent) {
		new_element = document.createElement(new_tag);
		parent.appendChild(new_element);
		return new_element;
	}
}

var included_cnt = 0;
function include_dom(script_filename) {
    var head = document.getElementsByTagName('head').item(0);
    var js = document.createElement('script');
    js.setAttribute('language', 'javascript');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('src', script_filename);
	included_cnt++; js.setAttribute('id', 'script_' + included_cnt);
    head.appendChild(js);
    return false;
}

var included_files = new Array();
function include_once(script_filename) {
    if (!in_array(script_filename, included_files)) {
        included_files[included_files.length] = script_filename;
        include_dom(script_filename);
    }
}

function in_array(needle, haystack) {
    for (var i = 0; i < haystack.length; i++) {
        if (haystack[i] == needle) { return true; }
    }
    return false;
}

onload_code = new Array();
function on_load_eval(code){ onload_code[onload_code.length] = code; }
function on_load(){ 
    for (var i = 0; i < onload_code.length; i++) { 
		eval(onload_code[i]);
	}
	// ele = create_element('id_js', 'p');
}

// window.onload = on_load;









var timer_end, timer_cnt, timer_fkt;
function update_timer () {
	timer_cnt += 10;
	if (timer_cnt >= timer_end) clearInterval(timer_fkt);
	ele = get_ele('aktion_img_id');
	if (ele && (timer_cnt > 0)) {
		ele.style["opacity"] = (timer_cnt / timer_end) * 100 + '%';
	}

}

function timer (h_sec) {
	timer_end = h_sec;
//	countdown_start_sec = 30;
	timer_cnt = 0;
//	countdown_rest_sec = 125;
    update_timer ();
    timer_fkt = window.setInterval ('update_timer ()', 10);
}

function debug_alert(arg) {
	alert_out = get_ele('debug_alert_js');
	if ( ! alert_out ) { return; }
	alert_out.style["display"] = "block";
	slide_toggle('debug_error_show', 1);
	alert_out.innerHTML = '<div style="display: pre; background-color: #ccc; margin: 2px; padding: 2px; border: 1px solid #aaa;">' + arg + '</div>' + alert_out.innerHTML;
}

function val(v1, v2, v3) { if (isset(v1)) return v1; if (isset(v2)) return v2; return v3; }


function key_options_filter(ele, e) {
	ele = get_ele(ele); // label_id = ele.id + "_label"; label_ele = ele(label_id);
	if ( ! e ) { 
		ele.options_filter = ""; 
		ele.options_filter_timeout = 0; 
		return; 
	}
	
	ord = key_num(e); // debug_alert(ord);
	is_char_key = (ord >= 65 & ord <= 90 /*A-Z*/);
	is_num_key = (ord >= 48 & ord <= 57 /*0-9*/);
	is_back_key = (ord == 8 /*backspace*/);
	is_other_key = (ord == 109 /*-*/);
	if ( ! ( is_char_key | is_num_key | is_back_key | is_other_key ) ) return;
	
	search_str = val(ele.options_filter, "");
	
	ch = String.fromCharCode(ord);
	if (is_char_key) { ch = ch.toLowerCase(); }
	else if (is_back_key) { ch = ""; search_str = search_str.substr(0, search_str.length-1);}
	else if (ord == 8) ch = "-";
	
	search_str = search_str + ch;


//	debug_alert(ele.options_filter);
	found = 0;
	for (i=0; i<ele.options.length; i++) {
		o = ele.options[i]; v = o.value;
		if (v.search('^'+search_str+'.*') != -1) { 
			found = 1; ele.value = v; break; 
		} 
	}
	if (found) {
/*		for (i=0; i<ele.options.length; i++) {		// wegblenden der nicht gematchten options fkt. NUR im Firefox
			o = ele.options[i]; v = o.value;
			if (v.search('^'+search_str+'.*') != -1) { 
				o.style["display"] = "block";
			} else {
				o.style["display"] = "none";
			}
		}
*/		ele.options_filter = search_str;
	}
//	overlib('<div class=\"contentBox\" style=\"margin: 0px;\">'+ele.options_filter+'<\/div>', WRAP, 0, STICKY, CLOSECLICK, LEFT, DELAY, 50, TIMEOUT, 2000, ABOVE);
//	debug_alert(ele.options_filter);
	
//	hilite_timeout(ele, 1000, "#aaa", "#000"); 
	if (ele.options_filter_timeout) clearTimeout(ele.options_filter_timeout);
	ele.options_filter_timeout = setTimeout('key_options_filter("'+ele.id+'")', 1000);
}

function char_filter_check_13(e, element) {
	if (char_filter(e, 13)) return true;	// return wurde NICHT gedrueckt
	button_list = buttons_in_form(element);
	
	for (var j = 0; j < button_list.length; j++) {
		button = button_list[j];
		button.style["color"] = "#333";
	}
	
	if (button_list.length > 1) {
//		element.innerHTML = element.innerHTML + 'skdfgs sjkfhsjkfh hjsdhfjshf';
//		element.style["backgroundColor"] = "#f00";
		return false;
	}
	return true;
}

function key_num(e) {
	if (window.event) { keynum = e.keyCode; } 	// IE
	else if (e.which) { keynum = e.which; } 	// Netscape/Firefox/Opera
	return (keynum);
}

function char_filter(e, ord) { var checked = (key_num(e) != ord); return checked; }


function button_count(element) {	// Buttons innerhalb eines Forms zaehlen. (z.B. dafuer, dass bei mehreren Buttons innerhalb eines Forms die Direkteingabe mittels Enter in Textfeldern abgeschaltet wird)
	buttons = buttons_in_form(element);
	return buttons.length;
}


function buttons_in_form(element) {
	input_list = element.form.getElementsByTagName('input');
	button_list = Array();
	var cnt = 0;
	for (var j = 0; j < input_list.length; j++) { 
		if (input_list[j].type.toLowerCase() == 'submit') {
			button_list[cnt] = input_list[j];
			cnt++;
		}
	}
	return button_list;
}




/************************************************************************************************************/		
/******************************************                   SLIDE                 ******************************************/		
/************************************************************************************************************/		

function isIE() { return (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; }
function isset(v) { return ( (v !== null) && (typeof(v) != 'undefined') ); }
function is_object(v) {     
	if(v instanceof Array) { return false; } 
	else { return (v !== null) && (typeof( v ) == 'object'); }
 }

function getStyle(oElm, strCssRule){
	var strValue = "";
	if(document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
	}
	else if(oElm.currentStyle){
		strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
			return p1.toUpperCase();
		});
		strValue = oElm.currentStyle[strCssRule];
	}
	return strValue;
}

function get_sub_ele(ele_id, className, tagName) {
	ele = get_ele(ele_id);
	var subDivs = ele.getElementsByTagName(tagName); // per class="slide_content" ausgezeichnetes Sub-Element suchen. Dies gibt die Zielhoehe vor
	if ( ! className ) { return subDivs[0]; }
	for(var i=0; i < subDivs.length; i++){
		act_div = subDivs[i];
		if (act_div.className == className) return act_div;
	}
	return null;
}
function get_parent_ele(ele_id, tagName) {
	ele = get_ele(ele_id);
	do {
		if ( ele.tagName == tagName ) return ele;
		if ( ! ele.parentNode ) return null;
		ele = ele.parentNode;
	} while (1);
}

/************************************************************************************************************/		
var slide_toggle_queue = new Array();
// var slide_toggle_running = new Array();
var slide_toggle_busy = 0;
var slide_toggle_run_max = 10;

function slide_toggle_alloc(boxId, do_open, steps) {
	if ( slide_toggle_busy >= slide_toggle_run_max ) { 
		o = null;
		for ( key in slide_toggle_queue ) {
			o = slide_toggle_queue[key];
			if ( o.boxId === boxId ) { break; }
			else { o = null; }
		}
		if (o) ;
		else { o = new Object; o.boxId = boxId; key = slide_toggle_queue.length; }
		o.do_open = do_open; o.steps = steps;
		slide_toggle_queue[key] = o;
		return 0;
	}
	slide_toggle_busy++;
	return 1;
}
function slide_toggle_free(boxId) { 
	slide_toggle_busy = Math.max(slide_toggle_busy-1, 0);
//	slide_toggle_running[boxId] = 0;
	o = slide_toggle_queue.shift();		// FIFO
	if (o) {
		slide_toggle(o.boxId, o.do_open, o.steps);
	} else {
		slide_toggle_busy = 0;
	}
}

function slide_toggle(boxId, do_open, steps) {
//	id = "#"+boxId; $(id).slideToggle(500); return;
	if ( (do_open === 0) && (steps === 0) ) { slide_hide(boxId); return; } // explizit mit 0 -Parametern aufgerufen => sofort verstecken, ohne gross rumzurechnen
	
	if ( ! slide_toggle_alloc(boxId, do_open, steps) ) { return; }

	slidedownContentBox = get_ele(boxId);
	if ( ! slidedownContentBox ) { 
//		alert(boxId); 
		return; 
	}
	
	if ( ! isset(do_open) ) do_open = ( slidedownContentBox.offsetHeight <= 0 ); // ist do_open undefiniert, wird hier entschieden, ob auf- oder zugefaltet wird

	if ( ! isset(slidedownContentBox.slide_options) ) slide_set_options(slidedownContentBox, steps, steps, 1, 1);
	if ( isset(steps) ) {
		if ( do_open ) slidedownContentBox.slide_options['steps_open'] = steps;
		else slidedownContentBox.slide_options['steps_close'] = steps;
	}
	else if ( ! isset(steps) ) {
		if ( do_open ) steps = slidedownContentBox.slide_options['steps_open']; // steps = 10;
		else steps = slidedownContentBox.slide_options['steps_close'];
	}
	
	slidedownContent = get_sub_ele(slidedownContentBox, 'slide_content', 'DIV');
	if (slidedownContent == null) slidedownContent = get_sub_ele(slidedownContentBox, 'slide_content', 'TABLE');

	slidedownContentBox.style.visibility = 'visible';
	slidedownContentBox.style.overflow = 'hidden';
	slidedownContentBox.style.display = 'block'; 

	slidedownContent.style.overflow = 'hidden';		// wg. IE

	slidedownContent.style.visibility = slidedownContentBox.slide_options['visibility'];
	slidedownContentBox.max_height = slidedownContent.offsetHeight;
	
	if ( steps == 0 ) steps = 1;
	slidedownSpeed = parseInt(slidedownContentBox.max_height / steps);
	if ( slidedownSpeed == 0 ) slidedownSpeed = 1;

	if ( do_open == true ) { 
		if ( slidedownContentBox.status == 'open' ) { slide_toggle_free(boxId); return; }
		slidedownContentBox.speed = slidedownSpeed;
		slidedownContentBox.height = slidedownContentBox.slide_options['start_height']; // 0;
		slidedownContentBox.slide_delay = slidedownContentBox.slide_options['delay_open'];
	} else { 
		if ( slidedownContentBox.status == 'closed' ) { slide_toggle_free(boxId); return; }
		slidedownContentBox.speed = slidedownSpeed*-1; 
		slidedownContentBox.height = slidedownContentBox.max_height;
		slidedownContentBox.slide_delay = slidedownContentBox.slide_options['delay_close'];
	}

	slidedownContentBox.slide_active = true;
	slidedown_toggle_run(boxId);
}

/************************************************************************************************************/		
var slide_toggle_run_cache = Array();

function slidedown_toggle_run(boxId) {

	slidedownContentBox = slide_toggle_run_cache[boxId];
	if ( ! slidedownContentBox ) {
		slidedownContentBox = get_ele(boxId);
		slide_toggle_run_cache[boxId] = slidedownContentBox;
	}
	
	if ( ! slidedownContentBox.slide_active ) {
		if (slidedownContentBox.speed > 0) slidedownContentBox.style.height = 'auto';
		slide_toggle_free(boxId);
		return;
	}
	
	if ( slidedownContentBox.slide_delay > 0 ) { slidedownContentBox.slide_delay = slidedownContentBox.slide_delay-1;}
	else {
		slidedownContentBox.height = slidedownContentBox.height + slidedownContentBox.speed;
		opacity = slidedownContentBox.height / slidedownContentBox.max_height;
		
		if ( slidedownContentBox.height <= 0 ) {
			slidedownContentBox.slide_active = false;	
			opacity = 0;
			slide_hide(slidedownContentBox);
		}
		if ( slidedownContentBox.height > slidedownContentBox.max_height ) {
			slidedownContentBox.slide_active = false;
			slidedownContentBox.height = slidedownContentBox.max_height;
			opacity = 1;
			slide_show(slidedownContentBox);	// wg. IE, der sonst bei mehreren Boxen gleichzeitig zwar auffaltet, aber den Inhalt dann nicht anzeigt
		}

		slidedownContentBox.style.height = slidedownContentBox.height + 'px';
		if (slidedownContentBox.slide_options['do_blend']) slidedownContentBox.style.opacity = opacity;
	}
	setTimeout('slidedown_toggle_run("'+boxId+'")', 20);
}

/************************************************************************************************************/		

function slide_hide(boxId) { 
	slidedownContentBox = get_ele(boxId);
//	if (!slidedownContentBox) alert(boxId);
	slidedownContentBox.style.overflow = 'hidden';
	slidedownContentBox.style.visibility = 'hidden';
	slidedownContentBox.style.height = '0px';
	slidedownContentBox.height = 0;
	slidedownContentBox.style.display = 'none';
	slidedownContentBox.status = 'closed';
}

function slide_show(boxId, slidedownContent) { 
	slidedownContentBox = get_ele(boxId);
	slidedownContentBox.style.visibility = 'visible';
	slidedownContentBox.style.display = 'block';
	slidedownContentBox.style.overflow = 'visible';
	if (slidedownContent == null) slidedownContent = get_sub_ele(slidedownContentBox, 'slide_content', 'DIV');
	if (slidedownContent == null) slidedownContent = get_sub_ele(slidedownContentBox, 'slide_content', 'TABLE');
	slidedownContent.style.visibility = 'visible';
	slidedownContentBox.style.height = slidedownContent.offsetHeight;
	slidedownContentBox.status = 'open';
	
	slidedownContent.style.overflow = 'visible';	// wichtig, da sonst z.B. in Chrome Tabellenlinien verschwinden
}

/************************************************************************************************************/		

function slide_init(boxId, is_open) { 
	is_open = parseInt(is_open);
	if ( ! is_open ) { slide_toggle(boxId, 0, 1); }
}

/************************************************************************************************************/		

function slide_toggle_2(box_id_0, box_id_1, header_str_0, header_str_1, header_id) { 
	header_ele = get_ele(header_id);
	
	if (header_str_0) {
		if (header_ele) header_ele.innerHTML = header_str_0;
		slide_toggle_multi(box_id_0, box_id_1, 0);
	} else {
		if (header_ele) header_ele.innerHTML = header_str_1;
		slide_toggle_multi(box_id_0, box_id_1, 1);
	}
}

function slide_set_options(box_id, steps_open, steps_close, do_blend, visibility, start_height, delay_open, delay_close) {
	ele = get_ele(box_id);
	ele.slide_options = new Array();
	
	ele.slide_options['steps_open'] = isset(steps_open) ? steps_open : 5;
	ele.slide_options['steps_close'] = isset(steps_close) ? steps_close : 5;
	ele.slide_options['do_blend'] = isset(do_blend) ? do_blend : 1;
	
	if ( ! isset(visibility) ) visibility = 1; 
//	if ( isIE() ) visibility = 0;
	ele.slide_options['visibility'] = visibility ? "visible" : "hidden";
	
	ele.slide_options['start_height'] = isset(start_height) ? start_height : 0;
	
	ele.slide_options['delay_open'] = isset(delay_open) ? delay_open : 0;
	ele.slide_options['delay_close'] = isset(delay_close) ? delay_close : 0;
}

function slide_toggle_multi(box_id_0, box_id_1, do_open_index, steps_0, steps_1) { 
	do_open_index = parseInt(do_open_index);
	ele_0 = get_ele(box_id_0); ele_1 = get_ele(box_id_1);
	
	if (ele_0.slide_options == null) slide_set_options(ele_0, steps_0, steps_0);
	if (ele_1.slide_options == null) slide_set_options(ele_1, steps_1, steps_1);

	if (do_open_index == 0) {
//		slide_hide(box_id_2);
		slide_toggle(box_id_1, 0, ele_1.slide_options['steps_close']);
		slide_toggle(box_id_0, 1, ele_0.slide_options['steps_open']);
	} else {
//		slide_hide(box_id_1);
		slide_toggle(box_id_0, 0, ele_0.slide_options['steps_close']);
		slide_toggle(box_id_1, 1, ele_1.slide_options['steps_open']);
	}
}


/************************************************************************************************************/	

function slide_open_ol(sub_boxId) { 
	sub_box = document.getElementById(sub_boxId);	
	if (sub_box == null) {
		setTimeout('slide_open_ol("'+sub_boxId+'")', 10);
		return;
	}
	slidedownContentBox = document.getElementById('overDiv');	
	slidedownContentBox.style.visibility = "hidden";
	slidedownContentBox.style.height = "0px";

	slide_toggle('overDiv', 1);
}

/************************************************************************************************************/	

function js_hilite_tag(ele, tag, on_off) { 
	ele = get_ele(ele);
	p = get_parent_ele(ele, tag); 
	if (on_off) {
		if (ele.style['cursor'] != 'pointer') ele.style['cursor'] = 'pointer';
		p.old_bg = p.style['backgroundColor'];
		p.style['backgroundColor'] = '#ffd';
	} else {
		p.style['backgroundColor'] = p.old_bg;
	}
}

function hilite_timeout(ele, timeout, backgroundColor, color) { 
	ele = get_ele(ele); if ( ! ele ) return;
	if (timeout == -1) { // hilite fuer ele wird beendet
		ele.hilite_timeout = 0;
		style_restore(ele);
		return; 
	}
	if (ele.hilite_timeout) return;	// hilite fuer ele laeuft gerade => raus
	style_backup(ele);
	if ( !(timeout) ) timeout = 200;
	if ( !(backgroundColor) ) backgroundColor = "#faa";
	if ( !(color) ) color = "#000";
	style_set(ele, backgroundColor, color);
	id = get_id(ele);
	ele.hilite_timeout = setTimeout('hilite_timeout("'+id+'", -1)', timeout);
}

function style_backup(ele) {
	ele.style_bak = new Array();
	ele.style_bak['background'] = ele.style['background']; // ele.style_bak['border'] = ele.style['border']; 
}
function style_set(ele, backgroundColor) { 
	ele.style['background'] = backgroundColor; // ele.style['border'] = '1px solid #555'; 
}
function style_restore(ele) {
	if ( ! ele.style_bak ) return;
	ele.style['background'] = ele.style_bak['background']; // ele.style['border'] = ele.style_bak['border'];
//	attribs = Array('backgroundColor', 'color');
//	for (i=0; i<attribs.length; i++) { a = attribs[i]; ele.style[a] = ele.style_bak[a]; }
}


