

function memory_make_table() {
    for(i=0;i<memory_m;i++) {
        var x = memory_get_cards_place();
        memory_table[x] = i;
        var x2 = memory_get_cards_place();
        memory_table[x2] = i;
        //document.getElementById('memory_log').innerHTML += x + ' - ' + x2 + '<br />';
    }
    var x=0;
    for(var row=0;row<memory_rows;row++) {
        for(var col=0;col<memory_cols;col++) {
            var img = document.createElement("img");
            img.setAttribute("src", memory_img_back);
            img.setAttribute("id", "memory_card" + x);
            img.setAttribute("name", "memory_card" + x);
            eval("img.onclick = function() { memory_open_card(" + x + "); }");
            //eval("img.onmouseover = function() { memory_cheat(" + x + "); }");
            document.getElementById('memory_game').appendChild(img);
            x++;
        }
        var br = document.createElement("br");
        document.getElementById('memory_game').appendChild(br);
    }
}

function memory_cheat(x) {
    document.getElementById('memory_card' + x).src = memory_img_base + memory_table[x] + memory_img_ext;
}

function memory_get_cards_place() {
    var x = memory_getRandom(0,memory_c-1);
    //document.getElementById('memory_log').innerHTML += 'X: ' + x + '<br />';
    while(!memory_check_place(x)) {
        if(++x>=memory_c) x=0;
    }
    return x;
}

function memory_check_place(x) {
    if(typeof(memory_table[x]) == "null" || typeof(memory_table[x]) == 'undefined') {
        return true;
    }else{
        return false;
    }
}
function memory_open_card(x) {
    //alert('TEST');
    if(memory_timeleft>0) {
        if(!memory_running) {
            memory_running = true;
            memory_countdown();
        }
        if(memory_open_cards>=2) {
            memory_clear_opened();
        }
        if(memory_open_cards<2) {
            memory_last_move[memory_open_cards] = x;
            document.getElementById('memory_card' + x).src = memory_img_base + memory_table[x] + memory_img_ext;
            document.getElementById('memory_card' + x).onclick = function() {}
            memory_open_cards++;
            if(memory_open_cards==2) {
                if(document.getElementById('memory_card'+memory_last_move[0]).src == document.getElementById('memory_card'+memory_last_move[1]).src) {
                    memory_pair_complete();
                    memory_log(1);
                    if(memory_postry==memory_m) {
                        memory_running = false;
                        memory_level_complete();
                    }
                } else {
                    clearTimer = setTimeout("memory_clear_opened()", memory_wait_for_close);
                }
            }
        }
    }
}

function memory_clear_opened() {
    clearTimeout(clearTimer);
    document.getElementById('memory_card'+memory_last_move[0]).src = memory_img_back;
    eval("document.getElementById('memory_card'+memory_last_move[0]).onclick = function() { memory_open_card(" + memory_last_move[0] + "); }");
    document.getElementById('memory_card'+memory_last_move[1]).src = memory_img_back;
    eval("document.getElementById('memory_card'+memory_last_move[1]).onclick = function() { memory_open_card(" + memory_last_move[1] + "); }");
    memory_open_cards=0;
    memory_log(0);
}

function memory_pair_complete() {
    memory_open_cards=0;
}

function memory_getRandom(min, max) {
    var randomNum = Math.random() * (max-min);
    return(Math.round(randomNum) + min);
}

function memory_log(complete) {
    if(complete>0) {
        memory_postry++;
        document.getElementById('memory_postry').innerHTML = memory_postry;
    }else{
        memory_negtry++;
        document.getElementById('memory_negtry').innerHTML = memory_negtry;
    }
    //document.getElementById('memory_log').innerHTML = memory_open_cards;
}

function memory_init_timebar() {
    var memory_timebar_g=memory_timebar_y=memory_timebar_r='';
    for(var i=0; i<30; i++) {
        if(i>20) {
            memory_timebar_g += '<img src="typo3conf/ext/mw_memory/pi1/res/img/time_green.gif" /><br />';
        } else if(i<=10) {
            memory_timebar_r += '<img src="typo3conf/ext/mw_memory/pi1/res/img/time_red.gif" /><br />';
        } else {
            memory_timebar_y += '<img src="typo3conf/ext/mw_memory/pi1/res/img/time_yellow.gif" /><br />';
        }
    }
    document.getElementById('memory_timebar').innerHTML = memory_timebar_g + memory_timebar_y + memory_timebar_r;
}

function memory_init_level(lvl) {
    if(lvl==1) { make_rnd_key(); }
    memory_level = lvl;
    document.getElementById('memory_highscore').style.display = 'none';
    document.getElementById('memory_game_end').style.display = 'none';
    document.getElementById('memory_time_out').style.display = 'none';
    document.getElementById('memory_game').innerHTML = '';
    document.getElementById('memory_postry').innerHTML = "0";
    document.getElementById('memory_negtry').innerHTML = "0";
    document.getElementById('memory_level').innerHTML = memory_level;
    memory_max_time = memory_start_time - ((lvl-1)*10);
    memory_timeleft =  memory_max_time;
    memory_score = 0;
    memory_init_timebar();
    memory_running=false;
    memory_table = Array(memory_c);
    memory_open_cards=0;
    memory_last_move = Array(2);
    memory_postry=0;
    memory_negtry=0;
    memory_make_table();
}

function memory_next_level() {
    memory_level++;
    memory_init_level(memory_level);
}

function memory_level_complete() {
    complete = true;
    memory_running=false;
    var time_gone = memory_max_time - memory_timeleft;
    x_memory_set_score(time_gone, memory_negtry, memory_postry, memory_level, memory_key, memory_get_temp_score);
}


function memory_countdown() {
    if(memory_running) {
        memory_timeleft--;
        var memory_timebar_e=memory_timebar_g=memory_timebar_y=memory_timebar_r='';
        var time_gone = memory_max_time - memory_timeleft;
        var p = Math.round( (time_gone * 100) / memory_max_time );
        //memory_logit(memory_level + ' - ' + time_gone + ' - ' + memory_max_time + ' - ' + p);
        p = 30 - Math.round((30*p)/100);
        //alert(p);
        //alert(timeleft);
        //alert(max_time);
        for(var i=0; i<p; i++) {
            if(i>20) {
                memory_timebar_g += '<img src="typo3conf/ext/mw_memory/pi1/res/img/time_green.gif" /><br />';
            } else if(i<=10) {
                memory_timebar_r += '<img src="typo3conf/ext/mw_memory/pi1/res/img/time_red.gif" /><br />';
            } else {
                memory_timebar_y += '<img src="typo3conf/ext/mw_memory/pi1/res/img/time_yellow.gif" /><br />';
            }
        }
        for(var i=30; i>p; i--) {
            memory_timebar_e += '<img src="typo3conf/ext/mw_memory/pi1/res/img/time_empty.gif" /><br />';
        }
        //alert(percent);

        document.getElementById('memory_timebar').innerHTML = memory_timebar_e + memory_timebar_g + memory_timebar_y + memory_timebar_r;
        if(memory_timeleft>0) {
            setTimeout('memory_countdown()', 1000);
        } else {
            var time_gone = memory_max_time - memory_timeleft;
            x_memory_set_score(time_gone, memory_negtry, memory_postry, memory_level, memory_key, memory_get_full_score);
            //x_memory_get_score(memory_key, memory_get_full_score);
        }
    }
}

function memory_show_level_score(result) {
    document.getElementById('memory_score').innerHTML = result;
    document.getElementById('memory_score_now').innerHTML = result;
    document.getElementById('memory_game_end').style.display = 'block';
}
function memory_show_full_score(result) {
    document.getElementById('memory_time_out').style.display = 'block';
    document.getElementById('memory_score').innerHTML = result;
}


function memory_get_full_score() {
    x_memory_get_score(memory_key, memory_show_full_score);
}
function memory_get_temp_score() {
    x_memory_get_score(memory_key, memory_show_level_score);
}

function memory_get_score(result) {
    memory_score = result;
}


function memory_put_highscore() {
    var player = document.getElementById('memory_player').value;
    if(player=='') {
        document.getElementById('memory_player').style.border = '1px solid red';
    } else {
        x_memory_put_highscore(player, memory_key, memory_show_highscore);
        document.getElementById('memory_game_end').style.display = 'none';
        document.getElementById('memory_time_out').style.display = 'none';
    }
}


function memory_get_highscore() {
    x_memory_get_highscore(memory_show_highscore);
}

function memory_show_highscore(result) {
    document.getElementById('memory_highscore').innerHTML = result;
    document.getElementById('memory_highscore').style.display = 'block';
}

function make_rnd_key() {
    memory_key = Math.random() + Math.random() + Math.random();
}

function memory_logit(str) {
    document.getElementById('memory_log').innerHTML = str + "<br />" + document.getElementById('memory_log').innerHTML;
}
