	FUNCTION StrMap, nfn, str, idx, delimitor=delimitor
;	---------------------------------------------------------------
;+							10-May-91
;	Name:
;		StrMap
;	Purpose:
;		Decode the input string 'str' and return the ith 'idx'
;		occurance of the item in the input string.
;	CALLING SEQUENCE:
;		req_str = StrMap(nfn, str, idx, [delimitor=delimitor])
;	Input:
;		nfn	number of items encoded in input string.
;		str	input string to decode
;		idx	item number (0 - n-1), note if idx = nfn
;			all items will be decoded and returned.
;	KeyWord:
;		delimitor	Default is ',', else caller defined.	
;	Returned:
;		requested string
;	History:
;		created 3-May-91 by GAL
;		updated for delimitor keyword 10-May-91.
;-
;	--------------------------------------------------------------
;	ON_ERROR, 2	;force a return to caller if error occurs

	IF (Keyword_set(delimitor) eq 0) THEN delimitor = ','
	
;	Find delimitor positions:
	delpos = intarr(nfn)
	delpos(0) = -1			;first pos is always zero

	i = 0				;start search positon

	FOR j= 1, nfn-1 DO BEGIN
	  delpos(j) = STRPOS(str,delimitor,i)
	  i = delpos(j) + 1		;search again 
	ENDFOR
;	Return requested string:
	CASE 1 OF
	  (idx eq nfn):	BEGIN		;return the full list
			  ret = STRARR(nfn)
			  FOR i= 0, nfn-1 DO BEGIN 	;do all
			    IF (i+1 lt nfn) THEN BEGIN 
			      len = delpos(i+1) - delpos(i) -1
			      ret(i) = STRMID(str, delpos(i)+1, len)
			    ENDIF ELSE BEGIN		;EQUAL
			      upper = STRLEN(str)-1
			      len = upper - delpos(i)
			      ret(i) = STRMID(str, delpos(i)+1, len)
			    ENDELSE
			  ENDFOR
			END
	  (idx+1 eq nfn): BEGIN		;ret just one item (last item)
	  		    upper = STRLEN(str)-1
	  		    len = upper - delpos(idx) 
			    ret = STRMID(str, delpos(idx)+1, len)
			  END
	  (idx+1 lt nfn): BEGIN
			    len = delpos(idx+1) - delpos(idx) -1
			    ret = STRMID(str, delpos(idx)+1, len)
			  END
	  ELSE: Print, '*** invalid item (idx) request in STRMAP ***'
	ENDCASE
	
	RETURN,  ret
	END
