///////////////////////////////////////
//
//
//
//
///////////////////////////////////////


// funktion 'roll': Rolloverbilder ersetzt blid druch bild_o; 
// p1 obl: objekt 
// --> bsp: onmouseover="roll(this)" 
function roll(o) {
	
	var src = o.getAttribute('src');
	var ftype = src.substring(src.lastIndexOf('.'), src.length);
	var overSrc = src.replace(ftype, '_o'+ftype);
	var isOv = src.search(/.+_o.+/);
	if(isOv != -1) {
		src = src.replace(/_o/,"");
		o.setAttribute('src', src);
		return;
	}
	o.setAttribute('src', overSrc);
	o.onmouseout = function(){
		o.setAttribute('src', src);
	}
}

// funktion 'blend': setzt opazitaet;
// p1 obl: objekt
// p1 opt: zielopazität (default=65), zahl zwischen 0 und 100, 0=unsichtbar
// p2 opt: ursprungsopazität (default=100), zahl zwischen 0 und 100, 0=unsichtbar
// --> bsp: onmouseover="blend(this, 20, 90)" od. onmouseover="blend(this)" od.onmouseover="blend(this, 20)"
function blend(o, opOutParam, opInParam) {
	
	if (opInParam != null) {
		opIn = opInParam;
	}
	else {
		opIn = 100;
	}
	
	if (opOutParam != null) {
		opOut = opOutParam;
	}
	else {
		opOut = 65;
	}
	
	o.style.Opacity = (opOut / 100);
	o.style.MozOpacity = (opOut / 100);
	o.style.KhtmlOpacity = (opOut / 100);
	o.style.filter = "alpha(opacity=" + opOut + ")";
	
	o.onmouseout = function() {
		o.style.Opacity = (opIn / 100);
		o.style.MozOpacity = (opIn / 100);
		o.style.KhtmlOpacity = (opIn / 100);
		o.style.filter = "alpha(opacity=" + opIn + ")";
	}
}

// funktion 'fischerYates': durchmischt ein array zufällig
// p1 obl: zumischendes array
function fisherYates(array) {
	var i = array.length;
	if ( i == 0 ) return false;
	while ( --i ) {
		var j = Math.floor( Math.random() * ( i + 1 ) );
		var tempi = array[i];
		var tempj = array[j];
		array[i] = tempj;
		array[j] = tempi;
	}
}

// funktion '$': mighty dollar function! gibt objekt zurück, kurzform fuer document.getElementById()
// rueckgabe: objekt, bei mehreren ids array mit objekten
// p1 obl: id
// p2 opt: id
// ... beliebig viele parameter möglich
// --> bsp: $('navdiv') bzw. objdiv = $('someDiv');
function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

// funktion 'getElementsByClass': sucht objekte anhand ihres classNames
// rueckgabe: array mit objekten
// p1 obl: name der gesuchten klasse
// p2 opt: element von dem aus die suche starten soll (default=document)
// p3 opt: tagname, suche auf bestimmte tags einschränken (default=*)
// --> bsp: elements = getElementsByClass('subnav',null,'div'); od. elements = getElementsByClass('subnav');
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++)
	{
		if ( pattern.test(els[i].className) )
		{
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

// funktion 'toggle': blendet objekt ein oder aus; falls ein, dann aus und umgekehrt; (css -> display: none; display: inline;)
// p1 obl: objekt
// --> bsp: toggle(this);
function toggle()
{
	for (var i = 0; i < arguments.length; i++)
	{
		var el = arguments[i];;
		if ( el.style.display != 'none' ) {
			el.style.display = 'none';
		}
		else {
			el.style.display = 'inline';
		}
	}
}

// funktion 'togglevis': blendet objekt ein oder aus; falls ein, dann aus und umgekehrt; (css -> visbility: hidden; visbility: visible;)
// p1 obl: objekt
// --> bsp: togglevis(this);
function togglevis()
{
	for (var i = 0; i < arguments.length; i++)
	{
		var el = arguments[i];
		if ( el.style.visibility != 'hidden' ) {
		el.style.visibility = 'hidden';
		}
	else {
		el.style.visibility = 'visible';
		}
	}
}

// funktion 'hide': blendet objekt aus
// p1 obl: objekt
// --> bsp: hide(this)
function hide() {

	for (var i = 0; i < arguments.length; i++)
	{
		var el = arguments[i];
		el.style.display = 'none';
		
	}	
}