/******* 定数の宣言*******/
var she = 15	//単位換算初（内部）処理時、四捨五入処理の端数指定
var wei = 0;	//単位換算端数位置のデフォールト指定（必ず画面のデフォールト値と一致しなければならない）
var func = "";	//端数処理方式（四捨五入か、切捨てか、切り上げか）
var Mark="⇒";	//換算の基本単位を表示する矢印
var Radix = 0;	//基本単位との換算係数
var ratioFlg = 0;

var radix_key = 0; // 単位換算表中の基本単位の位置

//「長さ」の単位換算表≪mm　　　　cm　　　 in　　 ft　　  yd　　 m		 km　     mile　　  M(海里)　≫
var length = new Array("1000000","100000","39370","3281","1094","1000",	"1",	"0.6214","0.5400");

//「面積」の単位換算表≪mm2　　 cm2　　  in2　　ft2　　 yd2　　m2	a　　    acre　　   ha       km2　　     mile2　≫
var area = new Array("1000000","10000","1550","10.76","1.196","1","0.01","0.0002471","0.0001","0.000001","0.0000003861");

//「体積」の単位換算表≪mm3　　      cm３　    in3　　  l    gal（US　　 gal（UK））　ft3　　yd3　　 m3≫
var cubage = new Array("1000000000","1000000","61020","1000","264.2",	"220",		"35.31","1.308","1");

//「質量」の単位換算表≪gr          g        oz     lb     kg    t(米国制)  t(ﾒｰﾄﾙ制)  t(英国制)  ≫
var mass = new Array ("1543000","1000000","35270","2205","1000","1.102",	"1",		"0.9842");

//「密度」の単位換算表≪kg/m3	lb/ft3	lb/gal(US)  g/cm3  	lb/in3  ≫
var density = new Array("1000",	"62.43","8.345",	"1",	"0.03613");

//「流量」の単位換算表≪mm3/s      l/min  gal（US）/min   gal（UK）/min      m3/h   ft3/h   yd     m3/s　≫
var flux = new Array("1000000000","60000","15850",			"13200",		"3600","127.2","35.32","1");

//「速度」の単位換算表≪mm/s km/h  ft/s    mile/h   knot   m/s　≫
var speed = new Array("1000","3.6","3.281","2.237","1.944","1");

//「角速度」の単位換算表≪度毎秒  ラジアン毎秒	回転毎秒  回転毎分≫
var cspeed = new Array("57.3",		"1",     "0.15915",     "9.549");

//「加速度」の単位換算表≪    mm/s2 cm/s2 in/s2   ft/s2    m/s2 G　≫
var acceleration = new Array("1000","100","39.37","3.2808","1","0.101972");

//「角加速度」の単位換算表≪ 度毎秒毎秒  ラジアン毎秒毎秒  回転毎秒毎秒
var angular = new Array(	"57.3",  		"1",			"0.15915");

//「力」の単位換算表	≪dyn      Pdl     N   lbf       kgf　≫
var strength = new Array("100000","7.233","1","0.2248","0.1020");

//「トルク」の単位換算表≪gf・cm    oz・in  	N・m  	lbf・ft      kgf・m　≫
var torque = new Array(	 "10200",	"141.6",	"1",	"0.7376",	"0.1020");

//「圧力」の単位換算表≪Pa  	mmHg	kPa	  lbf/in2	 mH2O	 kgf/cm2    bar  atm      mHg      MPa　≫
var press = new Array("100000","750.1","100","14.55",	"10.20","1.019",	"1","0.9869","0.7501","0.1");

//「仕事率（工率・動力）」の単位換算表≪ W  ft・lbf/s   kgf・m/s   PS  	       HP        kW      BTU/s      kcal/s　≫
var power = new Array(					"1","0.7376",	"0.1020","0.001360","0.001341","0.001","0.0009480","0.0002389");

//「仕事・エネルギー及び熱量」の単位換算表≪ J  ft・lbf   cal      kgf・m     BTU        kcal        PS・hk          HP・h          W・h　≫
var powers = new Array(						"1","0.7376","0.2389","0.102","0.0009480","0.0002389","0.0000003777","0.0000003724","0.0000002778");

//「粘度」の単位換算表≪    cP     P   Pa・s    lbf・s/ft2  kgf・s/cm2　≫
var viscosity = new Array("1000","10","1",		"0.02088",	"0.00001020");

//「動粘度」の単位換算表≪ cSt            St    m2/s　≫
var mviscosity = new Array("1000000",	"10000","1");

//「熱伝達係数」の単位換算表≪W/m2・K    kcal/m2・h・℃  BTU/ft2・h・F  cal/cm2・s・℃　≫
var thermal = new Array(	"1",		"0.860",		"0.1761",		"0.00002389");

//「熱伝導率」の単位換算表≪W/m・K  kcal/m・h・℃   BTU/ft・h・F    BTU/in・h・F    J/cm・s・℃  cal/cm・s・℃　≫
var heat = new Array(		"1",	"0.8598",		"0.5778",		"0.04815",		"0.01",		"0.002386");

//「熱伝導率」の単位換算表≪	W/m2  	kcal/m2・h	Btu/ft2・h	Btu/in2・h≫
var heatflux = new Array(		"1",	"0.8598",	"0.317",	"0.002201");

//一時用単位換算表
var radixarray = new Array();



/*****************************************
換算電卓の表示、隠す動作関数
関数名：diaplay
引数：
	action:	換算電卓名
	sum	:	換算電卓名の最初3文字
戻り値：なし
*****************************************/
function diaplay(action,sum) {
	//該当換算
	if(document.getElementById (action).style.display == "none") {
		document.getElementById (action).style.display = "inline";
		document.getElementById (action).style.background = "#CBDEEB";
		document.getElementById (sum).style.background = "#6699FF";


	}
	else{
		document.getElementById (action).style.display = "none";
		document.getElementById (action).style.background = "#F1F1F1";
		document.getElementById (sum).style.background = "#F1F1F1";
	}
}

/*****************************************
基本単位に指す矢印の表示
関数名：writeId
引数：
	idName:	対象単位（基本単位）
	a:		矢印
戻り値：なし
*****************************************/
function writeId(idName,a){
 if (document.all) { // ブラウザは IE4以上
 document.all.item(idName).innerHTML=a;
 }
 else if (document.getElementById) { // ブラウザは NS6以上
 myNode=document.getElementById(idName);
 myNode.firstChild.deleteData(0,myNode.firstChild.length);
 myNode.firstChild.appendData(a);
 }
 else {
 alert("ブラウザが対応していません。");
 return;
 }
}

/*****************************************
数字チェック：
入力した値が数字ではない場合、警告が出る
関数名：checkNum
引数：
	inputVal:	入力値
戻り値：
	True:	OK
	False:	NG
*****************************************/
function checkNum(inputVal){
	if(isNaN(inputVal)) {
		alert("数値エラー");
		return false;
	}
	return true;
}

/*****************************************
単位換算表の選択：
指定された電卓の種類により、該当する単位換算
表を選ぶ
関数名：selectArray
引数：
	unitName:	単位換算表名
戻り値：
	なし
*****************************************/
function selectArray(unitName){
    switch(unitName){
        case"Length":
          for (i=0;i<length.length;i++){
           radixarray[i]=length[i]
          }
          break;
        case"Area":
          for (i=0;i<area.length;i++){
           radixarray[i]=area[i]
          }
          break;
        case"Cubage":
          for (i=0;i<cubage.length;i++){
           radixarray[i]=cubage[i]
          }
          break;
         case"Speed":
          for (i=0;i<speed.length;i++){
           radixarray[i]=speed[i]
          }
          break;
        case"Cspeed":
          for (i=0;i<cspeed.length;i++){
           radixarray[i]=cspeed[i]
          }
          break;
        case"Flux":
          for (i=0;i<flux.length;i++){
           radixarray[i]=flux[i];

          }
          break;
        case"Density":
          for (i=0;i<density.length;i++){
           radixarray[i]=density[i]
          }
          break;
        case"Strength":
          for (i=0;i<strength.length;i++){
           radixarray[i]=strength[i]
          }
          break;
         case"Press":
          for (i=0;i<press.length;i++){
           radixarray[i]=press[i]
          }
          break;
        case"Mass":
          for (i=0;i<mass.length;i++){
           radixarray[i]=mass[i]
          }
          break;
        case"Torque":
          for (i=0;i<torque.length;i++){
           radixarray[i]=torque[i]
          }
          break;
        case"Power":
          for (i=0;i<power.length;i++){
           radixarray[i]=power[i]
          }
          break;
        case"Powers":
          for (i=0;i<powers.length;i++){
           radixarray[i]=powers[i]
          }
          break;
        case"Viscosity":
          for (i=0;i<viscosity.length;i++){
           radixarray[i]=viscosity[i]
          }
          break;
        case"Kviscosity":
          for (i=0;i<mviscosity.length;i++){
           radixarray[i]=mviscosity[i]
          }
          break;
        case"Thermal":
          for (i=0;i<thermal.length;i++){
           radixarray[i]=thermal[i]
          }
          break;
        case"Heat":
          for (i=0;i<heat.length;i++){
           radixarray[i]=heat[i]
          }
          break;
        case"Acceleration":
          for (i=0;i<acceleration.length;i++){
           radixarray[i]=acceleration[i]
          }
          break;
        case"Angular":
          for (i=0;i<angular.length;i++){
           radixarray[i]=angular[i]
          }
          break;
        case"HeatFlux":
          for (i=0;i<heatflux.length;i++){
           radixarray[i]=heatflux[i]
          }
          break;

    }

}

/*****************************************
画面に指定された小数点処理位置の取得
関数名：pointselect
引数：
	なし
戻り値：
	なし
*****************************************/
function pointselect(){
    wei = point.options(point.selectedIndex).value;

}

/*****************************************
端数処理方式の取得
関数名：rounding
引数：
	met:	画面に指定された端数処理方式
戻り値：
	なし
*****************************************/
function rounding(met){
switch(met){
         case"four":
         func = "four";
         break;
         case"cut":
         func = "cut";
         break;
         case"upone":
         func = "upone";
         break;
         }
         }



/*****************************************
単位換算処理
関数名：conversion
引数：
	unitName:	単位換算組み名称
	tId:		指定した単位の所在行目
	count:		該当単位数
戻り値：
	なし
*****************************************/
function conversion(unitName, count, flg){

	selectArray(unitName);

	var input_unit   = $A(document.input_form.input_unit).find(function(v) {return v.checked;}).value;
	var input_number = document.getElementById("input_number").value;

	for(i = 0; i < radixarray.length; i++) {
	    if (radixarray[i] == 1) radix_key = i;
	}

	var multiply_base   = radixarray[radix_key] / radixarray[input_unit];
	var multiply; // 倍率

	if(checkNum(document.getElementById("input_number").value)) {
		document.getElementById("input_number").focus();
		Radix = input_number / radixarray[input_unit];
	} else {
		return;
	}

	for(i =0; i < radixarray.length; i++) {
		multiply = multiply_base * radixarray[i];
		document.getElementById(unitName + "_ratio_" + i).value = multiply;

		if (i != input_unit) {
			document.getElementById(unitName + "_" + i).value = change(Radix * radixarray[i]);
		} else {
			document.getElementById(unitName + "_" + i).value = Number(input_number);
		}
	}

	if(!flg && ratioFlg) {
		var ratio = document.getElementById("txtRatio").value
		if(ratio != "" && ratio != 0) {
			if(unitName == "Viscosity") {
				document.getElementById("Mviscosity_0").elements[0].value = change(document.getElementById("Viscosity_0").elements[0].value / ratio)
				conversion("Mviscosity", 0, 3, 1)
			}
			else if(unitName == "Mviscosity") {
				document.getElementById("Viscosity_0").elements[0].value = change(document.getElementById("Mviscosity_0").elements[0].value * ratio)
				conversion("Viscosity", 0, 5, 1)
			}
		}
	}
}

/*****************************************
指定の値を小数点処理
関数名：change
引数：
	value:		指定値
戻り値：
	なし
*****************************************/

function change(value) {

	var wei  = document.getElementById('select_point').value;
	var func = $A(document.input_form.adjust).find(function(v2) {return v2.checked;}).value

	if (wei == 0){
		return Math.round(value*Math.pow(10,she))/Math.pow(10,she);
	}
	//小数点指定がありの場合
	else {
		if (func == "upone"){
			return Math.ceil((Math.round(value*Math.pow(10,she))/(Math.pow(10,she)))*Math.pow(10,wei))/(Math.pow(10,wei));
		}
		else if(func == "cut"){
			return Math.floor((Math.round(value*Math.pow(10,she))/(Math.pow(10,she)))*Math.pow(10,wei))/(Math.pow(10,wei));
		}
		else {
			return Math.round(value*Math.pow(10,wei))/(Math.pow(10,wei));
		}
	}
}

/*****************************************
温度換算処理
関数名：conversionRatio
引数：
	tId:		指定した単位の所在行目
戻り値：
	なし
*****************************************/
function conversionRatio(unitName, count) {

	var input_unit   = $A(document.input_form.input_unit).find(function(v) {return v.checked;}).value;
	var input_value = document.getElementById("input_number").value;

	if(checkNum(input_value)) {
		document.getElementById("input_number").focus();
	}
	else {
		return;
	}

	var TValue = new Array();
	var Ratio = new Array();
	switch(Number(input_unit)){
		case 0:
			TValue[0] = input_value;
			TValue[1] = Subtr(TValue[0], 273.15);
			TValue[2] = Math.round((TValue[0] * 1.8)*Math.pow(10,she))/Math.pow(10,she)
			TValue[3] = Subtr(TValue[2], 459.67);
			Ratio[0] = ' ';
			Ratio[1] = input_value+' - 273.15';
			Ratio[2] = input_value+' x 1.8';
			Ratio[3] = input_value+' x 1.8 - 459.67';
			break;
		case 1:
			TValue[0] = Number(input_value) + 273.15;
			TValue[1] = input_value;
			TValue[2] = Math.round((TValue[0] * 1.8)*Math.pow(10,she))/Math.pow(10,she)
			TValue[3] = Subtr(TValue[2], 459.67);
			Ratio[0] = input_value+' + 273.15';
			Ratio[1] = ' ';
			Ratio[2] = input_value+' x 1.8';
			Ratio[3] = input_value+' x 1.8 - 459.67';
			break;
		case 2:
			TValue[0] = input_value / 1.8;
			TValue[1] = Subtr(TValue[0], 273.15);
			TValue[2] = input_value;
			TValue[3] = Subtr(TValue[2], 459.67);
			Ratio[0] = input_value+' / 1.8';
			Ratio[1] = input_value+' - 273.15';
			Ratio[2] = ' ';
			Ratio[3] = input_value+' - 459.67';
			break;
		case 3:
			TValue[0] = (Number(input_value) + 459.67) / 1.8;
			TValue[1] = Subtr(TValue[0], 273.15);
			TValue[2] = Math.round((TValue[0] * 1.8)*Math.pow(10,she))/Math.pow(10,she)
			TValue[3] = input_value;
			Ratio[0] = '('+input_value+' + 459.67) / 1.8';
			Ratio[1] = input_value+' - 273.15';
			Ratio[2] = input_value+' x 1.8';
			Ratio[3] = ' ';
			break;
	}

	for(i =0; i < 4; i++) {
		document.getElementById(unitName + "_ratio_" + i).value = Ratio[i];
		document.getElementById(unitName + "_" + i).value = change(TValue[i]);
	}
}

function txtRatioChange(value)
{
	if(checkNum(value)) {
		ratioFlg = 1;
	}
	else {
		ratioFlg = 0;
	}
}

function setCursor(Id)
{
	var e = document.getElementById(Id).elements[0];
	var r = e.createTextRange();
	r.moveStart('character',0);
	r.collapse(true);
	r.select();
}


function accDiv(arg1,arg2){
var t1=0,t2=0,r1,r2;
try{t1=arg1.toString().split(".")[1].length}catch(e){}
try{t2=arg2.toString().split(".")[1].length}catch(e){}
with(Math){
r1=Number(arg1.toString().replace(".",""))
r2=Number(arg2.toString().replace(".",""))
return (r1/r2)*pow(10,t2-t1);
}
}


function accMul(arg1,arg2)
{
var m=0,s1=arg1.toString(),s2=arg2.toString();
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
}

function Subtr(arg1,arg2){
     var r1,r2,m,n;
     try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
     try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
     m=Math.pow(10,Math.max(r1,r2));
     n=(r1>=r2)?r1:r2;
     return ((arg1*m-arg2*m)/m).toFixed(n);
}

/*
var sPop = null;
var postSubmited = false;

document.write("<style type='text/css'id='defaultPopStyle'>");
document.write(".cPopText { font-family:  ＭＳ Ｐゴシック, Osaka; background-color: #FFFFCC; border: 1px #000000 solid; font-size: 12px; padding-right: 1px; padding-left: 1px; line-height: 18px; padding-top: 0px; padding-bottom: 0px; visibility: hidden; filter: Alpha(Opacity=80)}");

document.write("</style>");
document.write("<div id='popLayer' style='position:absolute;z-index:1000' class='cPopText'></div>");

function showPopupText(event) {
	if(event.srcElement) o = event.srcElement; else o = event.target;
	MouseX=event.clientX;
	MouseY=event.clientY;
	if(o.alt!=null && o.alt!="") { o.pop=o.alt;o.alt="" }
	if(o.title!=null && o.title!=""){ o.pop=o.title;o.title="" }
	if(o.pop!=sPop) {
		sPop=o.pop;
		if(sPop==null || sPop=="") {
			document.getElementById("popLayer").style.visibility="hidden";
		} else {
			if(o.dyclass!=null) popStyle=o.dyclass; else popStyle="cPopText";
			document.getElementById("popLayer").style.visibility="visible";
			showIt();
		}
	}
}

function showIt() {
	document.getElementById("popLayer").className=popStyle;
	document.getElementById("popLayer").innerHTML=sPop.replace(/<(.*)>/g,"<$1>").replace(/\n/g,"<br>");;
	popWidth=document.getElementById("popLayer").clientWidth;
	popHeight=document.getElementById("popLayer").clientHeight;
	if(MouseX+12+popWidth>document.body.clientWidth) popLeftAdjust=-popWidth-24; else popLeftAdjust=0;
	if(MouseY+12+popHeight>document.body.clientHeight) popTopAdjust=-popHeight-24; else popTopAdjust=0;
	document.getElementById("popLayer").style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust;
	document.getElementById("popLayer").style.top=MouseY+12+document.body.scrollTop+popTopAdjust;
}
if(!document.onmouseover) {
	document.onmouseover = function(e) {
		if (!e) showPopupText(window.event); else showPopupText(e);
	};
}
*/
function openwin() {
	var StartX = (screen.width - 975) / 2;
	var StartY = (screen.height - 600) / 2;
	var s = 'width=' + 975 + ', height=' + 600 + ', top=' + StartY + ', left=' + StartX;
    s += ', toolbar=no, menubar=no, scrollbars=yes, resizable=yes, location=no, status=no';
    window.open("hardness.htm", "newwindow", s);
}
