/*
	predict (after ivtobit)

*!  VERSION 1.1.0  28jun2006

*/

VERSION 9.0

INCLUDE _std_medium  // ** set POSTINIT to match
INCLUDE _ht280
INCLUDE header

HELP hlp1, view("help ivtobit postestimation")
RESET res1

DEFINE awid   50
DEFINE asep  +55
DEFINE bwid   40
DEFINE bsep  +45
DEFINE uwid  110
DEFINE usep +115
DEFINE vwid   55
DEFINE vsep  +60

PROGRAM twostep_check
BEGIN
	if main.ed_twostep.iseq("twostep") {
		// hide options that are not allowed
		call main.rb_stdf.hide
		call main.rb_pr.hide
		call main.en_pr_a.hide
		call main.tx_pr.hide
		call main.en_pr_b.hide
		call main.tx_pr2.hide
		call main.rb_e.hide
		call main.en_e_a.hide
		call main.tx_e.hide
		call main.en_e_b.hide
		call main.tx_e2.hide
		call main.rb_ystar.hide
		call main.en_ystar_a.hide
		call main.tx_ystar.hide
		call main.en_ystar_b.hide
		call main.tx_ystar2.hide
		call main.rb_score.hide
		call main.gb_opts.setposition . . . 70
	}
	if ! main.ed_twostep.iseq("twostep") {
		// hide options that are not allowed
		call main.rb_stdf.show
		call main.rb_pr.show
		call main.en_pr_a.show
		call main.tx_pr.show
		call main.en_pr_b.show
		call main.tx_pr2.show
		call main.rb_e.show
		call main.en_e_a.show
		call main.tx_e.show
		call main.en_e_b.show
		call main.tx_e2.show
		call main.rb_ystar.show
		call main.en_ystar_a.show
		call main.tx_ystar.show
		call main.en_ystar_b.show
		call main.tx_ystar2.show
		call main.rb_score.show
		call main.gb_opts.setposition . . . 190
	}
END

DIALOG main, label("predict - Prediction after estimation") tabtitle("Main")
BEGIN
  EDIT     ed_twostep 0 0 0 0, default(e(method)) nomemory
  INCLUDE  _p_gentype

  GROUPBOX gb_opts           _lft      _ls       _iwd      _ht16,	/*
		*/ label("Produce:")
  RADIO    rb_xb             _ilft     _ss       _ibwd     ., first	/*
		*/ option(xb)						/*
		*/ clickon("script all_off")				/*
		*/ label("Linear prediction")
  RADIO    rb_stdp           @         _ss       @         .,		/*
		*/ option(stdp)						/*
		*/ clickon("script all_off")				/*
		*/ label("Standard error of the linear prediction")
  RADIO    rb_stdf           @         _ss       @         .,		/*
		*/ option(stdf)						/*
		*/ clickon("script all_off")				/*
		*/ label("Standard error of the forecast")

  RADIO    rb_pr             @         _ms       awid      .,		/*
		*/ option(NONE)  /* handled another way */		/*
		*/ clickon("script pr_on")				/*
		*/ label("Pr(y|")
  EDIT     en_pr_a           asep      @         _en7wd    .,		/*
		*/ numonly						/*
		*/ label("Pr() lower limit")
  TEXT     tx_pr             _en7sep   @         bwid      .,		/*
		*/ center label("< y <")
  EDIT     en_pr_b           bsep      @         _en7wd    .,		/*
		*/ numonly						/*
		*/ label("Pr() upper limit")
  TEXT     tx_pr2            _en7sep   @         bwid      ., label(")")

  RADIO    rb_e              _ilft     _ms       awid      .,		/*
		*/ option(NONE)  /* handled another way */		/*
		*/ clickon("script e_on")				/*
		*/ label("E(y|")
  EDIT     en_e_a            asep      @         _en7wd    .,		/*
		*/ numonly						/*
		*/ label("E() lower limit")
  TEXT     tx_e              _en7sep   @         bwid      .,		/*
		*/ center label("< y <")
  EDIT     en_e_b            bsep      @         _en7wd    .,		/*
		*/ numonly						/*
		*/ label("E() upper limit")
  TEXT     tx_e2             _en7sep   @         bwid      ., label(")")

  RADIO    rb_ystar          _ilft     _ms       uwid      .,		/*
		*/ option(NONE)  /* handled another way */		/*
		*/ clickon("script ystar_on")				/*
		*/ label("E(y*), y* = max(")
  EDIT     en_ystar_a        usep      @         _en7wd    .,		/*
		*/ numonly						/*
		*/ label("E(y*) lower limit")
  TEXT     tx_ystar          _en7sep   @         vwid      .,		/*
		*/ center label(", min(y,")
  EDIT     en_ystar_b        vsep      @         _en7wd    .,		/*
		*/ numonly						/*
		*/ label("E(y*) upper limit")
  TEXT     tx_ystar2         _en7sep   @         bwid      ., label("))")
  RADIO    rb_score          _ilft     _ms       _ibwd     ., last	/*
		*/ option(scores)					/*
		*/ onclickon(script main_scores_on)			/*
		*/ label("Equation-level scores")

  INCLUDE _svy_predict_note
END

SCRIPT PREINIT
BEGIN
	create STRING prefix_name
	prefix_name.setstring e(prefix)
	main.ed_twostep.hide
END

SCRIPT POSTINIT
BEGIN
	script _p_gentype_setMedium
	main.tx_temp.hide
	main.tx_svy_note.hide
	program twostep_check
	program svy_check
END

PROGRAM svy_check
BEGIN
	if prefix_name.equals("svy") {
		call main.tx_svy_note.show
		call main.rb_stdf.disable
	}
END

INCLUDE _p_gentype_sc
INCLUDE ifin

SCRIPT main_scores_on
BEGIN
	script all_off
	script _p_gentype_multiple
END

SCRIPT all_off
BEGIN
  script pr_off
  script e_off
  script ystar_off
  script _p_gentype_single
END

SCRIPT pr_on
BEGIN
  script e_off
  script ystar_off
  main.en_pr_a.enable
  main.en_pr_b.enable
  script _p_gentype_single
END

SCRIPT pr_off
BEGIN
  main.en_pr_a.disable
  main.en_pr_b.disable
END

SCRIPT e_on
BEGIN
  script pr_off
  script ystar_off
  main.en_e_a.enable
  main.en_e_b.enable
  script _p_gentype_single
END

SCRIPT e_off
BEGIN
  main.en_e_a.disable
  main.en_e_b.disable
END

SCRIPT ystar_on
BEGIN
  script pr_off
  script e_off
  main.en_ystar_a.enable
  main.en_ystar_b.enable
  script _p_gentype_single
END

SCRIPT ystar_off
BEGIN
  main.en_ystar_a.disable
  main.en_ystar_b.disable
END

INCLUDE _type_list_fd

PROGRAM command
BEGIN
	put "predict "
	put " " /program _p_gentype_output
	INCLUDE _ifin_pr
	beginoptions
		option radio(main rb_xb rb_stdp rb_stdf rb_pr ///
			rb_e rb_ystar rb_score)
	endoptions
	INCLUDE _pr_pr
	INCLUDE _e_pr
	INCLUDE _ystar_pr
END
