	var MedicareQuiz = Class.create();
	MedicareQuiz.prototype =
	{
		initialize: function(form_id){
			this.initializeRequiredFields();
			this.initializeEvents();
			this.lockReturnKey	= false;
		},

		/***************************************************************************************************
		 *initialize the elements of the form, hide and show as directed
		 */
		initializeRequiredFields : function(){
			$("traveling_error").addClassName("validate-radios");
			$("prescription_costs_error").addClassName("validate-radios");
			$("aids_error").addClassName("validate-radios");
			$("doctor_services_error").addClassName("validate-radios");
			$("health_problems_error").addClassName("validate-radios");
		},

		/***************************************************************************************************
		 *add event listeners for submit button, return key and custom onclick/onchange
		 */
		initializeEvents : function(){
			Event.observe(document, "keypress", this.validateOnReturnKey.bindAsEventListener(this));
			Event.observe("quiz_submit", "click", this.validateFields.bindAsEventListener(this));
		},

		/***************************************************************************************************
		 *show/add functions
		 *takes hidden row, element and validation to apply/remove
		 */
		showAddValidations: function(name, element, validation_name){
			var name = String(name);
			$$(name).each(function(element){ element.show(); });
			$(element.id).addClassName(validation_name);
		},

		hideRemoveValidations: function(name, element, validation_name){
			var name = String(name);
			$$(name).each(function(element){ element.hide(); });
			$(element.id).hide();
			$(element.id).removeClassName(validation_name);
		},

		validateFields: function(e){
			var form_elements		= $$(".error");
			var form						= new Validator(form_elements);			
			var is_valid				= form.isFormValid();
			if(!is_valid){
				Event.stop(e);
			}else{
				var element	= Form.getElements("medicare-quiz");
				var results	=	"";
				
				results	=	element.collect(function(ele){
					if(ele.name != "quiz_submit" && $(ele).checked){
						return ele.name	+ "="	+ ele.value;
					}
				}).join("&");
				
				new Ajax.Updater("medicare-quiz-wrapper","medicare-quiz_ajax_handler.php?" + results,{asynchronous:true,evalScripts:true,insertion:Insertion.Bottom,onComplete:this.showResults.bindAsEventListener(this)});
				Event.stop(e);
			}
		},

		validateOnReturnKey: function(e){
			if(e.keyCode == Event.KEY_RETURN){
				this.validateFields(e);
				Event.stop(e);
			}
		},
		
		showResults: function(){
			$("medicare-quiz").hide();
			$("medicare-quiz").reset();
			$("results").focus();
		}
	}

	function restartQuiz(){
		$("medicare-quiz").show();
		$("medicare-quiz").focus();
		$("results-wrapper").remove();
	}
		
	if (!(BrowserDetect.browser == "Explorer" && BrowserDetect.version < 6)) {
		FastInit.addOnLoad(function() {
			var medicare_quiz = new MedicareQuiz();
		});
	}