//
// Sudoku
// By Gamboa 2005 
//

var number=1;

// vars anim bola
var vTop = 3;
var vLeft = 3;
var idAnim = false;
// vars anim counter
var idTime = false;

function stopTO(id) {
    window.clearTimeout(id);
    id = false;
}

function loadGame(url) {

    if(window.XMLHttpRequest) {
        obj = new XMLHttpRequest();
        obj.open("GET", url, true);
        //obj.open("GET", 'game.php', true);
        if(/game.php/.test(url)) {
            obj.onreadystatechange = newGame;
        } else if(/gift.php/.test(url)) {
            obj.onreadystatechange = loadResult;
        }
        obj.send(null);
    }
    else if(window.ActiveXObject) {
        obj = new ActiveXObject("Microsoft.XMLHTTP");
        if(obj) {
            obj.open("GET", url, true);
            //obj.open("GET", 'game.php', true);
            if(/game.php/.test(url)) {
                obj.onreadystatechange = newGame;
            }
            obj.send();
        }
    }
}

function newGame() {
    if(obj.readyState == 4 && obj.status == 200) {
        var game = obj.responseText;
        document.getElementById("gamespace").innerHTML = game;
    }
}

function loadResult() {
    if(obj.readyState == 4 && obj.status == 200) {
        var result = obj.responseText;
        document.getElementById("time").style.display = 'none';
        document.getElementById("gamespace").innerHTML = result;
    }
}

function resetCounter() {
    stopTO(idTime);
    var campo1 = document.getElementById("clock");
    var campo2 = document.getElementById("time");
    campo1.value = '00:00:00';
    campo2.style.display = 'block';
    timeCount();
}

function timeCount() {
    var campo1 = document.getElementById("time");
    var campo2 = document.getElementById("clock");
    var getTime = campo2.value.split(':');
    var time = '';
    var h = Number(getTime[0]);
    var m = Number(getTime[1]);
    var s = Number(getTime[2]);
    s = Number(s) + 1;
    if(s > 59) {
        s = 0;
        m = Number(m) + 1;
    }
    if(m > 59) {
        m = 0;
        h = Number(h) + 1;
    }
    if(h < 10) {
        time += '0'+h;
    } else {
        time += h;
    }
    if(m < 10) {
        time += ':0'+m;
    } else {
        time += ':'+m;
    }
    if(s < 10) {
        time += ':0'+s;
    } else {
        time += ':'+s;
    }
    campo1.innerHTML = time;
    campo2.value = time;
   
    idTime = setTimeout("timeCount()",1000);
}

function setBg(campo, color) {
    campo.style.backgroundColor = color;
}

function recBg(rowKey, colKey) {
    var campo = document.getElementById('i['+rowKey+']['+colKey+']');
    if(((rowKey >= 1 && rowKey <= 3) && (colKey >= 1 && colKey <= 3)) || 
       ((rowKey >= 1 && rowKey <= 3) && (colKey >= 7 && colKey <= 9)) || 
       ((rowKey >= 4 && rowKey <= 6) && (colKey >= 4 && colKey <= 6)) || 
       ((rowKey >= 7 && rowKey <= 9) && (colKey >= 1 && colKey <= 3)) || 
       ((rowKey >= 7 && rowKey <= 9) && (colKey >= 7 && colKey <= 9))){
        var color = '#CCCCCC';
    } else {
        var color = '#FFFFFF';
    }
    campo.style.backgroundColor = color;
}

function setNumber(campo) { 

    for(var i=1; i <= 9; i++) {
        var outros = document.getElementById('b'+i);
        if(campo.value == i) {
            number = i;
            campo.disabled = true;
            setBg(campo, '#05DD09');
        } 
        else {
            outros.disabled = false;
            setBg(outros, '#CCCCCC');
        }
    }
}

function inRow(rowKey) {
    var erro = false;
    for(var i=1; i <= 9; i++) {
        var campo = document.getElementById('i['+rowKey+']['+i+']');
        if(campo.value == number) {
            setBg(campo, '#FF0000');
            erro = true;
            setTimeout("recBg("+rowKey+","+i+")", 1000);
        }
    }
    return erro;
}

function inCol(colKey) {
    var erro = false;
    for(var i=1; i <= 9; i++) {
        var campo = document.getElementById('i['+i+']['+colKey+']');
        if(campo.value == number) {
            setBg(campo, '#FF0000');
            erro = true;
            setTimeout("recBg("+i+","+colKey+")", 1000);
        }
    }
    return erro;
}

function inSection(rowKey, colKey) {
    var erro = false;
    var x;
    var y;
    if((rowKey >= 1 && rowKey <= 3) && (colKey >= 1 && colKey <= 3)) {
        x=1; y=1;
    }
    else if((rowKey >= 1 && rowKey <= 3) && (colKey >= 4 && colKey <= 6)) {
        x=1; y=4;
    }
    else if((rowKey >= 1 && rowKey <= 3) && (colKey >= 7 && colKey <= 9)) {
        x=1; y=7;
    }
    else if((rowKey >= 4 && rowKey <= 6) && (colKey >= 1 && colKey <= 3)) {
        x=4; y=1;
    }
    else if((rowKey >= 4 && rowKey <= 6) && (colKey >= 4 && colKey <= 6)) {
        x=4; y=4;
    }
    else if((rowKey >= 4 && rowKey <= 6) && (colKey >= 7 && colKey <= 9)) {
        x=4; y=7;
    }
    else if((rowKey >= 7 && rowKey <= 9) && (colKey >= 1 && colKey <= 3)) {
        x=7; y=1;
    }
    else if((rowKey >= 7 && rowKey <= 9) && (colKey >= 4 && colKey <= 6)) {
        x=7; y=4;
    }
    else if((rowKey >= 7 && rowKey <= 9) && (colKey >= 7 && colKey <= 9)) {
        x=7; y=7;
    }
    var xEnd = Number(x) + 3;
    var yEnd = Number(y) + 3;
    for(var i=x; i < xEnd; i++) {
        for(var j=y; j < yEnd; j++) {
            var campo = document.getElementById('i['+i+']['+j+']');
            if(campo.value == number) {
                setBg(campo, '#FF0000');
                erro = true;
                setTimeout("recBg("+i+","+j+")", 1000);
            }
        }
    }
    return erro;
}

function finish() {
    var done = true;
    for(var i=1; i <= 9; i++) {
        for(var j=1; j <= 9; j++) {
            var campo = document.getElementById('i['+i+']['+j+']');
            if(campo.value == '') {
                done = false;
            }
        }
    }
    return done;
}

function viewFinish() {
    var str = '';
    for(var i=1; i <= 9; i++) {
        for(var j=1; j <= 9; j++) {
            var campo = document.getElementById('i['+i+']['+j+']');
            if(i == 9 && j == 9) {
                str += i+'_'+j+'_'+campo.value+'';
            } else {
                str += i+'_'+j+'_'+campo.value+'|';
            }
        }
    }
    return str;
}

function validateJs(campo, rowKey, colKey) {
    if(campo.value == number) {
        campo.value = '';
        return true;
    }
    var isInRow = inRow(rowKey);
    var isInCol = inCol(colKey);
    var isInSection = inSection(rowKey, colKey);
    if(!isInRow && !isInCol && !isInSection) {
        campo.value = number;
    }
    if(finish()) {
        var chk = document.getElementById('chk').value;
        var t = document.getElementById('clock').value;
        stopTO(idTime);
        do {
	    var userName = prompt('Nice game :). Insert your name.');
	    if(typeof(userName) != 'undefined' && userName != '' && userName != null) {
                loadGame('gift.php?str='+viewFinish()+'&name='+userName+'&chk='+chk+'&t='+t); 
	    }
        } while(typeof(userName) == 'undefined' || userName == '' || userName == null);
    }
}

function viewResultTable() {
    loadGame('gift.php?vewTableResult=ok');
}

function animBola(top, left) {

    var limitTop = 123;
    var limitLeft = 153;

    if(top < -2) {
        vTop = vTop * -1;
    } else if(top >= limitTop) {
        vTop = vTop * -1;
    }
    if(left < -2) {
        vLeft = vLeft * -1;
    } else if(left >= limitLeft){
        vLeft = vLeft * -1;
    }
    var newTop = Number(top) + Number(vTop); 
    var newLeft = Number(left) + Number(vLeft);

    document.getElementById("bola").style.top = newTop;
    document.getElementById("bola").style.left = newLeft;

    idAnim = setTimeout("animBola("+newTop+","+newLeft+")", 100);
}



