#!/bin/sh
MAIN_SCRIPT_PID="$$"
################################################################
# Ubuntu Live Chat Support 0.3.14 "All you need is Love"       #
################################################################
# File: ubuntu-live-support                                    #
# Version: 0.3.14					       #
# Description: Handles main scripting events                   #
#                                                              #
# Author: Joel Bryan T. Juliano <joelbryan.juliano@gmail.com>  #
# License: GPL                                                 #
################################################################

COUNTRY="`sed -ne 's/.*_\([a-zA-Z][a-zA-Z]\).*/\1/p' <<< $LANG`"
DESCRIPTION="`cat /usr/lib/ubuntu-live-support/locales | grep $COUNTRY`"

user_nick_argv=$1
user_register_nick_argv=$2
user_wizard_screen_argv=$3

if [ -s $user_nick_argv ]
then
user_nick_argv="$USERNAME"
fi

if [ -s $user_register_nick_argv ]
then
user_register_nick_argv="$USERNAME"
fi

if [ -s $user_wizard_screen_argv ]
then
user_wizard_screen_argv="main"
fi

/usr/lib/ubuntu-live-support/livechatsupport $user_nick_argv $user_register_nick_argv $user_wizard_screen_argv | (
GUI_PID="$+"
read nick
read password
read register_username
read register_password
read register_email
read register_website
read register_phone
read register_gsm
read action_signal

_icon="/usr/share/icons/gnome/16x16/stock/generic/stock_people.png"
_register_window_title="Ubuntu Live Chat Support Registration"
_register_window_message="
Please wait while we send your registration details to Freenode.net. 
\nThis may take 8-10 minutes, depending on the security imposed time
by NickServ to minimize abuse.
\nFor more information, please visit http://www.freenode.net
"
_check_window_title="Checking Availability"
_check_window_message="Checking if nick $register_username is available"

function gaimconfigcheck {

if [ ! -e $HOME/.gaim/ubuntu-live-support/profiles/$nick/accounts.xml ]
then
export nick
export password
/usr/lib/ubuntu-live-support/prepare-gaim accounts &
PREP_GAIM_ACCOUNT="$!"
fi

if [ ! -e $HOME/.gaim/ubuntu-live-support/profiles/$nick/blist.xml ]
then
export nick
export password
export DESCRIPTION
export COUNTRY
/usr/lib/ubuntu-live-support/prepare-gaim buddylist &
PREP_GAIM_BUDDYLIST="$!"
fi

if [ ! -e $HOME/.gaim/ubuntu-live-support/profiles/$nick/prefs.xml ]
then
export nick
/usr/lib/ubuntu-live-support/prepare-gaim preferences &
PREP_GAIM_PREFERENCES="$!"
fi
}

function register 
{
((
export register_username
export register_password
export register_email
export register_website
export register_phone
export register_gsm
initial_feedback 
/usr/lib/ubuntu-live-support/livechatsupport-register) | zenity --progress --title="$_register_window_title" --width=500 --window-icon="$_icon" --text="$_register_window_message" --auto-close
) 2>/dev/null | REGISTER_ZENITY_PID="$+"
kill_script_pid && kill_main_pid
}

function check 
{
((
export register_username
initial_feedback 
/usr/lib/ubuntu-live-support/livechatsupport-check) | zenity --progress --title="$_check_window_title" --width=500 --window-icon=$_icon --text="$_check_window_message" --auto-close
) 2>/dev/null | CHECK_ZENITY_PID="$+"
kill_script_pid && kill_main_pid
}

function initial_feedback {
timer_security=10
progress_feedback=50

for i in `seq 10 $timer_security $progress_feedback`;
do
echo $i
sleep $timer_security
done
}

function run_gaim {
gaim --config $HOME/.gaim/ubuntu-live-support/profiles/$nick/
}

function kill_main {
sleep 5 && kill $MAIN_SCRIPT_PID 2> /dev/null
}

function kill_prep {
kill $PREP_GAIM_ACCOUNT 2> /dev/null
kill $PREP_GAIM_PREFERENCES 2> /dev/null
kill $PREP_GAIM_BUDDYLIST 2> /dev/null
}

function kill_script_pid {
kill $REGISTER_ZENITY_PID 2> /dev/null
kill $CHECK_ZENITY_PID 2> /dev/null
kill $GUI_PID 2> /dev/null
}

if [ ! "$action_signal" = "exit" ]
then

if [ "$action_signal" = "unregistered login" ]
then
nick=`echo "guest_$nick"`
export nick
gaimconfigcheck
kill_main | kill_script_pid
run_gaim
fi

if [ "$action_signal" = "send registration" ]
then
kill_script_pid
register && kill_script_pid
fi

if [ "$action_signal" = "check availability" ]
then
kill_script_pid
check && kill_script_pid
fi

if [ "$action_signal" = "registered login" ]
then
gaimconfigcheck
kill_main | kill_script_pid
run_gaim
fi

exit 0;

else
kill_prep | kill_script_pid | kill_main
exit 0;

fi
)
