/*===========================================
 GRIMWAR.COM
 MAIN JS HELPER FUNCTIONS
 Copyright Justin Johnson, 2010
===========================================*/

//--------------------------------------
// FUNCTIONS
//--------------------------------------
function DisplayToggle(gid)
{
    id = "#card_"+gid;
    $(id).html('<img src=\"/cardimages/'+gid+'.jpg\" />');
    $(id).toggle("slow");
}

function Card(id, name)
{
    this.name = name;
    this.id = id;
    this.quantity = 1;
}

function SortByCardName(a,b)
{
    var x = a.name.toLowerCase();
    var y = b.name.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function AddCard(id, name)
{
    cardFound = false;
    for(var i = 0; i < cardArray.length; i++)
    {
        if(cardArray[i].id == id)
        {
            cardFound = true;
            cardArray[i].quantity++;
        }
    }
    if(!cardFound)
        cardArray.push(new Card(id,name));
    cardArray.sort(SortByCardName);
    RenderCardList();
}

function RemoveCard(id)
{
    for(var i = 0; i < cardArray.length; i++)
    {
        if(cardArray[i].id == id)
        {
            if(cardArray[i].quantity > 1)
                cardArray[i].quantity--;
            else
                cardArray.splice(i,1);
        }
    }
    RenderCardList();
}

function RenderCardList()
{
    $("#cardpool_main").html("");
    if(cardArray.length > 0)
    {
        var cardList = "";
        for(var i = 0; i < cardArray.length; i++)
        {
            
            cardList += "<li><a class='cardpool_card' id='remove_"+cardArray[i].id+"'>"+cardArray[i].name+" ("+cardArray[i].quantity+")</a></li>";
        }
        $("#cardpool_main").html("</ul>"+cardList+"</ul>");
        $("#cardpool").show("slow");
    }
    else
    {
        $("#cardpool").hide("slow");
    }
}

function CardArrayToString()
{
    var string = "";
    for(var i = 0; i < cardArray.length; i++)
    {
        if(i > 0)
            string += "&";
        string += "id_"+cardArray[i].id+"="+cardArray[i].quantity;
    }
    return string;
}

function ClearCardList()
{
    cardArray = [];
    RenderCardList();
}

function ParseAjaxResponse(response, statusMsg)
{
    if(statusMsg == "success")
    {
        var errorCount = 0;
        var errorMsg = "";
        var outputMsg = "";
        var cardCount = 0;
        for(var i = 0; i < response.length; i++)
        {
            if(response[i][0] == 1)
            {
                errorCount++;
                errorMsg += response[i][1]+"\n";
            }
        }
        if(errorCount > 0)
            outputMsg += " Errors:\n"+errorMsg;
        else
            outputMsg = true;
    }
    else
    {
        outputMsg = "Failed to make updates...";
    }
    return outputMsg;
}

//--------------------------------------
// RENDER
//--------------------------------------
$(document).ready(function()
{
    cardArray = [];
    
    // display card preview and cardpool add (hidden for non-js users)
    $("a.display_toggle").show("fast");
    $("a.add_card").show("fast");
    
    // card preview buttons
    $("a.display_toggle").click(function()
    {
        DisplayToggle(this.id.replace("show_",""));
    });
    
    // add to cardpool buttons
    $("a.add_card").click(function()
    {
        AddCard(this.id.replace("add_",""),this.title);
    });
    
    // clear cardpool button
    $("input#cardpool_clear").click(function()
    {
        ClearCardList();
    })
    
    // 'add to' button
    $("input#cardpool_submit").click(function()
    {
        var data = CardArrayToString();
        data += "&d="+$("select[name=add_to]").val();
        $.getJSON("/ajax/ajax.cardadd.php",data, function(response, statusMsg)
        {
            var retStr = ParseAjaxResponse(response,statusMsg);;
            alert(((retStr == true) ? "Cards added successfully." : retStr));
        });
    })
    
    // bind click event to cardpool cards
    $("#cardpool_main a.cardpool_card").live("click",function()
    {
        RemoveCard(this.id.replace("remove_",""));
    });
    
    // bind unload listener
    window.onbeforeunload = function()
    {
        if(cardArray.length > 0)
        {
            return "Cardpool will be lost if you leave this page! Continue?";
        }
    }
});




