var mil2mill=0.0254;


function IsNumeric(candidate)
{
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;
	var sText=document.getElementById(candidate).value;
	for (i = 0; i < sText.length && IsNumber == true; i++) 
	{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
			alert('In this field, type only numbers or a decimal point.');
			document.getElementById(candidate).focus();
		}
	}
	return IsNumber;
}


function round_it(real_number,num_decimals) 
{
	var rounded_result = Math.round(real_number*Math.pow(10,num_decimals))/Math.pow(10,num_decimals);
	return rounded_result;
}
function asic()
{
// Retrieve values
	var w=Number(document.getElementById('asic.field1').value);
	var h1=Number(document.getElementById('asic.field2').value);
	var h2=Number(document.getElementById('asic.field3').value);
	var t=Number(document.getElementById('asic.field4').value);
	var e=Number(document.getElementById('asic.field5').value);
	if (document.getElementById('asic.metric').checked) {
		w=w/mil2mill;
		h1=h1/mil2mill;
		h2=h2/mil2mill;
		t=t/mil2mill;
	}
// Data validation
	var data_valid=true;
	if ((e<1) || (e>15)) {
		data_valid=false;
		document.getElementById('asic.field5_error_message').innerHTML="The dielectric's relative permittivity must be between 1 and 15.";
	} else {
		document.getElementById('asic.field5_error_message').innerHTML="&nbsp";
	}
	if (h1>=h2) {
		data_valid=false;
		document.getElementById('asic.field3_error_message').innerHTML='Ensure <span class="variable">h</span><span class="subscript">1</span> &#8804; <span class="variable">h</span><span class="subscript">2</span>.';
	} else {
		document.getElementById('asic.field3_error_message').innerHTML="&nbsp";
	}
	if ((t/h1)>0.99) {
		data_valid=false;
		document.getElementById('asic.field4_error_message').innerHTML='Ensure <span class="variable">t</span> &#247; <span class="variable">h</span><span class="subscript">1</span> &#8804; 0.99.';
	} else {
		document.getElementById('asic.field4_error_message').innerHTML="&nbsp";
	}
	var temp=w/h1;
	if ((temp<0.1) || (temp>2.0)) {
		data_valid=false;
		document.getElementById('asic.field1_error_message').innerHTML=' Ensure 0.1 &#8804; <span class="variable">w</span> &#247; <span class="variable">h</span><span class="subscript">1</span> &#8804; 2.0.';
	} else {
		document.getElementById('asic.field1_error_message').innerHTML="&nbsp";
	}
	temp=(1.9*((2*h1)+t))/((0.8*w)+t);
	if (temp<1.0) {
		data_valid=false;
		document.getElementById('asic.field2_error_message').innerHTML='Ensure the argument for the natural logaritm is greater than 1.0.';
	} else {
		document.getElementById('asic.field2_error_message').innerHTML="&nbsp";
	}
	for (i=1;i<=4;i++) {
		if (document.getElementById('asic.field'+i).value <=0) {
			document.getElementById('asic.field'+i+'_error_message').innerHTML="This value must be greater than zero.";
			data_valid=false;
		}
	}
// Compute result
	if (data_valid) {
		var result_z0=(80/Math.sqrt(e))*Math.log((1.9*(2*h1+t))/((0.8*w)+t))*(1-(h1/(4*h2)));
		var accuracy=document.getElementById('asic.decimal_points').value;
		document.getElementById('asic.result.char_impedence').innerHTML=round_it(result_z0,accuracy);
	}
}
function sdsic()
{
// Retrieve values
	var w=Number(document.getElementById('sdsic.field1').value);
	var s=Number(document.getElementById('sdsic.field2').value);
	var b=Number(document.getElementById('sdsic.field3').value);
	var t=Number(document.getElementById('sdsic.field4').value);
	var e=Number(document.getElementById('sdsic.field5').value);
	if (document.getElementById('sdsic.metric').checked) {
		w=w/mil2mill;
		s=s/mil2mill;
		b=b/mil2mill;
		t=t/mil2mill;
	}
// Data validation
	var data_valid=true;
	for (i=1;i<=4;i++) {
		if (document.getElementById('sdsic.field'+i).value <=0) {
			document.getElementById('sdsic.field'+i+'_error_message').innerHTML="This value must be greater than zero.";
			data_valid=false;
		}
			else document.getElementById('sdsic.field'+i+'_error_message').innerHTML="&nbsp;";
	if ((e<1) || (e>15)) {
		data_valid=false;
		document.getElementById('sdsic.field5_error_message').innerHTML="The dielectric's relative permittivity must be between 1 and 15.";
	} else {
		document.getElementById('sdsic.field5_error_message').innerHTML="&nbsp";
	}
	if ((w/t)<0.5) {
		data_valid=false;
		document.getElementById('sdsic.field1_error_message').innerHTML='Ensure <span class="variable">w</span> &#247; <span class="variable">t</span> &#8804; 0.5.';
	} else {
		document.getElementById('sdsic.field1_error_message').innerHTML="&nbsp";
	}
	}
// Compute result - updated this equation, line 2 
	if (data_valid) {
		var intermediate_result=(120/Math.sqrt(e))*Math.log((1.9*b)/((0.8*w)+t));
		var result_z0=intermediate_result*(1-0.348*Math.exp(-2.89*s/b));
		var accuracy=document.getElementById('sdsic.decimal_points').value;
		document.getElementById('sdsic.result.char_impedence').innerHTML=round_it(result_z0,accuracy);
	}
}
function msic()
{
// Retrieve values
	var w=Number(document.getElementById('msic.field1').value);
	var h=Number(document.getElementById('msic.field2').value);
	var t=Number(document.getElementById('msic.field3').value);
	var e=Number(document.getElementById('msic.field4').value);
	if (document.getElementById('msic.metric').checked) {
		w=w/mil2mill;
		h=h/mil2mill;
		t=t/mil2mill;
	}
// Data validation
	var data_valid=true;
	for (i=1;i<=3;i++) {
		if (document.getElementById('msic.field'+i).value <=0) {
			document.getElementById('msic.field'+i+'_error_message').innerHTML="This value must be greater than zero.";
			data_valid=false;
		}
			else document.getElementById('msic.field'+i+'_error_message').innerHTML="&nbsp;";
	if ((e<1) || (e>15)) {
		data_valid=false;
		document.getElementById('msic.field4_error_message').innerHTML="The dielectric's relative permittivity must be between 1 and 15.";
	} else {
		document.getElementById('msic.field4_error_message').innerHTML="&nbsp";
	}
	}
// Compute result
	if (data_valid) {
		var result_z0=(87/Math.sqrt(e+1.41))*Math.log((5.98*h)/(0.8*w+t));
		var accuracy=document.getElementById('msic.decimal_points').value;
		document.getElementById('msic.result.char_impedence').innerHTML=round_it(result_z0,accuracy);
	}
}
function ssic()
{
// Retrieve values
	var w=Number(document.getElementById('ssic.field1').value);
	var h=Number(document.getElementById('ssic.field2').value);
	var t=Number(document.getElementById('ssic.field3').value);
	var e=Number(document.getElementById('ssic.field4').value);
	if (document.getElementById('ssic.metric').checked) {
		w=w/mil2mill;
		h=h/mil2mill;
		t=t/mil2mill;
	}
// Data validation
	var data_valid=true;
	if ((e<1) || (e>15)) {
		data_valid=false;
		document.getElementById('ssic.field4_error_message').innerHTML="The dielectric's relative permittivity must be between 1 and 15.";
	} else {
		document.getElementById('ssic.field4_error_message').innerHTML="&nbsp";
	}
	if ((t/h)>0.99) {
		data_valid=false;
		document.getElementById('ssic.field1_error_message').innerHTML='Ensure <span class="variable">t</span> &#247; <span class="variable">h</span> &#8804; 0.99.';
	} else {
		document.getElementById('ssic.field1_error_message').innerHTML="&nbsp";
	}
	var temp=w/h;
	if ((temp<0.1) || (temp>3.0)) {
		data_valid=false;
		document.getElementById('ssic.field3_error_message').innerHTML='Ensure 0.1 &#8804; <span class="variable">w</span> &#247; <span class="variable">h</span> &#8804; 3.0.';
	} else {
		document.getElementById('ssic.field3_error_message').innerHTML="&nbsp";
	}
	temp=(1.9*((2*h)+t))/((0.8*w)+t);
	if (temp<0.1) {
		data_valid=false;
		document.getElementById('ssic.field2_error_message').innerHTML='Ensure the argument for the natural logaritm is greater than 1.0.';
	} else {
		document.getElementById('ssic.field2_error_message').innerHTML="&nbsp";
	}
	for (i=1;i<=3;i++) {
		if (document.getElementById('ssic.field'+i).value <=0) {
			document.getElementById('ssic.field'+i+'_error_message').innerHTML="This value must be greater than zero.";
			data_valid=false;
		}
	}
// Compute result
	if (data_valid) {
		var result_z0=(60/Math.sqrt(e))*Math.log((1.9*(2*h+t))/((0.8*w)+t));
		var accuracy=document.getElementById('ssic.decimal_points').value;
		document.getElementById('ssic.result.char_impedence').innerHTML=round_it(result_z0,accuracy);
	}
}
//BoltTorque btc
function btc()
{
// Retrieve values
	var t=Number(document.getElementById('btc.field1').value);
	var k=Number(document.getElementById('btc.field2').value);
	var d=Number(document.getElementById('btc.field3').value);
	
	if (document.getElementById('btc.metric').checked) {
		t=t/mil2mill;
		d=d/mil2mill;
		result_Pi=result_Pi/mil2mill;
	}

// Compute result
{
		var result_Pi=(t/(k*d));
		var accuracy=document.getElementById('btc.decimal_points').value;
		document.getElementById('btc.result.char').innerHTML=round_it(result_Pi,accuracy);
	}
}
//End Bolt Torque
function ChangeUnits(target,prefix,limit) {
	var i;
	var oldstring;
	if (target=="metric") 
		for (i=1;i<=limit;i++) {
			document.getElementById(prefix+'.field'+i).value=document.getElementById(prefix+'.field'+i).value*mil2mill;
			oldstring=document.getElementById(prefix+'.field'+i+'_units').innerHTML;
			document.getElementById(prefix+'.field'+i+'_units').innerHTML=oldstring.replace(/mil/,"mm");
		}
	else 
		for (i=1;i<=limit;i++) {
			document.getElementById(prefix+'.field'+i).value=document.getElementById(prefix+'.field'+i).value/mil2mill;
			oldstring=document.getElementById(prefix+'.field'+i+'_units').innerHTML;
			document.getElementById(prefix+'.field'+i+'_units').innerHTML=oldstring.replace(/mm/,"mil");
		}
}

