﻿$(function () {
    var interval = 60; // 间隔函数，1秒执行
    var curInterval; // 当前剩余秒数
    var timerObj; // timer变量，控制时间

    var requiredTips = '短信验证 字段是必需的。';
    var emptyPhoneNumberTips = '请填写手机号码。';

    var data = $('[data-type=phonemessagevalidate]');
    var getCodeBtn = $(data.find('input[type=button]')[0]);
    var requestUrl = data.attr('data-val-requesturl');
    var codeElement = data.attr('data-val-codeelement');
    var basisElement = data.attr('data-val-basiselement');
    var tips = $('[data-valmsg-for=' + codeElement + ']');

    var phoneMessageValidateCode = $('#' + codeElement);
    if (phoneMessageValidateCode.length > 0) {
        phoneMessageValidateCode.rules('add', { required: true, messages: { required: requiredTips } });
    }

    getCodeBtn.unbind().click(function () {
        var userName = $("#UserName").val();
        var phoneNumber = $('#' + basisElement).val().trim();
        tipsClassHandler();
        if (phoneNumber === '') {
            tips.html(getTipsHtml(false, emptyPhoneNumberTips));
            return;
        }

        $.ajaxPreventCSRF({
            type: 'post',
            dataType: 'json',
            url: requestUrl,
            data: { 'phoneNumber': phoneNumber, 'userName': userName },
            success: function (result) {
                if (result.IsSuccess) {
                    // 设置按钮显示效果，倒计时
                    getCodeBtn.attr('disabled', 'true');
                    interval = result.SurplusSecond;
                    curInterval = interval;
                    timerObj = window.setInterval(setRemainTime, 1000); // 启动计时器，1秒执行一次
                    tips.html(getTipsHtml(true, result.Tips));
                } else {
                    if (result.SurplusSecond > 0) {
                        getCodeBtn.attr('disabled', 'true');
                        curInterval = result.SurplusSecond;
                        timerObj = window.setInterval(setRemainTime, 1000); // 启动计时器，1秒执行一次
                    }

                    tips.html(getTipsHtml(false, result.Tips));
                }
                window.timerObj = timerObj;
            }
        });
    });

    // timer处理函数
    function setRemainTime() {
        if (curInterval === 0) {
            window.clearInterval(timerObj); // 停止计时器
            getCodeBtn.removeAttr('disabled').val('重发验证码'); // 启用按钮
        } else {
            curInterval--;
            getCodeBtn.val(curInterval + 's');
        }
    }

    function getTipsHtml(isSuccess, tipsText) {
        if (isSuccess) {
            return '<span style="color:green">' + tipsText + '</span>';
        }

        return '<span style="color:red">' + tipsText + '</span>';
    }

    function tipsClassHandler() {
        tips.removeClass('field-validation-valid');
        tips.addClass('field-validation-error');
    }
});