#! /bin/bash -f
##
## "@(#) $Id: ferosShowWebPage,v 1.1 2005/12/16 00:23:11 jpritcha Exp $"

usage() {
  printf "\
Usage: ferosShowWebPage [-h|v] <URL> [-l <lock-file>] [-w <wait-file>] [-P <profile>]

e.g.   ferosShowWebPage file:///data/E2P2OPS/FEROS-QC/html/QC/DHC/index-225kHz,1,low,1x1.html -l /data/E2P2OPS/FEROS-QC/html/QC/DHC/.ferosQCDRSinit.lock -P FEROS-QC
"
  exit ${exstat:-0}
}

# Would like to use firefox, but profiles don't work properly with ping
fwb="mozilla"
bto=30
lto=600
wto=600

while [ -n "$1" ]; do
  case $1 in
  -h)        usage;;
  -v)        vbose="-v"; shift;;
  -l)        lockFile="$2"; shift; shift;;
  -w)        waitFile="$2"; shift; shift;;
  -P)        Profile="-P $2"; shift; shift;;
  --bto)     bto=$2; shift; shift;;
  --lto)     lto=$2; shift; shift;;
  --wto)     wto=$2; shift; shift;;
  --help)    usage;;
  *)         URL="$1"; shift;;
  esac
done

if [ -z "${URL}" ]; then
  exstat=1
  usage
fi

[ ! -z "${FEROSwebBrowser}" ] && fwb="${FEROSwebBrowser}"

## Wait for lockFile to disappear...
ito=`date +%s`
cto=0
if [ ! -z "${lockFile}" ]; then
  (( cto = `date +%s` - ito ))
  [ ! -z $vbose ] && echo "Waiting till lockfile $lockFile disappears..."
  while [ -e $lockFile ] && [ $cto -lt $lto ]; do
    sleep 1
    (( cto = `date +%s` - ito ))
  done
fi
if [ $cto -ge $lto ]; then
  echo "Error!!! Locfile $lockFile still exists after more than $lto secs."
  exit 1
fi

## Wait till waitFile appears...
if [ ! -z "${waitFile}" ]; then
  (( cto = `date +%s` - ito ))
  [ ! -z $vbose ] && echo "Waiting till waitfile $waitFile appears..."
  while [ ! -e $waitFile ] && [ $cto -lt $wto ]; do
    sleep 1
    (( cto = `date +%s` - ito ))
  done
fi
if [ $cto -ge $wto ]; then
  echo "Error!!! Wait for file $waitFile still does not exist after more than $wto secs."
  exit 1
fi

[ ! -z "${vbose}" ] && echo "$fwb $Profile -remote \"ping()\""
$fwb $Profile -remote "ping()"
if [ $? -ne 0 ]; then
  [ ! -z "${vbose}" ] && echo "$fwb $Profile ${URL} &"
  $fwb $Profile ${URL} &
  startBrowser=1
fi

ito=`date +%s`
[ ! -z "${vbose}" ] && echo "$fwb $Profile -remote \"ping()\""
$fwb $Profile -remote "ping()"
(( cto = `date +%s` - ito ))
while [ $? -ne 0 ] && [ $cto -lt $bto ]; do
  sleep 1;
  [ ! -z "${vbose}" ] && echo "$fwb $Profile -remote \"ping()\""
  $fwb $Profile -remote "ping()"
  (( cto = `date +%s` - ito ))
done

if [ $cto -ge $bto ]; then
  echo "Error!!! $fwb could not be started within $bto secs."
  exit 1
fi

[ ! -z "${startBrowser}" ] && exit

## Mozilla should now be running...

[ ! -z "${vbose}" ] && echo "$fwb $Profile -remote \"openFile(${URL}${nw})\""
$fwb $Profile -remote "openFile(${URL},new-tab)"
