/**
 * JavaScript的弹出窗口工具方法
 * 使用前请确保：
 * 1. 引入 prx.js 
 * 2. include 进 user/tipFrame_div.jsp 页面 （为通用提示框）
 * 3. include 进需要的弹窗DIV，且指定一个 id 名称
 * @author 彭冉翔
 */

/**
 * 显示提示框，两秒后自动关闭
 * @param content 提示的文字
 * @param needForward 关闭时，是否需要跳转页面: true, false
 * @param url 需要跳转页面时，指定的 url 相对地址，例如：/member/comment.sthml
 * @param title 提示框标题，默认值为 "提示"
 * @return
 */
function showTipFrame(content, needForward, url, title) {
	showTipFrameNoAutoClose(content, needForward, url, title);
	window.setTimeout("closeFrame('commonTipFrame', " + needForward + ", '" + url + "')", 2000);
}

/**
 * 显示提示框，不自动关闭
 * @param content 提示的文字
 * @param needForward 关闭时，是否需要跳转页面: true, false
 * @param url 需要跳转页面时，指定的 url 相对地址，例如：/member/comment.sthml
 * @param title 提示框标题，默认值为 "提示"
 * @return
 */
function showTipFrameNoAutoClose(content, needForward, url, title) {
	if(title != null && title.length > 0) {
		$("#commonTipFrameTitle").empty().append(title);
	}
	$("#commonTipContent").empty().append(content);
	$("#commonTipFrameOnclick").one("click", function() {
		closeFrame('commonTipFrame', needForward, url);
	});
	showFrameNotCheck('commonTipFrame');
}

/**
 * DIV层得居中弹出
 * @param id DIV层的 id
 * @param needLogin 是否需要登录：true, false
 * @param curUserId 需要登录时传入当前用户id，用于验证是否登录  
 * @return
 */
function showFrame(id, needLogin, curUserId)
{
	if(checkLogin(needLogin, curUserId)) {
		showFrameNotCheck(id);
	}
}

/**
 * 关闭DIV层弹出框
 * @param id DIV层的 id
 * @return
 */
function closeFrame(id, needForward, url) {
	$('#' + id).css('display', 'none');
	removeMaskDiv();
	if(needForward) {
		if(url == "refresh") {
			window.location.reload();
		} else {
			window.location.href=url;
		}
	}
}

/**
 * 取得指定 radio 表单元素的选中值
 * @param name 根据 radio 标签的 name 属性值取得指定 radio
 * @return
 */
function getRadioValue(name) {
	var value;
	$(":radio[name='" + name + "']").each(function(i) {
		if(this.checked == true) {
			value = this.value;
		}
	});
	return value;
}

/**
 * 设置指定 radio 表单元素的选中值 
 * @param name 根据 radio 标签的 name 属性值取得指定 radio
 * @param value 选中值
 * @return
 */
function setRadioValue(name, value) {
	$(":radio[name=" + name + "]").each(function(i) {
		if(this.value == value) {
			this.checked = true;
		}
	});
}

/*--------------------一下方法为内部调用，请勿直接调用------------------------------------ */
/*
 * 加入遮罩层
 * @return
 */
function addMaskDiv() {
	jQuery("body").append("<div id='divMask' class='DivMask'></div>");
	jQuery('.DivMask').css(
        {
            height:$(document).height(),
            width:document.body.clientWidth,
            "background-color": "#000000",
            opacity:"0.3",
            top:"0",
            left:"0",
            position: "absolute",
            "z-index":"10" 
        }
    );
}

/*
 * 移除遮罩层
 * @return
 */
function removeMaskDiv() {
	$("#divMask").empty().detach();
}

/*
 * 验证是否登录
 * @param needLogin 是否需要登录: true, false
 * @param curUserId 要验证时，传入当前用户ID，用于
 * @return
 */
function checkLogin(needLogin, curUserId) {
	if(needLogin) {
		if(curUserId == null || curUserId == '' || curUserId.length < 10) {
			var preUrl = top.window.location.pathname;
			var param = top.window.location.search;
			var result = preUrl + param;
			showTipFrame("请先登录", true, "/login.shtml?preUrl=" + result);
			return false;
		}
		return true;
	} else {
		return true;
	}
}

/*
 * DIV层得居中弹出，不验证登录
 * @param id DIV层的 id 
 * @return
 */
function showFrameNotCheck(id)
{
	addMaskDiv();
	$("#" + id).css("z-index",50).css("position", "absolute");
	
	var windowWidth = $(window).width();
	var windowHeight = $(window).height();
	var scrollTop = $(document).scrollTop();	//滚动条下滑的高度
	
	var divWidth = $("#" + id).width();
	var divHeight = $("#" + id).height();
	
	var left = (windowWidth - divWidth)/2;
	var top = (windowHeight - divHeight)/2 + scrollTop;
	
    $("#" + id).css("left", left).css("top", top).css("display", "");
}

/*-----------------------------------------业务方法----------------------------------------------------*/

/**
 * AJAX 赞成一条评论
 * @param commentMemberId 点评发布人的ID
 * @param commendId 点评的ID
 * @return
 */
function ajaxGoodComment(commentMemberId, commentId) {
	$.ajax({
		type:"post",
		url:"/member/add/good.shtml",
		data:"commentUserId=" + commentMemberId + "&commentId=" + commentId,
		dataType:"json",
		success:function(data) {
			closeFrame('attentionFrame');
			if(data == 'notLogin') {
				var preUrl = window.location.pathname;
				var param = window.location.search;
				showTipFrame("请先登录", true, "/login.shtml?preUrl=" + preUrl + param);
			} else if(data == "yourself") {
				showTipFrame("不能赞同自己的点评");
			} else if(data == "ok") {
				var count = parseInt($("#commentCount" + commentId).html()) + 1;
				$("#commentCount" + commentId).empty().append(count);
				$("#commentCountTitle" + commentId).attr("title", "已有" + count + "个人赞同他的点评");
				showTipFrame("赞同成功");
			} else if(data == "two") {
				showTipFrame("您已经赞同过该评论了");
			}
		}
	});
}

/**
 * 显示回复信息列表
 * @param messageId 点评或想去的ID
 * @param messageType 被回复信息的类别：点评HFDX1，想去HFDX2
 * @param divId 显示回复列表的DIV
 * @param messageUserId 被回复对象的所属人ID
 * @param type 点评列表，回复详情列表
 */
function ajaxReplyList(messageId, messageType, divId, messageUserId, type) {
	var display = $("#" + divId).css("display");
	if(display == 'none') {
		if($("#" + divId).attr("name") == "done") {
			$("#" + divId).css("display", "");
		} else {
			$.ajax({
				type:"post",
				url:"/message/reply/" + messageId + ".shtml",
				data:"messageType=" + messageType + "&messageUserId=" + messageUserId + "&type=" + type,
				dataType:"html",
				success:function(data) {
					$("#" + divId).empty().append(data);
					$("#" + divId).css("display", "");
					$("#" + divId).attr("name", "done");
				}
			});
		}
	} else {
		$("#" + divId).css("display", "none");
	}
}

/**
 * 添加一条回复
 * @param messageId 被回复对象的ID
 * @param messageUserId 被回复对象的所属人ID
 * @return
 */
function ajaxAddReply(messageId, messageUserId) {
	var userid = $("#v_userid" + messageId).val();
	var objType = $("#v_obj_type" + messageId).val();
	var content = $("#replyContent" + messageId).val();
	var to_userid = $("#v_to_userid" + messageId).val();
	var objId = messageId;
	
	if(content.length < 1) {
		showTipFrame("回复内容不能少于1个字符");
		return;
	}
	
	if(content.length > 200) {
		showTipFrame("回复内容不能多于200个字符");
		return;
	}
	
	$.ajax({
		type:"post",
		url:"/message/add/reply.shtml",
		data:"v_userid=" + userid + "&v_obj_type=" + objType + "&v_obj_id=" + objId + "&v_obj_userid=" + messageUserId + "&v_content=" + content + "&v_to_userid=" + to_userid ,
		dataType:"html",
		success:function(data) {
			$("#replyList" + messageId).append(data);
			var count = parseInt($("#messageReply" + messageId).html()) + 1;
			$("#messageReply" + messageId).empty().append(count);
			$("#replyContent" + messageId).val("");
			//showTipFrame("回复成功");
		}
	});
}

/**
 * 查看回应列表中的详情
 * @param leavewordId 留言的ID
 * @return
 */
function ajaxGetReplyDetail(leavewordId) {
	if($("#replyDetial" + leavewordId).attr("name") == "done") {
		$("#replyDetial" + leavewordId).toggle();
	} else {
		$.ajax({
			type:"post",
			url:"/my/reply/info.shtml",
			data:"leavewordId=" + leavewordId,
			dataType:"html",
			success:function(data) {
				$("#replyDetial" + leavewordId).attr("name", "done");
				$("#replyDetial" + leavewordId).empty().append(data);
				$("#replyDetailListOnclick" + leavewordId).click();	//触发详情的回复按钮
			}
		});
	}
}

/**
 * 回复列表中，发表对回复人的回复
 * @param messageId 被回复的消息的ID
 * @param toUsername 被回复的回复人名称
 * @param toUserId 被回复的回复人ID
 * @return
 */
function replyToUser(messageId, toUsername, toUserId) {
	$("#to_username" + messageId).empty().append("TO " + toUsername + "：");
	$("#to_username" + messageId).css("display", "");
	$("#v_to_userid" + messageId).val(toUserId);
}

/**
 * 修改我的关注-关注会员的关注组
 * @param attentionId 关注ID
 * @param attentionGroupId 原关注组ID
 * @param newAttentionGroupId 新关注组ID
 * @param newGroupName 新关注组名字
 * @return
 */
function updateAttentionGroup(attentionId, attentionGroupId, newAttentionGroupId, newGroupName) {
	if(attentionGroupId == newAttentionGroupId) {
		return;
	}
	$.ajax({
		type:"post",
		url:"/my/update/attention/group.shtml",
		data:"attentionId=" + attentionId + "&newAttentionGroupId=" + newAttentionGroupId,
		dataType:"json",
		success:function(data) {
			if(data == 'ok') {
				$("#memberAttentionGroup" + attentionId).empty().append(newGroupName);
				showTipFrame("修改关注组成功", true, "refresh");
			}
		}
	});
}

/**
 * 发表留言
 * @return
 */
function shopCommentPublish(textAreaId, shopId, userid, url) {
	if(checkLogin(true, userid)) {
		var content = $("#" + textAreaId).val();
		if(content == '输入你的位置和标签发布留言，方便朋友们找留言，找你！' || content == '输入你的标签发布留言，方便朋友们找留言，找你！') {
			showTipFrame("请输入留言内容");
			return;
		}
		var reg=new RegExp("&","g"); //创建正则RegExp对象   
		content = content.replace(reg, '%26');
		var uploadFile = $("input[name='v_url']").val();
		
		var selectTag = $("#messageSelectTag").val();
		var messageSelectQuan = $("#messageSelectQuan").val();
		
		if(selectTag == null || $.trim(selectTag) == '') {
			showTipFrame("标签不能为空");
			return;
		}
		
		if(shopId == null) {
			if(messageSelectQuan == null || $.trim(messageSelectQuan) == '') {
				showTipFrame("位置不能为空");
				return;
			}
		}
		
		if(content.length < 10) {
			showTipFrame("发表内容不能少于10个字符");
			return;
		}
		
		if(content.length > 200) {
			showTipFrame("发表内容不能多于200个字符");
			return;
		}
		
		var params = "selectTag=" + selectTag + "&v_userid=" + userid + "&v_content=" + content + "&v_url=" + uploadFile;
		if(shopId != null) {
			params = params + "&v_shopid=" + shopId;
		} else {
			params = params + "&v_shopname=" + messageSelectQuan;
		}
		
		$.ajax({
			type:"post",
			url:"/message/send/comment.shtml",
			data:params,
			dataType:"json",
			success:function(data) {
				if(data == 'ok') {
					if(shopId != null && (url == null || url == '' || url.length < 2)) {
						showTipFrame("留言成功", true, "/shop/" + shopId + ".shtml");
					} else {
						showTipFrame("留言成功", true, url);
					}
				} else if(data == 'editMemberInfo') {
					showTipFrame("完善资料才能更好找到兴趣相同的朋友哦，立即完善资料", true, "/userBasic.shtml");
				} else if(data == 'nickname') {
					showTipFrame("请选择有个性的昵称，方便更好的找到朋友哦！", true, "/userBasic.shtml");
				}
			}
		});
	}
}

/**
 * 商家主页发表点评
 * @return
 */
function shopCommentPublish_old(textAreaId, shopId, userid, url) {
	if(checkLogin(true, userid)) {
		var content = $("#" + textAreaId).val();
		if(content == '点评商家，和大家分享你的消费体验。优质点评更可以获得积分和加精奖励！') {
			showTipFrame("请输入点评内容");
			return;
		}
		var reg=new RegExp("&","g"); //创建正则RegExp对象   
		content = content.replace(reg, '%26');
		var uploadFile = $("input[name='v_url']").val();
		
		if(content.length < 10) {
			showTipFrame("发表内容不能少于1个字符");
			return;
		}
		
		if(content.length > 200) {
			showTipFrame("发表内容不能多于200个字符");
			return;
		}
		
		$.ajax({
			type:"post",
			url:"/message/shop/add/comment.shtml",
			data:"v_shopid=" + shopId + "&v_userid=" + userid + "&v_content=" + content + "&v_url=" + uploadFile,
			dataType:"json",
			success:function(data) {
				if(data == 'ok') {
					if(shopId != null && (url == null || url == '' || url.length < 2) ) {
						showTipFrame("点评成功", true, "/shop/" + shopId + ".shtml");
					} else {
						showTipFrame("留言成功", true, url);
					}
				}
			}
		});
	}
}

/**
 * 商家验证
 * @return
 */
function shopCheck(orderId, checkCode) {
	$.ajax({
		type:"post",
		url:"/shop/main/check.shtml",
		data:"orderId=" + orderId + "&checkCode=" + checkCode,
		dataType:"json",
		success:function(data) {
			if(data == 'ok') {
				showTipFrameNoAutoClose("验证成功", true, "refresh");
			} else if(data == 'use') {
				showTipFrameNoAutoClose("该凭证已经消费，不能重复消费");
			} else if(data == 'no') {
				showTipFrameNoAutoClose("该凭证不存在，请确定是否输入有误");
			}
		}
	});
}

/**
 * 打招呼
 * @param userId 打招呼的对象
 * @param userName 打招呼的对象的名字
 * @param curUserId 当前登录用户
 * @return
 */
function hello(userId, userName, curUserId) {
	if(checkLogin(true, curUserId)) {
		if(userId == curUserId) {
			showTipFrame("不能和自己打招呼");
			return;
		}
		$.ajax({
			type:"post",
			url:"/my/sendHello.shtml",
			data:"userid=" + userId,
			dataType:"json",
			success:function(data) {
				if(data == 'ok') {
					showTipFrame("向\“" + userName + "\”打招呼成功");
				}
			}
		});
	}
}

/**
 * 积分兑奖模块，行业和商圈展开与收缩效果
 * @param betterId 推荐的行业或商圈的 ID
 * @param moreId 全部行业展示的ID
 * @param hrefId 展开超链接标签的ID
 * @param expText 收起后超链接的文字
 */
function scoreTitle(betterId, moreId, hrefId, expText) {
	if($('#' + moreId).css("display") == 'none') {
		$('#' + moreId).show('fast');
		$('#' + betterId).hide();
		$('#' + hrefId).html('收起↑');
	} else {
		$('#' + moreId).hide('fast');
		$('#' + betterId).show();
		$('#' + hrefId).html(expText);
	}
};

/**--------------------------------------JQuery文字上下滚动插件-------------------------------------------**/
(function($){
	$.fn.extend({
        Scroll:function(opt,callback){
            //参数初始化
            if(!opt) var opt={};
            var _this=this.eq(0).find("ul:first");
            var        lineH=_this.find("li:first").height(), //获取行高
                    line=opt.line?parseInt(opt.line,10):parseInt(this.height()/lineH,10), //每次滚动的行数，默认为一屏，即父容器高度
                    speed=opt.speed?parseInt(opt.speed,10):500, //卷动速度，数值越大，速度越慢（毫秒）
                    timer=opt.timer?parseInt(opt.timer,10):3000; //滚动的时间间隔（毫秒）
            if(line==0) line=1;
            var upHeight=0-line*lineH;
            //滚动函数
            scrollUp=function(){
                    _this.animate({
                            marginTop:upHeight
                    },speed,function(){
                            for(i=1;i<=line;i++){
                                    _this.find("li:first").appendTo(_this);
                            }
                            _this.css({marginTop:0});
                    });
            }
            //鼠标事件绑定
            _this.hover(function(){
                    clearInterval(timerID);
            },function(){
                    timerID=setInterval("scrollUp()",timer);
            }).mouseout();
        }       
	})
})(jQuery);
