:
# faxit: interactive character-based interface for sending faxes through Z-Fax

trap 'echo ""; echo "faxit interrupted, no fax sent."; exit 1' 1 2 3 15

echo ""
echo "Faxit fax send utility"
echo ""
echo "Press ctrl-C (or your interrupt key) at any time to abort"
echo ""

sender=
sender_org=
coversheet=/usr/lib/Zfax/default.cover
[ ! -z "$NAME" ] && sender="$NAME"
[ ! -z "$ORGANIZATION" ] && sender_org="$ORGANIZATION"
[ ! -z "$ZFAX_COVER_FILE" ] && coversheet="$ZFAX_COVER_FILE"

while true
do
    filelist=

    while true
    do
	if [ ! -z "$filelist" ]
	then
	    echo ""
	    echo "List of files to send:"
	    for i in $filelist
	    do
		echo "    $i"
	    done
	fi
	while true
	do
	    echo ""
	    echo -n "File to send, '?' for directory, or press Enter if done: "
	    read resp
	    if [ "$resp" = "?" ]
	    then
		ls -C
	    else
		if [ ! -f "$resp" ]
		then
		    if [ -z "$resp" ]
		    then
			if [ -z "$filelist" ]
			then
			    echo ""
			    echo "You must specify at least one file to send."
			else
			    break 2
			fi
		    else
			echo ""
			echo "File $resp does not exist"
		    fi
		else
		    if [ -z "$filelist" ]
		    then
			filelist="$resp"
		    else
			filelist="$filelist $resp"
		    fi
		    break
		fi
	    fi
	done
    done

    if [ -r $HOME/.zfaxdir ]
    then
	while true
	do
	    echo ""
	    echo -n "Select recipient from your fax phone directory? "
	    read resp
	    case "$resp" in
		[yY]* ) faxdir=y; break ;;
		[nN]* ) faxdir= ; break ;;
		*     ) echo "Please enter 'y' or 'n'" ;;
	    esac
	done
    else
	faxdir=
    fi

    if [ -z "$faxdir" ]
    then
	echo ""
	echo -n "Enter the fax number to which to send: "
	read faxnumber
    else
	while true
	do
	    echo ""
	    echo -n "Enter the directory entry number, or '?' for a directory listing: "
	    read resp
	    [ -z "$resp" ] && continue
	    if [ "$resp" = "?" ]
	    then
		echo
		awk "-F|" '{printf( "%3d: %s, %s, %s \n", NR, $1, $2, $3 )}' $HOME/.zfaxdir | more
	    else
		temp=`sed -e "$resp!d" \
			  -e 's/^/recipient="/' \
			  -e 's/|/"; recipient_org="/' \
			  -e 's/|/"; faxnumber="/' \
			  -e 's/$/"/' $HOME/.zfaxdir`
		eval $temp

		echo ""
		echo "Recipient:  $recipient"
		echo "Company:    $recipient_org"
		echo "Fax number: $faxnumber"

		while true
		do
		    echo ""
		    echo -n "Is the the correct entry? "
		    read resp
		    case "$resp" in
			[yY]* ) break 2 ;;
			[nN]* ) break ;;
			*     ) echo "Please enter 'y' or 'n'" ;;
		    esac
		done
	    fi
	done
    fi

    while true
    do
	echo ""
	echo -n "Add a cover sheet? "
	read resp
	case "$resp" in
	    [yY]* ) addcover=y; break ;;
	    [nN]* ) addcover= ; break ;;
	    *     ) echo "Please enter 'y' or 'n'" ;;
	esac
    done

    # Get cover sheet data.
    if [ ! -z "$addcover" ]
    then
	echo ""
        echo "Press RETURN to use the values in parentheses"
	while true
	do
	    echo ""
	    if [ -z "$coversheet" ]
	    then
		echo -n "Cover sheet file: "
	    else
		echo -n "Cover sheet file ($coversheet): "
	    fi
	    read resp
	    if [ ! -z "$resp" ]
	    then
		coversheet="$resp"
	    else
		[ -z "$coversheet" ] && continue
	    fi
	    if [ -r "$coversheet" ]
	    then
		break
	    else
		echo "Cover sheet file $coversheet does not exist."
	    fi
	done

	if [ -z "$sender" ]
	then
	    echo -n "Sender: "
	else
	    echo -n "Sender ($sender): "
	fi
	read resp
	[ ! -z "$resp" ] && sender="$resp"

	if [ -z "$sender_org" ]
	then
	    echo -n "Sender's company: "
	else
	    echo -n "Sender's company ($sender_org): "
	fi
	read resp
	[ ! -z "$resp" ] && sender_org="$resp"

	if [ -z "$subject" ]
	then
	    echo -n "Subject: "
	else
	    echo -n "Subject ($subject): "
	fi
	read resp
	[ ! -z "$resp" ] && subject="$resp"
    fi

    # Get confirmation of all data.
    echo ""
    echo ""
    echo "Information to send fax:"
    echo ""
    echo "List of files to send:"
    for i in $filelist
    do
	echo "    $i"
    done
    echo ""
    echo "Fax number:           $faxnumber"

    if [ ! -z "$addcover" ]
    then
	echo ""
	echo "Cover sheet file:     $coversheet"
	echo ""
	echo "Recipient:            $recipient"
	echo "Recipient's company:  $recipient_org"
	echo "Sender:               $sender"
	echo "Sender's company:     $sender_org"
	echo "Subject:              $subject"
    fi

    while true
    do
	echo ""
	echo -n "Is this information correct? "
	read resp
	case "$resp" in
	    [yY]* ) break 2 ;;
	    [nN]* ) break ;;
	    *     ) echo "Please enter 'y' or 'n'" ;;
	esac
    done
done

echo "Building fax file to send..."

if [ -z "$addcover" ]
then
    buildfax -n $filelist | queuefax -recipient "$recipient" "$faxnumber" 
else
    buildfax -coversheet "$coverfile" \
	     -recipient "$recipient" \
	     -recipientorg "$recipient_org" \
	     -sender "$sender" \
	     -senderorg "$sender_org" \
	     -subject "$subject" $filelist \
    | queuefax -recipient "$recipient" "$faxnumber" 
fi
