#!/bin/ksh

PATH=/usr/bin:${PATH}:/opt/NSCPcom:/usr/sfw/bin
COMMAND=`basename $0`
DEFAULT_BROWSER_LIST="netscape mozilla sun_netscape netscape6"

function UsageExit
{
    print -u2 "Usage: $COMMAND [-b browser] [-o browser_opts] url-string"
    exit 1
}

function ErrorExit
{
    typeset status=$1 ; shift
    print -u2 "$COMMAND:" $@
    exit $status
}

function FindAndRunBrowser
{
    typeset altbrowser="$1"
    typeset bList="$BROWSER $DEFAULT_BROWSER_LIST"
    typeset browser bpath

    if [[ ! -z "$altbrowser" ]] then
	bpath=$(whence $altbrowser) || {
	    ErrorExit 2 "web browser command \`$altbrowser' not found in PATH."
	}
	browser=$altbrowser
    else
	for browser in $bList
	do
	    if bpath=$(whence $browser) ; then
		break
	    fi
	done
	if [[ -z "$bpath" ]] then
	    ErrorExit 2 "no web browser found in PATH; searched for: $bList"
	fi
    fi
    bbase=`basename $browser`
    case $browser in
	mozilla)
	    remtype=mozilla
	    NetscapeRemote
	    break;;
        netscape)
	    VERSION=$(netscape -version | grep Mozilla)
	    if [[  -z $VERSION ]] then
		remtype=netscape4
	    else
		remtype=netscape
            fi
            NetscapeRemote
	    break;;
        sun_netscape);;
        netscape6)
	    remtype=netscape
	    NetscapeRemote
	    break;;
        netscape4*|netscape-4*)
            remtype=netscape4
 	    NetscapeRemote
            break;;
        opera|opera-5*)
            remtype=opera
	    NetscapeRemote
            break;;
        *)
	    URL="$1"
            URL=$(print -- "$URL" | sed -e 's/ /%20/g')
            $browser $BROWSER_OPTS $URL &
            break;;
    esac
}

function NetscapeRemote
{

    case $remtype in
        netscape4)         # Netscape 4.x
            typeset err="not running on display"
            if [[ -z "$URL" ]] then
                remurl="new"
            else
                remurl="OpenURL(${URL},new-window)"
            fi
            if $bbase $BROWSER_OPTS -noraise -remote "$remurl" 2>&1 | grep "$err" > /dev/null ; then
            $bbase $BROWSER_OPTS ${URL:+"$URL"} &
            fi
            break;;
        netscape|mozilla)          # Netsape 6.x, Netscape 7.x, sun_netscape, 
            typeset remurl err="not running on display"
       	    if [[ ! -z "$URL" ]] then
	        remurl="-noraise -remote OpenURL(${URL},new-window)"
	    fi
	    if $remtype $BROWSER_OPTS $remurl 2>&1 | grep "$err" > /dev/null ; then
		$remtype $BROWSER_OPTS ${URL:+"$URL"} &
	    fi
            break;;
        opera)                          # Opera 5
            $bbase $BROWSER_OPTS -newwindow "$URL" &
            break;;
        esac
}

# main
{
    typeset BROWSER BROWSER_OPTS URL
    typeset uFlag=0

    while getopts ub:o: flag
    do
	case $flag in
	  u) uFlag=1;;
	  b) BROWSER="$OPTARG";;
	  o) BROWSER_OPTS="$OPTARG";;
	  *) UsageExit;;
	esac
    done
    shift $OPTIND-1

    if (( $# > 1 )) then
	UsageExit
    fi

    FindAndRunBrowser 
    sleep 60
    exit 0
}
