#!/bin/bash
#
# File: /usr/local/bin/cpflash
#
# Program is usefull for download flash videos in parts (or whole) from internet.
# It give them a usefull name, move the flash files from a workdir to a videodir.
#
#    Copyright (C) 2014  Ingo Kaesmann
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
#
# Script template: 0.3.0
#
# Exit codes:
# 0 = OK
# 1 = Error in parameters
# 2 = Error inn configfile, configfile old or not found
# 3 = Library old or not found
##############################################################################
# SOURCE FILES

. /usr/local/etc/main-inka-sh.conf			# config main
. $LLIBDIR/lib-inka-std.sh				# functions general
#. /usr/local/etc/x.conf				# global config
test -e ~/.inka-mediarc && . ~/.inka-mediarc		# local config
##############################################################################
# DECLARATION OF VARIABLES

# STRINGS
pkgname=inka-media					# package name
lib_inka_std_sh_needed=1.3.6				# standard lib version
conf_file_needed=0.3.0					# conf file version
#----------------------- end of variables to configure -----------------------
version=$(grep "^VERSION" $PROGREG/$pkgname.inf | cut -f 2)	# version
scriptname=$(basename $0)				# name of script
tempfile=$TEMPDIR/$scriptname.$UID.$$.tmp		# temporary file
infolog="logger -p user.info -t $scriptname --"		# log info messages
errlog="logger -p user.err -t $scriptname -- ERROR:"	# log error messages
debuglog="logger -p user.debug -t $scriptname -- DEBUG:" # log debug messages
debug=no						# debug=yes/no
verbose=""						# verbose=""/-q/-v
opt_found=no						# opt_found=yes/no
opt=""							# option
#------------------------- end of standard variables -------------------------
vidpath="$Videodir"		# actual video path
fdlist=$tempfile.fdlist.tmp	# list of all downloaded video files
vidlist=$tempfile.vidlist.tmp	# list of downloaded video files to copy
partlist=$tempfile.partlist.tmp	# list of part numbers or video names of downloaded videos to copy
gnashsubdir=""			# subdir of gnash that contains flashvideos
ret=0
#-----------------------------------------------------------------------------
uline="\
 /                                                                           \\"

gline="\
 \\___________________________________________________________________________/"

head="\
  ___________________________________________________________________________
 /                                                                           \\
 |                               c p f l a s h                               |
 \\___________________________________________________________________________/"

plinemain="\
 /                                                                           \\
 | Menue: Hauptmenue                                                         |
 \\___________________________________________________________________________/"

mlinemain="\
 /                                                                           \\
 | (q)uit                          (h)ilfe                                   |
 | K(o)nfiguration...                                                        |
 | (i)nfo ueber cpflash...                                                   |
 | Unterverzeichnisse des Downloadverzeichnisses (e)ntfernen                 |
 | mehrteilige Videos ko(p)ieren...                                          |
 | mehrteilige Videos (s)peichern...                                         |
 | einteilige Videos ko(P)ieren...                                           |
 | einteilige Videos (S)peichern...                                          |
 \\___________________________________________________________________________/"

plineconfig="\
 /                                                                           \\
 | Menue: Konfiguration                                                      |
 \\___________________________________________________________________________/"

mlineconfig="\
 /                                                                           \\
 | (q)uit                          (h)ilfe                         Zu(r)ueck |
 | anzeigen der von Gnash ben(u)tzten Webdomain                              |
 | auswaehlen der von Gnash zu benutzenden Web(d)omain                       |
 | (a)nzeigen der Konfiguration                                              |
 | (e)ditieren der Konfiguration                                             |
 \\___________________________________________________________________________/"
 
plineinfocpflash="\
 /                                                                           \\
 | Menue: Info ueber cpflash                                                 |
 \\___________________________________________________________________________/"

mlineinfocpflash="\
 /                                                                           \\
 | (q)uit                          (h)ilfe                         Zu(r)ueck |
 | anzeigen von In(f)ormationen ueber cpflash                                |
 | anzeigen der GNU General Public (l)icense Version 2                       |
 \\___________________________________________________________________________/"
 
plinecopyflash="\
 /                                                                           \\
 | Menue: mehrteiliges Video kopieren                                        |
 \\___________________________________________________________________________/"

mlinecopyflash="\
 /                                                                           \\
 | (q)uit                          (h)ilfe                         Zu(r)ueck |
 | (o)ffene Videos merken                                                    |
 | (n)eues Video beginnen                                                    |
 | Videoliste (k)orrigieren                                                  |
 | Video ko(p)ieren                                                          |
 | Nummer des Videoteils (1) - (99)                                          |
 \\___________________________________________________________________________/"

plinecopysingleflash="\
 /                                                                           \\
 | Menue: einteiliges Video kopieren                                         |
 \\___________________________________________________________________________/"

mlinecopysingleflash="\
 /                                                                           \\
 | (q)uit                          (h)ilfe                         Zu(r)ueck |
 | (o)ffene Videos merken                                                    |
 | (n)eue Videos beginnen                                                    |
 | Videoliste (k)orrigieren                                                  |
 | Videos ko(p)ieren                                                         |
 | Name des Videos (Name_des_Videos)                                         |
 \\___________________________________________________________________________/"

plinesaveflash="\
 /                                                                           \\
 | Menue: mehrteiliges Video Speichern                                       |
 \\___________________________________________________________________________/"

mlinesaveflash="\
 /                                                                           \\
 | (q)uit                          (h)ilfe                         Zu(r)ueck |
 | Arbeitsverzeichn(i)s anzeigen                                             |
 | (n)eues Verzeichnis im Videopfad anlegen                                  |
 | (a)ktuellen Videopfad aendern                                             |
 | Video im aktuellen Videopfad (s)peichern                                  |
 \\___________________________________________________________________________/"

plinesavesingleflash="\
 /                                                                           \\
 | Menue: einteiliges Video Speichern                                        |
 \\___________________________________________________________________________/"

mlinesavesingleflash="\
 /                                                                           \\
 | (q)uit                          (h)ilfe                         Zu(r)ueck |
 | Arbeitsverzeichn(i)s anzeigen                                             |
 | (n)eues Verzeichnis im Videopfad anlegen                                  |
 | (a)ktuellen Videopfad aendern                                             |
 | 1. Video im aktuellen Videopfad (s)peichern                               |
 \\___________________________________________________________________________/"

bgline="\
                                                                             |\r\c"

plinedeldir="\
 /                                                                           \\
 | Menue: Unterverzeichnisse des Downloadverzeichnises entfernen             |
 \\___________________________________________________________________________/"


mlinedeldir="\
 /                                                                           \\
 |                                 (h)ilfe                                   |
 | Verzeichnisinhalte anze(i)gen und auswaehlen                              |
 | (o)k, Verzeichnisse entfernen                                             |
 | (n)ein, Verzeichnisse nicht entfernen                                     |
 \\___________________________________________________________________________/"



# NUMBERS
err=0							# exit code

##############################################################################
# FUNCTIONS

function show_help ()
{
# Show help.
# Uses: cat
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG show_help: $# $@" >&2
	#$debuglog show_help: $# $@
fi

cat <<EOT

Aufruf: $scriptname [OPTION]
Dient dem Verschieben heruntergeladener Flash-Videos.

-h, --help      Hilfe anzeigen und beenden
 --version      Versionsinformationen anzeigen und beenden
--show-config   Programmkonfiguration anzeigen und beenden
   --debug      Debug-Modus benutzen

ohne Option     Start des interaktiven Modus

EOT
return 0
}
#-----------------------------------------------------------------------------
function help_proc ()
{
# Show help in interactive program mode.
# Uses:$PAGER
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG help_proc: $# $@" >&2
	#$debuglog help_proc: $# $@
fi

$PAGER <<EOT

                              Hilfe fuer cpflash

==============================================================================
                              Aufbau der Ansicht

Der obere Bereich zeigt den Namen des Programms an.
Der mittlere Bereich zeigt die aktuelle Position im Menue an.
Der untere Bereich zeigt die aktuell waehlbaren Befehle an.
Ggf. gibt es einen weiteren Bereich darunter, der den aktuellen Pfad anzeigt.

==============================================================================
                                  Eingabe

Die  in  runden  Klammern stehenden Buchstaben muessen je nach Angabe entweder
als Klein- oder  Grossbuchstaben  eingegeben  werden.  Abschliessend  an  eine
Eingabe ist die Enter-Taste zu druecken.

Bei  moeglichen  Aenderungen  werden diese und weitere Informationen im in der
Systemkonfiguration eingestellten Editor dargestellt. Die erste Zeile ist ggf.
zu aendern,  die weiteren Zeilen dienen nur der Information und koennen stehen
gelassen werden. Die Datei danach speichern und den Editor beenden.

==============================================================================
                                   Ausgabe

Die Ausgabe der Befehle erfolgt entweder unterhalb der cpflash-Bereiche,  oder
im in der Systemkonfiguration eingestellten Pager.

==============================================================================
                                  Benutzung

Wenn im Text von Browser-Tab die Rede  ist,  ist  damit  ein  Browser-Tab  mit
Flash-Video gemeint.  Andere Browser-Tabs sind irrelevant. Anstatt Browsertabs
koennen auch Browserinstanzen benutzt werden.

Vor dem Herunterladen eines Videos das Programm starten.

Wenn ein Flashplayer (z.B. Gnash) oder Downloadprogramm benutzt wird,  das ein
Unterverzeichnis anlegt,  das den Namen der Domain benutzt ( inkl.  www. ) und
darin  speichert,  kann  anschliessend der Verzeichnisname eingetragen werden.
Enthaelt das konfigurierte Downloadverzeichnis momentan  keine  Unterverzeich-
nisse, ist das jedoch nicht noetig.  Das Verzeichnis, das vom Flashplayer oder
Downloadprogramm angelegt wird, wird automatisch erkannt.

Waehrend  der Benutzung dieses Programms duerfen ausser dem Flashplayer,  bzw.
dem Downloadprogramm keine weiteren Programme benutzt werden, die in  die  vom
Programm verwendeten Verzeichnisse speichern.

Wenn  bei Benutzung von Gnash nach dem Herunterladen von Videos von einer Web-
seite weitere Videos von einer anderen Webseite heruntergeladen werden sollen,
muessen  erstmal  die  heruntergeladenen Videos kopiert werden.  Danach ist es
erforderlich,  die neue  Domain  einzutragen,  bzw.  auszuwaehlen.   Nach  dem
Wechseln in ein Kopiermenue ist 'neues Video beginnen' zu waehlen.

Ein  Wechsel  zwischen mehrteiligen und einteiligen Videos ist nicht moeglich,
bevor die heruntergeladenen Videos gespeichert werden. Ebenso ist kein Wechsel
zwischen Downloadprogrammen mit Speicherung im Downloadverzeichnis und anderen
mit Speicherung in Unterverzeichnissen des Downloadverzeichnisses moeglich. Im
zweiten Fall muessen nach dem Speichern der Videos die Unterverzeichnisse ent-
fernt werden.  'Unterverzeichnisse des Downloadverzeichnisses entfernen'  kann
dazu benutzt werden.

Beim Beenden des Programms werden leere Downloadverzeichnisse automatisch ent-
fernt. Verzeichnisse mit Inhalt werden angezeigt und die Moeglichkeit der Ent-
fernung  angeboten,  da  das  erneute Benutzen des Programms in Verbindung mit
einem Downloadprogramm mit anderem Downloadverzeichnis zu Problemen fuehrt.

------------------------------------------------------------------------------
                              Mehrteilige Videos

Ins Menue 'mehrteilige Videos kopieren' wechseln.

Dann  mit  einem  Browser  das Herunterladen des gewuenschten Teils des Videos
starten.

Vor  dem  Aendern  der  Aufloesung  im Flashplayer eines jeden Videoteils muss
immer 'offene Videos merken' benutzt werden.

Dann die Zahl,  die dem Teil des mehrteiligen Videos entspricht,  eingeben und
mit der Enter-Taste bestaetigen.

Dann  weitere  Teile  des  Videos  herunterladen  und  nach  jedem Start eines
Downloads ebenfalls die Teil-Nummer eingeben.

Es darf kein Browser-Tab,  in dem ein zu kopierendes Videoteil heruntergeladen
wird, geschlossen werden, bevor der Download abgeschlossen ist.

Wenn  das  heruntergeladene  Video   ( alle Teile )   nicht  gewuenscht  wird,
'neues Video beginnen' benutzen, bevor das naechste heruntergeladen wird.  Die
nicht  benoetigten Browser-Tabs koenen vorher oder nachher geschlossen werden.

Wenn  nach Beginn des Herunterladens von Videoteilen ein Video heruntergeladen
wird, das nicht zu dem bereits angefangenen mehrteiligen Video gehoert,  keine
Teil-Nummer  eingeben,  jedoch  vor  dem  Herunterladen  des  naechsten  Teils
'offene Videos merken' benutzen.

Die nicht notwendige Benutzung von 'offene Videos merken'  vor  dem  Herunter-
laden eines Videoteils, fuehrt nicht zu einem Fehler.

Wenn  irrtuemlich  das Herunterladen eines nicht dazu gehoerendes Video(teil)s
begonnen wurde und eine Teil-Nummer eingegeben wurde, 'Videoliste korrigieren'
benutzen und die letzte Zeile entfernen. Dann 'offene Videos merken' benutzen.
Danach kann der neue Videoteil heruntergeladen werden.  Die nicht  benoetigten
Browser-Tabs koenen vorher oder nachher geschlossen werden.

Die   mehrmalige  Vergabe  der  gleichen  Nummer  darf  nicht  erfolgen.  Wenn
Teilnummern  falsch  vergeben  wurden,  den  Befehl  'Videoliste  korrigieren'
benutzen und die rechts stehenden Teilnummern korrigieren. Die im Editor links
stehenden  Dateinamen  sollten  nicht geaendert werden.  Jedem Dateinamen muss
durch einen Tabulator getrennt eine Teilnummer zugewiesen sein.

------------------------------------------------------------------------------
                               Einteilige Videos

Ins Menue 'einteilige Videos kopieren' wechseln.

Dann  mit  einem  Browser  das  Herunterladen des gewuenschten Videos starten.

Vor  dem  Aendern  der Aufloesung im Flashplayer eines jeden Videos muss immer
'offene Videos merken' benutzt werden.

Dann den Namen des Videos eingeben und mit der Enter-Taste bestaetigen.

Ggf. weitere einteilige  Videos  herunterladen  und  nach  jedem  Start  eines
Downloads ebenfalls den Namen eingeben.

Wenn alle Videos nicht gewuenscht werden,  'neue  Videos  beginnen'  benutzen,
bevor  das  naechste heruntergeladen wird.  Die nicht benoetigten Browser-Tabs
koennen vorher oder nachher geschlossen werden.

Wenn  ein  Video  heruntergeladen  wird,  das  nicht  gewuenscht wird,  keinen
Namen   eingeben,   jedoch   vor   dem   Herunterladen  des  naechsten  Videos
'offene Videos merken' benutzen.

Die nicht notwendige Benutzung von 'offene Videos merken'  vor  dem  Herunter-
laden eines Videoteils, fuehrt nicht zu einem Fehler.

Wenn ein Video heruntergeladen wird,  das nicht gewuenscht wird,  aber bereits
ein Name eingegeben wurde,  'Videoliste korrigieren' benutzen und  die  letzte
Zeile entfernen.

Die  mehrmalige  Vergabe  des gleichen Namens darf nicht erfolgen.  Wenn Namen
falsch geschrieben wurden,  den Befehl 'Videoliste  korrigieren'  benutzen und
die  rechts  stehenden  Namen  korrigieren.  Die  im  Editor  links  stehenden
Dateinamen sollten nicht geaendert werden.  Jedem Dateinamen muss durch  einen
Tabulator getrennt ein Videoname zugewiesen sein.

------------------------------------------------------------------------------
                                 Gemeinsam:

Nach dem Herunterladen aller Videos / Videoteile 'Video kopieren' benutzen.

Nach dem beendeten Kopiervorgang ins Menue 'mehrteilige Videos speichern', oder
'einteilige Videos speichern' wechseln.

Mit   'Arbeitsverzeichnis   anzeigen'   wird   der  Inhalt  des  Verzeichnises
angezeigt, das dem kurzzeitigen Speichern und Bearbeiten von Videos dient.

Mit  'neues Verzeichnis anlegen'  kann  innerhalb  des  Videopfads  ein  neues
Verzeichnis angelegt werden.

Mit  'aktuellen  Videopfad  aendern'  wird der aktuelle Videopfad,  in dem das
Video gespeichert wird, angezeigt und kann geaendert werden.

'Video in aktuellem Videopfad speichern' benutzen, wenn der aktuelle Videopfad
korrekt ist.  Im aktuellen Videopfad wird ein Verzeichis angelegt, dessen Name
dem Namen des Videos entspricht. Bei mehrteiligen Videos werden alle Videos in
dieses Verzeichnis verschoben.  Bei einteiligen Videos wird das erste Video in
dieses Verzeichnis verschoben.

Wenn  ein  weiteres  Video  heruntergeladen werden soll,  ins Menue 'Kopieren'
wechseln und 'neues Video beginnen' benutzten.

==============================================================================
                                  Navigation

Hauptmenue
|-- Quit
|-- Hilfe
|-- Konfiguration
|	|-- Quit
|	|-- Hilfe
|	|-- Zurueck
|	|-- anzeigen der von Gnash benutzten Webdomain
|	|-- auswaehlen der von Gnash zu benutzenden Webdomain
|	|-- anzeigen der Konfiguration
|	\`-- editieren der Konfiguration
|
|-- Info ueber cpflash
|	|-- Quit
|	|-- Hilfe
|	|-- Zurueck
|	|-- Anzeige von Informationen ueber cpflash
|	\`-- Anzeige der GNU General Public License Version 2
|
|-- Unterverzeichnisse des Downloadverzeichnisses entfernen
|
|-- mehrteiliges Video kopieren
|	|-- Quit
|	|-- Hilfe
|	|-- Zurueck
|	|-- offene Videos merken
|	|-- neues Video beginnen
|	|-- Videoliste korrigieren
|	|-- Video kopieren
|	\`-- Nummer des Videoteils
|
|-- mehrteiliges Video Speichern
|	|-- Quit
|	|-- Hilfe
|	|-- Zurueck
|	|-- Arbeitsverzeichnis anzeigen
|	|-- neues Verzeichnis im Videopfad anlegen
|	|-- aktuellen Videopfad aendern
|	\`-- Video im aktuellen Videopfad speichern
|
|-- einteiliges Video kopieren
|	|-- Quit
|	|-- Hilfe
|	|-- Zurueck
|	|-- offene Videos merken
|	|-- neue Videos beginnen
|	|-- Videoliste korrigieren
|	|-- Videos kopieren
|	\`-- Name des Videos
|
\`-- einteiliges Video Speichern
	|-- Quit
	|-- Hilfe
	|-- Zurueck
	|-- Arbeitsverzeichnis anzeigen
	|-- neues Verzeichnis im Videopfad anlegen
	|-- aktuellen Videopfad aendern
	\`-- 1. Video im aktuellen Videopfad speichern

EOT
return 0
}
#-----------------------------------------------------------------------------
function show_config ()
{
# Show configuration of program
# Uses: cat, cut, grep
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG show_config: $# $@" >&2
	#$debuglog show_config: $# $@
fi

cat <<EOT

Von Gnash oder einem Downloadprogramm zum Speichern benutzes Verzeichnis:
$Gnashupdir

Arbeitsverzeichnis zum vorlaeufigen Speichern:
$Workdir

Videoverzeichnis zum Endspeichern:
$Videodir

Anzahl der Schraegstriche im Videopfad plus 1:
$Level

Liste aller vorhandenen Videos:
$Allvidsfile

Liste der gesehenen Videos:
$Seenvidsfile

Liste der neuen Videos:
$Newvidsfile

EOT

return 0
}
#-----------------------------------------------------------------------------
function main_menue ()
{
# Mainmenue.
# Uses: clear, echo, read, rm
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG main_menue: $# $@" >&2
	#$debuglog main_proc: $# $@
fi

local cmd="" i="" string=""

while :; do
	# show quasi-windows
	clear
	echo "$head"
	echo "$plinemain"
	echo "$mlinemain"

	read cmd
	case "$cmd" in
		q)	rm -f $fdlist $vidlist $partlist;del_dirs;clear;exit 0;;
		h)	help_proc;;
		o)	config_menue;;			# menue of show config
		i)	info_cpflash_menue;;		# menue of info about cpflash
		e)	del_dirs;;
		p)					# menue of copy multi part videos
			
			g_notice_open_videos
			copy_flash_menue;;
		s)	save_flash_menue;;		# move menue of multi part videos
		P)					# menue of copy single part videos
			g_notice_open_videos
			copy_single_flash_menue;;
		S)	save_single_flash_menue;;	# move menue of single part videos
	esac

done
return 0
}
#-----------------------------------------------------------------------------
function config_menue ()
{
# Build config menue and get there commands
# Uses: clear, echo, read, rm
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG config_menue: $# $@" >&2
	#$debuglog config_menue: $# $@
fi

local cmd="" i="" string=""

while :; do
	# show quasi-windows
	clear
	echo "$head"
	echo "$plineconfig"
	echo "$mlineconfig"

	read cmd
	case "$cmd" in
		q)	rm -f $fdlist $vidlist $partlist;del_dirs;clear;exit 0;;
		h)	help_proc;;
		r)	return 0;;
		u)					# show gnash-used website
			echo "Von Gnash benutzte Webseite: $gnashsubdir"
			echo ""
			echo "Weiter mit Enter-Taste."
			read string;;
		d)	select_gnashsubdir;;		# select webdomain
		a)	show_config | $PAGER;;
		e)	$EDITOR ~/.inka-mediarc;. ~/.inka-mediarc;;
	esac
done
return 0
}
#-----------------------------------------------------------------------------
function info_cpflash_menue ()
{
# Shows infos about cpflash and shows the license.
# Uses: cat, clear, echo, read, rm
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG info_cpflash_menue: $# $@" >&2
	#$debuglog info_cpflash_menue: $# $@
fi

local cmd="" i=""

while :; do
	# show quasi-windows
	clear
	echo "$head"
	echo "$plineinfocpflash"
	echo "$mlineinfocpflash"

	read cmd
	case "$cmd" in
		q)	rm -f $fdlist $vidlist $partlist $tempfile;del_dirs;clear;exit 0;;
		h)	help_proc;;
		r)	rm -f $tempfile;return 0;;
		f)					# show cpflash info
			echo "" > $tempfile
			echo "$scriptname" >> $tempfile
			echo "Version: $version" >> $tempfile
			echo "copyright (C) 2011, Ingo Kaesmann ingo@ingokaesmann.de" >> $tempfile
			echo "Dieses Programm wird unter den Bedingungen der GPL Vers. 2 veroeffentlicht." >> $tempfile
			echo "Es wird OHNE GARANTIE vertrieben." >> $tempfile
			cat $tempfile | $PAGER;;
		l)	cat /usr/local/share/doc/packages/$pkgname/GPL-2.0.txt | $PAGER;;	# show gpl
	esac
done
return 0
}
#-----------------------------------------------------------------------------
function copy_flash_menue ()
{
# Provide commands for copy videos from $Gnashupdir/$gnashsubdir to work dir.
# Format of lines in $vidlist: FILENAME Tabulator PARTNUMBER
# Uses: clear, echo, ls, read
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG copy_flash_menue: $# $@" >&2
	#$debuglog copy_flash_menue: $# $@
fi

local cmd i
cmd=""
i=""

while :; do
	# show quasi-windows
	clear
	echo "$head"
	echo "$plinecopyflash"
	echo "$mlinecopyflash"

	read cmd
	case "$cmd" in
		q)	rm -f $fdlist $vidlist $partlist;del_dirs;clear;exit 0;;
		h)	help_proc;;
		r)	return 0;;
		o)	g_notice_open_videos;;		# note open videos
		n)					# new video - forget old videos and there numbers
			rm -f $vidlist $partlist
			g_notice_open_videos;;
		k)	work_videolist;;		# work videolist
		p)	copy_videos;;			# copy videos
		*)	g_add_new_video $cmd;;		# new video
	esac
done
return 0
}
#-----------------------------------------------------------------------------
function copy_single_flash_menue ()
{
# Provide commands for copy single part videos from $Gnashupdir/$gnashsubdir
# to work dir.
# Format of lines in $vidlist: FILENAME Tabulator VIDEONAME
# Uses: clear, echo, ls, read
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG copy_single_flash_menue: $# $@" >&2
	#$debuglog copy_single_flash_menue: $# $@
fi

local cmd i
cmd=""
i=""

while :; do
	# show quasi-windows
	clear
	echo "$head"
	echo "$plinecopysingleflash"
	echo "$mlinecopysingleflash"

	read cmd
	case "$cmd" in
		q)	rm -f $fdlist $vidlist $partlist;del_dirs;clear;exit 0;;
		h)	help_proc;;
		r)	return 0;;
		o)	g_notice_open_videos;;		# note open videos
		n)					# new videos - forget old videos and there names
			rm -f $vidlist $partlist
			g_notice_open_videos;;
		k)	work_videolist;;		# work videolist
		p)	copy_single_videos;;		# copy single part videos
		*)	g_add_new_single_video $cmd;;	# new single part video
	esac
done
return 0
}
#-----------------------------------------------------------------------------
function save_flash_menue ()
{
# Provides commands for move from work dir to video dir.
# Uses: clear, echo, read
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG save_flash_menue: $# $@" >&2
	#$debuglog save_flash_menue: $# $@
fi

local cmd i
cmd=""
i=""

while :; do
	# show quasi-windows
	clear
	echo "$head"
	echo "$plinesaveflash"
	echo "$mlinesaveflash"
	echo "$uline"
	echo -e "$bgline"
	echo " | Pfad: $vidpath"
	echo "$gline"

	read cmd
	case "$cmd" in
		q)	rm -f $fdlist $vidlist $partlist;del_dirs;clear;exit 0;;
		h)	help_proc;;
		r)	return 0;;
		i)	ls -1 $Workdir | $PAGER;;	# show files in work dir
		n)	make_new_dir;;			# create new dir
		a)	change_actual_path;;		# change video dir for storing
		s)	save_video;;			# move video from work dir to video dir
	esac
done
return 0
}
#-----------------------------------------------------------------------------
function save_single_flash_menue ()
{
# Provides commands for move from work dir to video dir.
# Uses: clear, echo, read
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG save_single_flash_menue: $# $@" >&2
	#$debuglog save_single_flash_menue: $# $@
fi

local cmd i
cmd=""
i=""

while :; do
	# show quasi-windows
	clear
	echo "$head"
	echo "$plinesavesingleflash"
	echo "$mlinesavesingleflash"
	echo "$uline"
	echo -e "$bgline"
	echo " | Pfad: $vidpath"
	echo "$gline"

	read cmd
	case "$cmd" in
		q)	rm -f $fdlist $vidlist $partlist;del_dirs;clear;exit 0;;
		h)	help_proc;;
		r)	return 0;;
		i)	ls -1 $Workdir | $PAGER;;	# show files in work dir
		n)	make_new_dir;;			# create new dir
		a)	change_actual_path;;		# change video dir for storing
		s)	save_single_video;;		# move first video from work dir to video dir
	esac
done
return 0
}
#-----------------------------------------------------------------------------
function select_gnashsubdir ()
{
# Show existing gnashsubdirs in Gnashupdir in editor.
# Uses: cd, echo, find, read, rm
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG select_gnashsubdir: $# $@" >&2
	#$debuglog select_gnashsubdir: $# $@
fi

local string=""
						# info message
echo "In der ersten Zeile ist die Webseitendomain einzutragen,"
echo "bzw. auszuwaehlen, von der Gnash Flashdateien herunterlaed."
echo ""
echo "Weiter mit Enter-Taste."
echo ""
read string

cd $Gnashupdir
find -type d | grep "www." > $tempfile		# search for dirs in Gnashupdir
$EDITOR $tempfile				# editing $tempfile
gnashsubdir=$(Read_Lines $tempfile 1 1)		# select gnashsubdir

rm -f $tempfile
return 0
}
#-----------------------------------------------------------------------------
function g_notice_open_videos ()							### bearbeiten, prob wenn nicht vorher gesetzt
{
# Set $gnashsubdir, if not seted.
# Write all open videos to $fdlist.
# Uses: cut, echo, grep, ls, read, rm
# Return codes:
# 0 = ok
# 2 = configuration wrong

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG g_notice_open_videos: $# $@" >&2
	#$debuglog g_notice_open_videos: $# $@
fi

local line="" string="" ndir=0

if [ -z $gnashsubdir ]; then				# $gnashsubdir not seted
	cd $Gnashupdir
	find -type d | grep "www." > $tempfile		# search for dirs in $gnashupdir
	ndir=$(cat $tempfile | wc -l)
	if [ $ndir -eq 1 ]; then			# 1 dir exist
		line=$(Read_Lines $tempfile 1 1)
		gnashsubdir=$line			# set $gnashsubdir
	elif [ $ndir -gt 1 ]; then			# more than 1 dir exist
		echo "Fehler - Mehrere Unterverzeichnisse vorhanden!"
		echo "Neue Videos koennen nicht gefunden werden."
		echo "In der Konfiguration ein Verzeichnis angeben oder andere Verzeichnisse entfernen."
		echo ""
		echo "Weiter mit Enter-Taste."
		read string
		return 2
	fi
fi
ls $Gnashupdir/$gnashsubdir > $fdlist 2>/dev/null	# write all flash files to $fdlist - no message if dir not exist

rm -f $tempfile
return 0
}
#-----------------------------------------------------------------------------
function g_add_new_video ()
{
# Add new video to $vidlist.
# Par1: Number of video part
# Uses: echo, grep, ls, read, rm
# Return codes:
# 0  = ok
# 1  = parameter wrong
# 2  = temporary config wrong
# 10 = new video download missing

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG g_add_new_video: $# $@" >&2
	#$debuglog g_add_new_video: $# $@
fi

local partnr line tfile1 tfile2 string
partnr=""	# number of video part
line=""		# contents name of new video
tfile1=$tempfile.anv.1.tmp	
tfile2=$tempfile.anv.2.tmp
string=""

# error, if no number given, or more than 2 charakters - return
if [ "${1:0:1}" == "" ] || [ "${1:2:1}" != "" ]; then
	echo "Fehler - Entweder kein Zeichen eingegeben, oder mehr als zwei Zeichen!"
	echo "Video wurde nicht in Liste aufgenommen, neuer Versuch moeglich."
	echo "Sinnvoll ist eine ein- oder zweistellige Zahl."
	echo ""
	echo "Weiter mit Enter-Taste."
	read string
	return 1
fi

Trim_Number_0 2 $1				# trim number of part to 2 digits
Pop_Stack partnr				#   and store in $partnr

if [ -z $gnashsubdir ]; then				# $gnashsubdir not seted
	cd $Gnashupdir
	find -type d | grep "www." > $tempfile		# search for dirs in $gnashupdir
	ndir=$(cat $tempfile | wc -l)
	if [ $ndir -eq 1 ]; then			# 1 dir exist
		line=$(Read_Lines $tempfile 1 1)
		gnashsubdir=$line			# set $gnashsubdir
	elif [ $ndir -gt 1 ]; then			# more than 1 dir exist
		echo "Fehler - Mehrere Unterverzeichnisse vorhanden!"
		echo "Neue Videos koennen nicht gefunden werden."
		echo "In der Konfiguration ein Verzeichnis auswaehlen oder andere Verzeichnisse entfernen."
		echo ""
		echo "Weiter mit Enter-Taste."
		read string
		return 2
	fi
fi

if ! [ -d $Gnashupdir/$gnashsubdir ]; then		# gnashsubdir dont exist
	echo "Fehler - $Gnashupdir/$gnashsubdir existiert nicht!"
	echo "Neues Video kann nicht registriert werden."
	echo "In der Konfiguration korrektes Verzeichnis auswaehlen oder andere Verzeichnisse entfernen."
	echo ""
	echo "Weiter mit Enter-Taste."
	read string
	return 2
fi

ls $Gnashupdir/$gnashsubdir > $tfile1	# all actual flash files in $tfile1
grep -f $fdlist -vw $tfile1 > $tfile2	# remove all old flash files from $tfile1, output to $tfile2
line=$(Read_Lines $tfile2 1 1)		# new video in $line

if [ -z "$line" ]; then			# $line is empty, new flash file missing - return
	echo "Fehler - Kein neuer Video-Download in $Gnashupdir/$gnashsubdir vorhanden!"
	echo "Video wurde nicht in Liste aufgenommen, neuer Versuch moeglich."
	echo ""
	echo "Weiter mit Enter-Taste."
	read string
	rm -f $tfile1 $tfile2
	return 10
fi

echo "$line" >> $vidlist		# add new video to $vidlist
echo "$partnr" >> $partlist		# add new partnumber to $partlist
g_notice_open_videos			# notice open videos

rm -f $tfile1 $tfile2
return 0
}
#-----------------------------------------------------------------------------
function g_add_new_single_video ()
{
# Add new single part video to $vidlist.
# Par1: Name of video
# Uses: echo, grep, ls, read, rm
# Return codes:
# 0  = ok
# 1  = parameter wrong
# 10 = 2. call for same video

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG g_add_new_single_video: $# $@" >&2
	#$debuglog g_add_new_single_video: $# $@
fi

local vname line tfile1 tfile2 string
vname=""	# name of video
line=""		# contents name of new video
tfile1=$tempfile.anv.1.tmp	
tfile2=$tempfile.anv.2.tmp
string=""

vname="$1"

if [ -z "$1" ]; then
	echo "Kein Videoname angegeben!"
	echo ""
	echo "Weiter mit Enter-Taste."
	read string
	return 1
fi

if [ -z $gnashsubdir ]; then				# $gnashsubdir not seted
	cd $Gnashupdir
	find -type d | grep "www." > $tempfile		# search for dirs in $gnashupdir
	ndir=$(cat $tempfile | wc -l)
	if [ $ndir -eq 1 ]; then			# 1 dir exist
		line=$(Read_Lines $tempfile 1 1)
		gnashsubdir=$line			# set $gnashsubdir
	elif [ $ndir -gt 1 ]; then			# more than 1 dir exist
		echo "Fehler - Mehrere Unterverzeichnisse vorhanden!"
		echo "Neue Videos koennen nicht gefunden werden."
		echo "In der Konfiguration ein Verzeichnis auswaehlen oder andere Verzeichnisse entfernen."
		echo ""
		echo "Weiter mit Enter-Taste."
		read string
		return 2
	fi
fi

if ! [ -d $Gnashupdir/$gnashsubdir ]; then		# gnashsubdir dont exist
	echo "Fehler - $Gnashupdir/$gnashsubdir existiert nicht!"
	echo "Neues Video kann nicht registriert werden."
	echo "In der Konfiguration korrektes Verzeichnis auswaehlen oder andere Verzeichnisse entfernen."
	echo ""
	echo "Weiter mit Enter-Taste."
	read string
	return 2
fi

ls $Gnashupdir/$gnashsubdir > $tfile1	# all actual flash files in $tfile1
grep -f $fdlist -vw $tfile1 > $tfile2	# remove all old video file names from $tfile1, output to $tfile2
line=$(Read_Lines $tfile2 1 1)		# new video in $line

if [ -z "$line" ]; then			# $line is empty, new flash file missing - return
	echo "Fehler - Kein neuer Video-Download in $Gnashupdir/$gnashsubdir vorhanden!"
	echo "Video wurde nicht in Liste aufgenommen, neuer Versuch moeglich."
	echo ""
	echo "Weiter mit Enter-Taste."
	read string
	rm -f $tfile1 $tfile2
	return 10
fi

echo "$line" >> $vidlist		# add new video file name to $vidlist
echo "$vname" >> $partlist		# add new video name to $partlist
g_notice_open_videos			# notice open videos

rm -f $tfile1 $tfile2
return 0
}
#-----------------------------------------------------------------------------
function work_videolist ()
{
# Work $vidlist and $partlist together for manuel correction.
# Uses: cat, cp, echo, rm
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG work_videolist: $# $@" >&2
	#$debuglog work_videolist: $# $@
fi

local ffn="" pnr="" line="" k=0 n=0

k=$(cat $vidlist | wc -l)			# number of lines of $vidfile
cp /dev/null $tempfile				# create $tempfile
while [ "$n" -lt "$k" ]; do			# loop of $vidlist
	let n++
	ffn=$(Read_Lines $vidlist $n $n)	# flash file name
	pnr=$(Read_Lines $partlist $n $n)	# part number
	echo "$ffn	$pnr" >> $tempfile
done

$EDITOR $tempfile				# work video list

cp /dev/null $vidlist				# create new $vidlist
cp /dev/null $partlist				# create new $partlist
k=$(cat $tempfile | wc -l)			# number of lines of $tempfile
n=0
while [ "$n" -lt "$k" ]; do			# loop of $vidlist
	let n++
	line=$(Read_Lines $tempfile $n $n)
	echo "$line" | cut -f 1 >> $vidlist
	echo "$line" | cut -f 2 >> $partlist
done

rm -r $tempfile
return 0
}
#-----------------------------------------------------------------------------
function copy_videos ()
{
# Ask for video name and write all video parts to work dir.
# Format of video part name ist: NAME-NUMBER.flv .
# Uses: cat, clear, cp, echo, read, rm, wc
# Return codes: 0 = ok
# 10 = work dir not empty
# 99 = unknown error

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG copy_videos: $# $@" >&2
	#$debuglog copy_videos: $# $@
fi

local vidname ffn pnr string j k l n
vidname=""	# name of video
ffn=""		# flash file name of video part
pnr=""		# video part number
string=""
k=0		# number of lines of $vidfile
l=0		# number of lines of $partfile
n=0		# loop counter

k=$(cat $vidlist | wc -l)			# number of lines of $vidfile
l=$(cat $partlist | wc -l)			# number of lines of $partfile
if [ $k -ne $l ]; then				# number of lines differ - return
	echo "Fehler in den Listen!"
	echo "Anzahl der Videos:	$k"
	echo "Anzahl der Teil-Nummern:	$l"
	echo ""
	echo "Weiter mit Enter-Taste"
	read string
	return 99
fi

clear
echo -e "Name des Videos:  \c"			# ask for video name and
read vidname					#  read it

ls $Workdir/ | grep "$vidname"
if [ $? -eq 0 ]; then				# vidname exist in Workdir
	echo "Fehler - $vidname bereits vorhanden!"
	echo "Es werden keine Videos kopiert."
else						# vidname is new
	n=0
	while [ "$n" -lt "$k" ]; do			# loop of $vidlist
		let n++
		ffn=$(Read_Lines $vidlist $n $n)	# flash file name
		pnr=$(Read_Lines $partlist $n $n)	# part number
		echo "kopiere Datei $n von $k"
		mv $Gnashupdir/$gnashsubdir/$ffn $Workdir/$vidname-$pnr.flv	# move vids to work dir
	done
fi
echo ""
echo "Weiter mit Enter-Taste."
read string					# stop for reading output

rm -f $tempfile
return 0
}
#-----------------------------------------------------------------------------
function copy_single_videos ()
{
# Write all videos to work dir.
# Format of video part name ist: NAME.flv .
# Uses: cat, clear, cp, echo, read, rm, wc
# Return codes: 0 = ok
# 99 = unknown error

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG copy_single_videos: $# $@" >&2
	#$debuglog copy_single_videos: $# $@
fi

local vidname ffn pnr string k l n
vidname=""	# name of video
ffn=""		# flash file name of video part
pnr=""		# video part number
string=""
k=0		# number of lines of $vidfile
l=0		# number of lines of $partfile
n=0		# loop counter

k=$(cat $vidlist | wc -l)			# number of lines of $vidfile
l=$(cat $partlist | wc -l)			# number of lines of $partfile
if [ $k -ne $l ]; then				# number of lines differ - return
	echo "Fehler in den Listen!"
	echo "Anzahl der Videos: $k"
	echo "Anzahl der Namen:  $l"
	echo ""
	echo "Weiter mit Enter-Taste"
	read string
	return 99
fi

n=0
while [ "$n" -lt "$k" ]; do			# loop of $vidlist
	let n++
	ffn=$(Read_Lines $vidlist $n $n)	# flash file name
	vidname=$(Read_Lines $partlist $n $n)	# video name
	ls $Workdir/ | grep "$vidname"
	if [ $? -eq 0 ]; then			# vidname exist in Workdir
		echo "Fehler - $vidname bereits vorhanden!"
		echo "Video wird nicht kopiert."
		echo ""
	else					# vidname is new
		echo "kopiere Datei $n von $k"
		mv $Gnashupdir/$gnashsubdir/$ffn $Workdir/$vidname.flv	# move vids to work dir
	fi
done

echo ""
echo "Weiter mit Enter-Taste."
read string					# stop for reading output

rm -f $tempfile
return 0
}
#-----------------------------------------------------------------------------
function make_new_dir ()
{
# Create a new dir.
# Uses: echo, mkdir, rm, tree
# Return codes: 0 = ok, 10 = wrong video path given

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG make_new_dir: $# $@" >&2
	#$debuglog make_new_dir: $# $@
fi

local line="" string=""

# show actual video tree in editor
tree -Fi -L 1 --noreport $vidpath > $tempfile	# make actual video tree
$EDITOR $tempfile				#   and show in editor

line=$(Read_Lines $tempfile 1 1)		# read 1. line of $tfile1
if [ -e $line ]; then				# dir exist - return
	echo "Verzeichnis existiert bereits:"
	echo "$line"
	echo "Aktueller Videopfad wurde nicht veraendert:"
	echo "$vidpath"
	echo ""
	echo "Weiter mit Enter-Taste"
	read string
	rm -f $tempfile; return 10
fi

mkdir $line					# create dir
vidpath=$line					# change actual video dir

rm -f $tempfile
return 0
}
#-----------------------------------------------------------------------------
function change_actual_path ()
{
# Change actual video path.
# Uses: echo, rm, tree
# Return codes: 0 = ok, 10 = wrong video path given

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG change_actual_path: $# $@" >&2
	#$debuglog change_actual_path: $# $@
fi

local line="" string=""

# show actual video tree in editor
tree -Fi -L 1 --noreport $vidpath > $tempfile	# make actual video tree
$EDITOR $tempfile				#   and show in editor

line=$(Read_Lines $tempfile 1 1)		# read 1. line of $tfile1
if ! [ -e $line ]; then				# dir not exist - return
	echo "Fehler - Verzeichnis existiert nicht:"
	echo "$line"
	echo "Aktueller Videopfad wurde nicht veraendert:"
	echo "$vidpath"
	echo ""
	echo "Weiter mit Enter-Taste"
	read string
	rm -f $tempfile; return 10
fi

vidpath=$line					# change actual video dir

rm -f $tempfile
return 0
}
#-----------------------------------------------------------------------------
function save_video ()
{
# Move video from work dir to actual video path.
# Uses: echo, ls, mkdir, mv, rm
# Return codes: 0 = ok, 8 = video missing

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG save_video: $# $@" >&2
	#$debuglog save_video: $# $@
fi

local vidname="" string=""

ls $Workdir -1 > $tempfile
line=$(Read_Lines $tempfile 1 1)		# name of 1. video file
if [ -z "$line" ]; then				# videos missing - return
	echo "Fehler - Kein Video in $Workdir!"
	echo ""
	echo "Weiter mit Enter-Taste"
	read string
	rm -f $tempfile; return 8
fi

vidname=${line%-*}			# extraction of video name from file name
mkdir $vidpath/$vidname			# create video dir
mv $Workdir/*.flv $vidpath/$vidname/	# move videos from work dir to actual video path
echo "Videos verschoben nach: $vidpath/$vidname/"
echo ""
echo "Weiter mit Enter-Taste"
read string

rm -f $tempfile
return 0
}
#-----------------------------------------------------------------------------
function save_single_video ()
{
# Move first single video from work dir to actual video path.
# Uses: echo, ls, mkdir, mv, rm
# Return codes: 0 = ok, 8 = video missing

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG save_single_video: $# $@" >&2
	#$debuglog save_single_video: $# $@
fi

local vidname="" string=""

ls $Workdir -1 > $tempfile
line=$(Read_Lines $tempfile 1 1)		# name of 1. video file
if [ -z "$line" ]; then				# videos missing - return
	echo "Fehler - Kein Video in $Workdir!"
	echo ""
	echo "Weiter mit Enter-Taste"
	read string
	rm -f $tempfile; return 8
fi

vidname=${line%.flv}				# extraction of video name from file name
mkdir $vidpath/$vidname				# create video dir
mv $Workdir/$vidname.flv $vidpath/$vidname/	# move videos from work dir to actual video path
echo "Video verschoben nach: $vidpath/$vidname/"
echo ""
echo "Weiter mit Enter-Taste"
read string

rm -f $tempfile
return 0
}
#-----------------------------------------------------------------------------
function del_dirs ()
{
# Remove empty directories and show and ask for not empty dirs.
# Uses: echo, rmdir
# Return codes: 0 = ok

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG del_dirs: $# $@" >&2
	#$debuglog del_dirs: $# $@
fi
local cmd dirnames i line string ln n ret
cmd=""			# comand
dirnames=""		# contains dir names
i=""			# loop variable
line=""			# line
string=""		# dummy
n=0			# counter
ln=0			# number of lines in tempfile
ret=0			# return code

cd $Gnashupdir

find -type d | grep "www." > $tempfile			# write www. dirs to list
ln=$(cat $tempfile | wc -l)				# number of lines
n=0
while [ $ln -gt $n ]; do
	let n++
	line=$(Read_Lines $tempfile $n $n)
	rmdir $line 2>/dev/null				# remove empty dir
	if [ $? -ne 0 ]; then ret=1; fi			# dir not empty
done

if [ $ret -eq 0 ]; then					# no dirs or all dirs deleted
	rm $tempfile
	return 0
fi

find -type d | grep "www." > $tempfile			# write www. dirs to list
dirnames=$(cat $tempfile)
clear
echo "Folgende Dateien befinden sich in Unterverzeichnissen des Downloadverzeichnisses:"
for i in $dirnames; do echo "$i:"; ls -gG --time-style=long-iso $i | cut -d " " -f 3-; done	# show content for every dir
echo ""
echo "Zu entfernende Verzeichnisse auswaehlen."
echo ""
echo "Weiter mit Enter-Taste"
read string
$EDITOR $tempfile					# select dirs for removing

while :; do
	# show quasi-windows
	clear
	echo "$head"
	echo "$plinedeldir"
	echo "$mlinedeldir"

	read cmd
	case "$cmd" in
		h)	help_proc;;
		i)	# give info about dirs
			find -type d | grep "www." > $tempfile	# write www. dirs to list
			dirnames=$(cat $tempfile)
			clear
			echo "Folgende Dateien befinden sich in Unterverzeichnissen des Downloadverzeichnisses:"
			for i in $dirnames; do echo "$i:"; ls -gG --time-style=long-iso $i | cut -d " " -f 3-; done	# show content for every dir
			echo ""
			echo "Zu entfernende Verzeichnisse auswaehlen."
			echo ""
			echo "Weiter mit Enter-Taste"
			read string			# stop for reading output
			$EDITOR $tempfile;;		# select dirs for deleting
		o)
			dirnames=$(cat $tempfile)
			for i in $dirnames; do rm -r $i; done; rm $tempfile; break;;	# delete dirs
		n)	rm $tempfile; break;;		# no deleting
	esac
done

rm -f $tempfile
return 0
}
##############################################################################
# PARSE COMMANDLINE

# Read all options with args and all additional args into variables.
# Stop parsing after last parameter.
# Try to do a check on all parameters and version numbers.
# Handle options -h, -C and -V directly.
# Exit on error.

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG Parse Commandline: $# $@" >&2
	#$debuglog Parse Commandline: $# $@
fi

# get options and options with arguments
while [ "${1:0:1}" == "-" ]; do				# get all options
	case "$1" in
	  -h|--help)	opt=-h;;			# option -h
	  --version)	opt=--v;; 			# option --version
	  --show-config) opt=--s;;			# option --show-config
	  --debug)	debug=yes;;			# option --debug
#-------------------------- end of standard options --------------------------
	  *)	if [ "$verbose" != "-q" ]; then
			echo "Fehler - Option $1 falsch!" >&2	# error
		else
			$errlog unknown option $1
		fi
		exit 1;;
	esac
	shift
	opt_found=yes
done

# handle standard options -h, --v, --s
case "$opt" in
  -h)	show_help; exit 0;;					# show help
  --v)	echo "$scriptname (${pkgname}) $version"; exit 0;;	# show version
  --s)	show_config; exit 0;;					# show config
esac
##############################################################################
# CHECK LIBRARY AND CONFIG

# check library
Compare_Version $lib_inka_std_sh_needed $Lib_Inka_Std_Sh_Version
ret=$?						# (ret: 0,1,2,9,127)
if [ $ret -eq 1 ]; then				# needed lib-version higher than installed
	if [ "$verbose" != "-q" ]; then
		echo "Fehler - Programm benoetigt neuere Version von lib-inka-std.sh!" >&2
	else
		$errlog newer version of lib-inka-std.sh needed
	fi
	exit 3
elif [ $ret -eq 9 ] || [ $ret -eq 127 ]; then	# other error (version or lib missing)
	if [ "$verbose" != "-q" ]; then
		echo "Fehler - Versionspruefung von lib-inka-std.sh nicht moeglich!"
	else
		$errlog check of version of lib-inka-std.sh impossible
	fi
	exit 3
else						# check ok, reset $ret
	ret=0
fi

# check version of config files			# set config var!
#Compare_Version $conf_file_needed $Program_Conf
Compare_Version $conf_file_needed $Inka_Media_Rc
ret=$?						# (ret: 0,1,2,9)
if [ $ret -eq 1 ]; then				# needed config-version higher than installed
	if [ "$verbose" != "-q" ]; then
		echo "Fehler - $scriptname benoetigt neuere Version der Konfig-datei!" >&2
	else
		$errlog newer version of conf file needed
	fi
	exit 2
elif [ $ret -eq 9 ]; then			# other error (version of conffile missing)
	if [ "$verbose" != "-q" ]; then
		echo "Fehler - Versionspruefung der Konfig-datei von $scriptname nicht moeglich!"
	else
		$errlog check of version of conf file impossible
	fi
	exit 2
else						# check ok, reset $ret
	ret=0
fi

# test flashplayer name is right								########### löschen
#if [ "$Flashplayer" != "adobe" ]  && [ "$Flashplayer" != "gnash" ]; then
#	echo "Fehler - Konfigurationsdatei falsch!"
#	echo "Flashplayer $Flashplayer ist unbekannt."
#	exit 2
#fi
##############################################################################
# MAINPROGRAM

if [ "$debug" == "yes" ]; then				# debug
	echo "DEBUG Main: $# $@" >&2
	#$debuglog Main: $# $@
fi

# Check what to do (initial options and args are removed from cmdline)
case "$opt" in
  "")							# no opt given
	main_menue
	err=$?;;
esac

exit $err
