public ChessViewPuzzle(final Activity activity) {
    super();
    _parent = (puzzle) activity;
    _view = new ChessViewBase(activity);

    _cr = activity.getContentResolver();

    _tvPuzzleText = (TextView) _parent.findViewById(R.id.TextViewPuzzleText);
    _imgTurn = (ImageView) _parent.findViewById(R.id.ImageTurn);

    _imgStatus = (ImageView) _parent.findViewById(R.id.ImageStatus);

    _cnt = 0;
    // _num = 500;
    getNumPuzzles();

    _seekBar = (SeekBar) _parent.findViewById(R.id.SeekBarPuzzle);
    if (_seekBar != null) {
      _seekBar.setOnSeekBarChangeListener(
          new OnSeekBarChangeListener() {

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
              if (fromUser) {
                _iPos = progress - 1;
                play();
              }
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
              // TODO Auto-generated method stub

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
              // TODO Auto-generated method stub

            }
          });

      _seekBar.setMax(_num);
    }

    _iPos = 0;

    OnClickListener ocl =
        new OnClickListener() {
          public void onClick(View arg0) {
            handleClick(_view.getIndexOfButton(arg0));
          }
        };
    _view.init(ocl);

    _butPuzzle = (Button) _parent.findViewById(R.id.ButtonPuzzle);

    _butPuzzle.setOnClickListener(
        new OnClickListener() {
          public void onClick(View arg0) {
            jumptoMove(_jni.getNumBoard());
            updateState();

            // if(_arrPGN.size() == m_game.getBoard().getNumBoard()-1)
            //   _butPuzzle.setText("Next");

          }
        });

    _butJump = (Button) _parent.findViewById(R.id.ButtonPuzzleJump);
    _butJump.setOnClickListener(
        new OnClickListener() {
          public void onClick(View arg0) {
            AlertDialog.Builder builder = new AlertDialog.Builder(_parent);
            builder.setTitle(_parent.getString(R.string.title_puzzle_jump));
            final EditText input = new EditText(_parent);
            input.setInputType(InputType.TYPE_CLASS_PHONE);
            builder.setView(input);
            builder.setPositiveButton(
                _parent.getString(R.string.button_ok),
                new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int whichButton) {
                    try {
                      int num = Integer.parseInt(input.getText().toString());

                      if (num > 0 && num <= _num) {
                        _iPos = num - 1;
                        play();
                        return;
                      }
                    } catch (Exception ex) {

                    }
                    _parent.doToast(_parent.getString(R.string.err_puzzle_jump));
                  }
                });

            AlertDialog alert = builder.create();
            alert.show();
          }
        });

    _butPrev = (ImageButton) _parent.findViewById(R.id.ButtonPuzzlePrevious);
    _butPrev.setOnClickListener(
        new OnClickListener() {
          public void onClick(View arg0) {
            if (_iPos > 1) _iPos -= 2;
            play();
          }
        });

    _butNext = (ImageButton) _parent.findViewById(R.id.ButtonPuzzleNext);
    _butNext.setOnClickListener(
        new OnClickListener() {
          public void onClick(View arg0) {
            play();
          }
        });

    _butHelp = (ImageButton) _parent.findViewById(R.id.ButtonPuzzleHelp);
    _butHelp.setOnClickListener(
        new OnClickListener() {
          public void onClick(View arg0) {
            Intent i = new Intent();
            i.setClass(_parent, HtmlActivity.class);
            i.putExtra(HtmlActivity.HELP_MODE, "help_puzzle");
            _parent.startActivity(i);
          }
        });
  }