/**
 * Autor: Lucas Forchino.
 * Do not copy this script. 
 * All rights reserverd
 */
// namespace
GAME={};
GAME.bussy=0;
GAME.nextLevel=1;
GAME.cardsNumber=2;
GAME.cardsSelected=0;
GAME.cards={};
GAME.start= function (){
    $('.block').hide();
    $('.scoresBox').hide();
    $('#better').hide();
    $('.scoresList').hide();
    
    GAME.bussy=1;
    var level=GAME.nextLevel;
    GAME.nextLevel ++;
    $('#hits').html('0');
    $('#fails').html('0');
    if(level==1){
        $('#points').html('0');
    }
    
    $.getJSON('api.php',{'act':'start','level':level},function(json){
        GAME.cardsNumber=json.cardsNumber;
        $('#cardsNumber').html(GAME.cardsNumber);
        $('#level').html(json.level);
        
        for(var i=1 ; i <=GAME.cardsNumber; i++)
        {
            GAME.cards[i]=false;
        }
        $('#boxes').html('');
        var width=116*json.showCut;
        $('#boxes').css('width',width);
        var cut=0;
        for(var i=0 ; i <json.playCards; i++)
        {
            cut++;
            link= $('<a>');
            link.attr('href',"javascript:void(0)");
            link.addClass('imagebox');
            link.addClass('back'+json.back);
            link.attr('data-id',i);
            $('#boxes').append(link);
            if (cut == json.showCut)
            {
                cut=0;
                var clear=$('<div class="clear"></div>');
                $('#boxes').append(clear);
            }
        }
    GAME.cardsSelected=0;    
    GAME.bussy=0;
    });
   
}


$(document).ready(function(){


     GAME.start();   

    $('.imagebox').live('click',function(){
        if (GAME.cardsSelected<GAME.cardsNumber)
            {
                var link=$(this)
                for(var i=1 ; i <=GAME.cardsNumber; i++)
                {
                    if(GAME.cards[i] && link.attr('data-id')==GAME.cards[i].attr('data-id'))
                    {return false;}
                }
                
                GAME.cardsSelected = GAME.cardsSelected +1;
                GAME.cards[GAME.cardsSelected]=link;
                var id =link.attr('data-id');
                $.getJSON('api.php',{'id':id,'act':'select'} ,function(json){
                    var img = json.image;
                    link.flip({
                        direction:'lr',
                        speed:100,
                        onEnd: function(){
                            link.removeAttr('style');
                            link.css('background','url(images/'+img+'.jpg) no-repeat center center');
                            if(GAME.cardsSelected ==GAME.cardsNumber && GAME.bussy==0)
                            {
                                GAME.bussy=1;
                                var params={}
                                params.act='check';
                                params.cards={};
                                for(var i=1 ; i <=GAME.cardsNumber; i++)
                                {
                                    params.cards[i]=GAME.cards[i].attr('data-id');
                                }

                                $.getJSON('api.php', params, function(json){
                                    
                                    $('#points').html(json.score);
                                    
                                    if (json.match==0)
                                    {
                                        $('#fails').html(json.failCount);
                                        window.setTimeout(GAME.backCards,500);
                                    }
                                    else
                                    {
                                        $('#hits').html(json.matchCount);
                                        for(var i=1 ; i <=GAME.cardsNumber; i++)
                                        {
                                            GAME.cards[i].html('<img class="ok" src="resources/ok.png" />');
                                        }
                                        $('.ok').blink(300);
                                        
                                        if(json.finish==1){
                                            window.setTimeout(GAME.showCards,1500);
                                        }    
                                        else if(json.finish==0){
                                            window.setTimeout(GAME.deleteCards,1500);
                                        }    
                                        else{
                                            return false; //errror
                                        }
                                        
                                    }
                                })

                            }
                        }
                    });
                });
            }
    });
})


GAME.showCards =function()
{
    $('.ok').stopBlink();
    $('.ok').remove();
    $.getJSON('api.php',{'act':'getAll'},function(json){
        for(var i=0;i<json.playCards;i++)
            {
                var link =$('.imagebox[data-id='+i+']');
                link.css('background','url(images/'+json.grid[i]+'.jpg) no-repeat center center');
                link.css('visibility','visible');
            }
            var params={};
            
            params.act='checkScore';
            $.getJSON('api.php', params, function(json){
                if (json.betterScore){
                    $('.block').show();
                    $('.scoresBox').show();
                    $('#better').show();
                    $('.scoresList').hide();
                }
                else{
                    GAME.showScoresList(json.scores);
                }    
            });
            
            
    })
}

GAME.deleteCards=function()
{
    $('.ok').stopBlink();
    $('.ok').remove();
    for(var i=1 ; i <=GAME.cardsNumber; i++)
    {
        if (GAME.cards[i])
        {
            GAME.cards[i].css('visibility','hidden');
            GAME.cards[i]=false;
        }
    }
    GAME.cardsSelected=0;
    GAME.bussy=0;
    
}
GAME.backCards=function()
{
    if(GAME.cardsSelected==GAME.cardsNumber)
    {
        GAME.revertFlip(1);
    }
}
GAME.revertFlip= function (i){
    if (i>GAME.cardsNumber)
    {
        GAME.cardsSelected=0;
        GAME.bussy=0;
    } 
    else
    {
        if (GAME.cards[i])
        {
            GAME.cards[i].flip({
                direction:'rl',
                speed:100,
                onEnd: function(){
                    GAME.cards[i].removeAttr('style');
                    GAME.cards[i]=false;
                    GAME.revertFlip(i+1);
                }
            });
        }    
    }
}
GAME.saveName= function(){
    var name=$('#userName').val();
    var params ={};
    params.act='saveName';
    params.name=name;
    $.getJSON('api.php', params, function(json){
        GAME.showScoresList(json.scores);
    });
}
GAME.showScoresList=function(scores){
    $('#listOfScores').html('');
    //<li><label>Lucas el mejor</label><span>1505 Points</span></li>
    for(var i=0 ; i<5;i++)
        {
            if(scores[i])
            {
                var li = $('<li>');
                var label = $('<label>');
                var span = $('<span>');
                span.html(scores[i]['score']);
                label.html(scores[i]['name'])
                li.append(label);
                li.append(span);
                $('#listOfScores').append(li);
            }
        }
    var gameLevel=GAME.nextLevel -1;   
    $('#levelInfo').html(gameLevel);    
    $('.block').show();
    $('.scoresBox').show();
    $('#better').hide();
    $('.scoresList').show();
    
}
