﻿ConstData.Index = {};
ConstData.Index.Purchase = {};
ConstData.Index.Purchase.RandomBuildCount = 20;
ConstData.Index.Purchase.SSQ = {};
ConstData.Index.Purchase.SSQ.IssueID = "lblSSQIssue";
ConstData.Index.Purchase.SSQ.BonusID = "SSQBonus";
ConstData.Index.Purchase.SSQ.StateID = "SSQState";
ConstData.Index.Purchase.SSQ.LeftDaysID = "lblSSQLeftDays";
ConstData.Index.Purchase.SSQ.LeftHoursID = "lblSSQLeftHours";
ConstData.Index.Purchase.SSQ.LeftMinutesID = "lblSSQLeftMinutes";
ConstData.Index.Purchase.SSQ.LeftSecondsID = "lblSSQLeftSeconds";
ConstData.Index.Purchase.SSQ.NumberPrefixID = "txtSSQNumber";
ConstData.Index.Purchase.SSQ.RandomBuildNumberID = "btnSSQRandomBuildNumber";
ConstData.Index.Purchase.SSQ.ClearInputedNumberID = "btnSSQClearInputedNumber";
ConstData.Index.Purchase.SSQ.PurchaseID = "btnSSQPurchase";
ConstData.Index.Purchase.SD = {};
ConstData.Index.Purchase.SD.IssueID = "lblSDIssue";
ConstData.Index.Purchase.SD.BonusID = "SDBonus";
ConstData.Index.Purchase.SD.StateID = "SDState";
ConstData.Index.Purchase.SD.LeftDaysID = "lblSDLeftDays";
ConstData.Index.Purchase.SD.LeftHoursID = "lblSDLeftHours";
ConstData.Index.Purchase.SD.LeftMinutesID = "lblSDLeftMinutes";
ConstData.Index.Purchase.SD.LeftSecondsID = "lblSDLeftSeconds";
ConstData.Index.Purchase.SD.NumberPrefixID = "txtSDNumber";
ConstData.Index.Purchase.SD.RandomBuildNumberID = "btnSDRandomBuildNumber";
ConstData.Index.Purchase.SD.ClearInputedNumberID = "btnSDClearInputedNumber";
ConstData.Index.Purchase.SD.PurchaseID = "btnSDPurchase";
ConstData.Index.Purchase.PLS = {};
ConstData.Index.Purchase.PLS.IssueID = "lblPLSIssue";
ConstData.Index.Purchase.PLS.BonusID = "PLSBonus";
ConstData.Index.Purchase.PLS.StateID = "PLSState";
ConstData.Index.Purchase.PLS.LeftDaysID = "lblPLSLeftDays";
ConstData.Index.Purchase.PLS.LeftHoursID = "lblPLSLeftHours";
ConstData.Index.Purchase.PLS.LeftMinutesID = "lblPLSLeftMinutes";
ConstData.Index.Purchase.PLS.LeftSecondsID = "lblPLSLeftSeconds";
ConstData.Index.Purchase.PLS.NumberPrefixID = "txtPLSNumber";
ConstData.Index.Purchase.PLS.RandomBuildNumberID = "btnPLSRandomBuildNumber";
ConstData.Index.Purchase.PLS.ClearInputedNumberID = "btnPLSClearInputedNumber";
ConstData.Index.Purchase.PLS.PurchaseID = "btnPLSPurchase";
ConstData.Index.Purchase.DLT = {};
ConstData.Index.Purchase.DLT.IssueID = "lblDLTIssue";
ConstData.Index.Purchase.DLT.BonusID = "DLTBonus";
ConstData.Index.Purchase.DLT.StateID = "DLTState";
ConstData.Index.Purchase.DLT.LeftDaysID = "lblDLTLeftDays";
ConstData.Index.Purchase.DLT.LeftHoursID = "lblDLTLeftHours";
ConstData.Index.Purchase.DLT.LeftMinutesID = "lblDLTLeftMinutes";
ConstData.Index.Purchase.DLT.LeftSecondsID = "lblDLTLeftSeconds";
ConstData.Index.Purchase.DLT.NumberPrefixID = "txtDLTNumber";
ConstData.Index.Purchase.DLT.RandomBuildNumberID = "btnDLTRandomBuildNumber";
ConstData.Index.Purchase.DLT.ClearInputedNumberID = "btnDLTClearInputedNumber";
ConstData.Index.Purchase.DLT.PurchaseID = "btnDLTPurchase";

//更新彩票信息
function UpdateLotteryInfo(paraLotteryType, paraBonusID, paraIssueID
    , paraStateID, paraPurchaseID, paraCountDowner)
{
    $.ajax(
    {
        url: "/Purchase/QueryLotteryInfo.ashx",
        type: "POST",
        dataType: "json",
        data: { LotteryType: paraLotteryType },
        success: function (json)
        {
            if (json.ReturnCode == 0)
            {
                paraCountDowner.Init(json.LeftDays, json.LeftHours, json.LeftMinutes, json.LeftSeconds);
                paraCountDowner.Start();
                $("#" + paraBonusID).text(json.Bonus);
                $("#" + paraIssueID).text(json.Issue);
                $("#" + paraStateID).text(json.IsEnd ? ConstData.Purchase.StateText2 : ConstData.Purchase.StateText1);
                $("#" + paraPurchaseID).removeClass().addClass(json.IsEnd ? "unljtz" : "ljtz");
            }
        }
    });
}

$(document).ready(function ()
{
    $(".flash").delay(5000).animate({ height: "80px" }, "slow", "linear", function ()
    {
        //$(this).css("height", "80px");
        //$(this).children().eq(0).removeClass("zcscj1").addClass("zcscj2");
        $(this).children().eq(0).css("display", "none");
        $(this).children().eq(1).css("display", "block");
    });

    var ssq_special_numbers = new Array();
    ssq_special_numbers.push(ConstData.Index.Purchase.SSQ.NumberPrefixID + "7");
    RegisterEvent(ConstData.Purchase.LotteryType.SSQ, ConstData.Index.Purchase.SSQ.IssueID, ConstData.Index.Purchase.SSQ.NumberPrefixID, ssq_special_numbers,
        ConstData.Index.Purchase.SSQ.RandomBuildNumberID, ConstData.Index.Purchase.SSQ.ClearInputedNumberID, ConstData.Index.Purchase.SSQ.PurchaseID);
    var ssq_countdown = new CountDowner(ConstData.Index.Purchase.SSQ.LeftDaysID, ConstData.Index.Purchase.SSQ.LeftHoursID,
        ConstData.Index.Purchase.SSQ.LeftMinutesID, ConstData.Index.Purchase.SSQ.LeftSecondsID);
    ssq_countdown.stopEvent = function ()
    {
        UpdateLotteryInfo(ConstData.Purchase.LotteryType.SSQ, ConstData.Index.Purchase.SSQ.BonusID, ConstData.Index.Purchase.SSQ.IssueID
            , ConstData.Index.Purchase.SSQ.StateID, ConstData.Index.Purchase.SSQ.PurchaseID, this);
    };
    ssq_countdown.Start();

    RegisterEvent(ConstData.Purchase.LotteryType.SD, ConstData.Index.Purchase.SD.IssueID, ConstData.Index.Purchase.SD.NumberPrefixID, null,
        ConstData.Index.Purchase.SD.RandomBuildNumberID, ConstData.Index.Purchase.SD.ClearInputedNumberID, ConstData.Index.Purchase.SD.PurchaseID);
    var sd_countdown = new CountDowner(ConstData.Index.Purchase.SD.LeftDaysID, ConstData.Index.Purchase.SD.LeftHoursID,
        ConstData.Index.Purchase.SD.LeftMinutesID, ConstData.Index.Purchase.SD.LeftSecondsID);
    sd_countdown.stopEvent = function ()
    {
        UpdateLotteryInfo(ConstData.Purchase.LotteryType.SD, ConstData.Index.Purchase.SD.BonusID, ConstData.Index.Purchase.SD.IssueID
            , ConstData.Index.Purchase.SD.StateID, ConstData.Index.Purchase.SD.PurchaseID, this);
    };
    sd_countdown.Start();

    RegisterEvent(ConstData.Purchase.LotteryType.PLS, ConstData.Index.Purchase.PLS.IssueID, ConstData.Index.Purchase.PLS.NumberPrefixID, null,
        ConstData.Index.Purchase.PLS.RandomBuildNumberID, ConstData.Index.Purchase.PLS.ClearInputedNumberID, ConstData.Index.Purchase.PLS.PurchaseID);
    var pls_countdown = new CountDowner(ConstData.Index.Purchase.PLS.LeftDaysID, ConstData.Index.Purchase.PLS.LeftHoursID,
        ConstData.Index.Purchase.PLS.LeftMinutesID, ConstData.Index.Purchase.PLS.LeftSecondsID);
    sd_countdown.stopEvent = function ()
    {
        UpdateLotteryInfo(ConstData.Purchase.LotteryType.PLS, ConstData.Index.Purchase.PLS.BonusID, ConstData.Index.Purchase.PLS.IssueID
            , ConstData.Index.Purchase.PLS.StateID, ConstData.Index.Purchase.PLS.PurchaseID, this);
    };
    pls_countdown.Start();

    var dlt_special_numbers = new Array();
    dlt_special_numbers.push(ConstData.Index.Purchase.DLT.NumberPrefixID + "6");
    dlt_special_numbers.push(ConstData.Index.Purchase.DLT.NumberPrefixID + "7");
    RegisterEvent(ConstData.Purchase.LotteryType.DLT, ConstData.Index.Purchase.DLT.IssueID, ConstData.Index.Purchase.DLT.NumberPrefixID, dlt_special_numbers,
        ConstData.Index.Purchase.DLT.RandomBuildNumberID, ConstData.Index.Purchase.DLT.ClearInputedNumberID, ConstData.Index.Purchase.DLT.PurchaseID);
    var dlt_countdown = new CountDowner(ConstData.Index.Purchase.DLT.LeftDaysID, ConstData.Index.Purchase.DLT.LeftHoursID,
        ConstData.Index.Purchase.DLT.LeftMinutesID, ConstData.Index.Purchase.DLT.LeftSecondsID);
    sd_countdown.stopEvent = function ()
    {
        UpdateLotteryInfo(ConstData.Purchase.LotteryType.DLT, ConstData.Index.Purchase.DLT.BonusID, ConstData.Index.Purchase.DLT.IssueID
            , ConstData.Index.Purchase.DLT.StateID, ConstData.Index.Purchase.DLT.PurchaseID, this);
    };
    dlt_countdown.Start();
});

var counter = 0;
var timer;

function RegisterEvent(paraLotteryType, paraIssueID, paraNumberIDPrefix, paraSpecialNumberID,
    paraRandomBuildNumberID, paraClearInputedNumberID, paraPurchaseID)
{
    var $number = $("input[id^=" + paraNumberIDPrefix + "]");
    var count1 = -1;
    var count2 = -1;
    var min_number = -1;
    var max_number1 = -1;
    var max_number2 = -1;
    var is_format = true;
    var number_type = "";
    var is_repeat = false;

    switch (paraLotteryType)
    {
        case ConstData.Purchase.LotteryType.DLT:
            number_type = ConstData.Purchase.NumberType.ZXDS;
            count1 = 5;
            count2 = 2;
            min_number = ConstData.Purchase.MinNumber.DLT;
            max_number1 = ConstData.Purchase.MaxNumber.DLT1;
            max_number2 = ConstData.Purchase.MaxNumber.DLT2;
            break;
        case ConstData.Purchase.LotteryType.PLS:
            number_type = ConstData.Purchase.NumberType.ZXDS;
            count1 = 3;
            min_number = ConstData.Purchase.MinNumber.PLS;
            max_number1 = ConstData.Purchase.MaxNumber.PLS;
            is_format = false;
            is_repeat = true;
            break;
        case ConstData.Purchase.LotteryType.PLW:
            number_type = ConstData.Purchase.NumberType.ZXDS;
            count1 = 5;
            min_number = ConstData.Purchase.MinNumber.PLW;
            max_number1 = ConstData.Purchase.MaxNumber.PLW;
            is_format = false;
            is_repeat = true;
            break;
        case ConstData.Purchase.LotteryType.SSQ:
            number_type = ConstData.Purchase.NumberType.ZXDS;
            count1 = 6;
            count2 = 1;
            min_number = ConstData.Purchase.MinNumber.SSQ;
            max_number1 = ConstData.Purchase.MaxNumber.SSQ1;
            max_number2 = ConstData.Purchase.MaxNumber.SSQ2;
            break;
        case ConstData.Purchase.LotteryType.SD:
            number_type = ConstData.Purchase.NumberType.ZXDS;
            count1 = 3;
            min_number = ConstData.Purchase.MinNumber.SD;
            max_number1 = ConstData.Purchase.MaxNumber.SD;
            is_format = false;
            is_repeat = true;
            break;
        case ConstData.Purchase.LotteryType.QLC:
            number_type = ConstData.Purchase.NumberType.ZXDS;
            count1 = 7;
            min_number = ConstData.Purchase.MinNumber.QLC;
            max_number1 = ConstData.Purchase.MaxNumber.QLC;
            is_repeat = true;
            break;
        default:
            break;
    }

    //注册「号码」获得焦点事件
    $number.focus(function ()
    {
        $(this).select();
    });

    //注册「号码」失去焦点事件
    $number.blur(function ()
    {
        var max_number = max_number1;
        if (paraSpecialNumberID != null)
        {
            for (var i = 0; i < paraSpecialNumberID.length; i++)
            {
                if (paraSpecialNumberID[i] == $(this).attr("id"))
                    max_number = max_number2;
            }
        }

        var number = parseInt($.trim($(this).val()), 10);
        if (isNaN(number))
            $(this).val("");
        else if (number < min_number)
            $(this).val("");
        else if (number > max_number)
            $(this).val("");
        else
            $(this).val(is_format ? Purchase.FormatNumber(number) : number);
    });

    //注册「随机生成号码」点击事件
    $("#" + paraRandomBuildNumberID).click(function ()
    {
        var index = 0;

        var number1 = Purchase.RandomBuildNumber(count1, min_number, max_number1, new Array());

        if (number1 == null)
        {
            counter = 0;
            if (timer != null)
                clearInterval(timer);
            Dialog.ShowErrorMessage(ConstData.Message.InvokeClientMethodError);
        }
        else
        {
            if (number1.length > 1)
                number1.sort(SortNumber);

            $("input[id^=" + paraNumberIDPrefix + "]").each(function ()
            {
                if (is_format)
                    $(this).val(Purchase.FormatNumber(number1[index++]));
                else
                    $(this).val(number1[index++]);
            });
        }

        if (count2 > 0)
        {
            var number2 = Purchase.RandomBuildNumber(count2, min_number, max_number2, new Array());
            if (number2 == null)
            {
                counter = 0;
                if (timer != null)
                    clearInterval(timer);
                Dialog.ShowErrorMessage(ConstData.Message.InvokeClientMethodError);
            }
            else
            {
                if (number2.length > 1)
                    number2.sort(SortNumber);

                for (var i = 0; i < number2.length; i++)
                    $("input[id=" + paraSpecialNumberID[i] + "]").val(Purchase.FormatNumber(number2[i]));
            }
        }

        counter++;

        if (counter < ConstData.Index.Purchase.RandomBuildCount)
        {
            var $RandomBuildNumber = $(this);
            timer = setTimeout(function () { $RandomBuildNumber.trigger("click") }, 30);
        }
        else
        {
            counter = 0;
            if (timer != null)
                clearInterval(timer);
        }
    });

    //注册「清除已输入号码」点击事件
    $("#" + paraClearInputedNumberID).click(function ()
    {
        $number.each(function ()
        {
            $(this).val("");
        });
    });

    //注册「立即投注」点击事件
    $("#" + paraPurchaseID).click(function ()
    {
        if (counter != 0)
        {
            Dialog.ShowWarnMessage("系统正在机选号码，请稍候", null);
            return;
        }

        if ($(this).attr("class") != "ljtz")
        {
            Dialog.ShowWarnMessage("第" + $("#" + paraIssueID).text() + "期投注已截止，请待下期开售", null);
            return;
        }

        var numbers1 = new Array
        var numbers2 = new Array

        $number.each(function ()
        {
            if (paraSpecialNumberID == null)
            {
                numbers1.push($(this).val());
            }
            else
            {
                var index = 0;
                for (var i = 0; i < paraSpecialNumberID.length; i++)
                {
                    if (paraSpecialNumberID[i] == $(this).attr("id"))
                    {
                        numbers2.push($(this).val());
                        break;
                    }
                    index++;
                }
                if (index == paraSpecialNumberID.length)
                    numbers1.push($(this).val());
            }
        });

        if (!Purchase.CheckTextNumber(numbers1, is_repeat) || !Purchase.CheckTextNumber(numbers2, is_repeat))
        {
            Dialog.ShowWarnMessage("请输入正确的号码", null);
            return;
        }

        if (numbers1.length > 1)
            numbers1.sort(SortNumber);

        if (numbers2.length > 1)
            numbers2.sort(SortNumber);

        Dialog.ShowProcessMessage("系统正在处理您的订单，请稍候...");

        $.ajax(
        {
            url: "/ValidateIdentityAction.ashx",
            type: "POST",
            success: function (paraReturnCode)
            {
                if (paraReturnCode == "0")
                {
                    var pInfo = new PurchaseInfo();
                    pInfo.issue = $("#" + paraIssueID).text();
                    pInfo.lotteryType = paraLotteryType;
                    pInfo.numbers = new Array();
                    pInfo.numberMoneys = new Array();
                    pInfo.numberQuantities = new Array();
                    pInfo.numberTypes = new Array();
                    var number1 = "";
                    for (var i = 0; i < numbers1.length; i++)
                    {
                        if (number1.length > 0)
                            number1 += ConstData.Sign.Connector;
                        number1 += numbers1[i];
                    }
                    var number2 = "";
                    for (var i = 0; i < numbers2.length; i++)
                    {
                        if (number2.length > 0)
                            number2 += ConstData.Sign.Connector;
                        number2 += numbers2[i];
                    }
                    if (number2.length > 0)
                        pInfo.numbers.push(number1 + ConstData.Sign.Multiple + number2);
                    else
                        pInfo.numbers.push(number1);
                    pInfo.numberTypes.push(number_type);
                    pInfo.numberQuantities.push(1);
                    pInfo.numberMoneys.push(2);
                    pInfo.totalMoney = 2;
                    pInfo.totalQuantity = 1;
                    Purchase.PersonalPurchase(pInfo);
                }
                else
                {
                    Dialog.Login(function () { $("#" + paraPurchaseID).trigger("click"); },
                    function () { Dialog.CloseProcessMessage(); });
                }
            },
            error: Purchase.InvokeError
        });
    });
}
