/*
Калькулятор TVI ISO 12647-2; cделан в феврале 2007 года;
дописана функция шага TVI ECI2002, IT8.7/4, замена точек на запятые и функция кривых tolerance в январе 2011 года;
идея и скриптинг - Михаил Сартаков; научный консультант - Александр Пыльский;
http://rudtp.pp.ru
*/
function define_precision()
{
df = new Array();
df[0] = 3
df[1] = 4
df[2] = 5
df[3] = 6
df[4] = 12
}
popravka1 = 0.000000000000000888178419700125
popravka2 = 1.00465336097225
popravka3 = -0.080343395140335
plk1 = 0.00078014159
plk2 = -0.1555929
plk3 = 7.8090074
plk4 = 0.5510005
plk5 = 0.01
plk6 = -0.0014582
plk7 = 0.2159099
plk8 = -7.0973431
plk9 = -1.8328824
plk10 = 0.1
function output_table_TVI_ISO(){
DefineField_dg50a = document.formTVI.Field_dg50.value;
var DefineField_dg50 = DefineField_dg50a.replace(",", ".");
Definestep_TVIa = document.formTVI.step_TVI.value;
var Definestep_TVI = Definestep_TVIa.replace(",", ".");
Definetolerancea = document.formTVI.tolerance_field.value;
var Definetolerance = Definetolerancea.replace(",", ".");
tolerance1 = new String((eval(DefineField_dg50)+eval(Definetolerance))/eval(DefineField_dg50));
tolerance2 = (DefineField_dg50-Definetolerance)/DefineField_dg50;
if (DefineField_dg50 < 10){
alert('dg50 = ' + document.formTVI.Field_dg50.value + ' ? \nDg не может быть меньше 10. \nВоспользуйтесь в рассчетах коэффициентом Юла < 1');
}
else
{}
if (DefineField_dg50 > 29 ||
Definestep_TVI < 0.2 ||
Definestep_TVI > 50)
{
alert('Неверные данные dg: ' + document.formTVI.Field_dg50.value + '. Рассчитываемый диапазон dg в 50% полутоне - от 10 до 29 \n'
+ 'или \n' +
'Некорректные данные шага рассчета: ' + document.formTVI.step_TVI.value + '. Рассчитываемый шаг полутона от 0,2 до 50');
}
else
{
dg50pravka = popravka1*(Math.pow(DefineField_dg50, 2))+popravka2*DefineField_dg50+popravka3;
stepminus = Math.round(100/Definestep_TVI-1);
  if (document.formTVI.ECI.checked)
  { 
step = 19;
Definestep = new Array(98,95,90,85,80,75,70,60,50,40,30,25,20,15,10,7,5,3,2); 
a = new Array(); }
  else 
  {
step = 100/Definestep_TVI-1;
Definestep = Definestep_TVI;
a = new Array(stepminus);
  }
for (i=0; i<step; i++){
  if (document.formTVI.ECI.checked)
  { 
var J = (plk1*(Math.pow(Definestep[i], 3))+plk2*(Math.pow(Definestep[i], 2))+plk3*Definestep[i]+plk4)*plk5*dg50pravka+(plk6*(Math.pow(Definestep[i], 3))+plk7*(Math.pow(Definestep[i], 2))+plk8*Definestep[i]+plk9)*plk10; }
  else 
  {
var J = (plk1*(Math.pow(Definestep, 3))+plk2*(Math.pow(Definestep, 2))+plk3*Definestep+plk4)*plk5*dg50pravka+(plk6*(Math.pow(Definestep, 3))+plk7*(Math.pow(Definestep, 2))+plk8*Definestep+plk9)*plk10;
  }
var JT1 = J*tolerance1
var JT2 = J*tolerance2
if (Definestep==50 ||
Definestep[i]==50) {
var J1 = new String(DefineField_dg50);
var JT1a = new String(eval(DefineField_dg50)+eval(Definetolerance));
var JT2a = new String(DefineField_dg50-Definetolerance);
}
else {
var J1 = new String(J);
var JT1a = new String(JT1);
var JT2a = new String(JT2);
}
if (J<10) {
var J20 = J1.substring(0, df[document.formTVI.precision.selectedIndex]);}
else {
var J20 = J1.substring(0, df[document.formTVI.precision.selectedIndex]+1);
}
if (JT1<10) {
var JT1b0 = JT1a.substring(0, df[document.formTVI.precision.selectedIndex]);}
else {
var JT1b0 = JT1a.substring(0, df[document.formTVI.precision.selectedIndex]+1);
}
if (JT2<10) {
var JT2b0 = JT2a.substring(0, df[document.formTVI.precision.selectedIndex]);}
else {
var JT2b0 = JT2a.substring(0, df[document.formTVI.precision.selectedIndex]+1); 
}
if (document.formTVI.point.checked){
var J2 = J20.replace(".", ",");
var JT1b = JT1b0.replace(".", ",");
var JT2b = JT2b0.replace(".", ",");}
else{
var J2 = J20
var JT1b = JT1b0
var JT2b = JT2b0
}
if (document.formTVI.tolerance.checked)
{
  if (document.formTVI.ECI.checked)
  {
var dSvar0=String(Definestep[i]);
if (document.formTVI.point.checked){
var dSvar = dSvar0.replace(".", ",");}
else{
var dSvar = dSvar0}
a[i]="\n"+dSvar+"	"+J2+"	"+JT1b+"	"+JT2b+"	"; }
  else 
  {
var dSvar0=String(Definestep);
if (document.formTVI.point.checked){
var dSvar = dSvar0.replace(".", ",");}
else{
var dSvar = dSvar0}
a[i]="\n"+dSvar+"	"+J2+"	"+JT1b+"	"+JT2b+"	";
Definestep=eval(Definestep)+eval(Definestep_TVI);
  }
}
else{
  if (document.formTVI.ECI.checked)
  {
var dSvar0=String(Definestep[i]);
if (document.formTVI.point.checked){
var dSvar = dSvar0.replace(".", ",");}
else{
var dSvar = dSvar0}
a[i]="\n"+dSvar+"	"+J2+"	"; }
  else 
  {
var dSvar0=String(Definestep);
if (document.formTVI.point.checked){
var dSvar = dSvar0.replace(".", ",");}
else{
var dSvar = dSvar0}
a[i]="\n"+dSvar+"	"+J2+"	";
Definestep=eval(Definestep)+eval(Definestep_TVI);
  }
 }
}
var result = new Function('return (a)');
}
document.formTVI.rezultat.value = result(document.formTVI.Field_dg50.value, document.formTVI.step_TVI.value);
}
