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) {

	    if(data.response == 'ok') {
	    	$('#btnTopRightPageJoinGroup').fadeOut();
	    	$('#generalModelDialogContainer').html('<p>You have successfully joined this group</p><div class="grey-rounded"><a href="#" class="ok" onclick="$(\'#generalModelDialogContainer\').dialog(\'close\');return false;">ok</a></div>');
	    	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();
	    	}
	    } 
	    
	    if(data.response == 'alreadymember'){
	    	$('#generalModelDialogContainer').html('<p>You are already a member of this group</p><div class="grey-rounded"><a href="#" class="ok" onclick="$(\'#generalModelDialogContainer\').dialog(\'close\');return false;">ok</a></div>');		
	    }

	    if(data.response == 'error'){
	    	$('#generalModelDialogContainer').html('<p>An Error occured. Please try again</p><div class="grey-rounded"><div class="grey-rounded"><a href="#" class="ok" onclick="$(\'#generalModelDialogContainer\').dialog(\'close\');return false;">ok</a></div>');		
	    }
	    if(refreshPage == 'yes') {
	    $('#generalModelDialogContainer').dialog({ autoOpen: false,height:30,close: function() {window.location.reload();} });
	    } else {
	    	$('#generalModelDialogContainer').dialog({ autoOpen: false,height:30 });
	    }
	    $('#generalModelDialogContainer').dialog('open');

		}, "json"); //end $.post
}

function searchGroups(page) {
	var sortOrder = $('#groupListSort').val();
	var subZone = $('#groupSubZone').val();
	var location_id = $('#location_id').val();
	
	$.post("/ajax/refreshadbanners", 'currentPage='+location.pathname, function(data, textStatus) {
	    //found in common.js
		formatBannerRefresh(data.sideBarBanner,'sidebar-skyscraper','sideBanner','120','600');
    	formatBannerRefresh(data.topHeaderBanner,'header-468x60','full-banner','468','60');
    	formatBannerRefresh(data.bottomLeaderboardBanner,'bottom-leaderboard-728x90','full-banner','728','90');
    }, "json"); //end $.post
	
	//Google Analytics
	pageTracker._trackPageview(location.pathname);
	
	$('#groupsBoxInfoTxt').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) {
		$('#groupsBoxInfoTxt').html('');
         $.each(data.groups, function(val, group) {
			$('#groupsBoxInfoTxt').append(formatGroupsList(group));
			
  		});
		
		$('#groupsPaginator').html(formatGroupsPaginator(data.paginator,'searchGroups'));

	}, "json"); //end $.post
	
}

function formatGroupsList(data) {
	var returnHtml = '';
	
	returnHtml = '<li>';
	
	returnHtml += '<a class="group-img" href="/group/'+ data.permalink+'">';
	returnHtml += '<img src="'+data.imageUrl+'" alt="'+data.name+'" width="122" height="122" />';
	returnHtml += '</a>';
	
	returnHtml += '<div class="info">';
	returnHtml += '<ul class="actions">';
	returnHtml += '<li>';
	switch(data.showJoinButton) {
	case 'none':
		break;
	case 'showjoin':
		returnHtml += '<a class="join-group logged" href="#" onclick="joinGroup(\''+data.id+'\');$(this).hide();return false;">';
		returnHtml += 'Join group';
		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 += '</li>';
	returnHtml += '<li>';
	returnHtml += data.noMembers+' members';
	returnHtml += '</li>';
	returnHtml += '</ul>';
	
	returnHtml += '<h3>';
	returnHtml += '<a href="/group/' + data.permalink + '">';
    returnHtml += data.name;
    
    returnHtml += '<span class="location">';
    returnHtml += data.location;
    returnHtml += '</span>';
    returnHtml += '</a>';
    returnHtml += '</h3>';
    
    returnHtml += '<p>';
    returnHtml += data.description;
    returnHtml += '</p>';
	
    returnHtml += '</div>';
    returnHtml += '</li>';
	
	return returnHtml;
}

function formatGroupsPaginator(paginator,functionName) {

	var paginatorHtml = '';
	if (paginator.pageCount){
		paginatorHtml = '<ul class="pagenation">';
	    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();
	
	$.post("/ajax/refreshadbanners", 'currentPage='+location.pathname, function(data, textStatus) {
	    //found in common.js
		formatBannerRefresh(data.sideBarBanner,'sidebar-skyscraper','sideBanner','120','600');
    	formatBannerRefresh(data.topHeaderBanner,'header-468x60','full-banner','468','60');
    	formatBannerRefresh(data.bottomLeaderboardBanner,'bottom-leaderboard-728x90','full-banner','728','90');
    }, "json"); //end $.post
	
	//update google analytics.
	pageTracker._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) {
		$('#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'));

	}, "json"); //end $.post
}

function leaveGroup(gid) {
	$.post("/groups/leavegroup/", {'gid':gid}, function(data, textStatus) {

	    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');
	    }
	    
	    

		}, "json"); //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) {

	    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');
	    }
	    
		}, "json"); //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) {
		$("#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;
			
		}
	}, "json"); //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) {
		removeNotice(nid);
		return true;
	}, "json"); //end $.post
}