function formatCurrency(num, withCents, prefix)
{
	var num = currencyToFloat(num.toString());

	// parse args; set defaults if missing
	var showCents = (typeof(withCents) == 'undefined' ? false : withCents);
	var thePrefix = (typeof(prefix) == 'undefined' ? '' : prefix);

	if(isNaN(num)) { num = "0"; }

	var sign = (num == (num = Math.abs(num)));
	num = Math.floor(num * 100+0.50000000001);

	var cents = num % 100;
	num = Math.floor(num/100).toString();

	if(cents<10) { cents = "0" + cents; }

	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0, num.length - (4*i+3)) + ',' + num.substring(num.length - (4*i+3));

	//out = ((sign)?'':'-') + 
	out = (thePrefix + num);
	if(showCents) { out &=  '.' + cents; }

	return out;
}

function currencyToFloat(value) {
	var regexp = /[\$,]/gi;
	return parseFloat(value.replace(regexp, ''));
}

function stripNonNumeric(str) {
	if (!/^\d*$/.test(str))
		return str.replace(/[^\d]/g,"");
	else
		return str;
}

function reformatCurrencyInput(elem, def) {
	var v = stripNonNumeric(elem.value);
	var d = (typeof(def) == 'undefined' ? '' : def);
	elem.value = formatCurrency(v);
	return;
}

reformatNumericInput = function(elem, def) {
	var d = (typeof(def) == 'undefined' ? '' : def);
	elem.value = stripNonNumeric(elem.value);
	return;
}

updateHiddenPhone = function(ename) {
	$(ename).value = $F(ename+'NPA') + $F(ename+'Prefix') + $F(ename+'Suffix');
	return;
}


// the only name format this function doesn't account for are those
// that contain apostrophes or in-string capitalization; for example,
// "O'Brian" and "McConnell" will appear as "O'brian" and "Mcconnell"
formatNameHandler = function(theEvent) {
	var element = Event.element(theEvent);
	var capChars = new String(" .'-");
	var out = element.value;
	var tmp = '';
	
	chars = capChars.toArray();

	console.log('Namecasing "' + element.value + '"...');
	
	for(var c = 0; c < chars.length; c++) {
		console.log('parsing ' + chars[c] + '...');

		var parts = new String(out).split(chars[c]);
		if(parts.length == 1) {
			for(var i = 0; i < parts.length; i++) {
				tmp += new String(parts[i].toLowerCase()).capitalize();
				if(i < parts.length) { tmp += chars[c]; }
			}
			out = tmp;
			tmp = '';
		}
	}
	element.value = out;
	return;
}

function isAlphaKey(e) {
   var k;
   document.all ? k = e.keyCode : k = e.which;
   return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8);
}
