GupShup.html.community = {vars:{}, methods :{}};
GupShup.html.community.vars.commName = "";
GupShup.html.community.methods.htmlDecode = function(data){
	data = GupShup.util.htmlDecode(data);
	if(data.length > 80)
		data = data.substring(0,80) + "...";
	return data;
};
GupShup.html.community.methods.showPostCount = function(data){
	if(data <= GupShup.conf.ITEMS_PER_PAGE)
		return "template";
	else
		return "";
};

GupShup.html.community.methods.getCat = function (catName) {
	if (typeof catName == 'undefined')
		return '';
	else
		return 'Category : <b>' + catName + '</b>';
};

GupShup.html.community.methods.getJoinClass = function(name){
		return (GupShup.html.community.vars.alreadySubscribed == true) ? 'template' : '';
};

GupShup.html.community.maps = {
	communityHeaderMap : [
							{key:'$COM_DESCR$', dataMember:'descr'},
							{key:'$COM_MEMBERS$', dataMember:'defaultEntityDetails.totalSubscribers'},
							{key:'$ENTITY_ID$', dataMember:'defaultEntityDetails.id'},
							{key:'$ENTITY_NAME$', dataMember:'defaultEntityDetails.name'},
							{key:'$IS_SUBSCRIBED$', dataMember:'name', dataProcessor: GupShup.html.community.methods.getJoinClass},
							{key: GupShup.util.getPlaceHolderUrl('$COM_IMG$'), dataMember:'imageUrl'},
							{key:'$COM_DISPLAY_NAME$', dataMember:'displayName'},
							{key:'$COM_NAME$', dataMember:'name'},
							{key:'$COM_URL$', dataMember:'url'},
							{key:'$CATEGORY$', dataMember:'defaultEntityDetails.categoryInfo.displayName', dataProcessor: GupShup.html.community.methods.getCat}
						],
	communityMsgHeaderMap : [
							{key:'$COM_POST_COUNT$', dataMember:'totalPosts'}
						],
						
	communityRelatedGrpsMap : [
							{key:'$GROUP_URL$', dataMember:'groupUrl'},
							{key: GupShup.util.getPlaceHolderUrl('$IMAGE_URL$'), dataMember:'imageUrl'},
							{key:'$MSG_TIMESTAMP$', dataMember:'latestMessage.timestamp'},
							{key:'$GROUP_COUNT$', dataMember:'totalSubscribers'},
							{key:'$GROUP_NAME$', dataMember:'name'}
						],
	communityAppsContentHeaderMap : [
							{key:'$HEADER$', dataMember:'header'},
							{key:'$COM_NAME$', dataMember:'name'}
						],
	communityAppsContentMap : [
							{key: GupShup.util.getPlaceHolderUrl('$IMAGE_URL$'), dataMember:'imageUrl'},
							{key:'$APP_NAME$', dataMember:'name'},
							{key:'$DISPLAY_NAME$', dataMember:'displayName'},
							{key:'$APP_URL$', dataMember:'url'},
							{key:'$APP_COMMAND$', dataMember:'command'},
							{key:'$APP_SHORTDESC$', dataMember:'shortDescr', dataProcessor: GupShup.html.community.methods.htmlDecode},
							{key:'$APP_SHORTCODE$', dataMember:'shortCode'}
						]
};

GupShup.html.community.maps.communityRelatedShopItemMap = [
						{key:'$ID$', dataMember:'id'},
						{key: GupShup.util.getPlaceHolderUrl('$IMAGE_URL$'), dataMember:'imageUrl'},
						{key:'$OUR_COST$',dataMember:'cost'},
						{key:'$TITLE$',dataMember:'displayName'}
					]

GupShup.html.community.vars = {ITEMS:3};
GupShup.html.community.vars.repliesStates = {};

GupShup.html.community.methods.processAjax = function(xhr){
	GupShup.html.community.methods.community_process(xhr.responseText);
};

GupShup.html.community.methods.buyShopContent = function(id){
	GupShup.html.actions.pageReload(GupShup.conf.contextPath + "/buy?itemId=" + id);
};

GupShup.html.community.methods.community_process = function(communityJsonStr){
	var communityObj = GupShup.util.getJsonFromResponse(communityJsonStr);
	if((typeof(communityObj.status) != 'undefined') && (communityObj.status == 'SUCCESS'))
	{
			var params = communityObj.params;
			var type = (typeof(params.subType) == 'undefined') ? params.type : params.subType;
			switch(type)
			{
				case 'MESSAGE_STREAM' : 
						var msgArray = new Array();
						for(var j = 0; j < communityObj.messages.length; j++)
						{
							if(params.start == 0 && j == 0)
								communityObj.messages[j].latestMessage.msgClass = "firstPost";
								communityObj.messages[j].latestMessage.entityName = communityObj.messages[j].name;
							msgArray.push(communityObj.messages[j].latestMessage);
						}
						params.totalForPg = communityObj.totalForPg;
						GupShup.html.community.methods.renderCommunityContents(msgArray, type, params); break;
				case 'CONTEST' :
				case 'POLL' :
				case 'GAME' :
					GupShup.html.community.methods.renderCommunityContents(communityObj.appDetails, type, params); break;
				case 'SHOP_PRODUCT':
						GupShup.html.community.methods.renderCommunityContents(communityObj.products, type, params); break;
				case 'RELATED_ENTITY':
						GupShup.html.community.methods.renderCommunityContents(communityObj.entities, type, params); break;
				case 'REPLY_STREAM' :
						var msgArray = new Array();
						var reLen = communityObj.replies.length;
						for(var j = 0; j < reLen; j++)
						{
							communityObj.replies[j].replyClass = "recentReplies";
							msgArray.push(communityObj.replies[j]);
						}
						
						//Store current page start and startId
						GupShup.html.community.vars.currPageStart = params.start;
						if(reLen > 0)
						{
							//Store current page startId								
							GupShup.html.community.vars.repliesStates[params.start] = communityObj.replies[0].id;
							//Store next page start Id
							GupShup.html.community.vars.nextPageStartId = communityObj.replies[reLen - 1].id;
						}
						GupShup.html.community.methods.renderCommunityContents(msgArray, type, params); break;
						
			}
	}
};

GupShup.html.community.methods.renderCommunityHeader = function(communityJsonStr){
	var communityObj = GupShup.util.getJsonFromResponse(communityJsonStr);
	if((typeof(communityObj.status) != 'undefined') && (communityObj.status == 'SUCCESS'))
	{
		var c = GupShup.util.expandTemplate(GupShup.util.getInnerHTML('communityHeaderTmpl'), GupShup.html.community.maps.communityHeaderMap, communityObj.communityDetails);
		GupShup.util.setInnerHTML('communityHeaderCont',c);
		var entity = communityObj.communityDetails[0].defaultEntityDetails;
		GupShup.html.community.vars.commName = entity.name;
		GupShup.html.share.init(true,entity.id, entity.name);
	}
};

GupShup.html.community.methods.processCommunityList = function(xhr){
GupShup.html.community.methods.renderCommunityList(xhr.responseText);
};

GupShup.html.community.methods.renderCommunityList = function(communityJsonStr){
	var communityObj = GupShup.util.getJsonFromResponse(communityJsonStr);
	if((typeof(communityObj.status) != 'undefined') && (communityObj.status == 'SUCCESS'))
	{
		var communityStrArray = communityObj.communityDetails;
		var params = communityObj.params
		if(communityStrArray.length > 0)
		{
			var div = "communityList";
			var content = GupShup.util.expandTemplate(GupShup.util.getInnerHTML("communityTemplate"), GupShup.html.community.maps.communityHeaderMap, communityStrArray);
			var paginationObj = {
				start: params.start,
				returned: communityStrArray.length,
				windowSize: GupShup.conf.windowSize,
				listType:"Communities",
				total : communityObj.totalForPg
			};
	
			var reqObj = {
				url: GupShup.conf.webReadUrl,
				queryStr: "type=" + params.type
				+ '&sortBy=RANK'
				+ '&needTotalForPg=true',
				callBack: {
					success: GupShup.html.community.methods.processCommunityList,
					failure: GupShup.html.community.methods.processCommunityList 
				}
			};
			var pgContent = GupShup.util.expandPaginationTemplate(reqObj, paginationObj, params.type);
			GupShup.util.setInnerHTML(div, content + pgContent);
		}
	}
};

GupShup.html.community.methods.getReplies = function(req){
	var start = req.start;
	
	req.queryStr = req.queryStr + "&replyId=";
	if(req.start == 0)
		req.queryStr += "";
	else
		req.queryStr += ((start > GupShup.html.community.vars.currPageStart) ? GupShup.html.community.vars.nextPageStartId : GupShup.html.community.vars.repliesStates[req.start]);

	GupShup.util.getJsonItems(req);
};

GupShup.html.community.methods.renderCommunityContents = function(contentArray, type, params){
	
	var hTemplate = "communityRightHeaderTmpl";
	var eTemplate = "";
	var hMap = GupShup.html.community.maps.communityAppsContentHeaderMap;
	var eMap = GupShup.html.community.maps.communityAppsContentMap;
	var div = "";
	var headerObj = {};
	var itemsPerPage = GupShup.html.community.vars.ITEMS;
	var windowSize = 1;
	var total = 0;
	var needTotalForPg = false;
	var listType = "";
	var navOnClickFunction = "javascript:GupShup.util.getJsonItems";
	switch(type)
	{
		case 'MESSAGE_STREAM' : 
						hTemplate = 'communityMsgHeaderTmpl'; 
						eTemplate = 'msgTemplate'; 
						hMap = GupShup.html.community.maps.communityMsgHeaderMap;
						eMap = GupShup.msgTemplates.msgExpansionMap;
						div = 'communityMsgCont';
						itemsPerPage = GupShup.conf.ITEMS_PER_PAGE;
						windowSize = GupShup.conf.windowSize;
						total = params.totalForPg;
						headerObj = [{totalPosts: total}];
						needTotalForPg = true;
						listType = "Messages";
						break;
						
		case 'REPLY_STREAM' :
						eTemplate = 'replyTemplate'; 
						hTemplate = 'communityReplyHeaderTmpl';
						eMap = GupShup.msgTemplates.replyMsgTemplateMap;
						div = 'communityRepliesCont';
						headerObj = [{header : 'Replies', name : GupShup.html.community.vars.commName}];
						navOnClickFunction = "javascript:GupShup.html.community.methods.getReplies";
						break;
		
		case 'CONTEST' :
						eTemplate = 'communityOtherAppsContTmpl'; 
						div = 'communityContestsCont';
						headerObj = [{header : 'Contests'}];
						break;

		case 'POLL' :
						eTemplate = 'communityOtherAppsContTmpl'; 
						div = 'communityPollCont';
						headerObj = [{header : 'Poll'}];
						break;

		case 'GAME' : 
						eTemplate = 'communityGamesContTmpl'; 
						div = 'communityGamesCont';
						headerObj = [{header : 'Games'}];
						break;
		case 'SHOP_PRODUCT' : 
						eTemplate = 'communityRelatedShopItemTmpl'; 
						hTemplate = 'communityContentHeaderTmpl';
						eMap = GupShup.html.community.maps.communityRelatedShopItemMap;								
						div = 'communityShopsCont';
						headerObj = [{header : 'Products'}];
						break;
						
		case 'RELATED_ENTITY' :
						eTemplate = 'communityRelatedGrpsTmpl';
						eMap = GupShup.html.community.maps.communityRelatedGrpsMap;								
						div = 'communityGrpsCont';
						headerObj = [{header : 'Related Groups'}];
						break;
		
	}
	
	if(contentArray.length == 0)
	{
		GupShup.html.util.hideElement(div);
		return;
	}
	
	var header = GupShup.util.expandTemplate(GupShup.util.getInnerHTML(hTemplate), hMap, headerObj);
	var pgTmpl = (windowSize == 1) ? GupShup.templates.methods.getRHSPaginationTemplate(contentArray, params.start, GupShup.html.community.vars.ITEMS) : "paginationTemplate";
	
	var paginationObj = {
		start: params.start,
		returned: contentArray.length,
		windowSize: windowSize,
		listType:listType,
		itemsPerPage:itemsPerPage,
		template:pgTmpl,
		total : total
	};
	
	var reqObj = {
		url: GupShup.conf.webReadUrl,
		queryStr: "type=" + params.type
		+ '&name=' + params.name
		+ '&sortBy=RANK'
		+ '&communityId=' + params.communityId 
		+ '&filterReplies=' + true
		+ '&needTotalForPg=' + needTotalForPg + '&subType=' + type,
		navOnClickFunction : navOnClickFunction,
		callBack: {
			success: GupShup.html.community.methods.processAjax,
			failure: GupShup.html.community.methods.processAjax 
		}
	};	
	var pgContent = GupShup.util.expandPaginationTemplate(reqObj, paginationObj, type);

	if(windowSize == 1 && contentArray.length > GupShup.html.community.vars.ITEMS)
		contentArray = contentArray.slice(0,GupShup.html.community.vars.ITEMS);

	var content = GupShup.util.expandTemplate(GupShup.util.getInnerHTML(eTemplate), eMap, contentArray);
	GupShup.util.setInnerHTML(div, header + content + pgContent);
	GupShup.html.util.showElement(div);
};
