#!/bin/bash
#########################################################
# 							#
# This is BashStyle-NG  				#
#							#
# Licensed under GNU GENERAL PUBLIC LICENSE v3    	#
#							#
# Copyright 2007 - 2015 Christopher Bratusek		#
#							#
#########################################################

host=${HOSTNAME/.*}
dirchar=$(ini_get directory_indicator)
trunc_symbol=$(ini_get pwdcut)
trunc_length=$(($(echo ${trunc_symbol} | wc -m)-1))
j=4
k=6
l=8
m=10
n=12

# make the prompt properly re-draw when pressing [Return]
bind 'RETURN: "\C-l\C-j"'

if [[ ${enable_colors} == True ]]; then

function pre_prompt {

[[ ! ${dirchar} ]] && dirchar="/"
[[ ! ${trunc_symbol} ]] && trunc_symbol="«"
[[ ! ${trunc_length} ]] && trunc_length=25

newPWD="${PWD}"

let promptsize=$(echo -n "--( $(whoami) @ ${host} )--( ${PWD} )-----" | wc -c | tr -d " ")

let fillsize=${COLUMNS}-${promptsize}
fill=""
while [ "${fillsize}" -gt "0" ]
do
    fill="${fill}─"
	let fillsize=${fillsize}-1
done

if [ "${fillsize}" -lt "0" ]
then
    let cutt=${trunc_length}-${fillsize}
    xPWD="${trunc_symbol}${PWD:${cutt}}"
    newPWD="${xPWD//\//${esepacolor}${dirchar}${ewdircolor}}"
else
    newPWD="${PWD//\//${esepacolor}${dirchar}${ewdircolor}}"
fi

_newPWD () {
	echo -e $newPWD
}

echo -en "\033[2;$((${COLUMNS}-29))H"
echo -en "${esepacolor}(${etimecolor} $(date +%H:%M)${esepacolor} :${edatecolor} $(date '+%a, %d %b %y')${esepacolor} )────┐"
echo -en "\033[3;${COLUMNS}H${esepacolor}│"

i=${LINES}

[[ ${i} -ge 16 ]] && while [ ${i} -ge 4 ]
do
	case ${i} in
		${j} )
			echo -en "\033[${j};$((${COLUMNS}-29))H"
			echo -en "${esepacolor}(${efontcolor} system-load: $(systemkit load1)${esepacolor} )────────┤"
		;;
		${k} )
			echo -en "\033[${k};$((${COLUMNS}-29))H"
			echo -en "${esepacolor}(${efontcolor} cpu-load: $(systemkit cpuload)${esepacolor} )────────────┤"
		;;
		${l} )
			echo -en "\033[${l};$((${COLUMNS}-29))H"
			echo -en "${esepacolor}(${efontcolor} ram: ${esepacolor}$(systemkit usedram)mb${efontcolor} / ${esepacolor}$(systemkit freeram)mb )─────┤"
		;;
		${m} )
			echo -en "\033[${m};$((${COLUMNS}-29))H"
			echo -en "${esepacolor}(${efontcolor} processes:${epscolor} $(systemkit processes) ${esepacolor})──────────┤"
		;;
		${n} )
			echo -en "\033[${n};$((${COLUMNS}-29))H"
			if [ ${lastexit} -eq 0 ]; then
				echo -en "${esepacolor}( ${egreen}✔: ${lastcommandprintable} ${esepacolor})─┤"
			else
				echo -en "${esepacolor}( ${ered}✘: ${lastcommandprintable} ${esepacolor})─┤"
			fi
		;;
		* )
			echo -en "\033[$((${i}));${COLUMNS}H${esepacolor}│"
		;;
	esac
	let i=${i}-1
done

let prompt_line=${LINES}-1
}

PROMPT_COMMAND=pre_prompt

PS1="\[\033[\${prompt_line};0H\]\n\
${sepacolor}┌─( ${usercolor}\u ${fontcolor}@ ${hostcolor}\h \
${sepacolor})─\${fill}─( ${wdircolor}\$(_newPWD)\
${sepacolor} )────┘\n\
${sepacolor}└─(${upcolor} uptime: \$(systemkit uptime)\
${fontcolor} :${EQUINOX_1_COLOR}\$(EQUINOX_1)${fontcolor} \$ ${sepacolor})·>${fontcolor} "

else

function pre_prompt {

[[ ! ${dirchar} ]] && dirchar="/"
[[ ! ${trunc_symbol} ]] && trunc_symbol="«"
[[ ! ${trunc_length} ]] && trunc_length=25

newPWD="${PWD}"

let promptsize=$(echo -n "--( $(whoami) @ ${host} )---( ${PWD} )-----" | wc -c | tr -d " ")

let fillsize=${COLUMNS}-${promptsize}
fill=""
while [ "${fillsize}" -gt "0" ]
do
    fill="${fill}─"
	let fillsize=${fillsize}-1
done

if [ "${fillsize}" -lt "0" ]
then
    let cutt=${trunc_length}-${fillsize}
    xPWD="${trunc_symbol}$(echo -n $PWD | sed -e \"s/\(^.\{$cutt\}\)\(.*\)/\2/\")"
    newPWD="${xPWD//\//${dirchar}}"
else
    newPWD="${PWD//\//${dirchar}}"
fi

_newPWD () {
        echo -e ${newPWD}
}

echo -en "\033[2;$((${COLUMNS}-29))H"
echo -en "( $(date +%H:%M) : $(date '+%a, %d %b %y') )────┐"
echo -en "\033[3;${COLUMNS}H│"

[[ ${i} -ge 16 ]] && while [ ${i} -ge 4 ]
do
	case ${i} in
		${j} )
			echo -en "\033[${j};$((${COLUMNS}-29))H"
			echo -en "( system-load: $(systemkit load1) )────────┤"
		;;
		${k} )
			echo -en "\033[${k};$((${COLUMNS}-29))H"
			echo -en "( cpu-load: $(systemkit cpuload) )────────────┤"
		;;
		${l} )
			echo -en "\033[${l};$((${COLUMNS}-29))H"
			echo -en "( ram: $(systemkit usedram)mb / $(systemkit freeram)mb )─────┤"
		;;
		${m} )
			echo -en "\033[${m};$((${COLUMNS}-29))H"
			echo -en "( processes:${epscolor} $(systemkit processes) )──────────┤"
		;;
		${n} )
			echo -en "\033[${n};$((${COLUMNS}-29))H"
			if [ ${lastexit} -eq 0 ]; then
				echo -en "( ✔: ${lastcommandprintable} )─┤"
			else
				echo -en "( ✘: ${lastcommandprintable} )─┤"
			fi
		;;
		* )
			echo -en "\033[$((${i}));${COLUMNS}H│"
		;;
	esac
	let i=${i}-1
done

let prompt_line=${LINES}-1
}

PROMPT_COMMAND=pre_prompt

PS1="\[\033[\${prompt_line};0H\]\n\
┌─( \u @ \h )─\${fill}─( \$(_newPWD) \
)────┘\n└─( uptime: \$(systemkit uptime) :\$(EQUINOX_1) \$ )·> "

fi
