
// NOTE: all sensitivities are from IRS sensitivity table, provided by
// the IRS IST. See: IRSsenstables.xls in the ost/tools/pet/specpet/lib/
// CVS repository.

// A function to do a Javascript cludge for multidimensional arrays:

function dimension (name_str, n0, n1, n2, n3)
{
      var numDimens = dimension.arguments.length - 1;
      var code = name_str + " = new Array();";
      eval (code);

      for (var i = 0; i <  n0; i++) // first index is 0
//    for (var i = 1; i <= n0; i++) // first index is 1
      {
         var newName = name_str + "[" + i + "]";      
         if (numDimens > 1)
         {
            code = "dimension ('" + newName + "'";
            for (var j = 2; j <= numDimens; j++)
               code += ", " + dimension.arguments[j];
            code += ");";
            eval (code);
         }
      }  
}  

function set_mips_sed_wavelengths(num_mips_sed_wavelengths)
{
  result = new Array(60.0, 75.0, 90.0);

  return result;
}

function mips_sed_sensitivity( mips_sed_num_wavelengths, background_index, mips_texp, mips_ncycles )
{

   mips_sed_sens = new Array( mips_sed_num_wavelengths );
   mips_sed_sens_500 = new Array(16.4, 40.20, 89.40); // 1-sigma, 500 sec

   if(mips_texp == 10.0 )
   {   
      mips_sed_background_scaling = new Array(1.0, 1.03, 1.17);
   }
   else if (mips_texp == 3.0 )
   {
      mips_sed_background_scaling = new Array(1.0, 1.01, 1.09);  
   }
   else
   {
       alert("Bad MIPS SED mode. SPEC-PET is confused! Please reset the form and/or reload the webpage.");
       return -1;
   }


   for (var i = 0; i < mips_sed_num_wavelengths ; i++) 
    {
       mips_sed_sens[i] = mips_sed_background_scaling[background_index] * mips_sed_sens_500[i] * Math.sqrt (500.0 / (6.0 * mips_texp * mips_ncycles) );

       mips_sed_sens[i] = SigFig( mips_sed_sens[i], 3 );
    }    

    return mips_sed_sens;
}

function SH_PSSL(wavelength, frametime_index, Nrepeat, background_index)
//
// Values from spreadsheet "IRSPET_sens_nov04_ELAT90-40-0.xls" 
// in lib/ subdirectory of CVS, and reflected in SOM, v5.0, Fig. ???
//
{

   var numt = 10;

   dimension ("sh_pssl", numt, 5); 

   // Wavelengths (microns):

   sh_pssl[0][0] = 10.0;
   sh_pssl[1][0] = 11.0;
   sh_pssl[2][0] = 12.0;
   sh_pssl[3][0] = 13.0;
   sh_pssl[4][0] = 14.0;
   sh_pssl[5][0] = 15.0;
   sh_pssl[6][0] = 16.0;
   sh_pssl[7][0] = 17.0;
   sh_pssl[8][0] = 18.0;
   sh_pssl[9][0] = 19.5;

   if( background_index == 0)
   {
      //  Sensitivities for 6 sec (W / m^2):

      sh_pssl[0][1] = 9.47e-18;
      sh_pssl[1][1] = 7.71e-18;
      sh_pssl[2][1] = 6.49e-18;
      sh_pssl[3][1] = 6.02e-18;
      sh_pssl[4][1] = 5.65e-18;
      sh_pssl[5][1] = 5.78e-18;
      sh_pssl[6][1] = 5.80e-18;
      sh_pssl[7][1] = 6.17e-18;
      sh_pssl[8][1] = 7.04e-18;
      sh_pssl[9][1] = 9.28e-18;

      //  Sensitivities for 30 sec (W / m^2):

      sh_pssl[0][2] = 2.28e-18;
      sh_pssl[1][2] = 1.88e-18;
      sh_pssl[2][2] = 1.59e-18;
      sh_pssl[3][2] = 1.48e-18;
      sh_pssl[4][2] = 1.40e-18;
      sh_pssl[5][2] = 1.43e-18;
      sh_pssl[6][2] = 1.43e-18;
      sh_pssl[7][2] = 1.52e-18;
      sh_pssl[8][2] = 1.72e-18;
      sh_pssl[9][2] = 2.24e-18;

      //  Sensitivities for 120 sec (W / m^2):

      sh_pssl[0][3] = 8.42e-19;
      sh_pssl[1][3] = 6.98e-19;
      sh_pssl[2][3] = 5.98e-19;
      sh_pssl[3][3] = 5.61e-19;
      sh_pssl[4][3] = 5.28e-19;
      sh_pssl[5][3] = 5.38e-19;
      sh_pssl[6][3] = 5.39e-19;
      sh_pssl[7][3] = 5.70e-19;
      sh_pssl[8][3] = 6.44e-19;
      sh_pssl[9][3] = 8.30e-19;

      //  Sensitivities for 480 sec (W / m^2):

      sh_pssl[0][4] = 3.74e-19;
      sh_pssl[1][4] = 3.12e-19;
      sh_pssl[2][4] = 2.68e-19;
      sh_pssl[3][4] = 2.53e-19;
      sh_pssl[4][4] = 2.38e-19;
      sh_pssl[5][4] = 2.43e-19;
      sh_pssl[6][4] = 2.43e-19;
      sh_pssl[7][4] = 2.56e-19;
      sh_pssl[8][4] = 2.89e-19;
      sh_pssl[9][4] = 3.69e-19;
   }
   else if( background_index == 1)    // "Med" background
   {
      //  Sensitivities for 6 sec (W / m^2):

      sh_pssl[0][1] = 9.50e-18;
      sh_pssl[1][1] = 7.75e-18;
      sh_pssl[2][1] = 6.53e-18;
      sh_pssl[3][1] = 6.06e-18;
      sh_pssl[4][1] = 5.69e-18;
      sh_pssl[5][1] = 5.82e-18;
      sh_pssl[6][1] = 5.84e-18;
      sh_pssl[7][1] = 6.21e-18;
      sh_pssl[8][1] = 7.08e-18;
      sh_pssl[9][1] = 9.31e-18;

      //  Sensitivities for 30 sec (W / m^2):

      sh_pssl[0][2] = 2.31e-18;
      sh_pssl[1][2] = 1.90e-18;
      sh_pssl[2][2] = 1.62e-18;
      sh_pssl[3][2] = 1.52e-18;
      sh_pssl[4][2] = 1.43e-18;
      sh_pssl[5][2] = 1.46e-18;
      sh_pssl[6][2] = 1.46e-18;
      sh_pssl[7][2] = 1.55e-18;
      sh_pssl[8][2] = 1.75e-18;
      sh_pssl[9][2] = 2.27e-18;

      //  Sensitivities for 120 sec (W / m^2):

      sh_pssl[0][3] = 8.59e-19;
      sh_pssl[1][3] = 7.17e-19;
      sh_pssl[2][3] = 6.18e-19;
      sh_pssl[3][3] = 5.81e-19;
      sh_pssl[4][3] = 5.48e-19;
      sh_pssl[5][3] = 5.59e-19;
      sh_pssl[6][3] = 5.59e-19;
      sh_pssl[7][3] = 5.90e-19;
      sh_pssl[8][3] = 6.64e-19;
      sh_pssl[9][3] = 8.48e-19;

      //  Sensitivities for 480 sec (W / m^2):

      sh_pssl[0][4] = 3.84e-19;
      sh_pssl[1][4] = 3.23e-19;
      sh_pssl[2][4] = 2.79e-19;
      sh_pssl[3][4] = 2.64e-19;
      sh_pssl[4][4] = 2.49e-19;
      sh_pssl[5][4] = 2.54e-19;
      sh_pssl[6][4] = 2.54e-19;
      sh_pssl[7][4] = 2.67e-19;
      sh_pssl[8][4] = 3.00e-19;
      sh_pssl[9][4] = 3.80e-19;
   }
   else if( background_index == 2)    // "High" background
   {
      //  Sensitivities for 6 sec (W / m^2):

      sh_pssl[0][1] = 9.72e-18;
      sh_pssl[1][1] = 7.99e-18;
      sh_pssl[2][1] = 6.79e-18;
      sh_pssl[3][1] = 6.34e-18;
      sh_pssl[4][1] = 5.96e-18;
      sh_pssl[5][1] = 6.09e-18;
      sh_pssl[6][1] = 6.10e-18;
      sh_pssl[7][1] = 6.47e-18;
      sh_pssl[8][1] = 7.34e-18;
      sh_pssl[9][1] = 9.55e-18;

      //  Sensitivities for 30 sec (W / m^2):

      sh_pssl[0][2] = 2.49e-18;
      sh_pssl[1][2] = 2.10e-18;
      sh_pssl[2][2] = 1.82e-18;
      sh_pssl[3][2] = 1.73e-18;
      sh_pssl[4][2] = 1.63e-18;
      sh_pssl[5][2] = 1.66e-18;
      sh_pssl[6][2] = 1.66e-18;
      sh_pssl[7][2] = 1.75e-18;
      sh_pssl[8][2] = 1.95e-18;
      sh_pssl[9][2] = 2.46e-18;

      //  Sensitivities for 120 sec (W / m^2):

      sh_pssl[0][3] = 9.74e-19;
      sh_pssl[1][3] = 8.41e-19;
      sh_pssl[2][3] = 7.46e-19;
      sh_pssl[3][3] = 7.13e-19;
      sh_pssl[4][3] = 6.76e-19;
      sh_pssl[5][3] = 6.86e-19;
      sh_pssl[6][3] = 6.84e-19;
      sh_pssl[7][3] = 7.16e-19;
      sh_pssl[8][3] = 7.93e-19;
      sh_pssl[9][3] = 9.73e-19;

      //  Sensitivities for 480 sec (W / m^2):

      sh_pssl[0][4] = 4.47e-19;
      sh_pssl[1][4] = 3.90e-19;
      sh_pssl[2][4] = 3.49e-19;
      sh_pssl[3][4] = 3.35e-19;
      sh_pssl[4][4] = 3.18e-19;
      sh_pssl[5][4] = 3.22e-19;
      sh_pssl[6][4] = 3.21e-19;
      sh_pssl[7][4] = 3.36e-19;
      sh_pssl[8][4] = 3.70e-19;
      sh_pssl[9][4] = 4.49e-19;
   }

   for ( j = 1; j < numt; j++ )
   {
      if( wavelength <= sh_pssl[j][0] )
      {
         var magic_index = j;
	 j = numt;
      }
   }

   var slope = ( sh_pssl[magic_index][frametime_index+1] -
	         sh_pssl[magic_index-1][frametime_index+1] ) /
	       ( sh_pssl[magic_index][0] - 
	         sh_pssl[magic_index-1][0] );

   var the_sens = sh_pssl[magic_index-1][frametime_index+1] + 
		  slope * (wavelength - sh_pssl[magic_index-1][0]); 

   return (the_sens/ Math.sqrt(2.0*Nrepeat)); 

}

function LH_PSSL(wavelength, frametime_index, Nrepeat, background_index)
//
// Values from spreadsheet "sen_04Dec03.xls" in lib/ subdirectory of
// CVS, and reflected in SOM, v4.0, Fig. 7.21
//
{

   var numt = 10;

   dimension ("lh_pssl", numt, 5); 

   // Wavelengths (microns):

   lh_pssl[0][0] = 19.3;
   lh_pssl[1][0] = 20.5;
   lh_pssl[2][0] = 22.12;
   lh_pssl[3][0] = 23.88;
   lh_pssl[4][0] = 25.2;
   lh_pssl[5][0] = 27.20;
   lh_pssl[6][0] = 29.35;
   lh_pssl[7][0] = 31.0;
   lh_pssl[8][0] = 34.2;
   lh_pssl[9][0] = 36.91;

   if ( background_index == 0 ) // "low" background
   {
      //  Sensitivities for 6 sec (W/m^2):

      lh_pssl[0][1] = 1.67e-17;
      lh_pssl[1][1] = 7.54e-18;
      lh_pssl[2][1] = 5.40e-18;
      lh_pssl[3][1] = 4.90e-18;
      lh_pssl[4][1] = 4.43e-18;
      lh_pssl[5][1] = 5.83e-18;
      lh_pssl[6][1] = 5.17e-18;
      lh_pssl[7][1] = 5.84e-18;
      lh_pssl[8][1] = 1.83e-17;
      lh_pssl[9][1] = 3.99e-17;

      //  Sensitivities for 14 sec (W/m^2):

      lh_pssl[0][2] = 9.26e-18;
      lh_pssl[1][2] = 4.24e-18;
      lh_pssl[2][2] = 3.05e-18;
      lh_pssl[3][2] = 2.77e-18;
      lh_pssl[4][2] = 2.51e-18;
      lh_pssl[5][2] = 3.27e-18;
      lh_pssl[6][2] = 2.90e-18;
      lh_pssl[7][2] = 3.27e-18;
      lh_pssl[8][2] = 1.01e-17;
      lh_pssl[9][2] = 2.20e-17;

      //  Sensitivities for 60 sec (W/m^2):

      lh_pssl[0][3] = 3.94e-18;
      lh_pssl[1][3] = 1.82e-18;
      lh_pssl[2][3] = 1.32e-18;
      lh_pssl[3][3] = 1.20e-18;
      lh_pssl[4][3] = 1.09e-18;
      lh_pssl[5][3] = 1.41e-18;
      lh_pssl[6][3] = 1.25e-18;
      lh_pssl[7][3] = 1.40e-18;
      lh_pssl[8][3] = 4.28e-18;
      lh_pssl[9][3] = 9.29e-18;

      //  Sensitivities for 240 sec (W/m^2):

      lh_pssl[0][4] = 1.90e-18;
      lh_pssl[1][4] = 8.84e-19;
      lh_pssl[2][4] = 6.43e-19;
      lh_pssl[3][4] = 5.84e-19;
      lh_pssl[4][4] = 5.30e-19;
      lh_pssl[5][4] = 6.82e-19;
      lh_pssl[6][4] = 6.06e-19;
      lh_pssl[7][4] = 6.80e-19;
      lh_pssl[8][4] = 2.06e-18; 
      lh_pssl[9][4] = 4.48e-18;
   }
   else if ( background_index == 1 ) // "medium" background
   {
      //  Sensitivities for 6 sec (W/m^2):

      lh_pssl[0][1] = 1.68e-17;
      lh_pssl[1][1] = 7.70e-18;
      lh_pssl[2][1] = 5.55e-18;
      lh_pssl[3][1] = 5.03e-18;
      lh_pssl[4][1] = 4.55e-18;
      lh_pssl[5][1] = 5.94e-18;
      lh_pssl[6][1] = 5.27e-18;
      lh_pssl[7][1] = 5.94e-18;
      lh_pssl[8][1] = 1.83e-17;
      lh_pssl[9][1] = 3.99e-17;

      //  Sensitivities for 14 sec (W/m^2):

      lh_pssl[0][2] = 9.39e-18;
      lh_pssl[1][2] = 4.35e-18;
      lh_pssl[2][2] = 3.16e-18;
      lh_pssl[3][2] = 2.87e-18;
      lh_pssl[4][2] = 2.60e-18;
      lh_pssl[5][2] = 3.36e-18;
      lh_pssl[6][2] = 2.98e-18;
      lh_pssl[7][2] = 3.35e-18;
      lh_pssl[8][2] = 1.02e-17;
      lh_pssl[9][2] = 2.20e-17;

      //  Sensitivities for 60 sec (W/m^2):

      lh_pssl[0][3] = 4.01e-18;
      lh_pssl[1][3] = 1.89e-18;
      lh_pssl[2][3] = 1.38e-18;
      lh_pssl[3][3] = 1.25e-18;
      lh_pssl[4][3] = 1.14e-18;
      lh_pssl[5][3] = 1.45e-18;
      lh_pssl[6][3] = 1.29e-18;
      lh_pssl[7][3] = 1.44e-18;
      lh_pssl[8][3] = 4.31e-18;
      lh_pssl[9][3] = 9.32e-18;

      //  Sensitivities for 240 sec (W/m^2):

      lh_pssl[0][4] = 1.94e-18;
      lh_pssl[1][4] = 9.17e-18;
      lh_pssl[2][4] = 6.72e-19;
      lh_pssl[3][4] = 6.11e-19;
      lh_pssl[4][4] = 5.55e-19;
      lh_pssl[5][4] = 7.06e-19;
      lh_pssl[6][4] = 6.27e-19;
      lh_pssl[7][4] = 7.01e-19;
      lh_pssl[8][4] = 2.08e-18; 
      lh_pssl[9][4] = 4.50e-18;
   }
   else if ( background_index == 2 ) // "high" background
   {
      //  Sensitivities for 6 sec (W/m^2):

      lh_pssl[0][1] = 1.80e-17;
      lh_pssl[1][1] = 8.73e-18;
      lh_pssl[2][1] = 6.47e-18;
      lh_pssl[3][1] = 5.89e-18;
      lh_pssl[4][1] = 5.37e-18;
      lh_pssl[5][1] = 6.71e-18;
      lh_pssl[6][1] = 5.96e-18;
      lh_pssl[7][1] = 6.59e-18;
      lh_pssl[8][1] = 1.89e-17;
      lh_pssl[9][1] = 4.05e-17;

      //  Sensitivities for 14 sec (W/m^2):

      lh_pssl[0][2] = 1.03e-17;
      lh_pssl[1][2] = 5.12e-18;
      lh_pssl[2][2] = 3.84e-18;
      lh_pssl[3][2] = 3.50e-18;
      lh_pssl[4][2] = 3.20e-18;
      lh_pssl[5][2] = 3.93e-18;
      lh_pssl[6][2] = 3.49e-18;
      lh_pssl[7][2] = 3.84e-18;
      lh_pssl[8][2] = 1.06e-17;
      lh_pssl[9][2] = 2.25e-17;

      //  Sensitivities for 60 sec (W/m^2):

      lh_pssl[0][3] = 4.50e-18;
      lh_pssl[1][3] = 2.29e-18;
      lh_pssl[2][3] = 1.74e-18;
      lh_pssl[3][3] = 1.58e-18;
      lh_pssl[4][3] = 1.45e-18;
      lh_pssl[5][3] = 1.75e-18;
      lh_pssl[6][3] = 1.56e-18;
      lh_pssl[7][3] = 1.71e-18;
      lh_pssl[8][3] = 4.57e-18;
      lh_pssl[9][3] = 9.55e-18;

      //  Sensitivities for 240 sec (W/m^2):

      lh_pssl[0][4] = 2.19e-18;
      lh_pssl[1][4] = 1.12e-18;
      lh_pssl[2][4] = 8.55e-19;
      lh_pssl[3][4] = 7.79e-19;
      lh_pssl[4][4] = 7.15e-19;
      lh_pssl[5][4] = 8.60e-19;
      lh_pssl[6][4] = 7.66e-19;
      lh_pssl[7][4] = 8.35e-19;
      lh_pssl[8][4] = 2.21e-18; 
      lh_pssl[9][4] = 4.62e-18;
   }

   for ( j = 1; j < numt; j++ )
   {
      if( wavelength <= lh_pssl[j][0] )
      {
         var magic_index = j;
	 j = numt;
      }
   }

   var slope = ( lh_pssl[magic_index][frametime_index+1] -
	         lh_pssl[magic_index-1][frametime_index+1] ) /
	       ( lh_pssl[magic_index][0] - 
	         lh_pssl[magic_index-1][0] );

   var the_sens = lh_pssl[magic_index-1][frametime_index+1] + 
		  slope * (wavelength - lh_pssl[magic_index-1][0]); 

   return (the_sens / Math.sqrt(2.0*Nrepeat));

}

function LH_PSSC(wavelength, frametime_index, Nrepeat, background_index)
//
// Values from spreadsheet "sen_04Dec03.xls" in lib/ subdirectory of
// CVS, and reflected in SOM, v4.0, Fig. 7.22
//
{

   var numt = 10;

   dimension ("lh_pssc", numt, 5); 

   // Wavelengths (microns):

   lh_pssc[0][0] = 19.3;
   lh_pssc[1][0] = 20.5;
   lh_pssc[2][0] = 22.12;
   lh_pssc[3][0] = 23.88;
   lh_pssc[4][0] = 25.2;
   lh_pssc[5][0] = 27.20;
   lh_pssc[6][0] = 29.35;
   lh_pssc[7][0] = 31.0;
   lh_pssc[8][0] = 34.2;
   lh_pssc[9][0] = 36.91;

   if(background_index == 0) // "Low" background
   {
      //  Sensitivities for 6 sec (mJy):

      lh_pssc[0][1] = 64.367;
      lh_pssc[1][1] = 30.93;
      lh_pssc[2][1] = 23.914;
      lh_pssc[3][1] = 23.418;
      lh_pssc[4][1] = 22.32;
      lh_pssc[5][1] = 31.70;
      lh_pssc[6][1] = 30.326;
      lh_pssc[7][1] = 36.207;
      lh_pssc[8][1] = 124.919;
      lh_pssc[9][1] = 294.194;

      //  Sensitivities for 14 sec (mJy):

      lh_pssc[0][2] = 35.736;
      lh_pssc[1][2] = 17.37;
      lh_pssc[2][2] = 13.518;
      lh_pssc[3][2] = 13.244;
      lh_pssc[4][2] = 12.64;
      lh_pssc[5][2] = 17.789;
      lh_pssc[6][2] = 17.034;
      lh_pssc[7][2] = 20.280;
      lh_pssc[8][2] = 69.075;
      lh_pssc[9][2] = 162.303;
   
      //  Sensitivities for 60 sec (mJy):

      lh_pssc[0][3] = 15.201;
      lh_pssc[1][3] = 7.48;
      lh_pssc[2][3] = 5.854;
      lh_pssc[3][3] = 5.739;
      lh_pssc[4][3] = 5.49;
      lh_pssc[5][3] = 7.650;
      lh_pssc[6][3] = 7.331;
      lh_pssc[7][3] = 8.704;
      lh_pssc[8][3] = 29.261;
      lh_pssc[9][3] = 68.586;

      //  Sensitivities for 240 sec (mJy):

      lh_pssc[0][4] = 7.345;
      lh_pssc[1][4] = 3.63;
      lh_pssc[2][4] = 2.844;
      lh_pssc[3][4] = 2.789;
      lh_pssc[4][4] = 2.67;
      lh_pssc[5][4] = 3.709;
      lh_pssc[6][4] = 3.555;
      lh_pssc[7][4] = 4.218;
      lh_pssc[8][4] = 14.120;
      lh_pssc[9][4] = 33.071;
   }
   else if(background_index == 1) // "medium" background
   {
      //  Sensitivities for 6 sec (mJy):

      lh_pssc[0][1] = 65.03;
      lh_pssc[1][1] = 31.56; 
      lh_pssc[2][1] = 24.54; 
      lh_pssc[3][1] = 24.04; 
      lh_pssc[4][1] = 22.95; 
      lh_pssc[5][1] = 32.32; 
      lh_pssc[6][1] = 30.93; 
      lh_pssc[7][1] = 36.81; 
      lh_pssc[8][1] = 125.50; 
      lh_pssc[9][1] = 294.75; 

      //  Sensitivities for 14 sec (mJy):

      lh_pssc[0][2] = 36.25; 
      lh_pssc[1][2] = 17.85; 
      lh_pssc[2][2] = 13.99; 
      lh_pssc[3][2] = 13.72; 
      lh_pssc[4][2] = 13.12; 
      lh_pssc[5][2] = 18.26; 
      lh_pssc[6][2] = 17.49; 
      lh_pssc[7][2] = 20.74; 
      lh_pssc[8][2] = 69.52; 
      lh_pssc[9][2] = 162.74; 
   
      //  Sensitivities for 60 sec (mJy):

      lh_pssc[0][3] = 15.48; 
      lh_pssc[1][3] = 7.74; 
      lh_pssc[2][3] = 6.11; 
      lh_pssc[3][3] = 5.99; 
      lh_pssc[4][3] = 5.74; 
      lh_pssc[5][3] = 7.91; 
      lh_pssc[6][3] = 7.58; 
      lh_pssc[7][3] = 8.95;
      lh_pssc[8][3] = 29.51; 
      lh_pssc[9][3] = 68.83; 

      //  Sensitivities for 240 sec (mJy):

      lh_pssc[0][4] = 7.49; 
      lh_pssc[1][4] = 3.76; 
      lh_pssc[2][4] = 2.97; 
      lh_pssc[3][4] = 2.92; 
      lh_pssc[4][4] = 2.80; 
      lh_pssc[5][4] = 3.84; 
      lh_pssc[6][4] = 3.68; 
      lh_pssc[7][4] = 4.35; 
      lh_pssc[8][4] = 14.25; 
      lh_pssc[9][4] = 33.20; 
   }
   else if(background_index == 2) // "High" background
   {
      //  Sensitivities for 6 sec (mJy):

      lh_pssc[0][1] = 69.607;
      lh_pssc[1][1] = 35.80; 
      lh_pssc[2][1] = 28.647;
      lh_pssc[3][1] = 28.130;
      lh_pssc[4][1] = 27.07; 
      lh_pssc[5][1] = 36.481;
      lh_pssc[6][1] = 34.971;
      lh_pssc[7][1] = 40.883;
      lh_pssc[8][1] = 129.596;
      lh_pssc[9][1] = 298.743;

      //  Sensitivities for 14 sec (mJy):

      lh_pssc[0][2] = 39.723;
      lh_pssc[1][2] = 21.00; 
      lh_pssc[2][2] = 17.010;
      lh_pssc[3][2] = 16.718;
      lh_pssc[4][2] = 16.14; 
      lh_pssc[5][2] = 21.358;
      lh_pssc[6][2] = 20.497;
      lh_pssc[7][2] = 23.785;
      lh_pssc[8][2] = 72.674;
      lh_pssc[9][2] = 165.825;
   
      //  Sensitivities for 60 sec (mJy):

      lh_pssc[0][3] = 17.357;
      lh_pssc[1][3] = 9.40; 
      lh_pssc[2][3] = 7.691;
      lh_pssc[3][3] = 7.564;
      lh_pssc[4][3] = 7.32; 
      lh_pssc[5][3] = 9.545;
      lh_pssc[6][3] = 9.169;
      lh_pssc[7][3] = 10.574;
      lh_pssc[8][3] = 31.229;
      lh_pssc[9][3] = 70.525;

      //  Sensitivities for 240 sec (mJy):

      lh_pssc[0][4] = 8.456;
      lh_pssc[1][4] = 4.61; 
      lh_pssc[2][4] = 3.783;
      lh_pssc[3][4] = 3.721;
      lh_pssc[4][4] = 3.60; 
      lh_pssc[5][4] = 4.680;
      lh_pssc[6][4] = 4.497;
      lh_pssc[7][4] = 5.177;
      lh_pssc[8][4] = 15.137;
      lh_pssc[9][4] = 34.076;
   }

   for ( j = 1; j < numt; j++ )
   {
      if( wavelength <= lh_pssc[j][0] )
      {
         var magic_index = j;
	 j = numt;
      }
   }

   var slope = ( lh_pssc[magic_index][frametime_index+1] -
	         lh_pssc[magic_index-1][frametime_index+1] ) /
	       ( lh_pssc[magic_index][0] - 
	         lh_pssc[magic_index-1][0] );

   var the_sens = lh_pssc[magic_index-1][frametime_index+1] + 
		  slope * (wavelength - lh_pssc[magic_index-1][0]); 

   return (the_sens / Math.sqrt(2.0*Nrepeat));

}

function SH_PSSC(wavelength, frametime_index, Nrepeat, background_index)
//
// Values from spreadsheet "sen_04Dec03.xls" in lib/ subdirectory of
// CVS, and reflected in SOM, v4.0, Fig. 7.22
//
{

   var numt = 10;

   dimension ("sh_pssc", numt, 5); 

   // Wavelengths (microns):

   sh_pssc[0][0] = 10.0;
   sh_pssc[1][0] = 11.0;
   sh_pssc[2][0] = 12.0;
   sh_pssc[3][0] = 13.0;
   sh_pssc[4][0] = 14.0;
   sh_pssc[5][0] = 15.0;
   sh_pssc[6][0] = 16.0;
   sh_pssc[7][0] = 17.0;
   sh_pssc[8][0] = 18.0;
   sh_pssc[9][0] = 19.5;

   if( background_index == 0 ) // "low" background
   {
      //  Sensitivities for 6 sec (mJy):

      sh_pssc[0][1] = 18.944;
      sh_pssc[1][1] = 16.968;
      sh_pssc[2][1] = 15.571;
      sh_pssc[3][1] = 15.653;
      sh_pssc[4][1] = 15.821;
      sh_pssc[5][1] = 17.346;
      sh_pssc[6][1] = 18.566;
      sh_pssc[7][1] = 20.990;
      sh_pssc[8][1] = 25.358;
      sh_pssc[9][1] = 36.187;

      //  Sensitivities for 30 sec (mJy):

      sh_pssc[0][2] = 4.570;
      sh_pssc[1][2] = 4.128;
      sh_pssc[2][2] = 3.819;
      sh_pssc[3][2] = 3.859;
      sh_pssc[4][2] = 3.906;
      sh_pssc[5][2] = 4.277;
      sh_pssc[6][2] = 4.573;
      sh_pssc[7][2] = 5.156;
      sh_pssc[8][2] = 6.199;
      sh_pssc[9][2] = 8.752;

      //  Sensitivities for 120 sec (mJy):

      sh_pssc[0][3] = 1.684;
      sh_pssc[1][3] = 1.536;
      sh_pssc[2][3] = 1.434;
      sh_pssc[3][3] = 1.457;
      sh_pssc[4][3] = 1.478;
      sh_pssc[5][3] = 1.615;
      sh_pssc[6][3] = 1.725;
      sh_pssc[7][3] = 1.939;
      sh_pssc[8][3] = 2.319;
      sh_pssc[9][3] = 3.235;

      //  Sensitivities for 480 sec (mJy):

      sh_pssc[0][4] = 0.748;
      sh_pssc[1][4] = 0.686;
      sh_pssc[2][4] = 0.644;
      sh_pssc[3][4] = 0.657;
      sh_pssc[4][4] = 0.666;
      sh_pssc[5][4] = 0.728;
      sh_pssc[6][4] = 0.777;
      sh_pssc[7][4] = 0.872;
      sh_pssc[8][4] = 1.039;
      sh_pssc[9][4] = 1.440;

   }
   else if( background_index == 1 )  // "medium" background
   {
      //  Sensitivities for 6 sec (mJy):

      sh_pssc[0][1] = 19.01;
      sh_pssc[1][1] = 17.04;
      sh_pssc[2][1] = 15.66;
      sh_pssc[3][1] = 15.76;
      sh_pssc[4][1] = 15.93;
      sh_pssc[5][1] = 17.46;
      sh_pssc[6][1] = 18.69;
      sh_pssc[7][1] = 21.12;
      sh_pssc[8][1] = 25.49;
      sh_pssc[9][1] = 36.32;

      //  Sensitivities for 30 sec (mJy):

      sh_pssc[0][2] = 4.62;
      sh_pssc[1][2] = 4.19;
      sh_pssc[2][2] = 3.89;
      sh_pssc[3][2] = 3.94;
      sh_pssc[4][2] = 3.99;
      sh_pssc[5][2] = 4.37;
      sh_pssc[6][2] = 4.67;
      sh_pssc[7][2] = 5.26;
      sh_pssc[8][2] = 6.31;
      sh_pssc[9][2] = 8.86;

      //  Sensitivities for 120 sec (mJy):

      sh_pssc[0][3] = 1.72;
      sh_pssc[1][3] = 1.58;
      sh_pssc[2][3] = 1.48;
      sh_pssc[3][3] = 1.51;
      sh_pssc[4][3] = 1.53;
      sh_pssc[5][3] = 1.68;
      sh_pssc[6][3] = 1.79;
      sh_pssc[7][3] = 2.01;
      sh_pssc[8][3] = 2.39;
      sh_pssc[9][3] = 3.31;

      //  Sensitivities for 480 sec (mJy):

      sh_pssc[0][4] = 0.77;
      sh_pssc[1][4] = 0.71;
      sh_pssc[2][4] = 0.67;
      sh_pssc[3][4] = 0.69;
      sh_pssc[4][4] = 0.70;
      sh_pssc[5][4] = 0.76;
      sh_pssc[6][4] = 0.81;
      sh_pssc[7][4] = 0.91;
      sh_pssc[8][4] = 1.08;
      sh_pssc[9][4] = 1.48;
   }
   else if( background_index == 2 )  // "high" background
   {
      //  Sensitivities for 6 sec (mJy):

      sh_pssc[0][1] = 19.446;
      sh_pssc[1][1] = 17.586;
      sh_pssc[2][1] = 16.291;
      sh_pssc[3][1] = 16.473;
      sh_pssc[4][1] = 16.680;
      sh_pssc[5][1] = 18.257;
      sh_pssc[6][1] = 19.520;
      sh_pssc[7][1] = 21.998;
      sh_pssc[8][1] = 26.430;
      sh_pssc[9][1] = 37.262;

      //  Sensitivities for 30 sec (mJy):

      sh_pssc[0][2] = 4.974;
      sh_pssc[1][2] = 4.616;
      sh_pssc[2][2] = 4.379;
      sh_pssc[3][2] = 4.490;
      sh_pssc[4][2] = 4.565;
      sh_pssc[5][2] = 4.978;
      sh_pssc[6][2] = 5.309;
      sh_pssc[7][2] = 5.937;
      sh_pssc[8][2] = 7.038;
      sh_pssc[9][2] = 9.612;

      //  Sensitivities for 120 sec (mJy):

      sh_pssc[0][3] = 1.949;
      sh_pssc[1][3] = 1.851;
      sh_pssc[2][3] = 1.790;
      sh_pssc[3][3] = 1.855;
      sh_pssc[4][3] = 1.892;
      sh_pssc[5][3] = 2.057;
      sh_pssc[6][3] = 2.190;
      sh_pssc[7][3] = 2.435;
      sh_pssc[8][3] = 2.856;
      sh_pssc[9][3] = 3.797;

      //  Sensitivities for 480 sec (mJy):

      sh_pssc[0][4] = 0.895;
      sh_pssc[1][4] = 0.859;
      sh_pssc[2][4] = 0.838;
      sh_pssc[3][4] = 0.872;
      sh_pssc[4][4] = 0.890;
      sh_pssc[5][4] = 0.967;
      sh_pssc[6][4] = 1.028;
      sh_pssc[7][4] = 1.141;
      sh_pssc[8][4] = 1.332;
      sh_pssc[9][4] = 1.749;
   }

   var magic_index;

   for ( j = 1; j < numt; j++ )
   {
      if( wavelength <= sh_pssc[j][0] )
      {
         magic_index = j;
	 j = numt;
      }
   }

   var slope = ( sh_pssc[magic_index][frametime_index+1] -
	         sh_pssc[magic_index-1][frametime_index+1] ) /
	       ( sh_pssc[magic_index][0] - 
	         sh_pssc[magic_index-1][0] );

   var the_sens = sh_pssc[magic_index-1][frametime_index+1] + 
		  slope * (wavelength - sh_pssc[magic_index-1][0]); 

   return (the_sens/ Math.sqrt(2.0*Nrepeat)); 


}


function LL_PSSCS(wavelength, frametime_index, Nrepeat, background_index)
//
// Values from spreadsheet "IRSPET_sens_nov04_ELAT90-40-0.xls" in 
//     lib/ subdirectory of CVS, and reflected in SOM, v5.0, Fig. ???
//
{

   var numt = 19;

   dimension ("ll_psscs", numt, 5); 

   // Wavelengths (microns):

   ll_psscs[0][0] = 14;
   ll_psscs[1][0] = 15.6;
   ll_psscs[2][0] = 16.5;
   ll_psscs[3][0] = 17.2;
   ll_psscs[4][0] = 18.40;
   ll_psscs[5][0] = 20.0;
   ll_psscs[6][0] = 20.4;
   ll_psscs[7][0] = 20.9;
   ll_psscs[8][0] = 21.4;
   ll_psscs[9][0] = 22.0;
   ll_psscs[10][0] = 23.53;
   ll_psscs[11][0] = 25.17;
   ll_psscs[12][0] = 26.92;
   ll_psscs[13][0] = 28.80;
   ll_psscs[14][0] = 30.8;
   ll_psscs[15][0] = 32.94;
   ll_psscs[16][0] = 35.24;
   ll_psscs[17][0] = 37.69;
   ll_psscs[18][0] = 40.0;

   if (background_index == 0) // "Low" background
   {     

      // Sensitivities for 6 sec (mJy):

      ll_psscs[0][1] = 3.099;
      ll_psscs[1][1] = 2.037;
      ll_psscs[2][1] = 2.186;
      ll_psscs[3][1] = 2.335;
      ll_psscs[4][1] = 3.127;
      ll_psscs[5][1] = 6.39;
      ll_psscs[6][1] = 6.49;
      ll_psscs[7][1] = 9.19;
      ll_psscs[8][1] = 5.40;
      ll_psscs[9][1] = 4.564;
      ll_psscs[10][1] = 4.028;
      ll_psscs[11][1] = 3.396;
      ll_psscs[12][1] = 4.04;
      ll_psscs[13][1] = 3.999;
      ll_psscs[14][1] = 4.479;
      ll_psscs[15][1] = 9.317;
      ll_psscs[16][1] = 17.171;
      ll_psscs[17][1] = 40.947;
      ll_psscs[18][1] = 152.459;

      // Sensitivities for 14 sec (mJy):

      ll_psscs[0][2] = 1.874;
      ll_psscs[1][2] = 1.265;
      ll_psscs[2][2] = 1.353;
      ll_psscs[3][2] = 1.439;
      ll_psscs[4][2] = 1.894; 
      ll_psscs[5][2] = 3.75;
      ll_psscs[6][2] = 3.77;
      ll_psscs[7][2] = 5.27;
      ll_psscs[8][2] = 3.22;
      ll_psscs[9][2] = 2.745;
      ll_psscs[10][2] = 2.434;
      ll_psscs[11][2] = 2.068;
      ll_psscs[12][2] = 2.42;
      ll_psscs[13][2] = 2.397;
      ll_psscs[14][2] = 2.666; 
      ll_psscs[15][2] = 5.373;
      ll_psscs[16][2] = 9.778;
      ll_psscs[17][2] = 23.078;
      ll_psscs[18][2] = 84.797;

      // Sensitivities for 30 sec (mJy):

      ll_psscs[0][3] = 1.235;
      ll_psscs[1][3] = 0.845;
      ll_psscs[2][3] = 0.902;
      ll_psscs[3][3] = 0.958;
      ll_psscs[4][3] = 1.249;
      ll_psscs[5][3] = 2.43;
      ll_psscs[6][3] = 2.44;
      ll_psscs[7][3] = 3.37;
      ll_psscs[8][3] = 2.11;
      ll_psscs[9][3] = 1.805;
      ll_psscs[10][3] = 1.604;
      ll_psscs[11][3] = 1.367;
      ll_psscs[12][3] = 1.59;
      ll_psscs[13][3] = 1.573;
      ll_psscs[14][3] = 1.743;
      ll_psscs[15][3] = 3.452;
      ll_psscs[16][3] = 6.235;
      ll_psscs[17][3] = 14.623;
      ll_psscs[18][3] = 53.276;

      // Sensitivities for 120 sec (mJy):

      ll_psscs[0][4] = 0.602;
      ll_psscs[1][4] = 0.416;
      ll_psscs[2][4] = 0.444;
      ll_psscs[3][4] = 0.470;
      ll_psscs[4][4] = 0.610;
      ll_psscs[5][4] = 1.17;
      ll_psscs[6][4] = 1.17;
      ll_psscs[7][4] = 1.61;
      ll_psscs[8][4] = 1.02;
      ll_psscs[9][4] = 0.878;
      ll_psscs[10][4] = 0.782;
      ll_psscs[11][4] = 0.669;
      ll_psscs[12][4] = 0.78;
      ll_psscs[13][4] = 0.765;
      ll_psscs[14][4] = 0.845;
      ll_psscs[15][4] = 1.650;
      ll_psscs[16][4] = 2.963;
      ll_psscs[17][4] = 6.911
      ll_psscs[18][4] = 24.995;

   }
   else if (background_index == 1)  // "Med" background
   {     
      // Sensitivities for 6 sec (mJy):

      ll_psscs[0][1] = 3.37;
      ll_psscs[1][1] = 2.27;
      ll_psscs[2][1] = 2.43;
      ll_psscs[3][1] = 2.59;
      ll_psscs[4][1] = 3.41;
      ll_psscs[5][1] = 6.77;
      ll_psscs[6][1] = 6.83;
      ll_psscs[7][1] = 9.54;
      ll_psscs[8][1] = 5.80; 
      ll_psscs[9][1] = 4.95;
      ll_psscs[10][1] = 4.38;
      ll_psscs[11][1] = 4.72;
      ll_psscs[12][1] = 4.37;
      ll_psscs[13][1] = 4.31;
      ll_psscs[14][1] = 4.79;
      ll_psscs[15][1] = 9.65;
      ll_psscs[16][1] = 17.50;
      ll_psscs[17][1] = 41.26;
      ll_psscs[18][1] = 152.77;

      // Sensitivities for 14 sec (mJy):

      ll_psscs[0][2] = 2.07;
      ll_psscs[1][2] = 1.43;
      ll_psscs[2][2] = 1.52;
      ll_psscs[3][2] = 1.61;
      ll_psscs[4][2] = 2.09; 
      ll_psscs[5][2] = 4.03;
      ll_psscs[6][2] = 4.02;
      ll_psscs[7][2] = 5.53;
      ll_psscs[8][2] = 3.51;
      ll_psscs[9][2] = 3.02;
      ll_psscs[10][2] = 2.68;
      ll_psscs[11][2] = 2.29;
      ll_psscs[12][2] = 2.66;
      ll_psscs[13][2] = 2.62;
      ll_psscs[14][2] = 2.89; 
      ll_psscs[15][2] = 5.62;
      ll_psscs[16][2] = 10.02;
      ll_psscs[17][2] = 23.32;
      ll_psscs[18][2] = 85.04;

      // Sensitivities for 30 sec (mJy):

      ll_psscs[0][3] = 1.37;
      ll_psscs[1][3] = 0.96;
      ll_psscs[2][3] = 1.02;
      ll_psscs[3][3] = 1.08;
      ll_psscs[4][3] = 1.39;
      ll_psscs[5][3] = 2.63;
      ll_psscs[6][3] = 2.61;
      ll_psscs[7][3] = 3.56;
      ll_psscs[8][3] = 2.31;
      ll_psscs[9][3] = 2.00;
      ll_psscs[10][3] = 1.78;
      ll_psscs[11][3] = 1.53;
      ll_psscs[12][3] = 1.76;
      ll_psscs[13][3] = 1.73;
      ll_psscs[14][3] = 1.90;
      ll_psscs[15][3] = 3.63;
      ll_psscs[16][3] = 6.41;
      ll_psscs[17][3] = 14.80;
      ll_psscs[18][3] = 53.46;

      // Sensitivities for 120 sec (mJy):

      ll_psscs[0][4] = 0.67;
      ll_psscs[1][4] = 0.47;
      ll_psscs[2][4] = 0.50;
      ll_psscs[3][4] = 0.53;
      ll_psscs[4][4] = 0.68;
      ll_psscs[5][4] = 1.27;
      ll_psscs[6][4] = 1.26;
      ll_psscs[7][4] = 1.70;
      ll_psscs[8][4] = 1.13;
      ll_psscs[9][4] = 0.98;
      ll_psscs[10][4] = 0.87;
      ll_psscs[11][4] = 0.75;
      ll_psscs[12][4] = 0.86;
      ll_psscs[13][4] = 0.85;
      ll_psscs[14][4] = 0.93;
      ll_psscs[15][4] = 1.74;
      ll_psscs[16][4] = 3.06;
      ll_psscs[17][4] = 7.00;
      ll_psscs[18][4] = 25.09;
   }
   else if (background_index == 2)  // "High" background
   {     
      // Sensitivities for 6 sec (mJy):

      ll_psscs[0][1] = 4.917;
      ll_psscs[1][1] = 3.523;
      ll_psscs[2][1] = 3.743;
      ll_psscs[3][1] = 3.943;
      ll_psscs[4][1] = 4.988;
      ll_psscs[5][1] = 9.06;
      ll_psscs[6][1] = 8.87;
      ll_psscs[7][1] = 11.75;
      ll_psscs[8][1] = 8.15; 
      ll_psscs[9][1] = 7.113;
      ll_psscs[10][1] = 6.382;
      ll_psscs[11][1] = 5.512;
      ll_psscs[12][1] = 6.260;
      ll_psscs[13][1] = 6.123;
      ll_psscs[14][1] = 6.585;
      ll_psscs[15][1] = 11.762;
      ll_psscs[16][1] = 19.680;
      ll_psscs[17][1] = 43.478;
      ll_psscs[18][1] = 155.006;

      // Sensitivities for 14 sec (mJy):

      ll_psscs[0][2] = 3.123;
      ll_psscs[1][2] = 2.268;
      ll_psscs[2][2] = 2.406;
      ll_psscs[3][2] = 2.530;
      ll_psscs[4][2] = 3.171; 
      ll_psscs[5][2] = 5.63;
      ll_psscs[6][2] = 5.47;
      ll_psscs[7][2] = 7.12;
      ll_psscs[8][2] = 5.13;
      ll_psscs[9][2] = 4.505;
      ll_psscs[10][2] = 4.053;
      ll_psscs[11][2] = 3.515;
      ll_psscs[12][2] = 3.96;
      ll_psscs[13][2] = 3.868;
      ll_psscs[14][2] = 4.134; 
      ll_psscs[15][2] = 7.138;
      ll_psscs[16][2] = 11.629;
      ll_psscs[17][2] = 24.984;
      ll_psscs[18][2] = 86.754;

      // Sensitivities for 30 sec (mJy):

      ll_psscs[0][3] = 2.107;
      ll_psscs[1][3] = 1.538;
      ll_psscs[2][3] = 1.631;
      ll_psscs[3][3] = 1.714;
      ll_psscs[4][3] = 2.140;
      ll_psscs[5][3] = 3.76;
      ll_psscs[6][3] = 3.64;
      ll_psscs[7][3] = 4.70;
      ll_psscs[8][3] = 3.45;
      ll_psscs[9][3] = 3.035;
      ll_psscs[10][3] = 2.734;
      ll_psscs[11][3] = 2.375;
      ll_psscs[12][3] = 2.67;
      ll_psscs[13][3] = 2.603;
      ll_psscs[14][3] = 2.774;
      ll_psscs[15][3] = 4.714;
      ll_psscs[16][3] = 7.574;
      ll_psscs[17][3] = 16.018;
      ll_psscs[18][3] = 54.727;

      // Sensitivities for 120 sec (mJy):

      ll_psscs[0][4] = 1.045;
      ll_psscs[1][4] = 0.766;
      ll_psscs[2][4] = 0.812;
      ll_psscs[3][4] = 0.852;
      ll_psscs[4][4] = 1.061;
      ll_psscs[5][4] = 1.85;
      ll_psscs[6][4] = 1.79;
      ll_psscs[7][4] = 2.29;
      ll_psscs[8][4] = 1.70;
      ll_psscs[9][4] = 1.503;
      ll_psscs[10][4] = 1.356;
      ll_psscs[11][4] = 1.179;
      ll_psscs[12][4] = 1.32;
      ll_psscs[13][4] = 1.288;
      ll_psscs[14][4] = 1.371;
      ll_psscs[15][4] = 2.302;
      ll_psscs[16][4] = 3.661;
      ll_psscs[17][4] = 7.645
      ll_psscs[18][4] = 25.766;

   }


   for ( j = 1; j < numt; j++ )
   {
      if( wavelength < ll_psscs[j][0] )
      {
         var magic_index = j;
	 j = numt;
      }
   }

   var slope = ( ll_psscs[magic_index][frametime_index+1] -
	         ll_psscs[magic_index-1][frametime_index+1] ) /
	       ( ll_psscs[magic_index][0] - 
	         ll_psscs[magic_index-1][0] );

   var the_sens = ll_psscs[magic_index-1][frametime_index+1] + 
		  slope * (wavelength - ll_psscs[magic_index-1][0]); 

   return (the_sens/ Math.sqrt(2.0*Nrepeat));
}

function SL_PSSCS(wavelength, frametime_index, Nrepeat, background_index)
//
// Values from spreadsheet "sen_04Dec03.xls" in lib/ subdirectory of
// CVS, and reflected in SOM, v4.0, Fig. 7.18.
//
{

   var numt = 15;

   dimension ("sl_psscs", numt, 5); 

   // Wavelengths (micron):

   sl_psscs[0][0] = 5.21;
   sl_psscs[1][0] = 5.65;
   sl_psscs[2][0] = 6.13;
   sl_psscs[3][0] = 6.64;
   sl_psscs[4][0] = 7.21;
   sl_psscs[5][0] = 7.45;
   sl_psscs[6][0] = 7.55;
   sl_psscs[7][0] = 8.19;
   sl_psscs[8][0] = 8.88;
   sl_psscs[9][0] = 9.63;
   sl_psscs[10][0] = 10.44;
   sl_psscs[11][0] = 11.33;
   sl_psscs[12][0] = 12.28;
   sl_psscs[13][0] = 13.32;
   sl_psscs[14][0] = 14;

   if (background_index == 0)
   {     

      // Sensitivities for 6 sec (mJy):

      sl_psscs[0][1] = 1.667;
      sl_psscs[1][1] = 1.349;
      sl_psscs[2][1] = 1.327;
      sl_psscs[3][1] = 1.525;
      sl_psscs[4][1] = 2.046;
      sl_psscs[5][1] = 2.459;
      sl_psscs[6][1] = 2.065;
      sl_psscs[7][1] = 1.397;
      sl_psscs[8][1] = 1.233;
      sl_psscs[9][1] = 1.059;
      sl_psscs[10][1] = 1.034;
      sl_psscs[11][1] = 1.080;
      sl_psscs[12][1] = 1.193;
      sl_psscs[13][1] = 1.369;
      sl_psscs[14][1] = 1.573;

      // Sensitivities for 14 sec (mJy):

      sl_psscs[0][2] = 0.759;
      sl_psscs[1][2] = 0.616;
      sl_psscs[2][2] = 0.607;
      sl_psscs[3][2] = 0.699;
      sl_psscs[4][2] = 0.938;
      sl_psscs[5][2] = 1.127;
      sl_psscs[6][2] = 0.954;
      sl_psscs[7][2] = 0.655;
      sl_psscs[8][2] = 0.585;
      sl_psscs[9][2] = 0.510;
      sl_psscs[10][2] = 0.504;
      sl_psscs[11][2] = 0.529;
      sl_psscs[12][2] = 0.585;
      sl_psscs[13][2] = 0.669;
      sl_psscs[14][2] = 0.765;

      // Sensitivities for 60 sec (mJy):

      sl_psscs[0][3] = 0.228;
      sl_psscs[1][3] = 0.186;
      sl_psscs[2][3] = 0.185;
      sl_psscs[3][3] = 0.214;
      sl_psscs[4][3] = 0.288;
      sl_psscs[5][3] = 0.345;
      sl_psscs[6][3] = 0.298;
      sl_psscs[7][3] = 0.213;
      sl_psscs[8][3] = 0.196;
      sl_psscs[9][3] = 0.177;
      sl_psscs[10][3] = 0.178;
      sl_psscs[11][3] = 0.189;
      sl_psscs[12][3] = 0.209;
      sl_psscs[13][3] = 0.238;
      sl_psscs[14][3] = 0.270;

      // Sensitivities for 240 sec (mJy)

      sl_psscs[0][4] = 0.091;
      sl_psscs[1][4] = 0.075;
      sl_psscs[2][4] = 0.075;
      sl_psscs[3][4] = 0.087;
      sl_psscs[4][4] = 0.117;
      sl_psscs[5][4] = 0.140;
      sl_psscs[6][4] = 0.123;
      sl_psscs[7][4] = 0.091;
      sl_psscs[8][4] = 0.085;
      sl_psscs[9][4] = 0.078;
      sl_psscs[10][4] = 0.080;
      sl_psscs[11][4] = 0.085;
      sl_psscs[12][4] = 0.094;
      sl_psscs[13][4] = 0.107;
      sl_psscs[14][4] = 0.121;
   }
   else if (background_index == 1) // medium background
   {     

      // Sensitivities for 6 sec (mJy):

      sl_psscs[0][1] = 1.67;
      sl_psscs[1][1] = 1.35;
      sl_psscs[2][1] = 1.33;
      sl_psscs[3][1] = 1.53;
      sl_psscs[4][1] = 2.05;
      sl_psscs[5][1] = 2.47;
      sl_psscs[6][1] = 2.08;
      sl_psscs[7][1] = 1.41;
      sl_psscs[8][1] = 1.25;
      sl_psscs[9][1] = 1.08;
      sl_psscs[10][1] = 1.06;
      sl_psscs[11][1] = 1.10;
      sl_psscs[12][1] = 1.23;
      sl_psscs[13][1] = 1.40;
      sl_psscs[14][1] = 1.61;

      // Sensitivities for 14 sec (mJy):

      sl_psscs[0][2] = 0.76;
      sl_psscs[1][2] = 0.62;
      sl_psscs[2][2] = 0.61;
      sl_psscs[3][2] = 0.70;
      sl_psscs[4][2] = 0.94;
      sl_psscs[5][2] = 1.13;
      sl_psscs[6][2] = 0.96;
      sl_psscs[7][2] = 0.67;
      sl_psscs[8][2] = 0.60;
      sl_psscs[9][2] = 0.53;
      sl_psscs[10][2] = 0.53;
      sl_psscs[11][2] = 0.55;
      sl_psscs[12][2] = 0.61;
      sl_psscs[13][2] = 0.70;
      sl_psscs[14][2] = 0.80;

      // Sensitivities for 60 sec (mJy):

      sl_psscs[0][3] = 0.23;
      sl_psscs[1][3] = 0.19;
      sl_psscs[2][3] = 0.19;
      sl_psscs[3][3] = 0.22;
      sl_psscs[4][3] = 0.29;
      sl_psscs[5][3] = 0.35;
      sl_psscs[6][3] = 0.31;
      sl_psscs[7][3] = 0.22;
      sl_psscs[8][3] = 0.21;
      sl_psscs[9][3] = 0.19;
      sl_psscs[10][3] = 0.19;
      sl_psscs[11][3] = 0.20;
      sl_psscs[12][3] = 0.23;
      sl_psscs[13][3] = 0.26;
      sl_psscs[14][3] = 0.29;

      // Sensitivities for 240 sec (mJy)

      sl_psscs[0][4] = 0.09;
      sl_psscs[1][4] = 0.08;
      sl_psscs[2][4] = 0.08;
      sl_psscs[3][4] = 0.09;
      sl_psscs[4][4] = 0.12;
      sl_psscs[5][4] = 0.14;
      sl_psscs[6][4] = 0.13;
      sl_psscs[7][4] = 0.10;
      sl_psscs[8][4] = 0.09;
      sl_psscs[9][4] = 0.09;
      sl_psscs[10][4] = 0.09;
      sl_psscs[11][4] = 0.09;
      sl_psscs[12][4] = 0.10;
      sl_psscs[13][4] = 0.12;
      sl_psscs[14][4] = 0.13;
   }
   else if (background_index == 2) // high background
   {     

      // Sensitivities for 6 sec (mJy):

      sl_psscs[0][1] = 1.676;
      sl_psscs[1][1] = 1.365;
      sl_psscs[2][1] = 1.352;
      sl_psscs[3][1] = 1.562;
      sl_psscs[4][1] = 2.099;
      sl_psscs[5][1] = 2.521;
      sl_psscs[6][1] = 2.158;
      sl_psscs[7][1] = 1.516;
      sl_psscs[8][1] = 1.379;
      sl_psscs[9][1] = 1.230;
      sl_psscs[10][1] = 1.229;
      sl_psscs[11][1] = 1.300;
      sl_psscs[12][1] = 1.438;
      sl_psscs[13][1] = 1.639;
      sl_psscs[14][1] = 1.868;

      // Sensitivities for 14 sec (mJy):

      sl_psscs[0][2] = 0.768;
      sl_psscs[1][2] = 0.630;
      sl_psscs[2][2] = 0.630;
      sl_psscs[3][2] = 0.733;
      sl_psscs[4][2] = 0.987;
      sl_psscs[5][2] = 1.185;
      sl_psscs[6][2] = 1.038;
      sl_psscs[7][2] = 0.760;
      sl_psscs[8][2] = 0.711;
      sl_psscs[9][2] = 0.654;
      sl_psscs[10][2] = 0.666;
      sl_psscs[11][2] = 0.710;
      sl_psscs[12][2] = 0.786;
      sl_psscs[13][2] = 0.891;
      sl_psscs[14][2] = 1.011;

      // Sensitivities for 60 sec (mJy):

      sl_psscs[0][3] = 0.235;
      sl_psscs[1][3] = 0.197;
      sl_psscs[2][3] = 0.202;
      sl_psscs[3][3] = 0.239;
      sl_psscs[4][3] = 0.324;
      sl_psscs[5][3] = 0.388;
      sl_psscs[6][3] = 0.358;
      sl_psscs[7][3] = 0.283;
      sl_psscs[8][3] = 0.277;
      sl_psscs[9][3] = 0.265;
      sl_psscs[10][3] = 0.275;
      sl_psscs[11][3] = 0.297;
      sl_psscs[12][3] = 0.329;
      sl_psscs[13][3] = 0.371;
      sl_psscs[14][3] = 0.418;

      // Sensitivities for 240 sec (mJy)

      sl_psscs[0][4] = 0.095;
      sl_psscs[1][4] = 0.082;
      sl_psscs[2][4] = 0.085;
      sl_psscs[3][4] = 0.102;
      sl_psscs[4][4] = 0.139;
      sl_psscs[5][4] = 0.166;
      sl_psscs[6][4] = 0.158;
      sl_psscs[7][4] = 0.130;
      sl_psscs[8][4] = 0.129;
      sl_psscs[9][4] = 0.126;
      sl_psscs[10][4] = 0.132;
      sl_psscs[11][4] = 0.142;
      sl_psscs[12][4] = 0.158;
      sl_psscs[13][4] = 0.178;
      sl_psscs[14][4] = 0.200;
   }

   for ( j = 1; j < numt; j++ )
   {
      if( wavelength <= sl_psscs[j][0] )
      {
         var magic_index = j;
	 j = numt;
      }
   }

   var slope = ( sl_psscs[magic_index][frametime_index+1] -
	         sl_psscs[magic_index-1][frametime_index+1] ) /
	       ( sl_psscs[magic_index][0] - 
	         sl_psscs[magic_index-1][0] );

   var the_sens = sl_psscs[magic_index-1][frametime_index+1] + 
		  slope * (wavelength - sl_psscs[magic_index-1][0]); 

   return (the_sens/ Math.sqrt(2.0*Nrepeat));
}

// --------------

function BSL_SL(frametime_index, background_index)
//
// Values reflected in SOM, v5.0, Fig. 7.24.
//
{

   var numt = 4;

   dimension ("sl_bsl", numt);

   if( background_index == 0 ) // low bkgd
   {
      sl_bsl[0] = 58.7; // units = mJy, t = 6 sec
      sl_bsl[1] = 31.9; // units = mJy, t = 14 sec
      sl_bsl[2] = 13.9; // units = mJy, t = 60 sec
      sl_bsl[3] = 10.3; // units = mJy, t = 240 sec
   }
   else if (background_index == 1 ) // med bkgd
   {
      sl_bsl[0] = 60.1; // units = mJy, t = 6 sec
      sl_bsl[1] = 32.8; // units = mJy, t = 14 sec
      sl_bsl[2] = 15.6; // units = mJy, t = 60 sec
      sl_bsl[3] = 11.5; // units = mJy, t = 240 sec
   }
   else if (background_index == 2 ) // high bkgd
   {
      sl_bsl[0] = 71.6; // units = mJy, t = 6 sec
      sl_bsl[1] = 42.7; // units = mJy, t = 14 sec
      sl_bsl[2] = 24.6; // units = mJy, t = 60 sec
      sl_bsl[3] = 21.3; // units = mJy, t = 240 sec
   }
   else
   {
       alert("Bad IRS mode. SPEC-PET is confused! Please reset the form and/or reload the webpage.");
       return false;
   }
   
   return(sl_bsl[frametime_index]);
}

function BSL_LL(frametime_index, background_index)
//
// Values reflected in SOM, v5.0, Fig. 7.24.
//
{

   var numt = 4;

   dimension ("ll_bsl", numt);

   if (background_index == 0 ) // low bkdg
   {
      ll_bsl[0] = 131.4035; // units = mJy, t = 6 sec
      ll_bsl[1] = 109.9906; // units = mJy, t = 14 sec
      ll_bsl[2] = 105.8; // units = mJy, t = 30 sec
      ll_bsl[3] = 96.3; // units = mJy, t = 120 sec
   }
   else if (background_index == 1 ) // med bkdg
   {
      ll_bsl[0] = 153.0; // units = mJy, t = 6 sec
      ll_bsl[1] = 132.4; // units = mJy, t = 14 sec
      ll_bsl[2] = 124.3; // units = mJy, t = 30 sec
      ll_bsl[3] = 119.0; // units = mJy, t = 120 sec
   }
   else if (background_index == 2 ) // hi bkdg
   {
      ll_bsl[0] = 309.1; // units = mJy, t = 6 sec
      ll_bsl[1] = 287.9; // units = mJy, t = 14 sec
      ll_bsl[2] = 280.7; // units = mJy, t = 30 sec
      ll_bsl[3] = 276.0; // units = mJy, t = 120 sec
   }
   else
   {
       alert("Bad IRS mode. SPEC-PET is confused! Please reset the form and/or reload the webpage.");
       return false;
   }   

   return(ll_bsl[frametime_index]);
}

function BSL_SH(frametime_index, background_index)
//
// Values reflected in SOM, v5.0, Fig. 7.22.
//
{

   var numt = 4;

   dimension ("sh_bsl", numt);

   if (background_index == 0 ) // low bkdg
   {
      sh_bsl[0] = 534.6; // units = mJy, t = 6 sec
      sh_bsl[1] = 159.8; // units = mJy, t = 30 sec
      sh_bsl[2] = 89.0; // units = mJy, t = 120 sec 
      sh_bsl[3] = 71.2; // units = mJy, t = 240 sec
   }
   else if (background_index == 1 ) // med bkdg
   {
      sh_bsl[0] = 541.6; // units = mJy, t = 6 sec
      sh_bsl[1] = 165.0; // units = mJy, t = 30 sec
      sh_bsl[2] = 94.2; // units = mJy, t = 120 sec 
      sh_bsl[3] = 76.5; // units = mJy, t = 240 sec
   }
   else if (background_index == 2 ) // hi bkdg
   {
      sh_bsl[0] = 580.6; // units = mJy, t = 6 sec
      sh_bsl[1] = 204.5; // units = mJy, t = 30 sec
      sh_bsl[2] = 140.1; // units = mJy, t = 120 sec 
      sh_bsl[3] = 123.9; // units = mJy, t = 240 sec
   }
   else
   {
       alert("Bad IRS mode. SPEC-PET is confused! Please reset the form and/or reload the webpage.");
       return false;
   }
 
   return(sh_bsl[frametime_index]);
}

function BSL_LH(frametime_index, background_index)
//
// Values reflected in SOM, v5.0, Fig. 7.22.
//
{

   var numt = 4;

   dimension ("lh_bsl", numt);

   if ( background_index == 0 ) // low bkdg
   {
      lh_bsl[0] = 620.0923; // units = mJy, t = 6 sec
      lh_bsl[1] = 455.4; // units = mJy, t = 14 sec
      lh_bsl[2] = 360.67; // units = mJy, t = 60 sec 
      lh_bsl[3] = 339.0413; // units = mJy, t = 240 sec
   }
   else if ( background_index == 1 ) // med bkdg
   {
      lh_bsl[0] = 644.4; // units = mJy, t = 6 sec
      lh_bsl[1] = 479.7; // units = mJy, t = 14 sec
      lh_bsl[2] = 385.0; // units = mJy, t = 60 sec 
      lh_bsl[3] = 363.3; // units = mJy, t = 240 sec
   }
   else if ( background_index == 2 ) // hi bkdg
   {
      lh_bsl[0] = 819.2; // units = mJy, t = 6 sec
      lh_bsl[1] = 654.5; // units = mJy, t = 14 sec
      lh_bsl[2] = 559.8; // units = mJy, t = 60 sec 
      lh_bsl[3] = 538.1; // units = mJy, t = 240 sec
   }
   else
   {
       alert("Bad IRS mode. SPEC-PET is confused! Please reset the form and/or reload the webpage.");
       return false;
   }
   return(lh_bsl[frametime_index]);
}

