/**
* PAGE首页 资料页
*/

//input tooltip
jQuery.fn.tooltip = function(text, focusStyle, blurStyle){
	var $ = jQuery;
	return this.each(function(){
		if($(this).is('input:text') || $(this).is('textarea')){
			$(this).focus(function(){
				var value = $.trim(this.value);
				if(value == '' || value == text){
					$(this).val('').css(focusStyle || {color:'#333333'});					
				}
			}).blur(function(){
				var value = $.trim(this.value);
				if(value == '' || value == text){
					$(this).val(text).css(blurStyle || {color:'#888888'});					
				}
			}).data('tooltip',text).triggerHandler('blur');
		}
	});
};

//count length
jQuery.fn.limitLength = function(length, echo){
	var $ = jQuery;
	return this.each(function(){
		if($(this).is('input:text') || $(this).is('textarea')){
			var that = this;
			var events = ['keyup', 'focus', 'blur'];
			$.each(events, function(i,n){
				$(that).bind(n, function(){
					if(this.value.length > length)
						this.value = this.value.substring(0, length);
					if(echo)
						$(echo).html((this.value == $(this).data('tooltip') ? 0 : this.value.length) + '/' + length);
				});
			});
			$(this).triggerHandler('blur');
		}
	});
};

//auto height
jQuery.fn.autoHeight = function(minHeight){
	var $ = jQuery;
	return this.each(function(){
		if($(this).is('textarea')){
			if($.browser.msie && $.browser.version == '6.0'){
				$(this).css('overflow-y', 'visible');
			}
			else{
				var that = this;
				var events = ['keyup', 'focus', 'blur'];
				$.each(events, function(i, n){
					$(that).bind(n, function(){
						$(this).css('height', 0).css({'height': Math.max(this.scrollHeight, minHeight)});
					});
				});
			}
		}
	});
};

//tabs
function TabView(activeClass){
	this.tabs=[];
	this.triggers=[];
	this.activeClass = activeClass || 'selected';
	this.addDefaultTrigger();
}
TabView.prototype={
	addTab:function(tab, view){
		var $ = jQuery;		
		tab = $(tab).data('view', $(view));
		this.tabs.push(tab);
		var that = this;
		tab.click(function(){that.fireTriggers(tab);});
		return this;
	},
	addTriggers:function(trigger){
		this.triggers.push(trigger);
		return this;
	},
	fireTriggers:function(tab){
		for(var i=0,l=this.triggers.length; i<l; i++){
			this.triggers[i].call(tab);
		}
	},
	addDefaultTrigger:function(){
		var $ = jQuery;
		var that=this;
		this.addTriggers(function(){
			for(var i=0, l=that.tabs.length;i<l; i++){
				$(that.tabs[i]).removeClass(that.activeClass).data('view').hide();
			}
			$(this).addClass(that.activeClass).data('view').show();
		});		
	},
	click:function(tab){
		this.fireTriggers(tab);
	}
};

//home tab view
XN.DOM.readyDo(function(){
	var $ = jQuery;	
	
	var tabView = new TabView('current');
	if($('#feedTab').size()>0)
		 tabView.addTab($('#feedTab'), $('#feedView'))
	if($('#commentTab').size()>0)
		 tabView.addTab($('#commentTab'), $('#commentView'));
	if($('#replyTab').size()>0)
		 tabView.addTab($('#replyTab'), $('#replyView'));
	
	function buildView(tab){
		var map = {feedTab:'feedView', commentTab:'commentView', replyTab:'replyView'};
		var view = $('<div class="mod comments" id="'+ map[tab.attr('id')] +'"></div>').appendTo($('#intercourseTabs').parent());
		tab.data('view', view);
		return tab;
	}
	function buildMore(tab){
		tab.data('view').append('<p class="more-comments"><a href="#nogo">查看更多</a></p>');
		return tab;
	}
	tabView.addTriggers(function(){
		//insure view exist
		this.blur();
		if($(this).data('view').size() == 0)
			buildView(this);
	}).addTriggers(function(){
		var map = {feedTab:'/feed/firstList', commentTab:'/gossip/list', replyTab:'/gossip/ownList'};
		if(!this.data('hasLoad')){			
			var tab = this;
			$.get(map[this.attr('id')], {pid:pid}, function(r){
				tab.data('hasLoad',true).data('view').html(r).show();
				if(tab.data('view').find('li.nofeed').size()==0)
					buildMore(tab);
			});
		}
	});		
});

//新鲜事延迟加载图片
function feed_img_delay_load(img){
	if (img._loaded) 
		return;
	img._loaded = true;
	img.setAttribute('src', img.getAttribute('lala'));
	img.removeAttribute('lala');
	img.removeAttribute('onload');
	if (img.getAttribute('needclip'))
		clipImage(img);
}

//关注申请
function requestFollow(id){
	jQuery.post('/makefans', {pid: id || pid}, function(r){
		var response = XN.json.parse(r);
		if(response.code == 0 || response.code == 2){
			if(isClub){
				XN.DOM.disable();
				XN.DO.alert('已成功发送加入申请.管理员审批后即可在俱乐部进行留言和评论');
			}
			else
				XN.DO.showMessage('操作成功！');
			jQuery('body').trigger('requestFollow');	
		}
		else if(response.code == 3){
			;//后台写cookie激活用户
		}
		else
			XN.DO.showMessage('服务器繁忙，请稍后再试！');
	});
}
//取消关注
function cancelFollow(id){
	XN.DOM.disable();
	XN.DO.confirm({
		title:'提示',
		message:'确认退出吗？',
		callBack:function(r){
			if(r){
				jQuery.post('/exitfans', {pid: id || pid}, function(r){
					XN.DOM.disable();
					XN.DO.showMessage('操作成功！');
					jQuery('body').trigger('cancelFollow');
				});
			}
		}
	});	
}

//关注操作回调
XN.DOM.readyDo(function(){
	var $ = jQuery;	
	$('body').bind('requestFollow', function(){
		$('#recommendToFri').show();
		$('#requestFollow').hide();
		$('#cancelFollow').show();
		$('#shareToFriend').addClass('push');
		$('#joinFansBtn').hide();
	}).bind('cancelFollow', function(){
		$('#recommendToFri').hide();
		$('#requestFollow').show();
		$('#cancelFollow').hide();
		$('#shareToFriend').removeClass('push');
		$('#joinFansBtn').show();
	});
});

//登陆提示
function loginDialog(){
	XN.DOM.disable();
	XN.DO.confirm({
		title:'提示',
		message:'<p align="center">您尚未登录，不能发送留言，现在去登陆吗？<br /><div style="text-align:center;color:#999999;padding-top:10px;">没有账号？<a href="http://reg.'+ XN.env.domain +'/" target="_blank">点此注册</a></div></p>',
		callBack:function(r){
			if(r)
				location.href = 'http://login.'+ XN.env.domain +'/GLogin.do?origURL=' + encodeURIComponent(location.href);
		}
	});
}

//覆写status的发送错误处理 小心主工程的变动
(function(){		
	if(XN.APP && XN.APP.status){	
		XN.APP.status.replyEditor.prototype._onReplyError = function(msg){
			this.resetInput();
			this.simpleMode();
			if(msg == -1)
				loginDialog();
			else
				XN.DO.showError(msg);
		};
	}
})();

//覆写删除minifeed以便弹窗确认 小心主工程的变动
(function(){
	if(XN.APP && XN.APP.feed){		
		XN.APP.feed.prototype.setAsRead=function(fid, pid, type){
			var $ = jQuery;
			XN.DOM.disable();
			XN.DO.confirm({
				title:'确认操作',
				message:'确认删除这条新鲜事吗?',
				callBack:function(r){
					if(r){
						$('#feed'+fid).fadeOut('slow',function(){
							$(this).remove()
						});
						$.post('/readMini.do', {i:fid, t:'s', u:pid});
					}
				}
			});
		};
	}
})();

//发布操作
XN.DOM.readyDo(function(){
	var $ = jQuery;
	$('#publishButton').click(function(){
		function getMessage(state){
			switch(state){
				case '1':
					return '确定发布吗？';
				case '7':
					return '确定发布吗？管理员审批通过后，发布操作即可生效。';
			}
		}
		XN.DOM.disable();
		XN.DO.confirm({
			title: this.value == '1' ? '发布': '发布申请',
			message: getMessage(this.value),
			callBack: function(r){
				if(r){
					$.post('/togglePageState', {pid: pid}, function(r){
						location.reload();
					});
				}
			}
		});	
	});
});

//global ajax loading tip
XN.DOM.readyDo(function(){
	var $ = jQuery;	
	var globalLoading = $('#globalLoading');
	$('body').ajaxStart(function(){
		if(globalLoading.size() == 0)
			globalLoading = $('<img src="http://s.xnimg.cn/imgpro/indicator/loading.gif" id="globalLoading" />').appendTo('div.tabpanel').css({position:'absolute', top:-15, right:0});
		globalLoading.show();
	}).ajaxStop(function(){
		$('#globalLoading').hide();
	 });
});

//for send message
XN.DOM.readyDo(function(){
	var $ = jQuery;		
	
	//错误信息
	var adminError = {
		'1' : '您不是管理员，不能更改状态',
		'2' : '公共主页不存在',
		'3' : '内容不能为空',
		'4' : '您的状态因含有敏感词汇，已经提交到' + XN.env.siteName + '审核后台，审核通过后即可发布。我们会及时给您回复，请耐心等待。',
		'5' : '你短时间内发表了太多相同的内容',
		'6' : '系统忙，请稍后再试',
		'8' : '系统忙，请稍后再试',
		'100' : '本公共主页管理员关闭了该公共主页，请稍后再试',
		'101' : '你现在不是该公共主页的粉丝，成为粉丝后才可回复',
		'102' : '此公共主页的主人关闭了回复功能，目前不能回复',
		'103' : '您的状态已经提交到' + XN.env.siteName + '审核后台，审核通过后即可发布。我们会及时给您回复，请耐心等待。'
	};

	var memberError = {
		'1' : '您不是成员，还不能留言',
		'2' : '公共主页不存在',
		'3' : '内容不能为空',
		'4' : '请不要发布政治敏感内容、色情内容、商业广告或其他不恰当内容',
		'5' : '你短时间内发表了太多相同的内容',
		'6' : '系统忙，请稍后再试',
		'8' : '系统忙，请稍后再试',
		'9' : '验证码错误',
		'100' : '本公共主页管理员关闭了该公共主页，请稍后再试',
		'101' : '你现在不是该公共主页的成员，加入后才可回复',
		'102' : '此公共主页的主人关闭了回复功能，目前不能回复',
		'103' : '超过字数限制，请精简留言！'
	};

	function getMessage(code){
		if(isAdmin)
			return adminError[code];
		else
			return memberError[code];
	}
	
	function sendMessage(url, form){
		$(form).find('input:submit').attr('disabled', 'true');
		$.ajax({
				type:'post',
				url: url,
				data:{pid: pid, c: form.message.value, gid: form.gid.value, asMobile: ($('#withMoblie').is(':checked') ? 1 : 0), cid:form.cid.value},
				dataType:'json',
				success:function(r){
					if(r.code == 0){
						var message = form.message.value;
						form.reset();
						$(form.message).triggerHandler('blur');
						//clear ajax cache
						$('#intercourseTabs a').data('hasLoad', false).data('p', 0);
						if(this.url == '/gossip/send')
							$('#commentTab').click();
						else{
							$('#feedTab').click();	
							updateStatus(message, '刚刚更新');
						}							
						//去除回复提示
						$('div.status-post p.status-citation').remove();
					}
					else{
						if(r.code == -1)
							loginDialog();			
						else
							XN.DO.showError(getMessage(r.code));							
					}
				},
				error:function(){
					XN.DOM.disable();
					XN.DO.alert('服务器繁忙，请稍后再试！');
				},
				complete:function(){
					$(form).find('input:submit').removeAttr('disabled');
				}
			});
	}
	
	function updateStatus(text, time){
		var status = $('div.page-status');
		status.find('span.status-content').text(text);
		status.find('span.time').text(time);
	}
	
	$('form[name=messageForm] textarea[name=message]')
		.tooltip(defaultVal).limitLength(140, '#messageLength').autoHeight(42)
		.focus(function(){
			$(this).css('borderColor', '#F9B967');
		})
		.blur(function(){
			$(this).css('borderColor', '');
		});
	$('form[name=messageForm]').submit(function(){
		if($.trim(this.message.value) != '' && this.message.value != $(this.message).data('tooltip')){
			var form = this;
			var isReply = /[0-9]{2,}/.test(this.gid.value) || !isAdmin;
			if(isReply)
				sendMessage('/gossip/send', form);
			else{
				XN.DOM.disable();
				XN.DO.confirm({
					title:'确认操作',
					message:'确认发布状态吗？<b>此操作将发送新鲜事！</b>',
					callBack:function(r){
						if(r)
							sendMessage('/doing/update', form);
					}
				});
			}
		}
		return false;
	});
});

// 回复和删除留言操作
XN.DOM.readyDo(function(){
	var $ = jQuery;	
	//回复他人的回复
	$('div.mod a.reply').live('click', function(){
		var comment = $(this).parents('li:first');
		var gid = comment.attr('name').replace(/[^0-9]/g, '');
		var cid = comment.find('strong.poster').attr('cid');
		var name = comment.find('strong.poster a').text();
		var content = '';
		if(comment.find('div.content p').size()>0)
			content = comment.find('div.content p:last').text();
		else
			content = comment.find('div.content').text();		
		content = content.replace(/回复.*?\s*:/, '');
		
		var form = $('form[name=messageForm]');
		form.find('input[name=gid]').val(gid);
		form.find('input[name=cid]').val(cid);
		$('div.status-post p.status-citation').remove();
		$('<p class="status-citation"><span>'+ name +' : '+ content +'</span><a class="cancel" href="#nogo" onclick="return false;">×</a></p>')
			.insertBefore(form)
			.find('a:last').click(function(){
				$(this).parent().remove();
				form.find('input[name=gid]').val(0);
				form.find('input[name=cid]').val(0);
			});
		location.hash = 'navBar';
		form.find('textarea').focus();
	});
	
	//删除他人的回复
	$('div.action a.delete').live('click', function(){
		XN.DOM.disable();
		var that = this;
		XN.DO.confirm({
			title:'确认操作',
			message:'确认删除这条回复吗?',
			callBack:function(r){
				if(r){
					var id = $(that).parents('li:first').attr('name').replace(/[^0-9]/g, '');
					$.post('/gossip/del', {id:id, ownerId:pid}, function(){
						$('#replyView li[name=reply_'+ id +']')
							.add('#commentView li[name=reply_'+ id +']')
							.fadeOut('slow',function(){$(this).remove();});
					});
				}
			}
		});		
	});	
});

//更多回复/新鲜事
XN.DOM.readyDo(function(){
	var $ = jQuery;
	
	var map = {feedTab:'/feed/moreMiniFeed', commentTab:'/gossip/list', replyTab:'/gossip/ownList'};
	$('p.more-comments a').live('click', function(){
		var tab = $('#intercourseTabs').children('.current');
		var p = tab.data('p') || 0;
		var that = this;
		$.get(map[tab.attr('id')], {pid:pid, isMore:true, p:p+1},function(r){
			var nofeed = $(r).insertBefore(tab.data('view').children('p')).find('li.nofeed');
			if(nofeed.size() > 0)
				$(that).parent().hide();
			tab.data('p', p+1);
			
			//数目
			if(tab.data('view').find('input:last').size()>0){					
				var input = tab.data('view').find('input:last');
				if($.trim(input.val()) != ''){
					var num = parseInt($.trim(input.val()));
					if(!isNaN(num))
						tab.data('view').find('.more-comments a').html('查看更多('+ num +'条留言)');
				}
			}
		});
		return false;
	});
});

//引用回复的人名点击跳转
XN.DOM.readyDo(function(){
	jQuery('p.citation a').live('click', function(){
		var href = this.getAttribute('href');
		var pos = href.indexOf('#');
		if(pos != -1){
			location.href = 'http://' + XN.env.domain + '/profile.do?id=' + href.substring(pos+1);
			return false;
		}		
	});
});

//编辑描述
XN.DOM.readyDo(function(){
	var $ = jQuery;	
	var form = $('form[name=editDesc]');
	var description = $('#description');
	var textarea = form.find('textarea');
	if(form.size() == 0)
		return;
		
	//点击修改
	description.click(function(){
		if(description.is(':visible')){
			description.hide();
			form.show();
			textarea.focus().val($.trim(description.html()));	
		}		
	});	
	//hover 换背景色
	$('.page-des .mod-body').hover(function(){
		$(this).css('backgroundColor', '#FAEBD7')
	},function(){
		$(this).css('backgroundColor', 'transparent')
	});
	//长度限制
	textarea.tooltip('点击输入描述信息').limitLength(100, '#descSize').autoHeight(65);
	//提交修改
	form.submit(function(){
		var desc = $.trim(textarea.val());
		$.post('/updateDescription', {pid:pid, description:desc});
		description.html(desc || '点击输入描述信息').show();
		form.hide();
		return false;
	});
});

//推荐
XN.DOM.readyDo(function(){
	var $=jQuery;
	
	var selector = null;	
	// 缓存选择器
	function getSelector() {
		if(selector == null){			
			selector = new XN.ui.multiFriendSelectorBox({
				param : {pid: pid},
				noCompleteButton : true,
				noCancelButton : true,
				url : '/invite/recommand?pid='+pid,
				createInputElements : false,
				noNetFilter : true
			});
		}
		return selector;
	}
	
	// 显示选择器
	function showSelector(){
		var selector = getSelector();
		XN.DOM.disable();
		var dialog = XN.DO.confirm({
			title : '推荐'+(isClub ? '俱乐部' : '公共主页')+'给好友',
			msg : '<p style="padding:10px;">加载好友中...</p>',
			width : 500,
			callBack : function(r){
				if(r){
					var  ids = selector.getSelectedFriends();
					if(ids && ids.length>0){
						$.post('/invite/send/forFriend', {ids:ids, pid:pid}, function(){
							XN.DO.showMessage("已向你勾选的好友发送邀请.");
						});
					}
				}
			}
		});
		dialog.body.setContent(selector);
		selector.reset();
	}
	
	//delay load
	function delayLoad(){
		if(typeof XN.ui.multiFriendSelectorBox == 'undefined'){
			XN.loadFiles(['http://s.xnimg.cn/csspro/module/friendSelector.css',
						 'http://s.xnimg.cn/jspro/xn.ui.pager.js',
						 'http://s.xnimg.cn/jspro/xn.ui.multiFriendSelectorBox.js'],delayLoad);
			return false;
		}		
		showSelector();
		return false;
	}	
	$('#recommendToFri').live('click',delayLoad);
});

//分享
XN.DOM.readyDo(function(){
	var $ = jQuery;
	
	//delay load
	function delayLoad(){
		if(typeof pop_share == 'undefined'){
			XN.loadFiles(['http://s.xnimg.cn/jspro/xn.app.share.js'],delayLoad);
			return false;
		}
		XN.DOM.disable();
		pop_share();
		return false;
	}
	
	$('#shareToFriend').live('click', delayLoad);
});

//PAGE 编辑资料
XN.DOM.readyDo(function(){
	var $ = jQuery;
	
	function switchView(group){
		group.find('div.info-item').toggle();
		group.find('div.info-edit-item').toggle();
	}
	
	$('div.mod.profile a.edit').add('div.mod.profile input:button.gray').click(function(){
		switchView($(this).parents('.profile:first'));
	});
	
	$('div.mod.profile').find('form').submit(function(){
		var data = $(this).serializeArray();
		var group = $(this).parents('.profile:first');
		$.post('/info/mng', data, function(r) {
			if($.trim(r).substring(0,2) == '@@'){
				XN.DOM.disable();
				XN.DO.alert($.trim(r).substring(2) || '服务器繁忙，请稍后再试！');
				return;
			}
			group.find('ul.map').html(r);
			switchView(group);
		});
	});
});

//管理员
function addRelationPage(pageId,pageName){
	XN.DOM.disable();
	
	function getTitle(){
		return isClub ? '将'+pageName+'添加为我的相关俱乐部' : '将'+pageName+'添加为我的相关公共主页';
	}
	var dialog=XN.DO.confirm({
		title : getTitle(),
		message : 'loading...',
		callBack : function(r){
			if(r){
				new XN.net.xmlhttp({
					url:'/commpage/makeContact',
					method:'post',
					data:'pid=' + pid + '&reciver=' + $('choosePage').value,
					onSuccess:function(r){
						var result = XN.JSON.parse(r.responseText);
						if(result.code == 1){
							XN.DOM.disable();
							XN.DO.alert({
								title:'添加成功',
								message:'已经成功添加为相关' + (isClub ? '俱乐部' : '公共主页')
							});
						}
						else
							XN.DO.showError(result.errormsg);
					},
					onError:function(){
						XN.DO.showError('服务器异常请,稍后再试.');
					}
				});
			}
		}
	});
	dialog.footer.hide();
	
	//请求我管理的公共主页列表
	new XN.net.xmlhttp({
		url:'/commpage/myAdminPage?pid='+pageId,
		method:'get',
		onSuccess:function(r){
			try{
				var data=XN.JSON.parse(r.responseText);
				if(data.code!='undefined' && data.code==0){
					XN.DO.showError(data.errormsg);
					dialog.hide();
					return;
				}
				var options='';
				for(var i=0,l=data.list.length;i<l;i++){
					options+='<option value="'+data.list[i].pid+'">'+data.list[i].name+'</option>';
				}
				dialog.setBody('<p style="padding-left:10px;">选择一个我的公共主页：<br /><select id="choosePage" style="min-width:120px;margin-top:5px;_width:120px;">'+options+'</select></p>');
				dialog.footer.show();
			}
			catch(e){
				dialog.hide();
				XN.DO.showError('服务器异常请,稍后再试.');
			}
		},
		onError:function(){
			dialog.hide();
			XN.DO.showError('服务器异常请,稍后再试.');
		}
	});	
}

//删除相关公共主页
function deleteRelation(pid, relationId, relationName){
	XN.DOM.disable();
	XN.DO.confirm({
		title:'提示',
		message:(isClub ? '您确定要删除相关俱乐部“' + relationName + '”吗？' : '您确定要删除相关公共主页“' + relationName + '”吗？'),
		callBack:function(r){
			if(r){
				jQuery.post('/commpage/ajaxDeleted', {pid:pid, sender:relationId}, function(r){
					var response = XN.JSON.parse(r);
					if(response.code == 1)
						$('relationPage_'+relationId).remove();
					else
						XN.DO.showError(response.errormsg);
				});	
			}
		}
	});
}