		///////////////////	
		//Globale Variablen
		///////////////////
		var is_activated = 0; //0 = möglichkeit marker zu setzen deaktiviert, 1 = marker kann gesetzt werden
		var edit_is_activated = 0; //0 = möglichkeit marker zu löschen deaktiviert, 1 = edit funktion eingeschaltet
		var friendInfo_is_activated = 0; //0 = player card wird nicht angezeigt, 1 = player card wird angezeigt
		var deletebox_is_activated = 0; //0 = markerEditOptions ist sichtbar, 1 = markerEditOptions ist versteckt
		
		var positionX = 0; //initialwert für die position des links auf der x-achse
		var positionY = 0; //initialwert für die position des links auf der y-achse
		var maxWidth = 425; //maximaler wert für die x-achse
		var maxHeight = 340; //maximaler wert für die y-achse
		var hideMarkersTimer = 0; //initialwert für den timeout zum ausblenden der marker
		
		var edit_allowed_ids = new Array(); //array mit user_ids dessen links bearbeitet werden können

		var markerHolder = null;
		var friendMarker = null;
		var imageMarker = null;
		
		var friendList = null;
		var abbrechenHolder = null;
		
		var markerEditOptions = null;
		var bearbeitenAbbrechenHolder = null;
		var markerEditRights = null;
		
		// VARIABLEN FESTLEGEN		
		function init_imagelinks_lib()
		{
			markerHolder = document.getElementById('markerHolder'); //div der alle friendMarker beinhaltet
			friendMarker = document.getElementById('friendMarker'); //div der den imageMarker beinhaltet
			imageMarker = document.getElementById('imageMarker'); //image das die markierung darstellt
			
			friendList = document.getElementById('friendsListHolder'); //div mit der liste von freunden die verlinkt werden k?nnen
			abbrechenHolder = document.getElementById('abbrechenHolder'); //span der den marker-setzen-abbrechen link beinhaltet
			
			markerEditOptions = document.getElementById('markerEditOptions'); //div der den löschen link beinhaltet
			bearbeitenAbbrechenHolder = document.getElementById('bearbeitenAbbrechenHolder'); //span der den bearbeiten-abbrechen link beinhaltet
			markerEditRights = document.getElementById('markerEditRights'); //div mit der information ob ein marker bearbeitet werden kann
			
		}
			
			
		//////////////////////	
		//START: ALLGEMEINE FUNKTIONEN DIE VERWENDET WERDEN
		//////////////////////
			
			//Position eines Objektes herausfinden
			function getObjectPosition(obj)
			{
					var curleft = curtop = 0;
					
					if (obj.offsetParent) {
						curleft = obj.offsetLeft
						curtop = obj.offsetTop
						while (obj = obj.offsetParent) {
							curleft += obj.offsetLeft
							curtop += obj.offsetTop
						}
					}
					
					return [curleft,curtop]
			}
			
			//?berpr?fen ob ein wert in einem array enthalten ist (in_array existiert leider nicht für javascript)
			Array.prototype.contains = function(obj) {
			     var i, listed = false;
			     for (i=0; i<this.length; i++) {
			       if (this[i] == obj) {
			         listed = true;
			         break;
			         
			       }
			       
			     }
			     return listed;
			   };

			
			//alle elemente nach einer bestimmten bedingung raussuchen (zB nach type order class)
			function getElementsByCondition(condition,container){
				container = container||document;
				var all = container.all||container.getElementsByTagName('*');
				var arr = []
				for(var k=0;k<all.length;k++)
				{
				var elm = all[k]
				if(condition(elm,k))
				arr[arr.length] = elm
				}
				return arr
			}
			
			
			
		//////////////////////	
		//ENDE : ALLGEMEINE FUNKTIONEN
		//////////////////////
			
			
			
			
		//////////////////////	
		//START: FUNKTIONEN ZUM VERFOLGEN DER MAUSPOSITION
		//////////////////////						
			

			//Position des Mauszeigers mitverfolgen FUNKTION
			function setCords(e)
			{
			    x = (document.all) ? window.event.clientX-2+document.documentElement.scrollLeft : e.pageX;
			    y = (document.all) ? window.event.clientY-2+document.documentElement.scrollTop : e.pageY;
				
				if(friendInfo_is_activated==1)
				{
					friendInfo.style.display='block';
					friendInfo.style.left=((x-friendMarkerPositionLeft)+20)+"px";
					friendInfo.style.top=((y-friendMarkerPositionTop)-10)+"px";
					
				}

			}
			
			//Position des Mauszeigers mitverfolgen EVENT
			document.onmousemove = setCords;
			
			
			//Koordinaten herausfinden, Marker setzen, Freundesliste anzeigen
			function getCords(obj)
			{

				if(is_activated==1){
					
					picturePosition=getObjectPosition(obj);
					curleft=picturePosition[0]+1;
					curtop=picturePosition[1]+1;
					
					
					positionX = x;
					positionY = y;
					
					
					positionX = x-curleft;
					positionY = y-curtop;

					//daten im input anzeigen (oben auskommentiert)
				    //document.getElementById('cordsHolder').value="x: " + x + "  y: " + y + "  curleft: " + curleft + "  curtop: "+ curtop;
				    
				    //den Marker an die ausgewählte Position setzen
				    
				    if(positionX>maxWidth){
				    	positionX=maxWidth;
				    }
				    
				    if(positionY>maxHeight){
				    	positionY=maxHeight;
				    }
				    
				    //friendMarker an geklickter Position der Maus anzeigen
				    friendMarker.className='friendLinkOnImage';
				    friendMarker.style.left=positionX+"px";
				    friendMarker.style.top=positionY+"px";
				    
				    //Liste der Freunde anzeigen
				    friendList.style.display="block";
				    friendList.style.left=positionX+50+"px";
				    friendList.style.top=positionY+28+"px";
				    
				    
			    }
			    
			}
			

		//////////////////////	
		//ENDE : FUNKTIONEN ZUM MITVERFOLGEN DER MAUS
		//////////////////////			


	

		//////////////////////	
		//START : FUNKTIONEN ZUM FESTLEGEN DER MARKERPOSITION
		//////////////////////

			// Marker an Cursor h?ngen
			function activateFriendMarker()
			{
				stopEdit();
				
				abbrechenHolder.style.display='inline';
				markerHolder.className="markerHolder cursorMarker";
				is_activated=1;
				
			}
			
			// Marker abbrechen
			function stopMarker()
			{
				abbrechenHolder.style.display='none';
				markerHolder.className="markerHolder";
				is_activated=0;
			}
									
			// friend liste abbrechen
			function abortFriendPosition()
			{
				document.getElementById('friendsListHolder').style.display='none';
				friendMarker.className='friendLinkOnImage_hidden';
			}
									
			//Freund aus Liste ausgewählen, marker gesetzt, neuen marker erstellt um weitere freunde zu verlinken
			function chooseFriend(uid, from_uid, PID, cid)
			{
				//Liste der Freunde ausblenden
				friendList.style.display="none";
				
				//friendmarker zum freundeslink machen						
				friendMarker.id='u'+uid;
				friendMarker.className='friendLinkOnImage_hidden';
				
				friendMarker.onmouseover = function() {
				  showFriendInfo(uid);
				}
				
				friendMarker.onmouseout = function() {
				  hideFriendInfo();
				}
				
				friendMarker.onclick = function() {
				  visitFriend(uid);
				}
				
				imageMarker.className='imageMarker';
				imageMarker.id='imageMarker_u'+uid;
				
				//neuen friendmarker div und image erstellen
				var newFriendMarkerHolder = document.createElement("div");
				var newFriendMarkerImage = document.createElement("img");
				newFriendMarkerHolder.appendChild(newFriendMarkerImage);
				
				//neuen friendmarker div class erstellen und zuweisen
				var newFriendMarkClass = document.createAttribute("class");
				newFriendMarkClass.nodeValue = "friendMarker";
				newFriendMarkerHolder.setAttributeNode(newFriendMarkClass);
				
				//neuen friendmarker image src erstellen und zuweisen
				var newFriendMarkerImageSrc =  document.createAttribute("src");
				newFriendMarkerImageSrc.nodeValue = "_images/marker.gif";
				newFriendMarkerImage.setAttributeNode(newFriendMarkerImageSrc);
				newFriendMarkerImage.id='imageMarker';
				
				//neuen friendmarker id erstellen und zuweisen
				var newFriendMarkerHolderId =  document.createAttribute("id");
				newFriendMarkerHolderId.nodeValue = "friendMarker";
				newFriendMarkerHolder.setAttributeNode(newFriendMarkerHolderId);
				
				
				//neuen friendmarker dem div zuordnen
				var Ausgabebereich = document.getElementById("markerHolder");
				Ausgabebereich.appendChild(newFriendMarkerHolder);
			

				
				//neuen friendmarker variable setzen
				if(newFriendMarkerHolder){
					friendMarker = newFriendMarkerHolder;
					imageMarker = newFriendMarkerImage;
				}
				
				//AJAX: Position und id speichern
				saveFriendPosition(uid, from_uid, positionX, positionY, PID, cid);
				
				//AJAX: Players Card des gesetzten links auslesen
				getPersonById(uid);
				
				//marker abbrechen
				stopMarker();
				
				//Link-Entfernen einblenden
				var linkEntfernen = document.getElementById("linkEntfernenHolder");
				linkEntfernen.style.display="inline";
				
			}

			
			// Position speichern und link ausblenden
			function saveFriendPosition(uid, from_uid, x, y, PID, cid)
			{
				//link ausblenden
				document.getElementById('friendLinkU'+uid).style.display='none';
				
				//rechte zum editieren setzen
				i=edit_allowed_ids.length;
				i++;
				edit_allowed_ids[i]=uid;
				
				//ajax: LINK SPEICHERN
				if (site_type == 'club') {
					saveClubImageLink(uid, from_uid, x, y, PID, cid);
				} else
				if (site_type == 'profile') {
					saveFriendImageLink(uid, from_uid, x, y, PID);
				} else	{
					alert('imagelinks: internal error => unknown site_type'); 
				} 
				
			}

			

			
			
		//////////////////////	
		//ENDE : FUNKTIONEN ZUM FESTLEGEN DER MARKERPOSITION
		//////////////////////						


		//////////////////////	
		//START : FUNKTIONEN ZUM ANZEIGEN DER USER INFORMATION UND BESUCHEN DES USERS (beim aktivierten editieren wird die besuchfunktion verwendet zum anzeigen der editieroptionen)
		//////////////////////							
			
			// freund anzeigen und position festlegen um an maus zu hängen (setCoords)
			function showFriendInfo(uid)
			{
				friendInfo_is_activated=1;
				markerHolder.className="markerHolder";
				is_activated=0;
				
				friendMarkerPosition=getObjectPosition(markerHolder);
				
				friendMarkerPositionLeft=friendMarkerPosition[0];
				friendMarkerPositionTop=friendMarkerPosition[1];
				
				if(edit_is_activated==0)
				{
					friendInfo=document.getElementById('friendInfoU'+uid);
				}
				else if(deletebox_is_activated!=1)
				{
					friendInfo=getEditRights(uid);
				}
				else
				{
					friendInfo_is_activated=0;
				}
				
			}
			
			
			
			// freunde playercard verstecken
			function hideFriendInfo()
			{
				friendInfo_is_activated=0;
				friendInfo.style.display='none';
				
				
				if(abbrechenHolder.style.display=='inline')
				{
					markerHolder.className="markerHolder cursorMarker";
					is_activated=1;
				}
				
			}
			
			// freund besuchen / wenn edit_is_activated==1 dann link bearbeiten
			function visitFriend(uid)
			{
				if(edit_is_activated==1)
				{
					if(edit_allowed_ids.contains(uid)==true)
					{
						deletebox_is_activated=1;
						friendInfo_is_activated=0;
						
						markerEditRights.style.display='none';
						markerEditOptions.style.display='block';
						document.getElementById('friendInfoU'+uid).style.display='none';
						
						delete_id=uid;

						markerEditOptions.style.left=((x-friendMarkerPositionLeft)+20)+"px";
						markerEditOptions.style.top=((y-friendMarkerPositionTop)-10)+"px";
					}
					
				}else
				{
					window.location.href='profile_personaldata.php?uid='+uid;
				}
				
			}
			
		//////////////////////	
		//ENDE : FUNKTIONEN ZUM ANZEIGEN DER USER INFORMATION
		//////////////////////	
		
		//////////////////////	
		//START : FUNKTIONEN ZUM EDITIEREN VON MARKERN
		//////////////////////												
			
			//Überprüfen ob der user den link bearbeiten darf und die information im markerEditRights div anzeigen
			function getEditRights(uid)
			{
				
				editPersonName=document.getElementById('usernameU'+uid).innerHTML;
				editPersonName=editPersonName.replace(/<br\/?\s*>/, " ");
				editPersonName=editPersonName.replace("<BR>", " ");
				
				if(edit_allowed_ids.contains(uid)==true)
				{
					markerEditRights.innerHTML=editPersonName+'<hr style="margin:0px;" />Zum bearbeiten linke Maustaste klicken.';
					return markerEditRights;
				}
				else
				{
					markerEditRights.innerHTML=editPersonName+'<hr style="margin=0px;" />Du kannst nur von dir gesetzte Links oder auf dich verweisende Links entfernen.';
					return markerEditRights;
				}
			}
			
			//EDITIEREN 
			function activateFriendMarkerEdit()
			{
				edit_is_activated=1;
				stopMarker();
				abortFriendPosition();
				
				bearbeitenAbbrechenHolder.style.display='inline';			
				//markerHolder.className="markerHolder cursorMarkerEdit";
			}
			
			//editieren optionen abbrechen
			function hideEditOptions()
			{
				markerEditOptions.style.display='none';
				deletebox_is_activated=0;
			}
			
			//editieren abbrechen
			function stopEdit()
			{
				bearbeitenAbbrechenHolder.style.display='none';
				markerEditOptions.style.display='none';
				
				markerHolder.className="markerHolder";
				
				edit_is_activated=0;
				deletebox_is_activated=0;
			}
			
			//link löschen
			function deleteMarker(PID)
			{
				$('u'+delete_id).style.display='none';
				$('u'+delete_id).id="deleted";							
				
				if($('friendLinkU'+delete_id))
				{
					$('friendLinkU'+delete_id).style.display='inline';
				}
				
				//AJAX: delete link
				if (site_type == 'club') {
					deleteClubImageLink(delete_id, PID);
					checkLastClubImageLink(PID);
				} else
				if (site_type == 'profile') {
					deleteFriendImageLink(delete_id, PID);
					checkLastFriendImageLink(PID);
				} else
				{
					alert('imagelinks: internal error => unknown site_type'); 
				} 
				hideEditOptions();
			}
			
			
			
			
			
		//////////////////////	
		//START : FUNKTIONEN UM ALLE MARKER EIN- UND AUSZUBLENDEN
		//////////////////////							
			
			//alle marker anzeigen / ausblenden
			function showMarkers(doWhat){
				
				
				clearTimeout(hideMarkersTimer); //timeout löschen um doppeltes verstecken zu vermeiden
				
				//wenn marker sichtbar -> marker verstecken
				if(doWhat=='show')
				{
					getElementsByCondition(
							function(el){
								if(el.className=='friendLinkOnImage_hidden'&&el.id!='friendMarker'){
									el.className='friendLinkOnImage';
								}
								
							});
				}
				
				//wenn marker versteckt -> marker sichtbar
				if(doWhat=='hide')
				{
					getElementsByCondition(
							function(el){
								if(el.className=='friendLinkOnImage'&&el.id!='friendMarker'){
									el.className='friendLinkOnImage_hidden';
								}
								
							});							
				}
				
			}
			
			//funktion zum verstecken der marker bei onmouseout mit timeout um flackern zu verhindern
			function hideMarkers(){

				clearTimeout(hideMarkersTimer); //timeout löschen um doppeltes verstecken zu vermeiden
				doWhat='hide';
				hideMarkersTimer=setTimeout("showMarkers('"+doWhat+"')", 1000);
				
			}
			
			
		//////////////////////	
		//ENDE : FUNKTIONEN UM ALLE MARKER EIN- UND AUSZUBLENDEN
		//////////////////////
