/**
* Friends Class
*
* @requires prototype.js
* @author Adrian
*/
var Friends = Class.create();

Friends.prototype = {
	/**
	 * default constructor
	 */
	initialize: function() {
	},

	accept: function() {
		if (!$('friendsForm'))
			return false;
		
		var requestsCounter = parseInt($('requestsCounter').innerHTML);
		var onPageFriends = (requestsCounter >= 20)? 20: requestsCounter;
		
		postData = Form.serializeElements(Form.getInputs('friendsForm', 'checkbox'));

		if (!postData)
		{
			systemMessenger.set(noFriend, 0);
			systemMessenger.display();
			return false;
		}

		new Ajax.Request(PUBLIC_URL+'ajax/accept-friend', {
			method: 'post',
			postBody: postData,
			evalJS: 'force',
			onSuccess: function(transport) {
				Form.getInputs('friendsForm', 'checkbox').each(function(el) {
					if (el.checked) {
						function callback()
						{
							$('user'+el.value).remove();
						}
						new Effect.Fade('user'+el.value, {duration: 1, delay: 0.2, afterFinish: callback});
						
						requestsCounter--;
						onPageFriends--;
						$('requestsCounter').innerHTML = requestsCounter;
						
						if(parseInt($('FriendRequestsCount').innerHTML) == 1) {
							$('FriendRequests').innerHTML = "";
						} else {
							$('FriendRequestsCount').innerHTML = parseInt($('FriendRequestsCount').innerHTML) - 1;
						}
						
//						if (onPageFriends <= 0) {
							setTimeout('window.location.href = window.location.href',2000);
//						}
					}
				});
			}
		});
	},

	acceptrequest: function() {
		if (!$('friendsForm'))
			return false;

		var requestsCounter = parseInt($('requestsCounter').innerHTML);
		var onPageFriends = (requestsCounter >= 20)? 20: requestsCounter;

		postData = Form.serializeElements(Form.getInputs('friendsForm', 'checkbox'));

		if (!postData)
		{
			systemMessenger.set(noFriend, 0);
			systemMessenger.display();
			return false;
		}

		new Ajax.Request(PUBLIC_URL+'ajax/accept-friend-request', {
			method: 'post',
			postBody: postData,
			evalJS: 'force',
			onSuccess: function(transport) {
				Form.getInputs('friendsForm', 'checkbox').each(function(el) {
					if (el.checked) {
						function callback()
						{
							$('user'+el.value).remove();
						}
						new Effect.Fade('user'+el.value, {duration: 1, delay: 0.2, afterFinish: callback});

						requestsCounter--;
						onPageFriends--;
						$('requestsCounter').innerHTML = requestsCounter;

						if(parseInt($('FriendRequestsCount').innerHTML) == 1) {
							$('FriendRequests').innerHTML = "";
						} else {
							$('FriendRequestsCount').innerHTML = parseInt($('FriendRequestsCount').innerHTML) - 1;
						}

//						if (onPageFriends <= 0) {
							setTimeout('window.location.href = window.location.href',2000);
//						}
					}
				});
			}
		});
	},

	reject: function() {
		if (!$('friendsForm'))
			return false;
		
		var requestsCounter = parseInt($('requestsCounter').innerHTML);
		var onPageFriends = (requestsCounter >= 20)? 20: requestsCounter;
		
		postData = Form.serializeElements(Form.getInputs('friendsForm', 'checkbox'));

		if (!postData)
		{
			systemMessenger.set(noFriend, 0);
			systemMessenger.display();
			return false;
		}

		new Ajax.Request(PUBLIC_URL+'ajax/reject-friend', {
			method: 'post',
			postBody: postData,
			evalJS: 'force',
			onSuccess: function(transport) {
				Form.getInputs('friendsForm', 'checkbox').each(function(el) {
					if (el.checked) {
						function callback()
						{
							$('user'+el.value).remove();
						}
						new Effect.Fade('user'+el.value, {duration: 1, delay: 0.2, afterFinish: callback});
						requestsCounter--;
						onPageFriends--;
						$('requestsCounter').innerHTML = requestsCounter;
						
						if(parseInt($('FriendRequestsCount').innerHTML) == 1) {
							$('FriendRequests').innerHTML = "";
						} else {
							$('FriendRequestsCount').innerHTML = parseInt($('FriendRequestsCount').innerHTML) - 1;
						}
						
//						if (onPageFriends <= 0) {
							setTimeout('window.location.href = window.location.href',2000);
//						}
					}
				});
			}
		});
	},

	remove: function(ditat) {

		if (!$('friendsForm'))
			return false;

		if (!$('topBarCounter')) {
			var requestsCounter = parseInt($('requestsCounter').innerHTML);
			var onPageFriends = (requestsCounter >= 20)? 20: requestsCounter;
		} else {
			var topBarCounter = parseInt($('topBarCounter').innerHTML);
			var onPageFriends = (topBarCounter >= 16)? 16: topBarCounter;
			var requestsCounter = topBarCounter;
		}
		
		postData = Form.serializeElements(Form.getInputs('friendsForm', 'checkbox'));

		if (!postData)
		{
			systemMessenger.set(noFriend, 0);
			systemMessenger.display();
			return false;
		}
		
		fandelete = '';
		if (ditat) {
			fandelete = '/fan/1';
		}

		new Ajax.Request(PUBLIC_URL+'ajax/remove-friend'+fandelete, {
			method: 'post',
			postBody: postData,
			evalJS: 'force',
			onSuccess: function(transport) {
				Form.getInputs('friendsForm', 'checkbox').each(function(el) {
					if (el.checked) {
						function callback()
						{
							$('user'+el.value).remove();
						}
						new Effect.Fade('user'+el.value, {duration: 1, delay: 0.2, afterFinish: callback});

						topBarCounter--;
						onPageFriends--;
						requestsCounter--;
		
						if (!$('topBarCounter')) {
							$('requestsCounter').innerHTML = requestsCounter;
						} else {
							$('topBarCounter').innerHTML = topBarCounter;
						}
//						if (onPageFriends <= 0) {
							setTimeout('window.location.href = window.location.href',1000);
//						}
					}
				});
				friends.ungroupedFriendsUpdater();
			}
		});
	},
	
	createList: function(e) {
			if (!$F('listTitle').trim())
				return;
	
			$('listTitle').disable();
			new Ajax.Request(PUBLIC_URL+'ajax/create-list', {
					method: 'post',
					postBody: Object.toQueryString({title: $F('listTitle')}),
					evalJS: 'force',
					evalJSON: 'force',
					onSuccess: function(transport) {
						list = transport.responseJSON;
						$('listTitle').enable();
						$('listTitle').value = '';
	
						if (!list['id'])
							return;
						if ($('fix_img').childElements().length % 2 == 0) {
							cssClass = 'grupuri_container_right';
						} else {
							cssClass = 'grupuri_container_left';
						}
	
						$('ungroupedList').insert({before: '<li id="list' + list['id'] + '" style="display: none;" class="'+cssClass+'"><a href="javascript:void(0);" onclick="friends.removeList(' + list['id'] + ')" /><img class="x_bullet" src="'+ staticContentImages + 'friends/btn_del.gif" /></a><a class="link_to_another" href="' + list['pageURL'] + '">' + list['title'] +' (<strong class="number_list" id="list'+list['id']+'count">0</strong>)</a></li>'});
						$('friendsGroupSel').insert({bottom: '<option value="' + list['id'] + '">' + list['title'] +' </option>'});
						$('friendsGroupSel').selectedIndex = 0;
						$('friendsGroupSel').enable();
	
						if ($('fix_img').childElements().length % 2 == 0) {
							cssClass = 'grupuri_container_left';
						} else {
							cssClass = 'grupuri_container_right';
						}
						$('ungroupedList').setAttribute('class', cssClass);
						if (parseInt($('group_count').innerHTML) == 0) {
							new Effect.BlindDown('ungroupedList', {duration: 1, delay: 0.2});
						}
						new Effect.BlindDown('list' + list['id'], {duration: 1, delay: 0.2});
						$('group_count').innerHTML = parseInt($('group_count').innerHTML) + 1;
						if ($('group_count').innerHTML == 2 && $F('pageAction') == 'group') {
							new Effect.SlideDown('friendsGroupsArea', {duration: 1});
						}
	
						systemMessenger.set(list['message'], 1);
						systemMessenger.display();
					}
			});
	},
	removeList: function(listId) {
		if (confirm(deleteGrouopText)) {
			new Ajax.Request(PUBLIC_URL+'ajax/delete-list', {
				method: 'post',
				postBody: Object.toQueryString({listId: listId}),
				evalJS: 'force',
				onSuccess: function(transport) {
					function callback()
					{
						$('list'+listId).remove();
						 for(i=0;i<document.friendsGroupForm.friendsGroups.options.length;i++) {
                                                    if(document.friendsGroupForm.friendsGroups.options[i].value==listId){
                                                        document.friendsGroupForm.friendsGroups.options[i]=null;
														$('group_count').innerHTML = parseInt($('group_count').innerHTML) - 1;
														if (parseInt($('group_count').innerHTML) == 1 && $F('pageAction') == 'group') {
															new Effect.SlideUp('friendsGroupsArea', {duration: 1});
														}
                                                        break;
                                                    }
                                                }
						friends.ungroupedFriendsUpdater();
					}
					if (parseInt($('group_count').innerHTML) == 1) {
						new Effect.BlindUp('ungroupedList', {duration: 1, delay: 0.2, afterFinish: callback});
					}
					new Effect.BlindUp('list'+listId, {duration: 1, delay: 0.2, afterFinish: callback});
				}
			});
		}
	},

	addToList: function() {
		if (!$('friendsForm') || $('friendsGroupSel').value == '0')
		{
			systemMessenger.set(noGroup, 0);
			systemMessenger.display();
			return false;
		}

		postData = Form.serializeElements(Form.getInputs('friendsForm', 'checkbox'));

		if (!postData)
		{
			systemMessenger.set(noFriend, 0);
			systemMessenger.display();
			return false;
		}

		postData = postData + '&' + Object.toQueryString({listId: $('friendsGroupSel').value});
		listBlockId = 'list' + $('friendsGroupSel').value;

		new Ajax.Request(PUBLIC_URL+'ajax/add-friend-to-list', {
			method: 'post',
			postBody: postData,
			evalJS: 'force',
			onSuccess: function(transport) {
				Form.getInputs('friendsForm', 'checkbox').each(function(el) {
					if (el.checked) {
						function callback()
						{
							$('user'+el.value).remove();
							//$('topBarCounter').innerHTML = parseInt($('topBarCounter').innerHTML) - 1;
							//$(listBlockId+'count').innerHTML = parseInt($(listBlockId+'count').innerHTML) + 1;
							setTimeout('window.location.href = window.location.href',2000);
						}
						new Effect.Fade('user'+el.value, {duration: 1, delay: 0.2, afterFinish: callback});
						
						$('deleteButtonsEnbl').style.display = 'none';
						$('deleteButtonsDsbl').style.display = 'block';
						
					}		
				});
			}
		});

		$('friendsGroupSel').selectedIndex = 0;
	},

	removeFromList: function(listId) {
		if (!$('friendsForm'))
			return false;

		postData = Form.serializeElements(Form.getInputs('friendsForm', 'checkbox'));

		if (!postData)
			return false;

		postData = postData + '&' + Object.toQueryString({listId: listId});
		listBlockId = 'list' + listId;

		new Ajax.Request(PUBLIC_URL+'ajax/remove-friend-from-list', {
			method: 'post',
			postBody: postData,
			evalJS: 'force',
			onSuccess: function(transport) {
				Form.getInputs('friendsForm', 'checkbox').each(function(el) {
					if (el.checked) {
						function callback()
						{
							$('user'+el.value).remove();
						}
						new Effect.Fade('user'+el.value, {duration: 1, delay: 0.2, afterFinish: callback});
						$('topBarCounter').innerHTML = parseInt($('topBarCounter').innerHTML) - 1;
						$(listBlockId+'count').innerHTML = parseInt($(listBlockId+'count').innerHTML) - 1;	
						$('deleteButtonsEnbl').style.display = 'none';
						$('deleteButtonsDsbl').style.display = 'block';
					}
				});
				friends.ungroupedFriendsUpdater();
			}
		});
	},

	multiSelect: function(type) {
		if (!$('friendsForm'))
				return false;

		formName = 'friendsForm';
		elements = Form.getInputs(formName, 'checkbox');

		switch(type) {
			case "none": elements.each( function(element) { element.checked = false; });
				break;
			case "all": elements.each( function(element) { element.checked = true; });
				break;
		}
	},
	
	parseCheckBoxes: function() {
		toDisplayDeleteButtons = 0;
		Form.getInputs('friendsForm', 'checkbox').each(function(el) {
			if (el.checked) toDisplayDeleteButtons = 1;
		})
		if (toDisplayDeleteButtons == 1) $('deleteButtonsEnbl').style.display = 'block';
		else $('deleteButtonsEnbl').style.display = 'none';
		
		if (toDisplayDeleteButtons == 0) $('deleteButtonsDsbl').style.display = 'block';
		else $('deleteButtonsDsbl').style.display = 'none';
		
	},
	
	setFindFriendsCookie: function(cookieContent) {
		document.cookie = 'search='+cookieContent+'; path=/';
	},
	
	fadeToggle: function(id) {
		if ($(id).style.display == 'none') {
			new Effect.Appear(id, {duration: 1});
		} else {
			new Effect.Fade(id, {duration: 1, delay: 0, from: 1, to: 0});
		}
	},
	
	addFriendFromRequest: function(id, addFriend, key) {
		new Ajax.Request(PUBLIC_URL + 'ajax/add-friend-from-request/', {
			method: 'post',
			parameters: 'friendId=' + id + '&addFriend=' + addFriend + '&key=' + key,
			onSuccess: function(response) {
				result = response.responseText.evalJSON();
				eval(result.errorText);
				if (result.error == 'success') {
					function fadeNew() {
						fr = result.friendsRequests;
						
						html = '';
						if (fr.length > 0) {
							if (fr[1]) {
								if (fr[1].sex == 'm') {
									genderClass = "user_male_link";
								} else {
									genderClass = "user_female_link";
								}
								
								html += " "
								+ "<div class='grupuri_container_left' id='request_"+keyCounter+"'>"
									+ "<a href='"+fr[1].getPageURL+"'>"
										+ "<img src='"+fr[1].getThumbnail+"' alt='' />"
									+ "</a>"
									+ "<a class='"+genderClass+"' href='"+fr[1].getPageURL+"'>"+fr[1].firstName+" "+fr[1].lastName+" "+fr[1].username+"</a> "
									+ "<span class='info_text'>"+fr[1].city+""+fr[1].age+"</span><br />"
									+ "<div style='float:left'>"
										+ ( result.publicProfile ? "<a href='javascript:void(0);' class='action_link' style='top:3px;' onclick='friends.addFriendFromRequest("+fr[1].friendId+", 2, "+keyCounter+");this.onclick=(function(){});' />"+fr[1].strAccept+"</a><br>" : "")
										+ "<a href='javascript:void(0);' class='action_link' style='top:3px;' onclick='friends.addFriendFromRequest("+fr[1].friendId+", 1, "+keyCounter+");this.onclick=(function(){});' />"+fr[1].strAcceptadd+"</a><br>"
										+ "<a href='javascript:void(0);' class='action_link' style='top:3px;' onclick='friends.addFriendFromRequest("+fr[1].friendId+", 0, "+keyCounter+");this.onclick=(function(){});' />"+fr[1].strRefuse+"</a>"
									+ "</div>"
									+ "<div class='clear_float'></div>"
								+ "</div>";
								keyCounter++;
							}
						}
						if (html != '') {
							$('friendRequestsList').innerHTML += html;
							new Effect.Fade('request_'+(keyCounter-1), {duration: 1, from: 0, to: 1});
						}
					}

                    if ($('newMenu')) {
                        var requestsCounter = parseInt($('FriendRequestsCount').innerHTML);
                        requestsCounter = (requestsCounter - 1 < 1)? 0 : requestsCounter - 1;
                        if (requestsCounter == 0) $('newMenu').remove();
                        else $('FriendRequestsCount').innerHTML = requestsCounter>100 ? '100+' : requestsCounter;
                    }
                    else {
                        var requestsCounter = parseInt($('requestsCounter').innerHTML);

                        requestsCounter = (requestsCounter - 1 < 1)? 0 : requestsCounter - 1;

                        $('requestsCounter').innerHTML = requestsCounter;
                        $('FriendRequestsCount').innerHTML = requestsCounter;
                    }
					
					new Effect.Fade('request_'+key, {duration: 1, from: 1, to: 0, afterFinish: fadeNew});
					function removeFriendRequests() {
						if (requestsCounter <= 0) {
							new Effect.SlideUp('friendRequests', {duration: 0.5, delay: 0.1});
						}
					}
					new Effect.Fade('request_'+key, {duration: 1, from: 1, to: 0, afterFinish: removeFriendRequests});
				}
			}
		});
	},
	
	ungroupedFriendsUpdater: function() {
		new Ajax.Request(PUBLIC_URL+'ajax/get-ungrouped-friends', {
			method: 'get',
			onSuccess: function(response) {
				result = response.responseText.evalJSON();
				if (result.errorText) {
					eval(result.errorText);
				} else {
					$('ungroupedFriendsCount').innerHTML = parseInt(result.count);
				}
			}
		});
	}
}

var friends = new Friends();

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, '');
};