function onloadcalc(){　//オンロード(フリーカットフル計算)
	formobj = document.forms;
	thisform = document.FORM1;
	purposeresult = "";
	thisform.purpose.selectedIndex  = 0;
	
	for (i=0; i<formobj.length; i++){
		var obj = formobj[i];
		if ( obj.goods ) calc(obj,1);
	}

}
function onloadcalconlyamount(){ // オンロード(数量限定計算)
	formobj = document.forms;
	thisform = document.FORM1;
	for (i=0; i<formobj.length; i++){
		var obj = formobj[i];
		if ( obj.goods ) calconlyamount(obj);
	}
}

function zen2han(obj){ // 全角数字自動変換
	var zen = "０１２３４５６７８９";
	var han = "0123456789";
	var aftervalue = "";
	for (i=0; i<obj.value.length; i++){
		var c = obj.value.charAt(i);
		var n = zen.indexOf(c,0);
		var nh = han.indexOf(c,0);
		if (n >= 0) c = han.charAt(n);
		if (n < 0  && nh < 0 ) c = "";
		aftervalue += c;
	}
	obj.value = aftervalue;
}
	
function calc(obj,fromload){ //フリーカットフル計算
// エラーフラグ初期化
	var widtherror = 0;
	var lengtherror = 0;
	var thickerror = 0;
// 先頭のゼロと数字以外を削除
	if (fromload!="1" && obj.type=="text" && obj.name!="purpose2"){
		var han = "123456789";	
		var zeroerror = 1;
		var aftervalue = obj.value;
		while(zeroerror > 0 ){
			if(han.indexOf(aftervalue.charAt(0),0)<0){ zeroerror=1; aftervalue=aftervalue.substring(1,aftervalue.length); obj.value=aftervalue;	}
			else{zeroerror=0;}
		}
	}
// フォームオブジェクト変数代入
	if (obj.tagName == 'FORM' ) thisform = obj; else thisform = obj.form;
	var entrytag = document.getElementById("tag");
	var price = document.getElementById("unit");
	var submitb = document.getElementById("submitb");
	var priceatc = document.getElementById("priceatc");
	var pricetaxatc = document.getElementById("pricetaxatc");
	var alertatc = document.getElementById("alertatc");
	var amountatc = document.getElementById("amountatc");
	var sumatc = document.getElementById("sumatc");
	var weightatc = document.getElementById("weightatc");
	var sumweightatc = document.getElementById("sumweightatc");
	var s = thisform.thick.selectedIndex;
		
// 不正値入力時は処理終了
	if (!thisform.thick.value.match(/^[0-9]+$/) || !thisform.width.value.match(/^[0-9]+$/) || !thisform.length.value.match(/^[0-9]+$/) || !thisform.amount.value.match(/^[0-9]+$/)) {
	return false;
	}
	
// 有効値判定(幅)
	if (thisform.width.value == "" || parseInt(thisform.width.value) < thisform.minwidth.value || parseInt(thisform.width.value) > thisform.maxwidth.value) {
		widtherror = 1;
		thisform.width.style.backgroundColor = "#F8F3CC";
	}
	else {
		widtherror = 0;
		thisform.width.style.backgroundColor = "";
		// 厚み選択制の場合、幅によって選択肢を変更する
		if ( (obj.name=="width" || fromload==1) && thisform.tcflag.value == "1" ){
			var width = parseInt(thisform.width.value);
			var tc240 = thisform.tc240.value.split(",");
			var tc600 = thisform.tc600.value.split(",");
			var tc1000 = thisform.tc1000.value.split(",");
			var tc;
			if(width<=240){ tc = tc240; }
			else if(width<=600){ tc = tc600; }
			else if(width<=1000){ tc = tc1000; }
			thisform.thick.options.length=tc.length;
			var svalue = parseInt(thisform.thick.options[s].value);
			for (i=0; i<tc.length; i++){
				thisform.thick.options[i] = new Option(tc[i],tc[i]);
				if(parseInt(tc[i])==svalue){thisform.thick.selectedIndex = i;}
			}
		}
	}
// 有効値判定(厚み)
	if (thisform.thick.value == "" || parseInt(thisform.thick.value) < thisform.minthick.value || parseInt(thisform.thick.value) > thisform.maxthick.value) {
		thickerror = 1;
		thisform.thick.style.backgroundColor = "#F8F3CC";
	}
	else {
		thickerror = 0;
		thisform.thick.style.backgroundColor = "";
	}
// 有効値判定(長さ)
	if (thisform.length.value == "" || parseInt(thisform.length.value) < thisform.minlength.value || parseInt(thisform.length.value) > thisform.maxlength.value) {
		lengtherror = 1;
		thisform.length.style.backgroundColor = "#F8F3CC";
	}
	else {
		lengtherror = 0;
		thisform.length.style.backgroundColor = "";
	}
// 有効値判定(数量)
	if (thisform.amount.value == "" || parseInt(thisform.amount.value) < 1 || parseInt(thisform.amount.value) > thisform.maxamount.value) {
		amounterror = 1;
		thisform.amount.style.backgroundColor = "#F8F3CC";
	}
	else {
		amounterror = 0;
		thisform.amount.style.backgroundColor = "";
	}
// 4値有効時、価格計算実行
	if ( widtherror + lengtherror + thickerror == 0 ){ // 3値(数量以外)有効時
			
		var unitbase = parseInt(thisform.unitbase.value);
		if ( entrycategory.substring(0, 3) == '100' && thisform.width.value >= 180 ) {
			unitbase = unitbase+150000;
		}
	
		if( entrycategory.substring(0, 2) == '12' || entrycategory.substring(0, 2) == '13' ) {
			result = Math.round(parseInt(thisform.width.value) * parseInt(thisform.length.value)  * unitbase*0.7/0.9 / 90000);
		}else{
			result = Math.round(parseInt(thisform.thick.value) * parseInt(thisform.width.value) * parseInt(thisform.length.value)  * unitbase / 1000000000);
		}
		
		
// 集成材・無垢 割増計算
		if( entrycategory.indexOf("フリーカット", 0)>0 && entrycategory.substring(0, 2) != '12' && entrycategory.substring(0, 2) != '13'  ) {
			if ( thisform.thick.value <= 10 ) {
				result = result*3.5;
			}
			else if ( thisform.thick.value <= 15 ) {
				result = result*2.5;
			}
			else if ( thisform.thick.value <= 19 ) {
				result = result*2;
			}
			else if ( thisform.thick.value <= 20 ) {
				result = result*1.2;
			}
			else if ( thisform.thick.value <= 22 ) {
				result = result*1.15;
			}
		}
		
		if( entrycategory.substring(0, 2) == '12' || entrycategory.substring(0, 2) == '13' ) {
			if ( thisform.thick.value <= 24 ) {
				result = result*1;
			}
			else if ( thisform.thick.value <= 29 ) {
				result = result*1.2;
			}
			else if ( thisform.thick.value <= 34 ) {
				result = result*1.3;
			}
			else if ( thisform.thick.value == 35 ) {
				result = result*1.4;
			}
		}
		
		if ( entrycategory.substring(0, 3) == '110' ) {
			if ( thisform.thick.value >= 45 ) {
				result = result*1.05;
			}
			if ( thisform.width.value >= 600 ) {
				result = result*1.05;
			}
			if ( thisform.length.value > 4000 ) {
				result = result*1.2;
			}
		}
		
		if ( entrycategory.substring(0, 2) == '10' ) {
			if ( thisform.length.value <= 1000 ) {
				result = result*0.9;
			}
		}		
		
		var resulttax = Math.ceil(result*1.05/10)*10; // 税込価格算出(10円以下切り上げ)
		result = Math.ceil(resulttax/1.05); // 税抜価格算出(切り上げた税込価格から再算出)
		
		if ( thisform.minimum.value && thisform.minimum.value > result ) {
			result = parseInt(thisform.minimum.value);
			resulttax = Math.ceil(result*1.05/10)*10;
			result = Math.ceil(resulttax/1.05);
		}
		
		 // ポリ･メラミンフリーカット計算無効
		if( entrytag.value.indexOf("nofc")>-1 ){
			pricetaxatc.innerHTML = "自動見積非対応"; // 税込価格表示
			priceatc.innerHTML = "---"; // 本体価格表示
			price.value = 0; // 価格フォーム値には税込価格を代入
		}else{
			pricetaxatc.innerHTML = addComma(resulttax); // 税込価格表示
			priceatc.innerHTML = addComma(result); // 本体価格表示
			price.value = resulttax; // 価格フォーム値には税込価格を代入
		}
		
		var remresult = "○CODE:" + thisform.code.value;  // 商品備考に寸法値代入(リセット)
		if( entrycategory.substring(0, 2) == '12') {
			remresult=remresult+"(ポリ)";
		}
		if( entrycategory.substring(0, 2) == '13') {
			remresult=remresult+"(メラミン)";
		}
		remresult = remresult + "○寸法:" + addZero(thisform.thick.value,3) + "*" + addZero(thisform.width.value,4) + "*" + addZero(thisform.length.value,4) + "mm";  // 商品備考に寸法値代入(リセット)
		if ( thisform.weight.value > 0 ) { // 重量情報がある時
			if( entrycategory.substring(0, 2) == '12' || entrycategory.substring(0, 2) == '13' ) {
				weight = Math.round(parseInt(thisform.width.value) * parseInt(thisform.length.value)  * parseInt(thisform.weight.value) / 90000); // ポリ・メラミンは8pt/30cm角(20090705)
			}else{
				weight = Math.round(parseInt(thisform.thick.value) * parseInt(thisform.width.value) * parseInt(thisform.length.value)  * parseInt(thisform.weight.value) *1.8 / 1000000000 ); // 重量一律1.8倍(20081206)、小数点以下四捨五入(20090205)
			}
			if ( weight == 0 ) { weight = 1;}  // 最低1pt(20090205)
					if( entrytag.value.indexOf("nofc")>-1 ){
						weightatc.innerHTML = "---"; // 重量表示
					}else{
						weightatc.innerHTML = weight; // 重量表示
					}
			remresult = remresult + " ≒" + addZero(weight,3) + "pt";
		}
		if ( thisform.purpose.value != "未選択" || (thisform.purpose.value == "その他"&&thisform.purpose2.value != "") ) {
			remresult = remresult + " | "+ purposeresult;
		}
		thisform.rem.value = remresult;
		
		
		if ( amounterror == 0 ) { // 数量値有効時
			if( entrytag.value.indexOf("nofc")>-1 ){
				sumatc.innerHTML = "---"; // 合計価格表示
				sumweightatc.innerHTML = "---"; // 合計重量表示
				submitb.disabled = "";
			}else{
				result2 = resulttax * parseInt(thisform.amount.value); // 合計価格値代入
				sumatc.innerHTML = addComma(result2); // 合計価格表示
				submitb.disabled = "";
				alertatc.innerHTML = "";
				if ( thisform.weight.value ) { // 重量情報がある時
					var sumweight;
					sumweight = Math.round( parseInt(thisform.thick.value) * parseInt(thisform.width.value) * parseInt(thisform.length.value)  * parseInt(thisform.weight.value) *1.8 / 1000000000 * parseInt(thisform.amount.value) ); // 重量一律1.8倍(20081206)、小数点以下四捨五入(20090205)
					if ( sumweight == 0 ) { sumweight = 1;}  // 最低1pt(20090205)
					sumweightatc.innerHTML = sumweight; // 合計重量表示
				}
			}
		}
		else { // 数量値無効時
			sumatc.innerHTML = "----"; // 合計価格取消線
			submitb.disabled = "true"; // ボタンを押せなくする
			alertatc.innerHTML = "前に、正しい枚数を入力してください。";
			if ( thisform.weight.value ) { // 重量情報がある時
				sumweightatc.innerHTML =  "----";
			}
		}
		
		if( thisform.purpose.value == "未選択" ) {
			submitb.disabled = "true"; // ボタンを押せなくする
			alertatc.innerHTML = "前に、用途を選択して下さい。";
		}
		else if (thisform.purpose.value == "その他"&&thisform.purpose2.value == "" ) {
			submitb.disabled = "true"; // ボタンを押せなくする
			alertatc.innerHTML = "前に、用途を入力して下さい。";
		}
		else {
			submitb.disabled = "";
			alertatc.innerHTML = "<br />※ご注文かお見積もりかは後ほど選択できますので、<br /><strong>お見積もりのみの方もカートにお入れください。</strong>";
		}
	}
	else { // 3値が有効でないとき
		if( obj.value == "再計算" ){
			message = "恐れ入りますが、寸法は、厚み" + thisform.minthick.value + "〜" + thisform.maxthick.value + "mm、幅" + thisform.minwidth.value + "〜" + thisform.maxwidth.value + "mm、長さ" + thisform.minlength.value + "〜" + thisform.maxlength.value + "mmとなっております。";
			alert (message);
		}
		pricetaxatc.innerHTML = "----";
		priceatc.innerHTML = "----";
		sumatc.innerHTML = "----";
		submitb.disabled = "true";
		alertatc.innerHTML = "前に、正しい寸法または枚数を入力してください。";
		if ( thisform.weight.value ) {
			var weight;
			weightatc.innerHTML = '----';
			sumweightatc.innerHTML = '----';
		}
	}
}

function calconlyamount(obj){ // 数量限定計算
// フォームオブジェクト変数代入
	if (obj.tagName == 'FORM' ) thisform = obj; else thisform = obj.form;
	var price = document.getElementById("unit");
	var submitb = document.getElementById("submitb");
	var alertatc = document.getElementById("alertatc");
	var amountatc = document.getElementById("amountatc");
	var sumatc = document.getElementById("sumatc");
	var resulttax = parseInt(thisform.unit.value);
// 数量値有効時
	if (thisform.amount.value == "" || parseInt(thisform.amount.value) < 1 || parseInt(thisform.amount.value) > thisform.maxamount.value) {
		amounterror = 1;
		thisform.amount.style.backgroundColor = "#F8F3CC";
	}
// 数量値無効時
	else {
		amounterror = 0;
		thisform.amount.style.backgroundColor = "";
	}
	if ( amounterror == 0 ) {
		result2 = resulttax * parseInt(thisform.amount.value);
		sumatc.innerHTML = addComma(result2);
		submitb.disabled = "";
		alertatc.innerHTML = "";
		if ( thisform.weight.value ) {
			var sumweight;
			sumweight = Math.round( parseInt(thisform.thick.value) * parseInt(thisform.width.value) * parseInt(thisform.length.value)  * parseInt(thisform.weight.value) / 1000000000 * parseInt(thisform.amount.value) *10)/10;
			sumweightatc.innerHTML = sumweight;
		}
	}
	else {
		sumatc.innerHTML = "----";
		submitb.disabled = "true";
		alertatc.innerHTML = "の前に、正しい枚数を入力してください。";
		if ( thisform.weight.value ) {
			sumweightatc.innerHTML =  "----";
		}
	}
}

function switchpurpose2() {
	thisform = document.FORM1;
	var purpose2desc = document.getElementById("purpose2desc");
	if (thisform.purpose.value == "その他"){
		purpose2desc.style.display = "inline";
		thisform.purpose2.style.display = "block";
		thisform.purpose2.focus();
		var p2flag = 1;
	}else{
		purpose2desc.style.display = "none";
		thisform.purpose2.style.display = "none";
		thisform.purpose2.value = "";
		var p2flag = 0;
	}
}
function addpurpose() {
	var weightatc = document.getElementById("weightatc");
	if ( thisform.purpose.value == "その他" ) {
		purposeresult = thisform.purpose2.value;
	} else {
		purposeresult = thisform.purpose.value;
	}
}　

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

function addZero( number, size ) {
  var s = Math.log( number ) * Math.LOG10E;
  for( i=1,n=size-s,str="";i<n;i++ ) str += "0";
  return str+number;
}
