javascript array problem
<p>i have written a snake program using javascript..
the problem is that the snake does not grow more than 2 blocks size....</p>

<pre><code>&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript"&gt;

var matrix, body, dir, key, lastx, lasty, start, applex, appley, eat, hal;


function node(x, y) {
    this.x = x;
    this.y = y;
}


function draw() {
    var str;
    for (var i = 0; i &lt; body.length; i++) {
        matrix[body[i].x * 50 + body[i].y].bgColor = "black";
    }

}


function halt() {
    hal = 1 - hal;
    if (hal == 0) automove();
}


function check_status() {
    if (start == 1 &amp;&amp; hal == 0) {

        var ch;
        if (eat == 1) {
            do {
                ch = 0;
                applex = Math.round(49 * Math.random());
                appley = Math.round(49 * Math.random());
                for (var i = 0; i &lt; body.length; i++)
                if (body[i].x == applex &amp;&amp; body[i].x == appley) ch = 1;
            } while (ch == 1);


            matrix[applex * 50 + appley].bgColor = "blue";
            eat = 0;
        }



        lastx = body[body.length - 1].x;
        lasty = body[body.length - 1].y;
        for (var i = 1; i &lt; body.length; i++) {
            body[i].x = body[i - 1].x;
            body[i].y = body[i - 1].y;
        }


        if (dir == 1)--body[0].x;
        else if (dir == -1)++body[0].x;
        else if (dir == 2)--body[0].y;
        else if (dir == -2)++body[0].y;

        if (body[0].x == -1 || body[0].x == 50 || body[0].y == 50 || body[0].y == -1) {
            alert("GAME OVER!!");
            start = 0;
        }


        for (var i = 1; i &lt; body.length; i++) {
            if (body[0].x == body[i].x &amp;&amp; body[0].y == body[i].y) {
                alert("GAME OVER!!");
                start = 0;
                i = 10000;
            }
        }


        if (body[0].x == applex &amp;&amp; appley == body[0].y) {
            eat = 1;
            body[body.length] = new node(lastx, lasty);
        }
        matrix[lastx * 50 + lasty].bgColor = "white";
        draw();
    }
}



function automove() {
    if (start == 1 &amp;&amp; hal == 0) {
        if (key != -dir) dir = key;
        check_status();
        window.setTimeout("automove()", 200);
    }
}


function init() {
    start = 1;
    var x = document.getElementById("mine");
    var str = "&lt;table id='tab' align='center' height='500px' cellSpacing='0' cellPadding='0' width='500px' border='4' &gt;";


    for (var i = 0; i &lt; 50; i++) {
        str += "&lt;tr&gt;";
        for (var j = 0; j &lt; 50; j++)
        str += "&lt;td&gt;&lt;/td&gt;";
        str += "&lt;/tr&gt;";
    }
    str += "&lt;/table&gt;";
    x.innerHTML = str;


    matrix = document.getElementsByTagName("td");
    body = new Array();
    body[0] = new node(0, 0);
    draw();
    dir = key = -1;

    eat = 1;
    v = 0;
    hal = 0;
    automove();
}


function keypress(e) {
    if ((e.keyCode == 38) || ((e.which) &amp;&amp; (e.which == 38))) //up
    key = 1;
    else if ((e.keyCode == 40) || ((e.which) &amp;&amp; (e.which == 40))) //down
    key = -1;
    else if ((e.keyCode == 37) || ((e.which) &amp;&amp; (e.which == 37))) //left
    key = 2;
    else if ((e.keyCode == 39) || ((e.which) &amp;&amp; (e.which == 39))) //right
    key = -2;
    check_status();
}

&lt;/script&gt;
&lt;/head&gt;
&lt;body onkeydown=keypress(event)&gt;
&lt;br/&gt;
&lt;input type="button" onClick="init()" value="play"&gt;
&lt;input type="button" onClick="halt()" value="pause"&gt;
&lt;p id="mine"&gt;&lt;/p&gt;
&lt;br&gt;&lt;h5 id="score"&gt;&lt;/h5&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
