function gotFriends(xml)
{
	var numPerPage = 7;
	
	var friends = getXmlNode(xml,'friends');
	var info = getXmlNode(xml,'info');
	var ownprofile = getAttributeValue(info,'ownprofile') == '1' ? true : false;
	var total = Number(getAttributeValue(info,'total'));
	var offset = Number(getAttributeValue(info,'offset'));
	
	var html = '';
	html += '<a href="javascript:;" onclick="' + (offset > 0 ? 'getFriends(' + (offset - numPerPage) + ');' : '') + '">&lt;</a>';
	html += ' [' + (Math.floor(offset / numPerPage) + 1) + '/' + Math.ceil(total / numPerPage) + '] ';
	html += '<a href="javascript:;" onclick="' + (offset + numPerPage < total ? 'getFriends(' + (offset + numPerPage) + ');' : '') + '">&gt;</a>';
	document.getElementById('friendsNav').innerHTML = html;
	
	html = "";
	for(var i = 0; i < friends.childNodes.length; i++)
	{
		var friend = friends.childNodes[i];
		if(ownprofile)
		{
			var status = getXmlNode(friend,'status');
			var online = getAttributeValue(status,'online') == '1';
			status = getXmlNodeValue(friend,'status');
			var loc = getXmlNodeValue(friend,'location');
			var subloc = getXmlNodeValue(friend,'sublocation');
		}
		
		html += '<div id="friendBox' + getAttributeValue(friend,'id') + '" class="friendBox"' + (ownprofile ? ' onmouseover="handleEnterFriend(event);" onmouseout="handleExitFriend(event);"' : '') + '>';
			html += '<img src="img/friendboxtop.gif"/>';
			html += '<a class="friendAvatar" href="profielen.php?id=' + getAttributeValue(friend,'id') + '"><img width="50" height="50" src="' + getXmlNodeValue(friend,'avatar') + '"/></a>';
			html += '<div class="friendDetails">';
				html += '<a class="friendName" href="profielen.php?id=' + getAttributeValue(friend,'id') + '">' + getXmlNodeValue(friend,'username') + '</a>';
				
				if(ownprofile)
				{
					html += '<div class="friendStatus">';
						if(status == 'Uitgenodigd')
						{
							html += 'Uitgenodigd';
						}
						else
						{
							html += '<img class="friendStatusIcon" src="img/friend_' + (online ? 'on' : 'off') + 'line.png"/>'  + ' ' + (online && status != '' && status != 'Online' ? '<span class="friendStatusNote">' + status + '</span>' : status);
						}
					html += '</div>';
					if(loc && loc != "")
					{
						html += '<div class="friendLocation">';
							html += '<span class="friendLocationMain">@' + loc + (subloc && subloc != '' ? ' - ' : '') + '</span>';
							if(subloc && subloc != '')
							{
								html += '<span class="friendLocationSub">' + subloc + '</span>';
							}
						html += '</div>';
					}
				}
			html += '</div>';
			html += '<div class="clearAll"></div>';
		html += '</div>';
		
		document.getElementById('friendsContainer').innerHTML = html;
	}
}

function getFriends(offset)
{
	var data = [{name:"cmd",value:"getfriends"},{name:"offset",value:offset},{name:"pid",value:rowId}];
	submitData(data,null,"userprocess.php",'',gotFriends);
}

function friendResult(xml)
{
	switch(xml.firstChild.firstChild.nodeValue)
	{
		case 'NOT_LOGGEDIN':
			alert('Je bent uitgelogd, refresh de pagina en probeer het nog eens!');
		break;
		case 'ALREADY_FRIENDS':
			alert('Deze persoon is al een vriend van je!');
		break;
		case 'REVERSE_INVITE_PRESENT':
			alert('Deze persoon heeft jou uitgenodigd als vriend, kijk bij je berichten om te bevestigen.');
		break;
		case 'INVITE_PRESENT':
			alert('Deze persoon heeft al een uitnodiging om vriend te worden van je!');
		break;
		case 'INVITE_ADDED':
			alert('Een uitnodiging om vrienden te worden is verstuurd!');
		break;
		case 'FRIEND_CONFIRMED':
			alert('Uitnodiging om vrienden te worden bevestigd!');
		break;
		case 'NO_OPEN_INVITE':
			alert('De uitnodiging om vrienden te worden is niet gevonden. Misschien heeft deze persoon deze weer ingetrokken?');
		break;
	}
}

function addFriend(id)
{
	var data = [{name:"cmd",value:"addf"},{name:"id",value:id}];
	submitData(data,null,"userprocess.php",'',friendResult);
}

function confirmFriend(id)
{
	var data = [{name:"cmd",value:"conff"},{name:"id",value:id}];
	submitData(data,null,"userprocess.php",'',friendResult);
}

function saveField(el)
{
	var fld = el.parentNode.parentNode;
	fld.removeChild(el.parentNode);
	
	var data = null;
	var input = null;
	var datadiv = getClassDiv(fld,'fieldData');
	switch(curEditField.id)
	{
		case 'personalMessage':
			input = document.getElementById('personalMessageInput');
			data = [{name:"cmd",value:"save"},{name:"personalmessage",value:input.value}];
			datadiv = getClassDiv(curEditField,'weblogBoxMid');
			var pos = datadiv.innerHTML.toLowerCase().indexOf('<br');
			pos = datadiv.innerHTML.toLowerCase().indexOf('>',pos);
			oldData = datadiv.innerHTML.substr(0,pos + 1) + oldData;
		break;
		case 'status':
			input = document.getElementById('statusInput');
			data = [{name:"cmd",value:"save"},{name:"status",value:input.value}];
			datadiv = document.getElementById('statusText');
		break;
		case 'edit_gender':
			input = document.getElementById('gender_male');
			data = [{name:"cmd",value:"save"},{name:"gender",value:input.checked ? '1' : '0'}];
		break;
		case 'edit_dob':
			var bday = document.getElementById('dob_day').value + '-' + document.getElementById('dob_month').value + '-' + document.getElementById('dob_year').value;
			data = [{name:"cmd",value:"save"},{name:"dob",value:bday}];
		break;
		default:
			data = [{name:"cmd",value:"save"}];
			var propname = curEditField.id.substr(5);
			data.push({name: propname,value: document.getElementById(propname).value});
		break;
	}
	
	datadiv.innerHTML = oldData;
	oldData = '';
	
	submitData(data,null,"userprocess.php",'',saveResult);
	
	if(curEditField.id != 'status' && curEditField.id != 'personalMessage')
	{
		curEditField.firstChild.style.marginTop = "0px";
	}
	curEditField = null;
}

function saveResult(xml)
{
	var data = null;
	var newvalue = xml.firstChild.firstChild.nodeValue;
			
	switch(xml.firstChild.nodeName)
	{
		case 'status':
			data = document.getElementById('statusText');
		break;
		case 'personalmessage':
			data = getClassDiv(document.getElementById('personalMessage'),'weblogBoxMid');
			var pos = data.innerHTML.toLowerCase().indexOf('<br');
			pos = data.innerHTML.toLowerCase().indexOf('>',pos);
			newvalue = data.innerHTML.substr(0,pos + 1) + xml.firstChild.firstChild.nodeValue;
		break;
		default:
			var el = document.getElementById('edit_' + xml.firstChild.nodeName);
			data = getClassDiv(el,'fieldData'); 
		break;
	}
	
	data.innerHTML = newvalue; 
}

function cancelField(el)
{
	var fld = el.parentNode.parentNode;
	fld.removeChild(el.parentNode);
	
	var datadiv = getClassDiv(fld,'fieldData');
	switch(curEditField.id)
	{
		case 'status':
			datadiv = document.getElementById('statusText');
		break;
		case 'personalMessage':
			datadiv = getClassDiv(curEditField,'weblogBoxMid');
			var pos = datadiv.innerHTML.toLowerCase().indexOf('<br');
			pos = datadiv.innerHTML.toLowerCase().indexOf('>',pos);
			oldData = datadiv.innerHTML.substr(0,pos + 1) + oldData;
		break;
	}
	datadiv.innerHTML = oldData;
	oldData = '';
	
	if(curEditField.id != 'status')
	{
		curEditField.firstChild.style.marginTop = "0px";
	}
	
	curEditField = null;
}

var curEditField = null;
var oldData = '';
function editField(el)
{
	curEditField = el.parentNode;
	while(curEditField.parentNode && curEditField.id == '')
	{
		curEditField = curEditField.parentNode;
	}
	
	var link = document.getElementById(curEditField.id + "_link");
	link.parentNode.removeChild(link);
	
	var pos = -1;
	var data = null;
	switch(curEditField.id)
	{
		case "status":
			data = document.getElementById("statusText");
			oldData = data.innerHTML;
		break;
		case 'personalMessage':
			data = getClassDiv(curEditField,'weblogBoxMid');
			pos = data.innerHTML.toLowerCase().indexOf('<br');
			pos = data.innerHTML.toLowerCase().indexOf('>',pos);
			oldData = data.innerHTML.substr(pos + 1);
		break;
		default:
			data = getClassDiv(curEditField,'fieldData');
			oldData = data.innerHTML;
		break;
	}
	
	
	switch(curEditField.id)
	{
		case 'personalMessage':
			data.innerHTML = data.innerHTML.substr(0,pos + 1) + '<textarea id="personalMessageInput">' + multiReplace(['<br>','<br/>','<BR>','<BR/>'],["\n"],oldData) + '</textarea>';
		break;
		case 'status':
			data.innerHTML = '<input id="statusInput" maxlength="37" type="text" value="' + oldData + '" class="statusInputField"/>';
		break;
		case 'edit_gender':
			data.innerHTML = '<input class="radioField" type="radio" name="gender"' + (oldData == 'vrouw' ? ' checked="1"' : '') + '/> <span class="radioText">vrouw</span> <input class="radioField" id="gender_male" type="radio" name="gender"' + (oldData == 'man' ? ' checked="1"' : '') + '/> <span class="radioText">man</span>';
		break;
		case 'edit_dob':
			pos = oldData.indexOf('(');
			var bday = oldData.substr(pos + 1,oldData.length - (pos + 2)).split('-');
			bday = oldData == '' ? ["","",""] : bday;
			data.innerHTML = '<input id="dob_day" type="text" class="inputField" value="' + bday[0] + '"/> ' + '<input id="dob_month" class="inputField" type="text" value="' + bday[1] + '"/> ' + '<input id="dob_year" class="inputField" type="text" value="' + bday[2] + '"/>';
			document.getElementById('dob_day').focus();
		break;
		case 'edit_profile_text':
			data.innerHTML = '<textarea id="profile_text">' + oldData + '</textarea>';
		break;
		default:
			var idname = curEditField.id.substr(5);
			data.innerHTML = '<input id="' + idname + '" type="text" value="' + oldData + '" class="inputField"/>';
			document.getElementById(idname).focus();
		break;
	}
	
	var editClass = 'editField';
	var okImage = 'ok.gif';
	var cancelImage = 'cancel.gif';
	switch(curEditField.id)
	{
		case 'status':
			editClass = 'editStatusField';
			okImage = 'ok.png';
			cancelImage = 'cancel.png';
		break;
		case 'personalMessage':
			editClass = 'editMessage';
			okImage = 'ok.png';
			cancelImage = 'cancel.png';
		break;
	}
	
	var d = createTag('div','',editClass);
	d.innerHTML = '<a href="javascript:;" onclick="saveField(this);"><img src="img/' + okImage + '"/></a> <a href="javascript:;" onclick="cancelField(this);"><img src="img/' + cancelImage + '"/></a>';
	
	if(curEditField.id != 'personalMessage')
	{
		curEditField.insertBefore(d,curEditField.lastChild);
	}
	else
	{
		var sub = getClassDiv(curEditField,'weblogBoxMid');
		sub.insertBefore(d,sub.firstChild);
	}
	
	if(curEditField.id != 'status' && curEditField.id != 'personalMessage')
	{
		d.style.marginTop = "1px";
		curEditField.firstChild.style.marginTop = "1px";
	}
}

function handleEnterMessage(e)
{
	if(curEditField)
	{
		return;
	}
	if (!e) var e = window.event;
	var src = (window.event) ? e.srcElement : e.target;
	while(src && src.id != 'personalMessage')
	{
		src = src.parentNode;
	}
	if(src && src.id == 'personalMessage' && src.innerHTML.toLowerCase().indexOf('<a') == -1)
	{
		var a = createTag('a',src.id + '_link','editMessage');
		a.setAttribute('onclick','editField(this);');
		a.setAttribute('href','javascript:;');
		a.innerHTML = '<img src="img/gear.png"/> Bewerk';
		
		var box = getClassDiv(src,'weblogBoxMid');
		if(box.childNodes.length == 1)
		{
			box.appendChild(a);
		}
		else
		{
			box.insertBefore(a,box.childNodes[1]);
		}
	}
}

function handleExitMessage(e)
{
	if(curEditField)
	{
		return;
	}
	
	if (!e) var e = window.event;
	
	var src = (window.event) ? e.srcElement : e.target;
	while(src && src.id != 'personalMessage')
	{
		src = src.parentNode;
	}

	var target = e.relatedTarget || e.toElement;
	while(target && target.id != "personalMessage")
	{
		target = target.parentNode;
	}

	if(target != src && src)
	{
		var link = document.getElementById(src.id + "_link");
		link.parentNode.removeChild(link);
	}
}

function handleEnterStatus(e)
{
	if(curEditField)
	{
		return;
	}
	if (!e) var e = window.event;
	var src = (window.event) ? e.srcElement : e.target;
	while(src && src.id != 'status')
	{
		src = src.parentNode;
	}
	
	if(src && src.id == 'status' && src.innerHTML.toLowerCase().indexOf('<a') == -1)
	{
		var a = createTag('a',src.id + '_link','editStatusField');
		a.setAttribute('onclick','editField(this);');
		a.setAttribute('href','javascript:;');
		a.innerHTML = '<img src="img/gear.png"/> Bewerk';
		
		src.insertBefore(a,src.lastChild);
	}
}

function handleExitStatus(e)
{
	if(curEditField)
	{
		return;
	}
	
	if (!e) var e = window.event;
	
	var src = (window.event) ? e.srcElement : e.target;
	while(src && src.id != 'status')
	{
		src = src.parentNode;
	}

	var target = e.relatedTarget || e.toElement;
	while(target && target.id != "status")
	{
		target = target.parentNode;
	}

	if(target != src && src)
	{
		var link = document.getElementById(src.id + "_link");
		link.parentNode.removeChild(link);
	}
}

function handleEnterField(e)
{
	if(curEditField)
	{
		return;
	}
	if (!e) var e = window.event;
	var src = (window.event) ? e.srcElement : e.target;
	while(src && src.className != 'userField')
	{
		src = src.parentNode;
	}
	
	if(src && src.className == 'userField' && src.innerHTML.toLowerCase().indexOf('<a') == -1)
	{
		var a = createTag('a',src.id + '_link','editField');
		a.setAttribute('onclick','editField(this);');
		a.setAttribute('href','javascript:;');
		a.innerHTML = '<img src="img/gear.gif"/> Bewerk';
		
		src.insertBefore(a,src.lastChild);
	}
}

function handleExitField(e)
{
	if(curEditField)
	{
		return;
	}
	
	if (!e) var e = window.event;
	
	var src = (window.event) ? e.srcElement : e.target;
	while(src && src.className != 'userField')
	{
		src = src.parentNode;
	}

	var target = e.relatedTarget || e.toElement;
	while(target && target.className != "userField")
	{
		target = target.parentNode;
	}

	if(target != src && src)
	{
		var link = document.getElementById(src.id + "_link");
		link.parentNode.removeChild(link);
	}
}

function handleEnterFriend(e)
{
	if (!e) var e = window.event;
	var src = (window.event) ? e.srcElement : e.target;
	while(src && src.className != 'friendBox')
	{
		src = src.parentNode;
	}
	
	if(src && src.className == 'friendBox' && src.innerHTML.indexOf('friendDelete') == -1)
	{
		var a = createTag('a',src.id + '_link','friendDelete');
		a.setAttribute('onclick','deleteFriend(this);');
		a.setAttribute('href','javascript:;');
		a.innerHTML = '<img src="img/x.png"/>';
		
		src.insertBefore(a,src.lastChild);
	}
}

function handleExitFriend(e)
{
	if (!e) var e = window.event;
	
	var src = (window.event) ? e.srcElement : e.target;
	while(src && src.className != 'friendBox')
	{
		src = src.parentNode;
	}

	var target = e.relatedTarget || e.toElement;
	while(target && target.className != "friendBox")
	{
		target = target.parentNode;
	}

	if(target != src && src)
	{
		var link = document.getElementById(src.id + "_link");
		link.parentNode.removeChild(link);
	}
}

function handleEnterComment(e)
{
	if (!e) var e = window.event;
	var src = (window.event) ? e.srcElement : e.target;
	while(src && (src.nodeName.toLowerCase() != "div" || src.id.indexOf('comment_') == -1))
	{
		src = src.parentNode;
	}
	
	if(src && src.id.indexOf('comment_') == 0 && src.innerHTML.indexOf('commentDelete') == -1)
	{
		var a = createTag('a',src.id + '_link','commentDelete');
		a.setAttribute('onclick','deleteComment(this);');
		a.setAttribute('href','javascript:;');
		a.innerHTML = '<img src="img/x.png"/> Verwijder';
		
		if(src.className.indexOf("indented") == 0)
		{
			a.className = 'commentDeleteRight';
		}
		
		src.appendChild(a);
	}
}

function handleExitComment(e)
{
	if (!e) var e = window.event;
	
	var src = (window.event) ? e.srcElement : e.target;
	while(src && (src.nodeName.toLowerCase() != "div" || src.id.indexOf('comment_') == -1))
	{
		src = src.parentNode;
	}

	var target = e.relatedTarget || e.toElement;
	while(target && (target.nodeName.toLowerCase() != "div" || !target.id || target.id.indexOf('comment_') == -1))
	{
		target = target.parentNode;
	}

	if(target != src && src)
	{
		var link = document.getElementById(src.id + "_link");
		link.parentNode.removeChild(link);
	}
}

function deleteCommentResult(xml)
{
	if(xml.firstChild.nodeName == "error")
	{
		if(xml.firstChild.firstChild.nodeValue == "ATTACHED_CHILDREN")
		{
			alert("Reactie kon niet verwijderd worden omdat er nog sub-reacties aanzitten.");
		}
	}
	else
	{
		var id = getAttributeValue(xml,'id');
		var el = document.getElementById('comment_' + id);
		el.parentNode.removeChild(el);
	}
}

function deleteComment(el)
{
	var id = el.parentNode.id.substr(8);
	if(confirm("Deze reactie van je profiel verwijderen?"))
	{
		var data = [{name:"cmd",value:"remcom"},{name:"id",value:id}];
		submitData(data,null,"userprocess.php",'',deleteCommentResult);
	}
}


function handleEnterFav(e)
{
	if (!e) var e = window.event;
	var src = (window.event) ? e.srcElement : e.target;
	while(src && (!src.className || src.className.indexOf('thumbNail') == -1))
	{
		src = src.parentNode;
	}
	
	if(src && src.className.indexOf('thumbNail') == 0 && src.innerHTML.indexOf('favDelete') == -1)
	{
		var a = createTag('a',src.id + '_link','favDelete');
		a.setAttribute('onclick','deleteFav(this);');
		a.setAttribute('href','javascript:;');
		a.innerHTML = '<img src="img/x.png"/>';
		
		src.appendChild(a);
	}
}

function handleExitFav(e)
{
	if (!e) var e = window.event;
	
	var src = (window.event) ? e.srcElement : e.target;
	while(src && (!src.className || src.className.indexOf('thumbNail') == -1))
	{
		src = src.parentNode;
	}

	var target = e.relatedTarget || e.toElement;
	while(target && (!target.className || target.className.indexOf('thumbNail') == -1))
	{
		target = target.parentNode;
	}

	if(target != src && src)
	{
		var link = document.getElementById(src.id + "_link");
		link.parentNode.removeChild(link);
	}
}

function deleteFriend(el)
{
	while(el && el.className != "friendBox")
	{
		el = el.parentNode;
	}
	var username = getClassDiv(el,'friendDetails');
	username = getClassDiv(username,'friendName').innerHTML;
	if(confirm('Je makker ' + username + ' als vriend verwijderen?'))
	{
		var data = [{name:"cmd",value:"delfrnd"},{name:"id",value:el.id.substr(9)}];
		submitData(data,null,"userprocess.php",'',deleteFriendResult);
	}
}

function deleteFriendResult(xml)
{
	var id = getAttributeValue(xml,'id');
	if(getXmlNodeValue(xml,'message') == "OK")
	{
		var el = document.getElementById('friendBox' + id);
		el.parentNode.removeChild(el);
	}
}

function deleteFav(el)
{
	while(el && el.className.indexOf("thumbNail") == -1)
	{
		el = el.parentNode;
	}
	
	if(confirm('Deze favo verwijderen?'))
	{
		var t = el.id.substr(0,1);
		var data = [{name:"cmd",value:"delfav"},{name:"id",value:el.id.substr(6)},{name:"mtype",value:t}];
		submitData(data,null,"userprocess.php",'',deleteFavResult);
	}
}

function deleteFavResult(xml)
{
	var id = getAttributeValue(xml,'id');
	var t = getAttributeValue(xml,'mtype');
	if(getXmlNodeValue(xml,'message') == "OK")
	{
		var el = document.getElementById(t + 'Fav' + id);
		el.parentNode.removeChild(el);
	}
}



function unDeleteResult(xml)
{
	if(getXmlNodeValue(xml,'message') == "OK")
	{
		loadFolderMessages(3);
	}
	handleNewCount(getXmlNode(xml,'newcount'),true);
}

function undelete()
{
	var ids = inboxGetSelectedIds();
	if(ids.length == 0)
	{
		return;
	}
	
	var data = [{name:"cmd",value:"undelm"},{name:"ids",value:ids.join(',')}];
	submitData(data,null,"userprocess.php",'',unDeleteResult);
}

function resetFolderSelection()
{
	var ar = document.getElementById("inboxLeft").getElementsByTagName('a');
	for(var i = 0; i < ar.length; i++)
	{
		ar[i].className = "inboxLink";
	}
}

function selectFolder(id)
{
	selectedFolder = id;
	selectedMessage = -1;
	setToolBar(id == 3 ? 'trash' : '');
	
	showMessages();
	
	resetFolderSelection();
	document.getElementById('messageGroup' + id).className = "inboxLinkSelected";
	loadFolderMessages(id);
}

var storedFolders = [];
function loadFolderMessages(id)
{	
	var data = [{name:"cmd",value:"loadf"},{name:"id",value:id}];
	submitData(data,null,"userprocess.php",'',folderReceived);
	if(storedFolders[id])
	{
		showFolderContents(id);
	}
}

function folderReceived(xml)
{
	var id = Number(getAttributeValue(xml,'id'));
	if(getAttributeValue(xml,'status') == 'new')
	{
		storedFolders[id] = [];
		for(var i = 0; i < xml.childNodes.length; i++)
		{
			if(xml.childNodes[i].nodeName != 'newcount')
			{
				var msgid = Number(getAttributeValue(xml.childNodes[i],'id'));
				var subj = getXmlNodeValue(xml.childNodes[i],'subject');
				var sender = getXmlNodeValue(xml.childNodes[i],'sender');
				var sentdate = getXmlNodeValue(xml.childNodes[i],'date');
				var read = getAttributeValue(xml.childNodes[i],'read') == '0' ? false : true;
				storedFolders[id].push({id:msgid,subject:subj,sentdate:sentdate,sender:sender,read:read});
			}
		}
		showFolderContents(id);
	}
	
	handleNewCount(getXmlNode(xml,'newcount'),true);
}

function handleMessagesAll(el)
{
	var ar = document.getElementById('inboxMessages').getElementsByTagName('input');
	for(var i = 0; i < ar.length; i++)
	{
		ar[i].checked = el.checked;
	}
}

function showFolderContents(id)
{
	if(selectedFolder != id)
	{
		return;
	}
	showMessages();
	
	var html = '';
	html += '<div id="messagesContainer">';
	if(storedFolders[id])
	{
		for(var i = 0; i < storedFolders[id].length; i++)
		{
			html += '<div class="messagesRow' + (i % 2 == 0 ? '' : '_uneven') + '" id="message' + storedFolders[id][i].id + '">';
			html += '<input type="checkbox" class="inputBox" />';
			html += '<img src="img/msg' + (storedFolders[id][i].read ? '' : '_new') + '.png" class="messagesIcon"/>';
			html += '<a class="messagesSender' + (storedFolders[id][i].read ? '' : 'New') + '" href="javascript:;" onclick="getMessage(' + storedFolders[id][i].id + ');">' + storedFolders[id][i].sender + '</a>';
			html += '<a class="messagesSubject' + (storedFolders[id][i].read ? '' : 'New') + '" href="javascript:;" onclick="getMessage(' + storedFolders[id][i].id + ');">' + storedFolders[id][i].subject + '</a>';
			html += '<a class="messagesDate' + (storedFolders[id][i].read ? '' : 'New') + '" href="javascript:;" onclick="getMessage(' + storedFolders[id][i].id + ');">' + storedFolders[id][i].sentdate + '</a>';
			html += '<div style="clear: both;"></div>';
			html += '</div>';
		}
	}
	html += '</div>';
	var msgs = document.getElementById('inboxMessages'); 
	msgs.innerHTML = '<div id="messagesColumns"><input type="checkbox" class="inputBox" onclick="handleMessagesAll(this);" /><input type="text" class="" id="inboxSearch"/><div class="clearAll"></div></div>' + html;
}

function inboxMessageReceived(xml)
{
	var id = Number(getAttributeValue(xml,'id'));
	
	storedMessages[id].msg = getXmlNodeValue(xml,'content');
	storedMessages[id].avatar = getXmlNodeValue(xml,'avatar');
	storedMessages[id].datetime = getXmlNodeValue(xml,'datetime');
	
	showMessage(id);
}

function setToolBar(state)
{
	var tb = document.getElementById('inboxToolbar');
	var rightside = '<div id="inboxToolbarRight">';
	if(state == 'message')
	{
		rightside += '<a href="javascript:;" onclick="replyMessage();"><img src="img/ib_reply.png"/></a> ';
	}
	if(state == 'trash')
	{
		rightside += '<a href="javascript:;" onclick="undelete();"><img src="img/ib_undelete.png"/></a> ';
	}
	rightside += '<a href="javascript:;" onclick="deleteMessage();"><img src="img/ib_delete.png"/></a> ';
	rightside += '<a href="javascript:;" onclick="blockUser();"><img src="img/ib_block.png"/></a>';
	rightside += '</div>';
	
	switch(state)
	{
		case 'message':
			tb.innerHTML = rightside + '<a href="javascript:;" onclick="selectFolder(selectedFolder);"><img src="img/ib_back.png"/></a>';
		break;
		case 'newmessage':
			tb.innerHTML = '<a href="javascript:;" onclick="showNewMessage();"><img src="img/newmsg.png"/></a>';
		break;
		default:
			tb.innerHTML = rightside + '<a href="javascript:;" onclick="showNewMessage();"><img src="img/newmsg.png"/></a>';
		break;
	}
}

var selectedMessage = -1;
function getMessage(id)
{
	selectedMessage = id;
	if(storedMessages[id] == null)
	{
		var msg = null;
		for(var i = 0; i < storedFolders[selectedFolder].length; i++)
		{
			if(storedFolders[selectedFolder][i].id == id)
			{
				msg = storedFolders[selectedFolder][i];
			}
		}
		
		var obj = {};
		obj.subject = msg.subject;
		obj.username = msg.sender;
		storedMessages[id] = obj;
		
		var data = [{name:"cmd",value:"loadm"},{name:"id",value:id}];
		submitData(data,null,"userprocess.php",'',inboxMessageReceived);
	}
	showMessage(id);
}

var storedMessages = [];
function showMessage(id)
{
	newMessageVisible = true;
	setToolBar('message');
	
	var html = '<div id="inboxMessage">';
	html += '<div id="inboxMessageTop">';
	html += '<div id="inboxUserBox">';
		var ava = "";
		if(storedMessages[id].avatar)
		{
			ava = '<img width="50" height="50" src="' + storedMessages[id].avatar + '"/>';
		}
		html += '<div id="inboxAvatar">' + ava + '</div>';
	html += '</div>';
	
	html += '<div id="inboxDetails">';
		html += '<div id="inboxDate">' + (storedMessages[id].datetime ? storedMessages[id].datetime : '') + '</div>';
		html += '<div id="inboxUsername">' + storedMessages[id].username + '</div>';
		html += '<div id="inboxSubject">Onderwerp: ' + storedMessages[id].subject + '</div>';
	html += '</div>';
	
	html += '<div class="clearAll"></div>';
	html += '</div>';
	
	html += '<div id="inboxContent">' + (storedMessages[id].msg ? storedMessages[id].msg : '') + '</div>';
	html += '</div>';
	
	document.getElementById('inboxRight').innerHTML = html;
}

function messageDelivered(xml)
{
	switch(xml.firstChild.firstChild.nodeValue)
	{
		case 'USER_UNKNOWN':
			alert('De gebruiker die je hebt opgegeven is onbekend.');
		break;
		case 'USER_BLOCKED':
			alert('Deze gebruiker heeft jou geblokkeerd.');
		break;
		case 'MESSAGE_SENT':
			resetNewMessage();
			alert('Je bericht is verstuurd.');
		break;
	}
}

function resetNewMessage()
{
	var els = ["receiver","subject","message"];
	for(var i = 0; i < els.length; i++)
	{
		document.getElementById(els[i]).value = "";
	}
	document.getElementById(els[0]).focus();
}

function checkInput()
{
	var data = [{name:"cmd",value:"sendm"}];
	
	var el = document.getElementById('receiver');
	if(el.value.length < 2)
	{
		alert('Je faalt helaas! Je hebt geen ontvanger opgegeven.');
		return;
	}
	data.push({name:"user",value:el.value});
	
	el = document.getElementById('subject');
	data.push({name:"subj",value:el.value});
	
	el = document.getElementById('message');
	if(el.value.length == 0)
	{
		alert('Je faalt helaas! Je hebt geen bericht opgegeven.');
		return;
	}
	data.push({name:"msg",value:encodeURIComponent(el.value)});
	
	submitData(data,null,"userprocess.php",'',messageDelivered);
}

function showMessages()
{
	if(newMessageVisible)
	{
		document.getElementById('inboxRight').innerHTML = '<div id="inboxMessages"><div id="messagesColumns"><input type="checkbox" class="inputBox" onclick="handleMessagesAll(this);" /><input type="text" class="" id="inboxSearch"/><div class="clearAll"></div></div></div>';
		newMessageVisible = false;
	}
}

function cancelNewMessage()
{
	showMessages();
	selectFolder(1);
}

function privacyResult(xml)
{
	
}

function savePrivacy(el)
{
	var opt = el.id.split("_")[1];
	var data = [{name:"cmd",value:"savepriv"},{name:"option",value:opt},{name:"level",value:el.value}];
	submitData(data,null,"userprocess.php",'',privacyResult);
}

var friendCache = null;
var recSuggestions = [];
var recSugSelection = "";
var recSugIndex = 0;
function checkReceiverUp(e)
{
	var code;
	if(!e) var e = window.event;
	if(e.keyCode)
	{
		code = e.keyCode;
	}
	else if(e.which)
	{
		code = e.which;
	}
	
	if(code == 13)
	{
		return;
	}
	
	var box = document.getElementById('receiverSuggestions');
	var el = document.getElementById('receiver');
	if(el.value.length > 0 && friendCache && friendCache.length > 0)
	{
		recSuggestions = [];
		for(var i = 0; i < friendCache.length; i++)
		{
			if(friendCache[i].toLowerCase().indexOf(el.value.toLowerCase()) == 0)
			{
				recSuggestions.push(friendCache[i]);
			}
		}
		
		if(recSugSelection.length > 0 && recSuggestions.join(",").toLowerCase().indexOf(recSugSelection.toLowerCase()) > -1)
		{
			recSugIndex = 0;
			while(recSuggestions[recSugIndex] != recSugSelection)
			{
				recSugIndex++;
			}
		}
		else
		{
			recSugIndex = 0;
			recSugSelection = "";
		}
		recSugSelection = recSuggestions.length > 0 ? recSuggestions[recSugIndex] : '';
		
		var start = Math.max(0,recSugIndex == recSuggestions.length - 1 ? recSugIndex - 2 : recSugIndex - 1);
		var end = Math.min(recSuggestions.length,start + 3);
		var html = "";
		for(var i = start; i < end; i++)
		{
			html += '<a class="receiverSuggestion' + (i == recSugIndex ? '_selected' : '') + '" href="javascript:;">' + recSuggestions[i] + '</a>';
		}
		box.innerHTML = html;
		
		if(recSuggestions.length > 0)
		{
			box.style.display = "block";
		}
	}
	else
	{
		recSuggestions = [];
		recSugIndex = 0;
		recSugSelection = "";
		box.style.display = "none";
	}
}

function checkReceiverDown(e)
{
	if(recSuggestions.length == 0)
	{
		return;
	}
	
	var code;
	if(!e) var e = window.event;
	if(e.keyCode)
	{
		code = e.keyCode;
	}
	else if(e.which)
	{
		code = e.which;
	}
	if(code == 13 && recSuggestions.length > 0 && recSuggestions[recSugIndex])
	{
		document.getElementById('receiver').value = recSuggestions[recSugIndex]; 
		document.getElementById('receiverSuggestions').style.display = "none";
	}
	if(code == 38)//up
	{
		recSugIndex = recSugIndex == 0 ? 0 : recSugIndex - 1;
		recSugSelection = recSuggestions[recSugIndex];
	}
	if(code == 40)//down
	{
		recSugIndex = Math.min(recSuggestions.length - 1,recSugIndex + 1);
		recSugSelection = recSuggestions[recSugIndex];
	}
	
	if(code == 38 || code == 40)
	{
		var start = Math.max(0,recSugIndex == recSuggestions.length - 1 ? recSugIndex - 2 : recSugIndex - 1);
		var end = Math.min(recSuggestions.length,start + 3);
		var html = "";
		for(var i = start; i < end; i++)
		{
			html += '<a class="receiverSuggestion' + (i == recSugIndex ? '_selected' : '') + '" href="javascript:;">' + recSuggestions[i] + '</a>';
		}
		document.getElementById('receiverSuggestions').innerHTML = html;
	}
}

function receiverFocusLost()
{
	document.getElementById('receiverSuggestions').style.display = "none";
}

function updateFriendCache(xml)
{
	friendCache = getXmlNodeValue(xml,'friends').split(',');
}

var newMessageVisible = false;
function showNewMessage()
{
	if(newMessageVisible)
	{
		return;
	}
	
	if(friendCache == null)
	{
		var data = [{name:"cmd",value:"getfs"}];
		submitData(data,null,"userprocess.php",'',updateFriendCache);
	}
	
	newMessageVisible = true;
	setToolBar('newmessage');
	
	resetFolderSelection();
	el = document.getElementById('inboxRight');
	var html = '';
	html += '<div id="newMessageContainer">';
	html += '<div class="inboxLabel" id="inboxLabel_first">Naam ontvanger:</div>';
	html += '<input id="receiver" type="text" onkeyup="checkReceiverUp(event);" onkeydown="checkReceiverDown(event);" onblur="receiverFocusLost();" class="newMessageField"/>';
	html += '<div id="receiverSuggestions"></div>';
	html += '<div class="inboxLabel">Onderwerp:</div>';
	html += '<input id="subject" type="text" class="newMessageField"/>';
	html += '<div class="inboxLabel">Bericht:</div>';
	html += '<textarea id="message"></textarea><br/>';
	html += '<a style="float:right;" href="javascript:;" onclick="cancelNewMessage();"><img src="img/ib_cancel.png"/></a>';
	html += '<a href="javascript:;" onclick="checkInput();"><img src="img/ib_send.png"/></a>';
	html += '</div>';
	el.innerHTML = html;
	
	document.getElementById('receiver').focus();
}

function inboxGetSelectedIds()
{
	var ar = document.getElementById('inboxMessages').getElementsByTagName('input');
	var sels = [];
	
	for(var i = 0; i < ar.length; i++)
	{
		if(ar[i].checked && ar[i].parentNode.id != "messagesColumns")
		{
			sels.push(ar[i]);
		}
	}
	
	for(i = 0; i < sels.length; i++)
	{
		sels[i] = sels[i].parentNode.id.substr(7);
	}
	
	return sels;
}

function blockResult(xml)
{
	if(xml.firstChild.nodeName == "blocklist")
	{
		alert("De volgende personen zijn nu geblokkeerd:\n" + getXmlNodeValue(xml,'blocklist'));
	}
	else
	{
		alert('Geen nieuwe blokkades, misschien had je deze personen al geblokkeerd?');
	}
}

function blockUser()
{
	var ids = [];
	if(selectedMessage > -1)
	{
		ids = [selectedMessage];
	}
	else
	{
		ids = inboxGetSelectedIds();
	}
	if(ids.length == 0)
	{
		return;
	}
	else
	{
		if(!confirm("Weet je zeker dat je de verzender" + (ids.length == 1 ? ' van 1 bericht' : 's van ' + ids.length + ' berichten') + " wilt blokkeren?\n\nJe kan altijd via Profiel->Opties blokkades verwijderen."))
		{
			return;
		}
	}
	
	var data = [{name:"cmd",value:"block"},{name:"ids",value:ids.join(',')}];
	submitData(data,null,"userprocess.php",'',blockResult);
}

function deleteResult(xml)
{
	if(getXmlNodeValue(xml,'message') == "OK")
	{
		newMessageVisible = true;
		loadFolderMessages(Number(getAttributeValue(xml.firstChild,'id')));
	}
	handleNewCount(getXmlNode(xml,'newcount'),true);
}

function deleteMessage()
{
	var todel = [];
	if(selectedMessage > -1)
	{
		todel = [selectedMessage];
	}
	else
	{
		todel = inboxGetSelectedIds();
	}
	
	if(todel.length == 0)
	{
		return;
	}
	if(selectedFolder == 2 || selectedFolder == 3)
	{
		var msg = 'Weet je zeker dat je ' + (todel.length == 1 ? '1 bericht' : todel.length + ' berichten') + " permanent wilt wissen?";
		if(selectedFolder == 2)
		{
			msg += "\n\nLet op! Verstuurde berichten die je wist komen niet in de prullenbak terecht.";
		}
		
		if(!confirm(msg))
		{
			return;
		}
	}
	else
	{
		if(!confirm((todel.length == 1 ? 'Dit bericht' : 'Deze berichten') + ' naar de prullenbak verplaatsen?'))
		{
			return;
		}
	}
	
	var data = [{name:"cmd",value:"delm"},{name:"ids",value:todel.join(',')},{name:"groupid",value:selectedFolder}];
	submitData(data,null,"userprocess.php",'',deleteResult);	
}

var selectedFolder = -1;
function showInbox()
{
	var d = createTag('div','overlay');
	var el = document.getElementById('container');
	var last = el.nextSibling;
	el.parentNode.insertBefore(d,last);
	
	d = createTag('div','inboxPopup');
	el.parentNode.insertBefore(d,last);
	
	var html = '<a style="position: absolute; right: 1px; top: 1px;" href="javascript:;" onclick="closeInbox();"><img src="img/x.png"/></a>';
	html += '<div id="inboxToolbar">';
		html += '<div id="inboxToolbarRight">';
		html += '<a href="javascript:;" onclick="deleteMessage();">Verwijder</a> ';
		html += '<a href="javascript:;" onclick="blockUser();">Blokkeer</a>';
		html += '</div>';
		html += '<a href="javascript:;" onclick="showNewMessage();">Nieuw bericht</a>';
	html += '</div>';
	
	
	html += '<img src="img/inboxheader.png"/>';
	html += '<div style="clear: both;"></div>';
	html += '<div id="inboxLeft">';
		html += '<a id="messageGroup1" href="javascript:;" onclick="selectFolder(1);" class="inboxLink">Inbox</a>';
		html += '<a id="messageGroup2" href="javascript:;" onclick="selectFolder(2);" class="inboxLink">Verstuurd</a>';
		html += '<a id="messageGroup3" href="javascript:;" onclick="selectFolder(3);" class="inboxLink">Prullenbak</a>';
	html += '</div>';
	html += '<div id="inboxRight">';
	html += '<div id="inboxMessages">';
	html += '<div id="messagesColumns"><input type="checkbox" class="inputBox" onclick="handleMessagesAll(this);" /><input type="text" class="" id="inboxSearch"/><div class="clearAll"></div></div>';
	html += '</div>';
	html += '</div>';
	d.innerHTML = html;
	
	var data = [{name:"cmd",value:"newc"}];
	submitData(data,null,"userprocess.php",'',handleNewCount);
	
	var winwidth = document.body.clientWidth || window.innerWidth;	
	d.style.left = Math.floor((winwidth - d.offsetWidth + 140) / 2) + 'px';
}

function replyMessage()
{
	newMessageVisible = false;
	showNewMessage();
	
	document.getElementById('receiver').value = storedMessages[selectedMessage].username;
	var subject = storedMessages[selectedMessage].subject;
	if(subject.toLowerCase().indexOf('re:') != 0)
	{
		subject = 'Re: ' + subject;
	}
	document.getElementById('subject').value = subject;
	document.getElementById('message').focus();
}

function handleNewCount(xml,dontselect)
{
	var grpnames= ['Inbox','Verstuurd','Prullenbak'];
	var cnt = Number(getXmlNodeValue(xml,'inbox'));
	var total = 0;
	document.getElementById('messageGroup1').innerHTML = grpnames[0] + (cnt > 0 ? ' (' + cnt + ')' : '');
	total += cnt;
	
	cnt = Number(getXmlNodeValue(xml,'trash'));
	document.getElementById('messageGroup3').innerHTML = grpnames[2] + (cnt > 0 ? ' (' + cnt + ')' : '');
	total += cnt;
	
	var indicator = document.getElementById("inboxIndicator");
	indicator.firstChild.firstChild.src = total > 0 ? 'img/envelope_new.png' : 'img/envelope.png'
	total = total > 0 ? total : '';
	if(indicator.childNodes[1])
	{
		indicator.childNodes[1].innerHTML = total;
	}
	else
	{
		indicator.innerHTML += '<div id="inboxNewCount">' + total + '</div>';
	}
	
	if(!dontselect)
	{
		selectFolder(1);
	}
}

function closeInbox()
{
	friendCache = null;
	var el = document.getElementById('inboxPopup');
	el.parentNode.removeChild(el);
	el = document.getElementById('overlay');
	el.parentNode.removeChild(el);
}

function selectTab(el,tab)
{
	var tabs = ['profile','favourites','awards','options'];
	
	var t = null;
	for(var i = 0; i < tabs.length; i++)
	{
		t = document.getElementById('tab_' + tabs[i]);
		if(t)
		{
			t.style.display = 'none';
		}
	}
	var ar = el.parentNode.getElementsByTagName('a');
	for(i = 0; i < ar.length; i++)
	{
		if(ar[i].className == 'tabButton')
		{
			var pos = ar[i].firstChild.src.indexOf("_selected");
			if(pos > -1)
			{
				ar[i].firstChild.src = ar[i].firstChild.src.substr(0,pos) + '.png';
				ar[i].firstChild.height = 25;
			}
		}
	}
	
	var img = el.firstChild;
	img.src = 'img/tab' + tabs[tab] + '_selected.png';
	img.height = 22;
	document.getElementById('tab_' + tabs[tab]).style.display = 'block';
}

function handleEnterBlockedUser(e)
{
	if (!e) var e = window.event;
	var src = (window.event) ? e.srcElement : e.target;
	while(src.parentNode && src.className != 'blockedUser' && src.className != 'blockedUserRight')
	{
		src = src.parentNode;
	}
	if(src.className.indexOf('blockedUser') == 0 && src.innerHTML.toLowerCase().indexOf('<a') == -1)
	{
		var box = getClassDiv(src,'blockedUserInfo');
		var user = box.innerHTML;
		var id = src.id.substr(11);
		
		var a = createTag('a',src.id + '_link','removeBlockade');
		a.setAttribute('onclick','removeBlockade("' + user + '",' + id + ');');
		a.setAttribute('href','javascript:;');
		a.innerHTML = '<img src="img/gear.png"/> Blokkade opheffen';
		
		
		box.appendChild(a);
	}
}

function handleExitBlockedUser(e)
{	
	if (!e) var e = window.event;
	
	var src = (window.event) ? e.srcElement : e.target;
	while(src && src.className != 'blockedUser' && src.className != 'blockedUserRight')
	{
		src = src.parentNode;
	}

	var target = e.relatedTarget || e.toElement;
	while(target && target.className != 'blockedUser' && target.className != 'blockedUserRight')
	{
		target = target.parentNode;
	}

	if(target != src && src.parentNode)
	{
		var link = document.getElementById(src.id + "_link");
		link.parentNode.removeChild(link);
	}
}

function blockRemoveResult(xml)
{
	if(getXmlNodeValue(xml,'message') == 'OK')
	{
		var id = getAttributeValue(xml.firstChild,'id');
		var el = document.getElementById('blockedUser' + id);
		el.parentNode.removeChild(el);
	}
	else
	{
		alert('Er ging iets mis met het opheffen van de blokkade.');
	}
}

function removeBlockade(user,id)
{
	if(confirm('Wil je de blokkade van ' + user + ' opheffen?'))
	{
		var data = [{name:"cmd",value:"remblock"},{name:"id",value:id}];
		submitData(data,null,"userprocess.php",'',blockRemoveResult);
	}
}

function showOnlineStatusPopup()
{
	var el = document.getElementById('statusPopup');
	var visible = el.style.display == "block";
	
	el.style.display = visible ? 'none' : 'block';
}

function setOnlineStatus(status)
{
	var el = document.getElementById('onlineStatus').firstChild;
	el.childNodes[0].src = status == 0 ? 'img/offline.png' : 'img/online.png';
	el.childNodes[1].innerHTML = status == 0 ? 'Offline' : 'Online';
	
	document.getElementById('statusPopup').style.display = 'none';
	
	var data = [{name:"cmd",value:"setstat"},{name:"val",value:status}];
	submitData(data,null,"userprocess.php",'',null);
}

function updateAvatar(file)
{
	document.getElementById('avatar').firstChild.src = 'uploads/' + file;
}

function savePassword()
{
	var pass1 = document.getElementById('password1').value;
	var pass2 = document.getElementById('password2').value;
	
	if(pass1 != pass2)
	{
		alert('De ingevulde wachtwoorden zijn niet hetzelfde.');
		return;
	}
	if(pass1.length < 6)
	{
		alert('Je wachtwoord is te kort (minimaal 6 tekens).');
		return;
	}
	
	var data = [{name:"cmd",value:"setpass"},{name:"pass",value:pass1}];
	submitData(data,null,"userprocess.php",'',passResult);
}

function passResult(xml)
{
	if(getXmlNodeValue(xml,'message') == 'OK')
	{
		alert('Je wachtwoord is gewijzigd.');
	}
	else
	{
		alert('Er ging iets mis bij het wijzigen van je wachtwoord. Je wachtwoord is NIET veranderd.');
	}
}
