#!/bin/sh
# set -x

LC_NUMERIC=en_US.ISO8859-1
export LC_NUMERIC

files="None"
while [ x"$1" != x ]; do
    case $1 in
	-file)
            files="$2"
	    shift
	    shift
	    continue;;
	*)  
            break;;
    esac
done

if [ x"$1" = xgnuplot ]; then

  if [ x`which gnuplot 2>/dev/null` = x ]; then
    echo "ERROR: gnuplot not available"
    exit 1
  fi
  AWK '
  BEGIN{
    mode=1
    xlabel="unknown"
    ylabel="unknown"
    prev="noprev"
    ind=0
    plots=0
    counts = 0
    initparam=0
  }
  mode==1{
    if( initparam == 0 ){
      if( files == "None" ){
        files=""
        dofile="true"
      }
      else{
        dofile="false"
      }
      initparam=1
    }
    if( dofile == "true" && $1 == "#" && $2 == "data" && $3 == "file:" ){
      if( files != "" ) files = files ","
      files = files $4
    }
    else if( $1 == "#" && $2 == "radii:" ){
      xlabel = $3
    }
    else if( $1 == "#" && $2 == "surf_bri:" ){
      ylabel = $3
    }
    else if( $1 == "----" ){
      head = sprintf("set title \"funcnts(%s)\"\n", files)
      head = head sprintf("set xlabel \" radius(%s)\"\n", xlabel)
      head = head sprintf("set ylabel \"surf_bri(%s)\"\n", ylabel)
      head = head "plot "
      mode = 2
      next
    }
  }
  mode==2{
    if( NF == 12 ){
      if( $11 == prev ){
	ind += 1
      }
      else{
	ind = 1
        plots += 1
        i = (plots - 1) * 4 + 2
        if( plots > 1 )
          head = head ", "
        head = head sprintf("\"-\" using 1:%d:%d:%d:%d title \"profile #%d\" with boxerrorbars", i, i+1, i+2, i+3, plots)
      }
      if( data[ind] == "" )
        data[ind] = sprintf("%s", ($9+$10)/2)
      data[ind] = data[ind] sprintf(" %s %s %s %s", $7, $7-$8, $7+$8, $10-$9)
      counts += $7
      prev = $11
    }
    else{
      mode = 3
    }
  }
  END{
    if( counts == 0 ){
      exit 0
    }
    print head
    for(i=1; i<=plots; i++){
      for(j=1; j<=ind; j++){
        print data[j]
      }
      print "e"
    }    
  }
  ' files="$files" | gnuplot -persist - 1>/dev/null 2>&1
  exit 0

elif [ x"$1" = xds9 ]; then

  AWK '
  BEGIN{
    mode=1
    xlabel="unknown"
    ylabel="unknown"
    initparam=0
  }
  mode==1{
    if( initparam == 0 ){
      if( files == "None" ){
        files=""
        dofile="true"
      }
      else{
        dofile="false"
      }
      initparam=1
    }
    if( dofile == "true" && $1 == "#" && $2 == "data" && $3 == "file:" ){
      if( files != "" ) files = files ","
      files = files $4
    }
    else if( $1 == "#" && $2 == "radii:" ){
      xlabel = $3
    }
    else if( $1 == "#" && $2 == "surf_bri:" ){
      ylabel = $3
    }
    else if( $1 == "----" ){
      ds9header="'"${DS9_PLOT_HEADER}"'"
      if( ds9header != "" ) {
	  printf "%s 3\n", ds9header
      }
      else{
          printf "funcnts(%s) avg_radius(%s) surf_bri(%s) 3\n", files, xlabel, ylabel
      }
      mode = 2
      next
    }
  }
  mode==2{
    if( NF == 12 ){
      if( $9 != "NA" ){
        print ($9+$10)/2, $7, $8
      }
      else{
         print "ERROR: annulus, circle, panda regions only"
	 exit 1
#        print $7, "non-annulus-region", "specified!"
#        mode = 3
      }
    }
    else{
      mode = 3
    }
  }
  ' files="$files"
  exit 0
else

  echo "ERROR: unknown argument: " $1
  echo "funcnts -r ... | funcnts.plot [ds9|gnuplot]"
  exit 1

fi
