var communityInformationHolder = new CommunityInformationHolder(siteUrl + getCommunityListURL);
var selectedInviteComm = [];
var selectedInviteComm2 = [];

function initialiseInviteToCommunityBlocksWhenDataReady() {
	if(communityInformationHolder.isDataReady) {
		initialiseInviteToCommunityBlocks();
	} else {
		setTimeout(initialiseInviteToCommunityBlocksWhenDataReady, 1000);
	}
}
initialiseInviteToCommunityBlocksWhenDataReady();


function getActiveInvitationSelector() {
	return (jQuery('#div1').css('display') == 'block') ? jQuery('#inviteCommbox1') : jQuery('#inviteCommbox2');
}
function getActiveInviteToCommunityListPlaceholder() {
	return (jQuery('#div1').css('display') == 'block') ? jQuery('#inviteToCommunityBlock1') : jQuery('#inviteToCommunityBlock2');
}
function getActiveInviteToCommunityList() {
	return (jQuery('#div1').css('display') == 'block') ? jQuery('#inviteToCommunityList1') : jQuery('#inviteToCommunityList2');
}
function getActiveInvitationToCommunityList() {
	return (jQuery('#div1').css('display') == 'block') ? selectedInviteComm : selectedInviteComm2;
}

function getCommunityCommentInvitationDummyText(name) {
	 return "[" + name + " Invitation]";
}

function initialiseInviteToCommunityBlocks() {
	jQuery('#hiddenCommunityId').val(0);
    var inviteCommbox1 = jQuery('#inviteCommbox1');
	var inviteCommbox2 = jQuery('#inviteCommbox2');
    inviteCommbox1.html('');
	inviteCommbox2.html('');

	var communitiesData = communityInformationHolder.getCommunitiesData();
	jQuery(communitiesData).each(function(i) {
		var id = communitiesData[i]['id'];
		var isAlreadyExist = communitiesData[i]['alreadyExist'];
		if(isAlreadyExist) return;
		var name = communitiesData[i]['name'];

		var spanElem = jQuery('<span>');
		spanElem.addClass('networkTxt invitationLink blockCommunityInvitation' + id);
		if(communitiesData[i]['thumb']) {
			var img = jQuery('<img alt="Community Logo">');
			img.css('width', '75px');
			img.attr('src', '/mega/community_banner_thumb/' + communitiesData[i]['thumb']);
			spanElem.append(img);
		}
		spanElem.append('&nbsp;&nbsp;&nbsp;' + name);
		inviteCommbox1.append(spanElem);
		
		var spanElem2 = spanElem.clone();
		inviteCommbox2.append(spanElem2);

		spanElem.click(function() {inviteToCommunityClickEventHandler(id, name);});
		spanElem2.click(function() {inviteToCommunityClickEventHandler(id, name);});
	});
}

function removeCommunityCommentInvitationDummyText(communityId) {
	var communityData = communityInformationHolder.getCommunityDataById(communityId);
	var commentText = getActiveCommentBox().val();
	commentText = commentText.replace("\n" + getCommunityCommentInvitationDummyText(communityData.name), '');
	commentText = commentText.replace(getCommunityCommentInvitationDummyText(communityData.name), '');
	getActiveCommentBox().val(commentText);
}

function inviteToCommunityClickEventHandler(communityId, name) {
	if(jQuery.inArray(communityId, getActiveInvitationToCommunityList()) > 0) return;
	getActiveInvitationToCommunityList().push(communityId);
	var communityData = communityInformationHolder.getCommunityDataById(communityId);
	var listItem = createInvitationListItem(communityId, communityData['name'], communityData['thumb']);
	getActiveInviteToCommunityListPlaceholder().slideDown();
	listItem.hide();
	getActiveInviteToCommunityList().append(listItem);
	listItem.slideDown();
	jQuery('.blockCommunityInvitation' + communityId, getActiveInvitationSelector()).addClass('inactive');
	var invitationText = getCommunityCommentInvitationDummyText(name);
	invitationText = (getActiveCommentBox().val()) ? "\n" + invitationText : invitationText;
	getActiveCommentBox().val(getActiveCommentBox().val() + invitationText);
}

function createInvitationListItem(communityId, name, thumb) {
	var listItem = jQuery('<li>');
	var logoWrapper = jQuery('<div class="communityLogo">');
	var img = jQuery('<img src="/mega/community_banner_thumb/' + thumb + '" alt="' + name + '">');
	listItem.append(logoWrapper);
	logoWrapper.append(img);
	listItem.append(jQuery('<div class="communityName networkTxt">' + name + '</div>'));
	var deleteInvitation = jQuery('<div class="deleteCommunityInvitation networkTxt">X</div>');
	listItem.append(deleteInvitation);

	deleteInvitation.click(function() {
		if(jQuery('li', getActiveInviteToCommunityList()).length == 1) getActiveInviteToCommunityListPlaceholder().slideUp();
		listItem.slideUp('normal', function() {
			var invitationList = getActiveInvitationToCommunityList();
			listItem.remove();
			jQuery('.blockCommunityInvitation' + communityId, getActiveInvitationSelector()).removeClass('inactive');
			var index = jQuery.inArray(communityId, invitationList);
			invitationList.splice(index, 1);
			removeCommunityCommentInvitationDummyText(communityId);
		});
	});
	return listItem;
}

function clearInvitationToCommunity() {
	getActiveInviteToCommunityList().html('');
	getActiveInvitationToCommunityList().splice(0, getActiveInvitationToCommunityList().length);
	jQuery('.inactive', getActiveInvitationSelector()).removeClass('inactive');
	jQuery('#inviteCommboxId2').slideUp();
	jQuery('#inviteCommboxId1').slideUp();
	getActiveInviteToCommunityListPlaceholder().slideUp();
}

function displayInvitationsToCommunity(invitationList, commentElement, isOwner) {
	if(invitationList.length == 0) return;
	jQuery(invitationList).each(function(key, invitationObject) {
		var divPhotoComment = jQuery('<div class="photoComment">');
		var linkToCommunity = jQuery('<a class="inviteUserComm" href="#"></a>');
		var communityLogo = jQuery('<img>');
		communityLogo.attr({
			'src': '/mega/community_banner_thumb/' + invitationObject['thumb'],
			'alt': invitationObject['name']
		});
		linkToCommunity.append(communityLogo);
		divPhotoComment.append(linkToCommunity);

		var replycomment = jQuery('<div class="replycomment">');
		var welcomeText = jQuery('<span class="commentName">Please add this image to</span>');
		var communityNameText = jQuery('<span class="commentText">' + invitationObject['name'] + '</span>');
		replycomment.append(welcomeText);
		replycomment.append(communityNameText);
		divPhotoComment.append(replycomment);
		
		commentElement.after(divPhotoComment);

		if(invitationObject['isInCommunity'] == 1 || !isOwner) {
			linkToCommunity.attr('href', '/communities/' + invitationObject['name']);
		} else {
			var inviteDialog = jQuery('.invite-to-community-comment-dialog-layout').clone();
			inviteDialog.removeClass('invite-to-community-comment-dialog-layout');
			divPhotoComment.append(inviteDialog);
			jQuery('.community_name', inviteDialog).html(invitationObject['name']);
			var rules = (invitationObject['rules']) ? invitationObject['rules'] : '<span class="norulesyet">This community has not set any rules yet. But, it is always a good idea to take your time and explore the work of others in the community.</span>';
			jQuery('.rules', inviteDialog).html(rules);

			jQuery('.controls li.cancel a', inviteDialog).click(function() {
				inviteDialog.slideUp();
			});

			jQuery('.controls li.next.redirect a', inviteDialog).click(function() {
				acceptInvitationToCommunity(invitationObject['communityId'], function() {
					inviteDialog.slideUp();
					location.href = '/communities/' + invitationObject['name'];
				});
			});

			jQuery('.controls li.next.stay a', inviteDialog).click(function() {
				acceptInvitationToCommunity(invitationObject['communityId'], function() {
					inviteDialog.slideUp();
					linkToCommunity.attr('href', '/communities/' + invitationObject['name']);
					linkToCommunity.unbind();
				});
			});

			linkToCommunity.click(function(event) {
				event.preventDefault();
				inviteDialog.slideToggle();
				if(!jQuery('.karma .spinner', inviteDialog).is(":visible")) return;
				var url = siteUrl + getUserKarmaURL + "&communityId=" + invitationObject['communityId'];
				jQuery('.karma .messagebox', inviteDialog).hide();
				jQuery('.karma .spinner', inviteDialog).show();

				jQuery.getJSON(url, function(data) {
					jQuery('.karma .username', inviteDialog).html(data.username);
					jQuery('.karma .spinner', inviteDialog).hide();
					if(!data.photosInCommunity) {
						jQuery('.karma .excelent', inviteDialog).show();
						return;
					}

					if(data.karma >= 3) {
						jQuery('.karma .excelent', inviteDialog).show();
					} else if (data.karma >= 1) {
						jQuery('.karma .good', inviteDialog).show();
					} else {
						jQuery('.karma .bad', inviteDialog).show();
					}
				});
			});
		}
	});
	
}

function restoreInvitationDataToEdit(commentId) {
	var comments = __commentsData.comments;
	var comentData = {};
	jQuery(comments).each(function(key, obj){
		if(obj.id == commentId) comentData = obj;
	});

	if(comentData.invitations.length == 0) return;
	getActiveInvitationToCommunityList().splice(0, getActiveInvitationToCommunityList().length);

	getActiveInviteToCommunityListPlaceholder().slideDown();
	getActiveInviteToCommunityList().html('');
	jQuery(comentData.invitations).each(function(key, obj) {
		getActiveInvitationToCommunityList().push(obj.communityId);
		var invitationListItem = createInvitationListItem(obj.communityId, obj.name, obj.thumb);
		getActiveInviteToCommunityList().append(invitationListItem);
		jQuery('.blockCommunityInvitation' + obj.communityId, getActiveInvitationSelector()).addClass('inactive');
	});
}