#! /usr/bin/python	
	
from html_elements import *	
import cgi,string,sys	
from ini_read import *		
Choice=[]	
List=[]
	
def html_java(Temp,Flag):
	input={}
	Temp_name=[]
	Temp_internal=[]
	#####################################################
	#
	#	initial parameter settings
	#
	#####################################################
	
	List_name=['Telescopemode', 'Object_choice', 'Choice_spectra', 'Spectrum', 'Spectrum_short', 'Filter_mag', 'Object_brightness_choice', 'Detector', 'Filter_choice', 'Camera_choice', 'Water_vapor', 'Airmass', 'Background', 'Sky_brightness', 'Seeing', 'SN', 'DIT', 'Blackbody_temperature', 'Line_wavelength', 'Line_flux', 'Line_width', 'Lucifermode', 'Slit_width', 'Strehl', 'Central_wavelength', 'Exposuretime', 'Redshift']
	List_value=['Seeing', 'Point source', 'Template', 'uniform', 't', 'V', '18', '1', 'J', 'N1.8', '1.60', '1.50', 'User_theoretical', '18', '0.8', '10', '10', '4000', '1.2500', '1.0000e-8', '600', 'Imaging', '0.50', '0.5', '1.250 / 210', '10', '0.0']
	j=0
	for i in List_name:
		input[i]=List_value[j]
		j=j+1
	
	#Temp = cgi.FieldStorage()
	
	ini_filename='etc.ini'
	ini_spectrum_filename='etc_spectrum.ini'
	ini_read_main(ini_filename)		#initiates the basic values
	ini_read_spectrum(ini_spectrum_filename)
	
	Output={}
	Ini_read=open('output.ini','r')
	Data=Ini_read.readline()
	while Data <> "":
		Raw=string.split(Data)
		Output[Raw[0]]=Raw[2]
		Data=Ini_read.readline()
	Ini_read.close()
	
	j=0
	
	if Temp.has_key('Telescopemode'):
		Temp_name=Temp.keys()
		for i in Temp_name:
			input[i]=Temp[Temp_name[j]].value
			j=j+1
	
	Spectrum_list.append('uniform')
	Filter_list_target = [['U','0','U'],['B','0','B'],['V','0','V'],['R','0','R'],['I','0','I']]
	for i in range(0,len(Filter_list)):
		if Filter_list[i][1] == input['Detector'] and Filter_list[i][0] <> "clear":# or Filter_list[i][1] == "0":
			Filter_list_target.append([Filter_list[i][0],Filter_list[i][1],Filter_list[i][2]])
	
	#Camera_list = LUCIFER['Cameratypes']
	if input['Background']<>"User_file":
		for i in range(len(Water_list)):
			Water_list[i]="%.2f" % Water_list[i]
	else:
		for i in range(len(Water_list)):
			Water_list[i]="0"
		for i in range(len(Water_list)):
			Water_list.remove("0")
		Water_list.append("1.60")
		input['Water_vapor']="1.60"
	for i in range(len(Airmass_list)):
		Airmass_list[i]="%.2f" % Airmass_list[i]
	
	########################################################
	#
	#	Generating the source code of the web page
	#
	#
	########################################################
	
	header("LUCIFER - Exposure Time Calculator", Output['css'])
	body()
	form(Output['code_path'], "POST")
	headline ("LUCIFER - Exposure Time Calculator",'1')
	#blink("Warning")
	headline("WARNING!",'4')
	headline("Valid for 2012A. Data for new detector for Luci1 based on lab-measurements.",'1')
	headline("Will be updated once on-sky calibration beginning of March has been carried out.",'1')
	headline("The calculations are not corrected for sky concentration and backscattering yet. If you have questions, please ask<br>Dave Thompson (dthompson[at]as.arizona.edu) or Jochen Heidt (J.Heidt[at]lsw.uni-heidelberg.de).",'1')
	par("")
	link(Output['help_web']+'/files/history.html',"Version 1.34.10.2")
	coda_par()
	hline('100%', "left", 4)
	headline("Telescope Modes",'2')
	
	if input['Telescopemode']=='Seeing':
		Flag1="1"
		Flag2="3"
	else:
		Flag1="0"
		Flag2="1"
	par('five')
	coda_par()
	
	par('seeing')
	radio('Telescopemode', 'Seeing', Output['code_path'], Flag1)
	link(Output['help_web']+'node10.html', "Seeing-limited mode")
	coda_par()
	
	par('diffraction')
	radio('Telescopemode', 'Diffraction', Output['code_path'], Flag2)
	link(Output['help_web']+'node9.html', "Diffraction-limited mode")
	coda_par()
	
	par('strehl')
	link(Output['help_web']+'node9.html', "Strehl ratio:")
	input_field('Strehl', input['Strehl'], '0.54in', '1.6em', '100%', Flag2)
	coda_par()
	
	par('clear')
	coda_par()
	
	hline("80%","CENTER","2")
	
	headline("Object Characteristics",'2')
	
	if input['Object_choice']=='Point source':
		Flag1="1"
		Flag2="0"
	else:
		Flag1="0"
		Flag2="1"
	
	par('five')
	coda_par()
	
	par('point')
	radio('Object_choice', 'Point source', '', Flag1)
	print ('Point source')
	#link(Output['help_web']+'node4.html', "Point Source")
	coda_par()
	
	par('extended')
	radio('Object_choice', 'Extended source', '', Flag2)
	print ('Extended source')
	#link(Output['help_web']+'node4.html', "Extended Source")
	coda_par()
	
	par('clear')
	coda_par()
	
	if input['Choice_spectra']=='Template':
		Flag1="1"
		Flag2="0"
		Flag3="0"
	elif input['Choice_spectra']=='Blackbody':
		Flag1="0"
		Flag2="1"
		Flag3="0"
	elif input['Choice_spectra']=='Single line':
		Flag1="0"
		Flag2="0"
		Flag3="1"
	
	par('spectrum_template')
	radio('Choice_spectra', 'Template', Output['code_path'], Flag1)
	link(Output['help_web']+'node12.html', "Template Spectrum:")
	selection_list('Spectrum', Spectrum_list, input['Spectrum'], '27%', '1.6em', '100%', Flag1)
	#selection_list_new('Spectrum', Spectrum_list, input['Spectrum'], '27%', '1.6em', '100%', Flag1, Output['code_path'])
	print " "
	link(Output['help_web']+'node12.html#redshift', "Redshift:")
	input_field('Redshift', input['Redshift'], '10%', '1.6em', '100%', Flag1)
	#selection_list('Spectrum', Spectrum_list, input['Spectrum'], '30%', '0.28in', '100%', Flag1)
	coda_par()
	
	par('blackbody')
	radio('Choice_spectra', 'Blackbody', Output['code_path'], Flag2)
	link(Output['help_web']+'node13.html', 'Blackbody')
	print ' with T='
	input_field('Blackbody_temperature', input['Blackbody_temperature'], '30%', '1.6em', '100%', Flag2)
	print "K"
	coda_par()
	
	par('single_line_radio')
	radio('Choice_spectra', 'Single line', Output['code_path'], Flag3)
	link(Output['help_web']+'node14.html', 'Single line')
	print ' with ...'
	coda_par()
	
	par('single_line_text')
	print '... Wavelength:<br>'
	print '... Flux:<br>'
	print '... Width: '
	coda_par()
	
	par('single_line_boxes')
	input_field('Line_wavelength', input['Line_wavelength'], '80%', '1.6em', '100%', Flag3)
	input_field('Line_flux', input['Line_flux'], '80%', '1.6em', '100%', Flag3)
	input_field('Line_width', input['Line_width'], '80%', '1.6em', '100%', Flag3)
	coda_par()
	
	par('single_line_units')
	print 'micron<br>'
	print 'erg/s/cm<sup>2</sup><br>'
	print '&Aring;'
	coda_par()
	
	par('Clear')
	coda_par()
	
	par('target_magnitude')
	link(Output['help_web']+'node15.html','Target magnitude')
	print ' (Vega):'
	Temp_name=[]
	Temp_internal=[]
	for i in range(0,len(Filter_list_target)):
		Temp_name.append(Filter_list_target[i][0])
		Temp_internal.append(Filter_list_target[i][2])
	selection_list_internal('Filter_mag', Temp_name, input['Filter_mag'], '1.50in', '1.6em', '100%', '1', Temp_internal)	
	print "="
	input_field('Object_brightness_choice', input['Object_brightness_choice'], '0.54in', '1.6em', '100%', str(int(Flag1) or int(Flag2)))
	print 'mag (mag/sq.arcsec for extended sources)'
	coda_par()
	
	par('clear')
	coda_par()
	
	hline("80%","CENTER","2")
	
	par("")
	target('MIDDLE','0')
	coda_par()
	headline("Hardware Characteristics",'2')
	if input['Detector']=='1':
		Flag1="1"
		Flag2="3"
	else:
		Flag1="0"
		Flag2="1"
	
	par('five')
	coda_par()
	
	par('lucifer1')
	radio('Detector', '1', Output['code_path']+'#MIDDLE', Flag1)
	link(Output['help_web']+'node19.html', "LUCIFER 1")
	coda_par()
	
	par('lucifer2')
	radio('Detector', '2', Output['code_path']+'#MIDDLE', Flag2)
	link(Output['help_web']+'node19.html', "LUCIFER 2")
	coda_par()
	
	par('clear')
	coda_par()
	
	if input['Lucifermode']=='Imaging':
		Flag1="1"
		Flag2="0"
	else:
		Flag1="0"
		Flag2="1"
	
	par('five')
	coda_par()
	
	par('imaging')
	radio('Lucifermode', 'Imaging', Output['code_path']+'#MIDDLE', Flag1)
	print 'Imaging mode'
	coda_par()
	
	par('spectroscopic')
	radio('Lucifermode', 'Spectroscopy', Output['code_path']+'#MIDDLE', Flag2)
	print 'Spectroscopic mode'
	coda_par()
	
	par('clear')
	coda_par()
	
	par('five')
	coda_par()
	
	par('filter')
	link(Output['help_web']+'node17.html', "Filter:")
	Temp_name=[]
	Temp_internal=[]
	for i in range(0,len(Filter_list)):
		if Filter_list[i][1] == input['Detector']:# or Filter_list[i][1] == "0":
			Temp_name.append(Filter_list[i][0])
			Temp_internal.append(Filter_list[i][2])
	if Flag == 1:
		for i in range(0,len(Grating_list)):
			if Grating_list[i][0] == input['Central_wavelength'] and Grating_list[i][1] == input['Detector']:
				break
		input['Filter_choice'] = Grating_list[i][2]
	selection_list_internal('Filter_choice', Temp_name, input['Filter_choice'], '1.50in', '1.6em', '100%', '1', Temp_internal)
	coda_par()
	
	par('camera')
	link(Output['help_web']+'node18.html', "Camera:")
	selection_list('Camera_choice', Camera_list, input['Camera_choice'], '0.81in', '1.6em', '100%', '1')
	coda_par()
	
	par('clear')
	coda_par()
	
	par('twenty')
	coda_par()
	
	par('slit')
	link(Output['help_web']+'node27.html', "Slit width:")
	Temp_name=[]
	for i in range(0,len(Slit_list)):
		if Slit_list[i][2] == input['Detector'] or Slit_list[i][1] == "0":
			Temp_name.append(Slit_list[i][0])
	selection_list('Slit_width', Temp_name, input['Slit_width'], '0.61in', '1.6em', '100%', Flag2)
	coda_par()
	
	par('central_wavelength')
	print 'Central wavelength of the'
	link(Output['help_web']+'node20.html', "grating")
	print 'in &micro;m / Number of lines per millimeter:'
	Temp_name=[]
	for i in range(0,len(Grating_list)):
		if Grating_list[i][1] == input['Detector'] or Grating_list[i][1] == "0":
			Temp_name.append(Grating_list[i][0])
	selection_list_new('Central_wavelength', Temp_name, input['Central_wavelength'], '8em', '1.6em', '100%', Flag2, Output['code_path']+'#MIDDLE')
	coda_par()
	
	par('clear')
	field_hidden('Hidden_actual',input['Central_wavelength'])
	try:
		if input['Lucifermode'] == "Spectroscopy":
			field_hidden('Hidden_old',input['Central_wavelength'])
		else:
			field_hidden('Hidden_old',"leer")
	except:
		pass
	coda_par()
	
	hline("80%","CENTER","2")
	
	headline("Atmospheric Conditions",'2')
	
	par('five')
	coda_par()
	
	par('water_vapor')
	link(Output['help_web']+'node21.html', "Water vapor:")
	selection_list('Water_vapor', Water_list, input['Water_vapor'], '0.61in', '1.6em', '100%', '1')
	print 'mm'
	coda_par()
	
	par('airmass')
	link(Output['help_web']+'node22.html', "Airmass:")
	selection_list('Airmass', Airmass_list, input['Airmass'], '0.61in', '1.6em', '100%', '1')
	coda_par()
	
	par('sky_seeing')
	print 'Seeing:'
	input_field('Seeing', input['Seeing'], '0.54in', '1.6em', '100%', '1')
	print 'arcsec'
	coda_par()
	
	par('clear')
	coda_par()

#	hline("80%","CENTER","2")
	
#	print '<H2>Sky Conditions</H2>'
	if input['Background']=="User_sky":
		Flag1="1"
		Flag2="0"
		Flag3="0"
	elif input['Background']=="User_file":
		Flag1="0"
		Flag2="1"
		Flag3="0"
	elif input['Background']=="User_theoretical":
		Flag1="0"
		Flag2="0"
		Flag3="1"
	
	par('user_sky')
	radio('Background', 'User_sky', Output['code_path']+'#END', Flag1)
	link(Output['help_web']+'node24.html', "Sky brightness")
	print ' for the zenith (Vega):'
	input_field('Sky_brightness', input['Sky_brightness'], '0.54in', '1.6em', '100%', str(int(Flag1)))
	print 'mag/sq.arcsec'
	newline()
	print 'pure black-body spectrum, no sky lines'
	coda_par()
	
	par('user_file')
	radio('Background', 'User_file', Output['code_path']+'#END', Flag2)
	link(Output['help_web']+'node25.html', "Background file")
	print ' with 1.6 mm water vapor and selected airmass'
	coda_par()
	
	par('user_theoretical')
	radio('Background', 'User_theoretical', Output['code_path']+'#END', Flag3)
	link(Output['help_web']+'node26.html', "Theoretical background spectrum")
	coda_par()
	
	par('clear')
	coda_par()
	
	hline("80%","CENTER","2")
	
	headline("Parameters of Exposure",'2')
	if input['Lucifermode']=="Imaging":
		if Temp.has_key('Exp_ima'):
			if Temp['Exp_ima'].value == "SNR":
				Flag1="1"
				Flag2="0"
				Flag3="0"
			else:
				Flag1="0"
				Flag2="1"
				Flag3="0"
		else:
			Flag1="1"
			Flag2="0"
			Flag3="0"
	elif input['Lucifermode']=="Spectroscopy":
		Flag1="3"
		Flag2="1"
		Flag3="1"	
	
	par('five')
	coda_par()
	
	par('snr_imaging')
	radio('Exp_ima', 'SNR', Output['code_path']+'#END', Flag1)
	link(Output['help_web']+'node4.html#SNR', "SNR")
	input_field('SN', input['SN'], '0.54in', '1.6em', '100%', Flag1)
	coda_par()
	
	par('t_imaging')
	radio('Exp_ima', 'total', Output['code_path']+'#END', Flag2)
	link(Output['help_web']+'node4.html#SNR', "Total exposure time")
	input_field('Exposuretime', input['Exposuretime'], '0.54in', '1.6em', '100%', Flag2)
	print 'sec'
	coda_par()
	
	par('clear')
	coda_par()
	
	par('dit')
	link(Output['help_web']+'node4.html#SNR', "Detector Integration Time (DIT):")
	input_field('DIT', input['DIT'], '0.54in', '1.6em', '100%', '1')
	#print Hawaii_conditions['Min_DIT_1']
	print 'sec (the minimum DIT is %4.2f sec)' % Hawaii_conditions['Min_DIT_%d' % int(input['Detector'])]
	coda_par()
	
	hline("80%","CENTER","2")
	par('center')
	submit_button("Button", "SUBMIT", "Submit", "0.7in", "1.6em")
	coda_par()
	
	coda_form()
	
	par("")
	target('END','0')
	coda_par()
	
	coda_body(Output['help_web']+"index.html","Help")
	

def user_input(Web, Formdata):
	Error=0
	if Web < 2:
		Temp=''	
		Mode=1	
		if Formdata['Lucifermode'].value=='Spectroscopy':	
			Mode=Mode+1
		if Formdata['Telescopemode'].value=='Diffraction':	
			Mode=Mode+2
		Choice.append(Formdata['Object_choice'].value)	
		if Formdata['Choice_spectra'].value == "Template":	
			Choice.append('t')
			Choice.append(Formdata['Spectrum'].value)
			Temp=(Formdata['Redshift'].value)
			Temp1=(Formdata['Spectrum'].value)
			if Temp1.find('galaxy') == -1:
				Choice.append(Temp1)
			else:
				try:
					float(Temp)
					if Temp[0]<>'-':
						Choice.append(Temp)
					if Temp[0]=='-':
						Error = 1
						Choice.append('<font color="red">%s</font>' % Temp)
				except:
					Error = 1
					Choice.append('<font color="red">%s</font>' % Temp)
		elif Formdata ['Choice_spectra'].value == "Blackbody":	
			Choice.append('b')
			try:
				Temp=float(Formdata['Blackbody_temperature'].value)
				if Temp>0:
					Choice.append(str(Temp))
				else:
					Error = 1
					Choice.append('<font color="red">%s</font>' % Temp)
			except:
				Choice.append('<font color="red">%s</font>' % Formdata['Blackbody_temperature'].value)
				Error = 1
			Choice.append('0')
		elif Formdata ['Choice_spectra'].value == "Single line":	
			try:
				Temp=float(Formdata['Line_wavelength'].value)
				if Temp>0:
					Choice.append(str(Temp))
				else:
					Error = 1
					Choice.append('<font color="red">%s</font>' % Temp)
			except:
				Choice.append('<font color="red">%s</font>' % Formdata['Line_wavelength'].value)
				Error = 1
			try:
				Temp=float(Formdata['Line_flux'].value)
				if Temp>0:
					Temp = "%e" % Temp
					Choice.append(str(Temp))
				else:
					Error = 1
					Choice.append('<font color="red">%s</font>' % Temp)
			except:
				Choice.append('<font color="red">%s</font>' % Formdata['Line_flux'].value )
				Error=1
			try:
				Temp=float(Formdata['Line_width'].value)
				if Temp>0:
					Choice.append(str(Temp))
				else:
					Error = 1
					Choice.append('<font color="red">%s</font>' % Temp)
			except:
				Choice.append('<font color="red">%s</font>' % Formdata['Line_width'].value)
				Error = 1
		if Formdata['Choice_spectra'].value == "Template" or Formdata ['Choice_spectra'].value == "Blackbody":	
			Choice.append(Formdata['Filter_mag'].value)
			try:
				Temp=float(Formdata['Object_brightness_choice'].value)
				Choice.append(Temp)
			except:
				Choice.append('<font color="red">%s</font>' % Formdata['Object_brightness_choice'].value)
				Error = 1
		else:	
			Choice.append('U')
			Choice.append(-27)
		Choice.append(Formdata['Detector'].value)	
		Choice.append(Formdata['Filter_choice'].value)	
		Choice.append(Formdata['Camera_choice'].value)	
		if Mode == 2 or Mode ==4:	
			Choice.append(float(Formdata['Slit_width'].value))
		else:	
			Choice.append('0')
		Water_vapor=int(float(Formdata['Water_vapor'].value)*100)	
		Airmass=int(float(Formdata['Airmass'].value)*100)	
		Temp="air_transmission/%d_%d.csv" % (Water_vapor, Airmass)	
		Choice.append(Temp)	
		if Formdata['Background'].value=="User_sky":	
			Choice.append("0")
			Choice.append(float(Formdata['Sky_brightness'].value))
		elif Formdata['Background'].value=="User_file":	
			Temp="oh_lines/160_%d.csv" % Airmass
			Choice.append(Temp)
			Choice.append(-27)
		elif Formdata['Background'].value=="User_theoretical":	
			Temp="oh_lines/rousselot.csv"
			Choice.append(Temp)
			Choice.append(-17)
		if Mode == 3 or Mode == 4:	
			Choice.append(float(Formdata['Strehl'].value))
		else:	
			Choice.append('-1')
		try:
			Temp=float(Formdata['Seeing'].value)
			if Temp>0:
				Choice.append(Temp)
			else:
				Error = 1
				Choice.append('<font color="red">%s</font>' % Temp)
		except:
			Choice.append('<font color="red">%s</font>' % Formdata['Seeing'].value)
			Error = 1
		if Mode == 2 or Mode ==4:	
			Data = Formdata['Central_wavelength'].value
			Row = string.split(Data)
			Temp="grating/%d_%d_%s.csv" % (float(Row[0])*1000, float(Row[2]),Formdata['Detector'].value)
			Choice.append(Temp)
			Choice.append(float(Row[0]))
			Choice.append(float(Row[2]))
		else:	
			Choice.append('0')
			Choice.append('0')
			Choice.append('0')
		try:
			Temp=float(Formdata['DIT'].value)
			if Temp>0:
				Choice.append(Temp)
			else:
				Error = 1
				Choice.append('<font color="red">%s</font>' % Temp)
		except:
			Choice.append('<font color="red">%s</font>' % Formdata['DIT'].value)
			Error = 1
		if Mode == 1 or Mode ==3:
			try:
				if Formdata['Exp_ima'].value == "SNR":
					Temp=float(Formdata['SN'].value)
					if Temp>0:
						Choice.append(Temp)
						Choice.append('0')
					else:
						Error = 1
						Choice.append('<font color="red">%s</font>' % Temp)
						Choice.append('0')
				if Formdata['Exp_ima'].value == "total":
					Temp=float(Formdata['Exposuretime'].value)
					if Temp>0 and Temp>=Choice[len(Choice)-1]:
						Choice.append('0')
						Choice.append(Temp)
					else:
						Error = 1
						Choice.append('0')
						Choice.append('<font color="red">%s</font>' % Temp)
					Mode=Mode+4
			except:
				Choice.append('<font color="red">%s</font>' % Formdata['SN'].value)
				Choice.append(Temp)
				Error = 1
		else:	
			try:
				Temp=float(Formdata['Exposuretime'].value)
				if Temp>0 and Temp>=Choice[len(Choice)-1]:
					Choice.append('0')
					Choice.append(Temp)
				else:
					Error = 1
					Choice.append('0')
					Choice.append('<font color="red">%s</font>' % Temp)
			except:
				Choice.append('0')
				Choice.append('<font color="red">%s</font>' % Formdata['Exposuretime'].value)
				Error = 1			
		Choice.append(Mode)
		Choice.append(Error)
	else:
		print Formdata
		sys.exit()
		#Mode=1
		#print "Telescope Mode"
		#print "Type 0 for seeing-limited mode"		
		#print "Type 1 for diffraction-limited mode"
		#Temp = 'error'
		#while Temp == 'error':
			#Temp=raw_input()
			#try:
				#Temp=int(Temp)
				#if Temp == '' or Temp < 0 or Temp > 1:
					#print "Type '0' or '1'"
					#Temp = 'error'
			#except:
				#if Temp=='exit':
					#sys.exit()
				#print "Type '0' or '1'"
				#Temp = 'error'
		#if Temp == 1:		
			#Mode=Mode+2	
		#else: 		
			#pass	
		#print
		#print "Object Characteristics"
		#print "Type 0 for point source"		
		#print "Type 1 for extended source"		
		#Temp = 'error'
		#while Temp == 'error':
			#Temp=raw_input()
			#try:
				#Temp=int(Temp)
				#if Temp == '' or Temp < 0 or Temp > 1:
					#print "Type '0' or '1'"
					#Temp = 'error'
			#except:
				#if Temp=='exit':
					#sys.exit()
				#print "Type '0' or '1'"
				#Temp = 'error'
		#Choice.append({0 : 'Point source', 1 : 'Extended source'}[Temp])
		#print		
		#print "Which type of source?"
		#print "Type 0 for a model spectrum"
		#print "Type 1 for a uniform-frequency distribution"		
		#print "Type 2 for a blackbody distribution"		
		#print "Type 3 for a single line"		
		#Temp = 'error'
		#while Temp == 'error':
			#Temp=raw_input()
			#try:
				#Temp=int(Temp)
				#if Temp == '' or Temp < 0 or Temp > 3:
					#print "Only numbers between '0' and '3' are allowed"
					#Temp = 'error'
			#except:
				#if Temp=='exit':
					#sys.exit()
				#print "Only numbers between '0' and '3' are allowed"
				#Temp = 'error'
		#Object=Temp
		#Liste=Spectrum_list
		#if Temp == 0:
			#print
			#Temp = 'error'
			#for i in range(len(Liste)):		
				#print "Type",i,"for a ",Liste[i]	
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=int(Temp)
					#if Temp == '' or Temp < 0 or Temp > i:
						#print "Only numbers between 0 and ",i," are allowed"
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print "Only numbers between 0 and ",i," are allowed"
					#Temp = 'error'
			#Object=Temp
		#else:
			#Object=Object+len(Liste)
		#if Object < len(Liste):		
			#Choice.append('t')	
			#Choice.append(Liste[Object])
			#if Liste[Object].find('galaxy') <> -1:
				#print "Redshift: "
				#Temp = raw_input()
			#else:
				#Temp='0'
			#Choice.append(Temp)	
		#elif Object == len(Liste)+1:		
			#Choice.append('t')	
			#Choice.append('uniform')	
			#Choice.append('0')	
		#elif Object == len(Liste)+2:		
			#Choice.append('b')	
			#print
			#print "Blackbody Temperature [Kelvin]: "	
			#Temp = 'error'
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=float(Temp)
					#if Temp == '' or Temp < 0:
						#print 'Input a number > 0'
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print 'Input a number, please.'
					#Temp = 'error'
			#Temp=str(Temp)
			#Choice.append(Temp)	
			#Choice.append('0')	
		#elif Object == len(Liste)+3:		
			#print
			#print "Line wavelength in micron"	
			#Temp = 'error'
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=float(Temp)
					#if Temp == '' or Temp < 0:
						#print 'Input a number > 0'
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print 'Input a number, please.'
					#Temp = 'error'
			#Temp=str(Temp)
			#Choice.append(Temp)	
			#print "Line flux in erg/s/cm2"	
			#Temp = 'error'
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=float(Temp)
					#if Temp == '' or Temp < 0:
						#print 'Input a number > 0'
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print 'Input a number, please.'
					#Temp = 'error'
			#Temp=str(Temp)
			#Choice.append(Temp)	
			#print "Line width in A"	
			#Temp = 'error'
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=float(Temp)
					#if Temp == '' or Temp < 0:
						#print 'Input a number > 0'
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print 'Input a number, please.'
					#Temp = 'error'
			#Temp=str(Temp)
			#Choice.append(Temp)	
				
		#print		
		#if Object < len(Liste)+3:		
			#print "The object brightness will be given for the following filter:"
			#print Filter_list_target
			#sys.exit()
			#Temp = Filter.keys()
			#Temp.sort()
			#for i in range(len(Temp)):
				#print "Type",i,"for",Temp[i],"-band"
			#Temp = 'error'
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=int(Temp)
					#if Temp == '' or Temp < 0 or Temp > i:
						#print "Only numbers between 0 and ",i," are allowed"
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print "Only numbers between 0 and ",i," are allowed"
					#Temp = 'error'
			#i = Temp
			#Temp = Filter.keys()
			#Temp.sort()
			#Temp=Temp[i]
			#Choice.append(Temp)	
			#print	
			#print "Object brightness in mag"	
			#Temp='error'
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=float(Temp)
					#if Temp == '':
						#print 'Input a number, please'
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print 'Input a number, please.'
					#Temp = 'error'
			#Choice.append(Temp)	
		#else:		
			#Choice.append("0")	
			#Choice.append("0")	
		#print
		#print "Hardware Characteristics"
		#print "Type 1 for Lucifer 1"
		#print "Type 2 for Lucifer 2"
		#Temp = 'error'
		#while Temp == 'error':
			#Temp=raw_input()
			#try:
				#Temp=int(Temp)
				#if Temp == '' or Temp < 1 or Temp > 2:
					#print "Type '1' or '2'"
					#Temp = 'error'
			#except:
				#if Temp=='exit':
					#sys.exit()
				#print "Type '1' or '2'"
				#Temp = 'error'
		#Choice.append(Temp)
		#print		
		#print "Type 0 for imaging mode"		
		#print "Type 1 for spectroscopic mode"		
		#Temp = 'error'
		#while Temp == 'error':
			#Temp=raw_input()
			#try:
				#Temp=int(Temp)
				#if Temp == '' or Temp < 0 or Temp > 1:
					#print "Type '0' or '1'"
					#Temp = 'error'
			#except:
				#if Temp=='exit':
					#sys.exit()
				#print "Type '0' or '1'"
				#Temp = 'error'
		#if Temp == 1:		
			#Mode=Mode+1	
		#else: 		
			#pass					
		#print		
		#print "Which filter should LUCIFER use?"		
		#for i in range(len(Filter_list)):
			#print "Type",i,"for",Filter_list[i],"-band"
		#Temp = 'error'
		#while Temp == 'error':
			#Temp=raw_input()
			#try:
				#Temp=int(Temp)
				#if Temp == '' or Temp < 0 or Temp > i:
					#print "Only numbers between 0 and ",i," are allowed"
					#Temp = 'error'
			#except:
				#if Temp=='exit':
					#sys.exit()
				#print "Only numbers between 0 and ",i," are allowed"
				#Temp = 'error'
		#Temp=Filter_list[Temp]
		#Choice.append(Temp)
		
		#print		
		#print "Camera selection:"		
		#for i in range(len(LUCIFER['Cameratypes'])):		
			#print "Type ",i,"for camera", LUCIFER['Cameratypes'][i]	
		#Temp = 'error'
		#while Temp == 'error':
			#Temp=raw_input()
			#try:
				#Temp=int(Temp)
				#if Temp == '' or Temp < 0 or Temp > 2:
					#print "Type '0', '1' or '2'"
					#Temp = 'error'
			#except:
				#if Temp=='exit':
					#sys.exit()
				#print "Type '0', '1' or '2'"
				#Temp = 'error'
		#Choice.append({0: 'N1.8', 1 : 'N3.75', 2 : 'N30'}[Temp])		
				
		#print		
		#if Mode == 2 or Mode ==4:		
			#Liste=Slit.keys()
			#Liste.sort()	
			#print "Slit width: "	
			#for i in range(len(Liste)):	
				#print "Type ",i,"for slit width ", Liste[i], "arcsec"
			#Temp = "error"
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=int(Temp)
					#if Temp == '' or Temp < 0 or Temp > i:
						#print "Only numbers between 0 and ",i," are allowed"
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print "Only numbers between 0 and ",i," are allowed"
					#Temp = 'error'
			#Choice.append(float(Liste[Temp]))
		#else:		
			#Choice.append("0")	
				
		#print		
		#print "Atmospheric conditions"		
		#Liste=Atmosphere.keys()		
		#Liste.sort()		
		#for i in range(len(Atmosphere)):		
			#print "Type ",i,"for", Atmosphere_conditions[Liste[i]][1],"mm water vapor and Airmass", Atmosphere_conditions[Liste[i]][2]	
		#Temp = 'error'
		#while Temp == 'error':
			#Temp=raw_input()
			#try:
				#Temp=int(Temp)
				#if Temp == '' or Temp < 0 or Temp > i:
					#print "Only numbers between 0 and ",i," are allowed"
					#Temp = 'error'
			#except:
				#if Temp=='exit':
					#sys.exit()
				#print "Only numbers between 0 and ",i," are allowed"
				#Temp = 'error'
		#Choice.append(Liste[Temp])		
		#Water_vapor=Atmosphere_conditions[Liste[Temp]][1]		
		#Airmass=Atmosphere_conditions[Liste[Temp]][2]		
				
		#print		
		#print "Sky Conditions"		
		#Liste=Background.keys()		
		#print "Type  0 for user input of sky brightness"		
		#print "Type  1 for theoretical background"		
		#print "Type  2 for background file (only for 1.6 mm water vapor available)"		
		#Temp = 'error'
		#while Temp == 'error':
			#Temp=raw_input()
			#try:
				#Temp=int(Temp)
				#if Temp == '' or Temp < 0 or Temp > 2:
					#print "Type '0', '1' or '2'"
					#Temp = 'error'
			#except:
				#if Temp=='exit':
					#sys.exit()
				#print "Type '0', '1' or '2'"
				#Temp = 'error'
		#if Temp == 0:
			#print
			#print "Sky brightness"	
			#Choice.append("0")
			#Temp="error"
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=float(Temp)
					#if Temp == '':
						#print 'Input a number, please'
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print 'Input a number, please.'
					#Temp = 'error'
			#Choice.append(Temp)
		#elif Temp == 1:		
			#Temp="oh_lines/rousselot.csv"	
			#Choice.append(Temp)	
			#Choice.append(-17)	
		#elif Temp == 2:		
			#Temp = "oh_lines/160_%d.csv" % (Airmass*100)	
			#Choice.append(Temp)	
			#Choice.append(-27)	
				
		#if Mode == 3 or Mode == 4:		
			#print	
			#print "Strehl: "	
			#Temp='error'
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=float(Temp)
					#if Temp == '' or Temp < 0:
						#print 'Input a number > 0, please'
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print 'Input a number, please.'
					#Temp = 'error'
			#Choice.append(Temp)	
		#else:		
			#Choice.append('-1')	
				
		#print		
		#print "Seeing [arcsec]"		
		#Temp='error'
		#while Temp == 'error':
			#Temp=raw_input()
			#try:
				#Temp=float(Temp)
				#if Temp == '' or Temp <= 0:
					#print 'Input a number > 0, please'
					#Temp = 'error'
			#except:
				#if Temp=='exit':
					#sys.exit()
				#print 'Input a number, please.'
				#Temp = 'error'
		#Choice.append(Temp)		
				
		#if Mode == 2 or Mode ==4:		
			#Liste = Grating_list	
			#print "Grating selection"	
			#for i in range(len(Liste)):	
				#Data = Liste[i]
				#Row = string.split(Data)
				#print "Type",i,"for a central wavelength of ", Row[0], "micron and ", Row[2], "lines per mm"
			#Temp = 'error'
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=int(Temp)
					#if Temp == '' or Temp < 0 or Temp > i:
						#print "Only numbers between 0 and ",i," are allowed"
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print "Only numbers between 0 and ",i," are allowed"
					#Temp = 'error'
			#Data = Liste[Temp]	
			#Row = string.split(Data)	
			#Temp="grating/%d_%d.csv" % (float(Row[0])*100, float(Row[2]))	
			#Choice.append(Temp)	
			#Choice.append(float(Row[0]))	
			#Choice.append(float(Row[2]))	
		#else:		
			#Choice.append('0')	
			#Choice.append('0')	
			#Choice.append('0')	
				
		#print		
		#print "DIT"		
		#Temp='error'
		#while Temp == 'error':
			#Temp=raw_input()
			#try:
				#Temp=float(Temp)
				#if Temp == '' or Temp <= 0:
					#print 'Input a number > 0, please'
					#Temp = 'error'
			#except:
				#if Temp=='exit':
					#sys.exit()
				#print 'Input a number, please.'
				#Temp = 'error'
		#Choice.append(Temp)		
		
		#Temp='error'
		#print Temp
		#if Mode == 1 or Mode ==3:
			#print 
			#print "1 for the input of SNR"
			#print "2 for the input of the total exposuretime"
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=float(Temp)
					#if Temp == '' or Temp <= 0:
						#print 'Only 1 or 2 are allowed'
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print 'Input a number, please.'
					#Temp = 'error'
			#if Temp==1:
				#print
				#print "SNR"
				#Temp="error"
				#while Temp == 'error':
					#Temp=raw_input()
					#try:
						#Temp=float(Temp)
						#if Temp == '' or Temp <= 0:
							#print 'Input a number > 0, please'
							#Temp = 'error'
					#except:
						#if Temp=='exit':
							#sys.exit()
						#print 'Input a number, please.'
						#Temp = 'error'
				#Choice.append(Temp)
				#Choice.append('0')
			#if Temp==2:
				#print	
				#print "Exposuretime"	
				#Temp="error"
				#while Temp == 'error':
					#Temp=raw_input()
					#try:
						#Temp=float(Temp)
						#if Temp == '' or Temp <= 0:
							#print 'Input a number > 0, please'
							#Temp = 'error'
					#except:
						#if Temp=='exit':
							#sys.exit()
						#print 'Input a number, please.'
						#Temp = 'error'
				#Choice.append('0')
				#Choice.append(Temp)
				#Mode = Mode + 4
		##Choice.append(10)		
				
		#if Mode == 2 or Mode ==4:		
			#print	
			#print "Exposuretime"	
			#Temp='error'
			#while Temp == 'error':
				#Temp=raw_input()
				#try:
					#Temp=float(Temp)
					#if Temp == '' or Temp <= 0:
						#print 'Input a number > 0, please'
						#Temp = 'error'
				#except:
					#if Temp=='exit':
						#sys.exit()
					#print 'Input a number, please.'
					#Temp = 'error'
			#Choice.append('0')	
			#Choice.append(Temp)	
		#Choice.append(Mode)
		#Choice.append(Error)
		#print Choice
	return(Choice)	