//　ここから以下、WEB/revo/use.phpで使用。-----------------------------------------------------

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// シミュレーション部分ここから-----------------------------------------------------
	

// フリーズ防止 (リボ支払い回数の計算上限)
// ループ200回で各コース1,466,878円、3,053,177円、6,244,687円までOK
var LOOP_LIMIT   =     200;

// フリーズ防止 (希望金額の上限)
var AMOUNT_LIMIT = 1000000;

// フキン率
var timesRate = new Array();
timesRate[0] = 0.342373561188;	//  3回
timesRate[1] = 0.174629657980;	//  6回
timesRate[2] = 0.107574305199;	// 10回

// リボ支払額
var rivoAmount = new Array();
rivoAmount[0] = new Array( 0,     0,     0,     0);
rivoAmount[1] = new Array( 0,  3000,  5000, 10000);
rivoAmount[2] = new Array( 0,  5000,  5000, 10000);
rivoAmount[3] = new Array( 0, 10000, 10000, 20000);
rivoAmount[4] = new Array( 0, 15000, 15000, 30000);
rivoAmount[5] = new Array( 0, 20000, 20000, 40000);
rivoAmount[6] = new Array( 0, 30000, 30000, 50000);

function getAmount(form) {
	// 分割・リボ希望金額
	// kibou1 : 10万円の桁
	// kibou2 :  1万円の桁
	// kibou3 :   千円の桁
	return parseInt(form.kibou1.value) + parseInt(form.kibou2.value) + parseInt(form.kibou3.value);
}

// 支払いコース、手数料＋残高よりその月の支払額を決定する
function getPayment(amount, course) {
	if (amount <= 100000) {
		return rivoAmount[1][course];
	}

	else if (amount <= 200000) {
		return rivoAmount[2][course];
	}
	else if (amount <= 400000) {
		return rivoAmount[3][course];
	}
	else if (amount <= 600000) {
		return rivoAmount[4][course];
	}
	else if (amount <= 800000) {
		return rivoAmount[5][course];
	}
	//else if (amount <= 1000000) {
	else {
		return rivoAmount[6][course];
	}
}

function cal(form) {
	//amount = getAmount(form);
	amount = (form.amount.value.toString().length == 0 ? 0 : parseInt(form.amount.value));
	

	
	// リボ払い計算ここから-----------------------------------------------------
	
	// プルダウン生成
	form.revolving.length = 4;
	form.revolving.options[0].text  = "金額を選択";
	form.revolving.options[0].value = 0;
	form.revolving.options[1].text  = insertComma(getPayment(amount,1)) + "円(3,000円コース)";
	form.revolving.options[1].value = getPayment(amount,1);
	form.revolving.options[2].text  = insertComma(getPayment(amount,2)) + "円(ゆったりコース)"
	form.revolving.options[2].value = getPayment(amount,2);
	form.revolving.options[3].text  = insertComma(getPayment(amount,3)) + "円(標準コース)"
	form.revolving.options[3].value = getPayment(amount,3);
	
	// 選択したコース
	course  = form.revolving.selectedIndex;
	
	// 支払い回数計算
	// amount が大きすぎる場合フリーズすることがあります
	num = 0;
	amount_buf = amount;
	debug = '';
	if (amount <= AMOUNT_LIMIT) {
		if (amount_buf > 0 && course > 0) {
			do {
				payment      = getPayment(amount_buf, course);
				charge       = Math.floor(amount_buf * 0.18 / 12);
				amount_buf   = amount_buf + charge - payment;
				payment_next = getPayment(amount_buf, course);
				charge_next  = Math.floor(amount_buf * 0.18 / 12);
				num++;
//				debug += num + "\t" + payment + "\t" + charge + "\t" + amount_buf + "<br>\n";
				if (num >= LOOP_LIMIT) { break; }
			} while (amount_buf + charge_next > payment_next);
			if (amount_buf > 0) {
				num++;
			}
		}
	}
	
	// 表示
	document.getElementById("revolving_error").innerHTML   = "";
	document.getElementById("monthly_revolving").innerHTML = "";
	document.getElementById("revolving_debug").innerHTML   = "";
	
	if (num >= LOOP_LIMIT || amount > AMOUNT_LIMIT) {
		document.getElementById("revolving_error").innerHTML   = "希望金額が大きすぎます。";
	}

	else if (amount < getPayment(amount,course)) {
		document.getElementById("revolving_error").innerHTML   = "１回のお支払いになります。";
		}

	else if (num > 0) {
		document.getElementById("monthly_revolving").innerHTML = num + "回のお支払いになります。";
//		document.getElementById("revolving_debug").innerHTML = debug;
	}
	
	// リボ払い計算ここまで-----------------------------------------------------

	// ポイント計算ここから-----------------------------------------------------
	
	if (5000 > amount) {
		p = 0;
		document.getElementById("point").innerHTML =  "";
	}
	else {
		p = Math.ceil(amount / 100*1);
		document.getElementById("point").innerHTML = "今回のお買い物で、"+insertComma(p) + "&nbsp;ポイントがつきます。";
	}
	
	// ポイント計算ここまで-----------------------------------------------------
}

// 3桁カンマ
function insertComma(val){
	var re = /^([+-]?\d+)(\d{3})/;
	ret = val.toString();
	while (re.test(ret)) {
		ret = ret.replace(re, "$1,$2");
	}
	return ret;
}

// 数値入力チェック
function checkNumeric(form, num){
	//数値以外の文字を削除
	if(!num.match(/^([0-9]*)$/)){
		result = num.replace(/[^0-9]/g, "");
		if (result.toString().length == 0) { result = "0"; }
		form.amount.value = parseInt(result);
	}
	cal(form);
}

// シミュレーション部分ここまで-----------------------------------------------------
