Index: unk/SRC/Documentation/xmldoc/mergeonline_help.sh
===================================================================
--- /trunk/SRC/Documentation/xmldoc/mergeonline_help.sh	(revision 191)
+++ 	(revision )
@@ -1,115 +1,0 @@
-#!/bin/sh
-#
-# history
-# Sept 2006: Sebastien Masson (smasson\@lodyc.jussieu.fr)
-#
-# version
-# $Id$
-#
-homeidl=$1
-homesaxo=$2
-homesrc=$3
-version=$4
-#
-#############################################################
-# create the file saxoidl.adp from idl.adp and idldoc-lib.adp
-#############################################################
-# create saxoidl.adp header
-[ ! -f ${homeidl}/idl.adp ] && exit 1
-[ ! -f ${homesaxo}/idldoc-lib.adp ] && exit 1
-#
-cat <<EOF > ${homesrc}/idl.adp
-<!DOCTYPE DCF>  
-<assistantconfig version="3.3.0">  
-   <profile>  
-      <property name="name">SAXO - IDL ${version} Help</property>  
-      <property name="title">SAXO - IDL ${version} Help</property>  
-      <property name="startpage">${homesrc}/home.html</property>  
-      <property name="aboutmenutext">About SAXO</property>  
-      <property name="abouturl">${homesrc}/aboutsaxo.txt</property>  
-      <property name="assistantdocs">${homeidl}</property>  
-   </profile>  
-EOF
-[ $? -ne 0 ] && exit 1
-# extract part from </profile> to </assistantconfig>
-# put the complete path of the references
-# and put it at the end of idl.adp
-sed -e '1,/<\/profile>/ d' \
-    -e '/<\/assistantconfig>/,$ d' \
-    -e "s?ref=\"?ref=\"${homeidl}/?g" \
-    ${homeidl}/idl.adp  >> ${homesrc}/idl.adp
-[ $? -ne 0 ] && exit 1
-
-# extract part from </profile>
-# put the complete path of the references
-# and put it at the end of idl.adp
-sed -e '1,/<\/profile>/ d' \
-    -e "s?ref=\"?ref=\"${homesaxo}/?g" \
-    ${homesaxo}/idldoc-lib.adp >> ${homesrc}/idl.adp
-[ $? -ne 0 ] && exit 1
-
-#############################################################
-# create the file home.html from the one installed with IDL
-#############################################################
-[ ! -f ${homeidl}/home.html ] && exit 1
-# put the complete path of the references 
-sed -e "s?ref=\"?ref=\"${homeidl}/?g" \
-    ${homeidl}/home.html > ${homesrc}/home.html
-[ $? -ne 0 ] && exit 1
-# number of the line containing the first </h3>
-grep -n '</h3>' ${homesrc}/home.html > /tmp/toto$$ 
-[ $? -ne 0 ] && exit 1
-numline=$( head -n 1 /tmp/toto$$ )
-[ $? -ne 0 ] && exit 1
-numline=$( echo ${numline} | cut -b1-2 )
-[ $? -ne 0 ] && exit 1
-# define the part to be added after the first </h3>
-cat << EOF > /tmp/toto$$
-<a name="SAXOdir"> </a><p class="pIndentedRelative"><img src="images/blueball_idl.gif" id="blueballSAXOdir" border="0" hspace="0" vspace="0"/> &#160;&#160;<a href="${homesaxo}/home.html">SAXO Directory</a></p>
-EOF
-[ $? -ne 0 ] && exit 1
-# add line for SAXO Directory after the first </h3>
-sed -e "${numline}r /tmp/toto$$" ${homesrc}/home.html > /tmp/toto2$$ 
-[ $? -ne 0 ] && exit 1
-mv -f /tmp/toto2$$ ${homesrc}/home.html
-[ $? -ne 0 ] && exit 1
-# number of the line containing the last </h3>
-grep -n '</h3>' ${homesrc}/home.html > /tmp/toto$$ 
-[ $? -ne 0 ] && exit 1
-numline=$( tail -n 1 /tmp/toto$$ )
-[ $? -ne 0 ] && exit 1
-numline=$( echo ${numline} | cut -b1-2 )
-[ $? -ne 0 ] && exit 1
-# define the part to be added after the last </h3>
-cat << EOF > /tmp/toto$$
-<a name="SAXOweb"> </a><p class="pIndentedRelative"><img src="images/blueball_idl.gif" id="blueballSAXOweb" border="0" hspace="0" vspace="0"/> &#160;&#160;<a href="http://forge.ipsl.jussieu.fr/saxo">SAXO Home Page</a> </p>  
-EOF
-[ $? -ne 0 ] && exit 1
-# add line for SAXO Home Page after the last </h3>
-sed -e "${numline}r /tmp/toto$$" ${homesrc}/home.html > /tmp/toto2$$ 
-[ $? -ne 0 ] && exit 1
-mv -f /tmp/toto2$$ ${homesrc}/home.html
-[ $? -ne 0 ] && exit 1
-# put the complete path of the images except for SAXOIDL_OnlineHelp_title.png
-sed -e "s?src=\"?src=\"${homeidl}/?g" \
-    -e "s?src=\".*IDL_OnlineHelp_Title\.gif\"?src=\"${homesaxo}/../xmldoc/images/SAXOIDL_OnlineHelp_title\.png\"?g" \
-    ${homesrc}/home.html > /tmp/toto$$ 
-[ $? -ne 0 ] && exit 1
-mv -f /tmp/toto$$ ${homesrc}/home.html
-[ $? -ne 0 ] && exit 1
-#############################################################
-# create the file aboutsaxo.txt from overview
-#############################################################
-[ ! -f ${homeidl}/home.html ] && exit 1
-# remove the line with @ in the file overview
-sed -e '/@/d' ${homesaxo}/../../overview > ${homesrc}/aboutsaxo.txt
-[ $? -ne 0 ] && exit 1
-# add a link to saxo page
-cat <<EOF >> ${homesrc}/aboutsaxo.txt
-
-More informations on 
-http://forge.ipsl.jussieu.fr/saxo
-
-EOF
-[ $? -ne 0 ] && exit 1
-exit 0
Index: /trunk/SRC/Documentation/xmldoc/websaxo.xml
===================================================================
--- /trunk/SRC/Documentation/xmldoc/websaxo.xml	(revision 191)
+++ /trunk/SRC/Documentation/xmldoc/websaxo.xml	(revision 192)
@@ -62,10 +62,9 @@
 <title>What's new</title>
 <itemizedlist>
-<listitem><para>September 2006: One <emphasis role="bold">unique online_help</emphasis> for IDL and SAXO (requires IDL 6.2 and higher).</para></listitem>
+<listitem><para>September 2006: One <emphasis role="bold">unique online_help</emphasis> for IDL and SAXO (requires IDL 6.2 or higher).</para></listitem>
 <listitem><para>Summer 2006: <emphasis role="bold">English translation</emphasis> of headers, add <emphasis role="bold">pltv</emphasis> and <emphasis role="bold">documentation of xxx</emphasis>.</para></listitem>
 <listitem> 
 <para>
-March 2006-May 2006 : migration for <emphasis role="bold">obsolete</emphasis> CVS repository + Sébastien Masson improvements
-in a beautiful <quote><application>trac</application>+<application>svn</application></quote> project on <systemitem>http:://forge.ipsl.jussieu.fr/saxo/</systemitem>.
+March 2006-May 2006 : migration of <emphasis role="bold">obsolete</emphasis> CVS repository + Sébastien Masson improvements in a beautiful <quote><application>trac</application>+<application>svn</application></quote> project.</systemitem>.
 </para>
 </listitem>
Index: /trunk/SRC/Grid/computegrid.pro
===================================================================
--- /trunk/SRC/Grid/computegrid.pro	(revision 191)
+++ /trunk/SRC/Grid/computegrid.pro	(revision 192)
@@ -9,9 +9,9 @@
 ;
 ; domains sizes:
-;---------------
+; ---------------
 ; jpi, jpj, jpk, jpiglo, jpjglo, jpkglo, jpidta, jpjdta, jpkdta
 ;
 ; domains positions regarding to the original grid:
-;--------------------------------------------------
+; --------------------------------------------------
 ; ixminmesh, ixmaxmesh, iyminmesh, iymaxmesh, izminmesh, izmaxmesh
 ; ixmindta, ixmaxdta, iymindta, iymaxdta, izmindta, izmaxdta
@@ -154,12 +154,15 @@
 ;       Define common (cm_4mesh) variables ixmaxmesh used to define the localization
 ;       of the last point of the grid along the x direction in a zoom of the original grid
+;       Note that if XMAXMESH < 0 then ixmaxmesh is defined as ixmaxmesh = jpiglo -1 + xmaxmesh
 ;
 ; @keyword YMAXMESH {default=jpjglo-1}{type=scalar}
 ;       Define common (cm_4mesh) variables iymaxmesh used to define the localization
 ;       of the last point of the grid along the y direction in a zoom of the original grid
+;       Note that if YMAXMESH < 0 then iymaxmesh is defined as iymaxmesh = jpjglo -1 + ymaxmesh
 ;
 ; @keyword ZMAXMESH {default=jpkglo-1}{type=scalar}
 ;       Define common (cm_4mesh) variables izmaxmesh used to define the localization
 ;       of the last point of the grid along the z direction in a zoom of the original grid
+;       Note that if ZMAXMESH < 0 then izmaxmesh is defined as izmaxmesh = jpkglo -1 + maxmesh
 ;
 ; @keyword FBASE2TBASE
Index: /trunk/SRC/Grid/romsdepth.pro
===================================================================
--- /trunk/SRC/Grid/romsdepth.pro	(revision 191)
+++ /trunk/SRC/Grid/romsdepth.pro	(revision 192)
@@ -39,22 +39,6 @@
   type = vargrid
 ;
-  CASE strupcase(vargrid) OF
-    'U':BEGIN
-      nx = nxu
-      ny = nyu
-    END 
-    'V':BEGIN
-      nx = nxv
-      ny = nyv
-    END
-    'F':BEGIN
-      nx = nxf
-      ny = nyf
-    END
-    ELSE:BEGIN
-      nx = nxt
-      ny = nyt
-    END
-  ENDCASE
+  grille, -1, -1, -1, -1, nx, ny, nz, firstx, firsty, firstz, lastx, lasty, lastz
+  hroms = hroms[firstx:lastx, firsty:lasty]
   nt = n_elements(zeta)/nx/ny 
 ;
Index: /trunk/SRC/Obsolete/strrepl.pro
===================================================================
--- /trunk/SRC/Obsolete/strrepl.pro	(revision 192)
+++ /trunk/SRC/Obsolete/strrepl.pro	(revision 192)
@@ -0,0 +1,113 @@
+;-------------------------------------------------------------
+;+
+;
+; @file_comments 
+; replace one (or more) character(s)/string(s) in a string
+; --- OBSOLETE --- you should better use strsed.pro
+;
+; @categories
+; String
+;
+; @param STR {in}{required}
+; the string to be changed
+;
+; @param ARG2 {in}{required}
+; position of the character(s) to be replaced or a string to be changed in STR.
+;
+; @param RCHAR {in}{required}
+; replacement character/string
+;
+; @returns
+; another string
+;
+; @restrictions 
+; Known shortcoming: if index is an array, it must contain all
+; valid elements (only the first entry is checked).
+;
+; @examples
+;        ; Convert one letter into upper case
+;
+;        abc = 'abcdefghijklmnopqrstuvwxyz'
+;        print,strrepl(abc,strpos(abc,'m'),'M')
+;
+;        ; prints "abcdefghijklMnopqrstuvwxyz"
+;
+;
+;        ; Use with strwhere function
+;        a = 'abcabcabc'
+;        print,strrepl(a,strwhere(a,'a'),'#')
+;
+;        ; prints  "#bc#bc#bc#bc#bc"
+;
+;       IDL> print, strrepl(a,'bc','!eeee!')
+;       a!eeee!a!eeee!a!eeee!
+;       IDL> print, strrepl(a,'b','0000')
+;       a0000ca0000ca0000
+;       IDL> print, strrepl(a,'toto','0000')
+;       abcabcabc
+;
+; @history
+;        mgs, 02 Jun 1998: VERSION 1.00
+;        sebastien Masson (smlod\@ipsl.jussieu.fr)
+;
+; @version
+; $Id$
+;
+;-
+; Copyright (C) 1998, Martin Schultz, Harvard University
+; This software is provided as is without any warranty
+; whatsoever. It may be freely used, copied or distributed
+; for non-commercial purposes. This copyright notice must be
+; kept with any copy of this software. If this software shall
+; be used commercially or sold as part of a larger package,
+; please contact the author to arrange payment.
+; Bugs and comments should be directed to mgs@io.harvard.edu
+; with subject "IDL routine strrepl"
+;-------------------------------------------------------------
+
+
+function strrepl,str,arg2,rchar
+;
+  compile_opt idl2, strictarrsubs, obsolete
+;
+   
+   if (n_elements(str) eq 0) then return,''
+   
+                                ; convert strign and replace character to byte
+   BStr = byte(str)
+   new = byte(rchar)
+   if size(arg2, /type) EQ 7 then begin
+      old = byte(arg2)
+      index = strpos(str, arg2)
+      pos = index
+      while strpos(str, arg2, pos+1) NE -1 do BEGIN
+         pos = strpos(str, arg2, pos+1)
+         index = [index, pos]
+      ENDWHILE
+; make sure index is in range
+      if (index[0] lt 0 OR index[0] ge n_elements(BStr)) THEN return,Str
+   ENDIF ELSE BEGIN
+      index = arg2
+      if (index[0] lt 0 OR index[0] ge n_elements(BStr)) then return,Str
+      old = BStr[index[0]]
+   ENDELSE
+                                ; replace indexed characters in string
+   nelenew = n_elements(new)
+   neleold = n_elements(old)
+   nindex = n_elements(index)
+   if nelenew*neleold NE 1 then begin
+      if index[0] EQ 0 then $
+       BStr = [NEW,  BStr[index[0]+neleold: n_elements(BStr)-1] ] ELSE $
+       BStr = [BStr[0:index[0]-1], NEW,  BStr[index[0]+neleold: n_elements(BStr)-1] ]
+      if nindex EQ 1 then return,string(BStr)
+      if nindex GT 2 then $
+       for i = 1, nindex-2 do $
+       BStr = [BStr[0:index[i]+i*(nelenew-neleold)-1], NEW $
+               , BStr[index[i]+i*(nelenew-neleold)+neleold: n_elements(BStr)-1] ]
+      BStr = [BStr[0:index[n_elements(index)-1]+(nindex-1)*(nelenew-neleold)-1], NEW]
+
+   ENDIF ELSE BStr[index] = NEW
+                                ; return result as string
+   return,string(BStr)
+   
+end
Index: /trunk/SRC/ToBeReviewed/INIT/initncdf.pro
===================================================================
--- /trunk/SRC/ToBeReviewed/INIT/initncdf.pro	(revision 191)
+++ /trunk/SRC/ToBeReviewed/INIT/initncdf.pro	(revision 192)
@@ -125,10 +125,10 @@
   xvarid = (where(namevar EQ xaxisname OR namevar EQ 'longitude' $
                   OR namevar EQ 'nav_lon' OR namevar EQ 'lon' $
-                  OR namevar EQ 'lon_rho' OR namevar EQ 'NbLongitudes'))[0]
-  romsgrid = strmid(namevar[xvarid], 0, 4) EQ 'lon_'
+                  OR namevar EQ 'lon_rho' OR namevar EQ 'nblongitudes'))[0]
   if xvarid EQ -1 then begin
     print, 'the xaxis was not found, check the use of XAXISNAME keyword'
     stop
   endif
+  romsgrid = strmid(namevar[xvarid], 0, 4) EQ 'lon_'
 ; get the size of xaxis
   xinq = ncdf_varinq(cdfid, xvarid)
@@ -149,5 +149,5 @@
   yvarid = (where(namevar EQ yaxisname OR namevar EQ 'latitude' $
                   OR namevar EQ 'nav_lat' OR namevar EQ 'lat' $
-                  OR namevar EQ 'lat_rho' OR namevar EQ 'NbLatitudes'))[0]
+                  OR namevar EQ 'lat_rho' OR namevar EQ 'nblatitudes'))[0]
   yvarid = yvarid[0]
   if yvarid EQ -1 then begin
Index: /trunk/SRC/ToBeReviewed/LECTURE/read_ncdf.pro
===================================================================
--- /trunk/SRC/ToBeReviewed/LECTURE/read_ncdf.pro	(revision 191)
+++ /trunk/SRC/ToBeReviewed/LECTURE/read_ncdf.pro	(revision 192)
@@ -67,7 +67,4 @@
 ; (the first 1D array with unlimited dimension) is not the good one.
 ;
-; @keyword HFILENAME {default=FILENAME}{type=string}
-; For ROMS outputs. The filename of the file where h vriable should be read
-;
 ; @keyword ZETAFILENAME {default=FILENAME}{type=string}
 ; For ROMS outputs. The filename of the file where zeta vriable should be read
@@ -103,5 +100,5 @@
                     , TOUT = tout, NOSTRUCT = nostruct, CONT_NOFILL = CONT_NOFILL, INIT = init $
                     , GRID = grid, FBASE2TBASE = fbase2tbase, CALLITSELF = callitself $
-                    , HFILENAME = hfilename, ZETAFILENAME = zetafilename, ZETAZERO = zetazero $
+                    , ZETAFILENAME = zetafilename, ZETAZERO = zetazero $
                     , _EXTRA = ex
 ;---------------------------------------------------------
@@ -567,15 +564,4 @@
       ENDFOR
       CASE 1 OF
-        keyword_set(hfilename):  $
-           hroms = read_ncdf('h', 0, 0, FILENAME = hfilename $
-                             , /TIMESTEP, /NOSTRUCT, CONT_NOFILL = CONT_NOFILL $
-                             , GRID = vargrid, /CALLITSELF, _EXTRA = ex)
-        (where(allvarnames EQ 'h'))[0] NE -1: $
-           hroms = read_ncdf('h', 0, 0, FILENAME = filename $
-                             , /TIMESTEP, /NOSTRUCT, CONT_NOFILL = CONT_NOFILL $
-                             , GRID = vargrid, /CALLITSELF, _EXTRA = ex)
-        ELSE:return, report('The variable h was not found in the file, please use the keyword HFILENAME to specify the name of a file containing h')
-      ENDCASE
-      CASE 1 OF
         keyword_set(zetazero):zeta = fltarr(nx, ny, jpt)
         keyword_set(zetafilename):  $
@@ -589,5 +575,5 @@
         ELSE:return, report('The variable zeta was not found in the file, please use the keyword ZETAFILENAME to specify the name of a file containing zeta or use  keyword ZETAZERO to define zeta to 0.')
       ENDCASE
-      romszinfos = {h:temporary(hroms), zeta:temporary(zeta), theta_s:theta_s, theta_b:theta_b, hc:hc}
+      romszinfos = {h:romszinfos.h, zeta:temporary(zeta), theta_s:theta_s, theta_b:theta_b, hc:hc}
     ENDIF ELSE romszinfos = {h:-1, zeta:-1, theta_s:-1, theta_b:-1, hc:-1}
   ENDIF
Index: /trunk/SRC/ToBeReviewed/LECTURE/read_ncdf_varget.pro
===================================================================
--- /trunk/SRC/ToBeReviewed/LECTURE/read_ncdf_varget.pro	(revision 191)
+++ /trunk/SRC/ToBeReviewed/LECTURE/read_ncdf_varget.pro	(revision 192)
@@ -75,5 +75,5 @@
 ;,,,,,,,,,,,,,,,,,,,,,,,,
             ncdf_varget,cdfid,name,res,offset=[firstx+ixmin,firsty+iymin] $
-             ,count=[nx,ny], _extra = ex
+             ,count=[nx,ny]
          END
 ;,,,,,,,,,,,,,,,,,,,,,,,,
@@ -83,5 +83,5 @@
             ncdf_varget,cdfid,name,res,offset=[firstx*key_stride[0]+ixmin $
                                                ,firsty*key_stride[1]+iymin] $
-             ,count=[nx,ny], stride = key_stride[0:1], _extra = ex
+             ,count=[nx,ny], stride = key_stride[0:1]
          END
 ;,,,,,,,,,,,,,,,,,,,,,,,,
@@ -94,5 +94,5 @@
                   ncdf_varget,cdfid,name,res,offset=[ixmin-key+firstx $
                                                      ,firsty+iymin] $
-                   ,count=[nx,ny], _extra = ex
+                   ,count=[nx,ny]
                END
 ; ......... part, we can directly extract the array in one piece
@@ -100,5 +100,5 @@
                   ncdf_varget,cdfid,name,res,offset=[jpi-key+ixmin+firstx $
                                                      ,firsty+iymin] $
-                   ,count=[nx,ny], _extra = ex
+                   ,count=[nx,ny]
                END
                ELSE:BEGIN  ; we have to extract the array in 2 pieces...  
@@ -106,8 +106,8 @@
                   ncdf_varget,cdfid,name,tab1,offset=[jpi-key+ixmin+firstx $
                                                       ,firsty+iymin] $
-                   ,count=[key-1-firstx+1,ny], _extra = ex
+                   ,count=[key-1-firstx+1,ny]
 ; --------- part, second part...
                   ncdf_varget,cdfid,name,tab2,offset=[ixmin,firsty+iymin] $
-                   ,count=[lastx-key+1,ny], _extra = ex
+                   ,count=[lastx-key+1,ny]
                   res = [temporary(tab1), temporary(tab2)]
                END
@@ -125,5 +125,5 @@
                                                      +(firstx-((key-1)/key_stride[0]+1))*key_stride[0] $
                                                      ,firsty*key_stride[1]+iymin] $
-                   ,count=[nx,ny], stride = key_stride[0:1], _extra = ex
+                   ,count=[nx,ny], stride = key_stride[0:1]
                 END
 ; ......... part, we can directly extract the array in one piece
@@ -131,5 +131,5 @@
                   ncdf_varget,cdfid,name,res,offset=[jpitotal-key+ixmin+firstx*key_stride[0] $
                                                      ,firsty*key_stride[1]+iymin] $
-                   ,count=[nx,ny], stride = key_stride[0:1], _extra = ex
+                   ,count=[nx,ny], stride = key_stride[0:1]
                END
                ELSE:BEGIN ; we have to extract the array in 2 pieces...
@@ -138,5 +138,5 @@
                                                       ,firsty*key_stride[1]+iymin] $
                    ,count=[(key-firstx*key_stride[0]-1)/key_stride[0]+1,ny] $
-                    , stride = key_stride[0:1], _extra = ex
+                    , stride = key_stride[0:1]
 ; --------- part, second part...
                   ncdf_varget,cdfid,name,tab2,offset=[ixmin $
@@ -144,5 +144,5 @@
                                                       , firsty*key_stride[1]+iymin] $
                    ,count=[nx-(key-firstx*key_stride[0]-1)/key_stride[0]-1,ny] $
-                    , stride = key_stride[0:1], _extra = ex
+                    , stride = key_stride[0:1]
 ; in one unique array...
                   res = [temporary(tab1), temporary(tab2)]
@@ -163,5 +163,5 @@
 ;,,,,,,,,,,,,,,,,,,,,,,,,
             ncdf_varget,cdfid,name,res,offset=[firstx+ixmin,firsty+iymin,firstz+izmin] $
-             ,count=[nx,ny,nz], _extra = ex
+             ,count=[nx,ny,nz]
          END
 ;,,,,,,,,,,,,,,,,,,,,,,,,
@@ -172,5 +172,5 @@
                                                ,firsty*key_stride[1]+iymin $
                                                ,firstz*key_stride[2]+izmin] $
-             ,count=[nx,ny,nz], stride = key_stride, _extra = ex
+             ,count=[nx,ny,nz], stride = key_stride
          END
 ;,,,,,,,,,,,,,,,,,,,,,,,,
@@ -183,5 +183,5 @@
                                                      ,firsty+iymin $
                                                      ,firstz+izmin] $
-                   ,count=[nx,ny,nz], _extra = ex
+                   ,count=[nx,ny,nz]
                END
                lastx LE key-1:BEGIN ; on peut tout couper d''un coup
@@ -189,5 +189,5 @@
                                                      ,firsty+iymin $
                                                      ,firstz+izmin] $
-                   ,count=[nx,ny,nz], _extra = ex
+                   ,count=[nx,ny,nz]
                END
                ELSE:BEGIN       ; Le tableau est separe en 2 morceaux...
@@ -195,9 +195,9 @@
                                                       ,firsty+iymin $
                                                       ,firstz+izmin] $
-                   ,count=[key-1-firstx+1,ny,nz], _extra = ex
+                   ,count=[key-1-firstx+1,ny,nz]
                   ncdf_varget,cdfid,name,tab2,offset=[ixmin $
                                                       ,firsty+iymin $
                                                       ,firstz+izmin] $
-                   ,count=[lastx-key+1,ny,nz], _extra = ex
+                   ,count=[lastx-key+1,ny,nz]
                   res = [temporary(tab1), temporary(tab2)]
                END
@@ -215,5 +215,5 @@
                                                      ,firsty*key_stride[1]+iymin $
                                                      ,firstz*key_stride[2]+izmin] $
-                   ,count=[nx,ny,nz], stride = key_stride, _extra = ex
+                   ,count=[nx,ny,nz], stride = key_stride
                END
                lastx*key_stride[0] LE key-1:BEGIN ; on peut tout couper d''un coup
@@ -221,5 +221,5 @@
                                                      ,firsty*key_stride[1]+iymin $
                                                      ,firstz*key_stride[2]+izmin] $
-                   ,count=[nx,ny,nz], stride = key_stride, _extra = ex
+                   ,count=[nx,ny,nz], stride = key_stride
                END
                ELSE:BEGIN       ; le tableau est separe en 2 morceaux...
@@ -228,5 +228,5 @@
                                                       ,firstz*key_stride[2]+izmin] $
                    ,count=[(key-firstx*key_stride[0]-1)/key_stride[0]+1,ny,nz] $
-                    , stride = key_stride, _extra = ex
+                    , stride = key_stride
 ; 2eme bout...
                   ncdf_varget,cdfid,name,tab2,offset=[ixmin $
@@ -235,5 +235,5 @@
                                                       ,firstz*key_stride[2]+izmin] $
                    ,count=[nx-(key-firstx*key_stride[0]-1)/key_stride[0]-1,ny,nz] $
-                    , stride = key_stride, _extra = ex
+                    , stride = key_stride
 ; on recolle le tout
                   res = [temporary(tab1), temporary(tab2)]
@@ -256,5 +256,5 @@
                                                ,firsty+iymin $
                                                ,firsttps] $
-             ,count=[nx,ny,jpt], _extra = ex
+             ,count=[nx,ny,jpt]
          END
 ;,,,,,,,,,,,,,,,,,,,,,,,,
@@ -265,5 +265,5 @@
                                                ,firsty*key_stride[1]+iymin $
                                                ,firsttps] $
-             ,count=[nx,ny,jpt], stride = [key_stride[0:1], 1], _extra = ex
+             ,count=[nx,ny,jpt], stride = [key_stride[0:1], 1]
          END
 ;,,,,,,,,,,,,,,,,,,,,,,,,
@@ -277,5 +277,5 @@
                                                      ,firsty+iymin $
                                                      ,firsttps] $
-                   ,count=[nx,ny,jpt], _extra = ex
+                   ,count=[nx,ny,jpt]
                END
 ; ......... part, we can directly extract the array in one piece
@@ -284,5 +284,5 @@
                                                      ,firsty+iymin $
                                                      ,firsttps] $
-                   ,count=[nx,ny,jpt], _extra = ex
+                   ,count=[nx,ny,jpt]
                END
                ELSE:BEGIN       ; Le tableau est separe en 2 morceaux...
@@ -291,10 +291,10 @@
                                                       ,firsty+iymin $
                                                       ,firsttps] $
-                   ,count=[key-1-firstx+1,ny,jpt], _extra = ex
+                   ,count=[key-1-firstx+1,ny,jpt]
 ; --------- part, second part...
                   ncdf_varget,cdfid,name,tab2,offset=[ixmin $
                                                       ,firsty+iymin $
                                                       ,firsttps] $
-                   ,count=[lastx-key+1,ny,jpt], _extra = ex
+                   ,count=[lastx-key+1,ny,jpt]
                   res = [temporary(tab1), temporary(tab2)]
                END
@@ -313,5 +313,5 @@
                                                      ,firsty*key_stride[1]+iymin $
                                                      ,firsttps] $
-                   ,count=[nx,ny,jpt], stride = [key_stride[0:1], 1], _extra = ex
+                   ,count=[nx,ny,jpt], stride = [key_stride[0:1], 1]
                END
 ; ......... part, we can directly extract the array in one piece
@@ -320,5 +320,5 @@
                                                      ,firsty*key_stride[1]+iymin $
                                                      ,firsttps] $
-                   ,count=[nx,ny,jpt], stride = [key_stride[0:1], 1], _extra = ex
+                   ,count=[nx,ny,jpt], stride = [key_stride[0:1], 1]
                END
                ELSE:BEGIN      
@@ -328,5 +328,5 @@
                                                       ,firsttps] $
                    ,count=[(key-firstx*key_stride[0]-1)/key_stride[0]+1,ny,jpt] $
-                    , stride = [key_stride[0:1], 1], _extra = ex
+                    , stride = [key_stride[0:1], 1]
 ; --------- part, second part...
                   ncdf_varget,cdfid,name,tab2,offset=[ixmin $
@@ -335,5 +335,5 @@
                                                       ,firsttps] $
                    ,count=[nx-(key-firstx*key_stride[0]-1)/key_stride[0]-1,ny,jpt] $
-                    , stride = [key_stride[0:1], 1], _extra = ex
+                    , stride = [key_stride[0:1], 1]
 ; on recolle le tout
                   res = [temporary(tab1), temporary(tab2)]
@@ -357,5 +357,5 @@
                                                       ,firstz+izmin $
                                                ,firsttps] $
-             ,count=[nx,ny,nz,jpt], _extra = ex
+             ,count=[nx,ny,nz,jpt]
          END
 ;,,,,,,,,,,,,,,,,,,,,,,,,
@@ -367,5 +367,5 @@
                                                ,firstz*key_stride[2]+izmin $
                                                ,firsttps] $
-             ,count=[nx,ny,nz,jpt], stride = [key_stride, 1], _extra = ex
+             ,count=[nx,ny,nz,jpt], stride = [key_stride, 1]
          END
 ;,,,,,,,,,,,,,,,,,,,,,,,,
@@ -379,5 +379,5 @@
                                                      ,firstz+izmin $
                                                      ,firsttps] $
-                   ,count=[nx,ny,nz,jpt], _extra = ex
+                   ,count=[nx,ny,nz,jpt]
                END
                lastx LE key-1:BEGIN ; on peut tout couper d''un coup
@@ -386,5 +386,5 @@
                                                      ,firstz+izmin $
                                                      ,firsttps] $
-                   ,count=[nx,ny,nz,jpt], _extra = ex
+                   ,count=[nx,ny,nz,jpt]
                END
                ELSE:BEGIN       ; Le tableau est separe en 2 morceaux...
@@ -393,10 +393,10 @@
                                                       ,firstz+izmin $
                                                       ,firsttps] $
-                   ,count=[key-1-firstx+1,ny,nz,jpt], _extra = ex
+                   ,count=[key-1-firstx+1,ny,nz,jpt]
                   ncdf_varget,cdfid,name,tab2,offset=[ixmin $
                                                       ,firsty+iymin $
                                                       ,firstz+izmin $
                                                       ,firsttps] $
-                   ,count=[lastx-key+1,ny,nz,jpt], _extra = ex
+                   ,count=[lastx-key+1,ny,nz,jpt]
                   res = [temporary(tab1), temporary(tab2)]
                END
@@ -415,5 +415,5 @@
                                                      ,firstz*key_stride[2]+izmin $
                                                      ,firsttps] $
-                   ,count=[nx,ny,nz,jpt], stride = [key_stride, 1], _extra = ex
+                   ,count=[nx,ny,nz,jpt], stride = [key_stride, 1]
                END
                lastx*key_stride[0] LE key-1:BEGIN ; on peut tout coupe d''un coup
@@ -422,5 +422,5 @@
                                                      ,firstz*key_stride[2]+izmin $
                                                      ,firsttps] $
-                   ,count=[nx,ny,nz,jpt], stride = [key_stride, 1], _extra = ex
+                   ,count=[nx,ny,nz,jpt], stride = [key_stride, 1]
                END
                ELSE:BEGIN       ; le tableau est separe en 2 morceaux...
@@ -430,5 +430,5 @@
                                                       ,firsttps] $
                    ,count=[(key-firstx*key_stride[0]-1)/key_stride[0]+1,ny,nz,jpt] $
-                   , stride = [key_stride, 1], _extra = ex
+                   , stride = [key_stride, 1]
 ; 2eme bout...
                   ncdf_varget,cdfid,name,tab2,offset=[ixmin $
@@ -438,5 +438,5 @@
                                                       , firsttps] $
                    ,count=[nx-(key-firstx*key_stride[0]-1)/key_stride[0]-1,ny,nz,jpt] $
-                   , stride = [key_stride, 1], _extra = ex
+                   , stride = [key_stride, 1]
 ; on recolle le tout
                   res = [temporary(tab1), temporary(tab2)]
Index: /trunk/SRC/ToBeReviewed/PLOTS/DESSINE/pltt.pro
===================================================================
--- /trunk/SRC/ToBeReviewed/PLOTS/DESSINE/pltt.pro	(revision 191)
+++ /trunk/SRC/ToBeReviewed/PLOTS/DESSINE/pltt.pro	(revision 192)
@@ -464,4 +464,5 @@
       z2d = remplit(z2d,nite=2+keyword_set(nan), mask = mask, /basique, _extra=ex)
       if NOT keyword_set(strictfill) then z2d = min > z2d <  max
+      usetri = 0 ; default definition
       if keyword_set(nan) then BEGIN
         triangulation = triangule(mask, /basic, coinmonte = coinmontemask $
@@ -469,5 +470,4 @@
         usetri = 1
       ENDIF ELSE triangulation = -1 
-      
       IF size(gdep, /n_dimensions) EQ 2 THEN BEGIN
         usetri = 2
Index: /trunk/SRC/ToBeReviewed/STRING/getfile.pro
===================================================================
--- /trunk/SRC/ToBeReviewed/STRING/getfile.pro	(revision 191)
+++ /trunk/SRC/ToBeReviewed/STRING/getfile.pro	(revision 192)
@@ -81,8 +81,4 @@
           endif
         ENDIF ELSE file = filein
-        if !version.os_family EQ 'unix' then begin
-          spawn, 'cat '+file,  res
-          if res[0] NE '' then return, res ELSE return, ''
-        endif
         
         if (!version.release+0. ge 5.5) then begin
Index: unk/SRC/ToBeReviewed/STRING/strrepl.pro
===================================================================
--- /trunk/SRC/ToBeReviewed/STRING/strrepl.pro	(revision 191)
+++ 	(revision )
@@ -1,109 +1,0 @@
-;-------------------------------------------------------------
-;+
-;
-; @file_comments 
-; replace one (or more) character(s)/string(s) in a string
-;
-; @categories
-; String
-;
-; @param STR {in}{required}
-; the string to be changed
-;
-; @param RCHAR {in}{required}
-; replacement character/string
-;
-; @returns
-; another string
-;
-; @restrictions 
-; Known shortcoming: if index is an array, it must contain all
-; valid elements (only the first entry is checked).
-;
-; @examples
-;        ; Convert one letter into upper case
-;
-;        abc = 'abcdefghijklmnopqrstuvwxyz'
-;        print,strrepl(abc,strpos(abc,'m'),'M')
-;
-;        ; prints "abcdefghijklMnopqrstuvwxyz"
-;
-;
-;        ; Use with strwhere function
-;        a = 'abcabcabc'
-;        print,strrepl(a,strwhere(a,'a'),'#')
-;
-;        ; prints  "#bc#bc#bc#bc#bc"
-;
-;       IDL> print, strrepl(a,'bc','!eeee!')
-;       a!eeee!a!eeee!a!eeee!
-;       IDL> print, strrepl(a,'b','0000')
-;       a0000ca0000ca0000
-;       IDL> print, strrepl(a,'toto','0000')
-;       abcabcabc
-;
-; @history
-;        mgs, 02 Jun 1998: VERSION 1.00
-;        sebastien Masson (smlod\@ipsl.jussieu.fr)
-;
-; @version
-; $Id$
-;
-;-
-; Copyright (C) 1998, Martin Schultz, Harvard University
-; This software is provided as is without any warranty
-; whatsoever. It may be freely used, copied or distributed
-; for non-commercial purposes. This copyright notice must be
-; kept with any copy of this software. If this software shall
-; be used commercially or sold as part of a larger package,
-; please contact the author to arrange payment.
-; Bugs and comments should be directed to mgs@io.harvard.edu
-; with subject "IDL routine strrepl"
-;-------------------------------------------------------------
-
-
-function strrepl,str,agument1,rchar
-;
-  compile_opt idl2, strictarrsubs
-;
-   
-   if (n_elements(str) eq 0) then return,''
-   
-                                ; convert strign and replace character to byte
-   BStr = byte(str)
-   new = byte(rchar)
-   if size(agument1, /type) EQ 7 then begin
-      old = byte(agument1)
-      index = strpos(str, agument1)
-      pos = index
-      while strpos(str, agument1, pos+1) NE -1 do BEGIN
-         pos = strpos(str, agument1, pos+1)
-         index = [index, pos]
-      ENDWHILE
-; make sure index is in range
-      if (index[0] lt 0 OR index[0] ge n_elements(BStr)) THEN return,Str
-   ENDIF ELSE BEGIN
-      index = agument1
-      if (index[0] lt 0 OR index[0] ge n_elements(BStr)) then return,Str
-      old = BStr[index[0]]
-   ENDELSE
-                                ; replace indexed characters in string
-   nelenew = n_elements(new)
-   neleold = n_elements(old)
-   nindex = n_elements(index)
-   if nelenew*neleold NE 1 then begin
-      if index[0] EQ 0 then $
-       BStr = [NEW,  BStr[index[0]+neleold: n_elements(BStr)-1] ] ELSE $
-       BStr = [BStr[0:index[0]-1], NEW,  BStr[index[0]+neleold: n_elements(BStr)-1] ]
-      if nindex EQ 1 then return,string(BStr)
-      if nindex GT 2 then $
-       for i = 1, nindex-2 do $
-       BStr = [BStr[0:index[i]+i*(nelenew-neleold)-1], NEW $
-               , BStr[index[i]+i*(nelenew-neleold)+neleold: n_elements(BStr)-1] ]
-      BStr = [BStr[0:index[n_elements(index)-1]+(nindex-1)*(nelenew-neleold)-1], NEW]
-
-   ENDIF ELSE BStr[index] = NEW
-                                ; return result as string
-   return,string(BStr)
-   
-end
Index: /trunk/SRC/ToBeReviewed/STRING/strsed.pro
===================================================================
--- /trunk/SRC/ToBeReviewed/STRING/strsed.pro	(revision 192)
+++ /trunk/SRC/ToBeReviewed/STRING/strsed.pro	(revision 192)
@@ -0,0 +1,59 @@
+;-------------------------------------------------------------
+;+
+;
+; @file_comments 
+; replace one (or more) character(s)/string(s) in a string array
+; "modern" version of the obsolete strrepl
+;
+; @categories
+; String
+;
+; @param STR {in}{required}{type=string array or scalar}
+; the string to be changed
+;
+; @param EXP1 {in}{required}{type=scalar string}
+; a single regular expression (as implemented by the STREGEX function).
+;
+; @param EXP2 {in}{required}{type=scalar string}
+; replacement character/string
+;
+; @keyword FOLD_CASE
+; Indicates that the regular expression matching should be done in a case-insensitive fashion.
+;
+; @returns
+; string array or scalar
+;
+; @examples
+;
+;    IDL> abc = 'abcdefghijklmnopqrstuvwxyz'
+;    IDL> print, strsed(abc, 'm', 'M')
+;    abcdefghijklMnopqrstuvwxyz
+;    IDL> print, strsed(abc, 'm.*t', 'M_T')
+;    abcdefghijklM_Tuvwxyz
+;    IDL> a = 'abcabcabc'
+;    IDL> help, strsed([abc, a, 'eee'], 'abc', 'XXX_')
+;    <Expression>    STRING    = Array[3]
+;    IDL> print, strsed([abc, a, 'eee'], 'abc', 'XXX_')
+;    XXX_defghijklmnopqrstuvwxyz XXX_XXX_XXX_ eee
+;
+; @history
+; Sept 2006: Sebastien Masson (smasson\@lodyc.jussieu.fr)
+;
+; @version
+; $Id$
+;-------------------------------------------------------------
+FUNCTION strsed, str, exp1, exp2, FOLD_CASE = fold_case
+;
+  compile_opt idl2, strictarrsubs
+;
+  strout = str
+  line = stregex(strout, exp1)
+  line = where(line NE -1, cnt)
+  IF cnt GT 0 THEN BEGIN
+    FOR i = 0L, cnt-1 DO $
+       strout[line[i]] = strjoin(strsplit(strout[line[i]], exp1, /extract $
+                                          , /regex, /preserve_null, FOLD_CASE = fold_case), exp2)
+  ENDIF 
+;
+  return, strout
+END
Index: /trunk/SRC/ToBeReviewed/TRIANGULATION/ciseauxtri.pro
===================================================================
--- /trunk/SRC/ToBeReviewed/TRIANGULATION/ciseauxtri.pro	(revision 191)
+++ /trunk/SRC/ToBeReviewed/TRIANGULATION/ciseauxtri.pro	(revision 192)
@@ -16,6 +16,4 @@
 ;
 ; @param GPHI 
-;
-; @keyword ALL
 ; 
 ; @keyword _EXTRA
@@ -36,5 +34,5 @@
 ;------------------------------------------------------------
 ;------------------------------------------------------------
-FUNCTION ciseauxtri, triang, glam, gphi, ALL = all, _EXTRA = ex
+FUNCTION ciseauxtri, triang, glam, gphi, _EXTRA = ex
 ;---------------------------------------------------------
 ;
@@ -115,6 +113,5 @@
    endif
 ;
-; We delete all triangle which are out of the valid frame when  on supprime les triangles qui sont un peu trop hors du cadre
-; valable qd ALL is activated
+; We delete all triangle which are out of the valid frame
 ;
     if keyword_set(key_irregular) then begin
Index: /trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd.pro
===================================================================
--- /trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd.pro	(revision 191)
+++ /trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd.pro	(revision 192)
@@ -88,5 +88,5 @@
     stop
   ENDIF
-  other = cutted[1-start:*:2]
+  IF n_elements(cutted) EQ 1 THEN other = '' ELSE other = cutted[1-start:*:2]
 ; make sure that we have a prefix for each nameexp
   IF start EQ 0 THEN other = ['', other]
Index: /trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/loadgrid.pro
===================================================================
--- /trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/loadgrid.pro	(revision 191)
+++ /trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/loadgrid.pro	(revision 192)
@@ -72,7 +72,4 @@
   IF strmid(listing, 0, 1) NE '@' THEN listing = listing + ', strcalling = ''' + meshfilein + ''', _extra = ex'
 
-print, listing
-
-
   createpro, listing, filename = myuniquetmpdir +'for_createpro.pro', _extra = ex
 
Index: /trunk/SRC/ToBeReviewed/WIDGET/xxx.pro
===================================================================
--- /trunk/SRC/ToBeReviewed/WIDGET/xxx.pro	(revision 191)
+++ /trunk/SRC/ToBeReviewed/WIDGET/xxx.pro	(revision 192)
@@ -356,5 +356,5 @@
 ; computation done on the files...
   if keyword_set(uvalue) then txtvalue = (extractatt(uvalue, 'txtcmd'))[numdessinin] $
-  ELSE txtvalue = varexp
+  ELSE txtvalue = '"' + varexp + '"'
   dummyid = widget_text(base, value = txtvalue, uvalue = {name:'txtcmd'}, uname = 'txtcmd' $
                         , /editable, yoffset = yoff, xsize = 54, /frame)
Index: /trunk/SRC/Utilities/mergeonline_help.pro
===================================================================
--- /trunk/SRC/Utilities/mergeonline_help.pro	(revision 191)
+++ /trunk/SRC/Utilities/mergeonline_help.pro	(revision 192)
@@ -23,8 +23,12 @@
   compile_opt idl2, strictarrsubs
 ;
-; Are we using a "Unix" machine?
-  IF !d.name NE 'X' THEN return
 ; is the IDL version at least 6.2 ?
-  IF float(strmid(!version.release, 0, 3)) LT 6.2 THEN return
+  IF float(strmid(!version.release, 0, 3)) LT 6.2 THEN BEGIN
+    print, 'Warning: You need at least IDL 6.2 to use SAXO/IDL merged online help'
+    return
+  ENDIF
+;---------------------------------------------------------------
+; check directories 
+;---------------------------------------------------------------
 ; get the environment variable $HOME
   home = getenv('HOME')
@@ -34,4 +38,10 @@
   home = (file_search(home, /test_directory, /test_write, /mark_directory))[0]
   IF home EQ '' THEN return
+
+; is !dir + '/help/online_help a directory ?
+  homeidl = !dir + '/help/online_help'
+  homeidl = (file_search(homeidl, /test_directory, /mark_directory))[0]
+  IF homeidl EQ '' THEN return
+
 ; is $HOME/.assistant a directory ? if not, create it
   homeassist = home + '.assistant'
@@ -40,5 +50,5 @@
   homeassist = (file_search(homeassist, /test_directory, /test_write, /mark_directory))[0]
   IF homeassist EQ '' THEN return
-; is "$HOME/.assistant/src a directory ? if not, create it?
+; is $HOME/.assistant/src a directory ? if not, create it?
   homesrc = homeassist + 'src'
   IF file_test(homesrc, /directory) EQ 0 THEN file_mkdir, homesrc
@@ -46,27 +56,114 @@
   homesrc = (file_search(homesrc, /test_directory, /test_write, /mark_directory))[0]
   IF homesrc EQ '' THEN return
+
+  homesaxo = file_dirname(find('buildinit.pro'), /mark_directory) + 'Documentation/idldoc_assistant_output/'
+  IF file_test(homesaxo + 'idldoc-lib.adp') EQ 0 THEN BEGIN
+    print, 'Error when looking for the file '+ homesaxo + 'idldoc-lib.adp...'
+    return
+  ENDIF
+;---------------------------------------------------------------
+; check existance and version of the file that need to be created
+;---------------------------------------------------------------
+
 ; do idl.adp and home.html already exists?
   IF file_test(homesrc + 'home.html') AND file_test(homesrc + 'idl.adp') $
-    AND file_test(homesrc + 'aboutsaxo.txt') THEN BEGIN 
-    !help_path = homesrc
-    return
+     AND file_test(homesrc + 'aboutsaxo.txt') THEN BEGIN
+; is the revision version of homesrc+'idl.adp' the same of homesaxo + 'idldoc-lib.adp' ?
+; is $Id found in homesrc+'idl.adp'
+    idladp = getfile(homesrc+'idl.adp')
+    line = strmatch(idladp, '*$Id*')
+    line = (where(line EQ 1))[0]
+    IF line NE -1 THEN BEGIN
+      new = idladp[line]
+; is $Id  found in homesaxo + 'idldoc-lib.adp'
+      saxoadp = getfile(homesaxo + 'idldoc-lib.adp')
+      line = strmatch(saxoadp, '*$Id*')
+      line = (where(line EQ 1))[0]
+      IF line NE -1 THEN BEGIN
+        old = saxoadp[line]
+; are the 2 revision tags the same??
+        IF array_equal(old, new) THEN BEGIN
+          !help_path = homesrc
+          print, 'Use SAXO/IDL merged online help...'
+          return
+        ENDIF
+      ENDIF
+    ENDIF
   ENDIF
-; create idl.adp and home.html
-  homeidladp = !dir + '/help/online_help'
-  IF file_test(homeidladp + '/idl.adp') EQ 0 THEN BEGIN
-    print, 'Error when looking for the file '+homeidladp + '/idl.adp ...'
-    print, 'Check the value or your environment variable $IDL_DIR that defines !dir'
-    return
-  ENDIF
-  homesaxoadp = file_dirname(find('buildinit.pro'), /mark_directory) + 'Documentation/idldoc_assistant_output'
-;  
-  spawn, homesaxoadp + '/../xmldoc/mergeonline_help.sh' $
-         + ' ' + homeidladp $
-         + ' ' + homesaxoadp $
-         + ' ' + homesrc $
-         + ' ' + !version.release $
-         , /sh, exit_status = err
+;---------------------------------------------------------------
+; build homesrc + 'idl.adp'
+;---------------------------------------------------------------
+; --- modify the original idl.adp ---
+  idladp = getfile(homeidl+'idl.adp')
+; extract part from </profile> to </assistantconfig>
+  line1 = strmatch(idladp, '*</profile>*')
+  line1 = (where(line1 EQ 1))[0]
+  line2 = strmatch(idladp, '*</assistantconfig>*')
+  line2 = (where(line2 EQ 1))[0] - 1L
+  idladp = idladp[line1:line2]
+; put the complete path of the references
+  idladp = strsed(idladp, 'ref=\"', 'ref="'+homeidl)
+; --- modify the original idldoc-lib.adp ---
+  saxoadp = getfile(homesaxo + 'idldoc-lib.adp')
+; extract part from </profile>
+  line1 = strmatch(saxoadp, '*</profile>*')
+  line1 = (where(line1 EQ 1))[0] + 1
+  saxoadp = saxoadp[line1:*]
+; put the complete path of the references
+  saxoadp = strsed(saxoadp, 'ref=\"', 'ref="'+homesaxo)
+; --- merge idl.adp and idldoc-lib.adp, add an header and write it in a new file ---
+  header = ['<!DOCTYPE DCF>' $
+            , '<assistantconfig version="3.3.0">' $
+            , '   <profile>' $
+            , '      <property name="name">SAXO - IDL ' + !version.release + ' Help</property>' $
+            , '      <property name="title">SAXO - IDL ' + !version.release + ' Help</property>' $
+            , '      <property name="startpage">' + homesrc + 'home.html</property>' $
+            , '      <property name="aboutmenutext">About SAXO</property>' $
+            , '      <property name="abouturl">' + homesrc + 'aboutsaxo.txt</property>' $
+            , '      <property name="assistantdocs">' + homeidl + '</property>']
+  newadp = [temporary(header), temporary(idladp), temporary(saxoadp)]
 ;
-  IF err EQ 0 THEN !help_path = homesrc
+  putfile, homesrc + 'idl.adp', temporary(newadp)
+;---------------------------------------------------------------
+; build homesrc + 'home.html'
+;---------------------------------------------------------------
+  homehtml = getfile(homeidl+'home.html')
+; put the complete path of the references
+  homehtml = strsed(homehtml, 'ref=\"', 'ref="'+homeidl)
+; find the first line containing '</h3>'
+  line = strmatch(homehtml, '*</h3>*')
+  line = (where(line EQ 1))[0]
+; insert one line after this line
+  homehtml = [homehtml[0:line] $
+              , '<a name="SAXOdir"> </a><p class="pIndentedRelative"><img src="images/blueball_idl.gif" id="blueballSAXOdir" border="0" hspace="0" vspace="0"/> &#160;&#160;<a href="' + homesaxo + 'home.html">SAXO Directory</a></p>' $
+              , homehtml[line+1:*]]
+; find the last line containing '</h3>'
+  line = strmatch(homehtml, '*</h3>*')
+  line = (where(line EQ 1, cnt))[cnt-1]
+; insert one line after this line
+  homehtml = [homehtml[0:line] $
+              , '<a name="SAXOweb"> </a><p class="pIndentedRelative"><img src="images/blueball_idl.gif" id="blueballSAXOweb" border="0" hspace="0" vspace="0"/> &#160;&#160;<a href="http://forge.ipsl.jussieu.fr/saxo">SAXO Home Page</a> </p>' $
+              , homehtml[line+1:*]]
+
+; put the complete path of the images
+  homehtml = strsed(homehtml, 'src=\"', 'src="'+homeidl)
+; except for SAXOIDL_OnlineHelp_title.png
+  homehtml = strsed(homehtml, 'src=\".*IDL_OnlineHelp_Title\.gif\"', 'src="' + homesaxo + '../xmldoc/images/SAXOIDL_OnlineHelp_title.png"')
+;
+  putfile, homesrc + 'home.html', temporary(homehtml)
+;---------------------------------------------------------------
+; build homesrc + 'aboutsaxo.txt'
+;---------------------------------------------------------------
+  about = getfile(homesaxo + '../../overview')
+; remove the lines containing @
+  lines = strmatch(about, '@*')
+  about = about[where(lines EQ 0)]
+; add some informattions:
+  about = [about, '', 'More informations on', 'http://forge.ipsl.jussieu.fr/saxo', '']
+; 
+  putfile, homesrc + 'aboutsaxo.txt', temporary(about)
+;---------------------------------------------------------------
+  print, 'Merge of SAXO and IDL online help done...'
+  !help_path = homesrc
 ;
   RETURN
