//Some functions for the wavelength calculator

function getFormObj(elementname)
{
 return( eval("document.forms[1]." + elementname));
}

function getValue(fname)
{
var myObj = getFormObj(fname);
return( myObj.value );
}

function Convert(form)
{
 setFormName="Conversions";
 var Lambda1=getValue("InitWavelength");
 var medium=getValue("medium");
 var Initunits=getValue("InitUnits");
 var Targetunits=getValue("TargetUnits");
 var lfinal = 0;
 var index = 1;
 var ans = getFormObj("ConvAns");
 switch (medium) {
  case "air" : index=299702547;break;
  case "vacuum" : index = 299792458;break;
  //case "shite" : index = 2000;break;
  }
  
 switch (Targetunits) 
  {
   case "nm" : 
  		{
		 switch (Initunits) {
		 	case "nm" : lfinal = Lambda1 ;break;
			case "cm_1" : lfinal = 10000000/Lambda1 ;break;
			case "ghz" : lfinal = index/Lambda1; break;
			case "eV" : lfinal = 1240/Lambda1; break;
			}
		 
        };break;
   case "cm_1" : 
  		{
		 switch (Initunits) {
		 	case "nm" : lfinal = 10000000/Lambda1 ;break;
			case "cm_1" : lfinal = Lambda1 ;break;
			case "ghz" : lfinal = (10000000*Lambda1)/index; break;
			case "eV" : lfinal = (10000000*Lambda1)/1240; break;
			}
        };break;
   case "ghz" : 
  		{
		 switch (Initunits) {
		 	case "nm" : lfinal = index/Lambda1 ;break;
			case "cm_1" : lfinal = (Lambda1*index)/10000000 ;break;
			case "ghz" : lfinal = Lambda1; break;
			case "eV" : lfinal = (index*Lambda1)/1240; break;
			}
		 };break;
	case "eV" : 
  		{
		 switch (Initunits) {
		 	case "nm" : lfinal = 1240/Lambda1 ;break;
			case "cm_1" : lfinal = (1240/10000000)*Lambda1 ;break;
			case "ghz" : lfinal = (Lambda1*1240)/index; break;
			case "eV" : lfinal = Lambda1 ; break;
			}
		 };break;
 }
 ans.value=lfinal;
}

function BWConvert(form)
{
 setFormName="Conversions";
 var Lambda1=getValue("centreline");
 var bw=getValue("bw"); 
 var Initunits=getValue("initbw");
 var Targetunits=getValue("targetbw");
 var lfinal = 0;
 var ans = getFormObj("bwans");
 switch (Targetunits) 
  {
   case "pm" : 
  		{
		 switch (Initunits) {
		 	case "pm" : lfinal = bw ;break;
			case "mhz" : lfinal = Lambda1*Lambda1*bw/300000000 ;break;
			case "cm_1" : lfinal = Lambda1*Lambda1*bw/10000; break;
			case "CL(mm)" : lfinal = (Lambda1*Lambda1)/(bw*3140); break;
			case "ps" : lfinal = (Lambda1*Lambda1)*0.0033333/bw; break;	
			case "meV" : lfinal = 0.00080551877*bw*(Lambda1*Lambda1); break;
			}
        };break;
   case "mhz" : 
  		{
		 switch (Initunits) {
		 	case "pm" : lfinal = bw*300000000/(Lambda1*Lambda1) ;break;
			case "mhz" : lfinal = bw ;break;
			case "cm_1" : lfinal = 30000*bw; break;
			case "CL(mm)" : lfinal = 300000/(3.14*bw) ; break;
			case "ps" : lfinal = 1000000/bw; break;
			case "meV" : lfinal = bw/0.00000413812096; break;
			}
        };break;
   case "cm_1" : 
  		{
		 switch (Initunits) {
		 	case "pm" : lfinal = 10000*bw/(Lambda1*Lambda1) ;break;
			case "mhz" : lfinal = bw/30000 ;break;
			case "cm_1" : lfinal = bw; break;
			case "CL(mm)" : lfinal = 10/(3.14*bw) ; break
			case "ps" : lfinal = 33.33333/bw; break;
			case "meV" : lfinal = bw*8.055186; break;
			}
		 };break;
	case "CL(mm)" : 
  		{
		 switch (Initunits) {
		 	case "pm" : lfinal = Lambda1*Lambda1/3140000000*bw ;break;
			case "mhz" : lfinal = 300000/(3.14*bw) ;break;
			case "cm_1" : lfinal = 10/(3.14*bw); break;
			case "CL(mm)" : lfinal = bw; break;
			case "ps" : lfinal = 3*bw/31.4; break;
			case "meV" : lfinal = 0.3953618752/bw; break;
			}
		 };break;
	case "ps" : 
  		{
		 switch (Initunits) {
		 	case "pm" : lfinal = (Lambda1*Lambda1)*0.0033333/bw; break;
			case "mhz" : lfinal = 1000000/bw ;break;
			case "cm_1" : lfinal = 33.333333/bw; break;
			case "CL(mm)" : lfinal = 3.14*bw/0.3; break;
			case "ps" : lfinal = bw; break;
			case "meV" : lfinal = 4.13812096/bw; break;
			}
		 };break;
	case "meV" : 
  		{
		 switch (Initunits) {
		 	case "pm" : lfinal = bw/(0.00080551877*Lambda1*Lambda1); break;
			case "mhz" : lfinal = bw*0.00000413566741 ;break;
			case "cm_1" : lfinal = bw*0.1240700223; break;
			case "CL(mm)" : lfinal = 0.395361875/bw; break;
			case "ps" : lfinal = 4.13566741/bw; break;
			case "meV" : lfinal = bw; break;
			}
		 };break;
 }
 ans.value=lfinal;
}


function Calculate(form)
{
 setFormName="WavelengthInput";
 var Lambda1=getValue("Wavelength1");
 var Lambda2=getValue("Wavelength2");
 var Lambda3=getValue("OPOwavelength");
 var Proc=getValue("Process");
 var OPOPumpwave=getValue("OPOPump");
 var SignalorIdler=getValue("SignalrIdler");
 var pump = 0;
 var rshift = 0;
 var lambdaout = 0;
 var ans = getFormObj("Answer");
 switch (Proc) {
  case "DW1" : ans.value=Lambda1/2; break;
  case "TW1" : ans.value=Lambda1/3; break;
  case "SFM" : ans.value=1/(1/Lambda1 + 1/Lambda2); break;
  case "DFM" : ans.value=1/(1/Lambda1 - 1/Lambda2); break;
  case "OPO" : {
	  switch (OPOPumpwave) {
		 case "355" : pump = 355; break;
	 	 case "532" : pump = 532; break;	
	 	 case "800" : pump = 800; break;		  
			}
		switch (SignalorIdler) {
		 case "signal" : lambdaout = 1/((1/pump)-(1/Lambda3)) ;break;
		 case "idler" : lambdaout = 1/((1/pump)-(1/Lambda3)) ;break;
		 }
     ans.value=lambdaout; }break;
  }
}
  

