﻿// JavaScript Document
function lockNum(objCal){
	if(window.event.keyCode==13){
		//document.getElementById(objCal).onclick();
	  CalCtt();
	}
	if((window.event.keyCode < 48) || (window.event.keyCode > 58)){
		if(window.event.keyCode!=46) event.keyCode = 0;
	}
}

function isEmpty(objStr){
	var instring = objStr.toString();
	return(instring=="" || instring == null) ? true : false;
}

function intervalDays(intYear, intMonth, intDay){
	intYear = parseInt(intYear) + 1911;
	intMonth = parseInt(intMonth) - 1;

	//var bfDate = new Date(intYear, intMonth, 1);
	var bfDate;
	if (intDay)
		bfDate = new Date(intYear, intMonth, intDay);
	else
		bfDate = new Date(intYear, intMonth, 1);

	var now = new Date();
	return (now.getTime() - bfDate.getTime())/365/24/60/60/1000;
}

function getNet(objAmt, objDeduction, objFT){
	var Net=objAmt-objDeduction-objFT;
	return (Net > 0) ? Net : 0;
}

function whatLevel(objNet, objProgAmt){
	var len = objProgAmt.length;
	for(var i=len-1;i>=0;i--){
		if(objNet>objProgAmt[i]){
			return i;
		}
	}
	return i+1;
}

function initCal(objArea, objHRate, objHTrial, objHPV){
	document.getElementById(objHRate).innerHTML = document.getElementById(objArea).value;
	document.getElementById(objHTrial).value = '';
	document.getElementById(objHPV).focus();
	document.getElementById(objHPV).value = '';
}

function iniCalLand(obj){
	document.getElementById('LRate').innerHTML=obj.value;
	document.getElementById('OLValue').value='';
	document.getElementById('LValue').value='';
	document.getElementById('LArea').value='';
	document.getElementById('Numer').value='';
	document.getElementById('Deno').value='';
	document.getElementById('LTrial').value='';
	document.getElementById('LValue').focus();
}

function Calxg(objthePV, objtxRate, objTrial, objCal){//房屋稅及財產交易所得稅
	var thePV = document.getElementById(objthePV).value;
	var txRate = document.getElementById(objtxRate).innerHTML;
	if (isEmpty(thePV)){alert('請輸入房屋評定現值');document.getElementById(objthePV).focus();return;}
	document.getElementById(objTrial).innerHTML = Math.ceil(thePV * txRate / 100);
	document.getElementById(objCal).focus();
}

function printPPtable(arrNum){
	var Num = arrNum.length;
	var ptb = '';
	for(var i=0;i<Num;i++)	ptb += '第' + (i+1) + '年付:' + arrNum[i] + '元<br>';
	document.getElementById('pptable').innerHTML = ptb;
}

function CalLoan(objlnInterest, objlnPeriod, objlimitPeriod, boolTorP, objlnTotal, objownTotal, objlnPremium, objlnPercent){//貸款試算
	var lnInterest = document.getElementById(objlnInterest).value;
	if(isEmpty(lnInterest)){alert('請輸入貸款年利率');document.getElementById(objlnInterest).focus();return false;}
	var lnPeriod = document.getElementById(objlnPeriod).value;
	if(isEmpty(lnPeriod)){alert('請輸入貸款年限');document.getElementById(objlnPeriod).focus();return false;}
	var limitPeriod = isEmpty(objlimitPeriod) ? 0 : document.getElementById(objlimitPeriod).value;
	if(isEmpty(limitPeriod)){document.getElementById(objlimitPeriod).value=0;limitPeriod=0;}
	var nPeriod = lnPeriod-limitPeriod;
	var RealInterest = lnInterest/100/12;
	var IPower = Math.pow((1 + RealInterest), 12 * nPeriod);
	var avgRatePayBack =  (IPower * RealInterest) / (IPower - 1);
	if(boolTorP){
		var lnTotal = isEmpty(objlnTotal) ? 0 : document.getElementById(objlnTotal).value;
		if(isEmpty(lnTotal)){alert('請輸入預算總額');	document.getElementById(objlnTotal).focus(); return false;}
		
		var ownTotal = isEmpty(objownTotal) ? 0 : document.getElementById(objownTotal).value;
		if(isEmpty(ownTotal)){ownTotal=0;}
		
		var LnNetAmt = (lnTotal - ownTotal)*10000;
		if(LnNetAmt < 0){alert('自備款大於總金額');document.getElementById(objlnTotal).focus(); return false;}
		
		var premm = LnNetAmt/(12 * nPeriod);//
		var firstI = LnNetAmt * RealInterest;
		document.getElementById('lmPayback_avgAmt').innerHTML = (limitPeriod == 0) ? 0 :Math.round(firstI);
		document.getElementById('lmPayback_avgCap').innerHTML = (limitPeriod == 0) ? 0 :Math.round(firstI);
		document.getElementById('aftPayback_avgAmt').innerHTML = Math.round(LnNetAmt * avgRatePayBack);
		var aftPayback_avgCap = Array();//
		for(var theYear = 0; theYear < nPeriod; theYear++){
			aftPayback_avgCap[theYear] = Math.round(premm + (firstI * (nPeriod + 1 - (theYear + 1)) / (nPeriod)));
		}
		printPPtable(aftPayback_avgCap);
	}else{
		var lnPremium = isEmpty(objlnPremium) ? 0 : document.getElementById(objlnPremium).value;
		if(isEmpty(lnPremium)){alert('請輸入每個月的還款金額');document.getElementById(objlnPremium).focus(); return false;}
		var lnPercent = isEmpty(objlnPercent) ? 10 : document.getElementById(objlnPercent).value;
		if(isEmpty(lnPercent)){alert('請輸入貸款成數');document.getElementById(objlnPercent).focus(); return false;}
		if(lnPercent > 10 || lnPercent < 0){alert('貸款成數介於0到10');document.getElementById(objlnPercent).focus(); return false;}
		if (lnPercent == 0) lnPercent = 10;
		document.getElementById('lnTotal').innerHTML = Math.round(((lnPremium/avgRatePayBack)/(lnPercent/10))/10000);
		document.iSearch.sellprice.value = Math.round(((lnPremium/avgRatePayBack)/(lnPercent/10))/10000);
	}
}

function CalLandtx(objLValue, objLArea, objNumer, objDeno, objOLValue, objLPurpose){//地價稅
	var LValue = document.getElementById(objLValue).value;
	var LArea = document.getElementById(objLArea).value;
	var Numer = document.getElementById(objNumer).value;
	var Deno = document.getElementById(objDeno).value;
	var OLValue = document.getElementById(objOLValue).value;
	var oriRate = document.getElementById(objLPurpose).value;
	if(isEmpty(LValue)){alert('請輸入申報地價');document.getElementById(objLValue).focus();return;}
	if(isEmpty(LArea)){alert('請輸入持有面積');document.getElementById(objLArea).focus();return;}
	if (isEmpty(Numer)){alert('請輸入權利範圍之分子');document.getElementById(objNumer).focus();document.getElementById(objNumer).value=1;return;}
	if (isEmpty(Deno) || Deno == 0){alert('請輸入權利範圍之分母且不得為0');document.getElementById(objDeno).focus();document.getElementById(objDeno).value=1;return;}
	if(isEmpty(OLValue)){alert('請輸入累進起點地價');document.getElementById(objOLValue).focus();return;}
	var LORatio = (LValue-OLValue)/OLValue;
	var Level = whatLevel(LORatio, landtxLevel);
	Rate = (Level == 0) ? oriRate : txRatio[Level];
	var NetLArea = LArea * Numer / Deno;
	var TxableAmt = ((LValue * NetLArea * Rate) - (OLValue * NetLArea * pdRatio[Level]))/100;
	document.getElementById('LRate').innerHTML = Rate;
	document.getElementById('TxLevel').value = Level;
	document.getElementById('LTrial').innerHTML = Math.round(TxableAmt);
	document.getElementById('landCal').focus();
}

// 遺產稅 & 贈與稅
function Calbng(objAmt, objFT, objDeduction, objRate, objTrial, objInterest, objProgAmt, objProgRate, objProgDiff){
	var Amt = document.getElementById(objAmt).value;
	if (isEmpty(Amt)){alert('請輸入總額');document.getElementById(objAmt).focus();return;}
	var Deduction = document.getElementById(objDeduction).value;
	if (isEmpty(Deduction)){alert('請輸入扣除額，若無請輸入0');document.getElementById(objDeduction).focus();return;}
	var Interest = document.getElementById(objInterest).value;
	if (isEmpty(Interest)){alert('請輸入扣抵稅額及利息，若無請輸入0');document.getElementById(objInterest).focus();return;}

	//var FT = document.getElementById(objFT).innerHTML;
	var FT = document.getElementById(objFT).value; //免稅額
	var Net = getNet(Amt, Deduction , FT); //遺產淨額
	var Level = whatLevel(Net,objProgAmt); //課稅級距
	var txRate = objProgRate[Level]; //稅率
	var Diff = objProgDiff[Level]; //累進差額
	var Trial = Math.ceil((Net * (txRate / 100) - Diff * 100) - Interest);

	document.getElementById(objRate).innerHTML = txRate;
	document.getElementById(objTrial).innerHTML = (Trial > 0) ? Trial : 0;
}

function CalApprLand(objLPV, objLArea, objOLV, objCPI, objNumer, objDeno, objYear, objMonth, objDay, objsAppreciation, objgAppreciation){//土地增值稅
	var LPV = document.getElementById(objLPV).value;
	var LArea = document.getElementById(objLArea).value;
	var OLV = document.getElementById(objOLV).value;
	var CPI = document.getElementById(objCPI).value;
	var Numer = document.getElementById(objNumer).value;
	var Deno = document.getElementById(objDeno).value;
	var AppYear = document.getElementById(objYear).value;
	var AppMonth = document.getElementById(objMonth).value;
	var AppDay = document.getElementById(objDay).value;

	if (isEmpty(AppYear)){alert('請輸入前次移轉時之年份');document.getElementById(objYear).focus();return;}
	if (isEmpty(AppMonth)){alert('請輸入前次移轉時之月份');document.getElementById(objMonth).focus();return;}
	if (isEmpty(AppMonth)){alert('請輸入前次移轉時之日期');document.getElementById(objDay).focus();return;}
	if (isEmpty(LPV)){alert('請輸入申報時之公告土地現值');document.getElementById(objLPV).focus();return;}
	if (isEmpty(OLV)){alert('請輸入原規定地價或前次移轉現值');document.getElementById(objOLV).focus();return;}
	if (isEmpty(CPI)){alert('請輸入前次移轉時之物價指數，\n若不清楚請設定100');document.getElementById(objCPI).focus();document.getElementById(objCPI).value=100;return;}
	if (isEmpty(LArea)){alert('請輸入土地面積');document.getElementById(objLArea).focus();return;}
	if (isEmpty(Numer)){alert('請輸入權利範圍之分子');document.getElementById(objNumer).focus();document.getElementById(objNumer).value=1;return;}
	if (isEmpty(Deno) || Deno == 0){alert('請輸入權利範圍之分母且不得為0');document.getElementById(objDeno).focus();document.getElementById(objDeno).value=1;return;}
	var NetLArea = LArea * Numer / Deno;
	var Appreciation_a = LPV*NetLArea;
	var Appreciation_b = OLV*NetLArea*CPI/100;
	var Appreciation_total = Appreciation_a - Appreciation_b;
	var multiple = Appreciation_total/Appreciation_b;
	var period = intervalDays(AppYear, AppMonth, AppDay);

	var HoldLevel = whatLevel(period, longYr);
	var TxLevel = whatLevel(multiple, txLvl);
	//Modify by Andy 2008/12/10, 避免結果為負值，將其顯示為零
	//alert(Appreciation_total);
	if (Appreciation_total < 0) Appreciation_total = 0;
	document.getElementById(objsAppreciation).innerHTML = Math.round(Appreciation_total * 0.1);
	document.getElementById(objgAppreciation).innerHTML = Math.round((Appreciation_total * TxRate[TxLevel][HoldLevel]) - (Appreciation_b * TxDiff[TxLevel][HoldLevel]));
}

function CalRentx(){//租賃所得金額試算
	var rtAmt = document.getElementById('rtAmt').value;
	if(isEmpty(rtAmt)){alert('請輸入每月租金收入');document.getElementById('rtAmt').focus();return false;}
	var Mode = document.getElementById('Mode').value;
	var rtExp = document.getElementById('rtExp').value;
	if(Mode == 2){
		if(isEmpty(rtExp)){alert('您選擇了列舉申報，\n請輸入各項支出之總和');document.getElementById('rtExp').focus();return false;}
		var theLeastExp = Math.ceil(rtAmt*12*0.43);
		document.getElementById('rtTotal').innerHTML = rtAmt*12 - rtExp;
		if(rtExp < theLeastExp) alert('各項支出之總和少於年度總收入的43%，建議採標準申報');
	}else{
		if(!isEmpty(rtExp) && rtExp != 0){alert('您選擇了標準申報，\n不需輸入各項支出之總和');document.getElementById('rtExp').value=0;}
		document.getElementById('rtTotal').innerHTML = Math.ceil(rtAmt*12*0.57);
	}
}

function iniCtt(obj){
	document.getElementById('cttRate').innerHTML = obj.value * 100;
	var thePV2 = document.getElementById('thePV2').value;
	if(isEmpty(thePV2))
		document.getElementById('thePV2').focus();
	else
		CalCtt();
}

function CalCtt(){
	var thePV2 = document.getElementById('thePV2').value;
	if(isEmpty(thePV2)){
	  alert('請輸入房屋評定現值');
	  document.getElementById('thePV2').focus();
	  //return false;
	}
	var cttRate = document.getElementById('cttRate').innerHTML;
	document.getElementById('cttTotal').innerHTML = Math.ceil(thePV2 * cttRate / 100);
}

function CalStampX(){
	var cttPrice = document.getElementById('cttPrice').value;
	if(isEmpty(cttPrice)){alert('請輸入建物契價');document.getElementById('cttPrice').focus();return false;}
	var thePV = document.getElementById('thePV').value;
	if(isEmpty(thePV)){alert('請輸入公告土地現值');document.getElementById('thePV').focus();return false;}
	var LArea = document.getElementById('LArea').value;
	if(isEmpty(LArea)){alert('請輸入土地面積');document.getElementById('LArea').focus();return false;}
	var Numer = document.getElementById('Numer').value;
	var Deno = document.getElementById('Deno').value;
	if (isEmpty(Numer)){alert('請輸入權利範圍之分子');document.getElementById('Numer').focus();document.getElementById('Numer').value=1;return false;}
	if (isEmpty(Deno) || Deno == 0){alert('請輸入權利範圍之分母且不得為0');document.getElementById('Deno').focus();document.getElementById('Deno').value=1;return false;}
	document.getElementById('stampxTotal').innerHTML = Math.ceil((eval(cttPrice) + thePV * LArea * Numer / Deno) * 0.1 /100);
}

