<!--

/****
**	Function: preloadImages()
**  -- preloads images
****/
function preloadImages() {
	var Picture;
	for (var i=0;i<preloadImages.arguments.length;i++) {
		Picture = new Image();
		Picture.src = preloadImages.arguments[i];
	}
}


/****
**	Function: removePageElement()
**  -- removes an HTML element on the page
****/
function removePageElement(elementid) {
	// remove if it exists
	if ($(elementid)) {
		Element.remove($(elementid));
	}
}


/****
**	Function: deleteStatus()
**  -- deletes a statuspost
****/
function deleteStatus(statusid) {
	// popup message to confirm it
	var statusDelete = confirm("Status löschen?");
	
	// delete status
	if (statusDelete==true) {
		// check if statusid is not empty
		if (statusid) {
			// request
			new Ajax.Request('/show/portal/method/delete/id/'+statusid+'/', {
				onComplete: function(transport) {
					if (transport.status == 200) {
						// remove status page element
						if ($('statusitem'+statusid)) {
							new Effect.DropOut('statusitem'+statusid);
						}
					} else {
						// show error message
						new Ajax.Request('/show/portal/method/error/id/6/', {
							method: 'get',
							onComplete: function(transport) {
								facebox.reveal(transport.responseText);
							}
						});
					}
				}
			});
		}
	}
}


/****
**	Function: deleteStatuscomment()
**  -- deletes a statuscomment
****/
function deleteStatuscomment(statuscommentid) {
	// popup message to confirm it
	var statusDelete = confirm("Statuskommentar löschen?");
	
	// delete status
	if (statusDelete==true) {
		// check if statusid is not empty
		if (statuscommentid) {
			// request
			new Ajax.Request('/show/portal/method/deletecomment/id/'+statuscommentid+'/', {
				onComplete: function(transport) {
					if (transport.status == 200) {
						// remove status page element
						if ($('statuscomments-entry'+statuscommentid)) {
							new Effect.DropOut('statuscomments-entry'+statuscommentid);
						}
					} else {
						// show error message
						new Ajax.Request('/show/portal/method/error/id/7/', {
							method: 'get',
							onComplete: function(transport) {
								facebox.reveal(transport.responseText);
							}
						});
					}
				}
			});
		}
	}
}


/****
**	Function: deleteBlogcomment()
**  -- deletes a blogcomment
****/
function deleteBlogcomment(blogcommentid) {
	// popup message to confirm it
	var commentDelete = confirm("Kommentar zum Beitrag löschen?");
	
	// delete status
	if (commentDelete==true) {
		// check if statusid is not empty
		if (blogcommentid) {
			// request
			new Ajax.Request('/show/blog/method/deletecomment/id/'+blogcommentid+'/', {
				onComplete: function(transport) {
					if (transport.status == 200) {
						// remove status page element
						if ($('blogcommentsentry_'+blogcommentid)) {
							new Effect.DropOut('blogcommentsentry_'+blogcommentid);
						}
					} else {
						// show error message
						new Ajax.Request('/show/blog/method/error/id/5/', {
							method: 'get',
							onComplete: function(transport) {
								facebox.reveal(transport.responseText);
							}
						});
					}
				}
			});
		}
	}
}


/****
**	Function: deleteGuestbookEntry()
**  -- deletes a guestbook entry
****/
function deleteGuestbookEntry(guestbookid) {
	// popup message to confirm it
	var guestbookDelete = confirm("Gästebucheintrag löschen?");
	
	// delete status
	if (guestbookDelete==true) {
		// check if statusid is not empty
		if (guestbookid) {
			// request
			new Ajax.Request('/show/members/method/guestbookdelete/id/'+guestbookid+'/', {
				onComplete: function(transport) {
					if (transport.status == 200) {
						// remove status page element
						if ($('guestbookentry_'+guestbookid)) {
							new Effect.DropOut('guestbookentry_'+guestbookid);
						}
					} else {
						// show error message
						new Ajax.Request('/show/members/method/error/id/3/', {
							method: 'get',
							onComplete: function(transport) {
								facebox.reveal(transport.responseText);
							}
						});
					}
				}
			});
		}
	}
}


/****
**	Function: deleteGalleryPicture()
**  -- deletes a gallery picture
****/
function deleteGalleryPicture(picid,page) {
	// popup message to confirm it
	var picDelete = confirm("Bild löschen?");
	
	// delete picture
	if (picDelete==true) {
		// check if picid is not empty
		if (picid) {
			// request
			new Ajax.Request('/show/blog/method/gallerydelete/id/'+picid+'/', {
				onComplete: function(transport) {
					if (transport.status == 200) {
						// reload gallery in facebox
						if ($('facebox-content')) {
							doUpdatePageElement('facebox-content','show/blog/method/gallery/page/'+page+'/','get',1,'');
						}
						
						// reload gallery on page
						if ($('api-gallery')) {
							doUpdatePageElement('api-gallery','/show/blog/method/gallerydetails/','get',0,null,1);
						}
					} else {
						// show error message
						new Ajax.Request('/show/blog/method/error/id/4/', {
							method: 'get',
							onComplete: function(transport) {
								facebox.reveal(transport.responseText);
							}
						});
					}
				}
			});
		}
	}
}


/****
**	Function: reloadOnline()
**  --loads and shows all users who are online atm
****/
function reloadOnline() {
	doUpdatePageElement('whoisonlinemask','/show/portal/method/online/','get',0,null,0);
	window.setTimeout("reloadOnline()",15000);
}


/****
**	Function: reloadNotifications()
**  -- loads and shows all notifications
****/
function reloadNotifications() {
	doUpdatePageElement('notificationdiv','/show/portal/method/notifications/','get');
	window.setTimeout("reloadNotifications()",15000);
}


/****
**	Function: doUpdatePageElement()
**  -- updates a page element with the fetched content from the given URL
****/
function doUpdatePageElement(elementid,url,method,loading,scrollto,pulsate) {
	if (loading==1) {
		// create loading message
		$(elementid).update('\
			<div style="padding:40px;"> \
				<table cellpadding="0" cellspacing="0" border="0" align="center"><tr><td valign="middle" align="left" width="22"><img src="/gfx/loading.555.gif" alt="loading..." border="0" /></td><td valign="middle" align="left">lade Seiteninhalt...</td></tr></table> \
			</div> \
		');
	} else if (loading==2) {
		// only loading circle
		$(elementid).update('<center><img src="/gfx/loading.555.gif" alt="loading..." border="0" /></center>');
	}
	
	// POST method
	if (method=="post") {
		$(url).request({
			onComplete: function(transport) {
				if (transport.status == 200) {
					$(elementid).update(transport.responseText);
					// pulsate
					if (pulsate) {
						Effect.Pulsate(elementid, { pulses:1, duration:0.5 });
					}
					
					// scroll
					if (scrollto && $(scrollto)) {
						Effect.ScrollTo(scrollto,{duration:0.5});
					}
				} else {
					return false;
				}
			}
		});
		
	// GET method
	} else {
		new Ajax.Updater(elementid, url, {
			method: 'get',
			onComplete: function(transport) {
				// pulsate
				if (pulsate) {
					Effect.Pulsate(elementid, { pulses:1, duration:0.5 });
				}
				
				// scroll
				if (scrollto && $(scrollto)) {
					Effect.ScrollTo(scrollto,{duration:0.5});
				}
				
				// error message
				if (transport.status != 200) {
					return false;
				}
			}
		});
	}
}


/****
**	Function: disableForm()
**  -- Die Funktion deaktviert ein Formular
****/
function disableForm(formid,pagelocation) {
	//$(formid).reset();
	window.setTimeout("refreshPage('"+pagelocation+"')",2000);
}


/****
**	Function: refreshPage()
**  -- Die Funktion aktualisiert eine Seite mit der angegebenen Datei
****/
function refreshPage(pagelocation) {
	document.location = pagelocation;
}


/****
**	Function: doUploadImage()
**  -- Die Funktion schickt ein Formular ab und gibt Sie an ein PHP Skript weiter, welches dann den Bild-Upload durchführt
****/
function doSubmitUpload(formid,frameid) {
	// Ziel für das Formular setzen und abschicken
	$(formid).target = frameid;
	$(formid).submit();
	
	// loading
	$$('div.requestButtons').each(function(e){e.hide()});
	$$('div.requestLoader').each(function(e){e.style.display='block'});
}


/****
**	Function: UploadFrame.loaded()
**  -- Die Funktion liest ein Frame aus und gibt dessen Inhalt zurück (Upload)
****/
UploadFrame = {
    loaded : function(id,output,resetelement,uploadelement,uploadhtmlelement) {
		// get content from frame
        var i = document.getElementById(id);
        if (i.contentDocument) {
            var d = i.contentDocument;
        } else if (i.contentWindow) {
            var d = i.contentWindow.document;
        } else {
            var d = window.frames[id].document;
        }
        if (d.location.href == "about:blank") {
            return;
        }
		
		// get callback message
		var callback = d.body.innerHTML;
		var callbackArray = callback.split("|");
		
		// return callback message
		if ($(output)) {
			$(output).update(callbackArray[0]);
			new Effect.Pulsate(output, { pulses:2 });
		}
		
		// reset upload element
		if (resetelement && $(resetelement)) {
			$(resetelement).value = '';
		}
		
		// image upload output
		if (uploadelement && uploadhtmlelement && $(uploadelement) && $(uploadhtmlelement) && callbackArray[1] && callbackArray[2]) {
			// remove old output
			if (callbackArray[2]) {
				removePageElement(callbackArray[2]);
			}
			
			// insert new output
			$(uploadelement).value = callbackArray[1];
			new Insertion.Before(uploadhtmlelement,callbackArray[3]);
		}
		
		// reload gallery on page
		if ($('api-gallery')) {
			doUpdatePageElement('api-gallery','/show/blog/method/gallerydetails/','get',0,null,1);
		}
		
		// remove loading
		$$('div.requestButtons').each(function(e){e.style.display='block'});
		$$('div.requestLoader').each(function(e){e.hide()});
    }
}


/****
**	Function: GalleryUploadFrame.loaded()
**  -- Die Funktion liest ein Frame aus und gibt dessen Inhalt zurück (Galerie-Upload)
****/
GalleryUploadFrame = {
    loaded : function(id,output,resetelement) {
		// get content from frame
        var i = document.getElementById(id);
        if (i.contentDocument) {
            var d = i.contentDocument;
        } else if (i.contentWindow) {
            var d = i.contentWindow.document;
        } else {
            var d = window.frames[id].document;
        }
        if (d.location.href == "about:blank") {
            return;
        }
		
		// get callback message
		var callback = d.body.innerHTML;
		
		// return callback message
		if ($(output)) {
			$(output).update(callback);
			new Effect.Pulsate('callback-API_upload-upload_iframe', { pulses:2 });
		}
		
		// reset upload element
		if (resetelement && $(resetelement)) {
			$(resetelement).value = '';
		}
		
		// reload gallery
		doUpdatePageElement('api-gallery','/show/blog/method/gallerydetails/','get',0,null,1);
		
		// remove loading
		$$('div.requestButtons').each(function(e){e.style.display='block'});
		$$('div.requestLoader').each(function(e){e.hide()});
    }
}


/****
**	Function: APIUploadFrame.loaded()
**  -- Die Funktion liest ein Frame aus und gibt dessen Inhalt zurück (Upload)
****/
APIUploadFrame = {
    loaded : function(id,output,resetelement,uploadelement,uploadhtmlelement) {
		// get content from frame
        var i = document.getElementById(id);
        if (i.contentDocument) {
            var d = i.contentDocument;
        } else if (i.contentWindow) {
            var d = i.contentWindow.document;
        } else {
            var d = window.frames[id].document;
        }
        if (d.location.href == "about:blank") {
            return;
        }
		
		// get callback message
		var callback = d.body.innerHTML;
		var callbackArray = callback.split("|");
		
		// return callback message
		if ($(output)) {
			$(output).update(callbackArray[0]);
			new Effect.Pulsate('APIupload_callback', { pulses:2 });
		}
		
		// reset upload element
		if (resetelement && $(resetelement)) {
			$(resetelement).value = '';
		}
		
		// file upload output
		if (uploadelement && $(uploadelement) && callbackArray[1]) {
			// insert new output
			$(uploadelement).value = callbackArray[1];
		}
		
		// file upload HTML output
		if (uploadhtmlelement && $(uploadhtmlelement) && callbackArray[2]) {
			// insert new output
			$(uploadhtmlelement).update(callbackArray[2]);
		}
		
		// remove loading
		$$('div.requestButtons').each(function(e){e.style.display='block'});
		$$('div.requestLoader').each(function(e){e.hide()});
		
		// hide facebox
		if (callbackArray[3]) {
			facebox.close();
		}
    }
}


/****
**	Function: searchPage()
**  -- this function generates the uri for a search request
****/
function searchPage(url,elementid) {
	if ($F(elementid).trim()!="") {
		// loading
		$$('div.requestButtons').each(function(e){e.hide()});
		$$('div.requestLoader').each(function(e){e.style.display='block'});
		
		// redirect
		document.location = url+'search/'+urlencode($F(elementid))+'/';
	}
}


/****
**	Function: searchAdminPage()
**  -- this function generates the uri for a search request (admin section)
****/
function searchAdminPage(url,elementid) {
	if ($F(elementid).trim()!="") {
		// loading
		$$('div.requestButtons').each(function(e){e.hide()});
		$$('div.requestLoader').each(function(e){e.style.display='block'});
		
		// redirect
		document.location = url+'&search='+urlencode($F(elementid));
	}
}


/****
**	Function: searchProfilePage()
**  -- this function generates the uri for a search request and opens the correct tab on the profile page
****/
function searchProfilePage(userid,elementid) {
	if ($F(elementid).trim()!="") {
		// tabaction
		tabAction('tabelement','tabactive','6','tabcontent','/show/members/method/tabinfo/action/activity/id/'+userid+'/search/'+urlencode($F(elementid))+'/','get',1,'scrolltop',0);
	}
}


/****
**	Function: searchFacebox()
**  -- this function generates the uri for a search request and displays the search result in a facebox
****/
function searchFacebox(elementid) {
	if ($F(elementid).trim()!="") {
		// display in facebox
		doUpdatePageElement('facebox-content','/show/portal/method/markfriends/search/'+urlencode($F(elementid))+'/','get',1);
	}
}


/****
**	Function: postNewStatus()
**  -- this function submits the form and posts a new status
****/
function postNewStatus(element,url) {
	// loading
	$$('div.requestButtons').each(function(e){e.hide()});
	$$('div.requestLoader').each(function(e){e.style.display='block'});
	
	// check string length
	if ($('status_twitter') && $('status_twitter').checked==true) {
		var maxLen = 140;
	} else {
		var maxLen = 300;
	}
	
	// check if string has correct length
	var strL = strlen($F('status_text').trim());
	if (strL>0) {
		if (strL<=maxLen) {
			// request
			$('poststatus').request({
				onComplete: function(transport) {
					if (transport.status == 200) {
						$('poststatus').reset();
						$('remainingstatuschars').update('140');
						doUpdatePageElement(element,url,'get',0,null,1);
					} else {
						// show error message
						new Ajax.Request('/show/portal/method/error/id/1/', {
							method: 'get',
							onComplete: function(transport) {
								facebox.reveal(transport.responseText);
							}
						});
					}
					
					// remove loading
					$$('div.requestButtons').each(function(e){e.style.display='block'});
					$$('div.requestLoader').each(function(e){e.hide()});
				}
			});
		} else {
			// show error message
			new Ajax.Request('/show/portal/method/error/id/2/', {
				method: 'get',
				onComplete: function(transport) {
					facebox.reveal(transport.responseText);
					
					// remove loading
					$$('div.requestButtons').each(function(e){e.style.display='block'});
					$$('div.requestLoader').each(function(e){e.hide()});
				}
			});
		}
	} else {
		// show error message
		new Ajax.Request('/show/portal/method/error/id/3/', {
			method: 'get',
			onComplete: function(transport) {
				facebox.reveal(transport.responseText);
				
				// remove loading
				$$('div.requestButtons').each(function(e){e.style.display='block'});
				$$('div.requestLoader').each(function(e){e.hide()});
			}
		});
	}
}


/****
**	Function: postNewBlogComment()
**  -- this function submits the form and posts a new blogcomment
****/
function postNewBlogComment(formid,element,url) {
	// loading
	$$('div.requestButtons').each(function(e){e.hide()});
	$$('div.requestLoader').each(function(e){e.style.display='block'});
	
	// check if string is not empty
	var strL = strlen($F('api_text').trim());
	if (strL) {
		// request
		$(formid).request({
			onComplete: function(transport) {
				if (transport.status == 200) {
					$(formid).reset();
					doUpdatePageElement(element,url,'get',0,'blogcomment-last',1);
				} else {
					// show error message
					new Ajax.Request('/show/blog/method/error/id/1/', {
						method: 'get',
						onComplete: function(transport) {
							facebox.reveal(transport.responseText);
						}
					});
				}
				
				// remove loading
				$$('div.requestButtons').each(function(e){e.style.display='block'});
				$$('div.requestLoader').each(function(e){e.hide()});
			}
		});
	} else {
		// show error message
		new Ajax.Request('/show/blog/method/error/id/2/', {
			method: 'get',
			onComplete: function(transport) {
				facebox.reveal(transport.responseText);
				
				// remove loading
				$$('div.requestButtons').each(function(e){e.style.display='block'});
				$$('div.requestLoader').each(function(e){e.hide()});
			}
		});
	}
}


/****
**	Function: postNewGuestbookEntry()
**  -- this function submits the form and posts a new guestbook entry
****/
function postNewGuestbookEntry(formid,url) {
	// loading
	$$('div.requestButtons').each(function(e){e.hide()});
	$$('div.requestLoader').each(function(e){e.style.display='block'});
	
	// check if string is not empty
	var strL = strlen($F('guestbook_text').trim());
	if (strL) {
		// request
		$(formid).request({
			onComplete: function(transport) {
				if (transport.status == 200) {
					tabAction('tabelement','tabactive','3','tabcontent',url,'get',1,'scrolltop',0);
				} else {
					// show error message
					new Ajax.Request('/show/members/method/error/id/1/', {
						method: 'get',
						onComplete: function(transport) {
							facebox.reveal(transport.responseText);
						}
					});
				}
				
				// remove loading
				$$('div.requestButtons').each(function(e){e.style.display='block'});
				$$('div.requestLoader').each(function(e){e.hide()});
			}
		});
	} else {
		// show error message
		new Ajax.Request('/show/members/method/error/id/2/', {
			method: 'get',
			onComplete: function(transport) {
				facebox.reveal(transport.responseText);
				
				// remove loading
				$$('div.requestButtons').each(function(e){e.style.display='block'});
				$$('div.requestLoader').each(function(e){e.hide()});
			}
		});
	}
}


/****
**	Function: toggleStatusCommentBox()
**  -- toggles display status for (status)commentary box
****/
function toggleStatusCommentBox(statusid,pagealias,addurl) {
	// hide or show
	if ($('statuscomment-id'+statusid)) {
		Element.remove($('statuscomment-id'+statusid));
	} else {
		// output
		new Insertion.After('status'+statusid, '\
			<form name="statuscomment-id'+statusid+'" id="statuscomment-id'+statusid+'" action="/show/'+pagealias+'/method/addcomment/'+addurl+'" method="post" onsubmit="return false;"> \
				<div class="statuscommentsbox" id="statusbox'+statusid+'"> \
					<div class="r1"><div class="r2"> \
						<div class="sectionheadline">Einen Kommentar verfassen</div> \
						<div class="boxbody"> \
							<input type="hidden" name="statusid" value="'+statusid+'" /> \
							<textarea name="statuscomments_text" id="statuscomments_text'+statusid+'" class="input-textarea" style="background:#fff; width:454px; height:15px;"></textarea> \
						</div> \
					</div></div> \
					<div class="r3"><div class="r4"> \
						<div class="requestButtons"> \
							<div class="btn"><span><span><a href="Javascript:;" onclick="postNewStatusComment(\'statuscomment-id'+statusid+'\',\''+statusid+'\');">Kommentar speichern</a></span></span></div> \
						</div> \
						<div class="requestLoader"> \
							<table cellpadding="0" cellspacing="0" border="0"><tr><td valign="middle" align="left" width="22"><img src="/gfx/loading.555.gif" alt="loading..." border="0" /></td><td valign="middle" align="left">Daten werden bearbeitet...</td></tr></table> \
						</div> \
					</div></div> \
				</div> \
			</form> \
		');
		
		// enable autogrowing textfield
		activateResize('statuscomments_text'+statusid,100);
		if ($('statuscomment-scrollanker'+statusid)) {
			new Effect.ScrollTo('statuscomment-scrollanker'+statusid,{duration:0.5});
		} else if ($('statusitem'+statusid)) {
			new Effect.ScrollTo('statusitem'+statusid,{duration:0.5});
		} else {
			new Effect.ScrollTo('statuscomment-id'+statusid,{duration:0.5});
		}
		
		// focus on textfield
		$('statuscomments_text'+statusid).focus();
	}
}


/****
**	Function: postNewStatusComment()
**  -- this function submits the form and posts a new statuscomment
****/
function postNewStatusComment(formid,statusid) {
	// check if string is not empty
	if ($F('statuscomments_text'+statusid).trim()) {
		// loading
		$$('form#'+formid+' div.requestButtons').each(function(e){e.hide()});
		$$('form#'+formid+' div.requestLoader').each(function(e){e.style.display='block'});
		
		// request
		$(formid).request({
			onComplete: function(transport) {
				if (transport.status == 200) {
					removePageElement(formid);
					removePageElement('statuscommentsbox'+statusid);
					new Insertion.Bottom('status'+statusid,transport.responseText);
					Effect.Pulsate('statuscommentsbox'+statusid, { pulses:1, duration:0.5 });
					new Effect.ScrollTo('statusitem'+statusid,{duration:0.5});
				} else {
					// show error message
					new Ajax.Request('/show/portal/method/error/id/5/', {
						method: 'get',
						onComplete: function(transport) {
							facebox.reveal(transport.responseText);
							
							// remove loading
							$$('div.requestButtons').each(function(e){e.style.display='block'});
							$$('div.requestLoader').each(function(e){e.hide()});
						}
					});
				}
			}
		});
	} else {
		// show error message
		new Ajax.Request('/show/portal/method/error/id/4/', {
			method: 'get',
			onComplete: function(transport) {
				facebox.reveal(transport.responseText);
				
				// remove loading
				$$('div.requestButtons').each(function(e){e.style.display='block'});
				$$('div.requestLoader').each(function(e){e.hide()});
			}
		});
	}
}


/****
**	Function: rateStatus()
**  -- this function likes or dislikes a status
****/
function rateStatus(statusid,type) {
	// loading image
	$('likesbutton'+statusid).update('<img src="/gfx/loading.555.gif" alt="loading..." border="0" />');
	
	// request
	new Ajax.Request('/show/portal/method/rate/type/'+type+'/id/'+statusid+'/showall/1/', {
		method: 'get',
		onComplete: function(transport) {
			removePageElement('statuscomment-id'+statusid);
			removePageElement('statuscommentsbox'+statusid);
			new Insertion.Bottom('status'+statusid,transport.responseText);
			Effect.Pulsate('statuscommentsbox'+statusid, { pulses:1, duration:0.5 });
			
			// replace like button
			if (type=="like") {
				$('likesbutton'+statusid).update('<a href="Javascript:;" onclick="rateStatus(\''+statusid+'\',\'dislike\');" title="Dieser Status gefällt mir nicht"><img src="/gfx/icon-dislike-n.gif" border="0" alt="" onmouseover="interfaceChgBtn(this,\'/gfx/icon-dislike-h.gif\')" onmouseout="interfaceChgBtn(this,\'/gfx/icon-dislike-n.gif\')" /></a>');
			} else {
				$('likesbutton'+statusid).update('<a href="Javascript:;" onclick="rateStatus(\''+statusid+'\',\'like\');" title="Dieser Status gefällt mir"><img src="/gfx/icon-like-n.gif" border="0" alt="" onmouseover="interfaceChgBtn(this,\'/gfx/icon-like-h.gif\')" onmouseout="interfaceChgBtn(this,\'/gfx/icon-like-n.gif\')" /></a>');
			}
		}
	});
}


/****
**	Function: blograting()
**  -- this function submits the rating for a blogpost
****/
function blograting(blogid,rating) {
	// check if string is not empty
	if (blogid && rating) {
		doUpdatePageElement('blogratingdiv','/show/blog/method/rating/id/'+blogid+'/value/'+rating+'/','get',2,null,1);
	}
}


/****
**	Function: selectCollectionSystem()
**  -- this function selects the system for the user's collection 
****/
function selectCollectionSystem(element,value) {
	// enter the collection system ID into the hidden field
	if (value) {
		$('collection_systemid').value=value;
	}
	
	// select system
	$$('li.collectionsystemsitem').each(function(e) {
		e.removeClassName('collectionsystemsitem_selected');
	});
	$(element).addClassName('collectionsystemsitem_selected');
}


/****
**	Function: addCollectionItem()
**  -- this function submits the form and adds a new collection item to the database and handles the GUI operations
****/
function addCollectionItem(formid) {
	// check if string is not empty
	if ($F('autocomplete').trim() && $F('collection_systemid')!=0) {
		// loading
		$$('div.requestButtons').each(function(e){e.hide()});
		$$('div.requestLoader').each(function(e){e.style.display='block'});
		
		// request
		$(formid).request({
			onComplete: function(transport) {
				if (transport.status == 200) {
					// reset GUI and form fields
					$('autocomplete').value = '';
					$('autocomplete').focus();
					
					// select system
					if (!$('remember_plattform').checked) {
						$('collection_systemid').value = 0;
						$$('li.collectionsystemsitem').each(function(e) {
							e.removeClassName('collectionsystemsitem_selected');
						});
					}
					
					// update sidebar
					doUpdatePageElement('collectionsystems_sidebar','/show/profile/method/updatecollectionsystems/','get',1,null,1);
					
					// message output
					$('addcollection_callback').update(transport.responseText);
					Effect.Pulsate('addcollection_callback', { pulses:1, duration:0.5 });
					Effect.Fade('callback-message', { duration:3.0 });
				} else {
					// show error message
					new Ajax.Request('/show/profile/method/error/id/2/', {
						method: 'get',
						onComplete: function(transport) {
							facebox.reveal(transport.responseText);
						}
					});
				}
				
				// remove loading
				$$('div.requestButtons').each(function(e){e.style.display='block'});
				$$('div.requestLoader').each(function(e){e.hide()});
			}
		});
	} else {
		// show error message
		new Ajax.Request('/show/profile/method/error/id/1/', {
			method: 'get',
			onComplete: function(transport) {
				facebox.reveal(transport.responseText);
			}
		});
	}
}


/****
**	Function: deleteCollectionItem()
**  -- this function deletes an item from the user's collection and handles the GUI operations
****/
function deleteCollectionItem(itemid) {
	// popup message to confirm it
	var collectionitemDelete = confirm("Sammlungsstück löschen?");
	
	// delete collection item
	if (collectionitemDelete==true) {
		// check if string is not empty
		if (itemid) {
			// request
			new Ajax.Request('/show/profile/method/removecollection/id/'+itemid+'/', {
				onComplete: function(transport) {
					if (transport.status == 200) {
						// success
						if (transport.responseText=="1") {
							// remove entry from list
							new Effect.DropOut('collectionlist_entry'+itemid);
							
							// update sidebar
							doUpdatePageElement('collectionsystems_sidebar','/show/profile/method/updatecollectionsystems/','get',1,null,1);
						} else {
							// show error message
							new Ajax.Request('/show/profile/method/error/id/3/', {
								method: 'get',
								onComplete: function(transport) {
									facebox.reveal(transport.responseText);
								}
							});
						}
					} else {
						// show error message
						new Ajax.Request('/show/profile/method/error/id/3/', {
							method: 'get',
							onComplete: function(transport) {
								facebox.reveal(transport.responseText);
							}
						});
					}
				}
			});
		}
	}
}


/****
**	Function: getBlogpostPreview()
**  -- this function generates the preview for a blogpost
****/
function getBlogpostPreview(formid) {
	if ($(formid)) {
		$(formid).request({
			onComplete: function(transport) {
				if (transport.status == 200) {
					facebox.reveal(transport.responseText);
				} else {
					// show error message
					new Ajax.Request('/show/profile/method/error/id/3/', {
						method: 'get',
						onComplete: function(transport) {
							facebox.reveal(transport.responseText);
						}
					});
				}
			}
		});
	}
}


/****
**	Function: openFacebox()
**  -- this function opens a facebox
****/
function openFacebox(url) {
	// show facebox
	new Ajax.Request(url, {
		method: 'get',
		onComplete: function(transport) {
			facebox.reveal(transport.responseText);
		}
	});
}


/****
**	Function: formRequestAJAX()
**  -- this function submits the form and manages the related output
****/
function formRequestAJAX(formid,refresh_location) {
	// internal variables for processing
	var loading = true;
	
	// check if there's already an output message and delete it
	if ($('callback-message')) {
		Element.remove($('callback-message'));
	}
	
	// display loading message
	if (loading) {
		// get elements with buttons class name and set display to none
		$$('div.requestButtons').each(function(e) {
			e.style.display = 'none';
		});
		
		// get elements with loader class name and set display to block
		$$('div.requestLoader').each(function(e) {
			e.style.display = 'block';
		});
	}
	
	// submit form
	$(formid).request({
		onComplete: function(transport) {
			// check HTTP status and display output
			if (transport.status == 200) {
				new Insertion.Before('input-mask', transport.responseText);
			} else if (transport.status == 400) {
				new Insertion.Before('input-mask', '<div class="output-error" id="callback-message"><span><span>Fehler 400: Die Anfrage-Nachricht war fehlerhaft aufgebaut.</span></span></div>');
			} else if (transport.status == 401) {
				new Insertion.Before('input-mask', '<div class="output-error" id="callback-message"><span><span>Fehler 401: Die Anfrage kann nicht ohne gültige Authentifizierung durchgeführt werden.</span></span></div>');
			} else if (transport.status == 403) {
				new Insertion.Before('input-mask', '<div class="output-error" id="callback-message"><span><span>Fehler 403: Die Anfrage wurde mangels Berechtigung des Clients nicht durchgeführt.</span></span></div>');
			} else if (transport.status == 404) {
				new Insertion.Before('input-mask', '<div class="output-error" id="callback-message"><span><span>Fehler 404: Die angeforderte Ressource wurde nicht gefunden.</span></span></div>');
			} else if (transport.status == 408) {
				new Insertion.Before('input-mask', '<div class="output-error" id="callback-message"><span><span>Fehler 408: Request Time-out.</span></span></div>');
			} else if (transport.status == 500) {
				new Insertion.Before('input-mask', '<div class="output-error" id="callback-message"><span><span>Fehler 500: Internal Server Error</span></span></div>');
			} else if (transport.status == 503) {
				new Insertion.Before('input-mask', '<div class="output-error" id="callback-message"><span><span>Fehler 503: Service Unavailable</span></span></div>');
			} else {
				new Insertion.Before('input-mask', '<div class="output-error" id="callback-message"><span><span>Es trat ein unbekannter Verbindungsfehler auf. Bitte versuche es erneut.</span></span></div>');
			}
			
			// delete loading message and display buttons again if callback is not succesful
			if (loading) {
				// get elements with loader class name and set display to block
				$$('div.requestLoader').each(function(e) {
					e.style.display = 'none';
				});
			}
			
			// check if there's a callback message
			if ($('callback-message')) {
				// pulsate message
				new Effect.Pulsate('callback-message', {pulses:2});
				
				// scroll to message
				new Effect.ScrollTo('callback-message',{duration:0.5});
			}
			
			// refresh page
			if (refresh_location.search(/ajaxupdater::.+/) != -1) {
				// AJAX method
				var tempInfo = refresh_location.split("::");
				doUpdatePageElement(tempInfo[1],tempInfo[4],tempInfo[2],tempInfo[3]);
			} else {
				// page reload
				var callback = transport.responseText;
				var callback = callback.search(/output-success.+/);
				if (callback != -1) {
					if (refresh_location!="") {
						disableForm(formid,refresh_location);
					}
				} else {
					// get elements with buttons class name and set display to none
					$$('div.requestButtons').each(function(n) {
						n.style.display = 'block';
					});
				}
			}
		}
	});
}


/****
**	Function: faceboxRequestAJAX()
**  -- this function submits the form (in a facebox) and manages the related output
****/
function faceboxRequestAJAX(formid) {
	// internal variables for processing
	var loading = true;
	
	// display loading message
	if (loading) {
		// get elements with buttons class name and set display to none
		$$('div#facebox div.requestButtons').each(function(e) {
			e.style.display = 'none';
		});
		
		// get elements with loader class name and set display to block
		$$('div#facebox div.requestLoader').each(function(e) {
			e.style.display = 'block';
		});
	}
	
	// submit form
	$(formid).request({
		onComplete: function(transport) {
			// check HTTP status and display output
			if (transport.status == 200) {
				facebox.reveal(transport.responseText);
			} else  {
				alert("Error");
			}
		}
	});
}


/****
**	Function: tabAction()
**  -- tabbed browsing (w/ AJAX action)
****/
function tabAction(tabClassName,tabActiveClassName,tabActiveID,elementid,url,method,loading,scrollto,pulsate) {
	// update page element
	doUpdatePageElement(elementid,url,method,loading,scrollto,pulsate);
	
	// apply different styles to the tab controler
	var tabIndex = 1;
	$$('li.'+tabClassName).each(function(tabelement) {
		tabelement.removeClassName(tabActiveClassName);
		if (tabIndex==tabActiveID) {
			tabelement.addClassName(tabActiveClassName);
		}
		tabIndex++;
	});
}


/****
**	Function: switchTab()
**  -- tabbed browsing by just hiding/unhiding div elements (w/o AJAX action)
****/
function switchTab(tabClassName,tabActiveClassName,tabActiveID,elementClass,elementActive) {
	// hide every single view
	$$('div.'+elementClass).each(function(tabview) {
		tabview.style.display = 'none';
	});
	
	// unhide selected view
	if ($(elementActive)) {
		$(elementActive).style.display = 'block';
	}
	
	// apply different styles to the tab controler
	var tabIndex = 1;
	$$('li.'+tabClassName).each(function(tabelement) {
		tabelement.removeClassName(tabActiveClassName);
		if (tabIndex==tabActiveID) {
			tabelement.addClassName(tabActiveClassName);
		}
		tabIndex++;
	});
}


/****
**	Function: checkbox()
**  -- Selektiert oder Deselektiert alle Checkboxen mit einer bestimmten Klasse
****/
function checkbox(method,classname) {
	$$('input.'+classname).each(function(checkbox) {
		if (method=="check") {
			checkbox.checked = true;
		} else if (method=="uncheck") {
			checkbox.checked = false;
		}
	});
}


/****
**	Function: changeMaxLen()
****/
function changeMaxLenStatus(checkbox,elementid) {
	if ($(checkbox).checked==true) {
		$(elementid).value = 140;
	} else {
		$(elementid).value = 300;
	}
}


/****
**	Function: checkInputLength()
****/
function checkInputLength(elementid,maxchars) {
	var strL = strlen($F(elementid));
	maxchars = parseInt($F(maxchars));
	
	if (maxchars) {
		if (strL>maxchars) {
			$(elementid).value = trim($F(elementid).substring(0,maxchars));
			strL = strlen($F(elementid));
		}
		return parseInt(maxchars)-strL;
	} else {
		return strL;
	}
}


/****
**	Function: nurZahlen()
**  -- Nur Zahlen bei Eingabe erlauben
****/
function nurZahlen(el) {
	var val = el.value.replace(/[^0\d]/g, '');
	el.value = val;
}


/****
**	Function: pagingjumpto()
**  -- Spring zu der angegebenen Seite
****/
function pagingJumpTo(filename,hrefmethod,hreftarget,scrollto,realurl) {
	var tempPage = prompt("Zu folgender Seite springen:");
	if (tempPage) {
		if (tempPage.trim()!="") {
			if (realurl) {
				if (hrefmethod=="modalbox") {
					Modalbox.show(filename+'page/'+tempPage+'/');
				} else if (hrefmethod=="pageelement") {
					doUpdatePageElement(hreftarget,filename+'page/'+tempPage+'/','get',1,scrollto);
				} else {
					document.location = filename+'page/'+tempPage+'/';
				}
			} else {
				if (hrefmethod=="modalbox") {
					Modalbox.show(filename+'&page='+tempPage);
				} else if (hrefmethod=="pageelement") {
					doUpdatePageElement(hreftarget,filename+'&page='+tempPage,'get',1,scrollto);
				} else {
					document.location = filename+'&page='+tempPage;
				}
			}
		} else {
			return false;
		}
	} else {
		return false;
	}
}


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


var px = 15; // mehr=schneller
var timer;
function scrollDiv(val,element,achse){
	if (achse=="y") {
		clearTimeout(timer);
		d=document.getElementById(element);
		y=d.scrollTop;
		if(val==1)y-=px;
		if(val==2)y+=px;
		if(y<=d.scrollHeight-d.offsetHeight+px&&y>=0-px){
			d.scrollTop=y;
			timer=setTimeout('scrollDiv('+val+',\''+element+'\',\''+achse+'\')',50);
		}
		if(y<0||y>d.scrollHeight-d.offsetHeight){
			clearTimeout(timer);
		}
	} else if (achse=="x") {
		clearTimeout(timer);
		d=document.getElementById(element);
		x=d.scrollLeft;
		if(val==1)x-=px;
		if(val==2)x+=px;
		if(x<=d.scrollWidth-d.offsetWidth+px&&x>=0-px){
			d.scrollLeft=x;
			timer=setTimeout('scrollDiv('+val+',\''+element+'\',\''+achse+'\')',50);
		}
		if(x<0||x>d.scrollWidth-d.offsetWidth){
			clearTimeout(timer);
		}
	}
}

function interfaceChgBtn(id,srcimg) {
	id.src = srcimg;
}


//-->
