﻿var s_game = $("#power_leveling_game");
var s_server = $("#power_leveling_server");
var s_currency = $("#power_leveling_currency");
var s_gameclass = $("#power_leveling_gameclass");
var s_currentlevel = $("#power_leveling_current_level");
var s_desiredlevel = $("#power_leveling_desired_level");
var d_estimate = $("#power_leveling_estamate");
var t_time = $("#power_leveling_desired_hours");
var t_price = $("#power_leveling_desired_price");
var s_buy_now = $("#power_leveling_btn_buy_now");

s_game.find("option:first").attr("selected", "selected");
disableElement(1 | 2 | 4 | 8);

function disableElement(r) {
    if ((r & 1) == 1) {
        s_server.attr("disabled", "disabled");
        s_server.html("<option>Please select a server</option>");
    }

    if ((r & 2) == 2) {
        s_gameclass.attr("disabled", "disabled");
        s_gameclass.html("<option>Please select game class</option>");
    }

    if ((r & 4) == 4) {
        s_currentlevel.attr("disabled", "disabled");
        s_currentlevel.html("<option>Please select current level</option>");
    }

    if ((r & 8) == 8) {
        s_desiredlevel.attr("disabled", "disabled");
        s_desiredlevel.html("<option>Please select desired level</option>");
    }

    if ((r & 16) == 16) {
        d_estimate.hide();
    }
}

function change_currency() {
    if (s_desiredlevel.attr("disabled") || s_desiredlevel.val() == "0") {
        return;
    }

    disableElement(16);

    $.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 != '') {
                d_estimate.show();
                show_error(result.d.error);
                return;
            }

            t_price.text(get_currency_char() + Math.round(t_price.data("orignal") * result.d * 100) / 100);

            d_estimate.show(1000);
        },
        error: function(b, a, c) { show_error("Error Occured!") }
    });
}

function get_currency_char() {
    switch (s_currency.val()) {
        case "USD":
            {
                return "$";
                break;
            }
        case "EUR":
            {
                return "€";
                break;
            }
        case "GBP":
            {
                return "£";
                break;
            }
    }
}

function waiting(el) {
    el.attr("disabled", "disabled");
    el.html("<option>waiting...</option>");
}

function show_error(msg) {
    s_buy_now.removeAttr("disabled");
    alert(msg);
}

function get_class() {

    disableElement(2 | 4 | 8 | 16);

    if (s_server.val() == '0') {
        return;
    }

    waiting(s_gameclass);

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/services/powerlevelingservice.asmx/getgameclass",
        data: "{g:" + s_game.val() + "}",
        dataType: "json",
        success: function(result) {
            if (result.d.error && result.d.error != '') {
                show_error(result.d.error);
                return;
            }

            s_gameclass.html("<option value='0'>Please select game class</option>");

            for (var e in result.d.data) {
                s_gameclass.append('<option value="' + result.d.data[e].id + '">' + result.d.data[e].name + "</option/>")
            }

            s_gameclass.removeAttr("disabled")
        },
        error: function(b, a, c) { show_error("Error Occured!") }
    });

}

function get_level() {
    disableElement(4 | 8 | 16);

    if (s_gameclass.val() == '0') {
        return;
    }

    waiting(s_currentlevel);

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/services/powerlevelingservice.asmx/getlevel",
        data: "{g:" + s_game.val() + "}",
        dataType: "json",
        success: function(result) {
            if (result.d.error && result.d.error != '') {
                show_error(result.d.error);
                return;
            }

            s_currentlevel.html("<option value='0'>Please select current level</option>");

            s_currentlevel.data("top", parseInt(result.d.data[0]));
            for (var i = 1; i < s_currentlevel.data("top"); i++) {
                s_currentlevel.append('<option value="' + i + '">' + i + "</option/>")
            }

            s_currentlevel.removeAttr("disabled");
        },
        error: function(b, a, c) { show_error("Error Occured!") }
    });
}

function get_desired() {
    disableElement(16);

    if (s_currentlevel.val() == '0') {
        disableElement(8 | 16);
        return;
    }

    s_desiredlevel.html("<option value='0'>Please select current level</option>");

    for (var i = s_currentlevel.data("top"); i > s_currentlevel.val(); i--) {
        s_desiredlevel.append('<option value="' + i + '">' + i + "</option/>");
    }

    s_desiredlevel.removeAttr("disabled");
}

function get_estimate() {
    disableElement(16);

    if (s_desiredlevel.val() == '0') {
        return;
    }

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/services/powerlevelingservice.asmx/getestimate",
        data: "{g:" + s_game.val() + ", f:" + s_currentlevel.val() + ", t: " + s_desiredlevel.val() + ", gc: " + s_gameclass.val() + ", c: '" + s_currency.val() + "'}",
        dataType: "json",
        success: function(result) {
            if (result.d.error && result.d.error != '') {
                show_error(result.d.error);
                return;
            }

            t_price.data("orignal", result.d.original);
            t_price.text(result.d.price);
            t_time.text(result.d.time);

            d_estimate.show(1000);
        },
        error: function(b, a, c) { show_error("Error Occured!"); }
    });
}

function buy_now() {
    if (s_game.val() == 0) {
        show_error("Please select a game");
        return;
    }

    if (s_server.val() == "waiting...") {
        show_error("Please waiting...");
        return;
    }

    if (s_server.val() == 0) {
        show_error("Please select a server");
        return;
    }

    if (s_gameclass.val() == 0) {
        show_error("Please select game class");
        return;
    }

    if (s_currentlevel.val() == 0) {
        show_error("Please select current level");
        return;
    }

    if (s_desiredlevel.val() == 0) {
        show_error("Please select desiredlevel");
        return;
    }

    s_buy_now.attr("disabled", "disabled");
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/services/powerlevelingservice.asmx/buynow",
        data: "{g:" + s_game.val() + ", f:" + s_currentlevel.val() + ", t: " + s_desiredlevel.val() + ", gc: " + s_gameclass.val() + ", c: '" + s_currency.val() + "', s:" + s_server.val() + "}",
        dataType: "json",
        success: function(result) {
            if (result.d.error && result.d.error != '') {
                show_error(result.d.error);
                return;
            }

            window.location = "/power-leveling/checkout/";

            s_buy_now.removeAttr("disabled");
        },
        error: function(b, a, c) { show_error("Error Occured!"); }
    });
}

function get_server() {
    disableElement(1 | 2 | 4 | 8);

    if (s_game.val() == '0') {
        return;
    }

    waiting(s_server);

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/services/powerlevelingservice.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!") }
    });
}

s_game.bind("change", get_server);
s_server.bind("change", get_class);
s_gameclass.bind("change", get_level);
s_currentlevel.bind("change", get_desired);
s_desiredlevel.bind("change", get_estimate);
s_currency.bind("change", change_currency);
s_buy_now.bind("click", buy_now);