﻿var s_game = $("#quick_shopping_game");
var s_currency = $("#quick_shopping_currency");
var s_server = $("#quick_shopping_server");
var s_quantity = $("#quick_shopping_quantity");
var s_buy_now = $("#quick_shopping_btn_buy_now");

s_buy_now.removeAttr("disabled");

s_game.find("option:first").attr("selected", "selected");

s_server.attr("disabled", "disabled");
s_server.html("<option>Please select a server</option>");

s_quantity.attr("disabled", "disabled");
s_quantity.html("<option>Please select quantity</option>");

function show_error(msg) {
    alert(msg);
}

function get_currency_char() {
    switch (s_currency.val()) {
        case "USD":
            {
                return "$";
                break;
            }
        case "EUR":
            {
                return "€";
                break;
            }
        case "GBP":
            {
                return "£";
                break;
            }
    }
}

function get_server() {
    if (s_game.val() == 0) {
        s_server.attr("disabled", "disabled");
        s_server.html("<option value='0'>Please select a server</option>");

        s_quantity.attr("disabled", "disabled");
        s_quantity.html("<option value='0'>Please select quantity</option>");
        return;
    }

    s_server.attr("disabled", "disabled");
    s_server.html("<option>waiting...</option>");

    s_quantity.attr("disabled", "disabled");
    s_quantity.html("<option value='0'>Please select quantity</option>");

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/services/quickshoppingservice.asmx/getserver",
        data: "{g:" + s_game.val() + "}",
        dataType: "json",
        success: function(result) {
            if (result.d.error && result.d.error != '') {
                show_error(result.d.error);
                return;
            }

            s_server.html("<option value='0'>Please select a server</option>");

            for (var e in result.d.data) {
                s_server.append('<option value="' + result.d.data[e].id + '">' + result.d.data[e].name + "</option/>")
            }

            s_server.removeAttr("disabled")
        },
        error: function(b, a, c) { show_error("Error Occured!") }
    });
}

function get_product() {
    if (s_server.val() == 0) {
        s_quantity.attr("disabled", "disabled");
        s_quantity.html("<option value='0'>Please select quantity</option>");
        return;
    }

    s_quantity.attr("disabled", "disabled");
    s_quantity.html("<option>waiting...</option>");

    s_quantity.data('product', null);

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/services/quickshoppingservice.asmx/getproduct",
        data: "{s:" + s_server.val() + ",c:'" + s_currency.val() + "'}",
        dataType: "json",
        success: function(result) {
            if (result.d.error && result.d.error != '') {
                show_error(result.d.error);
                return;
            }

            s_quantity.data('product', result.d.data);

            s_quantity.empty();
            for (var e in result.d.data) {
                s_quantity.append('<option value="' + result.d.data[e].id + '">' + get_currency_char() + Math.round(result.d.data[e].price * result.d.rate * 100) / 100 + " - " + parseFloat(result.d.data[e].name) / 1000000 + "M Gold</option/>")
            }

            s_quantity.removeAttr("disabled")
        },
        error: function(b, a, c) { show_error("Error Occured!") }
    });
}

function change_currency() {
    if (s_quantity.attr("disabled")) {
        return;
    }

    s_quantity.attr("disabled", "disabled");

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/services/quickshoppingservice.asmx/getrate",
        data: "{c:'" + s_currency.val() + "'}",
        dataType: "json",
        success: function(result) {
            if (result.d.error && result.d.error != '') {
                show_error(result.d.error);
                return;
            }

            var product_list = s_quantity.data('product');
            for (var e in product_list) {
                $("option", s_quantity).each(function() {
                    if ($(this).val() == product_list[e].id) {
                        $(this).text(get_currency_char() + Math.round(product_list[e].price * result.d * 100) / 100 + " - " + parseFloat(product_list[e].name) / 1000000 + "M Gold");
                    }
                });
            }

            s_quantity.removeAttr("disabled")
        },
        error: function(b, a, c) { show_error("Error Occured!") }
    });
}

function checkout() {
    $("#q_container").hide();

    if (s_game.val() == 0) {
        show_error("Please select a game");
        return;
    }

    if (s_server.val() == "waiting..." || s_quantity.val() == "waiting...") {
        show_error("Please waiting...");
        return;
    }

    if (s_server.val() == 0) {
        show_error("Please select a server");
        return;
    }

    if (s_quantity.val() == 0) {
        show_error("Please select quantity");
        return;
    }

    if (/^\s*$/.test($('#t_character_name').val()) == true) {
        show_error("Please input character name.");
        return;
    }

    if (/^\s*$/.test($('#t_fullname').val()) == true) {
        show_error("Please input fullname.");
        return;
    }

    if (/^\s*$/.test($('#t_email').val()) == true) {
        show_error("Please input email.");
        return;
    }

    if (/^\s*([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+\s*$/.test($('#t_email').val()) == false) {
        show_error("Please input correct email.");
        return;
    }

    var phone = '';
    if (/^\s*$/.test($('#t_phone').val()) == false && /^\s*$/.test($('#t_area').val()) == false) {
        phone = $('#d_country').val() + '-' + $.trim($('#t_phone').val()) + '-' + $.trim($('#t_area').val());
    }

    var pm = '';
    $('input[name=payment]').each(
        function() {
            if (this.checked == true) {
                pm = this.value
            }
        }
    );

    if (!pm) {
        show_error("Please select a payment."); return;
    }

    s_buy_now.attr("disabled", "disabled");

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/services/quickshoppingservice.asmx/checkout",
        data: "{p:" + s_quantity.val() + ",cn:'" + $('#t_character_name').val() + "',fn:'" + $('#t_fullname').val() + "', e:'" + $('#t_email').val() + "',ph:'" + phone + "', pm:'" + pm + "', c:'" + s_currency.val() + "', cm:'" + ($("#t_comments") ? $("#t_comments").val() : '') + "'}",
        dataType: "json",
        success: function(result) {
            if (result.d.error) {
                show_error(result.d.error);
                s_buy_now.removeAttr("disabled");
            }

            if (pm == 'Paypal') {
                window.location = "/payment/paypal/waitingtopaypal.aspx";
            }
            else {
                window.location = "/payment/moneybooker/waitingtomoneybooker.aspx";
            }
        },
        error: function(b, a, c) { show_error("Error Occured!") }
    });
}

s_game.bind("change", get_server);
s_server.bind("change", get_product);
s_currency.bind("change", change_currency);
s_buy_now.bind("click", checkout);