function getSpreadMarkets(){
    $('#addMarket').toggle();
    $('#marketDetails').toggle();
    $('#addCategory').toggle();
    $('#msgErrors').toggle();
    var eventId = $("#eventId").val();
    $.ajax({
        type: 'post',
        url: $("#ajaxProvidergetSpreadMarketsURL").val(),
        dataType: 'html',
        data: 'frmEventId=' + eventId,
        error: function(data){
            alert(data);
        },
        success: function(data) {
            $("#marketDropDown").html(data);
            getCategories();
        }
    });
}

function getCategories() {
    $.ajax({
        type: 'post',
        url: $("#ajaxProvidergetCategoriesURL").val(),
        dataType: 'html',
        error: function(data){
            alert(data);
        },
        success: function(data) {
            $("#categoryDropDown").html(data);
        }
    });
}

function addNewSpreadMarket(eventId){
    var canContinue = true;
    var aError = new Array();
    $('#addMarket').toggle();
    displayMarketFields();
    if(eventId){
        var title = $("#market_title").val();
        var description = $("#description").val();
        var stake_max = $("#market_stake_maximum").val();
        var exposure = $("#exposure").val();
        var stop_loss = $("#stop_loss").val();
        var categoryId = $("#categoryId").val();
        // Validate the fields before creating a new Market Template
        if(title == ''){
            canContinue = false;
            aError[0] = "Please enter a valid Title for this Market Template";
        }
        if(description == ''){
            canContinue = false;
            aError[1] = "Please enter a valid Description for this Market Template";
        }
        /*if(isNaN(stake_max)){
			canContinue = false;
			aError[2] = "Stake Maximum can only be numbers";
		} else if(stake_max == '') {
			canContinue = false;
			aError[2] = "Please enter an amount for Stake Maximum";
		}
		if(isNaN(exposure)){
			canContinue = false;
			aError[3] = "Exposure can only be numbers";
		} else if(exposure == ''){
			canContinue = false;
			aError[3] = "Please enter an amount for Exposure";
		}
		/*if(categoryId == ''){
			canContinue = false;
			aError[4] = "You have to select a Category to link this Market Template to";
		}*/

        if(canContinue){
            $.ajax({
                type: 'post',
                url: $("#ajaxProvideraddNewSpreadMarketURL").val(),
                dataType: 'json',
                data: 'frmEventId=' + eventId + '&title=' + title + '&description=' + description + '&stake_max=' + stake_max + '&exposure=' + exposure + '&categoryId=' + categoryId + '&stop_loss=' + stop_loss,
                error: function(data){
                    alert(data);
                },
                success: function(data) {
                    newtext = $("#market_title").val();
                    if (typeof data == 'number'){
                        $('#marketId').append($("<option></option>").attr("value",data).text(newtext));
                        $("#marketId option[value='"+data+"']").attr('selected', 'selected');
                        $("#market_title").val('');
                        $("#description").val('');
                        $("#market_stake_maximum").val('');
                        $("#exposure").val('');
                        $('#addMarket').hide();
                        //getSpreadMarkets();
                        $("#msgErrors").hide();
                        getSelectedMarketInfo(data)
                    } else {
                        alert(data);
                    }
					
                }
            });
        } else {
            reportErrors(aError);
            $('#addMarket').toggle();
        }
    }
}

function reportErrors(aError){
    var output = '';
    for(counter=0; counter < aError.length; counter++) {
        if(aError[counter]){
            output += aError[counter] + '<br>';
        }
    }
    $("#msgErrors").html(output);
    if($("#msgErrors").is(":hidden")){
        $("#msgErrors").show();
    }

}

function getSelectedMarketInfo(marketId) {
    $.ajax({
        type: 'post',
        url: $("#ajaxProvidergetSelectedMarketInfoURL").val(),
        dataType: 'json',
        data: 'marketId=' + marketId,
        error: function(data){
            alert(data);
        },
        success: function(data) {
            //$("#marketInfo").html(data);
            if (data){
                if(data.heading) {
                    $(".market_title_input").val(data.heading);
                }
                if(data.high) {
                    $("#market_high").val(data.high);
                }
                if(data.low) {
                    $("#market_low").val(data.low);
                }
                if(data.stop_loss) {
                    $("#market_stop_loss").val(data.stop_loss);
                }
                if(data.stake_max) {
                    $("#market_stake_max").val(data.stake_max);
                }
                if(data.exposure) {
                    $("#market_exposure").val(data.exposure);
                }
                if(data.description) {
                    $("#market_description").val(data.description);
                }
            }
        }
    });
}

function displayMarketFields(changed){
    getSelectedMarketInfo($("#marketId").val());
    if(changed){
        $('#marketDetails').show();
        $('#addMarket').hide();
        $('#msgErrors').hide();
    } else {
        $('#marketDetails').hide();
    }
}

function addNewCategory(btnClicked){
    var aError = new Array();
    var canContinue = true;
    $('#addCategory').toggle();
    if(btnClicked){
        if($("#category_title").val() == '') {
            canContinue = false;
            aError[0] = "Please enter a Title for adding a new Category";
        }
        if($("#category_description").val() == ''){
            canContinue = false;
            aError[1] = "Please enter a Description for adding a new Category";
        }
        if(canContinue){
            $.ajax({
                type: 'post',
                url: $("#ajaxProvideraddNewCategoryURL").val(),
                dataType: 'json',
                data: 'title=' + $("#category_title").val() + '&description=' + $("#category_description").val(),
                error: function(data){
                    alert(data);
                },
                success: function(data) {
                    newtext = $("#category_title").val();
                    if (typeof data == 'number'){
                        $('#categoryId').append($("<option></option>").attr("value",data).text(newtext));
                        $("#categoryId option[value='"+data+"']").attr('selected', 'selected');
                        $("#category_title").val('');
                        $("#category_description").val('');
                        //getCategories();
                        
                        $('#msgErrors').hide();
                    } else {
                        alert(data);
                    }
                }
            });
        } else {
            reportErrors(aError);
            $('#addCategory').toggle();
        }
    }
}

function addSpreadMarket(){
    var canContinue = true;
    var aError = new Array();
    var marketTemplateId = $("#marketId").val();
    var high = $("#market_high").val();
    var low = $("#market_low").val();
    var eventId = $("#eventId").val();
    var marketEndDate = $("#marketEndDate").val();
    var marketEndTime = $("#marketEndTime").val();
    var marketStartDate = $("#marketStartDate").val();
    var marketStartTime =$("#marketStartTime").val();
    //validate before adding a new market
    if(marketTemplateId == ''){
        canContinue = false;
        aError[0] = "Please select a Market";
    }
    if(isNaN(high)){
        canContinue = false;
        aError[1] = "Market High has to be numbers only";
    } else if(high == '') {
        canContinue = false;
        aError[1] = "You have to enter a value for Market High";
    }
    if(isNaN(low)){
        canContinue = false;
        aError[2] = "Market Low has to be numbers only";
    } else if(low == '') {
        canContinue = false;
        aError[2] = "You have to enter a value for Market Low";
    }
    if(marketStartDate == ''){
        canContinue = false;
        aError[3] = "Please select a date for Market Start Date";
    }
    if(marketStartTime == ''){
        canContinue = false;
        aError[4] = "Please select a time for Market Start Time";
    }
    if(marketEndDate == ''){
        canContinue = false;
        aError[5] = "Please select a date for Market End Date";
    }
    if(marketEndTime == ''){
        canContinue = false;
        aError[6] = "Please select a time for Market End Time";
    }
    if(canContinue){
        $.ajax({
            type: 'post',
            url: $("#ajaxProvideraddSpreadMarketURL").val(),
            dataType: 'json',
            data: 'marketTemplateId=' + marketTemplateId + '&high=' + high + '&low=' + low + '&eventId=' + eventId + '&marketStartDate=' + marketStartDate + '&marketEndDate=' + marketEndDate + '&marketStartTime=' + marketStartTime + '&marketEndTime=' + marketEndTime,
            error: function(data){
                alert(data);
            },
            success: function(data) {
                alert(data);
                window.location = "/index.php/betting/bettingspreadbet/action/edit/frmEventId/" + eventId + "/";
            }
        });
    } else {
        reportErrors(aError);
    }
}

function decreaseCategoryDisplay(catId){
    $.ajax({
        type: 'post',
        url: $("#ajaxProviderdecreaseCategoryURL").val(),
        dataType: 'json',
        data: 'catId=' + catId,
        error: function(data){
            alert(data);
        },
        success: function(data) {
            window.location.reload();
        }
    });
}

function increaseCategoryDisplay(catId){
    $.ajax({
        type: 'post',
        url: $("#ajaxProviderincreaseCategoryURL").val(),
        dataType: 'json',
        data: 'catId=' + catId,
        error: function(data){
            alert(data);
        },
        success: function(data) {
            window.location.reload();
        }
    });
}

function decreaseMarketDisplay(marketId){
    $.ajax({
        type: 'post',
        url: $("#ajaxProviderdecreaseMarketDisplayURL").val(),
        dataType: 'json',
        data: 'marketId=' + marketId,
        error: function(data){
            alert(data);
        },
        success: function(data) {
            window.location.reload();
        }
    });
}

function increaseMarketDisplay(marketId){
    $.ajax({
        type: 'post',
        url: $("#ajaxProviderincreaseMarketDisplayURL").val(),
        dataType: 'json',
        data: 'marketId=' + marketId,
        error: function(data){
            alert(data);
        },
        success: function(data) {
            window.location.reload();
        }
    });
}

function changeCategoryStatus(catId,curStat){
    $.ajax({
        type: 'post',
        url: $("#ajaxProviderchangeCategoryStatusURL").val(),
        dataType: 'json',
        data: 'catId=' + catId + '&curStat=' + curStat,
        error: function(data){
            alert(data);
        },
        success: function(data) {
            window.location.reload();
        }
    });
}

function changeEventStatus(eventId,curStat){
    $.ajax({
        type: 'post',
        url: $("#ajaxProviderchangeEventStatusURL").val(),
        dataType: 'json',
        data: 'eventId=' + eventId + '&curStat=' + curStat,
        error: function(data){
            alert(data);
        },
        success: function(data) {
            window.location.reload();
        }
    });
}

function changeMarketStatus(marketId,curStat){
    $.ajax({
        type: 'post',
        url: $("#ajaxProviderchangeMarketStatusURL").val(),
        dataType: 'json',
        data: 'marketId=' + marketId + '&curStat=' + curStat,
        error: function(data){
            alert(data);
        },
        success: function(data) {
            window.location.reload();
        }
    });
}



function displaySpreadMarkets(eventId){
    if($("#content_" + eventId).is(":visible")){
        $("#content_" + eventId).toggle();
    } else {
        $.ajax({
            type: 'post',
            url: $("#ajaxProvidergetSpreadMarketsURL").val(),
            dataType: 'html',
            data: 'eventId=' + eventId,
            error: function(data){
                alert(data);
            },
            success: function(data) {
                $("#content_" + eventId).toggle();
                $("#content_" + eventId).html(data);
            }
        });

    }
}

function addSpreadWager() {
    var wagerdata = '';
    var noContinue = 0;
    var temp = Array();
    var reserveAmount = 0;
	
    var userId = $('#usr_id').val();// for normal call centre
	
    var tempUserId = $('#cashBetUserId').val(); //if defined override user id
    if (typeof tempUserId != 'undefined'){
        userId = tempUserId;
        if(tempUserId == '0') {
            alert ('No Cash User Id Set!');
            return false;
        }
    }
    wagerdata = 'userId=' + userId + '&';
	
    $('#stakeSpreadTable input').each(function(idx, item) {
        if (item.id.indexOf('stake') >= 0){
            temp = item.id.split('_');
            if (item.value < 1){
                alert ("Your stake must be higher than 1");
                noContinue = 1;
                return false;
            }
            var json = eval($("#val_" + temp[1]).val());
            //wagerdata += "stake[" + temp[1] + "][value]=" + item.value + "&stake[" + temp[1] + "][high]=" + json.high + "&stake[" + temp[1] + "][low]=" + json.low + "&stake[" + temp[1] + "][action]=" + json.action + "&";
            reserveAmount = json.stopLoss * item.value;
            wagerdata += "stakeType[|Spread][" + temp[1] + "][value]=" + item.value + "&stakeType[|Spread][" + temp[1] + "][high]=" + json.high + "&stakeType[|Spread][" + temp[1] + "][low]=" + json.low + "&stakeType[|Spread][" + temp[1] + "][action]=" + json.action + "&stakeType[|Spread][" + temp[1] + "][stopLoss]=" + json.stopLoss + "&stakeType[|Spread][" + temp[1] + "][reserveAmount]=" + reserveAmount + "&";
        }

    });

    //alert (wagerdata);
    if (wagerdata == ""){
        alert("You need to bet on something.");
        return false;
    }
    if (noContinue){
        return false;
    }
    
    startWaitingBetButton();
    
    $.ajax({
        type: 'post',
        url: $("#ajaxProvideraddSpreadWagerUrl").val(),
        dataType: 'json',
        data: wagerdata,
        
		complete: function() {
    		revertBetButton();    	
    	},        

        error: function(data){
            alert(data);
        },

        success: function(data) {
            var json = eval(data);
            if (json.type == "error"){
                alert(json.message);
                if (json.refreshBetSlip !== undefined)
                {
                    getSpreadBettingSlip(undefined, '1');
                }
                if (json.maxSpreadStake !== undefined)
                {
                    console.log(json.maxSpreadStake);
                    marketdata = 'aMarket[action]=' + json.maxSpreadStake.action + '&aMarket[low]=' + json.maxSpreadStake.low + '&aMarket[high]=' + json.maxSpreadStake.high + '&aMarket[stake]=' + json.maxSpreadStake.stake + '&aMarket[marketId]=' + json.maxSpreadStake.marketId + '&';
                    $.ajax({
                        type: 'post',
                        url: $("#ajaxProvideraddToSlipUrl").val(),
                        dataType: 'json',
                        data: marketdata,
                        
                        error: function(data){
                            alert(data);
                        },
                        
                        success: function(data) {
                            var json = eval(data);
                            if (json.type == "error"){
                                var json = eval(data);
                                $('#ajaxMessage').attr("innerHTML",'<p class="message-'+json.type+'">'+json.message+'</p>');
                                $("#ajaxMessage").show();
                                $("#ajaxMessage").fadeOut(5000);
                                getBettingSlip();
                            } else {
                                //alert(json.message);
                                getBettingSlip();
                            }
                        }
                    });
                }
            } else {
                getSpreadBettingSlip(json.ticketId);
            }

        }
    });

}

function getSpreadBettingSlip(ticketId, retryBet) {
    //var newval = $('#marketTemplateName').val();
    $.ajax({
        type: 'post',
        url: $("#ajaxProvidergetSpreadBettingSlipUrl").val(),
        dataType: 'html',
        data: 'blockId=' + encodeURIComponent($('#spreadblockId').val()) + '&retryBet=' + retryBet + '&frmTicketId=' + ticketId,

        error: function(data){
            alert(data);
        },

        success: function(data) {
            $('#blockBettingSlip').attr("innerHTML",data);
        //alert("c");
        /*if (retryBet !== undefined && retryBet)
            {
                addSpreadWager();
            }*/
        }
    });
}

function cancelSpreadWager(id,proceed){
    if (!proceed){
        proceed = confirm("Are you sure you want to delete this wager?");
    }
    if(proceed){
        $.ajax({
            type: 'post',
            url: $("#ajaxProviderCancelSpreadWagerUrl").val(),
            dataType: 'json',
            data: 'wagerId=' + id,
            complete: function() {
                getBettingSlip();
            },
            error: function(data){
                alert(data);
            },
            success: function(data) {
                var json = eval(data);
                if (json.type == "error"){
                    alert(json.message);
                }
            }
        });
    } else {

}
}

function removeAllSpreadWager(parent_id){
    proceed = confirm("Are you sure you want to delete all wagers?");
    if(proceed){
        $.ajax({
            type: 'post',
            url: $("#ajaxProviderremoveAllSpreadWagerUrl").val(),
            dataType: 'json',
            data: 'parentId=' + parent_id,
            complete: function() {
                getBettingSlip();
            },
            error: function(data){
                alert(data);
            },
            success: function(data) {
                var json = eval(data);
                if (json.type == "error"){
                    alert(json.message);
                }
            }
        });
    } else {

}
}

function confirmSpreadWagerChanges(removeIds,updateIds, retryBet){
    if(updateIds){
        $.ajax({
            type: 'post',
            url: $("#ajaxProviderConfirmSpreadChangeUrl").val(),
            dataType: 'json',
            data: 'wagerId=' + updateIds,
            complete: function() {
                if (!removeIds){
                    getBettingSlip();
                }
            },
            error: function(data){
                alert(data);
            },
            success: function(data) {
                var json = eval(data);
                if (json.type == "error"){
                    alert(json.message);
                }
            }
        });
    }
    if (removeIds){
        cancelSpreadWager(removeIds,true);
    }
    if (retryBet !== undefined && retryBet)
    {
        addWager();
    }
}

function cancelSpreadWagerById(id){
    proceed = confirm("Are you sure you want to delete this wager?");
    if(proceed){
        $.ajax({
            type: 'post',
            url: $("#ajaxProviderCancelSpreadWagerByIdUrl").val(),
            dataType: 'json',
            data: 'frmWagerId=' + id,
            complete: function() {
                window.location = window.location;
            },
            error: function(data){
                alert(data);
            },
            success: function(data) {
                var json = eval(data);
                if (json.type == "error"){
                    alert(json.message);
                }
            }
        });
    } else {

}
}

function addToSlip(actionId){
	if (busyPlacingBet) //defined in betting-gen.js
	{
		return;
	}		

    var temp = actionId.split('_');
    
    if ($("#stake_" + temp[1]).val() < 1){
        alert ("Your stake must be higher than 1");
        noContinue = 1;
        return false;
    }
    
    var json = eval($("#" + actionId).val());
	
    var limits = eval("(" + $("#Limits_"+temp[1]).val() + ")");
    if (typeof json == 'undefined'){
        return false;
    } else {
        if(json.stop_loss * $("#stake_" + temp[1]).val() > limits.maximum_win){
            var newval = limits.maximum_win / json.stop_loss;
            $("#stake_" + temp[1]).val(Math.floor(newval));

            alert("Maximum bet limit exceeded");
        }

        if (parseFloat($("#stake_" + temp[1]).val()) < parseFloat(limits.minimum_bet)){
            alert("You need to bet R" + limits.minimum_bet + " or more");
            return false;
        }
    }
    
    marketdata = 'aMarket[action]=' + json.action + '&aMarket[low]=' + json.low + '&aMarket[high]=' + json.high + '&aMarket[stake]=' + $("#stake_" + temp[1]).val() + '&aMarket[marketId]=' + temp[1] + '&';
    $.ajax({
        type: 'post',
        url: $("#ajaxProvideraddToSlipUrl").val(),
        dataType: 'json',
        data: marketdata,
		
        error: function(data){
            alert(data);
        },
		
        success: function(data) {
            var json = eval(data);
            if (json.type == "error"){
                var json = eval(data);
                $('#ajaxMessage').attr("innerHTML",'<p class="message-'+json.type+'">'+json.message+'</p>');
                $("#ajaxMessage").show();
                $("#ajaxMessage").fadeOut(5000);
                getSpreadBettingSlip();
            } else {
                //alert(json.message);
                getBettingSlip();
            }
        }
    });

} 

