function joinGroup(gid) {
	var refreshPage = 'no';
	var dataToSend = 'gid='+gid;
	if(arguments[1] == 'refresh'){
		refreshPage = 'yes';
	}
	
	if(arguments[2] == 'savereply'){
		dataToSend = $('#sendDiscussionReplyForm').serialize();
		dataToSend += '&replytosave=yes';
	}
	
	$.post("/groups/joingroup/", dataToSend, function(data, textStatus) {
		data = eval('('+data+')');
		
		if(data.response == 'ok') {
			$('#btnTopRightPageJoinGroup').fadeOut();
			$('#generalModelDialogContainer').html('<p>You have successfully joined this group</p><a href="#" class="ok" onclick="$(\'#generalModelDialogContainer\').dialog(\'close\');return false;">ok</a>');
			if($('#join-group-button_'+gid)) {
				$('#join-group-button_'+gid).hide();
				$('#leave-group-button_'+gid).show();
			}
			if($('#reject-group-button_'+gid)) {
				$('#reject-group-button_'+gid).hide();
			}
			
			$('#post-discussion-reply-logged-in').unbind().click(function() {
				sendDiscussionReply();
				return false;
			});
		} 
		
		if(data.response == 'alreadymember'){
			$('div#hubJoinGroupLightBox').find('p:first').html('You are already a member of this group');
		} else if(data.response == 'error'){
			$('div#hubJoinGroupLightBox').find('p:first').html('An Error occured. Please try again.');
		} else {
			$('div#hubJoinGroupLightBox').find('p:first').html('You have successfully join the group.');
			
			if(refreshPage='yes') {
				window.location = window.location.href;
			}
		}
		
		$('div#hubJoinGroupLightBox').dialog('open');

	}); //end $.post
}

function searchGroups(page) {
	var sortOrder = $('#groupListSort').val();
	var subZone = $('#groupSubZone').val();
	var location_id = $('#location_id').val();
	
	//Google Analytics
	//pageTracker._trackPageview(location.pathname);
	_gaq.push(['_trackPageview', location.pathname]);
	
	$('ul#group-listing').html('<h2><img src="/assets/images/structure/ajax-loader.gif" /> Please Wait...</h2>');
	
	$.post("/groups/searchgroups/page/"+page, {'order':sortOrder,'zoneID':subZone,'location_id':location_id}, function(data, textStatus) {
		data = eval('('+data+')');
		
		$('ul#group-listing').html('');
		 $.each(data.groups, function(val, group) {
			$('ul#group-listing').append(formatGroupsList(group));
			
  		});
		
		$('#groupsPaginator').html(formatGroupsPaginator(data.paginator,'searchGroups'));

	}); //end $.post
	
}

function formatGroupsList(data) {
	var returnHtml = '';
	
	returnHtml += '<li class="" style="min-height: 323px;">';
	returnHtml += '<a href="/group/'+ data.permalink+'">';
	returnHtml += '<img height="122" width="122" alt="'+data.name+'" src="'+data.imageUrl+'">';
	returnHtml += '</a>';
	returnHtml += '<div class="info">';
	returnHtml += '<h3>';
	returnHtml += '<a href="/group/'+ data.permalink+'">';
	returnHtml += 'Ballet Society';
	returnHtml += '<span class="location">'+data.location+'</span>';
	returnHtml += '</a>';
	returnHtml += '</h3>';
	returnHtml += '<p>'+data.description.substr(0,250)+'...</p>';
	returnHtml += '<div class="members-button">';
	returnHtml += '<p>'+data.noMembers+' members</p>';

	switch(data.showJoinButton) {
		case 'none':
			break;
		case 'showjoin':
			returnHtml += '<a href="#" onclick="joinGroup(\''+data.id+'\');$(this).hide();return false;" class="join-group">';
			returnHtml += '<img height="23" width="69" alt="Join Group" src="/assets/images/structure/btn-join-group.png">';
			returnHtml += '</a>';
			break;
		case 'showlogin':
			returnHtml += '<a class="join-group not-logged" href="#" onclick="window.location.href=\'/groups/mustbeloggedin\';">';
			returnHtml += 'Join group';
			returnHtml += '</a>';
			break;
	}

	returnHtml += '</div>';
	returnHtml += '</div>';
	returnHtml += '</li>';
	
	return returnHtml;
}

function formatGroupsPaginator(paginator,functionName) {

	var paginatorHtml = '';
	if (paginator.pageCount){
		paginatorHtml = '<ul class="pagenation default-paginator">';
		if (paginator.previous){ 
			paginatorHtml += '<li>';
			paginatorHtml += '<a class="pagenationArrowPrev" href="#" onclick="'+ functionName +'('+paginator.previous+'); return false;">';
			paginatorHtml += '<strong>Previous</strong>';
			paginatorHtml += '</a>';
			paginatorHtml += '</li>';
		} 
		if(parseInt(paginator.pageCount) > 1){
			$.each(paginator.pagesInRange, function(val, page) { 

			  if (page != paginator.current) {
				  paginatorHtml += '<li><a href="#" onclick="'+ functionName +'('+page+'); return false;"><strong>'+page+'</strong></a></li>';
			  } else { 
				  paginatorHtml += '<li><a class="pagenationSelect" href="#" onclick="'+ functionName +'('+page+'); return false;"><strong>'+page+'</strong></a></li>';
			  } 
			}); 
		}
	if (paginator.next){
		paginatorHtml += '<li>';
		paginatorHtml += '<a class="pagenationArrowNext" href="#" onclick="'+ functionName +'('+paginator.next+'); return false;">';
		paginatorHtml += '<strong>Next</strong>';
		paginatorHtml += '</a>';
		paginatorHtml += '</li>';
	} 
	paginatorHtml += '</ul>';
	}
	return paginatorHtml;
}

function filterInterestingGroups(page) {

	var zoneID = $('#filterZoneID').val();
	var locationId = $('#groupLocationId').val();

	//update google analytics.
	//pageTracker._trackPageview(location.pathname);
	_gaq.push(['_trackPageview', location.pathname]);
	
	$('span.category').removeClass('imgPurpleBdr');
	$('#zoneImage_'+zoneID).addClass('imgPurpleBdr');
	
	$('#groupsOfInterestList').html('<li><h2><img src="/assets/images/structure/ajax-loader.gif" /> Please Wait...</h2></li>');
	
	$.post("/ajax/groupsinterest/page/"+page, {'zoneID':zoneID,'location_id':locationId}, function(data, textStatus) {
		data = eval('('+data+')');
		
		$('#groupsOfInterestList').html('');
		if(data.groups.length > 0) {
		 $.each(data.groups, function(val, group) {
			$('#groupsOfInterestList').append(formatGroupsList(group));
			
  		});
		} else {
			$('#groupsOfInterestList').html('<li><h3>Sorry, no suggestions at this time</h3></li>');
		}
		$('#groupsPaginator').html(formatGroupsPaginator(data.paginator,'filterInterestingGroups'));

	}); //end $.post
}

function leaveGroup(gid) {
	$.post("/groups/leavegroup/", {'gid':gid}, function(data, textStatus) {
		data = eval('('+data+')');
		
		if(data.response == 'ok') {
			$('#displayGroupContainer_'+ gid).fadeOut();
			$('#generalModelDialogContainer').html('<p>You have left this group</p><div class="grey-rounded"><a href="#" class="ok" onclick="$(\'#generalModelDialogContainer\').dialog(\'close\');return false;">ok</a></div>');
			$('#generalModelDialogContainer').dialog({ autoOpen: false }); 
			$('#generalModelDialogContainer').dialog('open');
			if($('#leave-group-button_'+gid)) {
				$('#join-group-button_'+gid).show();
				$('#leave-group-button_'+gid).hide();
			}
		} 
		
		
		if(data.response == 'error'){
			$('#generalModelDialogContainer').html('<p>An Error occured. Please try again</p><div class="grey-rounded"><a href="#" class="ok" onclick="$(\'#generalModelDialogContainer\').dialog(\'close\');return false;">ok</a></div>');
			$('#generalModelDialogContainer').dialog({ autoOpen: false }); 
			$('#generalModelDialogContainer').dialog('open');
		}
		
		

	}); //end $.post
}

function toggleNotifications(gid,what) {
	var currentSetting = $('#group-'+what+'-notifications_'+gid).val();
	
	$('#'+what+'-notifications-image_'+gid).attr('src',"/assets/images/structure/ajax-loader.gif");
	
	$.post("/ajax/togglenotifications/", {'gid':gid,'what':what}, function(data, textStatus) {
		data = eval('('+data+')');
		
		if(data.response == 'ok') {
			switch(currentSetting) {
			case 'on':
				$('#group-'+what+'-notifications_'+gid).val('off');
				$('#'+what+'-notifications-image_'+gid).attr('src',"/assets/images/buttons/delete.gif");
				break;
			case 'off':
				$('#group-'+what+'-notifications_'+gid).val('on');
				$('#'+what+'-notifications-image_'+gid).attr('src',"/assets/images/buttons/accept.gif");
				break;
			}
		} 
		
		
		if(data.response == 'error'){
			$('#generalModelDialogContainer').html('<p>An Error occured. Please try again</p><div class="grey-rounded"><a href="#" class="ok" onclick="$(\'#generalModelDialogContainer\').dialog(\'close\');return false;">ok</a></div>');
			$('#generalModelDialogContainer').dialog({ autoOpen: false }); 
			$('#generalModelDialogContainer').dialog('open');
		}
		
	}); //end $.post
}

function initialiseGroupInvite(gid) {
	
	$("#group-invite-dialog").dialog('open');
	
	if(gid){
		$("#group-invite-dialog").html('<h2><img src="/assets/images/structure/ajax-loader.gif" /> Generating friend list. Please Wait...</h2>');
	
		$("#group-invite-dialog").append('<form id="group-inviter-form" action="/ajax/groupinvite" method="post"></form>');
		$('#group-inviter-form').append('<input type="hidden" name="gid" id="gid" value="'+gid+'" />');
		$('#group-inviter-form').append('<input type="hidden" name="step" id="step" value="1" />');
	}
	
	dataToSend = $('#group-inviter-form').serialize();
	
	if($('#group-inviter-form')) {
		$("#group-invite-dialog").html('<h2><img src="/assets/images/structure/ajax-loader.gif" /> Processing. Please Wait... (this may take a minute if you have lots of friends)</h2>');	
	}
	
	$.post("/ajax/groupinvite/", dataToSend, function(data, textStatus) {
		data = eval('('+data+')');
		
		$("#group-invite-dialog").html('');
		switch(data.response) {
		case 'listfriends':
			$('#group-invite-dialog').html('<form action="/ajax/groupinvite" method="post" id="group-inviter-form"></form>');
			$('#group-inviter-form').append('<input type="hidden" name="step" id="step" value="2" />');
			$('#group-inviter-form').append('<input type="hidden" name="gid" id="gid" value="'+gid+'" />');
			$('#group-inviter-form').append('<div id="scroll-box"></div>');
			$('#scroll-box').append('<div class="find-friends" id="friends-container"></div>');
			$('#group-inviter-form').append('<div class="button-top"><a href="#" onclick="$(\'#group-invite-dialog\').dialog(\'close\'); return false;">Cancel</a><input class="send-friend-request" type="image" name="invitebutton" alt="Send Invites" src="/assets/images/buttons/forms/confirm.png" onclick="initialiseGroupInvite(); return false;" /></div>');
			
			$('#friends-container').append('<p>Here is a list of your friends who are not yet members of this group. You can invite them below:</p>');
			$('#friends-container').append('<ul id="friends-list"></ul>');
			$('#friends-list').append('<li class="add-all"><input type="checkbox" id="checkAllFriends" value="1" class="checkAllFriends" onclick="toggleCheckboxes(\'checkAllFriends\',\'friends\');" /><label><strong>Select/Deselect all</strong></label></li>');
			
			$.each(data.friends, function(username, userData) { 
				
				$('#friends-list').append(outputFriendListItem('friends',userData));
  			});
			
			break;
		case 'finished':
			$("#group-invite-dialog").html('<p class="info">Your selected friends have been invited to join this group!</p>');
			$("#group-invite-dialog").append('<div class="button-top"><a href="#" class="ok" onclick="$(\'#group-invite-dialog\').dialog(\'close\');return false;">ok</a></div>');
			break;
		case 'noneselected':
			$("#group-invite-dialog").html('<p class="info">No friends selected - no invites sent.</p>');
			$("#group-invite-dialog").append('<div class="button-top"><a href="#" class="ok" onclick="$(\'#group-invite-dialog\').dialog(\'close\');return false;">ok</a></div>');
			break;
		case 'nofriends':
			$("#group-invite-dialog").html('<p class="info">You either currently have no friends, they have already been invited, or they are all existing members of this group</p>');
			$("#group-invite-dialog").append('<div class="button-top"><a href="#" class="ok" onclick="$(\'#group-invite-dialog\').dialog(\'close\');return false;">ok</a></div>');
			break;
		case 'notmember':
			$("#group-invite-dialog").html('<p class="info">You are not a member of this group</p>');
			$("#group-invite-dialog").append('<div class="button-top"><a href="#" class="ok" onclick="$(\'#group-invite-dialog\').dialog(\'close\');return false;">ok</a></div>');
			break;
		case 'error':
			$("#group-invite-dialog").html('<p class="info">Error</p>');
			$("#group-invite-dialog").append('<div class="button-top"><a href="#" class="ok" onclick="$(\'#group-invite-dialog\').dialog(\'close\');return false;">ok</a></div>');
			break;
		case 'notloggedin':
			$("#group-invite-dialog").html('<p class="info">You are not logged in</p>');
			$("#group-invite-dialog").append('<div class="button-top"><a href="#" class="ok" onclick="$(\'#group-invite-dialog\').dialog(\'close\');return false;">ok</a></div>');
			break;
			
		}
	}); //end $.post
		
}

function outputFriendListItem(elementname,userData) {
	var returnHtml = '';
	
	returnHtml = '<li>';
	returnHtml += '<input type="checkbox" name="'+elementname+'[]" class="'+elementname+'" value="'+userData.username+'" />';
	returnHtml += '<img src="'+userData.imageUrl+'" width="75" />';
	returnHtml += '<label>'+userData.firstname+' '+userData.lastname+'</label>';
	returnHtml += '</li>';
	
	return returnHtml;
}

function toggleCheckboxes(whatClass,classToCheck) {
	var tog = false;

	if($('input.'+whatClass+':checked').val() == '1') {
		tog = true;
	} else {
		tog = false;
	}
	$("input[type=checkbox]."+classToCheck).attr("checked",tog);
}

function rejectGroupInvite(gid,nid) {
	$.post("/ajax/rejectgroupinvite/", {'gid':gid}, function(data, textStatus) {
		data = eval('('+data+')');
		
		removeNotice(nid);
		return true;
	}); //end $.post
}

function triggerEditables() {
	switch($('#editbuttonstatus').val()){
	case 'closed':
		//$('#name').trigger('click');
		$('#description').trigger('click');
		$('#location_id').trigger('click');
		$('#editbuttonstatus').val('opened');
		$('.del-tag').show();
		$('#add-interest').show();
	break;
	case 'opened':
		if($('#nameCancel')){
			$('#nameCancel').trigger('click');
		}
		if($('#descCancel')){
			$('#descCancel').trigger('click');
		}
		if($('#locationCancel')){
			$('#locationCancel').trigger('click');
		}
		
		$('#editbuttonstatus').val('closed');
		$('.del-tag').hide();
		$('#add-interest').hide();
		$('#addMoreTagsForm').hide();
		break;
	}
}

function formatResult(row) {
	return row[0].replace(/(<.+?>)/gi, '');
}

function deleteTag(tid,gid) {
	$.post("/groups/deletetag/", {'tid':tid,'gid':gid}, function(data, textStatus) {
		data = eval('('+data+')');
		
		if(data.response == 'ok') {
			$('#interestTagContainer_'+tid).fadeOut();
		} 
		
		if(data.response == 'error'){
			$('#generalModelDialogContainer').text('An Error occured. Please try again');		
			$('#generalModelDialogContainer').dialog();
		}
		
	}); //end $.post
}

function changeZoneInfo(id) {
	$.each($('img.topLevelZoneImageClass'), function(val, image) {
		$(image).hide();
	});
	$.each($('.topLevelZoneDescriptionClass'), function(val, desc) {
		$(desc).hide();
	});
	$('#topLevelZoneDescription_'+id).show();
	$('#topLevelZoneImage_'+id).show();
}

function getPostcode() {
	if(jQuery("#postcode").val() != '') {
		var localSearch = new GlocalSearch();
		
		localSearch.setSearchCompleteCallback(null, function(){
			if(localSearch.results[0]){
				jQuery('#latitude').attr('value',localSearch.results[0].lat);
				jQuery('#longitude').attr('value',localSearch.results[0].lng);
				jQuery("#creategroupform").submit();
			}else {
				jQuery('#latitude').attr('value','');
				jQuery('#longitude').attr('value','');
				jQuery("#creategroupform").submit();
			}
		});
		localSearch.execute(jQuery.trim(jQuery("#postcode").val()) + ", UK");
	} else {
		jQuery("#creategroupform").submit();
	}
}

function quoteResponse(postername,id) {
	var quotedText = '';
	quotedText = '[quote]';
	quotedText += postername+' said: ';
	quotedText += $('#comment_'+id).html()
								   .trim()
								   .replace(/<span class="blockquote">/g,'[quote]')
								   .replace(/<\/span>/g,'[/quote]')
								   .replace(/<br>/g,'\n');
	quotedText += '[/quote]';
	$('.discussionContentTextarea').val(quotedText);
}
