
function addComma(str){
	var num = new String(str).replace(/(\s*)|(\,*)/g, "");
	while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
	return num;
}

function removeComma(str) {
	return str.replace(/(^\s*)|(\s*$)|(\,*)/g, "");
}

function simulator(p) {
	
	// 入力値trim
	var trim = function(val){
		return val.value.replace(/(^\s*)|(\s*$)|(\,*)/g, "");  
	}
	
	// 入力チェック
	var check = function(aAmount, end){
		var valName = ["(1) 支払金額","(2) 給与所得控除後の金額","(3) 所得控除の額の合計額","(4) 市町村民税（所得額割）","(5) 都道府県民税（所得額割）","(6) 自治体への寄付金額"]
					
		for(var i=0; i<end; i++){
			var vAmount = trim(aAmount[i]);

			if(vAmount ==""){
				alert(valName[i] + "　を入力してください");
				return false;
				
			}else if(vAmount.match(/[^0-9]/g)){
				alert(valName[i] + "　を半角数字で入力してください");
				return false;
			}
		}
		return true;
	}


	var aVal = $("#simulateForm dd input");
	var v1 = trim(aVal[0])*1;
	var v2 = trim(aVal[1])*1;
	var v3 = trim(aVal[2])*1;
	var v4 = trim(aVal[3])*1;
	var v5 = trim(aVal[4])*1;
	var v6 = trim(aVal[5])*1;


	// 所得税課税総所得金額
	var taxable = v2 - v3;
	
	// 所得税率
	var iTaxRate = (taxable == 0)? ""
			:(taxable <= 1950000)? 5
			:(taxable <= 3300000)? 10
			:(taxable <= 6950000)? 20
			:(taxable <= 9000000)? 23
			:(taxable <= 18000000)? 33
			:(taxable > 18000000)? 40 :"";
		
	// 住民税所得割額
	var rTax = v4 + v5;


	if(p==1){
		if(check(aVal, 5)){
		
		// 5,000円を超える全額が税金から控除される「ふるさと納税」の上限額の目安
			/*var upperLimit = (rTax >0)? Math.floor((rTax*0.1)/((90-iTaxRate)/100))+5000 :0;*/
			var upperLimit = (rTax >0)? Math.floor(((rTax*0.1)/(90-iTaxRate))/10)*1000+5000 :0; //1000円未満切り捨て
			
			$("#simulateForm dl#limit dd span")[0].innerHTML = addComma(upperLimit);
		}
	}

	if(p==2){
		
		if(check(aVal, 6)){
		
		// 税金の軽減対象は、5千円を越えた部分の寄附金額です。
			var deductible = v6-5000;
			
		// 寄附金の基本控除（住民税）
			var baseDeduct = (v1<=0)? 0
					: (v6<=0)? 0
					: (v2*0.3>=v6)? deductible*0.1 : (v2*0.3-5000)*0.1;
			
		// ｂ 所得税からの控除額
			var iTaxDeduct = (v1<=0)? 0
					: (v6<=0)? 0
					/*: (v1*0.4>=v6*1)? deductible*iTaxRate/100 : (v2*0.4-5000)*iTaxRate/100;*/
					: (v2*0.4>=v6)? Math.floor(deductible*iTaxRate/100000)*1000 : Math.floor((v2*0.4-5000)*iTaxRate/100000)*1000; //1000円未満切り捨て
					
		// ふるさと寄附による軽減額（住民税）
			var furuDeduct = (baseDeduct<=0)? 0
					: (rTax*0.1>=deductible-iTaxDeduct-baseDeduct)? deductible*((90-iTaxRate)/100) : rTax*0.1;
			
		// ａ 住民税からの控除額
			var rTaxDeduct = Math.floor((baseDeduct + furuDeduct)/1000)*1000; //1000円未満切り捨て
	
			
		// 税金控除額 ａ＋ｂ
			var tTaxDeduct = rTaxDeduct + iTaxDeduct;
		
		
			$("#simulateForm dl#t_deduct dd span")[0].innerHTML = addComma(tTaxDeduct);
			$("#simulateForm dl#r_deduct dd span")[0].innerHTML = addComma(rTaxDeduct);
			$("#simulateForm dl#i_deduct dd span")[0].innerHTML = addComma(iTaxDeduct);
		}
	}
}



