public void pushGrid(double increment) {			
		// This method moves the grid upwards. If there is no row underneath
		// our grid, then we will make up a row to go underneath it. The row
		// will be added to the grid once it becomes active and at that time
		// we will also push all of the grid up by one unit.
		
		// Range: 0.00 - 1.00 (percent %)
		// Increment is essentially the speed or rate at which we push up all
		// the graphics for this new row and the grid.
		
		if (hasGridStatus("GARBAGE_CLEAR") || hasGridStatus("FREEZE")) {
			return;
		}
		
		int index = 0;
		int moves = (int)(BLOCK_WIDTH * increment);
		boolean push = true;
		
		while (push && index < moves) {
			for (Vector<Block> row : gridLayout) {
				for (Block b : row) {
					b.setGraphicLocation(b.getGraphicX(), b.getGraphicY() - 1);	// See if this matches the global ratio?
				}
			}
			for (Block b : newRow) {
				b.setGraphicLocation(b.getGraphicX(), b.getGraphicY() - 1);
				int graphicEnd = b.associatedGraphic.getY() + b.associatedGraphic.getHeight();
				int panelEnd = gridPanel.getY() + gridPanel.getHeight();
				if (graphicEnd <= panelEnd) {
					push = false;
				}
			}
			associatedCursor.image.offset(0, -1);
			index++;
			
			// Is this where we should see if the game 
			// should end if the grid gets too high?
		}
		
		if (!push) {
			advanceGrid();
		}
		
		graceTimer = 0;
		
	}