/* --- HELPER --> */
/*function mclick( event ){ 
	if( !event) event = window.event;
	if( event.which ) { // Mozilla & co
		if( event.which == 1 ) showLocalSite();
	} else if( event.button ){ // IE
		if( event.button == 1 ) showLocalSite();
	}
}
function prepareLinks() {
	var all = document.links;
	for( var i = 0; i < all.length; i++ ){
		var a = all[ i ];
		if( !a.href || a.target || a.onclick ) continue;		
		if( a.href.substring( 0, 4 ) == 'java' ) continue;
		if( a.href.indexOf( '#' ) >= 0 ) continue;	
		a.onmouseup = function( event ){ mclick( event ); };
	}
	var all = document.getElementsByTagName( 'button' );
	for( var i = 0; i < all.length; i++ ){
		var a = all[ i ];
		if( a.onclick ) { 
			var click = a.onclick.toString();
			click = click.substring( click.indexOf( '{' ) + 2, click.lastIndexOf( '}' ) );
			if( click.indexOf( 'location' ) != 0 ) continue;
		}
		a.onclick = new Function( 'showLocalSite();' + click );		
	}	
}*/
function getNaturalDimensions( img ) {
	if( img.naturalHeight ) return { 'height': img.naturalHeight, 'width': img.naturalWidth };
	lgi = new Image();
	lgi.src = img.src;
	return { 'height': lgi.height, 'width': lgi.width };
}
function resizeToNaturalDimensions( img ){
	
	var dim = getNaturalDimensions( img );
	var old = { 'width': img.width, 'height': img.height };

	// Fals es übergross ist muss es verkleinert werden
	if( dim.width > old.width || dim.height > old.height ){
		
		var wfac = old.width / dim.width;
		var hfac = old.height / dim.height;

		if( wfac < hfac ) var fac = wfac;
		else var fac = hfac;
		
		dim.height = dim.height * fac;
		dim.width = dim.width * fac;
	}
	
	if( dim.width < old.width ){
		img.width = dim.width;
		var pad = 0;
		if( img.style.paddingLeft ) pad = parseInt( img.style.paddingLeft );
		pad = pad + ( ( old.width - img.width ) / 2 );
		if( pad >= 0 ){
			img.style.paddingLeft = pad + 'px';
			img.style.paddingRight = pad + 'px';
		}
		else{
			img.style.paddingLeft = '0px';
			img.style.paddingRight = '0px';
		}
	}

	if( dim.height < old.height ){
		img.height = dim.height;

		var pad = 0;
		if( img.style.paddingTop ) pad = parseInt( img.style.paddingTop );
		pad = pad + ( ( old.height - img.height ) / 2 );
		if( pad >= 0 ){
			img.style.paddingTop = pad + 'px';
			img.style.paddingBottom = pad + 'px';
		}
		else{
			img.style.paddingTop = '0px';
			img.style.paddingBottom = '0px';
		}
	}
}
function mxMover( obj ) { var cl = obj.className; obj.className = cl + ' MOE'; }
function mxMout( obj ) { var cl = obj.className; if( cl.substr( cl.length - 4 ) == ' MOE' ) obj.className = cl.substr( 0, cl.length - 4 ); }
function callHttp( uri, params, method_post ){
    if( ( typeof( XHR_ERROR ) != 'undefined' && XHR_ERROR ) || typeof( request ) == 'undefined' ) return;
	return request.getHTTP( uri, params, ( method_post ? request.METHOD_POST : request.METHOD_GET ) );
}
function mxPopup( url, id ) {
	var win = window.open(url,id,"width=800,height=600,left=100,top=100,menubar=no,resizable=yes,status=no,toolbar=no,location=no,scrollbars=yes");
 	win.focus();
}
function mxOffsetPosition( element ) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = mxOffsetParent( element );
    } while( element );
    return [ valueL, valueT ];
}
function mxMousePos(e) {
	if( !e ) e = window.event; 
	var body = ( window.document.compatMode && window.document.compatMode == "CSS1Compat" ) ?  
	window.document.documentElement : window.document.body || null; 
	var top = e.pageY;
	if( !top ) top = e.clientY + body.scrollTop - body.clientTop;
	var left = e.pageX;
	if( !left ) left = e.clientX + body.scrollLeft - body.clientLeft;
	return [ left, top ]; 
}
function mxOffsetParent( element ) {
  if (element.offsetParent) return element.offsetParent;
  if (element == document.body) return false;
  while ((element = element.parentNode) && element != document.body)
    if (element.style && element.style.position != 'static')
      return element;
  return false;
}
function mxWinHeight() {
	var size     = mxWinSize();
	var scrolled = mxScrolled();
	return size[ 1 ] + scrolled[ 1 ];
}
function mxWinSize() {
	var myWidth = 0, myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	return [ myWidth, myHeight ];
}
function mxScrolled() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [ scrOfX, scrOfY ];
}
function mxIsIE() {
	return( navigator.appName == 'Netscape' ? false : true );
}
function mxIsIE6() {
	if( mxIsIE() ) return( navigator.appVersion.substring(22,23) < 7 );
}
function mxSwitchSelects( s_hide ) {
	if( !mxIsIE6() ) return;
	var selects = document.body.getElementsByTagName( 'select' );
	if( s_hide ) s_hide = 'hidden';
	else s_hide = 'visible';
	for( var x = 0; x < selects.length; x++ ) selects[x].style.visibility = s_hide;
}
/* <-- HELPER --- */
function toggleCMSFeats(obj) {
	var arr = $$('[class$=cmsFeat]');
	var show = false;
	if( obj.className != 'cms_active' ) {
		show = true;
		obj.className = 'cms_active'
	} else obj.className = 'cms_inactive';
	for( var i = 0; i < arr.length; i++ ) {
		if( show ) arr[i].style.display = '';
		else arr[i].style.display = 'none';
	}
	obj.blur();
}
function setSequence( field ) {
	var frame = field.parentNode.parentNode;
	var divs = frame.childNodes;
	var last = [];
	for( var i = 0; i < divs.length; i++ ) {
		var cur = divs[ i ];
		if( typeof( cur.nodeType ) == 'undefined' ) continue;
		if( !cur.id ) continue;
		var checked = cur.firstChild.getAttribute( 'checked' );
		if( typeof( checked ) != 'boolean' ) checked = cur.firstChild.checked;
		if( checked ) continue;
		last[ last.length ] = cur;
	}
	for( var i = 0; i < last.length; i++ ) {
		frame.appendChild( frame.removeChild( last[ i ] ) );
	}
}
function aboutMaxvis( id ) {
	showSite( id, 'Info', 'about=1', true );
}
function explainLogout( id ) {
	showSite( id, 'Info', 'logout=1', false );
}
function showSite( id, view, param, aboutMaxvis ) {
	var value = callHttp( r( id, view, param ), { ajax:true } );
	if( !value ) return alert( 'site not available' );
	showLocalSite( value, aboutMaxvis );
}
function showSiteFromUrl( url ) {
	var value = callHttp( url, { ajax:true } );
	if( !value ) return alert( 'site not available' );
	showLocalSite( value );
}
function showLocalSite( value, aboutMaxvis, title, fullsize, nodelay ) {
	var bg;
	var about;
	var inner;
	var content;
	if( !title ) title = 'Info';
	if( $('rSiteBG') ) {
		bg    = $('rSiteBG');
		about = $('rSite');
		inner = $('rSiteinner');
		head  = $('rSiteHead');
		content = $('rSitecontent');
		bg.style.display    = 'none';
		about.style.display = 'none';
		hideLoadingStatus();
	} else {
		bg = document.createElement( 'div' );
		bg.id = 'rSiteBG';
		about = document.createElement( 'div' );
		about.id = 'rSite';
		inner = document.createElement( 'div' );
		inner.id = about.id + 'inner';
		inner.className = 'rSiteInner';
		about.appendChild( inner );
		var close = document.createElement( 'div' );
		close.className = 'rSiteClose';
		close.innerHTML = '<a href="javascript:void(0)" onClick="hideSite()">X</a>';
		inner.appendChild( close );		
		var head = document.createElement( 'div' );
		head.className = 'rSiteHead';
		head.id = 'rSiteHead';
		inner.appendChild( head );
		var content = document.createElement( 'div' );
		content.className = 'rSiteContent';
		content.id = about.id + 'content';
		inner.appendChild( content );
		document.body.appendChild( bg );
		document.body.appendChild( about );
	}
	head.innerHTML = title;
	if( !mxIsIE6() ) bg.style.position = 'fixed';
	var winsize = mxWinSize();
	var scrolled = mxScrolled();
	if( value ) {
		if( typeof( value ) == 'object' ) {
			var chn = content.childNodes;
			if( !chn[ 0 ] || chn[ 0 ].id != value.id ) {
				content.innerHTML = '';
				content.appendChild( value );
			}
		} else content.innerHTML = value;
		about.style.height = '0px';
		//if( document.body.offsetWidth > winsize[ 0 ] ) winsize[ 0 ] = document.body.offsetWidth;
		//if( document.body.offsetHeight > winsize[ 1 ] ) winsize[ 1 ] = document.body.offsetHeight;
		var width; 
		var height;
		var top;
		if( !fullsize ) {
			width  = 700;
			height = 400;
			if( aboutMaxvis ) {
				width = 400;
				height = winsize[ 1 ] / 3;
				if( height < 300 ) height = 300;
			} else {
				if( width > winsize[ 0 ] ) width = winsize[ 0 ] - 100;
				if( width < 400 ) width = 400;
			}
		} else {
			width = Math.round( winsize[ 0 ] / 4 * 3 );
			height = Math.round( winsize[ 1 ] / 4 * 3 );
			if( width < 700 ) width = 700;
			if( height < 400 ) height = 400;
			top = scrolled[ 1 ] + Math.round( ( winsize[ 1 ] - height ) / 4 ) - 10;
		}
		var left = ( ( winsize[ 0 ] - width ) / 2 ) + scrolled[ 0 ];
		if( !top ) {
			top = ( ( winsize[ 1 ] - height ) / 2 ) + scrolled[ 1 ] + 10;
			while( top + height > winsize[ 1 ] + scrolled[ 1 ] ) top -= 20;
		}
		if( top < 0 ) top = 0;
		if( left < 0 ) left = 0;
		inner.style.width = Math.round( width ) + 'px';
		about.style.top = Math.round( top ) + 'px';
		about.style.left = Math.round( left ) + 'px';
		bg.onclick = new Function( "hideSite()" );
		about.style.display = '';
		morphLayer( about, true, 300 );
		new Fx.Morph( 'rSite', { duration: 300, transition: Fx.Transitions.linear } ).start( { 'opacity' : [ 0, 1 ] } );
	} else {
		//bg.className = 'rSiteLoading';
		bg.onclick = new Function( 'return false;' );

		// Eigendlich richtig. Funktioniert aber nicht im Firefox beim scrollen
		//var left = ( ( ( winsize[ 0 ] - 32 ) / 2 ) + scrolled[ 0 ] ) + 'px';
		//var top = ( ( ( winsize[ 1 ] - 32 ) / 2 ) + scrolled[ 1 ] ) + 'px';
		var left = ( ( winsize[ 0 ] - 32 ) / 2 ) + 'px';
		var top = ( ( winsize[ 1 ] - 32 ) / 2 ) + 'px';
		bg.innerHTML='<div style="top:'+top+';left:'+left+';" class="rSiteLoading"">&nbsp;</div>';
	}
	bg.style.width = ( winsize[ 0 ] + scrolled[ 0 ] ) + 'px';
	bg.style.height = ( winsize[ 1 ] + scrolled[ 1 ] ) + 'px';
	bg.style.display = '';
	
	var delay = 800;
	if( nodelay ) delay = 0;
	var bg = new Fx.Morph( 'rSiteBG', { duration: delay, transition: Fx.Transitions.Sine.easeIn } );
	bg.onComplete = new Function( "mxSwitchSelects(true);" );
	bg.start( { 'opacity' : [ 0, 0.4 ] } );
}
function showLoadingStatus( html ) {
	if( !$('rSiteBG') ) return;
	if( !$('rSiteStatus') ) {
		var ls = new Element( 'div', { 'id' : 'rSiteStatus' } );
		ls.setStyle( 'opacity', 0 );	
		if( !mxIsIE6() ) ls.setStyle('position','fixed');
		document.body.appendChild( ls );
		var ls = new Fx.Morph( 'rSiteStatus', { duration: 800, transition: Fx.Transitions.Sine.easeIn } );
		ls.start( { 'opacity' : [ 0, 1 ] } )
	}
	$('rSiteStatus').innerHTML = '<div class="inner">' + html + '</div>';
	var winsize = mxWinSize();
	var width = Math.round( winsize[ 0 ] / 3 );
	if( width < 200 ) width = 200;
	var top = Math.round( ( winsize[ 1 ] + 64 ) / 2 );
	var left = Math.round( ( winsize[ 0 ] - width ) / 2 );
	if( left < 0 ) left = 0;
	$('rSiteStatus').setStyle( 'top', top + 'px' );
	$('rSiteStatus').setStyle( 'left', left + 'px' );
	$('rSiteStatus').setStyle( 'width', width + 'px' );
	
}
function hideLoadingStatus() {
	if( !$('rSiteStatus') ) return;
	$('rSiteStatus').parentNode.removeChild( $('rSiteStatus') );
}
function hideSite( hide ) {
	if( !$('rSiteBG') ) return;
	if( !hide || typeof( hide ) == 'undefined' ) {
		new Fx.Morph( 'rSite', { duration: 300, transition: Fx.Transitions.linear } ).start( { 'opacity' : 0 } );
		var morph = new Fx.Morph( 'rSiteBG', { duration: 300, transition: Fx.Transitions.linear } );
		morph.start( { 'opacity' : 0 } );
		morph.onComplete = new Function( 'hideSite(1)' );
	} else {
		mxSwitchSelects();
		$('rSite').style.display = 'none';
		$('rSiteBG').style.display = 'none';
		hideLoadingStatus();
	}
}
function selectPreview( obj ) {
	var inp = obj.parentNode.getElementsByTagName( 'input' );
	for( var x = 0; x < inp.length; x++ ) {
		var sel = inp[x];
		sel.value = ( sel.value ? '' : sel.getAttribute( 'mxvalue' ) );
		var check = sel.value;
		var cnt = 0;
		while( sel = sel.parentNode ) {
			if( cnt > 5 ) break;
			cnt++;
			var cn = sel.className.substr( 0, 5 );
			if( cn != 'inner' ) continue;
			sel.className = ( check ? cn + ' ' + 'selected' : cn ); 
			break;
		}
	}
}
/* docu */
function hideDoc( id ) {
	var box	= $(id);
	if( !box ) return;
	var hide_id = Math.random();
	box.setAttribute( 'mxshow', 0 );
	box.setAttribute( 'mxhide', hide_id );
	window.setTimeout( '_hideDoc(\'' + id + '\',' + box.getAttribute( 'mxhide' ) + ')', 600 );
}
function _hideDoc( id, hide_id ) {
	var box = $(id);
	if( !box || box.getAttribute( 'mxhide' ) != hide_id ) return;
	box.style.display = 'none';
}
function showDoc( event, anchor, id ) {
	var box	= $(id);
	if( !box ) return;
	var show_id = Math.random();
	box.setAttribute( 'mxshow', show_id );
	if( !event ) event = window.event;
	var pos = mxMousePos( event );
	window.setTimeout( '_showDoc(\'' + anchor.id + '\',\'' + id + '\',' + box.getAttribute( 'mxshow' ) + ',[' + pos[0] + ',' + pos[1] + '])', 300 );
}
function _showDoc( anchor_id, id, show_id, pos ) {
	var box	= $(id);
	if( !box || box.getAttribute( 'mxshow' ) != show_id ) return;
	box.setAttribute( 'mxhide', 0 );
	box.style.display = 'block';
	var anchor = $(anchor_id);
	if( anchor ) {
		if( box.parentNode != document.body ) {
			box.parentNode.removeChild( box );
			document.body.appendChild( box );
		}
		var offset = mxOffsetPosition( anchor );
		var width = box.offsetWidth;
		if( width > 400 ) width = 400;
		else if( width < 100 ) width = 100;
		box.style.width = width + 'px';
		var rnd = 150;
		if( pos[ 0 ] + rnd < offset[ 0 ]
		 || pos[ 1 ] + rnd < offset[ 1 ]
		 || pos[ 0 ] - rnd > offset[ 0 ]
		 || pos[ 1 ] - rnd > offset[ 1 ] ) {
			box.style.left = ( pos[ 0 ] + 2 ) + 'px';
			box.style.top = ( pos[ 1 ] + 2 ) + 'px';
		} else {
			var winset = mxWinSize();
			var left = false; var right = false;
			if( anchor.parentNode.className == 'doc' ) {
				box.style.top = offset[ 1 ] + 'px';
				right = winset[ 0 ] - offset[ 0 ] + 1;
			} else {
				left = offset[ 0 ];
				var height = anchor.offsetHeight;
				if( !height ) height = anchor.parentNode.offsetHeight - 5;
				/* DOCTYPE STRICT */
				//if( mxIsIE6() && anchor.parentNode.className.substr( 0, 3 ) == 'tab' ) height -= 10;
				if( anchor.offsetTop < 0 ) height -= anchor.offsetTop; // Firefox Bug - liegt an der Klasse div.tabs .tab a { display:block }
				/* DOCTYPE STRICT */
				box.style.top = ( offset[ 1 ] + height + 1 ) + 'px';
			}
			if( right ) box.style.right = right + 'px';
			if( left ) {
				if( left + box.offsetWidth > winset[ 0 ] - 1 ) left = winset[ 0 ] - box.offsetWidth - 1;
				box.style.left = left + 'px';
			}			
		}
	}
}
function hideAllDocs( except_id ) {
	var divs = document.body.getElementsByTagName( 'div' );
	for( var x = 0; x < divs.length; x++ ) {
		if( divs[x].className != 'helpbox' ) continue;
		if( divs[x].id == except_id ) continue;
		divs[x].style.display = 'none';
		divs[x].setAttribute( 'mxhide', 0 );
	}
}
function cycle( id, dir, anchor ) {
	var obj  = $(id);
	var divs = obj.getElementsByTagName( 'div' );
	var len = divs.length;
	if( !len ) return;
	var active = 0;
	for( var i = 0; i < len; i++ ) {
		if( divs[i].style.display == 'none' ) continue;
		divs[i].style.display = 'none';    
		if( dir && typeof( dir ) != 'undefined' ) active = i + dir;
	}
	if( active >= len ) active = 0;
	else if( active < 0 ) active = len - 1;
	divs[active].style.display = 'inline';
	if( typeof( anchor ) == 'object' ) anchor.blur(); 
}
function morphLayer( div, show, delay ) {
	if( !delay || typeof( delay ) == 'undefined' ) delay = 100; 
	var myEffects = new Fx.Morph( div.id, {duration: delay, transition: Fx.Transitions.linear});
	if( show ) myEffects.start({ 'height' : [ 0, $(div.id+'inner').offsetHeight + 1 ] }); 
	else myEffects.start({ 'height' : [ div.offsetHeight, 0 ] });
}

/* chat */
function toggleButtons( button, input_id, div_id ) {
	var div = $(div_id);
	if( button.className == 'pressed' ) {
		button.className = '';
		morphLayer(div,false);
	} else {
		button.className = 'pressed';
		morphLayer(div,true);
	}		
	if( input_id ) $(input_id).focus(); else button.blur();
}			
function escapeVal( value, replaceWith ) {
	value = escape(value);
	for( i=0; i<value.length; i++ ) {
		if(value.indexOf("%0D%0A") > -1) value=value.replace("%0D%0A",replaceWith);
		else if(value.indexOf("%0A") > -1) value=value.replace("%0A",replaceWith);
		else if(value.indexOf("%0D") > -1) value=value.replace("%0D",replaceWith);
	}
	return unescape(value);
}
function chatEnter( txt, e ) {
	if( checkEnter( e ) ) {
		sendMessage( txt.form );
		return false;
	}
	return true;
}
function checkEnter( e, form ) {
	if( e.shiftKey ) return false; 
	var characterCode;
	if( e && e.which ) {
		e = e;
		characterCode = e.which;
	} else {
		e = event;
		characterCode = e.keyCode;
	}
	if(characterCode == 13 ) return true;
	return false;
}
function addTag( input_id, aTag, eTag ) {
  if( !aTag ) return;
  var input = $( input_id );
  if( !eTag ) eTag = '';
  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);
  }
}

// js calendar helper

function setDatetime( cal, id ) {

	var date = cal.date;
	var time = date.getTime()
	
	var dateFormater = new Date(time);
	
	var field_date = document.getElementById('d_' + id);
	var field_time = document.getElementById('t_' + id);
	
	field_date.value=dateFormater.print("%d.%m.%Y");
	field_time.value=dateFormater.print("%H:%M");
	
	return true;
}
			
function confirmDatetime( cal, id ) {

	var field_date = document.getElementById('d_' + id);
	var field_time = document.getElementById('t_' + id);
	
	var field_datetime = document.getElementById('dt_' + id);
	
	field_datetime.value = field_date.value+' '+field_time.value;
	
	if( cal ) cal.hide();
	
	return true;	
}

// Bild Resizer

function switchImage( id, pic_url ) {

	var thu = document.getElementById( 't_' + id );
	var pic = document.getElementById( 'p_' + id );
	
	if( !thu || !pic ) return;
	
	if( pic_url ) {
	
		document.images['p_' + id].src = pic_url;			
	
		thu.style.display = 'none';
		pic.style.display = 'block';
		
	} else {
	
		pic.style.display = 'none';
		thu.style.display = 'block';
	}
	
	return false;
}

function switchFileDialog( select, field ){

	upload_div  = document.getElementById( 'upload_' + field );
	upload_file = document.getElementById( field );

	if( select.options[ select.selectedIndex ].value ){
	
		upload_div.style.display = 'none';
		select.name = select.getAttribute( 'tmp_name' );
		upload_file.setAttribute( 'tmp_name', upload_file.name );
		upload_file.name = '';
		
	} else {

		upload_div.style.display = 'block';
		select.name = '';
		upload_file.name = upload_file.getAttribute( 'tmp_name' );
	}
}

// Auswahl von Nodes / Benutzern

function addItems( from, to ) {
	
	var from = document.getElementById( from );
	var to = document.getElementById( to );
	
	var options = to.getElementsByTagName( 'option' );
	
	var selected = new Array;

	for( var x = 0; x < options.length; x++ ) {
	
		var y = options[x];
		
		selected[y.value] = true;
	}
	
	var options = from.getElementsByTagName( 'option' );

	for( var x = 0; x < options.length; x++ ) {

		var y = options[x];
		
		if( y.selected != true ) continue;
		
		if( selected[y.value] ) continue;
		
		var new_option =  document.createElement( 'option' );
		
		new_option.value     = y.value;
		new_option.innerHTML = y.innerHTML;
		
		to.appendChild( new_option );		
	}
}

function removeItems( from ) {

	var from = document.getElementById( from );
	
	var options = from.getElementsByTagName( 'option' );

	for( var x = 0; x < options.length; x++ ) {

		var y = options[x];
		
		if( y.selected != true ) continue;
		
		from.removeChild( y );
	}
}

function switchDiv( div1, value, div2 ) {
	if( value ) {
		if( $(div1) ) $(div1).style.display = 'block';
		if( $(div2) ) $(div2).style.display = 'none';
	} else {
		if( $(div1) ) $(div1).style.display = 'none';
		if( $(div2) ) $(div2).style.display = 'block';
	}
}

// Termine anzeigen

var shownApp = false;

function showApp( obj ) {

	obj.className = 'hover ' + obj.className;
}

function hideApp( obj ) {

	obj.className = obj.className.substring( 6 );
}

function switchApp( obj ) {

	var show = false;
	var hide = false;

	if( shownApp == obj ) {
	
		hide = obj;
		
		shownApp = false;
		
	} else {
	
		show = obj;
		
		if( shownApp ) hide = shownApp;
		
		shownApp = obj;
	}
	
	if( show ) {
	
		showApp( show.parentNode );
	
		show.parentNode.style.zIndex = 1000 - show.parentNode.style.zIndex;
	
		var outer = show.parentNode.style.height;
		
		if( outer.substring( 0, outer.length - 2 ) < 8 ) {
	
			var inner = show.style.height;
			
			show.setAttribute( 'storedOuter', outer );
			show.setAttribute( 'storedInner', inner );
			
			show.parentNode.style.height = '';
			show.style.height = '';
		}
	} 
	
	if( hide ) {
	
		hideApp( hide.parentNode );
	
		hide.parentNode.style.zIndex = 1000 - hide.parentNode.style.zIndex;
		
		if( hide.getAttribute( 'storedOuter' )) {

			hide.parentNode.style.height = hide.getAttribute( 'storedOuter' );
			hide.style.height = hide.getAttribute( 'storedInner' );
		
			hide.removeAttribute( 'storedOuter' );
			hide.removeAttribute( 'storedInner' );
		}
	}
}

// Image Map //
function openIM( url, x, y ) {
	if( !x ) x = 600;
	if( !y ) y = 500;
	openNewWindow( url, '_im', x, y, 'no', 'yes', 'no'  );
}

// Process Designer //
function openPD( url ) { openNewWindow( url, '_pd', 1000, 680, 'no', 'yes', 'no'  ); }

// Dokufenster //
function openDoc( node ) { openNewWindow( r( node, 'Web' ), '_doc', 1010, 700, 'no', 'yes', 'no'  ); }

// Auswahlfenster //
function blockForm( obj, func ) { obj.form.onsubmit = new Function( func ); }
function unblockForm( obj ) { obj.form.onsubmit = ''; }

// Choice ----->

var reg_choice = new Array();

function openChoice( conf ) {

	var id		= conf[ 'frame' ];
	var lang	= conf[ 'lang' ];
	var choice	= $('con_'+id);

	reg_choice[ id ] = conf;
	
	if( !choice ) {
	
		choiceIcon( conf[ 'icon' ] );

		var sclass = 'choice';
		if( conf[ 'multi' ] ) sclass += ' multi';
		
		choice = document.createElement( 'div' );
		choice.id = 'con_' + id;
		choice.className = 'choice_helper';
		
		var size = mxWinSize();
		var height = size[ 1 ] / 3 * 2;
		
		if( height < 300 ) height = 300;
		
		choice.innerHTML = '<table class="choice_helper" cellspacing="2" cellpadding="0">'
		+ '<tr><td width="75%" valign="top">'
		+ '<div id="' + id + '_' + conf[ 'path' ] + '" class="path">&nbsp;</div>'
		+ '</td><td valign="top" style="white-space:nowrap;"><form onsubmit="return loadChoice(\'' + id + '\');" method="post" action="">'
		+ '<input id="' + id + '_' + conf[ 'string' ] + '" name="' + conf[ 'string' ] + '" value="" type="text">'
		+ '<div class="buttons">'
		+ '<button type="submit">' + lang[ 'search' ] + '</button>'
		+ '<button type="button" onclick="toggleButtons(this,\'' + id + '_' + conf[ 'string' ] + '\',\'so_' + id + '\');return false;">v</button>'
		+ '</div>'
		+ ' <input id="' + id + '_' + conf[ 'action' ] + '" name="action" type="hidden" value="' + conf[ 'search_location' ] + '">'
		+ ' <div class="search_options" id="so_' + id + '"><div id="so_' + id + 'inner">'
		+ '  <label><input type="checkbox" id="' + id + '_' + conf[ 'recursive' ] + '" name="' + conf[ 'recursive' ] + '" value="1" /> ' + lang[ 'recursive' ] + '</label>'
		+ '  <label><input type="checkbox" id="' + id + '_' + conf[ 'fulltext' ] + '" name="' + conf[ 'fulltext' ] + '" value="1" /> ' + lang[ 'fulltext' ] + '</label>'
		+ '  <label><input type="checkbox" id="' + id + '_' + conf[ 'emptyns' ] + '" name="' + conf[ 'emptyns' ] + '" value="1" /> ' + lang[ 'emptyns' ] + '</label>'
		+ ' </div></div>'
		+ '</form></td></tr></table>'
		+ '<table class="choice_helper" cellspacing="2" cellpadding="0"><tr><td width="25%" valign="top" class="choice_menu">'
		+ '<div style="height:' + height + 'px" >' + conf[ 'nav' ] + '</div>'
		+ '</td><td valign="top"><div class="choice_border">'
		+ ' <iframe class="choice_plugin" style="height:' + height + 'px" id="' + id + '" name="' + id + '" frameborder="0" src="' + conf[ 'initial_url' ] + '"><p>' + lang[ 'frames_not_supported' ] + '</p></iframe>'
		+ '</div></td></tr><tr><td colspan="3" style="padding:0.2em 0 0.2em 0">'
		+ '<div id="' + conf[ 'selection' ] + '" class="' + sclass + '">' + $(conf[ 'target' ]).innerHTML + '</div>'
		+ '</td></tr><tr><td colspan="2" align="right">'
		+ ' <button type="button" onclick="$(\'' + conf[ 'target' ] + '\').innerHTML=$(\'' + conf[ 'selection' ] + '\').innerHTML;hideSite();">' + lang[ 'submit' ] + '</button>'
		+ '</td></tr></table>';

		window.setTimeout( 'loadChoice(\'' + id + '\');', 600 );
		
	} else $(conf[ 'selection' ]).innerHTML = $(conf[ 'target' ]).innerHTML;
	
	showLocalSite( choice, false, lang[ 'title' ], true );
	
	return false;
}

function loadChoice( id ) {
	var conf = reg_choice[ id ];
	var action_select  = $( id + '_' + conf[ 'action' ] );
	var url = action_select.value;
	if( url ) {
		var vars = [ conf[ 'string' ], conf[ 'fulltext' ], conf[ 'recursive' ], conf[ 'emptyns' ] ];
		var url_dummy = conf[ 'url-var' ];
		var url_replace = conf[ 'url-replace' ];
		for( var i = 0; i < vars.length; i++ ) {
			var inp = action_select.form.elements[ vars[ i ] ];
			var value = 0;
			if( inp.type == 'checkbox' ) {
				if( inp.checked ) value = 1;
			} else {
				if( !inp.value ) continue;
				value = inp.value;
			}
			url += '&' + url_dummy.replace( url_replace, inp.name ) + '=' +  value;
		}			
		url += '&' + url_dummy.replace( url_replace, 'start' ) + '=0&init=1';
		
		submitChoiceLocation( id, url );
	}
	return false;
}

function submitChoiceLocation( frame_id, url ) {
	var win = window;
	if( win.name != frame_id ) {
		for( var i = 0; i < window.frames.length; i++ ) if( window.frames[ i ].name == frame_id ) win = window.frames[ i ];
		if( win.name != frame_id ) {
			alert( 'Cannot find target frame <' + frame_id + '>' );
			return hideSite();
		}
	}
	if( typeof( win.showLocalSite ) != 'undefined' ) win.showLocalSite();

	if( url == 1 ) {
		reg_choice[ frame_id ][ 'history' ].pop();
		url = reg_choice[ frame_id ][ 'history' ].pop();
	}
	
	win.location.href = url;
}

function switchChoice( frame_id, noload ) {

	var choice_frame = document.getElementById( frame_id );
	
	if( !choice_frame ) return;
	
	if( !choice_frame.src ) {
	
		if( !noload ) return loadChoice( frame_id );
		
		choice_frame.className = 'choice_plugin hidden';
	}
	
	var choice_div = document.getElementById( 'd_' + frame_id );

	if( !choice_div ) return;
	
	var choice_hide = document.getElementById( 'h_' + frame_id );
	var choice_show = document.getElementById( 's_' + frame_id );

	if( choice_div.style.display != 'block' ) {
	
		choice_div.style.display = 'block';

		if( choice_hide ) choice_hide.style.display = 'block';
		if( choice_show ) choice_show.style.display = 'none';
	
	} else {
	
		choice_div.style.display = 'none';
		
		if( choice_hide ) choice_hide.style.display = 'none';
		if( choice_show ) choice_show.style.display = 'block';
	}
}

function submitChoice( layer, name, multi, id, title, document_url ) {

	/* check if we are a process designer... */
	if( window.opener && window.opener.createCMSLink ) {
		window.opener.createCMSLink(id,'_blank',title );
		window.close();
		window.opener.focus();
		return;
	}
	/* normal mode */
	if( window.opener ){
		startElement = window.opener;
		while( startElement ){
			if( startElement.addChoice ) {
				var res = startElement.addChoice( layer, name, multi, id, title, document_url, window );
				if( !res || !multi ) {
					window.close();
					window.opener.focus();
				}
				return;
			}
			startElement = startElement.parent;
		}
	}
	window.parent.addChoice( layer, name, multi, id, title, document_url );
}

function receiveChoiceParams( frame_id, path, action_url, history_url, helper ) {

	if( !reg_choice[ frame_id ] ) return false;
	
	reg_choice[ frame_id ][ 'url-var' ] = helper;
	
	$( frame_id + '_' + reg_choice[ frame_id ][ 'action' ] ).value = action_url;
	
	var history_count = reg_choice[ frame_id ][ 'history' ].length;
	
	if( !history_count || reg_choice[ frame_id ][ 'history' ][ history_count - 1 ] != history_url ){
		reg_choice[ frame_id ][ 'history' ].push( history_url );
	}
	
	var pathDiv = $( frame_id + '_' + reg_choice[ frame_id ][ 'path' ] );
	pathDiv.style.display='block';
	pathDiv.innerHTML = path;
	
	var all = pathDiv.getElementsByTagName( 'a' );
	for( var i = 0; i < all.length; i++ ){
		var a = all[ i ];
		var url = a.href;
		if( url.indexOf( 'history.back' ) >= 0 ){
			if( reg_choice[ frame_id ][ 'history' ].length > 1 ) a.href = "javascript:submitChoiceLocation('"+frame_id+"',1)";
			else a.parentNode.removeChild( a );
		}
		else{
			a.href = "javascript:submitChoiceLocation('"+frame_id+"','"+url+"')" ;
		}
	}
	
	return true;
}

function receiveChoiceFields( frame_id, string, recursive, fulltext, emptyns ) {

	if( !reg_choice[ frame_id ] ) return false;
	
	var conf =  reg_choice[ frame_id ];

	var search_input   = $( frame_id + '_' + conf[ 'string' ] );
	var fulltext_check = $( frame_id + '_' + conf[ 'fulltext' ] );
	var recursive_check = $( frame_id + '_' +  conf[ 'recursive' ] );
	var emptyns_check = $( frame_id + '_' + conf[ 'emptyns' ] );
	
	search_input.value = string;
	
	if( recursive ) recursive_check.checked = true;
	else recursive_check.checked = false;

	if( fulltext ) fulltext_check.checked = true;
	else fulltext_check.checked = false;

	if( emptyns ) emptyns_check.checked = true;
	else emptyns_check.checked = false;
	
	return true;
}

var choice_icon = false;
var choice_no_search = false;

function choiceIcon( icon_tag ) {

	if( icon_tag ) choice_icon = icon_tag;
	
	else return choice_icon;
}

function addChoice( layer, name, multi, id, title, document_url, window ) {

	var con = $(layer);
	
	if( !con || !name ) return 0;
	
	var my_id = 'C' + layer + id;
	
	var all = con.childNodes;
	
	for( var i = 0; i < all.length; i++ ) {
	
		if( all[ i ].id == my_id ) return -1;
	}
	
	if( !title ) var title = '<i>kein Titel</i>';

	var div = document.createElement( "div" );
	
	div.id = my_id;
	
	if( multi && multi != 0 ) name += '[]';
		
	else {
	
		var arr = con.getElementsByTagName( 'div' );
		
		for( var x = 0; x < arr.length; x++ ) {
		
			var y = arr[x];
			
			con.removeChild( y );
		}	
	}
	
	var icon = choiceIcon();
	
	if( icon ) var html = '<a style="margin-right:0.5em;" href="javascript:void(0);" onClick="undoChoice(this);" title="Auswahl entfernen">' + icon + '</a><label><input type="hidden" name="' + name + '" value="' + id + '">' + title + '</label>';
	else var html = '<label><input type="checkbox" name="' + name + '" value="' + id + '" checked> ' + title + '</label>';
		
	div.innerHTML = html;
	
	var ph = con.getElementsByTagName( 'p' );
		
	if( ph[0] ) ph[0].className = 'hidden';
	
	con.appendChild( div );
	
	return 1;
}

function undoChoice( obj ) {

	var div = obj.parentNode;
	
	var con = div.parentNode;

	con.removeChild( div );
	
	var children = con.getElementsByTagName( 'div' );
	
	if( !children[0] ) {
	
		var ph = con.getElementsByTagName( 'p' );
		
		if( ph[0] ) ph[0].className = '';
	}
}

function removeObjectById( id ) {
	var obj = document.getElementById( id );
	var parent = obj.parentNode;
	parent.removeChild( obj );
}

function openNewWindow( url, title, x, y, menubar, scrollbars, status, top, left ) {

	if( !menubar ) var menubar='yes';
	if( !scrollbars ) var scrollbars='yes';
	if( !status ) var status='yes';
	
	if( !top ) var top=0;
	if( !left ) var left=0;
	
	if( !x ) x = 800;
	if( !y ) y = 600;
	
	if( !title ) title = 'popup';
	
	remote = window.open( url, title, "left="+left+",top="+top+",width="+x+",height="+y+",resizable=yes,toolbar=no,menubar="+menubar+",scrollbars="+scrollbars+",status="+status );
	
	if( remote ) remote.focus();
}

// Zeilenfunktionen Manage //

function rowIn( element ) {

	if( !element.className ) element.className = 'in';
}

function rowOut( element ) {

	if( element.className == 'in' ) element.className = '';
}

function calIn( element ) {

	element.style.backgroundColor = '#ececec';
}

function calOut( element ) {

	element.style.backgroundColor = '#f2f2f2';
}


// ---------------------- //

function doSubmit( button ){

	var mxname = button.getAttribute('mxname');
	var mxvalue = button.getAttribute('mxvalue');
	
	if( mxname ) {
	
		if( button.form.elements[mxname] ) button.form.elements[mxname].value = mxvalue;
		else button.parentNode.insertBefore( hiddenInput( mxname, mxvalue ), button );
	}
}

function hiddenInput( name, value ) {

	var input = document.createElement("input");
	
	input.setAttribute('type','HIDDEN');
	
	input.setAttribute('name',name);
	
	if(value) input.setAttribute('value',value);
	
	return input;
}

function resetForm( form_id ) {

	var form = document.forms[form_id];
	
	var inputs = form.getElementsByTagName('input');
	 
	for( var x = 0; x < inputs.length; x++ ) {
		
		if( inputs[x].disabled ) continue;
		
		if( inputs[x].type == 'hidden' ) continue;
	
		if( inputs[x].value ) inputs[x].value = '';
		
		if( inputs[x].checked ) inputs[x].checked = false;
	}
	
	var inputs = form.getElementsByTagName('select');
	
	for( var x = 0; x < inputs.length; x++ ) {
		
		if( inputs[x].disabled ) continue;
		
		inputs[x].selectedIndex = '';
	}	
}

function submitManage( form_id, open ) {
	var form = $(form_id);
    var inputs = form.getElementsByTagName( 'input' );
    var id;
    var input;
    
	for( var i = 0; i < inputs.length; i++ ) {
		
		input = inputs[i];
		if( input.disabled || input.checked != true ) continue;
		if( input.name.substr( 0, 2 ) != 'id' ) continue;
		
		id = input.getAttribute( 'mxViewOpen' );
		
		if( !id ) {
		
			input.name = '';
		
		} else {
		
			input.name = id;
			input.value = open;
		}
	}
	
	switchForm( form );
}

function submitValue( form_id, name, value, todo ) {
	var form = document.forms[form_id];
	if( !form ) return;
	switchForm( form );
	if( name ) form.appendChild( hiddenInput( name, value ));
	if( todo ) form.appendChild( hiddenInput( 'do', todo ));
	form.submit();
}

function checkSelection( element ) {

	var views = [];
	
	var all = element.form;
	
	if( !all ) return;
	
	var first = true;
	var selected = 0;
	
    var inputs = all.getElementsByTagName( 'input' );
    
	for( var i = 0; i < inputs.length; i++ ) {
	
		var input = inputs[ i ];
		
		if( input.type != 'checkbox' || !input.name || input.disabled || input.checked != true ) continue;
		
		selected++;
		
		var tmp = [];

		var mv = input.getAttribute( 'mxMultiViews' );
		
		if( !mv ) break;
		
		mv = mv.split( ',' );
		
		var check = false;
		
		for( var j = 0; j < mv.length; j++ ) {
		
			var view = mv[ j ];
			
			if( first || views[ view ] ) {
			
				check = true;
			
				tmp[ view ] = true;
			}
		}
		
		if( !check ) break;
		
		first = false;
		
		views = tmp;
	}
	
	var elements = element.form.getElementsByTagName( 'button' );
	
	for( var i = 0; i < elements.length; i++ ) {

	 	var field = elements[ i ];
	 	
	 	if( field.getAttribute( 'type' ) !== 'submit' ) continue;
	 
	 	if( field.getAttribute( 'mxname' ) != 'do' )
	 	
	 		disabled = ( selected > 0 ? false : true );
	 		
	 	else
	 	
	 		disabled = ( views[ field.getAttribute( 'mxvalue' ) ] ? false : true );
	 	
	 	field.disabled = disabled;
	}
}

function deselectAll( element, all_id, check_multiviews ) {

	if( check_multiviews ) checkSelection( element );
	
    if( !all_id ) return

    var inputs = element.form.getElementsByTagName( 'input' );
    
    var all_checked = element.checked;
    
	for( var i = 0; i < inputs.length; i++ ) {
	
		var input = inputs[ i ];
		
		if( input.type != 'checkbox' || input.name != element.name ) continue;
		
		if( element.checked && !input.checked ) all_checked = false;
	}
	
	var all_checkbox = document.getElementById( all_id );
	
	if( all_checkbox ) all_checkbox.checked = all_checked;
}

function selectAll( element, all_name, check_multiviews ) {

	if( !all_name ) return;

    var inputs = element.form.getElementsByTagName( 'input' );
    
	for( var i = 0; i < inputs.length; i++ ) {
	
		var y = inputs[ i ];
		
		if( typeof( all_name ) == 'string' && y.name != all_name ) continue;
		
		if( y.type != 'checkbox' || y.disabled ) continue;
		
		y.checked = element.checked;
	}
    
	if( check_multiviews ) checkSelection( element );
}

function switchForm( form, deactivate_win, progress_field_name, progress_timer ) {

	if( progress_field_name && progress_timer && form.elements[ progress_field_name ] ){

		window.setTimeout('getProgressStatus("'+form.elements[ progress_field_name ].value+'",true)',progress_timer);
	}
	
	if( deactivate_win ) showLocalSite();

	if( form.method.strtolower == 'post' ) return;
	
	var all = form.getElementsByTagName('input');
	
	if( all.length > 20 ) {
	
		var count = 0;
	
		for( var x = 0; x < all.length; x++ ) {
		
			if( all[x].disabled || !all[x].checked ) continue;
			
			count++;
			
			if( count < 20 ) continue;
			
			form.method = 'post';
				
			return;
		}
	}	
}

function toggleDisplay( item, cur_item ){

	if( !cur_item ) cur_item = 'toggle_item';
	
	cur_item = $(cur_item);
	
	// Funktioniert sonst bei reload nicht
	//if( item == cur_item.value ) return;
	
	var active_tab = $('tab_' + item);
	
	if( active_tab ) {
	
		var tabs = active_tab.parentNode.childNodes;
		var next = false;
		var current = false;
		
		for( var x = 0; x < tabs.length; x++ ) {
		
			if( !tabs[x].className || tabs[x].className.substr( 0, 3 ) != 'tab' ) continue; 
		
			var show = $('show_' + tabs[x].id);
			
			if( !show ) continue;
			
			var cn = 'tab';
		
			if( tabs[x].id == active_tab.id ) {
			
				show.style.display = 'block';
			
				cn += " active";
				
				next = true;
				
			} else {
			
				show.style.display = 'none';
				
				cn += " inactive";
			
				if( next ) cn += " next";
				
				next = false;
			}
			
			tabs[x].className = cn;
				
			current = tabs[x];
		}
		
		if( current ) current.className += ' final';
		
		cur_item.value = item;
		
		return;
	}
	
	obj = $('link_'+cur_item.value);
	obj.style.display = 'block';
	obj = document.getElementById( 'link_'+item );
	obj.style.display = 'none';

	obj = document.getElementById( 'display_'+cur_item.value );
	obj.style.display = 'none';
	obj = document.getElementById( 'display_'+item );
	obj.style.display = 'block';
	
	cur_item.value = item;
}

/* sbr: Funktionen f�r das ein und ausblenden des Initialwertes des Top Suchefeldes */

function ht0(o,t,id){if(id)o=document.getElementById(id);if(!o.value){o.style.color='#666';o.value=t;}}

function ht1(o,t,id){if(id)o=document.getElementById(id);if(o.value==t){o.style.color='#000';o.value='';}}

function setValue(id, value){

	document.getElementById(id).value = value;

}
