;+
;FUNCTION:	crossp2(a,b)
;INPUT:	
;	a,b:	real(n,3)	vector arrays dimension (n,3) or (3)
;PURPOSE:
;	performs cross product on arrays
;CREATED BY:
;	J.McFadden	97-3-14
;Modifications
;	J.McFadden	05-2-7 changed first if to "if ndimen(a) eq 1 and ndimen(b) eq 1" 
;-
function crossp2,a,b,trans=trans

c=0
if n_params() ne 2 then begin
	dprint, ' Wrong format, Use: crossp2(a,b)'
	return,c
endif

if ndimen(a) eq 1 and ndimen(b) eq 1 then begin
	return,crossp(a,b)
endif

if keyword_set(trans) then begin
  if ndimen(a) eq 2 and ndimen(b) eq 2 then begin
    c=a
    c[0,*]=a[1,*]*b[2,*]-a[2,*]*b[1,*]
    c[1,*]=a[2,*]*b[0,*]-a[0,*]*b[2,*]
    c[2,*]=a[0,*]*b[1,*]-a[1,*]*b[0,*]
    return,c
  endif 
  message,'improper format
endif

if ndimen(a) eq 2 and ndimen(b) eq 2 then begin
	c=a
	c[*,0]=a[*,1]*b[*,2]-a[*,2]*b[*,1]
	c[*,1]=a[*,2]*b[*,0]-a[*,0]*b[*,2]
	c[*,2]=a[*,0]*b[*,1]-a[*,1]*b[*,0]
endif else if ndimen(a) eq 1 and ndimen(b) eq 2 then begin
	c=b
	c[*,0]=a[1]*b[*,2]-a[2]*b[*,1]
	c[*,1]=a[2]*b[*,0]-a[0]*b[*,2]
	c[*,2]=a[0]*b[*,1]-a[1]*b[*,0]
endif else if ndimen(a) eq 2 and ndimen(b) eq 1 then begin
	c=a
	c[*,0]=a[*,1]*b[2]-a[*,2]*b[1]
	c[*,1]=a[*,2]*b[0]-a[*,0]*b[2]
	c[*,2]=a[*,0]*b[1]-a[*,1]*b[0]
endif

return,c
end
