/*
07-Jan-05
*/

// CCD/Camera -----------------------------------
// stuff "rows" of data for pseudo-two-dimensional array
function CCDinfo(ccdName, hsize, vsize, ccdF)
{
  this.ccdName = ccdName
  this.hsize = hsize
  this.vsize = vsize
  this.ccdF = ccdF
}

// create pseudo-two-dimensional array
CCDtype = new Array(8)
CCDtype[0] = new CCDinfo("0", 0, 0, 0)
CCDtype[1] = new CCDinfo("1/4", 3.2, 2.4, 4.621)
CCDtype[2] = new CCDinfo("1/3", 4.8, 3.6, 6.933)
CCDtype[3] = new CCDinfo("1/2", 6.4, 4.8, 9.244)
CCDtype[4] = new CCDinfo("2/3", 8.8, 6.6, 12.71)
CCDtype[5] = new CCDinfo("1", 12.8, 9.6, 18.49)
CCDtype[6] = new CCDinfo("1/1.8", 7.0656, 5.3199, 10.215)
CCDtype[7] = new CCDinfo("DSC-F707", 8.704, 6.528, 9.7)


// Select CCD/Camera
function doCCDtype(form)
{
i = document.calc.ccdT.selectedIndex

if (i == 0)
  {
  return false;
  }
else
  {
  var hsize = CCDtype[i].hsize
  var vsize = CCDtype[i].vsize
  var ccdF = CCDtype[i].ccdF
  document.calc.ccdH.value = hsize
  document.calc.ccdV.value = vsize
  document.calc.ccdFl.value = ccdF
  }
doCCD(calc);
}


//-----------------------------------------------

function a(txt) {self.status = txt}

function b() {self.status = ""}

function round2dec(value)
{
return ((Math.round( 100 * value ))/100);
}

function fov(x, f)
{
var deg = Math.atan( ((x/2)/f) ) * (360/Math.PI);
return round2dec(deg);
}

function diag(h, v)
{
var diag = (Math.sqrt( (Math.pow(h,2) ) + (Math.pow(v,2) ) ))
return round2dec(diag);
}


// CCD ------------------------------------------
// Calculate CCD Field of View ------------------
function calculateccdFOV(f)
{
f.ccdFOVh.value = fov( f.ccdH.value, f.ccdFl.value )
f.ccdFOVv.value = fov( f.ccdV.value, f.ccdFl.value )
f.ccdFOVd.value = fov( f.ccdD.value, f.ccdFl.value )
}

// Calculate CCD diagonal
function calculateccdD(f)
{
f.ccdD.value = diag( f.ccdH.value, f.ccdV.value )
}


// 35mm -----------------------------------------
// Calculate FILM Field of View -----------------
function calculatefilmFOV(f)
{
f.filmFOVh.value = fov( f.filmH.value, f.filmFl.value )
f.filmFOVv.value = fov( f.filmV.value, f.filmFl.value )
f.filmFOVd.value = fov( f.filmD.value, f.filmFl.value )
}

// Calculate 35mm diagonal
function calculatefilmD(f)
{
f.filmD.value = diag( f.filmH.value, f.filmV.value )
}


// 35mm EQ --------------------------------------
// Calculate 35mm EQ
function calculateEQ(f)
{
f.EQh.value = round2dec( (f.ccdFl.value * (f.filmH.value / f.ccdH.value)) )
f.EQv.value = round2dec( (f.ccdFl.value * (f.filmV.value / f.ccdV.value)) )
f.EQd.value = round2dec((f.ccdFl.value * (diag( f.filmH.value, f.filmV.value) / diag( f.ccdH.value, f.ccdV.value))))
}


// check ----------------------------------------
function checkCCDdata()
{
errorstr1 = "Select a CCD/Camera or manually enter CCD Data";
if ((document.calc.ccdH.value == 0) || (document.calc.ccdV.value == 0) || (document.calc.ccdFl.value == 0))
  {
  alert(errorstr1);
  document.calc.ccdT.focus();
  return 0;
  }
return 1;
}

// doCCD ----------------------------------------
function doCCD(f)
{
if ( checkCCDdata() == 0 )
  {
  return;
  }
calculateccdD(f);
calculateccdFOV(f);
calculateEQ(f);
}


// doFILM ---------------------------------------
function doFILM(f)
{
calculatefilmD(f);
calculatefilmFOV(f);
}

function doFILMh(f)
{
doCCD(f)
f.filmFl.value = f.EQh.value
calculatefilmD(f);
calculatefilmFOV(f);
}

function doFILMv(f)
{
doCCD(f)
f.filmFl.value = f.EQv.value
calculatefilmD(f);
calculatefilmFOV(f);
}

function doFILMd(f)
{
doCCD(f)
f.filmFl.value = f.EQd.value
calculatefilmD(f);
calculatefilmFOV(f);
}
