;+
; NAME:
;     	gnindx
; PURPOSE:
;	Determines the indices of the visibilities necessary for the summations
;	required by the L1 selfcal scheme outlined by in VLA scientific memo 136
;
; OUTPUTS:
;    	lgain, lvis the antenna gains and selfcal corrected visibilities
; ROUTINES CALLED:
;	gnindx
; COMMENTS:
; SIDE EFFECTS:
; RESTRICTIONS:
; MODIFICATION HISTORY:
;     Written 15-Aug-2008 by Samuel D. Tun (SDT)

pro gnindx,k,na,anames,bnames,bindex,vislin,vishin

     if (k eq 0) then begin
       hinam=strarr(na-1-k) & hiin=intarr(na-1-k)
       for p=k+1,na-1 do hinam[p-(k+1)]=anames[k]+anames[p]
       for p=0,(n_elements(hiin)-1) do hiin[p]=bindex[where(bnames eq hinam[p])]
       vishin=abs(hiin)-1
       vislin=[-1]
       goto,elfin
     endif else begin
       if (k eq na-1) then begin
         lownam=strarr(k) & lowin=intarr(k)
         for p=0,k-1 do lownam[p]=anames[p]+anames[k]
         for p=0,(n_elements(lowin)-1) do lowin[p]=bindex[where(bnames eq lownam[p])]
         vislin=abs(lowin)-1
         vishin=[-1]
         goto,elfin
       endif else begin
         lownam=strarr(k) & hinam=strarr(na-1-k)
         lowin=intarr(k) & hiin=intarr(na-1-k)
         for p=0,k-1 do lownam[p]=anames[p]+anames[k]
         for p=0,(n_elements(lowin)-1) do lowin[p]=bindex[where(bnames eq lownam[p])]
         vislin=abs(lowin)-1
         for p=k+1,na-1 do hinam[p-(k+1)]=anames[k]+anames[p]
         for p=0,(n_elements(hiin)-1) do hiin[p]=bindex[where(bnames eq hinam[p])]
         vishin=abs(hiin)-1
       endelse
     endelse
elfin:

return
end