proc list_predefined {proc toplev cur ent} {
      global item_line
  if {$proc == "create"} {
		set ebox_name item_create
	if  { $cur == 3} {
	       set name tpl_name
		   set hname "TPL FILE NAME"
       } else {
	   set name input_name
	   set hname "INPUT TYPE"
	     } 
  if {$cur == 3} {
	   set thispwd [exec pwd]
	   set dir "[getenv "NIS_DIRECTORY"]/adoc/toolsrc"
	   cd $dir
       foreach i [glob *.tpl] {   
         set i [split $i .]
		  lappend tmp2 [lindex $i 0]
		  }
       cd $thispwd
    } else {
	  set tmp2 "dsvlog emslog flat table tpl"
	   }
   } else {
		 set ebox_name options_load
	   if {$cur == 0} {
		 set hname "Report Name"
		 set name "rpt_name" 
         set x 1
		 while {$x < $item_line(dataset_index)} {
			 lappend tmp2 "\{[lindex $item_line(dataset_items,$x) 0]\}"
			 incr x
			}
	  } elseif { $cur == 1} {
	       set name tpl_name
		   set hname "TPL FILE NAME"
	       set thispwd [exec pwd]
	       set dir "[getenv "NIS_DIRECTORY"]/adoc/toolsrc"
	       cd $dir
           foreach i [glob *.tpl] {   
              set i [split $i .]
		      lappend tmp2 [lindex $i 0]
		         }
           cd $thispwd
       } elseif  {$cur == 3} {
	       set name input_name
	       set hname "INPUT TYPE"
	       set tmp2 "dsvlog emslog flat table tpl"
	     }
  }
	 lbox option -data [join $tmp2 ","]\
		 -header $hname -cols 50 -lines 20\
			 -ebox $ebox_name -fields $name 

} 
proc vtpl {fld fld1} {

	set rpt_name   [ebox_getval $fld  rpt_name]
	if {$rpt_name == "-separator"} {
		 return 1
		 }
	set dir [getenv "NIS_DIRECTORY"]
	set error [file exists $dir/adoc/toolsrc/$fld1.tpl]
	if {$error == 0} {
	   show_dialog .notpl "Invalid TPL"\
			"The TPL File Name $fld1.tpl Does Not Exists Please Choose Another"
		   return 0
	    }
   return 1
   
}
proc vinput {fld fld1} {
   set error 0 
   if {$fld1 == "dsvlog"}  {
	 set error 1 
	 } elseif {$fld1 == "emslog"} {
	 set error 1
	 } elseif {$fld1 == "flat"} {
	 set error 1
	 } elseif {$fld1 == "table"} {
	  set error 1
	  } elseif {$fld1 == "tpl"} {
	  set error 1
	  } elseif {$fld1 == ""} {
	  set error 1
	  }

  if {$error == 0} {
       show_dialog .noinput "Invalid Input"\
		 "The Input Option Is Invalid Use  List for Valid Types"
	   return 0
     } 
	   
		 
}
proc verify_update_or_add {} {
	global item_line
	set x 1
	set error  1
	while {$x < $item_line(dataset_index)} {
       set error [string first [lindex $item_line(dataset_items,$x) 0]\
			   $item_line(rpt_name)]
	   if {$error == 0} {
		 set tmp3 [lindex $item_line(dataset_items,$x) 1]
				 puts "match found ?????"
		 split $tmp3 ","
		 if {([lindex $tmp3 0] == $item_line(command))\
			   && ([lindex $tmp3 1] == $item_line(tpl_name))\
			   && ([lindex $tmp3 2] == $item_line(desc_name))\
			   && ([lindex $tmp3 3] == $item_line(input_name))} {
				 } else { 
				 set item_line(dataset_items,$x)\
         "\{[lindex $item_line(dataset_items,$x) 0]\} \{$item_line(command) $item_line(tpl_name) \{$item_line(desc_name)\} $item_line(input_name)\}"
		 puts "itemline ==> $item_line(dataset_items,$x)"
				 }
               break
             }
			 incr x
    }
	if {$error != 0} {
	   puts "match is not here"
	   set item_line(dataset_items,$x)\
	   "\{$item_line(rpt_name)\} \{$item_line(command) $item_line(tpl_name) \{$item_line(desc_name)\} $item_line(input_name)\}"
	   incr x
	   set item_line(dataset_index) $x
	   }

    puts "exiting verify routine"
}
proc set_options { proc ans} {
	global item_line
   set error 1
   set sep 0   
   if {$proc == "update"} {
     set rpt_name   [ebox_getval options_load  rpt_name]
     set desc_name  [ebox_getval options_load  desc_name]
     set tpl_name   [ebox_getval options_load  tpl_name]
     set input_name [ebox_getval options_load  input_name]
   } else {
     set menu_name  [ebox_getval item_create  menu_name]
     set dataset    [ebox_getval item_create  dataset]
     set rpt_name   [ebox_getval item_create  rpt_name]
     set desc_name  [ebox_getval item_create  desc_name]
     set tpl_name   [ebox_getval item_create  tpl_name]
     set input_name [ebox_getval item_create  input_name]
	 if {$menu_name == ""} {
		  set error 0
      } elseif {$dataset == ""} {
		  set error 0
		  }
     if {$error > 0} {
		 set item_line(dataset) $dataset
		 set item_line(adocmenu_items,$item_line(adocmenu_index))\
			 "\{$menu_name\} \{$dataset\}"
		 incr item_line(adocmenu_index) 
		 }
	 }

	   if { $rpt_name == ""} {
		   set error 0
		   } elseif {$desc_name == ""} {
		   set error 0
		   } elseif {$tpl_name == ""} {
		   set error 0
		   } 

   if {$error == 0} {
       show_dialog .nodb "InValid Fields"\
	      "When Adding A Report All Fields Must Have Data Except The\
		  Input Field Which Is Optional"
	
       return 0
   } else {

   set error [file exists $item_line(dataset)]
   set file  $item_line(dataset) 
   if {$proc == "update"} {
      if {$error == 0} {
    	set w .main
        set title Comments
	    set text "File $item_line(dataset)  Does Not \
		 Exists For Predefined Reports  Do You Want to Create It"
        set bitmap  " "
        set xx " "
        set button [dialog $w $title $text $bitmap $xx Cancel Create]

      if {$button == 0} {
	        return 1
	     } 
       }
      } else {
		 puts "in create mode "
		 set item_line(dataset_index) 1
		 }

	set nis_dir [getenv "NIS_DIRECTORY"]
	set hostname [exec hostname]
	set file "$nis_dir/config/adocmenu_options.$hostname" 
	set error [file exists $file]

	  if {$error == 0} { 
		   set file "$nis_dir/config/adocmenu_options"
		   } 

	set fp [open $file w]
    set x 1

	while {$x < $item_line(adocmenu_index)} {
	puts $fp  "\{[lindex $item_line(adocmenu_items,$x) 0]\} \{[lindex $item_line(adocmenu_items,$x) 1]\}"
		   incr x
      }

   close $fp
   set item_line(rpt_name) $rpt_name
   set item_line(command) run_predefined
   set item_line(tpl_name) $tpl_name
   set item_line(desc_name) $desc_name
   set item_line(input_name) $input_name

   verify_update_or_add

	 set fp [open $item_line(dataset) w]
     set x 1
	 while {$x < $item_line(dataset_index)} {
	    puts $fp "$item_line(dataset_items,$x)"
	   incr x
           }
	close $fp	
   return 1
  }
}
proc edit_menu_item {ans} {
	 global item_line
	 set menu_item [ebox_getval item_load  menu_item_name]
      set x 1

   while {$x < $item_line(adocmenu_index) } {
    set error [string first [lindex $item_line(adocmenu_items,$x) 0]\
					$menu_item]
   if {$error == 0} {
	  set error [string first [lindex $item_line(adocmenu_items,$x) 1]\
					$item_line(dataset)]
		  if {$error == 0} {
			  break
           } else {
			  set item_line(adocmenu_items,$x) "{$menu_item} {$dataset}"
			   break
			  }
         } 
		incr x
     }
	 set error [file exists $item_line(dataset)]
	 if {$error ==1} {
         set fp [open $item_line(dataset) r]
		 set i 1
		 while {[gets $fp linex] >= 0} {
            eval lappend item_line(dataset_items,$i) $linex
			incr i
			}
			set item_line(dataset_index) $i
        } else {
			set item_line(dataset_items,1) ""
			set item_line(dataset_index) 1
			}

	 set rpt_name ""
	 set tpl_name ""
	 set desc_name ""
	 set input_name ""

	   ebox options_load "Predefined Reports" "
		 {rpt_name {Report Name:} {} {$rpt_name} 
			  {list_predefined update} {}
		       {Enter The Menu Report Name} }
	     {tpl_name {TPL File Name:} {} {$tpl_name}
			  {list_predefined update} {vtpl options_load} 
				  {Enter the Report Layout Name} {} {} }
		 {desc_name {Description:} {} {$desc_name}
			  {list_predefined update} {}
	        {Enter A Description } {} {} }
	     {input_name {Input Type:} {} {$input_name}
			    {list_predefined update} {vinput options_load}
               {Enter The Input Type} {} {} }
         " -ok "set_options update"
   
}
proc item_select {lname} {
	global lbox_ans_$lname item_line
	set ans [set lbox_ans_$lname]
	set x 1
	while {$x <= $item_line(adocmenu_index)} { 
	   set error [string first [lindex $item_line(adocmenu_items,$x) 0] $ans]
       if {$error == 0} {
	           set ans  [lindex $item_line(adocmenu_items,$x) 0] 
	           set item_line(dataset)   [lindex $item_line(adocmenu_items,$x) 1]
		       break
              }
		     incr x
		    }

    set menu_item_name $ans 
     ebox item_load "Menu Item Name" "
	  {menu_item_name {Menu Item Name:} {} {$menu_item_name} {} {}
		 {Enter The Menu Item Name} }
      {dataset {Menu Item File Name:} {} {$item_line(dataset)} {} {}
		 {Enter The Item File Name} {} {} }
		" -ok edit_menu_item 



}
proc update_options {} {
	  global item_line
	  set nis_dir [getenv "NIS_DIRECTORY"]
	  set hostname [exec hostname]
	  set file $nis_dir/config/adocmenu_options
	  set error [file exists $file.$hostname]
	  if {$error == 0} {
		  set error [file exists $file]
		  } else {
			  set file $file.$hostname
           }
	  set fp [open $file r]
	  set i 1
	while {[gets $fp line1] >=0} {
		eval lappend item_line(adocmenu_items,$i) $line1
		lappend line2 [lindex $line1 0]
		incr i
		}
     close $fp
	 set item_line(adocmenu_index) $i
	 lbox menu_name -data [join $line2 ","]\
	   -header "Report Menu Items"  -cols 10 -lines 10\
		-ok "item_select menu_name" 

}
proc create_options {} {
	 global item_line
	 set menu_name ""
	 set dataset ""
     set rpt_name ""
	 set tpl_name ""
	 set desc_name ""
	 set input_name ""
	 set nis_dir [getenv "NIS_DIRECTORY"]
     set hostname [exec hostname]
	 set file $nis_dir/config/adocmenu_options
     set error [file exists $file.$hostname]
	 if {$error == 0} {
	   set error [file exists $file]
	 } else {
	  set file $file.$hostname
	 }
     set fp [open $file r]
	 set i 1
	 while {[gets $fp line1] >=0} {
		 eval lappend item_line(adocmenu_items,$i) $line1
		 lappend line2 [lindex $line1 0]
		 incr i
		 }
	  close $fp
      set item_line(adocmenu_index) $i



       ebox item_create "Menu Item Name" "
	 {menu_name {Menu Item Name:} {} {$menu_name} {} {}
	       {Enter The Menu Item Name} }
	 {dataset {Menu Item File Name:} {} {$dataset} {} {}
	       {Enter The Item File Name Full Path Needed} {} {} }
     {rpt_name {Report Name:} {} {$rpt_name} {} {}
	       {Enter The Menu Report Name} }
     {tpl_name {TPL File Name:} {} {$tpl_name} {list_predefined create} 
		   {vtpl item_create} {Enter the Report Layout Name} {} {} }
     {desc_name {Description:} {} {$desc_name} {} {}
	       {Enter A Description } {} {} }
     {input_name {Input Type:} {} {$input_name} {list_predefined create} 
		   {vinput item_create} {Enter The Input Type} {} {} }
               " -ok "set_options create"

	   
}
