﻿var Overall = {
showMatches: function(link) {
        $("#dialog").html($(link).parent().parent().children(".matchesList").html() + "<a href='#' class='close-button'><span> </span></a>");
        $("#dialog").dialog({
            width: 400,
            modal: true
        });
    }
}

var WedadviesBookmaker = {
    selected: new Array(),
    totalQuote: 1,
    type: 0,
    country: null,
    activeBetsOpen: false,

    showSelected: function() {
        var body = "<tr><th class='wbookmaker_choosen_matches'>Gekozen wedstrijden</th><th class='wbookmaker_choosen_quote'>Notering</th><th>Weddenschap</th></tr>";

        var total = 1;
        for (var i = 0; i < WedadviesBookmaker.selected.length; i++) {
            var item = WedadviesBookmaker.selected[i];
            total = total * (parseInt(item.quote) / 100);
            body = body + "<tr><td>" + item.match + " <a href='#' id='" + item.id + "' class='wbookmaker_delete'>x</a></td><td>" + (item.quote / 100).toFixed(2).replace(".", ",") + "</td><td>" + item.choice + "</td></tr>";
            $(".wbookmaker_selected").html(body);
        }

        WedadviesBookmaker.totalQuote = total * 100;
        $("#total_quote").html(total.toFixed(2).replace(".", ","));
        WedadviesBookmaker.fillTotalPayout();
    },

    init: function() {
        WedadviesBookmaker.showError("");

        $(".wbookmaker_delete").live("click", function() {
            var id = this.id;

            for (var i = 0; i < WedadviesBookmaker.selected.length; i++) {
                var item = WedadviesBookmaker.selected[i];
                if (item.id == id) {
                    WedadviesBookmaker.selected = jQuery.grep(WedadviesBookmaker.selected, function(value) {
                        return value != item;
                    });

                    $("#wbookmaker_bet_container").slideUp(400, function() {
                        WedadviesBookmaker.showSelected();

                        if (WedadviesBookmaker.selected.length > 0) {
                            $("#wbookmaker_bet_container").slideDown(400);
                        }
                    });
                    break;
                }
            }

            return false;
        });

        $("#wbookmaker_matches_container").hide();
        $("#wbookmaker_bet_container").hide();
        $("#active_bets").hide();

        $(".competition_active").click(function() {
            var self = this;
            WedadviesBookmaker.country = self.id;
            WedadviesBookmaker.showError("");
            $("#wbookmaker_matches_container").slideUp(400, function() {
                $(".wbookmaker_matches").css("display", "none");
                $("." + self.id + "_matches_" + WedadviesBookmaker.type).css("display", "block");

                $("#wbookmaker_matches_container").slideDown(400);
            });
            return false;
        });

        $("#active_bets_link").click(function() {
            if (!WedadviesBookmaker.activeBetsOpen) {
                $("#active_bets").slideDown();
                $("#active_bets_link").html("Lopende weddenschappen sluiten");
                WedadviesBookmaker.activeBetsOpen = true;
            }
            else {
                $("#active_bets").slideUp();
                $("#active_bets_link").html("Lopende weddenschappen bekijken");
                WedadviesBookmaker.activeBetsOpen = false;
            }

            return false;
        });

        $(".quote").click(function() {
            var self = this;
            WedadviesBookmaker.showError("");

            if (WedadviesBookmaker.selected.length > 5) {
                WedadviesBookmaker.showError("Er kunnen maximaal 6 wedstrijden toegevoegd worden aan een combinatie.");
                return false;
            }

            var object = WedadviesBookmaker.getMatchObject(self.id)
            if (WedadviesBookmaker.isAlreadyAdded(object)) {
                WedadviesBookmaker.showError("Een wedstrijd kan maar 1 keer toegevoegd worden aan een combinatie.");
                return false;
            }

            $("#wbookmaker_bet_container").slideUp(400, function() {
                WedadviesBookmaker.selected.push(object);
                WedadviesBookmaker.showSelected();
                $("#wbookmaker_bet_container").slideDown(400);
            });

            return false;
        });

        $(".wbookmaker_place_bet").click(function() {
            WedadviesBookmaker.showError("");

            if (WedadviesBookmaker.selected == 0) {
                WedadviesBookmaker.showError("Er zijn geen wedstrijden geselecteerd.");
                return false;
            }
            if (WedadviesBookmaker.selected.length > 5) {
                WedadviesBookmaker.showError("Er kunnen maximaal 6 wedstrijden toegevoegd worden aan een combinatie.");
                return false;
            }

            var saldo = parseInt($("#total_credits_span").html());
            var bet = parseInt($("#total_bet").val());
            if (isNaN(bet)) {
                WedadviesBookmaker.showError("Inzet moet een geldig heel getal zijn.");
                return;
            }

            if (bet > (saldo / 100)) {
                WedadviesBookmaker.showError("Uw saldo is te laag voor deze weddenschap.");
                return;
            }

            $(".wbookmaker_place_bet").css("display", "none");

            var json = JSON.stringify(WedadviesBookmaker.selected, WedadviesBookmaker.replacer);

            var parameters = "{'bet':'" + bet + "', 'matches':'" + json + "'}"

            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "/WedadviesService.asmx/PlaceWBBet",
                data: parameters,
                dataType: "json",
                success: function(result) {
                    location.href = "/wedadvies-bookmaker/wedden.aspx?f=1";
                },
                error: function(error) {
                    var obj = eval("(" + error.responseText + ")");
                    WedadviesBookmaker.showError(obj.Message);
                    $(".wbookmaker_place_bet").css("display", "block");
                }
            });
            return false;
        });

        $("#total_bet").keyup(function() {
            WedadviesBookmaker.fillTotalPayout();
        });

        $(".type_select_link").click(function() {
            WedadviesBookmaker.type = this.id;
            WedadviesBookmaker.showError("");
            $("#wbookmaker_matches_container").slideUp(400, function() {
                $(".wbookmaker_matches").css("display", "none");
                $("." + WedadviesBookmaker.country + "_matches_" + WedadviesBookmaker.type).css("display", "block");

                $("#wbookmaker_matches_container").slideDown(400);
            });
            return false;
        });
    },

    fillTotalPayout: function() {
        WedadviesBookmaker.showError("");

        var bet = parseInt($("#total_bet").val()); ;
        if (isNaN(bet)) {
            WedadviesBookmaker.showError("Inzet moet een geldig heel getal zijn.");
            return;
        }

        $("#possible_payout").html(((WedadviesBookmaker.totalQuote * bet) / 100).toFixed(2).replace(".", ","));
    },

    showError: function(error) {
        $("#wbookmaker_error").html(error);
    },

    replacer: function(key, value) {
        if (typeof value === 'number' && !isFinite(value)) {
            return String(value);
        }
        return value;
    },

    getMatchObject: function(value) {
        array = value.split("|");

        var object = new Object();
        object.match = array[0];
        object.quote = array[1];
        object.choice = array[2];
        object.id = array[3];
        object.winning = array[4];

        return object;
    },

    isAlreadyAdded: function(object) {
        for (var i = 0; i < WedadviesBookmaker.selected.length; i++) {
            var item = WedadviesBookmaker.selected[i];
            if (item.id == object.id)
                return true;
        }

        return false;
    }
}

var MatchOfTheWeek = {
    matchID: null,

    init: function() {
        $(".place_bet_link").click(function() {
            var id = this.id;
            var array = id.split("|");

            MatchOfTheWeek.startBet(array[0], array[1], array[2]);
            return false;
        });

        $(".btn_place_bet").live("click", function() {
            if (MatchOfTheWeek.matchID == null) {
                alert("Please try again.");
                return false;
            }

            $(".btn_place_bet").css("display", "none");

            var parameters = "{'id':'" + MatchOfTheWeek.matchID + "'}"

            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "/WedadviesService.asmx/PlaceMOTWBet",
                data: parameters,
                dataType: "json",
                success: function(result) {
                    $(".place_bet_saldo").html((result.d / 100).toFixed(2).replace(".", ","));
                    $(".place_bet_thanks").css("display", "block");
                    $(".place_bet_container").css("display", "none");
                },
                error: function(error) {
                    var obj = eval("(" + error.responseText + ")");
                    $(".place_bet_errorcontainer").html(obj.Message);
                    $(".place_bet_error").css("display", "block");
                    $(".place_bet_container").css("display", "none");
                }
            });
            return false;
        });
    },

    startBet: function(id, result, quote) {
        MatchOfTheWeek.matchID = id;
        var total = (quote * 10) / 100;

        $(".place_bet_score").html(result);
        $(".place_bet_quote").html((quote / 100).toFixed(2).replace(".", ","));
        $(".place_bet_total").html(total.toFixed(2).replace(".", ","));

        $(".place_bet_error").css("display", "none");
        $(".place_bet_thanks").css("display", "none");
        $(".place_bet_container").css("display", "block");
        $(".btn_place_bet").css("display", "block");
        
        $("#dialog").html($("#place_bet_dialog").html());
        $("#dialog").dialog({
            width: 400,
            modal: true
        });
    }
}

$().ready(function() {
    var siteHeaders = new Array("header1.jpg", "shoes.jpg", "stadium2.jpg", "grass.jpg", "stadium.jpg", "stadium3.jpg");

    $(".show-matches").live("click", function() {
        Overall.showMatches(this);
        return false;
    });
    $(".close-button").live("click", function() {
        $("#dialog").dialog("close");
        return false;
    });

    $(".matches-table tr").live("mouseenter", function() {
        $(this).addClass("over");
        return false;
    });

    $(".matches-table tr").live("mouseleave", function() {
        $(this).removeClass("over");
        return false;
    });

    $(".matches-table tr").live("click", function() {
        document.location.href = $(this).find(".url").get(0).href;
        return false;
    });

    var random = Math.random();
    random = Math.ceil(6 * random) - 1;
    $("#header").css("background", "url('/images/siteheaders/" + siteHeaders[random] + "')");

    var validator = $("#aspnetForm").validate({ onsubmit: true });
    $("#aspnetForm").submit(function() {
        if (!$("#aspnetForm").valid())
            return false;

        return true;
    });

    MatchOfTheWeek.init();
    WedadviesBookmaker.init();
});
