if (!JS_AB) { var JS_AB = new Object(); }
JS_AB.profiles = {
	debug : false,
	init : function() {
		if($('#facebookSignOff').length > 0) $('#facebookSignOff').click(function(evt) {
			evt.preventDefault();
			FB.logout(function(response) {
				window.location.reload();
			});
		});
		JS_AB.profiles.registerHandler.init();
		JS_AB.profiles.urlHandler.init();
		JS_AB.profiles.commentsHandler.init();
		JS_AB.profiles.friendsHandler.init();
		JS_AB.profiles.quickFriendSearchHandler.init();
	}
}
JS_AB.profiles.registerHandler = {
	spinner : '<img src="/modules/core/layout/images/spinner.gif" id="spinner_register" />',
	timeToWait : 700,
	timer : null,
	evt	: null,
	existsusername : 0,
	existsurl : 0,
	defaultUrl : null,
	init : function() {
		if ($('#registerform_step2, #registerform_step3').length > 0) {
			JS_AB.profiles.registerHandler.defaultUrl = $('#yoururl').html();
			if ($('#nickname_wrapper span').length == 0) { $('#nickname').after('<span style="display: none;"></span>'); }
			$('#nickname').attr('autocomplete','off').bind('keypress', function(evt) {
				if ($('#spinner_register').length > 0) { evt.preventDefault(); } else {
					clearTimeout(JS_AB.profiles.registerHandler.timer);
					JS_AB.profiles.registerHandler.evt = evt;
					JS_AB.profiles.registerHandler.timer = setTimeout(function() { JS_AB.profiles.registerHandler._initCheckUsername(); }, JS_AB.profiles.registerHandler.timeToWait);
				}
			});
			$('#registerform_step2, #registerform_step2').bind('submit', function(evt) {
				if ($('#spinner_register').length > 0) { evt.preventDefault();
				} else { 
					formOK = JS_AB.profiles.registerHandler.checkFormStep2();
					if (formOK !== true) {
						evt.preventDefault();
						alert(formOK);
					}
				}
			});
		}
	},
	checkFormStep2 : function() {
		if (!JS_NETLASH.utils.form.isFilled($('#nickname')) || !JS_NETLASH.utils.form.isFilled($('#name')) || !JS_NETLASH.utils.form.isFilled($('#surname')) || !JS_NETLASH.utils.form.isChecked($('#sex_Male'))) return $('#formchecker_warning').html();
		if (JS_NETLASH.utils.string.urlise($('#nickname').val()) == '') return $('#formchecker_username_invalid').html();
		if (JS_AB.profiles.registerHandler.existsusername == 1)
			return $('#formchecker_username_exists').html();
			return true;
	},
	_initCheckUsername		: function(evt) {
		evt = evt || JS_AB.profiles.registerHandler.evt;
		if (JS_AB.profiles.debug) console.log(evt);
		$('#nickname_wrapper span').hide();
		$(evt.target).after(JS_AB.profiles.registerHandler.spinner);
		username	= $(evt.target).val();
		if ($.trim(username) == '') {
			JS_AB.profiles.registerHandler.existsusername = 1;
			JS_AB.profiles.registerHandler.existsurl = 1;
			$('#yoururl').html(JS_AB.profiles.registerHandler.defaultUrl);
			$('#spinner_register').remove();
			return;
		}
		postData = 'username=' + encodeURIComponent(username);
		JS_AB.profiles.registerHandler._doCheckUsername(postData);
	},
	_doCheckUsername : function(postData) {
		$.ajax({
			url: '/ajax.php?module=profiles&action=checkusername',
			type: 'post',
			dataType: 'json',
			cache: false,
			data: postData,
			success: function(json) { JS_AB.profiles.registerHandler._doneCheckUsername(json); 	},
			error: function(xhr,err,e) {
				alert(err + ' ' + e, 'Critical Error');
				window.location.reload();
			}
		});
	},
	_doneCheckUsername : function(json) {
		if (JS_AB.profiles.debug) console.log(json);
		switch (parseInt(json.status.code)) {
			case 200:
					JS_AB.profiles.registerHandler.existsusername 	= parseInt(json.content.existsusername);
					JS_AB.profiles.registerHandler.existsurl 		= parseInt(json.content.existsurl);
					if (JS_AB.profiles.registerHandler.existsusername == 1) { $('#nickname_wrapper span').removeClass().addClass('form-error').html($('#formchecker_username_exists').html()).show(); }
					else if (JS_AB.profiles.registerHandler.existsurl == 1) { $('#nickname_wrapper span').removeClass().addClass('form-warning').html($('#formchecker_url').html()).show(); }
					else { $('#nickname_wrapper span').hide().html(''); }
					$('#yoururl').html(json.content.suggestedurl);
			break;
			case 500:
			default:
				alert(json.status.text);
			break;
		}
		$('#spinner_register').remove();
	},
	_eoo : true
}
JS_AB.profiles.urlHandler = {
	linkBlob : '<dd><input type="text" class="input-text" value="{link}" name="websites[]" id="websites{id}"/> <a href="#" title="{$lblDelete}" class="deleteWebsiteLink" rel="websites{id}">{$lblDelete}</a></dd>',
	init : function() {
		if ($('#addWebsiteLink').length > 0) {
			$('#addWebsiteLink').bind('click', JS_AB.profiles.urlHandler._addUrl);
			$('#website').attr("autocomplete", "off").bind('keypress', function(evt) {
				if (evt.which == 13) {
					evt.preventDefault();
					evt.stopPropagation();
					JS_AB.profiles.urlHandler._addUrl(evt);
				}
				}).bind('focus', function(evt) {
					if ($(this).val() == '') { $(this).val('http://'); }
				}).bind('blur', function(evt) {
				if ($(this).val() == 'http://') { $(this).val(''); }
			});
			$('.deleteWebsiteLink').bind('click', JS_AB.profiles.urlHandler._deleteUrl);
		}
	},
	_addUrl : function(evt) {
		evt.preventDefault();
		if (JS_NETLASH.utils.form.isUrl($('#website'))) {
			$('#invalidWebsite').hide();
			var lastField = $('#addWebsiteWrapper').prev().find('input');
			if(lastField.length > 0) { nextId = parseInt(lastField.attr('id').substr(8)) + 1; }
			else { nextId = 1; }
			$('#addWebsiteWrapper').before( JS_NETLASH.utils.string.replaceAll(JS_NETLASH.utils.string.replaceAll(JS_AB.profiles.urlHandler.linkBlob, '{link}', $('#website').val()), '{id}', nextId) );
			$('.deleteWebsiteLink').unbind('click').bind('click', JS_AB.profiles.urlHandler._deleteUrl);
			$('#website').val('').focus();
		} else {
			$('#invalidWebsite').show();
			$('#website').focus();
		}
	},
	_deleteUrl : function(evt) {
		evt.preventDefault();
		if (confirm('{$msgAreYouSure}')) { $('#' + $(this).attr('rel')).parent().remove(); }
	},
	_eoo : true
}
JS_AB.profiles.commentsHandler = {
	blob : '<div class="shoutbox-comment secondarycontent clearfix"><div class="avatar"><a title="{nick}" class="noborder" href="{url}"><img title="{nick}" alt="{nick}" src="/modulefiles/profiles/avatars/48x48/{avatar}"/></a></div><div class="message"><p class="user"><a title="{nick}" href="{url}">{nick}</a></p><p>{text}</p><div class="flag"><p id="flagLink_{comment_id}" class="flagLink"><a id="flag_comment_{comment_id}" href="#">{lblFlagContent}</a></p></div></div></div>',
	spinner : '<img src="/modules/core/layout/images/spinner.gif" id="spinner_{id}" alt="" title="" />',
	init : function() {
		if ($('#btnAddComment').length > 0) { $('#btnAddComment').removeAttr('disabled').bind('click', JS_AB.profiles.commentsHandler._initAddComment); }
		$('p.flagLink a').bind('click', JS_AB.profiles.commentsHandler._initFlagComment);
	},
	_initAddComment : function(evt) {
		evt.preventDefault();
		$('#btnAddComment').attr('disabled','disabled');
		$('#spinner').css('visibility','visible');
		postData = $('#addCommentForm').serialize();
		JS_AB.profiles.commentsHandler._doAddComment(postData);
	},
	_doAddComment : function(postData) {
		$.ajax({
			url: '/ajax.php?module=profiles&action=add_comment',
			type: 'post',
			dataType: 'json',
			cache: false,
			data: postData,
			success: function(json) { JS_AB.profiles.commentsHandler._doneAddComment(json); },
			error: function(xhr,err,e) { alert(err + ' ' + e, 'Critical Error'); }
		});
	},
	_doneAddComment : function(json) {
		if (JS_AB.profiles.debug) console.log(json);
		switch (parseInt(json.status.code)) {
			case 200:
			case 400:
				if(json.content.comment.status == 'spam')
				{
					alert('Marked as spam.');
				}
				
				else
				{
					toInsert = JS_NETLASH.utils.string.assignFromObject(JS_NETLASH.utils.string.assignFromObject(JS_AB.profiles.commentsHandler.blob, json.content.user), json.content.comment);
					toInsert = JS_NETLASH.utils.string.replaceAll(toInsert, '{lblFlagContent}', json.content.lblFlagContent);
					if (JS_AB.profiles.debug)	console.log(toInsert);
					$('#shoutbox-comments').prepend(toInsert);
					$('#addCommentForm').get(0).reset();
					$('#shoutbox-no-comments').remove();
					$('p.flagLink a').bind('click', JS_AB.profiles.commentsHandler._initFlagComment);
				}
			break;
			case 500:
			default:
				alert(json.status.text);
			break;
		}
		$('#btnAddComment').removeAttr('disabled');
		$('#spinner').css('visibility','hidden');
	},
	_initFlagComment : function(evt) {
		evt.preventDefault();
		if (JS_AB.profiles.debug)	console.log(evt);
		var id = evt.target.id.toString().substring(13);
		$(evt.target).parent().html(JS_NETLASH.utils.string.replaceAll(JS_AB.profiles.commentsHandler.spinner, '{id}', id));
		postData = 'comment_id=' + id;
		JS_AB.profiles.commentsHandler._doFlagComment(postData, id);
	},
	_doFlagComment : function(postData, id) {
		$.ajax({
			url: '/ajax.php?module=profiles&action=flag_comment',
			type: 'post',
			dataType: 'json',
			cache: false,
			data: postData,
			success: function(json) { JS_AB.profiles.commentsHandler._doneFlagComment(json, id); },
			error: function(xhr,err,e) {
				alert(err + ' ' + e, 'Critical Error');
				if(!JS_AB.profiles.debug) window.location.reload();
			}
		});
	},
	_doneFlagComment : function(json, id) {
		if (JS_AB.profiles.debug) console.log(json);
		switch (parseInt(json.status.code)) {
			case 200:
			case 400:
				$('#flagLink_'+id).parent().parent().parent().slideUp(null, function() {$(this).remove(); } );
			break;
			case 500:
			default:
				alert(json.status.text);
				if(!JS_AB.profiles.debug) window.location.reload();
			break;
		}
	},
	_eoo : true
}
JS_AB.profiles.friendsHandler = {
	spinner : '<img src="/modules/core/layout/images/spinner.gif" id="friend_spinner" style="visibility: visible;" />',
	btnNotFriend : '<div><a href="#" class="button button-fixed" id="btnAddFriendRequest"><span>{msg}</span></a></div>',
	btnFriendRequested : '<div class="awaitingrequest secondarycontent clearfix"><p>{msg}</p><a href="#" class="cancelButton modal-box-toggle" rel="removeFriendRequest">{cancel}<span>&nbsp;</span></a></div>',
	lblIsFriend : '<div class="friend-status secondarycontent clearfix">{msg}</div></li>',
	init : function() {
		$('#btnAddFriendRequest').bind('click', JS_AB.profiles.friendsHandler._initAddFriendRequest);
		$('#btnRemoveFriendRequest').bind('click', JS_AB.profiles.friendsHandler._initRemoveFriendRequest);
		$('#btnRemoveFriend').bind('click', JS_AB.profiles.friendsHandler._initRemoveFriend);
		$('#addFriendAll').bind('change', JS_AB.profiles.friendsHandler._selectAll);
		$('#addSelected').bind('click', JS_AB.profiles.friendsHandler._initAddFriends);
		$('#denySelected').bind('click', JS_AB.profiles.friendsHandler._initDenyFriendRequests);
	},
	_initAddFriendRequest : function(evt) {
		evt.preventDefault();
		$('#btnAddFriendRequest').addClass('button-disabled');
		$('#friend_spinner').css('visibility','visible');
		postData = $('#friendRequestForm').serialize();
		JS_AB.profiles.friendsHandler._doAddFriendRequest(postData);
	},
	_initRemoveFriendRequest : function(evt) {
		evt.preventDefault();
		$('.modal-box-close', this.parentNode).click();
		$('#friend_spinner').css('visibility','visible');
		postData = 'profile_id=' + profileId;
		JS_AB.profiles.friendsHandler._doRemoveFriendRequest(postData);
	},
	_doAddFriendRequest	: function(postData) {
		$.ajax({
			url: '/ajax.php?module=profiles&action=add_friend_request',
			type: 'post',
			dataType: 'json',
			cache: false,
			data: postData,
			success: function(json) { JS_AB.profiles.friendsHandler._doneAddFriendRequest(json); },
			error: function(xhr,err,e) { alert(err + ' ' + e, 'Critical Error'); }
		});
	},
	_doRemoveFriendRequest : function(postData) {
		$.ajax({
			url: '/ajax.php?module=profiles&action=remove_friend_request',
			type: 'post',
			dataType: 'json',
			cache: false,
			data: postData,
			success: function(json) { JS_AB.profiles.friendsHandler._doneRemoveFriendRequest(json); },
			error: function(xhr,err,e) { alert(err + ' ' + e, 'Critical Error'); }
		});
	},
	_doneAddFriendRequest : function(json) {
		if (JS_AB.profiles.debug) console.log(json);
		switch (parseInt(json.status.code)) {
			case 200:
			case 400:
				$('#friendRequestForm').get(0).reset();
				if(json.content.status == 'friends') { $('#btnAddFriendRequest').parent().parent().html(JS_NETLASH.utils.string.assignFromObject(JS_AB.profiles.friendsHandler.lblIsFriend, json.content)); }
				else { $('#btnAddFriendRequest').parent().parent().html(JS_NETLASH.utils.string.assignFromObject(JS_AB.profiles.friendsHandler.btnFriendRequested, json.content)); }
				JS_AB.general._hookModalBoxes();
				this.init();
			break;
			case 500:
			default:
				alert(json.status.text);
			break;
		}
		$('#friend_spinner').css('visibility','hidden');
	},
	_doneRemoveFriendRequest : function(json) {
		if (JS_AB.profiles.debug) console.log(json);
		switch (parseInt(json.status.code)) {
			case 200:
			case 400:
				$('.cancelButton').parent().parent().html(JS_NETLASH.utils.string.assignFromObject(JS_AB.profiles.friendsHandler.btnNotFriend, {'msg' : json.content.msg}));
				this.init();
			break;
			case 500:
			default:
				alert(json.status.text);
			break;
		}
		$('#friend_spinner').css('visibility','hidden');
	},
	_initAddFriends : function(evt) {
		evt.preventDefault();
		if (JS_AB.profiles.debug) console.log(evt);
		var friendId = JS_AB.profiles.friendsHandler._getChecked().join(',');
		if(friendId == "") { return false; }
		$(this).parent().prepend(JS_AB.profiles.friendsHandler.spinner);
		$('#addSelected, #denySelected').addClass('button-disabled');
		var friendId = JS_AB.profiles.friendsHandler._getChecked().join(',');
		postData = 'friend_id=' + friendId;
		JS_AB.profiles.friendsHandler._doAddFriend(postData, friendId);
	},
	_doAddFriend : function(postData, id) {
		$.ajax({
			url: '/ajax.php?module=profiles&action=add_friend',
			type: 'post',
			dataType: 'json',
			cache: false,
			data: postData,
			success: function(json) { JS_AB.profiles.friendsHandler._doneAddFriend(json, id); },
			error: function(xhr,err,e) { alert(err + ' ' + e, 'Critical Error'); }
		});
	},
	_doneAddFriend : function(json, id) {
		if (JS_AB.profiles.debug) console.log(json);
		switch (parseInt(json.status.code)) {
			case 200:
			case 400:
				jQuery.each(JS_AB.profiles.friendsHandler._getChecked(), function() {
					var li = $('#addFriend_'+this).parent().parent();
					li.removeClass('request');
					$('.check', li).remove();
					if($('#my-friends').length == 0) $('#friend_holder').html('<ul id="my-friends" class="friends-list clearfix"></ul>');
					li.remove().prependTo('#my-friends');
				});
				if($('#friend-requests input[type=checkbox]').length == 1) { $('#requests').slideUp(500, function() { $(this).remove(); }); }
				$('#friend-status').html(json.content.msg);
				$('#addSelected, #denySelected').removeClass('button-disabled');
				$('#friend_spinner').css('visibility','hidden');
			break;
			case 500:
			default:
				alert(json.status.text);
				if(!JS_AB.profiles.debug) window.location.reload();
			break;
		}
	},
	_initDenyFriendRequests	: function(evt) {
		evt.preventDefault();
		if (JS_AB.profiles.debug)	console.log(evt);
		var friendId = JS_AB.profiles.friendsHandler._getChecked().join(',');
		if(friendId == "") { return false; }
		$(this).parent().prepend(JS_AB.profiles.friendsHandler.spinner);
		$('#addSelected, #denySelected').addClass('button-disabled');
		var friendId = JS_AB.profiles.friendsHandler._getChecked().join(',');
		postData = 'friend_id=' + friendId;
		JS_AB.profiles.friendsHandler._doDenyFriendRequests(postData, friendId);
	},
	_doDenyFriendRequests : function(postData, id) {
		$.ajax({
			url: '/ajax.php?module=profiles&action=deny_friend_request',
			type: 'post',
			dataType: 'json',
			cache: false,
			data: postData,
			success: function(json) { JS_AB.profiles.friendsHandler._doneDenyFriendRequests(json, id); },
			error: function(xhr,err,e) {
				alert(err + ' ' + e, 'Critical Error');
				if(!JS_AB.profiles.debug) window.location.reload();
			}
		});
	},
	_doneDenyFriendRequests	: function(json, id) {
		if (JS_AB.profiles.debug) console.log(json);
		switch (parseInt(json.status.code)) {
			case 200:
			case 400:
				jQuery.each(JS_AB.profiles.friendsHandler._getChecked(), function() { var li = $('#addFriend_'+this).parent().parent().remove(); });
				if($('#friend-requests input[type=checkbox]').length == 1) { $('#requests').slideUp(500, function() { $(this).remove(); }); }
				$('#friend-status').html(json.content.msg);
				$('#addSelected, #denySelected').removeClass('button-disabled');
				$('#friend_spinner').css('visibility','hidden');
			break;
			case 500:
			default:
				alert(json.status.text);
			break;
		}
	},
	_initRemoveFriend : function(evt) {
		evt.preventDefault();
		if (JS_AB.profiles.debug)	console.log(evt);
		$('.modal-box-close', this.parentNode).click();
		$('#friend_spinner').css('visibility','visible');
		postData = 'profile_id=' + profileId;
		JS_AB.profiles.friendsHandler._doRemoveFriend(postData);
	},
	_doRemoveFriend : function(postData) {
		$.ajax({
			url: '/ajax.php?module=profiles&action=remove_friend',
			type: 'post',
			dataType: 'json',
			cache: false,
			data: postData,
			success: function(json) { JS_AB.profiles.friendsHandler._doneRemoveFriend(json); },
			error: function(xhr,err,e) { alert(err + ' ' + e, 'Critical Error'); }
		});
	},
	_doneRemoveFriend : function(json, id) {
		if (JS_AB.profiles.debug) console.log(json);
		switch (parseInt(json.status.code)) {
			case 200:
			case 400:
				$('.friend-status').parent().html( JS_NETLASH.utils.string.assignFromObject(JS_AB.profiles.friendsHandler.btnNotFriend, {'msg' : json.content.msg}));
				this.init();
			break;
			case 500:
			default:
				alert(json.status.text);
			break;
		}
		$('#friend_spinner').css('visibility','hidden');
	},
	_selectAll : function(evt) {
		var value = $(this).attr('checked');
		$('#friend-requests input[type=checkbox]').each(function() { $(this).attr('checked', value); });
	},
	_getChecked : function() {
		var options = new Array();
		$('#friend-requests input[type=checkbox]').each(function() {
			if($(this).attr('checked') && $(this).attr('name')=="add_friend[]") options.push(parseInt($(this).val()));
		});
		return options;
	},
	_eoo : true
}
JS_AB.profiles.quickFriendSearchHandler = {
	init : function() {
		JS_AB.profiles.quickFriendSearchHandler._initDeleteFriend();
		$('#add_friend_button').bind('click', function(evt) { JS_AB.profiles.quickFriendSearchHandler._addFriend(evt); });
	},
	_addFriend : function(evt) {
			evt.preventDefault();
			evt.stopPropagation();
			if($('#friends_list li').length == 0) $('#buddies').val('');
			var id = $('#friends').val().split(':::')[0];
			var avatar = $('#friends').val().split(':::')[1];
			var nick = $('#friends').val().split(':::')[2];
			if(id == '-1') return false;
			if($('#buddy_' + id).length == 0) {
				$('#buddies').val($('#buddies').val() + ':::' + id);
				JS_AB.profiles.quickFriendSearchHandler._doneAddFriend(id, avatar, nick);
			} else $('#buddy_' + id).fadeTo('normal', 0.33).fadeTo('normal', 1);
	},
	_doneAddFriend : function(id, avatar, nick) {
		html = '<li id="buddy_'+ id +'"><div class="avatar avatar-48"><img src="/modulefiles/profiles/avatars/48x48/'+ avatar +'" width="48" height="48" /></div><p>'+ nick +' <a class="deleteTag noborder" href="#" rel="'+ id +'" title="{$lblDelete}">{$lblDelete}</a></p></li>';
		$('#friends_list').append(html);
		$('#recipients').fadeIn('fast');
		JS_AB.profiles.quickFriendSearchHandler._initDeleteFriend();
	},
	_initDeleteFriend : function(evt) {
		$('.deleteTag').bind('click', function(evt) {
			evt.preventDefault();
			evt.stopPropagation();
			id = $(this).attr('rel');
			$('#buddies').val($('#buddies').val().replace(':::' + id, ''));
			if($('#friends_list li').length == 0) $('#buddies').val('');
			$('#buddy_'+ id).remove();
		});
	},
	_eoo : true
}
$(document).ready(function() { JS_AB.profiles.init(); });
