function addLoadEvent(func) {
	
	var oldonload = window.onload;
	if(typeof window.onload != "function") window.onload = func;
	else {
	
		window.onload = function() {
		
			oldonload();
			func();
		}
	}
}

function checkIt(string) {

	var detect = navigator.userAgent.toLowerCase();
	var OS,browser,version,total,thestring;
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}

function openPopup(URL, name, width, height, scrollbars) {

	window.open(
				URL
				, name
				, 'toolbar=0,scrollbars=' + (scrollbars ? 1 : 0) + ',location=0,statusbar=0,menubar=0,resizable=0,width=' + width + ',height=' + height + ',left=' + ((screen.width - width)/2) + ',top=' + ((screen.height - height)/2)
			);
}

function toggleImg(imgName, newImg) {

    document.images[imgName].src = newImg;
}

function toggleClass(objElement, cssClass) {

	objElement.className = cssClass;
}

function gotoUserPresentation(uid) {

	document.location = "/userPresentation/?uid=" + uid;
}

function gotoOnConfirm(message, location) {

	if(confirm(message)) document.location = location;
}

function validateTextareaLength(area, counterId, maxLength) {

	if(area.value.length > maxLength) area.value = area.value.substring(0, maxLength);
	else document.getElementById(counterId).innerHTML = maxLength - area.value.length;
}

function requestUserRelation(uid, hideElement) {

	new Ajax.Request("/json/requestUserRelation.php", {
		
		method: 'get',
		parameters: {requestUserRelation: uid},
		onSuccess: function(transport) {

			document.getElementById(hideElement).style.display = 'none';
		}
	});
}

function makeWysiwyg(elementId) {

	tinyMCE.init({
		relative_urls : false,
	    convert_urls : false,
		mode : "exact",
		elements : elementId,
		theme : "advanced",
		plugins : "media" ,
		theme_advanced_buttons1 : "bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink",
		theme_advanced_buttons2 : "fontselect,fontsizeselect",
		theme_advanced_buttons3 : "",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_path_location : "bottom",
		extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]"
	});
}

/* Main menu */

	function toggleSearch() {
	
	  if(document.getElementById("subNavSearch").style.display == 'block') {
	  
	    document.getElementById("subNavLinks").style.display = 'block';
	    document.getElementById("subNavSearch").style.display = 'none';
	  } else {
	  
	    document.getElementById("subNavLinks").style.display = 'none';
	    document.getElementById("subNavSearch").style.display = 'block';
	  }
	}

/* Visibility toggleables */

	function toggleVisibility(containerId) {
		
		Effect.toggle(containerId, 'slide', {duration: 0.07});
	}
	
	function simpleToggleVisibility(containerId) {
		
		var c = document.getElementById(containerId);
		c.style.display = c.style.display == 'none' ? 'block' : 'none';
	}

/* Ajax forms */

	function submitAJAXForm(form, toggleVisibilityOnSuccessId) {
	
		var parameters = new Array(form.elements.length);
		
		for(var i = 0; i < form.elements.length; i++) {
	
			if(form.elements[i].type != "checkbox" || form.elements[i].checked) parameters[form.elements[i].name] = form.elements[i].value;
			
			if(form.elements[i].type != "hidden") {
			
				if(form.elements[i].type == "checkbox") form.elements[i].checked = false;
				else form.elements[i].value = "";
			}
		}
		
		new Ajax.Request(form.action, {
			
			method: form.method,
			parameters: parameters,
			onSuccess: function(transport) {
	
				toggleVisibility(toggleVisibilityOnSuccessId);
			}
		});
		
		return false;
	}

/* Right bar (community bar) */

	function sendRecoveryToEmail() {
	
		new Ajax.Request("/json/sendRecoveryToEmail.php", {
			
			method: 'post',
			parameters: {sendRecoveryToEmail: document.getElementById('sendRecoveryToEmail_email').value},
			onSuccess: function(transport) {
	
				toggleVisibility('sendRecoveryToEmail_form');
				toggleVisibility('sendRecoveryToEmail_success');
			}
		});
		
		return false;
	}

	/* Logged in user info */
	
		function installLoggedInUserInfoUpdater() {
		
			new PeriodicalExecuter(function() {
		
				new Ajax.Request("/json/getLoggedInUserInfo.php", {
					
					method: 'get',
					onSuccess: function(transport) {
			
						/* Reset userInfoBox cache */
						userInfoBoxUid = null;
						userInfoBoxUsersOffset = 0;
						userInfoBoxUsers = new Array();
			
						var json = transport.responseText.evalJSON();
						
						var gb = document.getElementById("numUserGuestbookUnreadEntries");
						gb.innerHTML = json.numUserGuestbookUnreadEntries;
						gb.className = json.numUserGuestbookUnreadEntries > 0 ? 'gb-displaying' : '';
						
						var mail = document.getElementById("numUserMailboxUnreadMails");
						mail.innerHTML = json.numUserMailboxUnreadMails;
						mail.className = json.numUserMailboxUnreadMails > 0 ? 'mail-displaying' : '';
						
						var rel = document.getElementById("numUserRelationEvents");
						rel.innerHTML = json.numUserRelationEvents;
						rel.className = json.numUserRelationEvents.className > 0 ? 'rel-displaying' : '';
					}
				})
			}, 30);
		}
		
		function updateLoggedInUserNote(textContainer) {
		
			new Ajax.Request("/json/setLoggedInUserNote.php", {
			
				method: 'post',
				parameters: {note: textContainer.value},
				onSuccess: function(transport) {
		
				}
			});
		}
	
	/* User online list */
	
		addLoadEvent(function() {

			var list = document.getElementById('userRelationsOnlineList');
			if(!list) return;
			list = list.childNodes;
			
			for(var i = 0; i < list.length; i++) {
			
				if(list[i].tagName != 'DIV') continue;
			
				var friendId = parseInt(list[i].id.substring(6, list[i].id.length));
				
				if(list[i].id == ('friend' + friendId)) {
				
					list[i].onmouseover = function() {
					
						var thisFriendId = parseInt(this.id.substring(6, this.id.length));
					
						toggleClass(this, 'com-friend-item-active');
						document.getElementById('friend' + thisFriendId + '_icons').style.display = 'block';
					}
					list[i].onmouseout = function() {
					
						var thisFriendId = parseInt(this.id.substring(6, this.id.length));
					
						if(document.getElementById('friend' + thisFriendId + '_writeGuestbook').style.display == 'none' && document.getElementById('friend' + thisFriendId + '_writeMail').style.display == 'none') {
			
							toggleClass(this, 'com-friend-item');
							document.getElementById('friend' + thisFriendId + '_icons').style.display = 'none';
						}
					}
				}
			}
		});
		
		function toggleUserRelationsOnlineListUserGuestbookBox(uid) {
		
			toggleVisibility('friend' + uid + '_writeGuestbook');
			document.getElementById('friend' + uid + '_writeMail').style.display = 'none';
		}
		
		function toggleUserRelationsOnlineListUserMailBox(uid) {
		
			toggleVisibility('friend' + uid + '_writeMail');
			document.getElementById('friend' + uid + '_writeGuestbook').style.display = 'none';
		}

/* User info box */

	var userInfoBoxUid = null;
	var userInfoBoxUsersOffset = 0;
	var userInfoBoxUsers = new Array();
	
	function showUserInfoBox(uid, myEvent) {
	
		var d = document.getElementById('userInfoBox');	
		
		if(d && document.body != null && checkIt('mac') == 0) {
	
			/* Update position */
			d.style.top = eval(myEvent.clientY - 26 + document.documentElement.scrollTop + document.body.scrollTop) + 'px';
			d.style.left = eval(myEvent.clientX + 10) + 'px';
				
			/* Make box visible */
			d.style.display = 'block';
			
			if(userInfoBoxUid != uid) {
			
				userInfoBoxUid = uid;
				var found = false;
			
				/* See if cached */
				for(var i = 0; i < userInfoBoxUsers.length; i++) if(userInfoBoxUsers[i].id == uid) {
	
					found = true;
	
					var json = userInfoBoxUsers[i];
					document.getElementById("userBoxInfoTop").innerHTML = json.username + ", (" + (json.male ? "M" : "K") + json.age + ")";
					document.getElementById("userBoxInfoTop").setAttribute("class", "member-title-stat-" + json.statusLevel + "-b");
					document.getElementById("userBoxInfoTop").setAttribute("className", "member-title-stat-" + json.statusLevel + "-b");
					document.getElementById("userBoxInfoImage").src = json.image;
					document.getElementById("userBoxInfoNote").innerHTML = json.note;
				}
				if(!found) {
			
					new Ajax.Request("/json/getUserInfoBoxInfo.php", {
				
						method: 'get',
						parameters: {uid: uid},
						onSuccess: function(transport) {
		
							var json = transport.responseText.evalJSON();
							
							if(userInfoBoxUid != json.id) return;
							
							document.getElementById("userBoxInfoTop").innerHTML = json.username + ", (" + (json.male ? "M" : "K") + json.age + ")";
							document.getElementById("userBoxInfoTop").setAttribute("class", "member-title-stat-" + json.statusLevel + "-b");
							document.getElementById("userBoxInfoTop").setAttribute("className", "member-title-stat-" + json.statusLevel + "-b");
							document.getElementById("userBoxInfoImage").src = json.image;
							document.getElementById("userBoxInfoNote").innerHTML = json.note;
							
							userInfoBoxUsers[userInfoBoxUsersOffset++] = json;
						}
					});
				}
			}
		}
	}
	
	function hideUserInfoBox() {
	
		var d = document.getElementById('userInfoBox');
		
		userInfoBoxUid = null;
		d.style.display = 'none';
	}

/* Article */

	var articlePage = 0;
	
	function showArticlePage(pageNum, totalPages) {
	
		articlePage = pageNum;
	
		document.getElementById('showPreviousArticlePageButton').style.display = pageNum == 0 ? 'none' : 'block';
		document.getElementById('showNextArticlePageButton').style.display = pageNum >= (totalPages - 1) ? 'none' : 'block';
	
		for(var i = 0; i < totalPages; i++) {
		
			var element = document.getElementById('articlePage_' + i);
			var button = document.getElementById('articlePageButton_' + i);
			button.style.color = '#000';
			button.style.fontWeight = 'normal';
			if(i == pageNum) {
	
				// active wont work in ie
				element.style.display = 'block';
			}
			else {
	
				// active wont work in ie
				element.style.display = 'none';
			}
		}
		var current = document.getElementById('articlePageButton_' + pageNum);
		current.style.color = '#c00';
		current.style.fontWeight = 'bold';
	}

/* Articles */

	function showNextArticlePage(totalPages) {
	
		showArticlePage(articlePage + 1, totalPages);
	}
	
	function showPreviousArticlePage(totalPages) {
	
		showArticlePage(articlePage - 1, totalPages);
	}

/* Guestbook */

	function openWriteGuestbookPopup(uid) {
	
		openPopup('/userGuestbook/writeGuestbookPopup.php?uid=' + uid, "writeGuestbook" + uid, 476, 315, false);
	}

/* Mail */

	function openWriteMailPopup(uid) {
	
		openPopup('/userMailbox/writeMailPopup.php?addMailUid=' + uid, "writeMail" + uid, 476, 330, false);
	}

/* User album */

	function openUserAlbumViewImagePopup(uid, iid, width, height) {
	
		openPopup('/userAlbum/viewImagePopup.php?uid=' + uid + '&iid=' + iid, "userAlbumViewImage" + iid, width, height, false);
	}

	function openUserAlbumViewImagesPopup(uid, iid, pageNum) {
	
		openPopup('/userAlbum/viewImagePopup.php?uid=' + uid + '&iid=' + iid + '&pageNum=' + pageNum, "UserAlbum" + iid, 736, 544, false);
	}

/* User blog */

	function openUserBlogImageUploadWindow(uid, beid) {
	
		openPopup('/userBlog/uploadImagePopup.php?uid=' + uid + '&beid=' + beid, "uploadBlogImage" + beid, 493, 500, true);
	}

/* Image gallery */

	function openImageGalleryPopup(igid, pageNum) {
		openPopup('/imageGallery/gallery_popup.php?igid=' + igid + '&pageNum=' + pageNum, "imageGallery" + igid, 990,770, false);
		//openPopup('/imageGallery/gallery_popup.php?igid=' + igid + '&pageNum=' + pageNum, "imageGallery" + igid, 736, 674, false);
	}
	
	function openLinkedImageGalleryImage(igiid) {
		openPopup('/imageGallery/linkedImageGalleryImage_popup.php?igiid=' + igiid, "linkedImageGalleryImage" + igiid, 735, 552, false);
	}

/* User settings */

	function openUploadUserImagePopup() {
	
		openPopup('/userSettings/scaleImagePopup.php', "userImageUpload", 477, 500, false);
	}

/* Emoticon popup */

	var emoticonTarget;

	function initEmoticonTargets() {
	
		var textareas = document.getElementsByTagName('textarea');

		for(var i = 0; i < textareas.length; i++) {

			var oldOnclick = textareas[i].onclick;
			textareas[i].onclick = function() {
				
				if(typeof oldOnclick == 'function') oldOnclick();
				
				/* The document that contains this global variable is the top parent */
				var root = window.opener ? window.opener : window;
				while(root.opener) root = root.opener;
			
				root.emoticonTarget = this;
			}
		}
	}

	addLoadEvent(initEmoticonTargets);

	function openEmoticonPopup() {
	
		openPopup('/community/emoticonPopup.php', 'emoticonPopup', 477, 200, false);
	}

