var clock;
$(document).ready(
    function() {
        refreshCart();//初始化购物车信息
        checkLogin();
        $("#cartWrap").mouseover(function(){
            showCartPanel();
            window.clearTimeout(clock);
        });
        $("#cartWrap").mouseout(function(){
            clock = window.setTimeout(hideCartPanel,1000); 
        });
        $("#cartPanel").mouseover(function(){            
            window.clearTimeout(clock);  
            //showCartPanel();         
        });
        $("#cartPanel").mouseout(function(){
            clock = window.setTimeout(hideCartPanel,1000);           
        });
    }
);
function checkLogin(){
	if ($.cookie("jjmUserInfo")!=null&&$.cookie("jjmUserInfo")!=""){
		var userName = jQuery.parseJSON($.cookie("jjmUserInfo")).userName;
		$("#memberLoginInfo").html(userName+"，欢迎您来到家家买礼品超市！[<a href='javascript:logout();'>退出</a>]");
	}
}
function hideCartPanel(){
    $("#cartPanel").hide();
    //alert(clock);
}

// 函数名 writeToCookie() 
// 功能 将字符串写到Cookie中去
function writeToCookie(shopingCartCookie){
    $.cookie("JJMshopingCart",shopingCartCookie,{expires:1,path:'/'});        
    //$.cookie("JJMshopingCart",shopingCartCookie,{expires:30,domain: "www.jiajiamai.com"});
}

// 函数名 getCart() 
// 功能 从Cookie中读出购物车
function getCart(){
    if ($.cookie("JJMshopingCart")==null||$.cookie("JJMshopingCart")==""){
        writeToCookie("{\"goods\":[]}");        
        return JSON.parse("{\"goods\":[]}");
    }else{
        return JSON.parse($.cookie("JJMshopingCart"));
    }
}
// 函数名 addGoods() 
// 功能 添加商品到购物车，保存到cookie中
// 参数 
// id name price num remark
// 商品ID 商品名称 单价 数量 备注 
function addGoods(id,sn,name,price,num,remark,image){
    var jsonGoods = getCart();
    //判断是否有此商品，有则改变数量，无则增加
    var hasGoods = false;
    for (var i=0; i < jsonGoods.goods.length;i++){
        if(jsonGoods.goods[i].id==id){
            jsonGoods.goods[i].num = parseInt(num) + parseInt(jsonGoods.goods[i].num);
            hasGoods = true;
            if (remark!=""){
                jsonGoods.goods[i].remark = remark;
            }
        }
    }   
    if (!hasGoods){
        jsonGoods.goods.push({"id":id,"sn":sn,"name":name,"price":price,"num":parseInt(num),"remark":remark,"image":image});  
    }
    writeToCookie(JSON.stringify(jsonGoods));    
    refreshCart();    
    jAlert("此商品成功放入购物车！",'家家买温馨提示');
}
// 函数名 loadShoppingCart() 
// 功能 在结算页面中加载购物车中的商品信息
var sumCast=0.00;
function loadShoppingCart(){    
    var jsonGoods = getCart(); 
    var cartListText = "";  
    var goodsNumber = 0; 
    var totalPrice = 0.00;
    $("#orderList").empty();
    if (jsonGoods.goods.length==0){
        $("#orderList").append("<br/><br/>您还未选择喜欢的商品，再去<a href='index.htm'>店铺逛逛</a>吧，体验一下我们带给您的便捷服务！<br/><br/><br/>");
    }else{
        cartListText = "<table id=\"tableList\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\" style=\"border-collapse:collapse;margin:20px; width:960px; border:1px solid #92BE4B;\">";
        cartListText += "<tr align=\"center\" style=\"background-color:#D9EEAD;height:30px;\"><td>商品编号</td><td>商品名称</td><td>价格</td><td>商品数量</td><td>删除商品</td></tr>";
        for (var i=0; i < jsonGoods.goods.length;i++){
            goodsNumber = parseInt(jsonGoods.goods[i].num) + parseInt(goodsNumber);
            cartListText += "<tr>"
            cartListText += "<td>" + jsonGoods.goods[i].sn + "</td><td>" +jsonGoods.goods[i].name + "</td><td>￥" + jsonGoods.goods[i].price  + "</td><td>" + jsonGoods.goods[i].num + "</td><td><a href='#' onclick='deletePageGoods(" + i + ");return false;'>删除</a></td>" ;
            cartListText +="</tr>";            
            totalPrice = addTwoFloat(totalPrice,accMul(parseFloat(jsonGoods.goods[i].price),parseFloat(jsonGoods.goods[i].num)));
            //totalPrice += parseFloat(jsonGoods.goods[i].price)*parseInt(jsonGoods.goods[i].num); 
        }
        totalPrice = totalPrice.toFixed(2);
        var deliverCast = 0.00;
        var info = "";
        if (totalPrice <= 50) {
            deliverCast = 10.00;
            info = "（商品总额大于50元送货费为5元，满100元即可免送货费哦！）";
        } else if (totalPrice <= 100) {
            deliverCast = 5.00;
            info = "（满100元即可免送货费哦！）";
        }
        deliverCast = deliverCast.toFixed(2);
        sumCast = parseFloat(totalPrice) + parseFloat(deliverCast);
        sumCast = sumCast.toFixed(2);        
        cartListText += "<tr><td colspan='5' style='background-color:#D9EEAD;height:30px;'>您共选择 <font color='red'><strong>" + goodsNumber + "</strong></font> 件商品，总计应付：<font color='red'><strong>￥" + totalPrice + "（商品总额）+￥" + deliverCast + "（送货费）=" + sumCast + "元</strong></font><font color='green'><strong>" + info + "</strong></font></td></tr>";
        cartListText += "</table>";
        $("#orderList").append(cartListText);
    }
}
// 函数名 emptyCart() 
// 功能 删除购物车中的所有信息 
function emptyCart(){
    writeToCookie("{\"goods\":[]}"); 
    loadShoppingCart(); 
    refreshCart();
}

// 函数名 indexOfGoods() 
// 功能 从Cookie中取一个商品的纪录


// 函数名 updateGoodsQuantity() 
// 功能 修改商品定购数量


// 函数名 parseCart() 
// 功能 提交订单信息 
function parseCart(){
    //读取cookie中的数据生成json数据，并提交
}


// 函数名 removeGoodsMuti() 
// 功能 删除购物车中的多项物品 调用 removeGoods() 函数实现


//函数名 refreshCart() 
//刷新购物车信息显示
function refreshCart(){
    var jsonGoods = getCart();
    var goodsNumber = 0;  
    var cartPanelText = "";  
    var totalPrice = 0.00;
    if (jsonGoods.goods.length==0){
        $("#goodsNum").text(goodsNumber);
        $("#cartPanel").empty();
        $("#cartPanel").append("您的购物车中暂无商品，赶快选择心爱的商品吧！");        
    }else{
        for (var i=0; i < jsonGoods.goods.length;i++){
            goodsNumber = parseInt(jsonGoods.goods[i].num) + parseInt(goodsNumber);
            cartPanelText += "<img src='" + jsonGoods.goods[i].image + "' width='50' height='50' align='left' style='border:1px solid #DBECB6;padding:1px;margin:2px;'><div style='float:left;width:140px;padding-top:2px;'>" +jsonGoods.goods[i].name + "</div><div style='float:left;color:red;font-weight:bold;text-align:right;width:100px;'>￥" + jsonGoods.goods[i].price  + "×" + jsonGoods.goods[i].num + "<br/><span style='font-weight:normal;color:#aaaaaa'><a href='#' onclick='deleteGoods(" + i + ");return false;'>删除</a></span></div><br/><br/>" ;
            cartPanelText +="<hr/><br/>";
            totalPrice = addTwoFloat(totalPrice,accMul(parseFloat(jsonGoods.goods[i].price),parseFloat(jsonGoods.goods[i].num)));
            //totalPrice += parseFloat(jsonGoods.goods[i].price)*parseInt(jsonGoods.goods[i].num);
        }    
        totalPrice = totalPrice.toFixed(2);
        cartPanelText += "<div width='100%' style='background-color:#eaeaea;text-align:right;padding-right:5px;'>&nbsp;&nbsp;&nbsp;&nbsp;共 <strong>" +goodsNumber + "</strong> 件商品 金额总计：<font color='red'><strong>￥" + totalPrice + "</strong></font></div>";
        cartPanelText += "<div style='width:100%; text-align:right;padding-right:10px;padding-top:5px;'><a href='shoppingCart.jsp'><img src='images/gotoShopingCart.gif' border='0'></a></div>";
        $("#goodsNum").text(goodsNumber);
        $("#cartPanel").empty();
        $("#cartPanel").append(cartPanelText);        
    }    
}

//显示购物车信息面板
function showCartPanel(){
    var cartWrapX = $("#cartWrap").offset();
    if (cartWrapX.left + $("#cartPanel").width()<screen.width){
        $("#cartPanel").css("left",cartWrapX.left-3);
    }else{
        $("#cartPanel").css("left",cartWrapX.left+$("#cartWrap").width()-$("#cartPanel").width()-3);
    }		    
    $("#cartPanel").css("top",cartWrapX.top+$("#cartWrap").height()+3);    
    
    $("#cartPanel").fadeTo("slow", 0.9);
    $("#cartPanel").show();    
}

// 函数名 deleteGoods() 
// 功能 删除购物车中的某项物品 
function deleteGoods(i){
    var jsonGoods = getCart();    
    jsonGoods.goods.splice(i,1);
    writeToCookie(JSON.stringify(jsonGoods));
    refreshCart();
}
// 函数名 deleteGoods() 
// 功能 删除结算页面中购物车中的某项物品 
function deletePageGoods(i){
    var jsonGoods = getCart();    
    jsonGoods.goods.splice(i,1);
    writeToCookie(JSON.stringify(jsonGoods));
    loadShoppingCart();
    refreshCart();
}
//乘法函数，用来得到精确的乘法结果 
//说明：javascript的乘法结果会有误差，在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。 
//调用：accMul(arg1,arg2) 
//返回值：arg1乘以arg2的精确结果 
function accMul(arg1,arg2) 
{ 
     var m=0,s1=arg1.toString(),s2=arg2.toString(); 
     try{
        m+=s1.split(".")[1].length
     }catch(e){} 
     try{
        m+=s2.split(".")[1].length
     }catch(e){} 
     return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m) 
}

//相加两个float类型的数值
function addTwoFloat(val1,val2)
{
    var TotalNum;
    val1 = val1 + '' ; 
    val2 = val2 + '' ;
    var sp_val1 = val1.split(".") ; 
    var sp_val2 = val2.split(".") ;
    if ((sp_val1.length==2) && (sp_val2.length==2)) { 
        //整数部分相加
        var total1 = parseInt(sp_val1[0]) + parseInt(sp_val2[0]);
        //小数部分相加
        if (sp_val1[1].length==1){
            sp_val1[1] = sp_val1[1]+"0";
        }
        if (sp_val2[1].length==1){
            sp_val2[1] = sp_val2[1]+"0";
        }
        var total2 = parseInt(sp_val1[1]) + parseInt(sp_val2[1]);
        total2 = total2+"";
        if (total2.length==1){
            total2 = "0"+total2;
        }else if(total2.length>2)
        {
            total1 +=parseInt(total2.substr(0,total2.length-2));
            total2 = total2.substring(total2.length-2,total2.length);
        }
        TotalNum = parseFloat(total1+"."+total2);
    }else{     
        TotalNum = parseFloat(val1) + parseFloat(val2) ;     
    }
    return TotalNum;
    
}

function loadLoginDiv(){
	personInfoHtml=$("#personInfo").html();
	//alert($.cookie("jjmUserInfo"));
	if ($.cookie("jjmUserInfo")==null||$.cookie("jjmUserInfo")==""){
		$("#personInfo").empty();
		$("#personInfo").html('<div style="text-align:center;background-color:#ffecb7;padding:10px;"><font color="red"><b>尊敬的客户，请您登录后提交订单，我们将很快确认订单为您发货！</b></font>'+
        '<div style="line-height:30px; padding:5px;">'+
            '用户名：<input id="userName" type="text"/>'+
            '密&nbsp;&nbsp;码：<input id="password" type="password" />&nbsp;'+
            '<input id="loginSubmit" type="button" onclick="shoplogin()" value="登录" />'+
            '没有账户？请 <a href="regist.htm" class="red"><b>[注册]</b></a>'+
        '</div><p id="msg" style="color:#ff0000"></p></div>');        
	}else{
		loadUserInfo();
	}
}
var userInfoObj;
function shoplogin(){
	if($("#userName").val().trim()==''){
		$("#userName").addClass('redBorder');
		$("#msg").text('提示：请输入用户名');
		return;
	}else{
		$("#userName").removeClass('redBorder');
		$("#msg").empty();
	}
	if($("#password").val().trim()==''){
		$("#password").addClass('redBorder');
		$("#msg").text('提示：请输入密码');
		return;
	}else{
		$("#password").removeClass('redBorder');
		$("#msg").empty();
	}
	$("#msg").text('登录中，请稍候……');
	$.post('login.client', {
        userName: $("#userName").val(),
        password: $("#password").val()
        }, function(e) {
        	if (e.toString()=="failure"){
                $("#msg").text('提示：登录失败！请重新输入您的用户名和密码');            	
            }else{
                $.cookie("jjmUserInfo",e.toString(),{expires:1,path:'/'});
            	$("#personInfo").html(personInfoHtml);
            	$("#msg").empty();
                loadUserInfo();
            }
    });
}
function login(){	
	if($("#userName").val()==''){		
		$("#userName").removeClass('inputGreen');
		$("#userName").addClass('inputRed');
		$("#msg").text('提示：请输入用户名');
		return;
	}else{
		$("#userName").removeClass('inputRed');
		$("#userName").addClass('inputGreen');
		$("#msg").empty();
	}
	if($("#password").val()==''){
		$("#password").removeClass('inputGreen');
		$("#password").addClass('inputRed');
		$("#msg").text('提示：请输入密码');
		return;
	}else{
		$("#password").removeClass('inputRed');
		$("#password").addClass('inputGreen');
		$("#msg").empty();
	}
	$("#msg").text('登录中，请稍候……');
	$.post('login.client', {
        userName: $("#userName").val(),
        password: $("#password").val()
        }, function(e) {
        	if (e.toString()=="failure"){
                $("#msg").text('提示：登录失败！请重新输入您的用户名和密码');            	
            }else{
                $.cookie("jjmUserInfo",e.toString(),{expires:1,path:'/'}); 
                var returnUrl = "login.jsp?returnUrl="+window.location.href;
				returnUrl = returnUrl.substring(returnUrl.lastIndexOf('?re')+11,returnUrl.length);	
				window.location.href=returnUrl;
            }
    });
}
function toLoginPage(){
	window.location.href="login.jsp?returnUrl="+window.location.href;
}
function logout(){
	$.cookie("jjmUserInfo","",{expires:1,path:'/'});
	window.location.href = window.location.href;
}
function changeReceivePerson(i){	
	$("#receivePersonName").val(userInfoObj.userInfo[i].realName);
    $("#mobile").val(userInfoObj.userInfo[i].mobile);
    $("#address").val(userInfoObj.userInfo[i].address);
    $("#phone").val(userInfoObj.userInfo[i].phone);
    $("#email").val(userInfoObj.userInfo[i].email);
    $("#postcode").val(userInfoObj.userInfo[i].postcode);
	return false;
}
function loadUserInfo(){
	userInfoObj = jQuery.parseJSON($.cookie("jjmUserInfo"));
    if(userInfoObj.userInfo.length>1){                	
    	$("#otherReceivePerson").text("此用户设置过的收货人有：");
    	for (var i=0;i<userInfoObj.userInfo.length;i++){                		
    		$("#otherReceivePerson").append("<a href='javascript:changeReceivePerson("+i+");' style='padding:5px;' class='gray'>"+userInfoObj.userInfo[i].realName+"</a>");
    	}
    }    
    $("#receivePersonName").val(userInfoObj.userInfo[0].realName);
    $("#mobile").val(userInfoObj.userInfo[0].mobile);
    $("#address").val(userInfoObj.userInfo[0].address);
    $("#phone").val(userInfoObj.userInfo[0].phone);
    $("#email").val(userInfoObj.userInfo[0].email);
    $("#postcode").val(userInfoObj.userInfo[0].postcode);	
}
var floatWinShow=false;
var floatWinHtml="";
var orderNum="";
function submitOrder(){
	var jsonGoods = getCart();	
	if($.cookie("jjmUserInfo")==''){
    	jAlert('请您登录后再提交订单！',"家家买温馨提示");
		return;
    } 
	if (jsonGoods.goods.length==0){
		jAlert('您购物车中还没有商品，请挑选好商品再提交订单！',"家家买温馨提示");
		return;
	}
	//支付及配送方式
    var payType=$("input:radio[name='payType']:checked").val();
	if($("input:radio[name='payType']:checked").length==0){
		jAlert('请选择支付及配送方式！',"家家买温馨提示");
		return;
	}
	if(payType=='webPay'&&$("input:radio[name='bank_type']:checked").length==0){
		jAlert('请选择支付银行！',"家家买温馨提示");
		return;
	}
	//验证备注字数
    var orderRemark = $("#remark").val();
    if(orderRemark.length>100){
        jAlert("您在备注中输入的字数大于200字，请将备注内容精简到200字内，谢谢！","家家买温馨提示");
        $("#remark").focus();
        return;
    }       
    //收货人信息    
    var userId = jQuery.parseJSON($.cookie("jjmUserInfo")).id;    
    var receivePersonName = $("#receivePersonName").val();
    var mobile = $("#mobile").val();    
    var phone = $("#phone").val(); 
    var email = $("#email").val();
    var postcode = $("#postcode").val();
    var address = $("#address").val();    
    //验证用户信息中不能有“,”
    //if (receivePersonName.indexOf(",")!=-1||mobile.indexOf(",")!=-1||phone.indexOf(",")!=-1||location.indexOf(",")!=-1){
    //    jAlert("您的联系信息中请不要输入逗号（,）");
    //    return;
    //}
    if (receivePersonName==""||mobile==""||address==""){
        jAlert("请填写您的详细资料，以便我们能按时送货上门，谢谢合作！","家家买温馨提示");
        return;
    }
    //备注信息
    if(remarkBlankText==$("#remark").val()){
    	$("#remark").val('');
    } 
    var userInfo = '{"userInfo":[{"userId":'+userId+',"receivePersonName":"'+receivePersonName+'","email":"'+email+'","postcode":"'+postcode+'","mobile":"'+mobile+'","phone":"'+phone+'","address":"'+address+'"}],"remark":"'+$("#remark").val()+'","payType":"'+payType+'"}';
    //提交订单
    floatWinHtml = '<div style="padding:10px;color:#ff0000;text-align:center;font-size:15pt;">订单提交中，请稍候……</div>';
	showConfirmPayWin(floatWinHtml);    
    //return;
    try{
    	$.post('submitOrder.client', {
	        userInfo:userInfo,	        
	        jsonGoods: json2str(jsonGoods)
	        }, function(e) {
	            if (e.toString().length==14){
	            	floatWinHtml = '<div style="padding:10px;color:#ff0000;text-align:center;font-size:12pt;">订购成功，感谢您选择我们的服务！<br/>点此<a href="/">返回</a></div>';
					showConfirmPayWin(floatWinHtml);	            	
	            	emptyCart();
	            	if(payType=='webPay'){
	                	orderNum = e.toString();
	            		floatWinHtml = '感谢您在本店购物！您的订单已提交成功！<br/>订单号为：'+e.toString()+'，<div style="margin:0 auto;background-color:#990000;color:#fff;border:#eaeaea;padding:5px;width:130px;text-align:center;"><a id="tenpayUrl" class="white" href="#" target="_blank" onclick="confirmPaySucess()"><b>请点此进行网上支付</b></a></div>';
						showConfirmPayWin(floatWinHtml);
	                }
	            	updateReceivePersonInfo(userId);
	            }else{
	            	floatWinHtml = '<div style="padding:10px;color:#990000;text-align:center;font-size:12pt;">抱歉！订购失败！如有疑问请联系我们客服，谢谢！</div>';
					showConfirmPayWin(floatWinHtml);	            	
	            }	        	
	            return;	        	
	    });
    }catch(e){
    	$("#body").html('<div style="padding:100px;color:#ff0000;text-align:center;font-size:15pt;">提交订单失败</div>'+e);
    }
}

function confirmPaySucess(){	
	var bank_type = $("input:radio[name='bank_type']:checked").val();	
	var totalFee=sumCast*100;
	var url='userCenter/tenpay-'+orderNum+'-'+totalFee+'-'+bank_type+'.htm';
	$("#tenpayUrl").prop('href',url);
	$("#retenpayUrl").prop('href',url);
	floatWinHtml = $("#confirmPayWin").html();	
	showConfirmPayWin(floatWinHtml);
}
function scrollBar(){
	if (floatWinShow){
		showConfirmPayWin(floatWinHtml);
	}	
}
function showConfirmPayWin(html){
	floatWinShow = true;
	$("#floatWin").html(html);
	$("#floatWin").show();
	var left = ($(window).width()-$("#floatWin").width())/2;
	var top = $(document).scrollTop()+($(window).height()-$("#confirmPayWin").height())/2;
	$("#floatWin").offset({ top: top, left: left });
}
//更新收货人用户的基本信息
function updateReceivePersonInfo(memberId){
	$.post('getNewestMemberInfo.client', {
        memberId: memberId
        }, function(e) {
        	if (e.toString()=="failure"){
                //$("#msg").text('提示：登录失败！请重新输入您的用户名和密码');            	
            }else{
                $.cookie("jjmUserInfo",e.toString(),{expires:1,path:'/'});            	
            }
    });
	
}
function json2str(o) {
     var arr = [];
     var fmt = function(s) {
         if (typeof s == 'object' && s != null) return json2str(s);
         return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s;
     }
     for (var i in o) arr.push("'" + i + "':" + fmt(o[i]));
     return '{' + arr.join(',') + '}';
}
Date.prototype.format = function(format)
{
    var o = {
    "M+" : this.getMonth()+1, //month
    "d+" : this.getDate(),    //day
    "h+" : this.getHours(),   //hour
    "m+" : this.getMinutes(), //minute
    "s+" : this.getSeconds(), //second
    "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
    "S" : this.getMilliseconds() //millisecond
    }
    if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
    (this.getFullYear()+"").substr(4 - RegExp.$1.length));
    for(var k in o)if(new RegExp("("+ k +")").test(format))
    format = format.replace(RegExp.$1,
    RegExp.$1.length==1 ? o[k] :
    ("00"+ o[k]).substr((""+ o[k]).length));
    return format;
}

jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};
