function Calculator(){
};

Calculator.currentBean =null;

Calculator._calculate_action ='CALC';
Calculator._report_action ='REPT';
Calculator._date_action ='SHWDT';
Calculator._chart_action = 'CHART';

Calculator._maxDaysLimit = 180;
Calculator._maxLoanPayoff = 360;
Calculator._maxAmount = 9999999999.99;

Calculator._months = null;
Calculator._fee = null;

Calculator._showWaiver = null;
Calculator._showDFS = null;
Calculator._showLogo = null;
Calculator._dfs=0;
Calculator._eibMonths=0;
Calculator._serviceFee=2.49;

Calculator._daysToFirstPayment = null;
Calculator._autoLoanAmount = null;
Calculator._effectiveRate = null;
Calculator._loanPayoff = null;
Calculator._dealDateLimit = 6;
Calculator._dealDate = null;
Calculator._validDealDates = null;

Calculator.calculate=function(action){
	
	var dealDate = Calculator.strip(DWRUtil.getValue('dealDate'), ' ');
	document.getElementById('hiddenDealDate').value = dealDate;
	
	areAllOk = Calculator.validate();
	if ((areAllOk == true) && (action==Calculator._chart_action)) {
		var loanAmount = Calculator.normalizeValue(DWRUtil.getValue('autoLoanAmount'));
		var effectiveRate = Calculator.strip(DWRUtil.getValue('effectiveRate'), '%');
		var loanPayoff = Calculator.strip(DWRUtil.getValue('loanPayoff'), ' ');
		var daysToFirstPayment = Calculator.strip(DWRUtil.getValue('daysToFirstPayment'), ' ');
		var serviceFee = Calculator._serviceFee;
		var dfs = Calculator._dfs;
		var eibMonths = Calculator._eibMonths;
		var uri = encodeURI('viewChart.htm?type=loan&loanAmount=' + loanAmount + '&effectiveRate=' + effectiveRate + '&loanPayoff=' + loanPayoff + '&daysToFirstPayment=' + daysToFirstPayment + '&serviceFee=' + serviceFee + '&dfs=' + dfs + '&eibMonths=' + eibMonths + '&dealDate=' + dealDate);
		window.open(uri,'','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=650,height=650');
	}
	else if (areAllOk == true){
    	calculatorService.getLoanCalculationWithDealDate(Calculator.normalizeValue(DWRUtil.getValue('autoLoanAmount')),
                                             Calculator.strip(DWRUtil.getValue('effectiveRate'), '%'),
                                             Calculator.strip(DWRUtil.getValue('loanPayoff'), ' '),
                                             Calculator.strip(DWRUtil.getValue('daysToFirstPayment'), ' '),
                                             Calculator._serviceFee,
                                             Calculator._dfs,
                                             Calculator._eibMonths,
											 dealDate,
                                             {callback:function(calcbean){
       		Calculator.currentBean = calcbean;
            Calculator.showData (calcbean) ;
            if (action==Calculator._report_action){
            	document.mainPageForm.submit();
            }
  			// going to always show dates as a default
			//else if (action==Calculator._date_action){
            //	Calculator.showDates();
            //}
			else{
            	$('mainPage').style.display='inline';
                $('reportDiv').style.display='none';
                //$('dateDiv').style.display='none';
				Calculator.showDates();
            }
		}});
	    Calculator.clickableButtonOk();
     }
	 else {
	 	Calculator.clickableButtonNg();
	 }
};

Calculator.vrCalculate=function(autoLoanAmount,
								effectiveRate,
								loanPayoff,
								daysToFirstPayment,
								dealDate
){
	calculatorService.getLoanCalculationWithDealDate(Calculator.normalizeValue(autoLoanAmount),
										 Calculator.strip(effectiveRate,'%'),
										 Calculator.strip(loanPayoff, ' '),
										 Calculator.strip(daysToFirstPayment, ' '),
										 Calculator._serviceFee,
										 Calculator._dfs,
										 Calculator._eibMonths,
										 Calculator.strip(dealDate, ' '),
										 {callback:function(calcbean){
		Calculator.currentBean = calcbean;
		Calculator.viewReports();
    }});
}


Calculator.showData =function(calc){
    DWRUtil.setValue('monthlyPayment',JSUtil.formatNumber(calc.monthlyPayment,"$#,##0.00"));
    DWRUtil.setValue('biweeklyPayment',JSUtil.formatNumber(calc.biWeeklyPayment,"$#,##0.00"));
    DWRUtil.setValue('biweeklyPayoff',calc.loanPayoff);
    DWRUtil.setValue('payoffDiff',parseInt(DWRUtil.getValue('loanPayoff')) - calc.loanPayoff);

    DWRUtil.setValue('interestSavings',JSUtil.formatNumber(calc.interestSavings,"$#,##0"));

    if ( calc.equityInterestBenefit>=0 ) {
        DWRUtil.setValue('equityAndInterestSavings',JSUtil.formatNumber(calc.equityInterestBenefit,"$#,##0"));
    }
    else {
        DWRUtil.setValue('equityAndInterestSavings', 'N/A');
    }

    if (calc.equityInterestBenefitAtMonths>=0) {
	    if (calc.equityInterestBenefitAtMonths <= calc.equityInterestBenefit ) {
         DWRUtil.setValue('equityAndInterestSavingsMonths',JSUtil.formatNumber(calc.equityInterestBenefitAtMonths,"$#,##0"));
        }
        else {
	      DWRUtil.setValue('equityAndInterestSavingsMonths','N/A');
        }
    }
    else {
         DWRUtil.setValue('equityAndInterestSavingsMonths','N/A');
    }

};

Calculator.printPage=function() {
	window.print();
};

Calculator.getSpace=function(data){
    return '&nbsp';
};

Calculator.reportCounter=0;

Calculator.showReports= function(){
       $('mainPage').style.display='none';
       $('dateDiv').style.display='none';
       Calculator.reportCounter=0;
       $('reportDiv').style.display='inline';

       DWRUtil.removeAllRows('reportDiv_tbody');
       //DWRUtil.addRows('reportDiv_tbody',Calculator.currentBean.reportDataArray,
       //  [Calculator.getMonth,Calculator.getMonthlyBalance,Calculator.getMonthlyEquity,Calculator.getSpace,Calculator.getBiweeklyBalance,Calculator.getBiweeklyEquity,Calculator.getSpace ],
       //  {rowCreator:Calculator.customRowCreator,cellCreator:Calculator.customCellCreator});
       
       DWRUtil.addRows('reportDiv_tbody',Calculator.currentBean.reportDataArray,
               [Calculator.getMonth,Calculator.getMonthlyBalance,Calculator.getSpace,Calculator.getBiweeklyBalance,Calculator.getSpace ],
        	   {rowCreator:Calculator.customRowCreator,cellCreator:Calculator.customCellCreator});

};

Calculator.viewReports= function(){
       Calculator.reportCounter=0;
       $('reportDiv').style.display='inline';

       DWRUtil.removeAllRows('reportDiv_tbody');
       //DWRUtil.addRows('reportDiv_tbody',Calculator.currentBean.reportDataArray,
       //  [Calculator.getMonth,Calculator.getMonthlyBalance,Calculator.getMonthlyEquity,Calculator.getSpace,Calculator.getBiweeklyBalance,Calculator.getBiweeklyEquity,Calculator.getSpace ],
       //  {rowCreator:Calculator.customRowCreator,cellCreator:Calculator.customCellCreator});
       
       DWRUtil.addRows('reportDiv_tbody',Calculator.currentBean.reportDataArray,
           [Calculator.getMonth,Calculator.getMonthlyBalance,Calculator.getSpace,Calculator.getBiweeklyBalance,Calculator.getSpace ],
    	   {rowCreator:Calculator.customRowCreator,cellCreator:Calculator.customCellCreator});

       if (Calculator._showLogo == "ab1244sss666") {
           $('reportShowLogo').style.display='inline';
           document.getElementById('backButton').focus();
       }
       else {
	       $('reportNoLogo').style.display='inline';

	       var reportBorder = document.getElementById('reportLogoBorder');
	       reportBorder.style.borderTopStyle='solid';
	       reportBorder.style.borderTopWidth='1px';
	       
	       document.getElementById('backButtonNoLogo').focus();
	   }
};

Calculator.customRowCreator = function(options) {
    var row = document.createElement("tr");
    var index = options.rowIndex;

    return row;
};

Calculator.customCellCreator =function(options) {
    var td = document.createElement("td");
    var isRowEven = Calculator.reportCounter%2;

    if (options.cellNum==0){
            td.className='reportDataStyle';
            td.height='35';
            td.fontSize='11pt';
            td.align='center';
            td.width="100";

            if (isRowEven == 0 ) {  // row is even so we need to color it
                td.bgColor='#E6F0FF';
            }
            else {
                td.bgColor = '#FFFFFF';
            }

    }
    if (options.cellNum==1){
            td.className='reportDataStyle';
            td.align='center';
            td.height='35';
            td.colspan='2';

            if (isRowEven == 0 ) {  // row is even so we need to color it
                td.bgColor='#E6F0FF';
            }
            else {
                td.bgColor = '#FFFFFF';
            }

    }
    if (options.cellNum==2){
            td.className='reportDataStyle';
            td.width='10';
            td.height='35';

            if (isRowEven == 0 ) {  // row is even so we need to color it
                td.bgColor='#E6F0FF';
            }
            else {
                td.bgColor = '#FFFFFF';
            }

    }

    if (options.cellNum==3) {
        td.className='reportDataStyle';
        td.align='center';
        td.height='35';
        td.colspan='2';
        
        if (isRowEven == 0 ) {  // row is even so we need to color it
            td.bgColor='#E6F0FF';
        }
        else {
            td.bgColor = '#FFFFFF';
        }
    }
     if (options.cellNum==4){            
            td.className='reportDataStyle';
            td.width='10';
            td.height='35';
            
            if (isRowEven == 0 ) {  // row is even so we need to color it
                td.bgColor='#E6F0FF';
            }
            else {
                td.bgColor = '#FFFFFF';
            }
    }

    return td;
};

Calculator.showDates= function(){
     $('reportDiv').style.display='none';
     $('dateDiv').style.display='inline';

     Calculator.validateDebitDates();

     DWRUtil.setValue('firstFullDebitAmount1',JSUtil.formatNumber(Calculator.currentBean.firstFullDebitAmountOpt1,"$#,##0.00"));
     DWRUtil.setValue('biweeklyDebitAmount1',JSUtil.formatNumber(Calculator.currentBean.biWeeklyDebitAmountOpt1,"$#,##0.00"));
     DWRUtil.setValue('firstFullDebitAmount2',JSUtil.formatNumber(Calculator.currentBean.firstFullDebitAmountOpt2,"$#,##0.00"));
     DWRUtil.setValue('biweeklyDebitAmount2',JSUtil.formatNumber(Calculator.currentBean.biWeeklyDebitAmountOpt2,"$#,##0.00"));

};

Calculator.redirectLease = function() {

    document.location = 'leaseCalculator.htm?waiver=' + Calculator._showWaiver + '&dfs='
        + Calculator._fee + '&fee=' + Calculator._showDFS + '&logo=' + Calculator._showLogo
        + '&months=' + Calculator._months;

};

Calculator.showDefault = function(){
     $('mainPage').style.display='inline';
       $('reportDiv').style.display='none';
    Calculator.calculate('');
};


Calculator.getMonth = function(data){
    return ++Calculator.reportCounter;
};
Calculator.getMonthlyBalance = function(data){
    return JSUtil.formatNumber(data.monthlyBalance,"$#,##0");
};

Calculator.getMonthlyEquity = function(data){
     return JSUtil.formatNumber(data.monthlyEquity,"$#,##0");
};

Calculator.getBiweeklyBalance = function(data){
     return JSUtil.formatNumber(data.biWeeklyBalance,"$#,##0");
};

Calculator.getBiweeklyEquity= function(data){
     return JSUtil.formatNumber(data.biWeeklyEquity,"$#,##0");
};


Calculator.reNumber2 = /^\d{1,7}(\.\d{1,4})?$/
Calculator.reInteger = /^\d+$/

Calculator.isFloat =function(a){
    return Calculator.reNumber2.test(a);
};


Calculator.isInteger =function(a){
     return Calculator.reInteger.test(a);
};

Calculator.validate_daysToFirstPayment=function(){
	var errMsg = "";
    if (!Calculator.isInteger(Calculator.strip(DWRUtil.getValue('daysToFirstPayment'), ' '))){
		errMsg = "Invalid days to first payment.";
        return errMsg;
    }
    if (parseInt(Calculator.strip(DWRUtil.getValue('daysToFirstPayment'), ' '))<30){
        errMsg = "Days to first payment must be greater than 30.";
        return errMsg;
    }
    if (parseInt(Calculator.strip(DWRUtil.getValue('daysToFirstPayment'), ' ')) > Calculator._maxDaysLimit) {
        errMsg = "Days to first payment must be less than " +Calculator._maxDaysLimit + ".";
        return errMsg;
    }
	return errMsg;
};

Calculator.validate_autoLoanAmount=function(){
	var errMsg = "";
    if (DWRUtil.getValue('autoLoanAmount')==''){
        errMsg = "Invalid loan amount value.";
		return errMsg;
    }
    if (isNaN(Calculator.normalizeValue(DWRUtil.getValue('autoLoanAmount')))) {
        errMsg = "Loan amount should be greater than 0";
		return errMsg;
    }
    if (parseFloat(Calculator.normalizeValue(DWRUtil.getValue('autoLoanAmount')))<1000){
       errMsg = "Loan amount should be greater than or equal to $1000.";
	   return errMsg;
    }
    if (parseFloat(Calculator.normalizeValue(DWRUtil.getValue('autoLoanAmount'))) > Calculator._maxAmount) {
        errMsg = "Loan amount should be less than 1 trillion.";
		return errMsg;
    }
	return errMsg;
};

Calculator.validate_effectiveRate=function(){
	var errMsg = "";
    if (!Calculator.isFloat(Calculator.strip(DWRUtil.getValue('effectiveRate'), '%'))){
        errMsg = "Invalid rate value.";
		return errMsg;
    }
    if (parseFloat(Calculator.strip(DWRUtil.getValue('effectiveRate'), '%'))< 0){
        errMsg = "Effective rate should be greater than or equal to 0.";
		return errMsg;
    }
    if (parseFloat(DWRUtil.getValue('effectiveRate'))>100){
        errMsg = "Rate must not exceed 100%";
		return errMsg;
    }
	return errMsg;
};

Calculator.validate_loanPayoff=function(){
	var errMsg = "";
    if (!Calculator.isInteger(Calculator.strip(DWRUtil.getValue('loanPayoff'),' '))){
        errMsg = "Invalid loan payoff value";
		return errMsg;
    }
    if (parseInt(Calculator.strip(DWRUtil.getValue('loanPayoff'),' '))<12){
        errMsg = "Loan payoff should at least be 12 months.";
		return errMsg;
    }
    if (parseInt(Calculator.strip(DWRUtil.getValue('loanPayoff'), ' ')) > Calculator._maxLoanPayoff){
        errMsg = "Loan Payoff should be less than or equal to " + Calculator._maxLoanPayoff + " months.";
		return errMsg;
    }
	return errMsg;
};

Calculator.validate_serviceFee=function(){
	var errMsg = "";
    if ( !Calculator.isFloat(Calculator._serviceFee)) {
        errMsg = "Invalid Transaction fee";
		return errMsg;
    }
    if (Calculator._serviceFee != 2.49) {
        errMsg = "Transaction Fee should be 2.49.";
		return errMsg;
    }
	return errMsg;
};

Calculator.validate_dfs=function(){
	var errMsg = "";
    if (!Calculator.isFloat(Calculator._dfs)) {
        errMsg = "Invalid deferred service fee";
		return errMsg;
    }
    if (Calculator._dfs < 0) {
        errMsg = "Deferred Service Fee should be greater than 0.";
		return errMsg;
    }
    if ( Calculator._dfs > 1000) {
        errMsg = "Deferred Service Fee should be less than $1000.";
		return errMsg;
    }
	return errMsg;
};

Calculator.validate_eibMonths=function(){
	var errMsg = "";
    if ((Calculator._eibMonths != 36) && (Calculator._eibMonths != 48)) {
        errMsg = "Months for Equity Interest Benefit should only be 36 months or 48 months.";
		return errMsg;
    }
	return errMsg;
};

Calculator.validate_urlDealDate=function(){
	
	var errMsg = "";
	if(Calculator._dealDate != 'null') {
		
		var onlyValidFormat = /^(\d{2})\/(\d{2})\/(\d{4})$/
		var result = Calculator.isValidDate(Calculator._dealDate, onlyValidFormat);

		if(result == true) {
			
			var urlDealDate = parseDate(Calculator._dealDate, false);
			if(urlDealDate == null) {
				alert("Invalid deal date.");
			}
			else {
				urlDealDate.setHours(0);
				urlDealDate.setMinutes(0);
				urlDealDate.setSeconds(0);
				urlDealDate.setMilliseconds(0);
				
				var maxDealDate = parseDate(Calculator._validDealDates[0], false);
				maxDealDate.setHours(0);
				maxDealDate.setMinutes(0);
				maxDealDate.setSeconds(0);
				maxDealDate.setMilliseconds(0);
			
				if(urlDealDate > maxDealDate) {
					alert("Deal Date is more than " + Calculator._dealDateLimit + " days ahead of today's date.");
				}
				else {
					var minDealDate = parseDate(Calculator._validDealDates[Calculator._dealDateLimit*2], false);
					minDealDate.setHours(0);
					minDealDate.setMinutes(0);
					minDealDate.setSeconds(0);
					minDealDate.setMilliseconds(0);
					
					if(urlDealDate < minDealDate) {
						alert("Deal Date is more than " + Calculator._dealDateLimit + " days past today's date.");
					}
				}
			}
		}
		else {
			alert("Invalid deal date. Format should be MM/dd/yyyy.");
		}
	}
	return errMsg;
};

Calculator.validate =function(){
	var areAllOk = true;
	var errMsg = "";
	
	errMsg = Calculator.validate_daysToFirstPayment();
	if(errMsg != ""){
		areAllOk = false;
		alert(errMsg);
	}
	
	errMsg = Calculator.validate_urlDealDate();
	if(errMsg != ""){
		areAllOk = false;
		alert(errMsg);
	}

	errMsg = Calculator.validate_autoLoanAmount();
	if(errMsg != ""){
		areAllOk = false;
		alert(errMsg);
	}
	
	errMsg = Calculator.validate_effectiveRate();
	if(errMsg != ""){
		areAllOk = false;
		alert(errMsg);
	}
	
	errMsg = Calculator.validate_loanPayoff();
	if(errMsg != ""){
		areAllOk = false;
		alert(errMsg);
	}
	
	errMsg = Calculator.validate_serviceFee();
	if(errMsg != ""){
		areAllOk = false;
		alert(errMsg);
	}
	
	errMsg = Calculator.validate_dfs();
	if(errMsg != ""){
		areAllOk = false;
		alert(errMsg);
	}
	
	errMsg = Calculator.validate_eibMonths();
	if(errMsg != ""){
		areAllOk = false;
		alert(errMsg);
	}
	
	return areAllOk;
};

Calculator.validateDebitDates = function() {
    var ffdd1 = new Date(Calculator.currentBean.firstFullDebitDateOpt1);
    var ffdd2 = new Date(Calculator.currentBean.firstFullDebitDateOpt2);

    if ( ffdd1.getFullYear() == 1900 ) {

         DWRUtil.setValue('firstFullDebitDate1',"N/A");

         DWRUtil.setValue('biweeklyDebitDate1',"N/A");

         DWRUtil.setValue('firstFullDebitDate2',"N/A");

         DWRUtil.setValue('biweeklyDebitDate2',"N/A");

    }
    else if ( (!(ffdd1.getFullYear() == 1900)) &&
              (ffdd2.getFullYear() == 1900) ) {

         DWRUtil.setValue('firstFullDebitDate1',formatDate(Calculator.currentBean.firstFullDebitDateOpt1,"MM/dd/yyyy"));

         DWRUtil.setValue('biweeklyDebitDate1',formatDate(Calculator.currentBean.biWeeklyDebitDateOpt1,"MM/dd/yyyy"));

         DWRUtil.setValue('firstFullDebitDate2',"N/A");

         DWRUtil.setValue('biweeklyDebitDate2',"N/A");
     }
     else {

         DWRUtil.setValue('firstFullDebitDate1',formatDate(Calculator.currentBean.firstFullDebitDateOpt1,"MM/dd/yyyy"));

         DWRUtil.setValue('biweeklyDebitDate1',formatDate(Calculator.currentBean.biWeeklyDebitDateOpt1,"MM/dd/yyyy"));

         DWRUtil.setValue('firstFullDebitDate2',formatDate(Calculator.currentBean.firstFullDebitDateOpt2,"MM/dd/yyyy"));

         DWRUtil.setValue('biweeklyDebitDate2',formatDate(Calculator.currentBean.biWeeklyDebitDateOpt2,"MM/dd/yyyy"));
     }
};

Calculator.normalizeValue =function(val){
    val =  Calculator.strip(val,'$');
    return Calculator.strip(val,',');
};

Calculator.updateFirstLoanPayment=function(){
	document.getElementById('hiddenDealDate').value = DWRUtil.getValue('dealDate');
	Calculator._dealDate = DWRUtil.getValue('dealDate');
	Calculator.setFirstLoanPayment();
	Calculator.validateInputFields();
};

Calculator.setFirstLoanPayment=function(){
	isOk = true;
	errMsg = Calculator.validate_daysToFirstPayment();
	if(errMsg == ""){
		var dealDate = DWRUtil.getValue('dealDate');
		calculatorService.getDiffWithCurrentDate(dealDate,
			{
				callback:function(diff)
				{
					var newDaysToFirstPayment = Number(Calculator.strip(DWRUtil.getValue('daysToFirstPayment'), ' ')) - diff;
					calculatorService.computeNextPaymentFromToday(newDaysToFirstPayment,
						{
							callback:function(dateString)
							{
								DWRUtil.setValue('firstPaymentDate',dateString);
							}
						}
					);
				}
			}
		);
    }
	else{
		$('daysToFirstPayment').focus();
		Calculator.clickableButtonNg();
		isOk = false;
    }
	return isOk;
}

Calculator.updateAmountFormat=function(){
	Calculator.setAmountFormat();
	Calculator.validateInputFields();
};

Calculator.setAmountFormat=function(){
	var amountInFormat = Calculator.formatAmount(DWRUtil.getValue('autoLoanAmount'));
	DWRUtil.setValue('autoLoanAmount',amountInFormat);
}

Calculator.updateEffectiveRateFormat=function(){
	Calculator.setEffectiveRateFormat();
	Calculator.validateInputFields();
};

Calculator.setEffectiveRateFormat=function(){
	fieldName = 'effectiveRate';
	stripped = Calculator.strip(DWRUtil.getValue(fieldName), '%');
	effectiveRate = stripped + '%';
	DWRUtil.setValue(fieldName, effectiveRate);
}

Calculator.updateLoanPayoffFormat=function(){
	Calculator.setLoanPayoffFormat();
	Calculator.validateInputFields();
};

Calculator.setLoanPayoffFormat=function(){
}

Calculator.formatAmount = function(val){
    val = Calculator.normalizeValue(val);
    return JSUtil.formatNumber(val,"$#,##0.00");
};

Calculator.strip=  function(input, chars) {  // strip all characters in 'chars' from input
    var output = "";  // initialise output string
    for (var i=0; i < input.length; i++)
      if (chars.indexOf(input.charAt(i)) == -1)
        output += input.charAt(i);
    return output;
};

Calculator._printPage=function() {Calculator.validateInputFields();};
Calculator._calculate=function(action) {Calculator.validateInputFields();};


Calculator.validateInputFields=function() {
	areAllOk = Calculator.validate();
	if(areAllOk == true) {
		Calculator.clickableButtonOk();
	}
	else {
		Calculator.clickableButtonNg();
	}
	return areAllOk;
};

Calculator.clickableButtonOk=function() {
    document.getElementById("ahrefButtonCalculate").href="javascript:Calculator.calculate('');";
	document.getElementById("ahrefButtonViewReports").href="javascript:Calculator.calculate('REPT');";
	//document.getElementById("ahrefButtonShowDates").href="javascript:Calculator.calculate('SHWDT');";
    document.getElementById("ahrefButtonPrint2").href="javascript:Calculator.printPage();";
};

Calculator.clickableButtonNg=function() {
    document.getElementById("ahrefButtonCalculate").href="javascript:Calculator._calculate('');";
	document.getElementById("ahrefButtonViewReports").href="javascript:Calculator._calculate('REPT');";
	// document.getElementById("ahrefButtonShowDates").href="javascript:Calculator._calculate('SHWDT');";
    document.getElementById("ahrefButtonPrint2").href="javascript:Calculator._printPage();";
};

Calculator.updateHiddenFields=function() {
	document.getElementById('hiddenWaiver').value     = Calculator._showWaiver;
	document.getElementById('hiddenLogo').value       = Calculator._showLogo;
	document.getElementById('hiddenServiceFee').value = Calculator._fee;
	document.getElementById('hiddenMonths').value     = Calculator._months;
	document.getElementById('hiddenDfs').value        = Calculator._showDFS;
	if(Calculator._dealDate != 'null') {
		document.getElementById('hiddenDealDate').value   = Calculator._dealDate;
	}
};

Calculator.updateFieldsFromUrlParam=function(){
	if(Calculator._daysToFirstPayment != 'null') {
		document.getElementById('daysToFirstPayment').value = Calculator._daysToFirstPayment;
	}
	if(Calculator._autoLoanAmount != 'null'){
		document.getElementById('autoLoanAmount').value = Calculator._autoLoanAmount;
		Calculator.setAmountFormat();
	}
	if(Calculator._effectiveRate != 'null'){
		document.getElementById('effectiveRate').value = Calculator._effectiveRate;
		Calculator.setEffectiveRateFormat();
	}
	if(Calculator._loanPayoff != 'null'){
		document.getElementById('loanPayoff').value = Calculator._loanPayoff;
		Calculator.setLoanPayoffFormat();
	}
	if(Calculator._dealDate != 'null'){
		document.getElementById('hiddenDealDate').value = Calculator._dealDate;
	}
};

Calculator.initIntTypeField=function(fieldName, fieldValue){
	if(parseInt(fieldValue)){
		document.getElementById(fieldName).value = fieldValue;
	}
};
	
Calculator.initFloatTypeField=function(fieldName, fieldValue){
	if(parseFloat(fieldValue)){
		document.getElementById(fieldName).value = fieldValue;
	}
};

Calculator.updateValidDealDates=function(selDate){

	calculatorService.getValidDealDates(Calculator._dealDateLimit, Calculator._dealDateLimit, {
			callback: function(validDealDates){
				Calculator._validDealDates = validDealDates;
				var size = Calculator._dealDateLimit + 1 + Calculator._dealDateLimit;
				var found = false;
				for(var i=0; i<size; i++) {
					document.forms['mainPageForm'].dealDate.options[i] = new Option(validDealDates[i]);
			        if( validDealDates[i] == selDate ) {
				        found = true;
			            document.forms['mainPageForm'].dealDate.options[i].selected = true;
			        }
				}
				if(found == false) {
					document.forms['mainPageForm'].dealDate.options[Calculator._dealDateLimit].selected = true;
				}
				Calculator.setFirstLoanPayment();
				Calculator.calculate('');
			}
	});
};

Calculator.isValidDate=function(date, format) {
	var result = false;
	if(format.test(date)) {
		result = true;
	}
	return result;
};
