
var Browser = {
	isIE     : window.attachEvent && !window.opera,
	isOpera  : !!window.opera,
	isWebKit : navigator.userAgent.indexOf('AppleWebKit/') > -1,
	isGecko  : navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1
}

function findParentByTagName (object, tag_name, limit){
	var limit = parseInt(limit);
	limit = limit ? limit : 0 ;

	if ( object && object.nodeType && object.nodeType == 1 ) {
		var count = 0;

		while ( ++count ) {
			var object = object.parentNode;

			if ( object == null || count >= limit ) {
				break;
			} else if ( object.tagName.toLowerCase() == tag_name ) {
				return object;
			}
		}
	}

	return null;
}

function addFavorite (object, name, site) {
	var name = name ? name : document.title;
	var site = site ? site : location.protocol + '//' + location.host + '/' ;

	if ( object.is_action_set ) return;

	if ( Browser.isIE ) {
		object.onclick = function () {
			window.external.AddFavorite(site, name);
		}
		object.is_action_set = true;
	} else if ( window.sidebar ) {
		object.onclick = function () {
			window.sidebar.addPanel(name, site, true)
		}
		object.is_action_set = true;
	} else if ( Browser.isOpera ) {
		object.title = name;
		object.rel   = "sidebar";
		object.href  = site
		object.is_action_set = true;
	}

	return false;
}

function calculateByNumber (object) {
	var form = findParentByTagName(object, 'form', 10);

	var times = parseFloat(form.times.value); // 返済回数
	var rate  = parseFloat(form.rate.value); // 実質年率
	var loan  = parseFloat(form.loan.value) * 10000; // 借入金額

	if ( !( times && rate && loan ) ) return;

	var magic1 = rate / 1200;
	var magic2 = magic1 + 1;
	var magic3 = Math.pow(magic2, times);

	var month_value = magic3 * magic1 / ( magic3 - 1 ) * loan; // 月額
	var total_value = parseFloat(month_value) * times - loan; // 総金利額
 
	var result1 = document.getElementById('result1_1');
	var result2 = document.getElementById('result1_2');
	var result3 = document.getElementById('result1_3');

	result1.innerHTML = result1.innerHTML.replace(/\w*円/, parseInt(month_value) + '円').replace(/\w*回/, times + '回');
	result2.innerHTML = result2.innerHTML.replace(/\w*円/, parseInt(total_value) + '円');
	result3.innerHTML = result3.innerHTML.
		replace(/\w*円/, parseInt(loan) + '円').
		replace(/[\w\.\-\+]*%/, parseFloat(rate) + '%').
		replace(/\w*回/, parseInt(times) + '回');

	return false;
}

function calculateByValue (object) {
	var form = findParentByTagName(object, 'form', 10);

	var payment = parseFloat(form.payment.value); // 月の支払い
	var rate  = parseFloat(form.rate.value); // 実質年率
	var loan  = parseFloat(form.loan.value) * 10000; // 借入金額

	if ( !( payment && rate && loan ) ) return;

	var magic1 = rate / 1200;
	var magic2 = magic1 + 1;
	var magic3 = payment / ( payment - loan * magic1 );

	var time_result = Math.log(magic3) / Math.log(magic2); // 月額
	time_result = parseFloat(time_result);
	time_result = Math.floor(time_result * 10000);
	time_result = time_result / 10000;
	time_result = Math.ceil(time_result);

	var total_value = payment * time_result - loan; // 総金利額
 
	var result1 = document.getElementById('result2_1');
	var result2 = document.getElementById('result2_2');
	var result3 = document.getElementById('result2_3');

	result1.innerHTML = result1.innerHTML.replace(/\w*円/, parseInt(payment) + '円').replace(/\w*回/, time_result + '回');
	result2.innerHTML = result2.innerHTML.replace(/\w*円/, parseInt(total_value) + '円');
	result3.innerHTML = result3.innerHTML.
		replace(/\w*円/, parseInt(loan) + '円').
		replace(/[\w\.\-\+]*%/, parseFloat(rate) + '%').
		replace(/\w*回/, parseInt(time_result) + '回');

	return false;
}


