Index: gli/branches/rtl-gli/gli.sh
===================================================================
--- gli/branches/rtl-gli/gli.sh	(revision 18295)
+++ gli/branches/rtl-gli/gli.sh	(revision 18351)
@@ -1,26 +1,101 @@
 #!/bin/sh
+
+# Function that, when given gsdlpath as parameter, will return the
+# version of greenstone that is to run (2 or 3). If things are not,
+# this program will exit here.
+get_version() {
+    # first parameter is value of gsdlpath
+    if [ -f "${1}/gs3-setup.sh" ]; then
+    return 3
+    elif [ -f "${1}/setup.bash" ]; then
+    return 2
+    else
+    echo "Error: can't determine which Greenstone version is being run."
+    exit 1
+    fi
+}
+
+# Function that is passed the following paramters (in order):
+# - the gsdlpath (GS3 home, GS2 home or gs2build for GS3), 
+# - the version of greenstone that's running, and 
+# - the language GLI is set to
+# and checks the installation. 
+# If things are not right, this program will exit here.
+check_installation() {
+# Check that the Greenstone installation looks OK
+    if [ "$3" = "es" ]; then
+    echo "Revisando GSDL$2: $1"
+    elif [ "$3" = "fr" ]; then
+    echo "Vérification de GSDL$2: $1"
+    elif [ "$3" = "ru" ]; then
+    echo "ðÒÏ×ÅÒËÁ GSDL$2: $1"
+    else
+    echo "Checking GSDL$2: $1"
+    fi
+    # even if we are only checking for gs2build (gsdl2path), we still 
+    # need the file setup.bash to exist in the following condition:
+    if [ ! -f "${1}/gs3-setup.sh" -a ! -f "${1}/setup.bash" ] ; then
+    echo
+    if [ "$3" = "es" ]; then
+        echo "No se pudo encontrar la instalación de Greenstone $2 o está incompleta."
+        echo "Trate de reinstalar Greenstone $2 y a continuación ejecute nuevamente"
+        echo "este guión."
+    elif [ "$3" = "fr" ]; then
+        echo "L'installation de Greenstone $2 est introuvable ou incomplète."
+        echo "Essayez de réinstaller Greenstone $2 et exécutez ce script à nouveau."
+    elif [ "$3" = "ru" ]; then
+        echo "éÎÓÔÁÌÌÑÃÉÑ Greenstone $_version ÎÅ ÂÙÌÁ ÎÁÊÄÅÎÁ ÉÌÉ ÏÎÁ ÎÅÐÏÌÎÁ."
+        echo "ðÏÐÒÏÂÕÊÔÅ ÐÏ×ÔÏÒÎÏ ÕÓÔÁÎÏ×ÉÔØ Greenstone $2, Á ÚÁÔÅÍ ××ÅÓÔÉ ÜÔÏÔ ÓËÒÉÐÔ ÓÎÏ×Á."
+    else
+        echo "The Greenstone $2 installation could not be found, or is incomplete."
+        echo "Try reinstalling Greenstone $2 then running this script again."
+    fi
+    exit 1
+    fi
+}
+
 glilang=en
 
+if [ "x$PROGNAME" = "x" ] ; then
+  if [ "$glilang" = "es" ]; then
+    PROGNAME="Biblioteca Digital Greenstone"
+  elif [ "$glilang" = "fr" ]; then
+    PROGNAME="Bibliothécaire Greenstone"
+  elif [ "$glilang" = "ru" ]; then
+    PROGNAME="ÉÎÔÅÒÆÅÊÓ Greenstone"
+  else
+    PROGNAME="Greenstone Librarian Interface"
+  fi
+fi
+
+if [ "x$PROGABBR" = "x" ] ; then
+    PROGABBR="GLI"
+fi
+
+if [ "x$PROGNAME_EN" = "x" ] ; then
+    PROGNAME_EN="Greenstone Librarian Interface"
+fi
+
 echo
 if [ "$glilang" = "es" ]; then
-    echo "Interfaz de la Biblioteca Digital Greenstone (Greenstone Librarian Interface - GLI)"
+    echo "Interfaz de la $PROGNAME ($PROGNAME_EN - $PROGABBR)"
     echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato"
-    echo "La Interfaz de la Biblioteca Digital Greenstone NO INCLUYE ABSOLUTAMENTE NINGUNA GARANTÍA."
+    echo "La Interfaz de la $PROGNAME NO INCLUYE ABSOLUTAMENTE NINGUNA GARANTÍA."
     echo "Para mayor información vea los términos de la licencia en LICENSE.txt"
     echo "Este es un software abierto, por lo que lo invitamos a que lo distribuya de forma gratuita"
 elif [ "$glilang" = "fr" ]; then
-    echo "Interface du Bibliothécaire Greenstone (Greenstone Librarian Interface - GLI)"
+    echo "Interface du $PROGNAME ($PROGNAME_EN - $PROGABBR)"
     echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato"
-    echo "GLI est fourni sans AUCUNE GARANTIE; pour des détails, voir LICENSE.txt"
+    echo "$PROGABBR est fourni sans AUCUNE GARANTIE; pour des détails, voir LICENSE.txt"
     echo "Ceci est un logiciel libre, et vous êtes invité à le redistribuer"
 elif [ "$glilang" = "ru" ]; then
-    echo "âÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone (Greenstone Librarian Interface - GLI)"
+    echo "âÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME ($PROGNAME_EN - $PROGABBR)"
     echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato"
     echo "âéç ÎÅ ÄÁÅÔ áâóïìàôîï îéëáëéè çáòáîôéê; ÄÅÔÁÌÉ ÓÍ. × ÔÅËÓÔÅ LICENSE.TXT"
     echo "üÔÏ - Ó×ÏÂÏÄÎÏ ÒÁÓÐÒÏÓÔÒÁÎÑÅÍÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ É ÷Ù ÍÏÖÅÔÅ ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÅÇÏ"
 else
-    echo "Greenstone Librarian Interface (GLI)"
+    echo "$PROGNAME ($PROGABBR)"
     echo "Copyright (C) 2006, New Zealand Digital Library Project, University Of Waikato"
-    echo "GLI comes with ABSOLUTELY NO WARRANTY; for details see LICENSE.txt"
+    echo "$PROGABBR comes with ABSOLUTELY NO WARRANTY; for details see LICENSE.txt"
     echo "This is free software, and you are welcome to redistribute it"
 fi
@@ -35,9 +110,9 @@
         echo "Este guión deberá ejecutarse desde el directorio en el que reside."
     elif [ "$glilang" = "fr" ]; then
-	echo "Ce script doit être exécuté à partir du répertoire dans lequel il se trouve."
+    echo "Ce script doit être exécuté à partir du répertoire dans lequel il se trouve."
     elif [ "$glilang" = "ru" ]; then
-	echo "üÔÏÔ ÓËÒÉÐÔ ÄÏÌÖÅÎ ÂÙÔØ ×ÚÑÔ ÉÚ ÄÉÒÅËÔÏÒÉÉ, × ËÏÔÏÒÏÊ ÏÎ ÒÁÓÐÏÌÏÖÅÎ"
-    else
-	echo "This script must be run from the directory in which it resides."
+    echo "üÔÏÔ ÓËÒÉÐÔ ÄÏÌÖÅÎ ÂÙÔØ ×ÚÑÔ ÉÚ ÄÉÒÅËÔÏÒÉÉ, × ËÏÔÏÒÏÊ ÏÎ ÒÁÓÐÏÌÏÖÅÎ"
+    else
+    echo "This script must be run from the directory in which it resides."
     fi
     exit 1
@@ -46,54 +121,114 @@
 
 ##  ---- Determine GSDLHOME ----
+## gsdlpath can be either Greenstone 3 or Greenstone 2
 gsdlpath=
-
 # Some users may set the above line manually
-if [ "x$gsdlpath" = "x" ]; then
+
+
+# This variable is set automatically:
+_version=
+if [ "x$gsdlpath" != "x" ]; then
+    get_version $gsdlpath
+    _version=$?
+# otherwise $gsdlpath is not yet set
+else
     # Check the environment variable first
+    # Check whether environment variables for both GS2 and GS3 are set
+    # and if so, warn the user that we have defaulted to GS3
+    if [ "x$GSDLHOME" != "x" -a "x$GSDL3SRCHOME" != "x" ]; then
+        # _version not set, but both env vars set, so default to 3
+    _version=3
+    gsdlpath=$GSDL3SRCHOME
+    echo "Both Greenstone 2 and Greenstone 3 environments are set." 
+    echo "It is assumed you want to run Greenstone 3."
+    echo "If you want to run Greenstone 2, please unset the"
+    echo "environment variable GSDL3SRCHOME before running GLI."
+    echo ""
+    elif [ "x$GSDL3SRCHOME" != "x" ]; then
+    echo "Only gsdl3srchome set"
+    gsdlpath=$GSDL3SRCHOME
+    _version=3
+    echo "$gsdlpath"
+    elif [ "x$GSDLHOME" != "x" ]; then
+    gsdlpath=$GSDLHOME
+    _version=2
+    # If it is not set, assume that the GLI is installed as a subdirectory of Greenstone
+    else
+    gsdlpath=`(cd .. && pwd)`
+    # Still need to find what version we are running:
+    # GS3 main directory contains file gs3-setup.sh, GS2 only setup.bash
+    get_version $gsdlpath
+    _version=$?
+    fi
+fi
+
+echo "Greenstone version found: $_version"
+
+# Check that the main Greenstone installation for the version we're running looks OK
+check_installation $gsdlpath $_version $glilang
+
+
+# Need to source the correct setup file depending on whether we are running
+# gs3 or gs2
+# If we're running version GS2
+if [ "$_version" -eq 2 ]; then
+    # Setup Greenstone 2, unless it has already been done
+    if [ "x$GSDLHOME" = "x" ]; then
+    cd "$gsdlpath"
+    . ./setup.bash
+    cd "$thisdir"
+    fi
+# else, if we're running GS3
+elif [ "$_version" -eq 3 ]; then
+    # Setup Greenstone 3, unless it has already been done
+    if [ "x$GSDL3HOME" = "x" -o "x$GSDL3SRCHOME" = "x" ]; then
+    cd "$gsdlpath"
+    . ./gs3-setup.sh
+    cd "$thisdir"
+    fi
+    
+    ## if Greenstone version 3 is running, we want to set gsdl2path
+    ##  ---- Determine GSDLHOME ----
+    ## may be already set, or manually entered here.
+    gsdl2path=
+    
+    # Some users may set the above line manually
+    if [ "x$gsdl2path" = "x" ]; then
+        # Check the environment variable first
     if [ "x$GSDLHOME" != "x" ]; then
-	gsdlpath=$GSDLHOME
-
-    # If it is not set, assume that the GLI is installed as a subdirectory of Greenstone
-    else
-	gsdlpath=`(cd .. && pwd)`
-    fi
-fi
-
-# Check that the Greenstone installation looks OK
-if [ "$glilang" = "es" ]; then
-    echo "Revisando GSDL: $gsdlpath"
-elif [ "$glilang" = "fr" ]; then
-    echo "Vérification de GSDL: $gsdlpath"
-elif [ "$glilang" = "ru" ]; then
-    echo "ðÒÏ×ÅÒËÁ GSDL: $gsdlpath"
-else
-    echo "Checking GSDL: $gsdlpath"
-fi
-if [ ! -f "${gsdlpath}/setup.bash" ] ; then
-    echo
-    if [ "$glilang" = "es" ]; then
-	echo "No se pudo encontrar la instalación de Greenstone o está incompleta."
-        echo "Trate de reinstalar Greenstone y a continuación ejecute nuevamente"
-	echo "este guión."
-    elif [ "$glilang" = "fr" ]; then
-	echo "L'installation de Greenstone est introuvable ou incomplète."
-	echo "Essayez de réinstaller Greenstone et exécutez ce script à nouveau."
-    elif [ "$glilang" = "ru" ]; then
-	echo "éÎÓÔÁÌÌÑÃÉÑ Greenstone ÎÅ ÂÙÌÁ ÎÁÊÄÅÎÁ ÉÌÉ ÏÎÁ ÎÅÐÏÌÎÁ."
-	echo "ðÏÐÒÏÂÕÊÔÅ ÐÏ×ÔÏÒÎÏ ÕÓÔÁÎÏ×ÉÔØ Greenstone, Á ÚÁÔÅÍ ××ÅÓÔÉ ÜÔÏÔ ÓËÒÉÐÔ ÓÎÏ×Á."
-    else
-	echo "The Greenstone installation could not be found, or is incomplete."
-	echo "Try reinstalling Greenstone then running this script again."
-    fi
-    exit 1
-fi
-
-# Setup Greenstone, unless it has already been done
-if [ "x$GSDLHOME" = "x" ]; then
-    cd "$gsdlpath"
-    . setup.bash
+        echo "GSDLHOME environment variable is set to $GSDLHOME."
+        echo "Will use this to find build scripts."
+        gsdl2path=$GSDLHOME
+        # If it is not set, assume that the gs2build subdirectory of Greenstone 3 exists
+    else
+        gsdl2path=$GSDL3SRCHOME/gs2build
+    fi
+    fi
+    # Check that Greenstone 3's Greenstone 2 stuff looks OK (in gs2build)
+    check_installation $gsdl2path "" $glilang
+  
+    # Setup Greenstone 3's gs2build, unless it has already been done
+    if [ "x$GSDLHOME" = "x" ]; then
+    cd "$gsdl2path"
+    . ./setup.bash
     cd "$thisdir"
-fi
-
+    fi
+
+else 
+    echo "Greenstone version unknown."    
+    exit 1
+fi
+
+echo
+if [ "x$GSDL3SRCHOME" != "x" ]; then
+    echo "GSDL3SRCHOME is: $GSDL3SRCHOME"
+fi
+if [ "x$GSDL3HOME" != "x" ]; then
+    echo "GSDL3HOME is: $GSDL3HOME"
+fi
+if [ "x$GSDLHOME" != "x" ]; then
+    echo "GSDLHOME is: $GSDLHOME"
+fi
+echo
 
 ##  ---- Check Perl exists ----
@@ -107,86 +242,131 @@
 
 # Check that a Perl executable has been found
-if [ "$glilang" = "es" ]; then
-    echo "Revisando Perl: $perlpath"
-elif [ "$glilang" = "fr" ]; then
-    echo "Vérification de Perl: $perlpath"
-elif [ "$glilang" = "ru" ]; then
-    echo "ðÒÏ×ÅÒËÁ Perl: $perlpath"
-else
-    echo "Checking Perl: $perlpath"
-fi
+echo "Perl:"
 if [ ! -x "$perlpath" ] ; then
     echo
     if [ "$glilang" = "es" ]; then
-	echo "La Interfaz de la Biblioteca Digital Greenstone requiere Perl para "
-	echo "poder operar, pero éste no aparece en su sistema. Por favor asegúrese "
-	echo "de que Perl está instalado y se encuentra en su ruta de búsqueda. A "
-	echo "continuación ejecute nuevamente este guión."
+    echo "La Interfaz de la $PROGNAME requiere Perl para "
+    echo "poder operar, pero éste no aparece en su sistema. Por favor asegúrese "
+    echo "de que Perl está instalado y se encuentra en su ruta de búsqueda. A "
+    echo "continuación ejecute nuevamente este guión."
     elif [ "$glilang" = "fr" ]; then
-	echo "Greenstone Librarian Interface nécessite perl pour son fonctionnement,"
-	echo "mais perl n'a pas pu être détecté dans votre système. Veuillez vous "
-	echo "assurer que perl est installé et est spécifié dans votre chemin de "
-	echo "recherche, puis redémarrez ce script."
+    echo "$PROGNAME nécessite Perl pour son fonctionnement,"
+    echo "mais perl n'a pas pu être détecté dans votre système. Veuillez vous "
+    echo "assurer que perl est installé et est spécifié dans votre chemin de "
+    echo "recherche, puis redémarrez ce script."
     elif [ "$glilang" = "ru" ]; then
-	echo "âÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone ÔÒÅÂÕÅÔ Perl, ÞÔÏÂÙ ÉÍÅÔØ ×ÏÚÍÏÖÎÏÓÔØ"
-	echo "ÒÁÂÏÔÁÔØ, ÎÏ Perl ÎÅ ÂÙÌ × ×ÁÛÅÊ ÓÉÓÔÅÍÅ. ðÏÖÁÌÕÊÓÔÁ, ÐÏÄÔ×ÅÒÄÉÔÅ, ÞÔÏ "
-	echo "Perl ÕÓÔÁÎÏ×ÌÅÎ É ÎÁÈÏÄÉÔÓÑ ÎÁ ×ÁÛÅÍ ÐÕÔÉ ÐÏÉÓËÁ, ÚÁÔÅÍ ÐÏ×ÔÏÒÎÏ××ÅÄÉÔÅ"
-	echo "ÜÔÏÔ ÓËÒÉÐÔ."
-    else
-	echo "The Greenstone Librarian Interface requires perl in order to operate,"
-	echo "but perl could not be detected on your system. Please ensure that perl"
-	echo "is installed and is on your search path, then rerun this script."
-    fi
-    exit 1
-fi
-
-
-## ---- Check Java exists ----
-javapath=
-
-# Some users may set the above line manually
-if [ "x$javapath" = "x" ]; then
-
-    # If it is set, use the JAVA_HOME environment variable
-    if [ "x$JAVA_HOME" != "x" ]; then
-	javapath="$JAVA_HOME/bin/java"
-
-    # Check if Java is on the search path
-    else
-	javapath=`which java 2> /dev/null`
-    fi
-fi
-
-# Check that a Java executable has been found
-if [ "$glilang" = "es" ]; then
-    echo "Revisando Java: $javapath"
-elif [ "$glilang" = "fr" ]; then
-    echo "Vérification de Java: $javapath"
-elif [ "$glilang" = "ru" ]; then
-    echo "ðÒÏ×ÅÒËÁ Java: $javapath"
-else
-    echo "Checking Java: $javapath"
-fi
-if [ ! -x "$javapath" ]; then
-    echo
-    if [ "$glilang" = "es" ]; then
-	echo "No se pudo localizar una versión apropiada de Java. Usted deberá "
-	echo "instalar un Ambiente de Ejecución Java (versión 1.4 o superior) "
-	echo "antes de correr la Interfaz de la Biblioteca Digital Greenstone."
-    elif [ "$glilang" = "fr" ]; then
-	echo "Une version adéquate de Java n'a pas pu être localisée."
-	echo "Vous devez installer un Java Runtime Environment (version 1.4 ou"
-	echo "supérieur) avant de démarrer Greenstone Librarian Interface."
-    elif [ "$glilang" = "ru" ]; then
-	echo "îÅ ÕÄÁÌÏÓØ ÏÐÒÅÄÅÌÉÔØ ÍÅÓÔÏÎÁÈÏÖÄÅÎÉÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ×ÅÒÓÉÉ Java."
-	echo "÷Ù ÄÏÌÖÎÙ ÕÓÔÁÎÏ×ÉÔØ Java Runtime Environment (×ÅÒÓÉÀ 1.4 ÉÌÉ ×ÙÛÅ)"
-	echo "ÐÅÒÅÄ ××ÏÄÏÍ ÂÉÂÌÉÏÔÅÞÎÏÇÏ ÉÎÔÅÒÆÅÊÓÁ Greenstone."
-    else
-	echo "Failed to locate an appropriate version of Java. You must install a"
-	echo "Java Runtime Environment (version 1.4 or greater) before running the"
-	echo "Greenstone Librarian Interface."
-    fi
-    exit 1
-fi
+    echo "âÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME ÔÒÅÂÕÅÔ Perl, ÞÔÏÂÙ ÉÍÅÔØ ×ÏÚÍÏÖÎÏÓÔØ"
+    echo "ÒÁÂÏÔÁÔØ, ÎÏ Perl ÎÅ ÂÙÌ × ×ÁÛÅÊ ÓÉÓÔÅÍÅ. ðÏÖÁÌÕÊÓÔÁ, ÐÏÄÔ×ÅÒÄÉÔÅ, ÞÔÏ "
+    echo "Perl ÕÓÔÁÎÏ×ÌÅÎ É ÎÁÈÏÄÉÔÓÑ ÎÁ ×ÁÛÅÍ ÐÕÔÉ ÐÏÉÓËÁ, ÚÁÔÅÍ ÐÏ×ÔÏÒÎÏ××ÅÄÉÔÅ"
+    echo "ÜÔÏÔ ÓËÒÉÐÔ."
+    else
+    echo "The $PROGNAME requires Perl in order to operate,"
+    echo "but perl could not be detected on your system. Please ensure that perl"
+    echo "is installed and is on your search path, then rerun this script."
+    fi
+    exit 1
+fi
+echo $perlpath
+echo
+
+## ---- Check Java ----
+echo "Java:"
+MINIMUM_JAVA_VERSION=1.4.0_00
+
+# Some users may set this line manually
+#JAVA_HOME=
+
+if [ -z $javapath ]; then
+
+    # sus out search4j
+    if [ "$_version" -eq 2 -a -e "$GSDLHOME/bin/$GSDLOS/search4j" ]; then
+        SEARCH4J_EXECUTABLE=$GSDLHOME/bin/$GSDLOS/search4j
+    elif [ "$_version" -eq 3 -a -e "$GSDL3SRCHOME/bin/$GSDLOS/search4j" ]; then
+        SEARCH4J_EXECUTABLE=$GSDL3SRCHOME/bin/search4j
+    elif [ -e "../bin/$GSDLOS/search4j" ]; then
+        SEARCH4J_EXECUTABLE=../bin/$GSDLOS/search4j
+    elif [ -e "../bin/search4j" ]; then
+        SEARCH4J_EXECUTABLE=../bin/search4j
+    else
+        echo "Couldn't determine the location of the search4j executable"
+        echo "If you are running Greenstone2"
+        echo "   * check GSDLHOME is set"
+        echo "   * check bin/$GSDLOS/search4j exists"
+        echo "   * check bin/$GSDLOS/search4j is executable"
+        echo "If you are running Greenstone3"
+        echo "   * check GSDL3SRCHOME is set"
+        echo "   * check bin/search4j exists"
+        echo "   * check bin/search4j is executable"
+        echo "   * try running 'ant compile-search4j'"
+    fi
+
+	# Give search4j a hint to find Java depending on the platform
+	if [ $GSDLOS = linux ]; then
+		HINT=`cd ..;pwd`/packages/jre
+	elif [ $GSDLOS = darwin ]; then
+		HINT=/System/Library/Frameworks/JavaVM.framework/Home
+	fi	
+	
+    javapath=`$SEARCH4J_EXECUTABLE -e -p $HINT -m $MINIMUM_JAVA_VERSION`
+
+    if [ "$?" != "0" ]; then
+
+        OLDVER=`"$SEARCH4J_EXECUTABLE" -v -p "$HINT"`
+
+        if [ "$?" = "0" ]; then
+
+            if [ "$glilang" = "es" ]; then
+                echo "La versión del Ambiente de Ejecución Java (JRE por sus siglas en "
+                echo "inglés) que usted tiene instalada es demasiado vieja para ejecutar "
+                echo "la Interfaz de la $PROGNAME. Por favor instale "
+                echo "una nueva versión del Ambiente de Ejecución Java (versión $MINIMUM_JAVA_VERSION o "
+                echo "posterior) y ejecute nuevamente este guión."
+            elif [ "$glilang" = "fr" ]; then
+                echo "La version de Java Runtime Environment que vous avez installée est"
+                echo "trop vielle pour faire fonctionner $PROGNAME."
+                echo "Veuillez installer une nouvelle version du JRE (version $MINIMUM_JAVA_VERSION ou plus"
+                echo "récente) et redémarrez le script."
+            elif [ "$glilang" = "ru" ]; then
+                echo "÷ÅÒÓÉÑ Java Runtime Environment, ËÏÔÏÒÕÀ ÷Ù ÕÓÔÁÎÏ×ÉÌÉ, ÏÞÅÎØ ÓÔÁÒÁ,"
+                echo "ÞÔÏÂÙ ÕÐÒÁ×ÌÑÔØ ÂÉÂÌÉÏÔÅÞÎÙÍ $PROGNAME. ðÏÖÁÌÕÊÓÔÁ, "
+                echo "ÕÓÔÁÎÏ×ÉÔÅ ÎÏ×ÕÀ ×ÅÒÓÉÀ JRE (×ÅÒÓÉÀ $MINIMUM_JAVA_VERSION ÉÌÉ ÂÏÌÅÅ ÎÏ×ÕÀ) É"
+                echo "ÐÅÒÅÕÓÔÁÎÏ×ÉÔÅ ÜÔÏÔ ÓËÒÉÐÔ"
+            else
+                echo "The version of the Java Runtime Environment you have installed ($OLDVER)"
+                echo "is too old to run the $PROGNAME. Please install a new"
+                echo "version of the JRE (version $MINIMUM_JAVA_VERSION or newer) and rerun this script."
+            fi
+            exit 1
+
+        else
+
+            echo
+            if [ "$glilang" = "es" ]; then
+                echo "No se pudo localizar una versión apropiada de Java. Usted deberá "
+                echo "instalar un Ambiente de Ejecución Java (versión $MINIMUM_JAVA_VERSION o superior) "
+                echo "antes de correr la Interfaz de la $PROGNAME."
+            elif [ "$glilang" = "fr" ]; then
+                echo "Une version adéquate de Java n'a pas pu être localisée."
+                echo "Vous devez installer un Java Runtime Environment (version $MINIMUM_JAVA_VERSION ou"
+                echo "supérieur) avant de démarrer $PROGNAME."
+				echo "Si vous avez Java installé sur votre ordinateur veuillez vérifier la variable"
+				echo "d'environnement JAVA_HOME."
+            elif [ "$glilang" = "ru" ]; then
+                echo "îÅ ÕÄÁÌÏÓØ ÏÐÒÅÄÅÌÉÔØ ÍÅÓÔÏÎÁÈÏÖÄÅÎÉÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ×ÅÒÓÉÉ Java."
+                echo "÷Ù ÄÏÌÖÎÙ ÕÓÔÁÎÏ×ÉÔØ Java Runtime Environment (×ÅÒÓÉÀ $MINIMUM_JAVA_VERSION ÉÌÉ ×ÙÛÅ)"
+                echo "ÐÅÒÅÄ ××ÏÄÏÍ ÂÉÂÌÉÏÔÅÞÎÏÇÏ $PROGNAME."
+            else
+                echo "Failed to locate an appropriate version of Java. You must install a"
+                echo "Java Runtime Environment (version $MINIMUM_JAVA_VERSION or greater) before running the"
+                echo "$PROGNAME."
+				echo "If you have Java intalled on your machine please set the environment variable JAVA_HOME."
+            fi
+        fi
+
+    fi
+
+fi
+echo $javapath
+echo
 
 
@@ -195,26 +375,4 @@
 if [ $? -ne 2 ] ; then
     echo
-    if [ "$glilang" = "es" ]; then
-	echo "La versión del Ambiente de Ejecución Java (JRE por sus siglas en "
-	echo "inglés) que usted tiene instalada es demasiado vieja para ejecutar "
-	echo "la Interfaz de la Biblioteca Digital Greenstone. Por favor instale "
-	echo "una nueva versión del Ambiente de Ejecución Java (versión 1.4 o "
-	echo "posterior) y ejecute nuevamente este guión."
-    elif [ "$glilang" = "fr" ]; then
-	echo "La version de Java Runtime Environment que vous avez installée est"
-	echo "trop vielle pour faire fonctionner Greenstone Librarian Interface."
-	echo "Veuillez installer une nouvelle version du JRE (version 1.4 ou plus"
-	echo "récente) et redémarrez le script."
-    elif [ "$glilang" = "ru" ]; then
-	echo "÷ÅÒÓÉÑ Java Runtime Environment, ËÏÔÏÒÕÀ ÷Ù ÕÓÔÁÎÏ×ÉÌÉ, ÏÞÅÎØ ÓÔÁÒÁ,"
-	echo "ÞÔÏÂÙ ÕÐÒÁ×ÌÑÔØ ÂÉÂÌÉÏÔÅÞÎÙÍ ÉÎÔÅÒÆÅÊÓÏÍ Greenstone. ðÏÖÁÌÕÊÓÔÁ, "
-	echo "ÕÓÔÁÎÏ×ÉÔÅ ÎÏ×ÕÀ ×ÅÒÓÉÀ JRE (×ÅÒÓÉÀ 1.4 ÉÌÉ ÂÏÌÅÅ ÎÏ×ÕÀ) É"
-	echo "ÐÅÒÅÕÓÔÁÎÏ×ÉÔÅ ÜÔÏÔ ÓËÒÉÐÔ"
-    else
-	echo "The version of the Java Runtime Environment you have installed is too"
-	echo "old to run the Greenstone Librarian Interface. Please install a new"
-	echo "version of the JRE (version 1.4 or newer) and rerun this script."
-    fi
-    exit 1
 fi
 
@@ -223,62 +381,79 @@
     echo
     if [ "$glilang" = "es" ]; then
-	echo "Usted necesita compilar la Interfaz de la Biblioteca Digital Greenstone"
-	echo "(por medio de makegli.sh) antes de ejecutar este guión."
+    echo "Usted necesita compilar la Interfaz de la Biblioteca Digital Greenstone"
+    echo "(por medio de makegli.sh) antes de ejecutar este guión."
     elif [ "$glilang" = "fr" ]; then
-	echo "Vous devez compiler le Greenstone Interface (en utilisant makegli.sh)"
-	echo "avant d'exécuter ce script."
+    echo "Vous devez compiler le Greenstone Interface (en utilisant makegli.sh)"
+    echo "avant d'exécuter ce script."
     elif [ "$glilang" = "ru" ]; then
-	echo "÷Ù ÄÏÌÖÎÙ ËÏÍÐÉÌÉÒÏ×ÁÔØ ÂÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone"
-	echo "(ÉÓÐÏÌØÚÕÑ makegli.sh) ÐÅÒÅÄ ××ÏÄÏÍ ÜÔÏÇÏ ÓËÒÉÐÔÁ"
-    else
-	echo "You need to compile the Greenstone Librarian Interface (using makegli.sh)"
-	echo "before running this script."
-    fi
-    exit 1
-fi
+    echo "÷Ù ÄÏÌÖÎÙ ËÏÍÐÉÌÉÒÏ×ÁÔØ ÂÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone"
+    echo "(ÉÓÐÏÌØÚÕÑ makegli.sh) ÐÅÒÅÄ ××ÏÄÏÍ ÜÔÏÇÏ ÓËÒÉÐÔÁ"
+    else
+    echo "You need to compile the Greenstone Librarian Interface (using makegli.sh)"
+    echo "before running this script."
+    fi
+    exit 1
+fi
+
+## ---- Explain how to bypass Imagemagick and Ghostscript bundled with Greenstone if needed ----
+if [ -e "$GSDLHOME/bin/$GSDLOS/ghostscript" ] ; then
+echo "GhostScript bundled with Greenstone will be used, if you wish to use the version installed on your system (if any) please go to $GSDLHOME/bin/$GSDLOS and rename the folder called ghostscript to something else."
+fi
+echo
+echo
+if [ -e "$GSDLHOME/bin/$GSDLOS/imagemagick" ] ; then
+echo "ImageMagick bundled with Greenstone will be used, if you wish to use the version installed on your system (if any) please go to $GSDLHOME/bin/$GSDLOS and rename the folder called imagemagick to something else."
+echo
+echo
+fi
+
 
 ## ---- Finally, run the GLI ----
-echo
 if [ "$glilang" = "es" ]; then
-    echo "Ejecutando la Interfaz de la Biblioteca Digital Greenstone..."
+    echo "Ejecutando la Interfaz de la $PROGNAME..."
 elif [ "$glilang" = "fr" ]; then
-    echo "Exécution de Greenstone Librarian Interface"
+    echo "Exécution de $PROGNAME..."
 elif [ "$glilang" = "ru" ]; then
-    echo "ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone..."
+    echo "ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME..."
 else
-    echo "Running the Greenstone Librarian Interface..."
-fi
-
+    echo "Running the $PROGNAME..."
+fi
+
+# basic_command is the cmd string common to both Greenstone 3 and Greenstone 2 execution
+basic_command="$javapath -Xmx128M -classpath classes/:GLI.jar:lib/apache.jar:lib/qfslib.jar org.greenstone.gatherer.GathererProg"
 stop_gli=0
 while [ "$stop_gli" = "0" ] ; do 
-
-# Other arguments you can provide to GLI to work around memory limitations, or debug
-# -Xms<number>M    To set minimum memory (by default 32MB)
-# -Xmx<number>M    To set maximum memory (by default the nearest 2^n to the total remaining physical memory)
-# -verbose:gc      To set garbage collection messages
-# -Xincgc          For incremental garbage collection (significantly slows performance)
-# -Xprof           Function call profiling
-# -Xloggc:<file>   Write garbage collection log
-
-
-
-  $javapath -Xmx128M -classpath classes/:GLI.jar:lib/apache.jar:lib/qfslib.jar org.greenstone.gatherer.GathererProg -gsdl $GSDLHOME -gsdlos $GSDLOS $*
-  exit_status=$?
-
-  if [ "$exit_status" != "2" ] ; then
-    stop_gli=1
-  else
-    echo
-    if [ "$glilang" = "es" ]; then
-        echo "Restarting/Ejecutando la Interfaz de la Biblioteca Digital Greenstone..."
-    elif [ "$glilang" = "fr" ]; then
-        echo "Restarting/Exécution de Greenstone Librarian Interface"
-    elif [ "$glilang" = "ru" ]; then
-        echo "Restarting/ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ ÉÎÔÅÒÆÅÊÓ Greenstone..."
-    else
-        echo "Restarting the Greenstone Librarian Interface..."
-    fi
-
-  fi
+    
+    # Other arguments you can provide to GLI to work around memory limitations, or debug
+    # -Xms<number>M    To set minimum memory (by default 32MB)
+    # -Xmx<number>M    To set maximum memory (by default the nearest 2^n to the total remaining physical memory)
+    # -verbose:gc      To set garbage collection messages
+    # -Xincgc          For incremental garbage collection (significantly slows performance)
+    # -Xprof           Function call profiling
+    # -Xloggc:<file>   Write garbage collection log
+    
+    exit_status=0
+    if [ "$_version" -eq 2 ]; then
+        $basic_command -gsdl $GSDLHOME -gsdlos $GSDLOS $*
+        exit_status=$?
+    elif [ "$_version" -eq 3 ]; then    
+        $basic_command -gsdl $GSDLHOME -gsdlos $GSDLOS -gsdl3 $GSDL3HOME -gsdl3src $GSDL3SRCHOME $*
+        exit_status=$?
+    fi
+    
+    if [ "$exit_status" != "2" ] ; then
+        stop_gli=1
+    else
+        echo
+        if [ "$glilang" = "es" ]; then
+            echo "Restarting/Ejecutando la Interfaz de la $PROGNAME..."
+        elif [ "$glilang" = "fr" ]; then
+            echo "Restarting/Exécution de $PROGNAME..."
+        elif [ "$glilang" = "ru" ]; then
+            echo "Restarting/ôÅËÕÝÉÊ ÂÉÂÌÉÏÔÅÞÎÙÊ $PROGNAME..."
+        else
+            echo "Restarting the $PROGNAME..."
+        fi
+    fi
 done 
 
