function round(number,X) {
	// rounds number to X decimal places, defaults to 2
	X = (!X ? 2 : X);
	return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}

// Function for Merge Plan
function setMortgageRate(nLoan){
	var nPrice = new Number(document.form1.price.value);
	var nPrecent = new Number(document.form1.percent.value);
	
	var nRemain,nRate,nLoan;
	
	if (document.form1.merge_plan[0].checked){
		nLoan = 390000;
	}else if (document.form1.merge_plan[1].checked){
		nLoan = 530000;	
	}else if (document.form1.merge_plan[2].checked){
		nLoan = 195000;	
	}else if (document.form1.merge_plan[3].checked){
		nLoan = 265000;	
	}
	
	if (nPrice > 0){
		if ((nPrice * (1 - nPrecent/100)) < nLoan){
			nRemain = nPrice - nLoan;
			if (nRemain < 0)
				nRemain = 0;
			
			nRate = nRemain / nPrice * 100;
			document.form1.percent.value = round(nRate,2);
		}
	}
}

function clearGovPlan()
{
	resetMergeCategory();
	resetMergePlan();
	resetMergeMethod();
	resetMergeForm();
}

function checkMergeForm()
{
	resetMergeCategory();
	resetMergePlan();
	if (document.form1.merge_form[0].checked)
		document.form1.merge_method[0].click();
	else if (document.form1.merge_form[1].checked)
		document.form1.merge_method[0].click();
	
}
function checkMergeFamily()
{	var test=0;
	var num0 = new Number(document.form1.merge_plan[0].value);
	var num1 = new Number(document.form1.merge_plan[1].value);
	var num2 = new Number(document.form1.price.value);
	document.form1.merge_method[0].checked=true;	
	setMergeForm();	
	if(document.form1.merge_plan[2].checked  || document.form1.merge_plan[3].checked  )
		document.form1.merge_plan[0].click();
	for(i=0;i<4;i++)
	{	if( document.form1.merge_plan[i].checked==true)
			test=1;
	}	
	if(test==0)
		document.form1.merge_plan[0].checked=true;

}

function checkMergeSingle()
{	var test=0;
	var num0 = new Number(document.form1.merge_plan[2].value);
	var num1 = new Number(document.form1.merge_plan[3].value);
	var num2 = new Number(document.form1.price.value);
	document.form1.merge_method[0].checked=true;
	setMergeForm();
	if(document.form1.merge_plan[0].checked  || document.form1.merge_plan[1].checked  )
		document.form1.merge_plan[2].click();
	for(i=0;i<4;i++)
	{	if(document.form1.merge_plan[i].checked==true)
			test=1;
	}	
	if(test==0)
		document.form1.merge_plan[2].checked=true;
}

function checkMergeMethod()
{
	resetMergePlan();
	setMergeForm();
	if (document.form1.merge_category[2].checked) {	
		document.form1.merge_method[1].checked=true;
	}
	else if (document.form1.merge_category[3].checked) {	
		document.form1.merge_method[1].checked=true;
	}
}


function checkMergeCategory()
{
	resetMergePlan();
	setMergeForm();
	if (document.form1.merge_method[0].checked) {	
		document.form1.merge_category[0].click();
		document.form1.merge_plan[0].checked=true;
	}
	else if (document.form1.merge_method[1].checked) {
		document.form1.merge_category[2].click();
	}
}

function checkMergeSinglePlan()
{
	setMergeForm();
	document.form1.merge_method[0].checked=true;
	document.form1.merge_category[1].click();
}

function checkMergeFamilyPlan()
{
	setMergeForm();
	document.form1.merge_method[0].checked=true; 
        document.form1.merge_category[0].click();
}

function setMergeForm()
{
	document.form1.loan_method[1].checked = true;
	if (!document.form1.merge_form[0].checked && !document.form1.merge_form[1].checked)
	{
		document.form1.merge_form[0].checked=true;
	}
}

function resetMergePlan()
{	for(i=0;i<4;i++)
	{
		document.form1.merge_plan[i].checked=false;
		
	}
}

function resetMergeForm()
{	for(i=0;i<2;i++)
	{
		document.form1.merge_form[i].checked=false;
	}
}
function resetMergeMethod()
{	for(i=0;i<2;i++)
	{
		document.form1.merge_method[i].checked=false;
	}
}

function resetMergeCategory()
{	for(i=0;i<4;i++)
	{
		document.form1.merge_category[i].checked=false;
	}
}

function checkNum(obj)
{
	if(obj.value == "" || isNaN(obj.value))
	{   
		alert("請 以 純 數 字 填 上 數 額")
		obj.value = 0;
		obj.focus();
		
   		location.href="javascript:void(0)";
		return false;
	}
	return true;
}

function verifyForm()
{   
	//Primary Checking
	if (document.form1.price.value <= 0)
	{
		alert("樓 價 不 能 少 於 或 等 於 0")
		document.form1.price.focus();
		location.href="javascript:void(0)";
		return false;
	}	
	
	var percent_1st = parseInt(document.form1.percent.value);
	if (percent_1st > 100)
	{
		alert("按 揭 成 數 不 能 大 於 100%")
		document.form1.percent.focus();
		location.href="javascript:void(0)";
		return false;
	}

	var p1_year = parseInt(document.form1.year.value);
	var p1_month = 0;
	var p1_rate = document.form1.rate.value;	
	if (p1_year == 0 && p1_month == 0)
	{
		alert("按 揭 還 款 年 期 不 能 等 於 0")
		document.form1.year.focus();
		location.href="javascript:void(0)";
		return false;
	}else if (p1_rate == 0){
		alert("按 揭 利 率 不 能 等 於 0")
		document.form1.rate.focus();
		location.href="javascript:void(0)";
		return false;			
	}
	//return true;
	calculation(document.form1.price.value, percent_1st, p1_year, p1_month, p1_rate);
	return false; 
}


function calculation(price, mortgage_percent, n_year, n_month, mortgage_rate)
{
	if (price <= 0) 
	{
  		instalment = 0;
  		mortgage_amt = 0;
  		monthly_payment = 0;
  		gloss_pay = 0;
  		total_interest = 0;
  	}
	else
	{
  		down_payment = price * (1 - mortgage_percent / 100);             
  		p1_term = n_year * 12 + n_month;                              
  		calc_amt1 = price * mortgage_percent / 100;
  		total_term = n_year * 12 + n_month;
  		normal_rate = mortgage_rate;
  		base1 = (1 + normal_rate / 1200);
		P1 =  calc_amt1 * normal_rate * Math.pow(base1,total_term) / (1200 * (Math.pow(base1,total_term) - 1));
  		instalment = round(down_payment, 2);
  		mortgage_amt = calc_amt1;
  		monthly_payment = round(P1, 2);
  		gloss_pay = round((P1 * total_term), 2);
  		total_interest = round((P1 * total_term - calc_amt1), 2);
	}

	//alert("monthly = " + monthly_payment);
	document.form1.monthly_payment.value = monthly_payment;
	//document.form1.monthly_payment.disabled=true;
}

