function veranstaltungsFilter() {
	// sendet das Formular im Veranstaltungskalender ab
	document.veranstaltungsfilter.submit();
}

function zeige(id, typ) {
	if (document.getElementById(typ+'_'+id+'_langtext') && document.getElementById(typ+'_'+id+'_langtext').className == "unsichtbar") {
		// den Kurztext verbergen
		if (document.getElementById(typ+'_'+id+'_kurztext')) {
			document.getElementById(typ+'_'+id+'_kurztext').className = "unsichtbar";
		}
		// den Langtext anzeigen
		if (document.getElementById(typ+'_'+id+'_langtext')) {
			document.getElementById(typ+'_'+id+'_langtext').className = "sichtbar";
		}
		// die Schaltfläche umschalten
		if (document.getElementById(typ+'_'+id+'_mehr')) {
			document.getElementById(typ+'_'+id+'_mehr').innerHTML = "weniger";
		}
	} else {
		// den Kurztext anzeigen
		if (document.getElementById(typ+'_'+id+'_kurztext')) {
			document.getElementById(typ+'_'+id+'_kurztext').className = "sichtbar";
		}
		// den Langtext verbergen
		if (document.getElementById(typ+'_'+id+'_langtext')) {
			document.getElementById(typ+'_'+id+'_langtext').className = "unsichtbar";
		}
		// die Schaltfläche umschalten
		if (document.getElementById(typ+'_'+id+'_mehr')) {
			document.getElementById(typ+'_'+id+'_mehr').innerHTML = "mehr";
		}
	}
}

function zeigeVieltext(id) {
	if (document.getElementById('vt_kopf_'+id) && document.getElementById('vt_kopf_'+id).className == "kopf") {
		document.getElementById('vt_kopf_'+id).className = "kopf aktiv";
		document.getElementById('vt_koerper_'+id).style.display = "block";
	} else if (document.getElementById('vt_kopf_'+id) && document.getElementById('vt_kopf_'+id).className == "kopf aktiv") {
		document.getElementById('vt_kopf_'+id).className = "kopf";
		document.getElementById('vt_koerper_'+id).style.display = "none";
	}
}

function validate_required(feld,alarmtext) {
	with (field) {
		if (value == null || value == "") {
			alert(alerttxt);
			return false;
		} else {
			return true;
		}
	}
}

function zeigeFotoslot(id) {
	if (document.getElementById('fotoslot_'+id)) {
		document.getElementById('fotoslot_'+id).style.display = '';
	}
}

function zeigeSelbstaendigerSlot(id) {
	if (document.getElementById('selbstaendiger_'+id)) {
		document.getElementById('selbstaendiger_'+id).style.display = '';
	}
}

function addRow(r){
	//var root      = r.parentNode; // the root
	var root      = document.getElementById('selbstaendige');
	var allRows   = root.getElementsByTagName('tr'); // the rows' collection
	var cRow      = allRows[(allRows.length)-1].cloneNode(true) // the clone of the last row
	var cInp      = cRow.getElementsByTagName('input'); // the inputs' collection of the last row
	var cSel      = cRow.getElementsByTagName('select')[0];
	var cA        = cRow.getElementsByTagName('a'); // the a collection of the last row
	
	if (cInp) {
		for (var i = 0; i < cInp.length; i++){ //changes the inputs' ids
			if (cInp[i].id) {
				var zaehler     = cInp[i].id.match(/\d+$/);
				var bezeichner  = cInp[i].id.match(/^\D+/);
				cInp[i].id      = bezeichner+(parseInt(zaehler)+1);
				
			}
			if (cInp[i].type == 'radio') {
				var ergebnis = cInp[i].value.match(/^\d+$/);
				if (ergebnis) {
					cInp[i].value = parseInt(cInp[i].value)+1;
				}
			}
		}
	}

	for (var i = 0; i < cA.length; i++){ //changes the a's links
		var get_alt = cA[i].href.match(/&ff_id=.+?\d+/);
		if (get_alt) {
			var zaehler = get_alt[0].match(/\d+$/);
			var bezeichner = get_alt[0].match(/^\D+/);
			var get_neu = bezeichner+(parseInt(zaehler)+1);
			var url = cA[i].href.replace(get_alt, get_neu);
			cA[i].href = url;
		}
	}

	root.appendChild(cRow); //appends the cloned row as a new row
}

function fixOnMouseOut(element, event, JavaScript_code) {
	var current_mouse_target = null;
	if( event.toElement ) {				
		current_mouse_target 			 = event.toElement;
	} else if( event.relatedTarget ) {				
		current_mouse_target 			 = event.relatedTarget;
	}
	if( !is_child_of(element, current_mouse_target) && element != current_mouse_target ) {
		eval(JavaScript_code);
	}
}

function is_child_of(parent, child) {
	if( child != null ) {			
		while( child.parentNode ) {
			if( (child = child.parentNode) == parent ) {
				return true;
			}
		}
	}
	return false;
}


function toggleFauxSelect(id) {
	// die Liste der Optionen finden
	var option = getElementsByClassName("options", "div", document.getElementById(id)); 
	if (isVisible(option[0])) {
		option[0].style.display = "none";
	} else {
		option[0].style.display = "block";
	}
	if (klasseIst(option[0], 'over')) {
		option[0].style.top = '-'+(option[0].offsetHeight+21)+'px';
	}
}

/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

function klasseIst(obj, cssklasse) {
	rueckgabe = false;
	if (obj) {
		var klassenstring = obj.className;
		var klassen = klassenstring.split(" ");
		if (in_array(cssklasse, klassen)) {
			rueckgabe = true;
		}
	}
	return rueckgabe;
}


function klasseEntfernen(id, cssklasse) {
	if (document.getElementById(id)) {
		var klassenstring = document.getElementById(id).className;
		var klassen = klassenstring.split(" ");
		if (in_array(cssklasse, klassen)) {
			var stelle = array_keys(klassen, cssklasse);
			delete klassen[stelle[0]];  
		}
		// Klasse zuweisen
		document.getElementById(id).className = implode(' ', klassen);
	} else if (id){
		var klassenstring = id.className;
		var klassen = klassenstring.split(" ");
		if (in_array(cssklasse, klassen)) {
			var stelle = array_keys(klassen, cssklasse);
			delete klassen[stelle[0]];  
		}
		// Klasse zuweisen
		id.className = implode(' ', klassen);
	}
	// sonst nichts tun
}

function klasseHinzu(id, cssklasse) {
	if (document.getElementById(id)) {
		var klassenstring = document.getElementById(id).className;
		var klassen = klassenstring.split(" ");
		if (!in_array(cssklasse, klassen)) {
			klassen[klassen.length+1] = cssklasse;
		}
		// Klasse zuweisen
		document.getElementById(id).className = implode(' ', klassen);
	} else if (id) {
		var klassenstring = id.className;
		var klassen = klassenstring.split(" ");
		if (!in_array(cssklasse, klassen)) {
			klassen[klassen.length+1] = cssklasse;
		}
		// Klasse zuweisen
		id.className = implode(' ', klassen);
	}
}

function in_array(needle, haystack, argStrict) {
    // Checks if the given value exists in the array  
    // 
    // version: 903.1614
    // discuss at: http://phpjs.org/functions/in_array
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
    var found = false, key, strict = !!argStrict;

    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }

    return found;
}

function isVisible(obj)
{
    if (obj == document) return true
    
    if (!obj) return false
    if (!obj.parentNode) return false
    if (obj.style) {
        if (obj.style.display == 'none') return false
        if (obj.style.visibility == 'hidden') return false
    }
    
    //Try the computed style in a standard way
    if (window.getComputedStyle) {
        var style = window.getComputedStyle(obj, "")
        if (style.display == 'none') return false
        if (style.visibility == 'hidden') return false
    }
    
    //Or get the computed style using IE's silly proprietary way
    var style = obj.currentStyle
    if (style) {
        if (style['display'] == 'none') return false
        if (style['visibility'] == 'hidden') return false
    }
    
    return isVisible(obj.parentNode)
}

