$(document).ready(function(){
    $("input[@name='bet']").each(function(i){
        $(this).blur(function(){ checkBetPrice(); });
    });
    $("#submitbets").click(function(){
        
        $("input[@name='bet']").attr("readonly","readonly");
        var results = checkBetPrice();
        
        if(results.State == "Successful")
        {
            //ajax the bets here;
            ajaxing = true;
			bet("betform");
        }
        else
        {
            //show the errors here( has been done in the checkBetPrice.)
        }
        $("input[@name='bet']").removeAttr("readonly");
    });
});

var ajaxing = false;

var borderColor = {NoValue:"#ccc",Fail:"#f44",CurrentRepeated:"#f00",HistoryRepeated:"#f00",Checked:"#7f7"};
var bgColor = {NoValue:"#fff",Fail:"#fff",CurrentRepeated:"#fff",HistoryRepeated:"#fff",Checked:"#fff"};
function showBetPriceResult(feat,index)
{
    $("input[@name='bet']").eq(index).css("border-color",borderColor[feat]).css("background-color",bgColor[feat]);
}

function betsResult()
{
    this.State = "Successful";
    this.BetResult = new Array();
}

function betResult(price,feat)
{
    this.Price = price;
    this.Feat = feat;
}

function featType(){}
featType.NoValue = "NoValue";
featType.Fail = "Fail";
featType.CurrentRepeated = "CurrentRepeated";
featType.HistoryRepeated = "HistoryRepeated";
featType.Checked ="Checked";
featType.Successful = "Successful";

function checkBetPrice()
{
    var betsresult = new betsResult();
    var result = true;
    var bets = $("input[@name='bet']");
    for(var i=0;i<bets.length;i++)
    {
        var tmpresult;
        if(bets.eq(i).val() == "") 
        {
            //showBetPriceResult(i);
            tmpresult = new betResult(NaN,featType.NoValue);
        }
        else
        {
            var reg = /^[1-9]\d*$/;
            if(!(reg.test(bets.eq(i).val())))
            {
                //betPriceNaN(i);
                tmpresult = new betResult(NaN,featType.Fail);
                result = result && false;
            }
            else
            {
                tmpresult = new betResult(NaN,featType.Checked);
                for(var k=0;k<i;k++)
                {
                    if(bets.eq(k).val() == "") continue;
                    if(bets.eq(i).val() == bets.eq(k).val())
                    {
                        //betPriceDuplicate(i);
                        tmpresult = new betResult(NaN,featType.CurrentRepeated);
                        result = result && false;
                        break;
                    }
                }
            }
        }
        //alert(tmpresult.Feat);
        betsresult.BetResult.push(tmpresult);
        
    }
    //alert(betsresult.BetResult.length);
    for(var j = 0; j< betsresult.BetResult.length ;j++)
    {
        showBetPriceResult(betsresult.BetResult[j].Feat,j);
    }
    //alert(1);
    betsresult.State = result?"Successful":"ErrorPrice";
    
    if (!result) $("#bettips").html("出价不是整数,或者有重复<br /> <br/>");
    return betsresult;
}

function showPlace(placeid,id,offset)
{
if(ajaxing){alert("别的出价正在提交中");return;}
    //$(".betbuttonarea img,.betbuttonarea input").unbind();
    $.ajax({
        type: "POST",
        url: "/auction/betinfo.ashx",
        data: "productid=" + id,
        success: function(sbetresult){
            eval("var betresult =" + sbetresult);
            showPlacedo(placeid,id,offset,betresult);
        }
    }); 
}

function showPlacedo(placeid,id,offset,betresult)
{
    $("#submitbets").show();
//            <li>
//              <label>1、</label>
//              <input name="bet"  type="text" class="previewcj_con_input" />
//              <label>元</label>
//            </li>
//"<li><label>" + j + "、</label><input name=\"bet\"  type=\"text\" class=\"previewcj_con_input\" /><label>元</label></li>";
    if(betresult.State != "Correct")
    {
        var product = $("#" + placeid);
        resetBetPlace();
        $("#bettips").html("请先<a href=\"/User/Login.aspx\">登录</a>");
        $("#submitbets").hide();
        var position = getPosition(product);
        position.X = position.X + offset.X;
        position.Y = position.Y + offset.Y;
        newPlace(position);
    }
    else
    {
        var product = $("#" + placeid);
        $("#betlist").empty();
        var i = 0;
        
        for(var j=betresult.Count;j<5;j++)
        {
            i++;
            $("#betlist").append("<li><label>" + i + "、</label><input name=\"bet\"  type=\"text\" autocomplete=\"off\" class=\"previewcj_con_input\" /><label>元</label></li>");
        }
        if(betresult.Count == 5) $("#submitbets").hide();
        $("input[@name='bet']").each(function(i){
            $(this).blur(function(){ checkBetPrice(); });
        });
        resetBetPlace();
        $("#bettips").html("你已经出价<span>" + betresult.Count + "</span>次,剩余<span>" + (5 - betresult.Count) + "</span>次。<br/><a href=\"/help/buyer/index.html#v3\" target=\"_blank\">查看出价帮助</a>");
        var position = getPosition(product);
        position.X = position.X + offset.X;
        position.Y = position.Y + offset.Y;
        newPlace(position);
        $("input[@name='bet']").eq(0).select();
	    $("input[@name='productid']").val(id);
	}
}

function Position(x,y)
{
    this.X =x;
    this.Y=y;
}

function getPosition(obj)
{
    var productoffset = obj.offset();
    var x = productoffset.left;
    var y = productoffset.top + obj.height() - $("#betplace").height();
    return new Position(x,y);
}

function resetBetPlace()
{
    $("#betplace").hide();
    $("#bettip").html("");
    $("input[@name='bet']").each(function(i){
        
    });
}

function newPlace(position)
{
    $("#betplace").css("left",position.X).css("top",position.Y);
    $("input[@name='bet']").each(function(i){
        $(this).val("");
		showBetPriceResult(featType.NoValue,i);
        
    });
    $("#betplace").show().fadeTo(1,1);
}

function betinfo(productid)
{

}

function bet(formname)
{
    var dbets = "";
    var dproductid = $("input[@name='productid']").val();
    var ct = 0;
    $("input[@name='bet']").each(
                                    function(i) 
                                    {
                                        if(!isNaN(parseInt($(this).val())))
                                        { 
                                            if(ct != 0) 
                                                { dbets = dbets + " ," + $(this).val(); } 
                                            else 
                                                { dbets = dbets + $(this).val(); }
                                        ct++;
                                        //alert(ct);
                                        }
                                    } 
                              );
    if(dbets == "") {$("#bettips").html("还未有出价<br /><br />");ajaxing = false;return;}
    $.ajax({
       type: "POST",
       url: "/auction/bet.ashx",
       data: "Bet=" + dbets + "&productid=" + dproductid,
       success: function(sbetresult){
       eval("var betresult =" + sbetresult);
       //alert(sbetresult);
        routeresult(betresult);
       }
    }); 
    ajaxing = false;
}

function showError(err)
{
	
}

function routeresult(betresult)
{
    switch(betresult.State)
    {
        case "ProductOver":
            $("#bettips").html("产品已售完 或 下架<br /><br />");
            $("#submitbets").hide();
            $("#betplace").fadeTo(1500, 0,function(){ $("#betplace").hide(); });
            break;
            
        case "ErrorProduct":
            $("#bettips").html("错误的产品<br /><br />");
            $("#submitbets").hide();
            $("#betplace").fadeTo(1500, 0,function(){ $("#betplace").hide(); });
            break;
            
        case "NeedLogin":
            $("#bettips").html("未登录<br /><br />");
            location.href = "/User/Login.aspx";
            break;
            
        case "ErrorOwner":
            $("#bettips").html("自己不能给自己的物品投注<br /><br />");
            $("#submitbets").hide();
            $("#betplace").fadeTo(1500, 0,function(){ $("#betplace").hide(); });
            break;
            
        case "InvalidProduct":
            break;
            
        case "HistoryRepeated":
            $("#bettips").html("出价中有以前出过的价<br /><br />");
            for(var i = 0;i < betresult.BetResult.length;i++)
            {
                for(var k = 0;k< $("input[@name='bet']").length;k++)
                {
                    if($("input[@name='bet']").eq(k).val() == parseInt(betresult.BetResult[i].Price))
                    {
                        showBetPriceResult(betresult.BetResult[i].Feat,k);
                    }
                }
            }
            break;
            
        case "GameOver":
            break;
            
        case "ErrorPrice":
            $("#bettips").html("err");
            dealErrorPrice(betresult);
            break;
            
        case "ErrorCurrentAmount":
            $("#bettips").html("当前出价数量错误<br /><br />");
            $("#submitbets").hide();
            break;
            
        case "ErrorTotalAmount":
            $("#bettips").html("历史累计出价数量错误<br /><br />");
            break;
            
        case "NotEnoughMoney":
            $("#bettips").html("账户余额不足,请<a href=\"/Payment/Default.aspx\">充值</a><br /><br />");
            break;
            
        case "Successful":
            //消失
            dealSuccessful(betresult);
            //出现
            break;
    }
}

function dealSuccessful(betresult)
{
     $("#bettips").html("已成功提交出价<br /><br />");
     $("#betplace").fadeTo(1500, 0,function(){ $("#betplace").hide(); });
     
}

function dealErrorPrice(betresult)
{
    $("#betresultspace").html("");
    var html = "<form id='ErrorPriceForm'><table><input type=\"hidden\" value=\"1\" name=\"tradeid\" /><input type=\"hidden\" value=\"1\" name=\"productid\" />";
    for(var k=0;k<betresult.BetResult.length;k++)
    {
        if(betresult.BetResult[k].Feat == "Checked")
        {
            html = html + "<tr><td>" + betresult.BetResult[k].Price + " <input type=\"hidden\" name=\"bet\" value=\"" + betresult.BetResult[k].Price + "\"/></td><td>" + "正确出价" + "</td></tr>";
        }
        else if(betresult.BetResult[k].Feat == "HistoryRepeated")
        {
            html = html + "<tr><td>" + betresult.BetResult[k].Price + "</td><td>" + "以前发过" + "</td></tr>";
        }
        else if(betresult.BetResult[k].Feat == "Fail")
        {
            html = html + "<tr><td>" + betresult.BetResult[k].Price + "</td><td>" + "出价错误" + "</td></tr>";
        }
        else if(betresult.BetResult[k].Feat == "CurrentRepeated")
        {
            html = html + "<tr><td>" + betresult.BetResult[k].Price + "</td><td>" + "当前重复" + "</td></tr>";
        }
    }
    html = html + "<tr><td></td><td><button type=\"button\" class=\"FormSubmitButton\" id=\"submitErrorPrice\">确认提交</button></td></tr>";
    html = html + "</table></form>";
    $("#betresultspace").html(html);
    $("#submitErrorPrice").click(function(){bet("ErrorPriceForm");});
}

