//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;
			}
        };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;
			}
        };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;
			}
		 };break;
 }
 ans.value=lfinal;
}


function Calculate(form)
{
 setFormName="WavelengthInput";
 var Lambda1=getValue("Wavelength1");
 var Lambda2=getValue("Wavelength2");
 var Proc=getValue("Process");
 var RamanOpt=getValue("Ropt");
 var RamanGas=getValue("RGas");
 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 "RS" : {
	  	switch (RamanGas) {
		 case "N" : rshift = 2331; break;
	 	 case "H" : rshift = 4155; break;	
	 	 case "D" : rshift = 2991; break;
		 case "M" : rshift = 2914; break;	 	 
			}
		switch (RamanOpt) {
		 case "1s" : lambdaout = (1/((1/(Lambda1*0.0000001) - rshift)))*10000000;break;
		 case "2s" : lambdaout = (1/((1/(Lambda1*0.0000001) - 2*rshift)))*10000000;break;
		 case "3s" : lambdaout = (1/((1/(Lambda1*0.0000001) - 3*rshift)))*10000000;break;
		 case "1as" : lambdaout = (1/((1/(Lambda1*0.0000001) + rshift)))*10000000;break;
		 case "2as" : lambdaout = (1/((1/(Lambda1*0.0000001) + 2*rshift)))*10000000;break;
		    }
		 ans.value=lambdaout; }break;
	  case "PR" : {
	  	switch (RamanGas) {
		 case "N" : rshift = 2331; break;
	 	 case "H" : rshift = 4155; break;	
	 	 case "D" : rshift = 2991; break;
		 case "M" : rshift = 2914; break;	 	 
			}
		switch (RamanOpt) {
		 case "1s" : lambdaout = Lambda1/(1 + 0.0000001*Lambda1*rshift) ;break;
		 case "2s" : lambdaout = Lambda1/(1 + 0.0000001*Lambda1*2*rshift) ;break;
		 case "3s" : lambdaout = Lambda1/(1 + 0.0000001*Lambda1*3*rshift) ;break;
		 case "1as" : lambdaout = Lambda1/(1 - 0.0000001*Lambda1*1*rshift) ;break;
		 case "2as" : lambdaout = Lambda1/(1 - 0.0000001*Lambda1*2*rshift) ;break;
		    }
    	 ans.value=lambdaout; }break;
  }
}
