﻿function picksReady()
{
    $('#jqmalert').jqm();
       
    $('.ws_btn').click(function(ev) {
        var $el = $(ev.target);
        if ($el.is('.updt_cls')) {
          onUpdateClick(ev.target.id);
          return false;
        }
        if ($el.is('.prd_cls')) {
          onPredictClick(ev.target.id);
          return false;
        }        
    });
    
    $(".txt").keydown(function(ev) {
        if (ev.keyCode == 13) {
            var arr = null;
            arr = this.id.split("_");
            var type = $("#" + this.id).attr('class').split(' ').slice(-1); 
            predict(parseInt(type,10),parseInt(arr[1],10));
            return false;
        }
    });    
}


function onUpdateClick(id)
{
    var arr = null;
    //split it, 0 holds the super type, 1 holds the challenge id
    arr = id.split("_");
    var cid = arr[1];
    
    //replace the button and the prediction cells
    $("#tdbtn_" + cid).load("/Challenges/partial/GetWorksheetButtonHtml.aspx?CID=" + cid + "&UP=1&t=" + getTimeStr());
    //$("#p_" + cid).load("/Challenges/partial/GetWorksheetHunchHtml.aspx?CID=" + cid);
    $("#tdhunch_" + cid).load("/Challenges/partial/GetWorksheetHunchHtml.aspx?CID=" + cid + "&UP=1&t=" + getTimeStr());
    $("#tdbtn_" + cid).css("background-color","#4b86a4");
}


//event handler
function onPredictClick(id)
{
    var arr = null;
    try 
    {
        //load the ajax loader gif
        $("#" + id).html("<img src=\"/images/ajax-loader_predict.gif\" alt=\"processing\" />");
        
        //split it, 0 holds the super type, 1 holds the challenge id
        arr = id.split("_");
        var type = parseInt(arr[0],10);
        var cid = parseInt(arr[1],10);
        return predict(type,cid);
    }
    catch(ex)
    {
        return false;
    }
    return false;
}

//actual prediction
function predict(type,cid)
{
    try 
    {
        //validation
        if(!validatePrediction(type,cid)) {
            $("#tdbtn_" + cid).load("/Challenges/partial/GetWorksheetButtonHtml.aspx?CID=" + cid + "&t=" + getTimeStr());
            return false;
        }
        
        //validation ended successfuly, now execute request, get the home score and away score
        var stream = "";
        var jsonApi = "";
        switch(type)
        {
            case 6:
                stream = getStreamForHeadToHead(cid);
                jsonApi = "/JsonApi/JsonPredictHeadToHead.ashx";
                break;
                
            case 8:
                stream = getStreamForYesNo(cid);
                jsonApi = "/JsonApi/JsonPredictYesNo.ashx";
                break;
                
            default:
                break;
        }
        
        //execute the request
        $.post(jsonApi, { snjp: stream },
            function(data) {
                switch(data.ret)
                {
                    case 0:
                        onSuccessfulPrediction(cid);
                        break;
                                                
                    case 3:
                        prompt("ERR_NEED_LOGIN");
                        $("#tdbtn_" + cid).load("/Challenges/partial/GetWorksheetButtonHtml.aspx?CID=" + cid + "&t=" + getTimeStr());
                        break;
                        
                    case 1:
                    case 2:
                    default:
                        prompt("ERR_GENERAL_PREDICTION");
                        $("#tdbtn_" + cid).load("/Challenges/partial/GetWorksheetButtonHtml.aspx?CID=" + cid + "&t=" + getTimeStr());
                        break;                                        
                
                }
                
            },"json"
        );
    }
    catch(ex)
    {
        return false;
    }
    return true;
}


//returns a JSON streamed object for head to head prediction
function getStreamForHeadToHead(cid)
{
    var home = ebid('h_' + cid).value;
    var away = ebid('a_' + cid).value;
    return serializeHeadToHead(cid,home,away);
}

//returns a JSON streamed object for yes/no prediction
function getStreamForYesNo(cid)
{
    var val = 0;
    try
    {
        var radY = ebid('y_' + cid);
        if(radY.checked) {
            val = 1;
        }
        else {
            val = 0;
        }
    }
    catch(ex)
    {
        return "";
    }
    return serializeYesNo(cid,val);
}

//called when there is a successful prediction
function onSuccessfulPrediction(cid)
{
    //fade out
    $("#tdbtn_" + cid, "#tdhunch" + cid).fadeOut(500);
    
    //replace the button and the prediction cells
    $("#tdbtn_" + cid).load("/Challenges/partial/GetWorksheetButtonHtml.aspx?CID=" + cid + "&t=" + getTimeStr());
    $("#tdhunch_" + cid).load("/Challenges/partial/GetWorksheetHunchHtml.aspx?CID=" + cid + "&t=" + getTimeStr());
    
    
    //fade in
    $("#tdbtn_" + cid, "#p_" + cid).fadeIn(500);
    $("#tdbtn_" + cid).css("background-color","#9fc355");
}


//validates the prediction, returns true or false and actively prompts the user on the error
function validatePrediction(type,id)
{
    var home = -1;
    var away = -1;

    //non head to head - currently yes/no no need for validation
    if(type != 6) {
        return true;
    }
    
    home = ebid('h_' + id);
    away = ebid('a_' + id);
    
    return validatePredictionFields(home.value,away.value);
}


