/**
 ** Javascript-Funktionen für das wcms
 **/



/*
	src: http://www.felgall.com/jstip45.htm
	dynamisches resize eines Textfeldes
*/
var rs_ta_agt=navigator.userAgent.toLowerCase();
function rs_ta(t)
{
	a = t.value.split('\n');
	b=1;
	for (x=0;x < a.length; x++)
	{
 		if (a[x].length >= t.cols) b+= Math.floor(a[x].length/t.cols);
	}
	b+= a.length;
	b=Math.floor(0.9*b);
	if (b > t.rows && rs_ta_agt.indexOf('opera') == -1) t.rows = b;
}

/**
 * liefert confirm-Box beim erstellen von Unterseiten für News
 *
 */
function confirmCreateSubPage4News( eid )
{
	// alert(" "+eid);
	// alert(" "+document.getElementById(eid));

	check = false;
	check = check || (confirmCreateSubPage4NewsEmpty(eid));
	check = check || (confirmCreateSubPage4NewsEmpty(eid+"[de]"));
	check = check || (confirmCreateSubPage4NewsEmpty(eid+"[en]"));
	check = check || (confirmCreateSubPage4NewsEmpty(eid+"[fr]"));
	check = check || (confirmCreateSubPage4NewsEmpty(eid+"[sp]"));
	check = check || (confirmCreateSubPage4NewsEmpty(eid+"[ru]"));

	// nur Abfrage, wenn ein Feld nicht leer war
	if( check )
	{
		flag=confirm('ACHTUNG: Die nebenstehende(n) Url(s) wird automatisch mit einem Link auf die erstellte Seite überschrieben. Sind Sie sicher, dass Sie das tun möchten?');
	}
	else
	{
		flag=true;
	}

	return(flag);
}
/**
 * unterfunktion: testet das Feld auf leer. false wenn leer, true wenn nicht leer
 */
function confirmCreateSubPage4NewsEmpty( eid )
{
	if( document.getElementById(eid) )
	{
		// alert("ist feld: "+eid);
		if( document.getElementById(eid).value != '' )
		{
			return(true);
		}
	}
	return(false);
}


function makeImageDBselect(selectField, eid, inputId, imageId, imageTmpId, srcPre)
{
	index = selectField.selectedIndex;
	value = selectField.options[index].value;

	if(value=='') return 0;

	if(	inputId == '' || inputId == 'undefined' || typeof inputId == 'undefined')	inputId = "image" + eid;
	if(	imageId == '' || imageId == 'undefined' || typeof imageId == 'undefined')	imageId = "pic" + eid;
	if(	imageTmpId == '' || imageTmpId == 'undefined' || typeof imageTmpId == 'undefined')	imageTmpId = "pictmp" + eid;

	document.getElementById(inputId).value = value;			//hidden-value wird umgesetzt

	oldWidth = (document[imageId].width);					// alte Weite wird geholt

	document[imageTmpId].src = 'im/' + value;

	width = (document[imageTmpId].width);					// original Bildweite
	height = (document[imageTmpId].height);					// original Bildhöhe

	ratio = width/height;
	newHeight = Math.floor(oldWidth / ratio);

	/* neue Werte werden gesetzt */
	if(	srcPre == '' || srcPre == 'undefined' || typeof srcPre == 'undefined') srcPre = '';
	document[imageId].src = srcPre + 'im/' + value;
	//document[imageId].width = '100'; //oldWidth;
	//document[imageId].height = '100'; //newHeight;
}

var imgTitles = new Array();

function pushTitle(id, aTitle, imgTitle )
{
	var bild = new Array(id, aTitle, imgTitle);
	imgTitles.push(bild);
}


function getOrgTitle(id)
{
	for(i=0; i < imgTitles.length; i++)
	{
		if( imgTitles[i][0] == id)
		{
			return(imgTitles[i][2]) ;
		}
	}
}

var lastMenues = new Array();

function menueShow(id)
{
	menueHideAll();
	var pos = lastMenues.length;
	var name = id + 'name';
	lastMenues[pos] = id;
	if(document.getElementById)
 	{
 		document.getElementById(id).style.display = "block";
 		changeClass(name,'menueName_on');
 	}
}

function menueHide(id)
{
	var name = id + 'name';
	if(document.getElementById)
 	{
 		document.getElementById(id).style.display = "none";
 		changeClass(name,'menueName_off');
 	}
}


function changeClass(id,className)
{
	document.getElementById(id).className = className;
}

/**
 *	ersetzt einen className
 */
function replaceClass(id, newClassName, oldClassName)
{
	if(!document.getElementById(id))
	{
		return;
	}
	var className = document.getElementById(id).className;
	var newName;

	if(className == '' || className == 'undefined' || typeof className == 'undefined')
	{
		newName = newClassName;
	}
	else
	{

		// da CSS-Eigenschaften überschrieben werden, einfach Klassenname hinten ran hängen
		// der alte Name wird ersetzt
		if(oldClassName != '')
		{
			newName = className.replace(oldClassName, newClassName);			// hier sollte nochmal drüber geschaut werden, wenn ClassNames in anderen ClassNames enthalten sind könnte es probleme geben
		}
		else
		{
			newName = className;
		}
		// sollte sich nichts geändert haben neuen Klassennamen hinzufügen
		if(newName == className)
		{
			newName = className + " "  + newClassName;
		}

	}
	changeClass(id, newName);
}

/* eigentlich wird kein array benötigt. aber vorsichtshalber, falls doch einmal mehr als zwei offen bleiben sollten */
function menueHideAll()
{
	var pos = lastMenues.length;
	for(i=0; i<pos; i++)
	{
		var name = lastMenues[i] + 'name';
		menueHide(lastMenues[i]);
 		changeClass(name,'menueName_off');
	}
	lastMenues = new Array();
}



/* spingt in Admintools nach ganz unten */
function goto_bottom()
{
	window.location.href = window.location.href+"#bottom";
}



	// schlechte Lösung
	function trim(s)
	{
		if( s.length == 0 ) { return s; }
  		while (s.substring(0,1) == ' ') {
    			s = s.substring(1,s.length);
  		}
  		while (s.substring(s.length-1,s.length) == ' ') {
    			s = s.substring(0,s.length-1);
  		}
  		return s;
	}


	function debug(val)
	{
		// document.getElementById('debug').innerHTML = '<li>'+val+document.getElementById('debug').innerHTML;

		// Fuer alle faelle lieber das nicht machen. (nur zum entwickeln usw.)
		return;
		/**
		 * Wir wollen fuer Firebug nutzer die Debugausgaben ermoeglichen.
		 */
		if (typeof(console) != 'undefined' && typeof(console.debug) != 'undefined')
		{
			console.debug(val);
		}
	}

	// wird von Tooltip (wcms_tooltip_show) verwendet
	function positionDivByElement(/* base */ el , /* move this */ div)
	{
// 		var el = document.getElementById(act_suggest_field_id); // das aktive Eingabefeld
		var x = 0;
		var y = el.offsetHeight;
// 		var div = document.getElementById("suggest"); // die Auswahlliste

		//Walk up the DOM and add up all of the offset positions.
		while (el.offsetParent && el.tagName.toUpperCase() != 'BODY')
		{
			x += el.offsetLeft;
			y += el.offsetTop;
			el = el.offsetParent;
		}

		x += el.offsetLeft;
		y += el.offsetTop;

		div.style.left = x + 'px';
		div.style.top = y + 'px';
	};

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

	/* einblenden von Auswahlliste, ggfs vorher eingeblendete Liste wieder ausblenden */
	function suggest_init(/*object*/val)
	{
		return WcmsSuggest.init(val);
	}
	/* ausblenden von Auswahlliste */
	function suggest_deinit(/*id*/ val, tries)
	{
		// wir leiten weiter auf die neue funktion
		return WcmsSuggest.deinit(tries);
	}
	/** ************************************************************** **/
	/** ************************************************************** **/

/* einblenden und ausblenden der Spiele-Oberfläche */
var showGames_flag = 0; // holds the last state of showGames

function showGames()
{

	// new Effect.BlindDown(document.getElementById('div_games'));

	// for init
	var games_id=document.getElementById('div_games');
	if( showGames_flag == 0 )
	{
		showGames_flag = -1; // invisible
		showIfHidden('div_games');
// 		hideIfShown('div_games');
// 		new Effect.Shrink('div_games', {direction: 'top-left', duration: 0.5, afterFinish:showGames});
// 		new Effect.toggle(games_id, 'blind', {duration: 0.5, afterFinish:showGames });
		new Effect.BlindUp(games_id, {duration: 0.2, afterFinish:showGames });
	}
	else
	if( showGames_flag == -1 )
	{
		showGames_flag = 1; // now: visible
// 		showIfHidden('div_games');
//  		new Effect.Grow('div_games', {direction: 'top-left', duration: 2.0});
// 		new Effect.toggle(games_id, 'blind', {duration: 3.0});
		new Effect.BlindDown(games_id);
	}
	else
	if( showGames_flag == 1 )
	{
		showGames_flag = -1; // now invisible
//  		new Effect.Shrink('div_games', {direction: 'top-left', duration: 2.0});
// 		new Effect.toggle(games_id, 'blind', {duration: 3.0});
// 		hideIfShown(games_id);
		new Effect.BlindUp(games_id);
	}

// 	new Effect.toggle('div_games', 'blind');

//	showIfHidden('div_games');

	//new Effect.Grow('div_games');

}


/** insert an element with javascript submit **/
function insertElement(elementid)
{
	if( document.getElementById(elementid) )
	{
		alert('Element mit dem Namen: '+elementid+' gefunden.');
	}
	else
	{
		alert('kein Element mit dem Namen: '+elementid);
	}

	return(false);
}


/* fängt Klicks auf den Text der aufgeklappten Menüs ab */
function clickOnMenu(element)
{
	var Ainput = element.getElementsByTagName('input');
	for(i=0; i<Ainput.length; i++ )
	{
		if( Ainput[i].getAttribute('type') == 'image' && Ainput[i].getAttribute('name') != '' )
		{
			var inp  = document.createElement('input');
				inp.type = 'hidden';
				inp.name = Ainput[i].name+'_x';
				inp.value = '1';

			document.forms[0].appendChild(inp);
			document.forms[0].submit();
			return(false);
		}

	}
	return(false);
}

/* Attribute für Tooltip */
var wcmsTooltipDivId = 'tooltip';
var wcmsTooltipMaxWidth = 200; // px
var wcmsTooltipError = false;
var wcmsTooltipEffect;
var wcmsTooltipRightMargin = 20; // px

/*
	zeigt einen Tooltip wcmsTooltipDivId, unterhalb des übergebenen Elements base an;
	passt den Tooltip an, wenn breiter als wcmsTooltipMaxWidth
*/
function wcms_tooltip_show(base, mytext)
{
	if( document.getElementById(wcmsTooltipDivId) )
	{
		var tooltip = document.getElementById(wcmsTooltipDivId);
		// clientWidth entspricht der Breite des sichtbaren Bereichs,
		// nicht der tatsaechlichen Breite
		var width = window.document.body.clientWidth;

		tooltip.style.width = 'auto';
		tooltip.innerHTML = mytext;
		positionDivByElement(base, tooltip );

		showIfHidden(wcmsTooltipDivId);

		divwidth = getDivWidth(tooltip) ;
		if(divwidth > wcmsTooltipMaxWidth)
		{
			divwidth = wcmsTooltipMaxWidth;
			tooltip.style.width = wcmsTooltipMaxWidth+'px';
		}

		var divleft = parseInt(tooltip.style.left); 
		var neededSpace = divwidth+divleft+wcmsTooltipRightMargin;
		if( width < neededSpace )
		{
			// Tooltip rechtsbuendig positionieren
			divleft = divleft -divwidth -wcmsTooltipRightMargin;
			tooltip.style.left = divleft+'px';
			// Breite festsetzen, damit der Tooltip 'automatisch'
			// ueber den rechten Fensterrand verbreitert wird
			tooltip.style.width = divwidth+'px'; 
		}
		return true;
	}
	else
	{
		//alert('Tooltip nicht gefunden!');
		return false;
	}
}

/* versteckt tooltip wieder */
function wcms_tooltip_hide()
{
	hideIfShown(wcmsTooltipDivId);
	return true;
}

// Event.observe('window', 'load', wcms_tooltip_init );
// wcms_tooltip_init();


/* bestimmt die Weite eines Elements */
function getDivWidth(element)
{
	if( element.clip ) // Netspace
	{
		if (element.clip.width )
		{
			return(element.clip.width);
		}
	}

	if( element.style )
	{
		if( element.style.pixelWidth )
		{
			return(element.style.pixelWidth );
		}
	}

	if( element.offsetWidth )
	{
		return(element.offsetWidth);
	}

	return(0);
}


/** Funktion für Titleeinfügen bei leerem Titlefeld */

/* funktion für Ajax.Updater, reloaded title.php, dort wird dann der Titel aktualisiert */
function updateTitle(eid,field,nowait)
{
	if (typeof(nowait) == 'undefined')
	{
		nowait = 0;
	}

	if (nowait != 1)
	{
		window.setTimeout(function(){
			updateTitle(eid,field,1);
		},200);
	}
	else
	{
		var pid = field.value;
		var targetname = 'title' + field.id;
		var url = 'title.php';
		var span_id = 'ajaxTitleUpdate' + eid;
		var pars = 'eid='+eid + '&pid='+pid+'&targetid='+targetname;
		var myAjax = new Ajax.Updater(span_id, url, {	method: 'get',	parameters: pars, evalScripts: true});
	}
}

/* speichert alle von den Funktion angefassten TitleFelder, für den SaveHandler nötig */
var insertedTitleFields = new Array();

/* ähnlich wie inArray, schmeißt aber das betroffene Element gleich raus */
function inTitleFields(value)
{
	var i;
    for (i=0; i < insertedTitleFields.length; i++) {
        if (insertedTitleFields[i] === value)
        {
        	insertedTitleFields[i] = '';
            return true;
        }
    }
    return false;
}

function insertTitle(title, fieldname)
{
	var element = document.getElementsByName(fieldname)[0];
	if(element.value == '' || inTitleFields(fieldname))
	{
		insertedTitleFields.push(element.name);
		element.value = title;
		element.style.color = '#aaa';
	}
}

function removeTitle(element)
{
	if( inTitleFields(element.name) === true)
	{
		element.value = '';
		element.style.color = '#000';
	}
}

function setLanguageCookie(lang)
{
	var name = "uni_halle_lang";
	var date = new Date();
	date.setTime(date.getTime()+(86400000*30));
	document.cookie = name+"="+lang+"; expires="+date.toGMTString()+"; path=/;domain=.uni-halle.de";
}

/* BEGIN: fuer alternativ-login */

/* bestimmt die Weite eines Elements */
function getDivHeight(element)
{
	if( element.clip ) // Netspace
	{
		if (element.clip.height )
		{
			return(element.clip.height);
		}
	}

	if( element.style )
	{
		if( element.style.pixelHeight )
		{
			return(element.style.pixelHeight );
		}
	}

	if( element.offsetHeight )
	{
		return(element.offsetHeight);
	}

	return(0);
}


function showMoreLoginForms()
{
  var hints = document.getElementById("alternativlogin");
//   alert("x");
  positionDivByElement( document.getElementById("rechtslogin"), hints );
  var widthLogin = getDivWidth( document.getElementById("col2") ); // Verschiebung nach links
  var heightLogin = getDivHeight( document.getElementById("rechtslogin") ); // Verschiebung nach oben
  hints.style.width  = widthLogin+"px"; 
//   hints.style.height = heightLogin+"px";
  hints.style.left = (parseInt(hints.style.left) - widthLogin - 1 )+"px";
  hints.style.top =  (parseInt(hints.style.top)  - heightLogin)+"px";
  showIfHidden("alternativlogin");
}

function hideMoreLoginForms()
{
 window.setTimeout(function() {  hideIfShown("alternativlogin"); } , 500 ); // leicht verzoegert ausblenden, sonst nicht klickbar
}

/* END: fuer alternativ-login */
