$('[data-href]').on('click', function (event) {
    event.preventDefault();
    if ($(this).hasClass('ajax-get') || $(this).hasClass('ajax-post')) {
        return;
    }
    window.open($(this).data('href'));
    // location.href = $(this).data('href');
});

// ajax GET 请求
$('body').on('click', '.ajax-get', function (event) {
    event.preventDefault();
    if ($(this).hasClass('disabled') || $(this).attr('disabled')) {
        return false;
    }
    ;
    var $this = $(this);
    var $tips = $this.attr('tip') || '确认要执行该操作吗?';
    var $target = $this.data('href') || $this.attr('href') || $this.attr('url') || $this.data('url');

    if ($this.hasClass('confirm')) {
        if (!confirm($tips)) {
            return false;
        }
    }
    $.ajax({
        type: "GET",
        url: $target,
        success: function (data) {
            if (data.code == 1) {
                updateAlert(data.msg, 'success', function () {
                    if ($this.hasClass('no-refresh')) {
                    } else if (data.url == null) {
                        location.reload();
                    } else if (data.url) {
                        location.href = data.url + '?_=' + (new Date()).getTime();
                    } else {
                        location.reload();
                    }
                });
            } else {
                updateAlert(data.msg);
            }
        },
        error: function (error) {
            if (error.responseJSON.message) {
                updateAlert(error.responseJSON.message, 'warning');
            } else {
                updateAlert('发生未知错误', 'warning');
            }
        }
    });
});

// ajax POST 请求
$('body').on('click', '.ajax-post', function (event) {
    if ($(this).hasClass('disabled') || $(this).attr('disabled')) {
        return false;
    }
    ;

    event.preventDefault();
    var $this = $(this);
    var $form = $this.parents('form');
    var $tips = $this.attr('tip') || '确认要执行该操作吗?';
    var $action = $form.attr("action");
    if ($this.hasClass('confirm')) {
        if (!confirm($tips)) {
            return false;
        }
    }
    $this.attr('disabled', 'disabled');
    var query = $form.serialize();

    $.ajax({
        type: "POST",
        url: $action,
        data: query,
        success: function (data) {
            if (data.code == 0) {
                updateAlert(data.msg);
                $this.removeAttr('disabled');
            } else {
                updateAlert(data.msg, 'success', function () {
                    if (data.url) {
                        location.href = data.url;
                    } else if (data.url == null) {
                        location.reload();
                    } else {
                        location.reload();
                    }
                });
            }
        },
        error: function (error) {
            $this.removeAttr('disabled');
            if (error.responseJSON.errors) {
                var err = '';
                $.each(error.responseJSON.errors, function (i, n) {
                    // err += n + "\r\n";
                    updateAlert(n[0], 'warning');
                    return false;
                })
                // updateAlert(err, 'warning');
            } else if (error.responseJSON.message) {
                updateAlert(error.responseJSON.message, 'warning');
            } else {
                updateAlert('发生未知错误', 'warning');
            }
        }
    });
});

$('body').on('click', '.ajax-post-confirm', function (event) {
    if ($(this).hasClass('disabled') || $(this).attr('disabled')) {
        return false;
    }
    ;

    event.preventDefault();
    var $this = $(this);
    var $form = $this.parents('form');
    var $action = $form.attr("action");
    var $tips = $this.attr('tip') || '确认要执行该操作吗?';
    var query = $form.serialize();
    $this.attr('disabled', 'disabled');
    layer.open({
        content: $tips
        , btn: ['确定', '取消']
        , yes: function (index) {
            $.ajax({
                type: "POST",
                url: $action,
                data: query,
                success: function (data) {
                    if (data.code == 0) {
                        updateAlert(data.msg);
                        $this.removeAttr('disabled');
                    } else {
                        updateAlert(data.msg, data.error, function () {
                            if (data.url) {
                                location.href = data.url;
                            } else if (data.url == null) {
                                location.reload();
                            } else {
                                location.reload();
                            }
                        });
                    }
                },
                error: function (error) {
                    $this.removeAttr('disabled');
                    if (error.responseJSON.errors) {
                        var err = '';
                        $.each(error.responseJSON.errors, function (i, n) {
                            // err += n + "\r\n";
                            updateAlert(n[0], 'warning');
                            return false;
                        })
                        // updateAlert(err, 'warning');
                    } else if (error.responseJSON.message) {
                        updateAlert(error.responseJSON.message, 'warning');
                    } else {
                        updateAlert('发生未知错误', 'warning');
                    }
                }
            });
            layer.close(index);
        }
    });
});

window.updateAlert = function (text, type, callback) {
    if (typeof type != 'string') {
        if (type) {
            type = "success";
        } else {
            type = "error";
        }
    }
    swal({
        title: text,
        type: type,
        timer: 1500,
        showConfirmButton: false
    });
    if (typeof callback == "function") {
        setTimeout(function () {
            callback();
        }, 1500)
    }
}
