// requires jQuery.js, Rate.js, Money.js
jQuery(function() {
	jQuery("input.money").bind("blur", function() {																						
		var formatted = new Calculators.type.Money(getInputMoney(jQuery(this).attr("id")));		
		jQuery(this).val(formatted.formatted());
	});	
	jQuery("input.rate").bind("blur", function() {
		var formatted = new Calculators.type.Rate(getInputRate(jQuery(this).attr("id")));
		jQuery(this).val(formatted.formatted());
	});		
});

function validMonth(num) {
	return num.match(/^((0?[1-9])|(1[0-2]))$/) && !isBlank(num);
}

function validDay(num) {
	return num.match(/^((0?[1-9])|([1-2]\d)|(3[0-1]))$/) && !isBlank(num);
}

function validYear(num) {
	return num.match(/^((19)|(20))(\d\d)$/) && !isBlank(num);
}

function validMoney(num) {
	var money = num.replace(/\$/g, "").replace(/,/g, "");
	return money.match(/^(\d*)\.?(\d*)$/) && !isBlank(money);
}

function isBlank(str) {
	return jQuery.trim(str) == "";
}

function isNumber(num) {
	return num.match(/^(\d+)$/) && !isBlank(num);
}

function getInputMoney(id) {
	var jQuerySelector = id.match(/#/) ? id : "#" + id;
	var retVal = parseFloat(jQuery(jQuerySelector).val().replace(/\$/g, "").replace(/,/g, ""));
	return (isNaN(retVal) ? 0.00 : retVal);
}

function getInputRate(id) {
	var jQuerySelector = id.match(/#/) ? id : "#" + id;
	var retVal = parseFloat(jQuery(jQuerySelector).val().replace(/%/g, "")) / 100;
	return (isNaN(retVal) ? 0.00 : retVal);
}

function getInputNumber(id) {
	var jQuerySelector = id.match(/#/) ? id : "#" + id;
	var retVal = parseInt(jQuery(jQuerySelector).val());
	return (isNaN(retVal) ? 0 : retVal);
}
