
var HiCalculatorScript = new HiCalculatorScript();//HiCalculatorScript实例
function HiCalculatorScript() {
	/*
	 * 在HiCalculatorScript Class定义方法,可以通过该Class 的实例对function进行引用。
	 */
	this.calculateEqualPay 			= calculateEqualPay;
	this.calculateDegressivePay 	= calculateDegressivePay;
	this.trim = trim;
	/**
     * 计算等额还款方式的每月偿还本息额
     * @param aAmount		贷款本金      （元）
     * @param aYRate	    年利率        （%）
     * @param aYTerm 		贷款期限      （年）
     * @param aMTerm 		贷款期限      （月）
     * @param aDTerm 		贷款期限      （日）
     * @return tResult      每月偿还本息额（元）两位小数
     */
	function calculateEqualPay(aAmount,aYRate,aYTerm,aMTerm,aDTerm) {
		var tDRate 	= aYRate / 36000;
		var tDay   	= aYTerm * 360 + aMTerm * 30 + aDTerm * 1;
		var tResult;
		with (Math) {
			tResult = aAmount * tDRate * pow ((1 + tDRate),tDay);
			tResult = tResult / (pow ((1 + tDRate),tDay) - 1);
		}
		tResult 	= keepTwo(tResult * 30);
		return tResult;
	}
	/**
     * 计算按月递减还款方式的下一期偿还本息额
     * @param aAmount		贷款本金      （元）
     * @param aYRate	    年利率        （%）
     * @param aYTerm 		贷款期限      （年）
     * @param aMTerm 		贷款期限      （月）
     * @param aDTerm 		贷款期限      （日）
     * @param aPayedTerm    已归还期数    （月）
     * @return tResult      每月偿还本息额（元）两位小数
     */
	function calculateDegressivePay(aAmount,aYRate,aYTerm,aMTerm,aDTerm,aPayedTerm) {
		var tDRate 	= aYRate / 36000;
		var tDay   	= aYTerm * 360 + aMTerm * 30 + aDTerm * 1;
		var tPayedAmount;
		var tResult;
		tPayedAmount 	= aAmount / tDay * aPayedTerm * 30;
		tResult      	= aAmount / tDay + (aAmount - tPayedAmount) * tDRate;
		tResult 		= keepTwo(tResult * 30);
		return tResult;
	}
	/**
	 * 将输入的数据保留两位小数
	 * @param aAmount       金额    			（元）
     * @return tResult      保留两位小数的金额	（元）
	 */
	function keepTwo(aAmount) {
		var tResult = aAmount;
		tResult = Math.round(tResult * 100);
		tResult = tResult / 100;
		return tResult;
	}
	/*
	 * 去掉字串左边的空格
	 *@param strTemp ：要规整的字串。字符串型
	 *@return 规整后的字串。字符串型
	 */
	function lTrim(aValue){
		for (i = 0; i < aValue.length; i++){
			if (aValue.charAt(i) != " "){
				return aValue.substring(i, aValue.length);
			}
		}
		return "";
	}/*去掉字串左边的空格结束:~*/
	/*
	 * 去掉字串右边的空格
	 *@param strTemp ：要规整的字串。字符串型
	 *@return 规整后的字串。字符串型
	 */
	function rTrim(aValue){
		for(i = aValue.length - 1; i >= 0; i--){
			if (aValue.charAt(i) != " "){
				return aValue.substring(0, i + 1);
			}
		}
		return "";
	}/*去掉字串右边的空格结束:~*/
	/*
	 * 去掉字串两边的空格
	 *@param strTemp ：要规整的字串。字符串型
	 *@return 规整后的字串。字符串型
	 */
	function trim(aValue){
		return rTrim(lTrim(aValue));
	}/*去掉字串两边的空格结束:~*/
}
	