def parameter_checktype(arg_names,arg_values,arg_types):
	for k in range(0,len(arg_names)):
		if not len(arg_names)==1:
			if not isinstance(arg_values[k],arg_types[k]): 
				print " *** "
				print " "
				raise TypeError, "Expected '%s' to be '%s'; was '%s'. \n  \n *** " % (arg_names[k],arg_types[k], type(arg_values[k]))
			else:
				pass
		else:
			if not isinstance(arg_values[0],arg_types):
				print " *** "
				print " "
				raise TypeError, "Expected '%s' to be '%s'; was '%s'. \n \n  *** " % (arg_names,arg_types,type(arg_values))
			else:
				pass

def parameter_checkmenu(arg_name,arg_value,arg_options):
	try:
		arg_options.index(arg_value)
	except ValueError, e:
		print " *** "
		print " "
		raise ValueError, "'%s' is not an option for '%s'; must be one of: %s. \n \n  *** " % (arg_value, arg_name, arg_options)


def parameter_checklist(arg_name,arg_value,arg_options):
	# We assume that arg_value is a string, we need to first break
	# make it into a list.
	arg_list=[arg_value];
	if ( arg_value.find( "," ) > -1 ):
		arg_list=arg_value.split( "," );
	elif ( arg_value.find( " " ) > -1 ):
		arg_list=arg_value.split( " " );

	
	# Now check each element to see if it is valid.
	# Note that we check with UPPERCASE values to eliminate case
	# senstivity, and remove trailing and leading spaces
	for value in arg_list[:] :
		try:
			arg_options.index(value.upper().strip())
		except ValueError, e:
			print " *** "
			print " "
			raise ValueError, "'%s' is not an option for '%s'; must be one of: %s. \n \n  *** " % (arg_value, value, arg_options)
	

#def parameter_checkrage(arg_name,arg_value,arg_range):

def parameter_printvalues(arg_names,arg_values,arg_types):
	for k in range(0,len(arg_names)):
		print "Parameter: %s is: %s and has type %s." % (arg_names[k],arg_values[k],type(arg_values[k]))