﻿// JScript File
var globstatus = new Array();
var globinterval = new Array();
var countdownInterval;

function submitForm(hiddenfield,val)
{
   
}
function UpdateCorrectBox(name)
{
    var key;
    var tb;
    var i;
    var alreadyGuessed;
    var guess;
    var guessbox;
    var newguess;
    var origguess;
    var delay = 1000;
    
    if(window.event)
        key = window.event.keyCode;

    if(key == 13 || name == 'click')
    {
        var labSpec = document.getElementById('ctl00_contentPage_lblSpecific');
        labSpec.innerHTML = '&nbsp;&nbsp;';
        
        var gamekey = document.getElementById('ctl00_contentPage_hfgamekey1').value;
        var gameinstancekey = document.getElementById('ctl00_contentPage_hfgameinstancekey').value;
        origguess = document.getElementById('ctl00_contentPage_tbGuess').value.toUpperCase();
        if(origguess == '' || origguess == 'GAME OVER')
            return false;
            
        i = Triva.CheckAnswer(gamekey, origguess.replace("'",""));
        
        if (i.value == '') // answer was not found
        {
            newguess = Triva.CheckGoogle(origguess.replace("'","")).value;  // get new guess from google
            if(newguess != '')
            {
                i = Triva.CheckAnswer(gamekey, newguess);
                if(i.value != '')
                    guess = newguess; // set guess equal to new guess
            }
        }
        
        if (guess == null)
            guess = origguess;
        
        if (i.value.length == 0) // wrong answer
        {
            Triva.InsertGuess(gameinstancekey, gamekey, origguess.replace("'",""), guess.replace("'",""));
            insert = insRow(i, guess.replace("'",""));
            
            guessbox = document.getElementById('ctl00_contentPage_'+guess.replace("'",""));
            guessbox.className = 'incorrectguess';
            var t = setTimeout('UpdateGuessClass(\''+guess.replace("'","")+'\')',3000);
            document.getElementById('ctl00_contentPage_tbGuess').value = '';
            return false;
        }
        else // correct answer, iterate through, add guesses, update the board
        {
            document.getElementById('ctl00_contentPage_tbGuess').value = '';
        
            for(var j=0; j<i.value.length; j++)
            {
                var positionStr = i.value[j].PositionStr;
                var idStr = i.value[j].IdStr;
                var fullname = i.value[j].FullName;
             
                var guess = fullname.toUpperCase().replace("'","");
             
                var alreadyAdded = alreadyIn(guess);
             
                Triva.InsertGuess(gameinstancekey, gamekey, origguess.replace("'",""), guess);   
                insert = insRowCorrect(idStr, guess);
                
                if (!alreadyAdded)
                {
                    var positions = positionStr.split(",");
                    for (var k=0; k<positions.length; k++)
                    {
                        var position = positions[k];
                    
                        tb = document.getElementById('ctl00_contentPage_board'+position); 
                        var t2 = setTimeout('UpdateBoardTextbox(\'board'+position+'\',\''+fullname+'\')',delay*(j+k));
                        
                        var remaininganswers = document.getElementById('ctl00_contentPage_hfremainginganswers');
                        var hfCorrect = document.getElementById('ctl00_contentPage_hfCorrect');
                        if(remaininganswers.value == 1)
                        {
                            Triva.UpdateUserGame(gamekey,gameinstancekey,0);
                            SetResultButton();
                            var giveup = document.getElementById('ctl00_contentPage_btnGiveUp');
                            if(giveup != null)
                                giveup.style.display = 'none';
                        }
                        else
                        {
                            remaininganswers.value = remaininganswers.value - 1;
                            hfCorrect.value = parseInt(hfCorrect.value) + 1;
                        }
                        if (parseInt(hfCorrect.value) >= 10)
                        {
                            var btnGiveUp = document.getElementById('ctl00_contentPage_btnGiveUp');
                            btnGiveUp.style.display = '';
                        }
                    }
                }
                else
                {
                    guessbox = document.getElementById('ctl00_contentPage_'+guess.replace("'",""));
                    guessbox.className = 'incorrectguess';
                    var t = setTimeout('UpdateGuessClass(\''+guess.replace("'","")+'\')',3000);
                }
                
            }
        }
        
        return false;
    }   
    else
        return true;
}

function insRowCorrect(idStr, guess)
{
    var alreadyAdded = document.getElementById('ctl00_contentPage_'+guess);
    
    if(alreadyAdded == null)
    {
        var tabG = document.getElementById('ctl00_contentPage_tabGuesses');
        var hfGuesses = document.getElementById('ctl00_contentPage_hfGuesses');
        var numGuesses = parseInt(hfGuesses.value);
        
        var x, y;
        x = tabG.insertRow(0);
        y = x.insertCell(0);
        
        y.className = 'guess';                
        x.className = 'correctguess';
        y.id = 'ctl00_contentPage_'+guess;
        y.innerHTML = idStr.toUpperCase();
        
        hfGuesses.value = (numGuesses+1).toString();
                
        return false;
    }

    return true;
}

function insRow(i,guess)
{
    var alreadyAdded = document.getElementById('ctl00_contentPage_'+guess);
    
    if(alreadyAdded == null)
    {
        var tabG = document.getElementById('ctl00_contentPage_tabGuesses');
        var hfGuesses = document.getElementById('ctl00_contentPage_hfGuesses');
        var numGuesses = parseInt(hfGuesses.value);
        
        var x, y;
        var row = Math.floor(numGuesses / 4);
        var col = numGuesses % 4;

        col = 0;
        if (col == 0)
        {
            x = tabG.insertRow(0);
            y = x.insertCell(0);
        }
        else
        {
            x = tabG.rows[row];
            y = x.insertCell(col);
        }
        
        x.className = 'guessrow';
        y.id = 'ctl00_contentPage_'+guess;
        if(i.value != '')
        {
            /*var str = i.value[0].id;
            for(var j=1; j<20; j++)
            {
                if(i.value[j] == null)
                    break;
                else
                    str = str + ','+i.value[j].id;
            }
            y.innerHTML = guess + ' (' + str + ')';*/
        }
        else
            y.innerHTML = guess;
        
        hfGuesses.value = (numGuesses+1).toString();
                
        return false;
    }
    
    return true;
}


function SetResultButton()
{
    var lnkResults = document.getElementById('ctl00_contentPage_lnkResults');
    var tbGuess = document.getElementById('ctl00_contentPage_tbGuess');
    var tdSubmit = document.getElementById('ctl00_contentPage_tdSubmit');
    var ddlClues = document.getElementById('ctl00_contentPage_ddlClues');
    
    lnkResults.style.display='';
    tbGuess.style.display='none';
    tdSubmit.style.display='none';
    ddlClues.style.display='none';
    
}

/*function LoginClicked()
{
    var login = document.getElementById('LoginView2_Login1_UserName');
    var password = document.getElementById('LoginView2_Login1_Password');
    
    if(login.value == '' || password.value == '')
        return false;
        
    return true;
}*/

function doFlipFirefox(box,val,pos,isbig)
{
    var t = document.getElementById('ctl00_contentPage_'+box);
    
    var opp = "";
    if(isbig.indexOf('opponentcorrecttextbox',0) != -1)
       opp = " opponentcorrecttextbox";
    
    if(isbig.indexOf("incorrecttextbox10") != -1)
        t.className = "correcttextbox10"+opp;
    else
        t.className = "correcttextbox"+opp;
        
    t.value = val;
}

function doFlip(box,val,pos)
{
    var t = document.getElementById('ctl00_contentPage_'+box);
    var p = document.getElementById('ctl00_contentPage_p'+box);
    var sz = t.style.height.replace("px","");
    var bordsz = parseInt(t.style.borderTopWidth.replace("px",""));
    var padding = parseInt(p.style.paddingTop.replace("px",""));
    var paddingbot = parseInt(p.style.paddingBottom.replace("px",""));
        
    if(sz < 1 && globinterval[pos] == -2)
    {
        globinterval[pos] = 2;
        var opp = "";
        if(t.className.indexOf('opponentcorrecttextbox',0) != -1)
            opp = " opponentcorrecttextbox";
        
        t.className = "correcttextbox"+opp;
        t.value = val;
        t.style.paddingTop = '0px';
        t.style.paddingBottom = '0px';
        
    }
    else
    {
        var newsize = (parseInt(sz) + globinterval[pos]);
        t.style.height = newsize;
        
        if((globinterval[pos] < 0 && padding <= 11) || (globinterval[pos] > 0 && sz > 0))
        {
            p.style.paddingTop = padding+(-1*globinterval[pos]/2);
        }
        p.style.paddingBottom = paddingbot+(-1*globinterval[pos]/2);
                
        if(t.className.indexOf('correcttextbox') == 0 && newsize >= 26)
        {
            p.style.paddingTop = '0px';
            p.style.paddingBottom = '0px';
            clearInterval(globstatus[pos]);
        }                    
    }
}

function doFlip10(box,val,pos)
{
    var t = document.getElementById('ctl00_contentPage_'+box);
    var p = document.getElementById('ctl00_contentPage_p'+box);
    var sz = t.style.height.replace("px","");
    var bordsz = parseInt(t.style.borderTopWidth.replace("px",""));
    var padding = parseInt(p.style.paddingTop.replace("px",""));
    var paddingbot = parseInt(p.style.paddingBottom.replace("px",""));
        
    if(sz < 1 && globinterval[pos] == -2)
    {
        globinterval[pos] = 2;
        var opp = "";
        if(t.className.indexOf('opponentcorrecttextbox',0) != -1)
            opp = " opponentcorrecttextbox";
        
        t.className = "correcttextbox10"+opp;
        t.value = val;
        t.style.paddingTop = '0px';
        t.style.paddingBottom = '0px';
    }
    else
    {
        var newsize = (parseInt(sz) + globinterval[pos]);
        t.style.height = newsize;
        
        if((globinterval[pos] < 0 && padding <= 5) || (globinterval[pos] > 0 && sz > 4))
        {
            p.style.paddingTop = padding+(-1*globinterval[pos]/2);
            p.style.paddingBottom = paddingbot+(-1*globinterval[pos]/2);
        }
                
        if(newsize >= 18 && t.className.indexOf('correcttextbox10') == 0)
        {
            p.style.paddingTop = '0px';
            p.style.paddingBottom = '0px';
            clearInterval(globstatus[pos]);
        }                    
    }
}



function UpdateBoardTextbox(box,val)
{
    var t = document.getElementById('ctl00_contentPage_'+box);
    var p = document.getElementById('ctl00_contentPage_p'+box);
    
    var pos = parseInt(t.id.replace('ctl00_contentPage_board',''));
    p.style.paddingTop = '0px';
    p.style.paddingBottom = '0px';
    t.style.paddingTop = '0px';
    t.style.paddingBottom = '0px';
    globinterval[pos] = -2;

    if(navigator.userAgent.indexOf("Firefox")!=-1)
    {
        doFlipFirefox(box,val,pos,t.className);
    }
    else
    {
        if(t.className.indexOf('incorrecttextbox10') == 0)
        {
            t.style.height = '18px';
            t.style.borderWidth = '6px';
            globstatus[pos] = setInterval ('doFlip10(\''+box+'\',\''+val+'\','+pos+')', 15);
        }
        else
        {
            t.style.height = '26px';
            t.style.borderWidth = '10px';
            globstatus[pos] = setInterval ('doFlip(\''+box+'\',\''+val+'\','+pos+')', 15);
        }
    }
    var res = document.getElementById('ctl00_contentPage_lblGamePoints');
    res.innerHTML = parseInt(res.innerHTML.replace(' points'))+parseInt(document.getElementById('ctl00_contentPage_hfpoints').value)+' points';
}


function insCorrectRow(str,guess)
{
    var alreadyAdded = document.getElementById('ctl00_contentPage_'+guess);
    
    if(alreadyAdded == null)
    {
        var tabG = document.getElementById('ctl00_contentPage_tabGuesses');
        var hfGuesses = document.getElementById('ctl00_contentPage_hfGuesses');
        var numGuesses = parseInt(hfGuesses.value);
        
        var x, y;
        var row = Math.floor(numGuesses / 4);
        var col = numGuesses % 4;
                
        col = 0;
        if (col == 0)
        {
            x = tabG.insertRow(0);
            y = x.insertCell(0);
        }
        else
        {
            x = tabG.rows[row];
            y = x.insertCell(col);
        }
        
        y.className = 'guess';
        x.className = 'correctguess';
        y.id = 'ctl00_contentPage_'+guess;
        y.innerHTML = str;
        
        hfGuesses.value = (numGuesses+1).toString();
                
    }
}

function alreadyIn(guess)
{
    var already = document.getElementById('ctl00_contentPage_'+guess);
    if(already == null)
        return false;
    else
        return true;
}

function UpdateGuessClass(guess)
{

    var t = document.getElementById('ctl00_contentPage_'+guess)
    t.className = 'guess';
}

function UpdateClues(ddl)
{
    var clue = ddl.value;
    
    var hint = document.getElementById('ctl00_contentPage_hfhint');
    if(hint.value == "0")
    {
        hint.value = "1";
        Triva.UpdateHint(document.getElementById("ctl00_contentPage_hfgameinstancekey").value);
    }
    
    for(var x=1; x<40; x++)
    {
        var tb = document.getElementById('ctl00_contentPage_board'+x);
        
        if(tb == null)
            return;
        
        if(tb.className.indexOf('correcttextbox') == 0 || tb.className.indexOf('correcttextbox10') == 0 
                || tb.className.indexOf('unguessedtextbox') == 0 || tb.className.indexOf('unguessedtextbox10') == 0)
            continue;
            
        var cluefield = document.getElementById('ctl00_contentPage_'+clue+x.toString());
                
        var space = tb.value.indexOf(' ');
        if(space != -1)
            tb.value = tb.value.substring(0,space);
        
        if(cluefield != null && cluefield.value != '')
            tb.value = tb.value + ' - '+cluefield.value;
    }
    return;
}


function answerString(i,guess)
{
    if(i.value[0].position != -1)
    {
        var retstr = i.value[0].id;
        for(var j=1; j<20; j++)
        {
            if(i.value[j] == null)
                break;
            else
                retstr = retstr + ','+i.value[j].id;
        }
        return guess + '<br><span style="color:Green">' + retstr + '</span>';
    }
    
    return '';
}

function addRating(gamekey, rating)
{
    Results.AddRating(gamekey,rating);
    var pan = document.getElementById('ctl00_contentPage_Panel1');
    var lab = document.getElementById('ctl00_contentPage_lblRateGame');
    pan.style.display = 'none';
    lab.innerHTML = 'Thank you for rating this game.';
}

function UpdateOpponentCorrect()
{
    var CLGameInstanceKey = parseInt(document.getElementById('ctl00_contentPage_hfgameinstancekey').value);
    var i = Triva.GetOpponentCorrectAnswers(CLGameInstanceKey);
    
    
    var index = 0;
    while(index < 10)
    {
        if(i.value[index] == 999)
        {
            return;
        }
        else 
        {
            var b = document.getElementById('ctl00_contentPage_board'+i.value[index]);
            if(b.className.indexOf('opponentcorrecttextbox',0) == -1)
            {
                b.className = b.className + ' opponentcorrecttextbox';
            }
        }
        index++;
    }

}

function updateCountdownLabel()
{
    var l = document.getElementById('ctl00_contentPage_lblCountdown');
    var i = parseInt(l.innerHTML);
    
    if(i > 1)
    {
        l.innerHTML = (i-1);
    }
    else
    {
        clearInterval(countdownInterval);
        __doPostBack('updatePanelBoard', '');
        setTimeout("document.getElementById('ctl00_contentPage_tbGuess').focus()",2000);
        setInterval('UpdateOpponentCorrect()',2000);
        document.getElementById('ctl00_contentPage_lblGameStatus').innerHTML = " seconds remaining to answer...";
        l.innerHTML = "90";
        startGamePlayCountdown();
    }
}

function startCountdown()
{
    countdownInterval = setInterval('updateCountdownLabel()',1000);
}

function startGamePlayCountdown()
{
    countdownInterval = setInterval('updateCountdownLabelDuringPlay()',1000);
}

function updateCountdownLabelDuringPlay()
{
    var l = document.getElementById('lblCountdown');
    var i = parseInt(l.innerHTML);
    
    if(i > 1)
    {
        l.innerHTML = (i-1);
    }
    else
    {
        var tbGuess = document.getElementById('tbGuess');
        clearInterval(countdownInterval);
        tbGuess.value = 'GAME OVER';
        tbGuess.disabled = true;
        Triva.GetReadyForNewGame();
        __doPostBack('updateGameStatus', '');
        __doPostBack('updateButtons', '');
        __doPostBack('updateUsers', '');
        
    }
}