
#include "box.ch"

Function V_menu(R1,C1,Frame,Prmpts,Pad,Bx_r1,Bx_c1,Bx_r2,Bx_c2,Color)
Local Repeat := len(Prmpts), oldcolor := setcolor()

Setcolor(Color)
@ Bx_r1,Bx_c1,Bx_r2,Bx_c2 Box iif(Upper(Frame) = "S",B_SINGLE,B_DOUBLE)
choice := menu_choice
For I := 1 to Repeat
   @ I+R1,C1 prompt Menu_pad(Prmpts[I],Pad)
Next
Menu To Choice
Setcolor(oldcolor)

Return(Choice)

#include "box.ch"

Function H_menu(R1,C1,Frame,Prmpts,Spacing,Bx_r1,Bx_c1,Bx_r2,Bx_c2,Color)
Local Repeat := Len(Prmpts), newcol := C1, oldcolor := Setcolor()

Setcolor(Color)
@ Bx_r1,Bx_c1,Bx_r2,Bx_c2 Box iif(Upper(Frame) = "S",B_SINGLE,B_DOUBLE)
choice := menu_choice
For I = 1 to Repeat
   @ R1,Newcol prompt prmpts[I]
   newcol := Col() + Spacing
Next
Menu To Choice
Setcolor(Oldcolor)

Return(Choice)

Function V_paint(R1,C1,Lines,Pause,Char,Repeat,Direct,Color)

Setcolor(Color)
For I = 1 To Lines
	For X = 1 To Pause
		@ R1,C1 SAY replicate(chr(char),repeat)
	Next
	R1 := iif(upper(direct) = "D",r1+1,r1-1)
Next

Return Nil

Function H_Paint(R1,C1,Lines,Pause,Char,Repeat,Direct,Color)

Setcolor(Color)
For I = 1 to Lines
   @ R1,C1,R1 + Repeat, C1 Box Chr(Char)
   For X = 1 To Pause
   Next
   R1 = IIF(Direct = "L",C1+1,C1-1)
Next

Return Nil





#include "box.ch"

Function Shad_box(R1,C1,R2,C2,Frame,Color)
Local Old_color := Setcolor()
        
Setcolor("N/N")
@ R1+1,C1+2 Clear To R2+1,C2+2
Setcolor(Color)
@ R1,C1 Clear To R2, C2
@ R1,C1,R2,C2 Box iif(Upper(Frame) = "S",B_SINGLE,B_DOUBLE)
Setcolor(Old_color)

Return Nil

#include "box.ch"

Function Multi_Box(r1,c1,r2,c2,Amount,Gap,Pause,Frame,Color,State)
Local I, X, Timer := Pause * 100
Local NwCl1 := int((C2-C1-Len(State[1]))/2), int((C2-C1-Len(State[2]))/2)

For I = 1 To Amount
   Setcolor(Color[I])
   @ R1,C1 Clear To R2,C2
   @ R1,C1,R2,C2 box iif(Upper(Frame) = "S",B_SINGLE,B_DOUBLE)
   @ Row(), C1 + NwCl1 Say State[1]
   @ Row()+1, C1 + NwCl2 Say State[2]
   For X = 1 To Timer
   Next
   r1 := r1 + Gap ;c1 := c1 + Gap ;r2 := r2 + Gap ;c2 := c2 + Gap
Next

Return Nil    

Function Acre_sqft(Acres)

sqfts := ltrim(str(round((acres*43560),2)))

return(sqfts)

Function Sqft_acre(sqfts)

acres := ltrim(str(round(div_zero(sqfts,43560),2)))

return(acres)

Function Cap_rate(percent, income)

result := div_zero(income,div_zero(percent,100))

return(result)

Function Div_zero(nr1, nr2)

result := iif(nr1 = 0 .or. nr2 = 0,0,nr1/nr2)

return(result)



Function Points(Loan,Point)

result :=  round((Loan*(Point*.01)),2) 

return(result)

Function Fraction(value)
Local x, y, percentage

if "/"$value
   x := val(ltrim(left(value,at("/", value)-1)))
   y := val(substr(value,at("/",value)+1))
   return(div_zero(div_zero(x,y),100)
else
   percentage := div_zero(val(value),100)
   return(percentage)
endif

FUNCTION Daily_Int(apr,balance)

amount := balance * div_zero(div_zero(apr,100),365)

return(amount)

FUNCTION Mortgage(int, prin, yrs)

I := int * .01 / 12
result := prin * I/(1 - (I + 1)^-(yrs * 12))

Return(result)

FUNCTION Wages(pay,hours,rate)

gross := iif(hours>40,(40*pay)+((hours-40)*pay*rate),pay*hours)

return(gross)

Function Mark_up(cost,percent)

retail := div_zero(cost,(1-(percent * .01)))

return(retail)

Function Nearest(value)

near := int(100 * value + .5)/100

return(near)

Function Square_yd(length, width)

sq_yd := div_zero((width*length),9)

return(sq_yd)






Function Board_ft(length,Width,Thick,Qty)

board := div_zero(((length*12)*width*thick*qty),(length*12))

return(board)

Function Kilo_hr(Watts,Hours)

kWh := div_zero((watt*hours),1000)

return(kWh)

Function Kilo_hp(Horse, Hours)

kHp := div_zero((horse*746*hours),1000)

return(kHp)

Function MMC_CD(Principle,Rate,Months)

result := ((rate*.01)*principle*months)/12

return(result)

Function Bonds(Face,Rate,Cost)

yield := (((rate*.01)*face)/cost)*100

return(yield)

Function Age(Birthdate)
Local Bdate := Ctod(Birthdate)

Cur_age := iif(Month(Bdate) < 1,0,(Date() - Bdate)/365.25)

Return (Cur_age)

Function Kilo_mile(Value,Convert)
Local Ki_mi := Mi_ki := 0.6213712

Result := iif(Upper(convert) = "M",Value * Ki_mi,Value * Mi_ki)

Return(result)

Function Ft_meters(Value,Convert)
Local Ft_mt := Mt_ft := 0.3048

Result := iif(Upper(Convert) = "F",Value * Ft_mt,Value / Mt_ft)

Return(Result)

Function Gal_lit(Value,Convert)
Local Gl_lt := Lt_gl := 3.785306

Result := iif(Upper(Convert) = "G",Value * Gl_lt,Value / Lt_gl)

Return(Result)



Function Kpl_mpg(Value,Convert)
Local KPL := MPG := 0.42515581

Result := iif(Upper(Convert) = "M",Value * KPL,Value / MPG)

Return(Result)

Function Kpc_psi(Value,Convert)
Local KPC := PSI := 2.9264019

Result := iff(Upper(Convert) = "P",Value * KPC,Value / PSI)

Return(Result)

Function Kg_lbs(Value,Convert)
Local KGS := LBS := 2.2046226

Result := iif(Upper(Convert) = "L",Value * KGS,Value / LBS)

Return(result)

Function Str_center(Str,Spc)

Cent:= IIF(Upper(Spc)="Y",Round((Len(str)/2),2),Round((Len(Alltrim(str))/2),2))

Return(Cent)

Function Rep_str(String,Char,Amount)
Local Pos := 1, Counter := 0, Newstr := string

For I = 1 To Len(String)
   IF At(Char,NewStr)#0 
      counter = counter+1
      newstr = substr(newstr,at(char,Newstr)+1)
      Counter := IIf(Substr(Newstr,1,1)#Char .and. Counter < Amount,0,counter)
   Else
      Exit
   Endif      
Next         

Return(iif(counter = Amount,.T.,.F.))

FUNCTION Ischarstr(String)
Local Start := 1, Newstr := String

For I = 1 To Len(String)
   Newstr := Substr(String,Start,1)
   If !Isalpha(New_string)
      Return(.F.)
   Endif
   Start := Start+1
Next

Return(.T.)






FUNCTION Isnumstr(String)
Local Start := 1

For I = 1 To Len(String)
   Newstr := Substr(String,Start,1)
   If Asc(Newstr) >= 48 .and. Asc(Newstr) <= 57
      Return(.T.)
   Endif
   Start := Start+1
Next

Return(.F.)

