oEarningsCalculator = {
	bHasError:null,
	checkFields:function(){
		$('form.bankCalculatorForm').submit(function() {
			oEarningsCalculator.bHasError = 0;
			var oForm = $(this).addClass('submit');
			$('form.submit > div.fieldPair > .reqCalc').each(function() {
				if (typeof $(this).attr('value') === 'undefined') {
					oEarningsCalculator.setErrorMessage('<div class="bubbleText"><p>Oops!<a href="#" class="errorCloseBtn"></a></p><p>You missed something.</p><p>Please try again.</p></div>');
					return false;
				}else if(isNaN(oEarningsCalculator.removeSpecialChars($(this).attr('value')))){
					oEarningsCalculator.setErrorMessage('<div class="bubbleText"><p>Please use only numbers for all input values.<a href="#" class="errorCloseBtn"></a></p></div>');
					return false;
				}
			});
			if(!oEarningsCalculator.bHasError){
				var sDeposit = oEarningsCalculator.removeSpecialChars($("form.submit > div.fieldPair > #bankCalculatorDeposit").attr('value'));
				var sRate = oEarningsCalculator.removeSpecialChars($("form.submit > div.fieldPair > #bankCalculatorYield").attr('value'));
				var sTerm = oEarningsCalculator.removeSpecialChars($("form.submit > div.fieldPair > #bankCalculatorTerm").attr('value'));
				var sTotalMonthly = eval(sDeposit * (Math.pow(1 + (sRate * .01), sTerm/12)) - sDeposit);
				var sEarnings = oEarningsCalculator.formatCurrency(sTotalMonthly);
				if(sEarnings.length > 12) {
					oEarningsCalculator.setErrorMessage('<div class="bubbleText"><p>Earnings results too large to display. Please reduce input values.<a href="#" class="errorCloseBtn"></a></p></div>');
				}
				if(!oEarningsCalculator.bHasError){
					oEarningsCalculator.displayResult(sEarnings);
					oForm.removeClass('submit');
				}
			}
			oEarningsCalculator.sendWebTrends();
			return false;
		});
	},
	
	removeSpecialChars:function(fieldValue){
		return fieldValue.toString().replace(/\$|\,|%/g,'');
	},
	
	sendWebTrends:function() {
		var sType = oEarningsCalculator.findClassType($('div#bankCalculator').attr('class'));
		eval("dcsMultiTrack('DCS.dcsuri','/"+sType+"/bankcalc.x')");
	},
	
	formatCurrency:function(sValue){
		if(isNaN(sValue)) {sValue = "0";}
		var bSign = (sValue === (sValue = Math.abs(sValue)));
		sValue = Math.floor(sValue * 100 + 0.50000000001);
	
		var sCents = sValue % 100;
		sValue = Math.floor(sValue / 100).toString();
		if(sCents < 10) {sCents = "0" + sCents;}
		for (var i = 0; i < Math.floor((sValue.length-(1+i))/3); i++){
	  	sValue = sValue.substring(0,sValue.length-(4*i+3))+','+ sValue.substring(sValue.length-(4*i+3));
		}
		return (((bSign)?'':'-') + '$' + sValue + '.' + sCents);
	},
	
	displayResult:function(sResult){
		if(!sResult) {sResult = 'Error';}
		$("div#bankCalculator > div.bankCalculatorTotalContainer > p.bankCalculatorTotal").html(sResult);
		$("div#bankCalculator > div.bankCalculatorTotalContainer").slideDown("slow");
	},
	
	setErrorMessage:function(message){
		oEarningsCalculator.bHasError = 1;
		oEarningsCalculator.displayResult();
		var	errorMessage = '<div class="bubbleText"><p>Oops!<a href="#" class="errorCloseBtn"></a><p>You missed something.</p><p>Please try again.</p></div>';
		if(message) {errorMessage = message;}
		$.preloadImages('/images/css/bgErrorBubbleLeft.gif','/images/css/bgErrorBubbleRight.gif');
		$('<div></div>').addClass('errorSubmit').append(errorMessage).insertAfter($('form.submit > .formButton > input.goBtn'));
		var oFormButton = $('form.submit > .formButton > input.goBtn');
		var leftOffSet = oEarningsCalculator.findLeft(oFormButton.attr('class'));
		var rightOffSet = oEarningsCalculator.findRight(oFormButton.attr('class'));
		var topOffSet = oEarningsCalculator.findTop(oFormButton.attr('class'));
		var bottomOffSet = oEarningsCalculator.findBottom(oFormButton.attr('class'));
		var displayType = oEarningsCalculator.findDisplay(oFormButton.attr('class'));
		if ($.browser.msie) {
			leftOffSet = oEarningsCalculator.findIELeft(oFormButton.attr('class')) !== 0 ? oEarningsCalculator.findIELeft(oFormButton.attr('class')) : leftOffSet;
			rightOffSet = oEarningsCalculator.findIERight(oFormButton.attr('class')) !== 0 ? oEarningsCalculator.findIERight(oFormButton.attr('class')) : rightOffSet;
			topOffSet = oEarningsCalculator.findIETop(oFormButton.attr('class')) !== 0 ? oEarningsCalculator.findIETop(oFormButton.attr('class')) : topOffSet;					
			bottomOffSet = oEarningsCalculator.findIEBottom(oFormButton.attr('class')) !== 0 ? oEarningsCalculator.findIEBottom(oFormButton.attr('class')) : bottomOffSet;					
		}
		else if ($.browser.safari) {
			leftOffSet = oEarningsCalculator.findMacLeft(oFormButton.attr('class')) !== 0 ? oEarningsCalculator.findMacLeft(oFormButton.attr('class')) : leftOffSet;
			rightOffSet = oEarningsCalculator.findMacRight(oFormButton.attr('class')) !== 0 ? oEarningsCalculator.findMacRight(oFormButton.attr('class')) : rightOffSet;
			topOffSet = oEarningsCalculator.findMacTop(oFormButton.attr('class')) !== 0 ? oEarningsCalculator.findMacTop(oFormButton.attr('class')) : topOffSet;					
			bottomOffSet = oEarningsCalculator.findMacBottom(oFormButton.attr('class')) !== 0 ? oEarningsCalculator.findMacBottom(oFormButton.attr('class')) : bottomOffSet;					
		}
		if (topOffSet) { $('div.errorSubmit').css( "top",eval(topOffSet) ); }
		if (leftOffSet) { $('div.errorSubmit').css( "left",eval(leftOffSet) ); }
		if (rightOffSet) { $('div.errorSubmit').css( "right",eval(rightOffSet) ); }
		if (bottomOffSet) { $('div.errorSubmit').css( "bottom",eval(bottomOffSet) ); }
		if (displayType === "Right") { $('div.errorSubmit').addClass('bubbleRight'); }
		else { $('div.errorSubmit').addClass('bubbleLeft'); }
		$('div.errorSubmit').show("normal");
		$('a.errorCloseBtn').click(function() {
			$('div.errorSubmit').hide("normal");
			return false;
		});
		setTimeout(function(){$('div.errorSubmit').hide("normal");},10000);
		return false;
	},
	findTop:function(sCN){ return (/top(-{0,1}\d+)/i.test(sCN))?RegExp.$1:0;},
	findBottom:function(sCN){ return (/bottom(-{0,1}\d+)/i.test(sCN))?RegExp.$1:0;},
	findRight:function(sCN){ return (/right(-{0,1}\d+)/i.test(sCN))?RegExp.$1:0;},
	findLeft:function(sCN){ return (/left(-{0,1}\d+)/i.test(sCN))?RegExp.$1:0;},
	findDisplay:function(sCN){ return (/display(\w+)/i.test(sCN))?RegExp.$1:"Left";},
	findIETop:function(sCN){ return (/ieTop(-{0,1}\d+)/i.test(sCN))?RegExp.$1:0;},
	findIEBottom:function(sCN){ return (/ieBottom(-{0,1}\d+)/i.test(sCN))?RegExp.$1:0;},
	findIERight:function(sCN){ return (/ieRight(-{0,1}\d+)/i.test(sCN))?RegExp.$1:0;},
	findIELeft:function(sCN){ return (/ieLeft(-{0,1}\d+)/i.test(sCN))?RegExp.$1:0;},
	findMacTop:function(sCN){ return (/macTop(-{0,1}\d+)/i.test(sCN))?RegExp.$1:0;},
	findMacBottom:function(sCN){ return (/macBottom(-{0,1}\d+)/i.test(sCN))?RegExp.$1:0;},
	findMacRight:function(sCN){ return (/macRight(-{0,1}\d+)/i.test(sCN))?RegExp.$1:0;},
	findMacLeft:function(sCN){ return (/macLeft(-{0,1}\d+)/i.test(sCN))?RegExp.$1:0;},
	findClassType:function(sCN){ return (/horizontal/i.test(sCN))?'hz':'vt';}
};

$(document).ready(function(){
	oEarningsCalculator.checkFields();
});