var CurrencyDisplay = {
	mValue: 0,
	getRendered: function() {
		return formatCurrency(this.mValue);
	},
	
	appendNumber: function(iNumber) {
		this.mValue *= 10;
		this.mValue += iNumber / 100;
	},
	
	clear: function() {
		this.mValue = 0;
	},
	
	get: function() {
		return this.mValue;
	},
	
	set: function(iValue) {
		this.mValue = iValue;
	}
}

var billTotal = jQuery.extend(new Object, CurrencyDisplay);
var selectedRate = .20;
var focusedDisplay = billTotal;

$(document).ready(function() {
	percent15 = $('#percent15');
	percent20 = $('#percent20');
	percent25 = $('#percent25');
}
);

function pushNumber(iNum) {
	focusedDisplay.appendNumber(iNum);
	$('.keypad_focus').html(focusedDisplay.getRendered());
	updateTipTotals();
}

function pushDoubleZero() {
	focusedDisplay.set(focusedDisplay.get() * 100);
	$('.keypad_focus').html(focusedDisplay.getRendered());
	updateTipTotals();
}

function clearNumber() {
	focusedDisplay.clear();
	$('.keypad_focus').html(focusedDisplay.getRendered());
	updateTipTotals();
}

function selectRate(iRate) {
	selectedRate = iRate / 100;
	$('#tip_amts dt').removeClass('selected');
	$('#tip_amts dd').removeClass('selected');
	$('#percent' + iRate).addClass('selected');
	$('#percent_label' + iRate).addClass('selected');
	updateBreakdown();
}

function setKeypadFocus(iElement) {
	focusedDisplay = iElement;
}

function updateTipTotals() {
	percent15.html(formatCurrency(billTotal.get() * 0.15));
	percent20.html(formatCurrency(billTotal.get() * 0.20));
	percent25.html(formatCurrency(billTotal.get() * 0.25));
	updateBreakdown();
}

function updateBreakdown() {
	var nParties = $('#breakdown_popup').attr('value');
	$('#party_amounts').html('<li>' + formatCurrency(((billTotal.get() * selectedRate) + billTotal.get()) / nParties) + '</li>');
}

function formatCurrency(mnt) {
	mnt -= 0;
	mnt = (Math.round(mnt*100))/100;
	var result = (mnt == Math.floor(mnt)) ? mnt + '.00' : ( (mnt*10 == Math.floor(mnt*10)) ? mnt + '0' : mnt);
	return "$" + result;
}
