#!/bin/sh

function web_browser()
{
echo "Hm... Can't find suitable Web browser (firefox, mozilla, konqueror, netscape, opera or links)"
echo "You can set variable NETEXE manually or send to <p_solntsev at altlinux dot org>"
echo "Which Web browser you want to be added"
}

# version presented by year_month_day
export VERSION=20090513
#   the location of the file 'check.def'
export CHECKDEF=/usr/share/platon/check.def 
export PLAHTM=/usr/share/doc/platon-$VERSION
export RUN_PLATON=/usr/lib/platon/platon
export PATH=$PATH:$RUN_PLATON

X_CHECK=`ps -C X -o pid=`

PARAM=""

if test `which povray >/dev/null 2>&1 ; echo $?` -eq 0 ; then 
    export POVEXE=`which povray`
else
    export POVEXE=$NULL
fi

if test `which rasmol >/dev/null 2>&1 ; echo $?` -eq 0 ; then 
    export RASEXE=`which rasmol`
else
    export RASEXE=$NULL
fi


if test -n $X_CHECK; then 

if test `which firefox >/dev/null 2>&1 ; echo $?` -eq 0; then 
    export NETEXE=`which firefox`
elif test `which mozilla >/dev/null 2>&1 ; echo $?` -eq 0; then 
    export NETEXE=`which mozilla`
    else
	if test `which konqueror >/dev/null 2>&1 ; echo $?` -eq 0; then 
	    export NETEXE=`which konqueror`
	    elif `which netscape >/dev/null 2>&1 ; echo $?` -eq 0; then
		export NETEXE=`which netscape`
		else
		if `which opera >/dev/null 2>&1 ; echo $?` -eq 0; then
		    export NETEXE=`which opera`
		    elif `which links >/dev/null 2>&1 ; echo $?` -eq 0; then 
			export NETEXE=`which links`
			else
			web_browser
		fi
	fi
fi
elif `which links >/dev/null 2>&1 ; echo $?` -eq 0; then
	export NETEXE=`which links`
else
web_browser
export PARAM="-o"
fi

if test `which render >/dev/null 2>&1 ; echo $?` -eq 0 ; then 
    export R3DEXE=`which render`
else
    export R3DEXE=$NULL
fi

if test `which quest >/dev/null 2>&1 ; echo $?` -eq 0 ; then 
    export QUESTEXE=`which quest`
else
    export QUESTEXE=$NULL
fi

function HelpPlaton() {
echo "usage: platon [option] [file]"
echo "PLATON is a versatile SHELX97 compatible multipurpose crystallographic tool."
echo ""
echo "Available options:"
echo " '--help' - This Help"
echo " '--documentation' - Documentation of platon (open browser)"
echo ""
echo " '-' - No data from file Read (Switch to I/O window)"
echo " '-a' - ORTEP/ADP [PLOT ADP]"
echo " '-b' - CSD-Search [CALC GEOM CSD]"
echo " '-c' - Calc Mode [CALC]"
echo " '-d' - DELABS [CALC DELABS]"
echo " '-e' - MULABS"
echo " '-f' - HFIX"
echo " '-g' - GenRes-filter [CALC GEOM SHELX]"
echo " '-h' - HKL-CALC [ASYM GENERATE]"
echo " '-i' - Patterson PLOT"
echo " '-j' - GenSPF-filter [CALC GEOM EUCLID]"
echo " '-k' - HELENA"
echo " '-l' - ASYM VIEW"
echo " '-m' - ADDSYM (MISSYM) [CALC ADDSYM]"
echo " '-n' - ADDSYM SHELX"
echo " '-o' - Menu Off"
echo " '-p' - PLUTON Mode"
echo " '-q' - SQUEEZE [CALC SQUEEZE]"
echo " '-r' - RENAME (RES)"
echo " '-s' - SYSTEM-S"
echo " '-t' - TABLE Mode [TABLE]"
echo " '-u' - Validation Mode [VALIDATION]"
echo " '-v' - SOLV Mode [CALC SOLV]"
echo " '-w' - Difference Map Plot"
echo " '-x' - Fo-Map PLOT"
echo " '-y' - SQUEEZE-Map PLOT"
echo " '-z' - WRITE IDENT"
echo " '-A' - PLATON/ANIS"
echo " '-C' - GENERATE CIF for current data set (e.g. .spf or .res)"
echo " '-F' - SILENT NQA SYSTEM-S PATH (FILTER)"
echo " '-I' - AUTOFIT 2 MOLECULES"
echo " '-K' - CALC KPI"
echo " '-L' - TWINROTMAT (INTERACTIVE)"
echo " '-M' - TWINROTMAT (FILTER MODE)"
echo " '-N' - 'ADDSYM EQUAL SHELX' MODE"
echo " '-O' - PLOT ADP (PostScript)"
echo " '-P' - Powder Pattern from Iobs"
echo " '-Q' - Powder Pattern from Icalc"
echo " '-R' - Auto Renumber and Write SHELX.res"
echo " '-S' - CIF2RES + FCF2HKL filter"
echo " '-T' - TwinRotMat"
echo " '-U' - CIF-VALIDATION (without VALIDATION DOC)"
echo " '-V' - FCF-VALIDATION (LAUE)"
echo " '-W' - FCF-VALIDATION (BIJVOET)"
echo " '-X' - Stripped SHELXS86 (Direct Methods Only) Mode"
echo " '-Y' - Native Structure Tidy (Parthe & Gelato) Mode"
}

function platon_head()
{
echo "::"
echo "::  PLATON has found following additional packages:  "
echo $QUESTEXE
echo $NETEXE
echo $RASEXE
echo $POVEXE
echo $R3DEXE
}

if [ $# == 0 -o $# == 3 ]; then 
    HelpPlaton
    exit
elif [ $# == 1 ]; then 
    if [ $1 == '--help' -o $1 == '--documentation' ]; then 
        HelpPlaton
	exit
    elif [ ! -r $1 ]; then 
	echo "Can't read $1 file"
	exit
    else
	platon_head
	$RUN_PLATON $1
    fi
else
    if [ $# == 2 ]; then 	
	if [ "$1" = "-" -o "$1" = "-a" -o "$1" = "-b" -o "$1" = "-c" -o "$1" = "-d" -o "$1" = "-e" -o "$1" = "-f" -o "$1" = "-g" -o "$1" = "-h" -o "$1" = "-i" -o "$1" = "-j" -o "$1" = "-k" -o "$1" = "-l" -o "$1" = "-m" -o "$1" = "-n" -o "$1" = "-o" -o "$1" = "-p" -o "$1" = "-q" -o "$1" = "-r" -o "$1" = "-s" -o "$1" = "-t" -o "$1" = "-u" -o "$1" = "-v" -o "$1" = "-w" -o "$1" = "-x" -o "$1" = "-y" -o "$1" = "-z" -o "$1" = "-A" -o "$1" = "-C" -o "$1" = "-F" -o "$1" = "-I" -o "$1" = "-K" -o "$1" = "-L" -o "$1" = "-M" -o "$1" = "-N" -o "$1" = "-O" -o "$1" = "-P" -o "$1" = "-Q" -o "$1" = "-R" -o "$1" = "-S" -o "$1" = "-T" -o "$1" = "-U" -o "$1" = "-V" -o "$1" = "-W" -o "$1" = "-X" -o "$1" = "-Y" ]; then 
	    PARAM="$PARAM $1"
	else
    	    echo 'Unrecognised parameter'
	    HelpPlaton
	    exit
	fi
	
	if [ ! -r $2 ]; then 
	    echo "Can't read $1 file"
	    exit
	else
	    platon_head
	    $RUN_PLATON $PARAM $2

	fi
    fi
fi
 
