;+
;PROCEDURE:  get_ylimits, datastr, limits, trg
;PURPOSE:
;   Calculates appropriate ylimits for a string array of "TPLOT" variables
;   to be plotted in the same panel.
;INPUT:  datastr	string array of TPLOT variables
;	 limits		limits structure to be modified (usually the limits
;			structure of the TPLOT variable whose data
;			field is a string array of TPLOT variables)
;	 trg		time range over which to calculate the limits;
;			double[2]
;CREATED BY:	Peter Schroeder
;LAST MODIFIED:	%W% %E%
;-
pro get_ylimits,datastr,limits,trg

compile_opt idl2

miny = 0.
maxy = 0.
str_element,limits,'min_value',min_value
str_element,limits,'max_value',max_value
str_element,limits,'ylog',ytype

for i=0,n_elements(datastr)-1 do begin
	get_data,datastr[i],data=data,dtype=dtype
	if (dtype eq 1) and keyword_set(data) then begin
		good = where(finite(data.x),count)
		if count eq 0 then message,'No valid X data'
	
		ind = where(data.x[good] ge trg[0] and data.x[good] le trg[1],count)
		if count eq 0 then ind = indgen(n_elements(data.x)) else ind = good[ind]

		ndx = ndimen(data.x)
	
		if ndx eq 1 then $
			yrange = minmax(data.y[ind,*],posi=ytype, max=max_value,min=min_value) $
		else $
			yrange = minmax(data.y[ind],posi=ytype,	max=max_value,min=min_value)
		if miny ne maxy then begin
			if yrange[0] lt miny then miny = yrange[0]
			if yrange[1] gt maxy then maxy = yrange[1]
		endif else begin
			miny = min([miny, yrange[0]])
			maxy = max([maxy, yrange[1]])
		endelse
	endif
endfor

str_element,limits,'yrange',[miny, maxy],/add

return
end
