function ContactUsForm(obj) {
	//Common.tracer(obj);

	/*
	Class: ContactUsForm
	Controller class for the home screen view. Handles user interaction and scrolling.
			 
	Package: Controllers
	*/
	
	// ------------------------------------------------------------------------------------------
	// DEFINE PROPERTIES
	// ------------------------------------------------------------------------------------------
	this._dropDownCls;
	
	// ------------------------------------------------------------------------------------------
	// INTIALIZATION
	// ------------------------------------------------------------------------------------------
	
	/*
	Function: init
	Calls primary initialization methods.
	*/
	this.init = function(obj) {
		Common.tracer("ContactUsForm.init");
		this.setupListeners(obj);
		this.setupProps(obj);
		this.generate(obj);
	};
	
	/*
	Function: setupProps
	Assigns all primary properties. 
	*/
	this.setupProps = function(obj) {
		//Common.tracer("ContactUsForm.setupProps");
	
	};
	
	/*
	Function: setupListeners
	Assigns all primary listeners. 
	*/
	this.setupListeners = function(obj) {
		Common.tracer("ContactUsForm.setupListeners");
		Common.addEventListener({_idStr: "ContactUs_submit", _eventObj: {_context: this, _fn: this.submit} } ); //_weakBln: false
		Common.addEventListener({_idStr: "click", _targetStr: ".ev_resetContactUs", _eventObj: {_context: this, _fn: this.reset} } ); //_weakBln: false
	};
	
	/*
	Function: removeListeners
	Assigns all primary listeners to be removed by destroy. 
	*/
	this.removeListeners = function() {
		//Common.tracer("ContactUsForm.REMOVE LISTENERS");
		//Common.removeEventListener({_idStr: "change", _targetStr: '.ev_winnower_criteriaType_'+this._idStr } ); //_weakBln: false
	};
	
	// ------------------------------------------------------------------------------------------
	// GENERATION
	// ------------------------------------------------------------------------------------------
	
	/*
	Function: generate
	Calls all primary generation methods.
	*/
	this.generate = function(obj) {
		//Common.tracer("ContactUsForm.generate");

		Common.generateInputPrompts();
		
		this._dropDownCls = new DropDown({_idStr: "subjectDropDown"});
		this.setupValidation();
	};
	

	/*
	Function: setupValidation
	Sets up validation for the business form elements.  Will intercept form when user attempts to submit and display errors.
	*/
	this.setupValidation = function(obj) {
		Common.tracer("ContactUs.setupValidation");

		//hides the default messages
		$.validator.messages.required = "";
		$.validator.messages.email = "";
		
		var self = this;
		
		$("#contact-us-form").validate({
			onfocusout: false,
			ignoreTitle: true,
			submitHandler: function(successObj) {
				
				
				Common.dispatchDynamicEvent({_idStr: "ContactUs_submit"});
				return false;		
			}, 
			
			showErrors: function(errorMap, errorList) {
								
				
				self._dropDownCls.validate();
				
				//default error showing
			    this.defaultShowErrors();
			    
			    if(this.numberOfInvalids() > 0 ) {
			    
				    //any custom messaging/events go here goes here
			    	
			    }
			}
		});
				
		
	};	
	
	this.submit = function(obj) {
		Common.tracer("ContactUsForm.submit");
		var dataObj = Common.serializeObject({_idStr:"#contact-us-form"});
		
		Common.tracer(dataObj);
		
		dataObj.secretkey = "clikbrixrox";
		var self = this;
		
		var ajaxObj = {
			url: "helpers/mailer.php",
			type: "POST",
			context: this,
			data: dataObj,
			success: self.reset,
			error: self.reset
		}
		Common.tracer(ajaxObj);
		 $.ajax(ajaxObj);
	}
	
	
	
	this.reset = function(obj) {
		Common.tracer(obj);
		this._dropDownCls.index(0);
		$("#contactUs_name").val("");
		$("#contactUs_email").val("");
		$("#contactUs_message").val("");
		
		Common.generateInputPrompts();
		
	}
	
	// ------------------------------------------------------------------------------------------
	// EVENT METHODS
	// ------------------------------------------------------------------------------------------
	

	
	// ------------------------------------------------------------------------------------------
	// CALL TO CONSTRUCTOR - MUST BE AT THE END
	// ------------------------------------------------------------------------------------------
	this.init();
}


