
/*
Laedt die aehnlichen Artikel in der rechten Vorschau
ArticleAction->doTasks->loadSimilarArticles
*/
function loadSimilarArticles(listBaseUrl){
	//alert(listBaseUrl);
	SimpleAJAXCall (listBaseUrl, loadSimilarArticlesCallback, "GET", null );
}/*
Fuegt den kompletten Response-Text in den similarArticlesContainer ein
Dieser Response-Text beinhaltet die aehnlichen Artikel
Diese werden in das Container-DIV auf der rechten Seite eingefuegt
*/
function loadSimilarArticlesCallback(responseText){
	var parentDiv = document.getElementById("similarArticlesContainer");
	parentDiv.innerHTML = responseText;	
}
/*
Analog in AOMFocus
Diese Funktion dient zum Aufklappen von verborgenen Filter-Elemente
Dabei werden alle Elemente im �bergenene parentDiv ausgewaehlt,
Danach wird angegeben, ab dem weivielten Element die restlichen Elemente eingeblendet werden soll.
Dabei werden die CSS-Klassen der Elemente von displayBlock auf displayNone umgestellt
Zu letzt wird der moreLinkId ("Mehr Treffer") versteht und der lessLinkId ("Weniger Treffer") wird eingeblendet
Die anzahl bestimmt die Elemente, die ein bzw. ausgeblendet werden sollen
*/
function openMetaItems(parentDivId, moreLinkId, lessLinkId, anzahl){
	var parentDiv = document.getElementById(parentDivId);
	if(parentDiv){
		var liElems = parentDiv.getElementsByTagName("li");
		if(liElems){
			for(var i = anzahl; i<liElems.length; i+=1){
				try {
					liElems[i].className="displayBlock";
				} catch(ex){}
			}
			var moreLink = document.getElementById(moreLinkId);
			if(moreLink){
				moreLink.style.display="none";
			}
			var lessLink = document.getElementById(lessLinkId);
			if(lessLink){
				lessLink.style.display="block";
			}
		}
	}
}

/*
Analog in AOMFocus
Diese Funktion dient zum Zuklappen von sichtbaren Filter-Elemente
Funktionsweise siehe openMetaItems
*/
function closeMetaItems(parentDivId, moreLinkId, lessLinkId, anzahl){
	var parentDiv = document.getElementById(parentDivId);
	if(parentDiv){
		var liElems = parentDiv.getElementsByTagName("li");
		if(liElems){
			for(var i = anzahl; i<liElems.length; i+=1){
				try {
					liElems[i].className="displayNone";
				} catch(ex){}
			}
			var moreLink = document.getElementById(moreLinkId);
			if(moreLink){
				moreLink.style.display="block";
			}
			var lessLink = document.getElementById(lessLinkId);
			if(lessLink){
				lessLink.style.display="none";
			}
		}
	}
}/*********************************************************************************************************************************************************** Laden der Filter Elemente und Schnittstelle zur Flash Visualisierung******** Das Flash ruft die Funktionen getCluster() und getTime() auf.***********************************************************************************************************************************************************************//*globale Variablen, die die Ergebnisse der Requests beinhalten*/var clusterState = 0;		//0=keine Cluster verfuegbar, 1= werden gerade berechnet, 2=Cluster sind verfuegbarvar cluster_xml;	//XML Objectvar isTimeAvailable = false;var time_xml;	//XML Text/*** Schnittstelle zu Flash. Wird aufgerufen wenn man auf "Zur Themenuebersicht" klickt, oder bei "viztype=cluster3d"*/function getCluster(isFlash){		if(isFlash){		//console.log("getCluster was called!");	}	if(clusterState == 0){	//Wenn Cluster noch nicht verfuegbar sind		if(!semaCheckCluster && countCheckCluster>0){	//Es wird gerade der Request durchgefuehrt. Und das Flash must das erste checkCluster() abwarten!			document.getElementById("peopleContainer").innerHTML = loading_text;			document.getElementById("locationsContainer").innerHTML = loading_text;			document.getElementById("themeClusterContainer").innerHTML = loading_text;			clusterState = 1;			$.ajax({type: "GET",url: doClusteringUrl,dataType: "text",success: doClusterResponse});	//Clusterbildung ansto�en			if(isFlash){setVizType(false, "cluster3d")};			window.setTimeout("checkCluster()", 6000);	//Pruefen, ob Cluster vorhanden sind.		}else{			//nothing		}	}	else{		//Wenn Clusterbildung fertig ist dann Flash das Erbgebins liefern		if(clusterState == 2){			sendClusterDataToFlash(cluster_xml);		}		//Visualisierungstyp an Server senden.		if(isFlash){setVizType(false, "cluster3d")};	}}/*** Antwort von Request /wissenswelt/flash_cluster.htm?task=doClustering. Hier wird keine Aktion gesetzt.*/function doClusterResponse(){	//nothing}/** Pruefe ob die Cluster schon fertig sind.* Es gibt drei Moeglichkeiten, die der Server retourniert: * 1) FALSE: Die Treffermenge ist >4000, die Cluster wurden noch nicht gebildet.* 2) TRUE: Die Cluster werden gerade berechnet.* 3) NOCLUSTER: Die Treffermenge ist so gering, dass keine Clusterbildung moeglich war.**/var semaCheckCluster = false;	/*soll ein geleichzeitiges Aufrufen der Funktionen verhindern*/var countCheckCluster = 0;	/*zuerst soll das Filter-Element checkCluster() aufrufen.*/function checkCluster(){		countCheckCluster++;		if(!semaCheckCluster){			semaCheckCluster = true;			$.ajax({type: "GET",url: getClusterUrl,dataType: "xml",success: parseClusterResponse});		}}/*Antwort von Request /wissenswelt/flash_cluster.htm?task=getCluster aus checkCluster()*/function parseClusterResponse(data){		var result = $(data).find("result").text();	//Ergebnisse, werden in ein <result/> - Tag gegeben. Wenn nicht, dann sind die Cluster drinnen.		if(data){			if(result == "FALSE"){			//nichts tun, die Cluster wurden noch nicht gebildet			semaCheckCluster = false;			$("#peopleContainer").empty();			$("#locationsContainer").empty();			$("#themeClusterContainer").empty();			$("#peopleContainer").append("<div class=\"filterLoadLink\" onclick=\"getCluster()\;\">"+doload_personen_text+"</div>");			$("#locationsContainer").append("<div class=\"filterLoadLink\" onclick=\"getCluster()\;\">"+doload_orte_text+"</div>");			$("#themeClusterContainer").append("<div class=\"filterLoadLink\" onclick=\"getCluster()\;\">"+doload_themen_text+"</div>");			return;		}		else if(result == "TRUE"){			//die Cluster werden gerade berechnet			semaCheckCluster = false;			document.getElementById("peopleContainer").innerHTML = loading_text;			document.getElementById("locationsContainer").innerHTML = loading_text;			document.getElementById("themeClusterContainer").innerHTML = loading_text;			//setze Cluster auf verfuegbar			cluster_xml = "UNAVAILABLE";			clusterState == 1;			//nochmals probieren			window.setTimeout("checkCluster()", 3000);			return;				}else if(result == "NOCLUSTER"){			//Keine Cluster vorhanden			document.getElementById("peopleContainer").innerHTML = nocluster_personen_text;			document.getElementById("locationsContainer").innerHTML = nocluster_orte_text;			document.getElementById("themeClusterContainer").innerHTML = nocluster_themen_text;			//Flash auch Antwort liefern			cluster_xml = "NOCLUSTER";			semaCheckCluster = false;			clusterState = 2;			sendClusterDataToFlash("NOCLUSTER");		}else{			//Trifft keines zu, dann sind es die Cluster			//als erstes die rechte Leiste fuellen			cluster_xml = data;			semaCheckCluster = false;			clusterState = 2;			generateClusterContainer(data);			//ins Flash geben			sendClusterDataToFlash(data);			return;		}	}}/*** Funktion, die das XML ins Flash uebergibt.*/function sendClusterDataToFlash(cluster){	if(window.visMaskFullState == "true"){		$(cluster).remove("people");		$(cluster).remove("locations");		if($(cluster).xml()){	//wenn keine Cluster gebildet werden konnten			thisMovie("VIZobjectswf").fetchClusterResponse($(cluster).xml());	//Aufruf der Cluster-Funktion im Flash			//console.log("Sent Data to Flash 1!");		}else{			thisMovie("VIZobjectswf").fetchClusterResponse(cluster);	//Aufruf der Cluster-Funktion im Flash			//console.log("Sent Data to Flash 2!");		}	}}/*** Funktion, die aus Cluster-XML, die Filter-Elemente auf der rechten Seite befuellt*/function generateClusterContainer(xml){			var isSelected = false;	//Flag, ob eine Einschraenkung gemacht wurde		$('#themeClusterContainer').empty();	//loesche alle Kind-Knoten	$('#themeClusterContainer').append("<ul></ul>");	//Liste erstellen		$(xml).find("cluster").each(function(index)	{		if(index < 10){	//nur zehn Stueck anzeigen			var url = selectClusterUrl;			var text = $(this).find("name").text();			var shortText = text.substring(0, text.indexOf("/"));	//es wird nur bis zum ersten Trennstrich angezeigt			shortText += "...";			var selected = $(this).find("id").text();			var quantity = $(this).find("quantity").text();			shortText += " ("+quantity+")";			/*Hier wird geprueft, ob das Element ausgewaehlt wurde*/			if($(xml).find("search").find("selected").text() == $(this).find("id").text()){var css="filterSelected"; isSelected = true;}else{var css="";}			/*nur die ersten drei sichbar machen, die anderen verstecken*/			if(index<3){var display = "displayBlock";}else{if($(xml).find("search").find("selected").text()=="-1"){var display = "displayNone";}else{var display = "displayBlock";}}	//nur die ersten drei sichtbar, aber nur wenn nichts ausgewaehlt ist			/*Listenelement zusammenbauen und der Liste anhaengen*/			$('#themeClusterContainer ul').append("<li class=\""+display+"\"><a class=\""+css+"\" title=\"" + text + "\" href=\""+url+selected+"\">"+ shortText +"</a></li>");		}else{			return;		}	});	/*Wenn etwas ausgewaehlt wurde, dann "Auswahl aufheben" hinzufuegen*/	if(isSelected){		$('#themeClusterContainer ul').append("<div class=\"filterDeselect\"><a href=\""+deselectFilterUrl+"\">"+filter_deselect+"</a></div>");	}		$('#peopleContainer').empty();	//loesche alle Kind-Knoten	$('#peopleContainer').append("<ul></ul>");	isSelected = false;	$(xml).find("person").each(function(index)	{		var url = selectPeopleUrl;		var text = $(this).find("name").text();		var selected = $(this).find("id").text();		var quantity = $(this).find("quantity").text();		text += " ("+quantity+")";		if($(this).find("id").text() == $(this).find("selected").text()){var css="filterSelected"; isSelected = true;}else{var css="";}		if(index<3){var display = "displayBlock";}else{if($(this).find("selected").text()=="-1"){var display = "displayNone";}else{var display = "displayBlock";}}	//nur die ersten drei sichtbar, aber nur wenn nichts ausgewaehlt ist		$('#peopleContainer ul').append("<li class=\""+display+"\"><a class=\""+css+"\" title=\"" + text + "\" href=\""+url+selected+"\">"+ text +"</a></li>");	});	if(isSelected){		$('#peopleContainer ul').append("<div class=\"filterDeselect\"><a href=\""+deselectFilterUrl+"\">"+filter_deselect+"</a></div>");	}				$('#locationsContainer').empty();	//loesche alle Kind-Knoten	$('#locationsContainer').append("<ul></ul>");	isSelected = false;	$(xml).find("location").each(function(index)	{		if(index < 10){			var url = selectLocationUrl;			var text = $(this).find("name").text();			var selected = $(this).find("id").text();			var quantity = $(this).find("quantity").text();			text += " ("+quantity+")";			if($(this).find("id").text() == $(this).find("selected").text()){var css="filterSelected"; isSelected = true;}else{var css="";}			if(index<3){var display = "displayBlock";}else{if($(this).find("selected").text()=="-1"){var display = "displayNone";}else{var display = "displayBlock";}}	//nur die ersten drei sichtbar, aber nur wenn nichts ausgewaehlt ist			$('#locationsContainer ul').append("<li class=\""+display+"\"><a class=\""+css+"\" title=\"" + text + "\" href=\""+url+selected+"\">"+ text +"</a></li>");		}else{			return;		}	});	if(isSelected){		$('#locationsContainer ul').append("<div class=\"filterDeselect\"><a href=\""+deselectFilterUrl+"\">"+filter_deselect+"</a></div>");	}			return;}/*** Schnittstelle zu Flash. Wird aufgerufen wenn auf "Zur Zeitvisualierung" geklickt wird, oder bei "viztype=timerange3d"*/function getTime(isFlash){	if(isFlash){	//console.log("getTime was called!");	}	if(!isTimeAvailable){		$.ajax({type: "GET", url: getTimeUrl, dataType: "text", success: callbackTimeResponse});	}else{	//Daten schon vorhanden, direkt an Flash schicken		thisMovie("VIZobjectswf").fetchTimeResponse(time_xml);		setVizType(false, "timerange3d");	}}/* Antwort von /wissenswelt/flash_time.htm?task=getTime -> getTime()* Die Antwort wird direkt ins Flash geschickt.*/function callbackTimeResponse(xml){	time_xml = xml;	isTimeAvailable = true;	if(window.visMaskFullState == "true"){		thisMovie("VIZobjectswf").fetchTimeResponse(xml);	//Aufruf der Methode im Flash	}}/*** Setzt den aktuellen Zustand (Cluster oder Zeit) am Server*/function setVizType(isFlash, currentVizType){	if(isFlash){	//console.log("setVizType was called!");	}	if(isFlash){		$.ajax({type: "GET",url: setVizTypeUrl+currentVizType,dataType: "xml",success: callbackVizTypeResponse});	}}function callbackVizTypeResponse(){	//do nothing	return;}/*** Zugriff auf das Flash. Im IE anders.*/function thisMovie(movieName) {		if (navigator.appName.indexOf("Microsoft") != -1) {				return window[movieName];		} else {				return document[movieName];		}}
