// JavaScript Document
// www.tirpor.com
// scripts for macro depth of field calculations
// copywrite Andrew Cockburn 1/Feb/2010

function DoF_Calc() 
{
	var c=(document.sym_form.CofC.options[document.sym_form.CofC.options.selectedIndex].value); 
	var f =(document.sym_form.focal_length.options[document.sym_form.focal_length.selectedIndex].value); 
	var a=(document.sym_form.lens_aperture.options[document.sym_form.lens_aperture.selectedIndex].value); 
	var Si=(document.sym_form.extension.options[document.sym_form.extension.selectedIndex].value); 

	// calculations
	var c_um = c
	var mag = (Si-f) / f
	var Eff_ap = a*(1+mag)
	var DOF_sym = 2*a*c*((mag+1)/(mag*mag))
	var Slice = 0.7*DOF_sym
 	var x1 = Si - f
 	var x2 = (f*f)/x1
	var working_distance = f-13.9+x2

	if (mag >0)
	{
	sym_form.Mag.value = mag.toFixed(1)
	sym_form.Eff_ap.value = Eff_ap.toFixed(1)
	sym_form.DOF.value = DOF_sym.toFixed(0)+" um"
	sym_form.Slice.value = Slice.toFixed(0)+" um"
	sym_form.working_distance.value = working_distance.toFixed(0)+" mm"
	}
	else
	{
	sym_form.Mag.value = "increase extension"
	sym_form.Eff_ap.value = "n/a"
	sym_form.DOF.value = "n/a"
	sym_form.Slice.value = "n/a"
	sym_form.working_distance.value = "n/a"
		{
		alert("You need more space between the lens and sensor");
		}
	}
}

function DoF_Calc_objective() {	
// transfer selections
var c_obj=(document.objform.ObjectiveCofC.options[document.objform.ObjectiveCofC.options.selectedIndex].value); 
var Objective_mag=(document.objform.Objectivemag.options[document.objform.Objectivemag.selectedIndex].value); 
var Objective_NA=(document.objform.ObjectiveNA.options[document.objform.ObjectiveNA.selectedIndex].value); 
var lambda=0.550
// calculations
var c= 1.00*c_obj
var mag = 1.00*Objective_mag
var ObjNA = 1.00*Objective_NA
var Objective_a = 1/(2*Objective_NA)
var Obj_Eff_ap = Objective_a*(1+mag)
var Objective_DOF_2 = (c/(mag*ObjNA))
var Objective_DOF_1 = (0.55/(ObjNA*ObjNA))
var Objective_DOF = Objective_DOF_1 + Objective_DOF_2
var Objective_Slice = 0.7*Objective_DOF
// output caculated values
objform.Objective_Mag.value =  mag
objform.Objective_Eff_ap.value = Obj_Eff_ap.toFixed(1)
objform.Objective_DOF.value = Objective_DOF.toFixed(1) +" um"
objform.Objective_Slice.value = Objective_Slice.toFixed(1)+" um"
}
