/* Author: Ed Hodges
*/

//Game object
var t_blocks = {

    //current block attr
    block_name: "",
    block_angle: 1,
    block_num: 1,
    block_hor: 57,
    block_ver: -19,
    block_h_left: 0,
    block_h_right: 0,
    block_score: -1,

    //next block
    block_next: "",

    //game controls
    speed: 500,
    //speed = (0.5 * (11 - level))
    score: 0,
    level: 0,
    lines: 0,
    highscore: 0,
    time_monitor: 0,
    time_left: 0,
    active_block: false,
    game_over: false,
    game_live: false,

    //Start game
    start: function() {

        //clear play area
        $('#block_1').parent().remove();
        $('#platform').children().remove();

        //game values
        window.clearTimeout(t_blocks.time_monitor);
        t_blocks.speed = 500;
        t_blocks.score = 0;
        t_blocks.level = 0;
        t_blocks.lines = 0;
        t_blocks.time_monitor = 0;
        t_blocks.time_left = 0;
        t_blocks.active_block = false;
        t_blocks.game_live = true;
        t_blocks.game_over = false;

        t_blocks.checkCookie();

        t_blocks.updateScore();
        t_blocks.updatelevel();
        t_blocks.updateHighscore();

        //Block values 
        t_blocks.block_hor = 57;
        t_blocks.block_ver = -19;
        t_blocks.block_angle = 1;
        t_blocks.block_name = t_blocks.getBlock();
        t_blocks.block_num = 1;
        t_blocks.block_next = t_blocks.getBlock();
        t_blocks.block_score = -1;

        //clone from dummy block...
        $('#block_model').clone().prependTo('#play_area').css({
            'top': t_blocks.block_ver + "px",
            'left': t_blocks.block_hor + "px"
        }).removeAttr('id').find('#block_name').removeClass().addClass(t_blocks.block_name + "1").removeAttr('id').attr('id', "block_1");
        //... then add copies of prev block
        $('#block_1').clone().insertAfter('#block_1').removeClass().addClass(t_blocks.block_name + "2 invisible").attr('id', "block_2");
        $('#block_2').clone().insertAfter('#block_2').removeClass().addClass(t_blocks.block_name + "3 invisible").attr('id', "block_3");
        $('#block_3').clone().insertAfter('#block_3').removeClass().addClass(t_blocks.block_name + "4 invisible").attr('id', "block_4");

        t_blocks.setHorLimits();

        //display next piece
        t_blocks.displayNext();

        //start clock move
        t_blocks.time_monitor = 0;
        t_blocks.active_block = true;
        t_blocks.blockDown();

    },

    //Pause current game
    pause: function() {
        t_blocks.game_live = false;
        t_blocks.time_left = t_blocks.speed - t_blocks.time_monitor;
        window.clearTimeout(t_blocks.time_monitor);

    },

    //Resume paused game
    resume: function() {
        t_blocks.game_live = true;
        t_blocks.blockDown();
    },

    //Get block at random
    getBlock: function() {
        //Block types
        var blocks = ["t_J_", "t_L_", "t_T_", "t_Z_", "t_S_", "t_I_", "t_O_"];

        var rand_num = Math.floor(Math.random() * 7);

        return blocks[rand_num];
    },

    //Deploy next block
    deployBlock: function() {

        //deploy next block
        if (t_blocks.game_over == false) {
            //Control values 
            t_blocks.block_hor = 57;
            t_blocks.block_ver = -19;
            t_blocks.block_angle = 1;
            t_blocks.block_name = t_blocks.block_next;
            t_blocks.block_num = 1;
            t_blocks.block_next = t_blocks.getBlock();
            t_blocks.block_score = -1;

            //clone from dummy block...
            $('#block_model').clone().prependTo('#play_area').css({
                'top': t_blocks.block_ver + "px",
                'left': t_blocks.block_hor + "px"
            }).removeAttr('id').find('#block_name').removeClass().addClass(t_blocks.block_name + "1").removeAttr('id').attr('id', "block_1");
            //... then add copies of prev block
            $('#block_1').clone().insertAfter('#block_1').removeClass().addClass(t_blocks.block_name + "2 invisible").attr('id', "block_2");
            $('#block_2').clone().insertAfter('#block_2').removeClass().addClass(t_blocks.block_name + "3 invisible").attr('id', "block_3");
            $('#block_3').clone().insertAfter('#block_3').removeClass().addClass(t_blocks.block_name + "4 invisible").attr('id', "block_4");

            t_blocks.setHorLimits();

            //display next piece
            t_blocks.displayNext();

            //start clock move
            t_blocks.time_monitor = 0;
            t_blocks.active_block = true;
            t_blocks.blockDown();
        }
        //Game over
        else {
            if (t_blocks.highscore < t_blocks.score) {
                t_blocks.highscore = t_blocks.score;
                t_blocks.setCookie(t_blocks.score);

            }
            t_blocks.endGame(361, 0);
        }
    },

    //Display the next block
    displayNext: function() {

        $('#block_next').remove();

        $('#block_model').clone().prependTo('#play_next').css({
            'top': "0px",
            'left': "0px"
        }).removeAttr('id').find('#block_name').removeClass().addClass(t_blocks.block_next + "1").removeAttr('id').attr('id', "block_next");

        return true;
    },

    //End gane
    endGame: function(t, l) {
        //place blocks in a fast sequnce
        window.setTimeout(function() {
            //add blank box
            $('#platform').prepend("<div class='t_box_outter' style=\"top: " + t + "px; left: " + l + "px; z-index: 10;\"><div class='t_box_inner'></div></div>");

            //remove game box
            $('#' + t + '_' + l).remove();

            l += 19;
            //end of row reset
            if (l > 171) {
                t -= 19;
                l = 0;
            }
            //if top of play area not reached then loop round again
            if (t >= 0) {
                t_blocks.endGame(t, l);
            }
            else {
                //$('#btn_start').removeClass("invisible");
                $("#btn_pause").addClass("idle");
                $('#block_next').remove();
            }
        }, 3);
    },

    //Merge block into platform group
    mergeBlock: function() {

        var left, top = "";
        var left_pieces, top_pieces = new Array;
        var colour = "aaa";
        //alert($("#block_" + t_blocks.block_angle + " > .t_box_1").length);
        var left_edges = t_blocks.getBoxLeftEdges(t_blocks.block_angle);
        var top_edges = t_blocks.getBoxTopEdges(t_blocks.block_angle);

        //add boxes to platform
        $.each(left_edges, function(i, val) {
            left_pieces = val.split("px");
            left = parseInt(t_blocks.block_hor) + parseInt(left_pieces[0]);
            top_pieces = top_edges[i].split("px");
            top = parseInt(t_blocks.block_ver) + parseInt(top_pieces[0]);

            colour = $(".t_box_inner:first").css("border-top-color");

            $('#platform').prepend("<div id='" + top + "_" + left + "' class='t_box_outter' style=\"top: " + top + "px; left: " + left + "px;\"><div class='t_box_inner' style='border-color: " + colour + ";'></div></div>");

            //if top of play area reached then set game over
            if (top == 0) {
                t_blocks.game_over = true;
            }
        });
        //Update score label
        t_blocks.score += t_blocks.block_score;
        t_blocks.updateScore();

        //remove block
        $('#block_1').parent().remove();

        //check for complete rows
        t_blocks.detectRow();

        return true;
    },

    //Detect row in platform group
    detectRow: function() {

        var blank = false;
        var hole = false;
        var rows = new Array;
        var i = 0;

        //loop down play area from top of current block
        for (t = t_blocks.block_ver; t <= 361; t += 19) {
            for (l = 0; l <= 171; l += 19) {
                blank = t_blocks.checkPlatformBox(t, l);

                if (blank == false) {
                    hole = true;
                    l = 190;
                }
            }
            //complete row found
            if (hole == false) {
                rows[i] = t;
                i++;
            }

            blank = false;
            hole = false;
        }

        //remove complete roows
        if (rows.length > 0) {
            //calc points for completing rows
            switch (rows.length) {
            case 1:
                t_blocks.score += 40 * (t_blocks.level + 1);
                t_blocks.lines += 1;
                break;
            case 2:
                t_blocks.score += 100 * (t_blocks.level + 1);
                t_blocks.lines += 2;
                break;
            case 3:
                t_blocks.score += 300 * (t_blocks.level + 1);
                t_blocks.lines += 3;
                break;
            case 4:
                t_blocks.score += 1200 * (t_blocks.level + 1);
                t_blocks.lines += 4;
                break;
            }
            //update score details
            t_blocks.updateScore();

            //update level details
            t_blocks.updatelevel();

            t_blocks.removeRows(rows);

        }
        return true;
    },

    //Remove rows in platform group
    removeRows: function(to_remove) {

        var bottom_row = 0;
        var adjust = 0;
        var blocks = 0;
        var blank = false;

        //remove rows
        $.each(to_remove, function(i, t) {
            for (l = 0; l <= 171; l += 19) {
                $('#' + t + '_' + l).remove();
            }
            //record lowest row affected
            if (bottom_row < t) {
                bottom_row = t;
            }
        });

        //move upper rows down
        for (t = bottom_row; t >= 0; t -= 19) {
            for (l = 0; l <= 171; l += 19) {

                blank = t_blocks.checkPlatformBox(t, l);

                //no block found
                if (blank == false) {
                    blocks += 1;
                }
                //block found
                else {
                    $('#' + t + '_' + l).css('top', (adjust + t) + "px").attr('id', (adjust + t) + "_" + l);
                }
            }

            if (blocks == 10) {
                adjust += 19;
            }
            blocks = 0;
        }
        return true;
    },

    //Move block down automatically 
    blockDown: function() {

        var this_speed = t_blocks.speed;

        if (t_blocks.time_left > 0) {
            this_speed = t_blocks.time_left;
            t_blocks.time_left = 0;
        }

        if (t_blocks.active_block == true) {
            t_blocks.time_monitor = window.setTimeout(function() {

                var new_top = t_blocks.block_ver + 19;

                var left_edges = t_blocks.getBoxLeftEdges(t_blocks.block_angle);
                var top_edges = t_blocks.getBoxTopEdges(t_blocks.block_angle);

                var overlap = t_blocks.boxOverlap(left_edges, top_edges, 0, 19);

                //if space for block to move down
                if (overlap == true) {
                    //update block attributes
                    t_blocks.block_ver = new_top;
                    $("#block_" + t_blocks.block_num).parent().css('top', t_blocks.block_ver + "px");

                    t_blocks.block_score += 1;
                    overlap = t_blocks.boxOverlap(left_edges, top_edges, 0, 0);
                }

                //Block at bottom of play area
                if (overlap == false) {

                    t_blocks.mergeBlock();
                    //1 full clock cycle before new block is deployed
                    t_blocks.active_block = false;
                    t_blocks.blockDown();

                }
                //continue moving block down
                else {
                    t_blocks.blockDown();
                }
            }, this_speed);
        }
        else {
            //wait a full loop to delpoy new block
            t_blocks.time_monitor = window.setTimeout(function() {
                t_blocks.deployBlock();
            }, this_speed);
        }
    },

    //Rotate current block clockwise
    clockwise: function() {
        if (t_blocks.active_block == false) {
            return false;
        }

        var orientation = t_blocks.block_angle;
        var lock = false;

        //increment angle of block
        if (orientation == 1) {
            orientation = 4;
        }
        else {
            orientation -= 1;
        }

        //get left edges of boxes
        var edges = t_blocks.getBoxLeftEdges(orientation);
        var top_edges = t_blocks.getBoxTopEdges(orientation);
        var cur_edges = t_blocks.getBoxLeftEdges(t_blocks.block_angle);

        //check new orientation won't overlap play area
        if ((t_blocks.block_name == "t_I_" && (t_blocks.block_hor - 19) == parseInt(t_blocks.block_h_left)) || t_blocks.block_hor == parseInt(t_blocks.block_h_left) || t_blocks.block_hor == parseInt(t_blocks.block_h_right)) {

            var left_edge = 0;
            var right_edge = 0;

            //attempted position
            left_edge = parseInt(t_blocks.getFurthestLeft(edges));
            right_edge = parseInt(t_blocks.getFurthestRight(edges));

            //current position
            cur_left_edge = parseInt(t_blocks.getFurthestLeft(cur_edges));
            cur_right_edge = parseInt(t_blocks.getFurthestRight(cur_edges));

            //check right hand border
            if (t_blocks.block_hor == parseInt(t_blocks.block_h_right) && parseInt(right_edge) > parseInt(cur_right_edge)) {

                lock = true;
            }

            //check left hand border
            if (((t_blocks.block_name == "t_I_" && (t_blocks.block_hor - 19) == parseInt(t_blocks.block_h_left)) || t_blocks.block_hor == parseInt(t_blocks.block_h_left)) && parseInt(left_edge) < parseInt(cur_left_edge)) {

                lock = true;
            }
        }

        //Check for box overlap
        var overlap = t_blocks.boxOverlap(edges, top_edges, 0, 0);
        if (overlap == false) {
            lock = true;
        }

        //if lock is true then don't rotate
        if (lock == false) {
            t_blocks.block_angle = orientation;

            //
            $("#block_" + t_blocks.block_num).addClass("invisible");
            $("#block_" + t_blocks.block_angle).removeClass("invisible");

            t_blocks.block_num = t_blocks.block_angle;

            //adjust movement limits
            t_blocks.setHorLimits();
        }
    },

    //Rotate current block counter-clockwise
    counterclockwise: function() {
        if (t_blocks.active_block == false) {
            return false;
        }

        var orientation = t_blocks.block_angle;
        var lock = false;

        //increment angle of block
        if (orientation == 4) {
            orientation = 1;
        }
        else {
            orientation += 1;
        }

        //get left edges of boxes
        var edges = t_blocks.getBoxLeftEdges(orientation);
        var top_edges = t_blocks.getBoxTopEdges(orientation);
        var cur_edges = t_blocks.getBoxLeftEdges(t_blocks.block_angle);

        //check new orientation won't overlap play area
        if ((t_blocks.block_name == "t_I_" && (t_blocks.block_hor - 19) == parseInt(t_blocks.block_h_left)) || t_blocks.block_hor == parseInt(t_blocks.block_h_left) || t_blocks.block_hor == parseInt(t_blocks.block_h_right)) {

            var left_edge = 19;
            var right_edge = 0;

            left_edge = parseInt(t_blocks.getFurthestLeft(edges));
            cur_left_edge = parseInt(t_blocks.getFurthestLeft(cur_edges));
            right_edge = parseInt(t_blocks.getFurthestRight(edges));

            if (t_blocks.block_hor == parseInt(t_blocks.block_h_right) && t_blocks.block_h_right > 19 && right_edge > 0) {

                lock = true;
            }

            if (((t_blocks.block_name == "t_I_" && (t_blocks.block_hor - 19) == parseInt(t_blocks.block_h_left)) || t_blocks.block_hor == parseInt(t_blocks.block_h_left)) && parseInt(left_edge) < parseInt(cur_left_edge)) {

                lock = true;
            }
        }

        //Check for box overlap
        var overlap = t_blocks.boxOverlap(edges, top_edges, 0, 0);
        if (overlap == false) {
            lock = true;
        }

        //if lock is true then don't rotate
        if (lock == false) {
            t_blocks.block_angle = orientation;

            //update block attributes
            $("#block_" + t_blocks.block_num).addClass("invisible");
            $("#block_" + t_blocks.block_angle).removeClass("invisible");

            t_blocks.block_num = t_blocks.block_angle;

            //adjust movement limits
            t_blocks.setHorLimits();
        }
    },

    //Move block left
    moveLeft: function() {
        if (t_blocks.active_block == false) {
            return false;
        }

        //get left edges of boxes
        var edges = t_blocks.getBoxLeftEdges(t_blocks.block_angle);
        var top_edges = t_blocks.getBoxTopEdges(t_blocks.block_angle);
        var offset = -19;
        var lock = false;

        //Check for box overlap
        var overlap = t_blocks.boxOverlap(edges, top_edges, offset, 0);
        if (overlap == false) {
            lock = true;
        }

        //can't exceed play area
        if (t_blocks.block_hor != parseInt(t_blocks.block_h_left) && lock == false) {

            var new_left = parseInt(t_blocks.block_hor) - 19;

            //update block attributes
            t_blocks.block_hor = new_left;
            $("#block_" + t_blocks.block_num).parent().css('left', t_blocks.block_hor + "px");
        }
    },

    //Move block right
    moveRight: function() {
        if (t_blocks.active_block == false) {
            return false;
        }

        //get left edges of boxes
        var edges = t_blocks.getBoxLeftEdges(t_blocks.block_angle);
        var top_edges = t_blocks.getBoxTopEdges(t_blocks.block_angle);
        var offset = 19;
        var lock = false;

        //Check for box overlap
        var overlap = t_blocks.boxOverlap(edges, top_edges, offset, 0);
        if (overlap == false) {
            lock = true;
        }

        //can't exceed play area
        if (parseInt(t_blocks.block_hor) != parseInt(t_blocks.block_h_right) && lock == false) {

            var new_right = parseInt(t_blocks.block_hor) + 19;

            //update block attributes
            t_blocks.block_hor = new_right;
            $("#block_" + t_blocks.block_num).parent().css('left', new_right + "px");
        }
    },

    //Move block down
    moveDown: function() {
        if (t_blocks.active_block == false) {
            return false;
        }

        var new_top = t_blocks.block_ver + 19;

        var left_edges = t_blocks.getBoxLeftEdges(t_blocks.block_angle);
        var top_edges = t_blocks.getBoxTopEdges(t_blocks.block_angle);

        var overlap = t_blocks.boxOverlap(left_edges, top_edges, 0, 19);

        if (overlap == true) {
            //update block attributes
            t_blocks.block_ver = new_top;
            $("#block_" + t_blocks.block_num).parent().css('top', t_blocks.block_ver + "px");

            t_blocks.block_score += 1;
        }

        return true;
    },

    //Hard fall
    hardFall: function() {
        if (t_blocks.active_block == false) {
            return false;
        }

        var left_edges = t_blocks.getBoxLeftEdges(t_blocks.block_angle);
        var top_edges = "";
        var next_top = t_blocks.block_ver;
        var new_top = t_blocks.block_ver;
        var overlap = true;
        var offset = 19;

        while (overlap == true) {

            next_top += 19;
            top_edges = t_blocks.getBoxTopEdges(t_blocks.block_angle);

            overlap = t_blocks.boxOverlap(left_edges, top_edges, 0, offset);

            if (overlap == true) {
                t_blocks.block_score += 1;
                offset += 19;
                new_top = next_top;
            }
        }

        t_blocks.block_ver = new_top;
        $("#block_" + t_blocks.block_num).parent().css('top', t_blocks.block_ver + "px");

        window.clearTimeout(t_blocks.time_monitor);
        t_blocks.mergeBlock();
        //1 full clock cycle before new block is deployed
        t_blocks.active_block = false;
        t_blocks.blockDown();
    },

    //Check for box overlap or bottom of play area
    boxOverlap: function(left_edges, top_edges, offset_l, offset_t) {
        if (t_blocks.active_block == false) {
            return false;
        }

        var overlap = true;
        var pos = false;
        var plat = false;
        var left = "";
        var left_pieces = new Array;
        var top = "";
        var top_pieces = new Array;

        //loop boxes
        $.each(left_edges, function(i, val) {

            left_pieces = val.split("px");
            left = offset_l + parseInt(t_blocks.block_hor) + parseInt(left_pieces[0]);
            top_pieces = top_edges[i].split("px");
            top = offset_t + parseInt(t_blocks.block_ver) + parseInt(top_pieces[0]);

            pos = t_blocks.checkPlatformBox(top, left);

            if (top >= 380) {
                plat = true;
            }

            if (pos == true || plat == true) {
                overlap = false;
                return false;
            }
        });

        return overlap;
    },

    //Get the left edges of boxes
    getBoxLeftEdges: function(i) {
        //get left edges of boxes
        var edges = new Array();
        edges[0] = $("#block_" + i + " > .t_box_1").css("left");
        edges[1] = $("#block_" + i + " > .t_box_2").css("left");
        edges[2] = $("#block_" + i + " > .t_box_3").css("left");
        edges[3] = $("#block_" + i + " > .t_box_4").css("left");

        return edges;
    },

    //Get the top edges of boxes
    getBoxTopEdges: function(i) {
        //get left edges of boxes
        var edges = new Array();
        edges[0] = $("#block_" + i + " > .t_box_1").css("top");
        edges[1] = $("#block_" + i + " > .t_box_2").css("top");
        edges[2] = $("#block_" + i + " > .t_box_3").css("top");
        edges[3] = $("#block_" + i + " > .t_box_4").css("top");

        return edges;
    },

    //Get furthest left position
    getFurthestLeft: function(edges) {

        var left_edge = 38;
        var item = "";

        //loop through to find far left edge
        $.each(edges, function(i, val) {

            item = val.split("px");

            //get far left edge
            if (parseInt(item[0]) < left_edge) {
                left_edge = parseInt(item[0]);
            }
        });

        return left_edge;
    },

    //Get furthest right position
    getFurthestRight: function(edges) {

        var right_edge = 0;
        var item = "";

        //loop through to find far left edge
        $.each(edges, function(i, val) {

            item = val.split("px");

            //get far left edge
            if (parseInt(item[0]) > right_edge) {
                right_edge = parseInt(item[0]);
            }
        });

        return right_edge;
    },

    //Check for platform box
    checkPlatformBox: function(v, h) {
        if ($('#' + v + '_' + h).length > 0) {
            return true;
        }
        else {
            return false;
        }
    },

    //Update level details
    updatelevel: function(i) {

        //calc level
        if (t_blocks.lines <= 0) {
            t_blocks.level = 1;
        }
        else if ((t_blocks.lines >= 1) && (t_blocks.lines <= 90)) {
            t_blocks.level = 1 + Math.floor(((t_blocks.lines - 1) / 10));
        }
        else if (t_blocks.lines >= 91) {
            t_blocks.level = 10;
        }

        //update speed
        t_blocks.speed = (50 * (11 - t_blocks.level));

        //update label
        $("#level_label > span").text(t_blocks.level);
    },

    //Update score panel
    updateScore: function(i) {

        $("#score_label > span").text(t_blocks.score);
        $("#lines_label > span").text(t_blocks.lines);
    },

    //Move block horizontal limits
    setHorLimits: function() {

        var edges = t_blocks.getBoxLeftEdges(t_blocks.block_num);

        var left_edge = 38;
        var right_edge = 0;

        left_edge = parseInt(t_blocks.getFurthestLeft(edges));
        right_edge = parseInt(t_blocks.getFurthestRight(edges));

        //Set left hand limit
        if (left_edge == 0) {
            t_blocks.block_h_left = 0;
        }
        else if (left_edge == 19) {
            t_blocks.block_h_left = -19;
        }
        else {
            t_blocks.block_h_left = -38;
        }

        //Set right hand limit
        if (right_edge == 57) {
            t_blocks.block_h_right = 114;
        }
        else {
            t_blocks.block_h_right = 133;
        }
    },

    //Update highscore label
    updateHighscore: function() {
        //alert(t_blocks.highscore + " : " + $("#high_label > span").text());
        if (t_blocks.highscore > $("#high_label > span").text()) {
            $("#high_label > span").text(t_blocks.highscore);
        }
    },

    //Set cookie
    setCookie: function(value) {

        var exdate = new Date();
        exdate.setDate(exdate.getDate() + 365);
        var c_value = escape(value) + "; expires=" + exdate.toUTCString();
        document.cookie = "highscore=" + c_value;

    },

    //Get cookie
    getCookie: function() {
        var i, x, y, ARRcookies = document.cookie.split(";");
        for (i = 0; i < ARRcookies.length; i++) {
            x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
            y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
            x = x.replace(/^\s+|\s+$/g, "");

            if (x == "highscore") {

                return unescape(y);
            }
        }
    },

    //Check cookie/update highscore
    checkCookie: function() {

        t_blocks.highscore = t_blocks.getCookie();

        if (t_blocks.highscore != undefined && t_blocks.highscore != null && t_blocks.highscore != "") {
            t_blocks.updateHighscore();
        }
        else {
            //set new highscore cookie
            t_blocks.setCookie(0);
            t_blocks.highscore = 0;
        }
    }
};

//initiate interface settings
t_blocks.checkCookie();
//t_blocks.endGame(361,0);
//start game listener
$('#btn_start').click(function() {
    $("#btn_pause").removeClass('idle');
    $("#play_next > span").remove();
    $("#platform > span").remove();

    t_blocks.start();

    return false;
});
//pause game listener
$('#btn_pause').toggle(function() {
    if ($(this).hasClass('idle') == false) {
        $(this).text("Resume").attr("title", "Resume This Game");
        t_blocks.pause();
    }
    return false;
}, function() {
    if ($(this).hasClass('idle') == false) {
        $(this).text("Pause").attr("title", "Pause This Game");
        t_blocks.resume();
    }
    return false;
});

//click controls
$('#ctrls > li').click(function() {
    if (t_blocks.game_live == true) {
        //Space bar
        if ($(this).attr('id') == "ctrl_hard") {
            //if (event.which == 90 || event.which == 77) {
            t_blocks.hardFall();
            return false;
        }
        //Left button
        else if ($(this).attr('id') == "ctrl_left") {
            //else if (event.which == 65 || event.which == 74) {
            t_blocks.moveLeft();
            return false;
        }
        //Up button
        else if ($(this).attr('id') == "ctrl_rot") {
            //else if (event.which == 87 || event.which == 73) {
            t_blocks.clockwise();
            return false;
        }
        //Right button
        else if ($(this).attr('id') == "ctrl_rig") {
            //else if (event.which == 68 || event.which == 76) {
            t_blocks.moveRight();
            return false;
        }
        //Down button
        else if ($(this).attr('id') == "ctrl_down") {
            //else if (event.which == 83 || event.which == 75) {
            //t_blocks.counterclockwise();
            t_blocks.moveDown();
            return false;
        }
    }
});
//key controls
$(document).keydown(function(event) {
    if (t_blocks.game_live == true) {
        //Space bar
        if (event.which == 32) {
            //if (event.which == 90 || event.which == 77) {
            t_blocks.hardFall();
            return false;
        }
        //Left button
        else if (event.which == 37) {
            //else if (event.which == 65 || event.which == 74) {
            t_blocks.moveLeft();
            return false;
        }
        //Up button
        else if (event.which == 38) {
            //else if (event.which == 87 || event.which == 73) {
            t_blocks.clockwise();
            return false;
        }
        //Right button
        else if (event.which == 39) {
            //else if (event.which == 68 || event.which == 76) {
            t_blocks.moveRight();
            return false;
        }
        //Down button
        else if (event.which == 40) {
            //else if (event.which == 83 || event.which == 75) {
            //t_blocks.counterclockwise();
            t_blocks.moveDown();
            return false;
        }
    }
});
