// define the namespace if necessary
if ( Jensen == undefined )
	var Jensen = { };
	
if ( Jensen.ContactUs == undefined )
	Jensen.ContactUs = { };
	
Jensen.ContactUs.FormManager = function() { 
	this.initialize(); 
}

Jensen.ContactUs.initialize = function() { 
	var formManager = new Jensen.ContactUs.FormManager();
}

Jensen.ContactUs.FormManager.prototype = {
	// public properties

	// private properties
	_formValidator : null,
	
	// constructor
	initialize: function() {
		YAHOO.util.Event.addListener("txtFullName", "focus", this.onFullNameFocus, this, true);
		YAHOO.util.Event.addListener("txtFullName", "blur", this.onFullNameBlur, this, true);
		YAHOO.util.Event.addListener("txtPhoneNumber", "focus", this.onPhoneNumberFocus, this, true);
		YAHOO.util.Event.addListener("txtPhoneNumber", "blur", this.onPhoneNumberBlur, this, true);
		YAHOO.util.Event.addListener("txtAddress", "focus", this.onAddressFocus, this, true);
		YAHOO.util.Event.addListener("txtAddress", "blur", this.onAddressBlur, this, true);
		YAHOO.util.Event.addListener("txtCity", "focus", this.onCityFocus, this, true);
		YAHOO.util.Event.addListener("txtCity", "blur", this.onCityBlur, this, true);
		YAHOO.util.Event.addListener("txtState", "focus", this.onStateFocus, this, true);
		YAHOO.util.Event.addListener("txtState", "blur", this.onStateBlur, this, true);
		YAHOO.util.Event.addListener("txtZip", "focus", this.onZipFocus, this, true);
		YAHOO.util.Event.addListener("txtZip", "blur", this.onZipBlur, this, true);
		YAHOO.util.Event.addListener("txtEmail", "focus", this.onEmailFocus, this, true);
		YAHOO.util.Event.addListener("txtEmail", "blur", this.onEmailBlur, this, true);
	
		YAHOO.util.Event.addListener("btnSubmit", "click", this.onSubmitClick, this, true);
		this._formValidator = new Lutz.Validation.FormValidator( Jensen.ContactUs.ValidationParameters );
		this._formValidator.AfterFormValidate.subscribe(this.onFormValidate, this);
	},
	
	onFullNameFocus: function(e, me) {
		var txtFullName = document.getElementById("txtFullName");
		if ( txtFullName.value == "Full Name" )
		{
			txtFullName.value = "";
			YAHOO.util.Dom.removeClass("txtFullName", "textboxPrompt");
		}
	},
	
	onFullNameBlur: function(e, me) {
		var txtFullName = document.getElementById("txtFullName");
		if ( txtFullName.value == "" )
		{
			txtFullName.value = "Full Name";
			YAHOO.util.Dom.addClass("txtFullName", "textboxPrompt"); 
		}
	},
	
	onPhoneNumberFocus: function(e, me) {
		var txtPhoneNumber = document.getElementById("txtPhoneNumber");
		if ( txtPhoneNumber.value == "Phone Number" )
		{
			txtPhoneNumber.value = "";
			YAHOO.util.Dom.removeClass("txtPhoneNumber", "textboxPrompt");
		}
	},
	
	onPhoneNumberBlur: function(e, me) {
		var txtPhoneNumber = document.getElementById("txtPhoneNumber");
		if ( txtPhoneNumber.value == "" )
		{
			txtPhoneNumber.value = "Phone Number";
			YAHOO.util.Dom.addClass("txtPhoneNumber", "textboxPrompt"); 
		}
	},

	onAddressFocus: function(e, me) {
		var txtAddress = document.getElementById("txtAddress");
		if ( txtAddress.value == "Address" )
		{
			txtAddress.value = "";
			YAHOO.util.Dom.removeClass("txtAddress", "textboxPrompt");
		}
	},
	
	onAddressBlur: function(e, me) {
		var txtAddress = document.getElementById("txtAddress");
		if ( txtAddress.value == "" )
		{
			txtAddress.value = "Address";
			YAHOO.util.Dom.addClass("txtAddress", "textboxPrompt"); 
		}
	},

	onCityFocus: function(e, me) {
		var txtCity = document.getElementById("txtCity");
		if ( txtCity.value == "City" )
		{
			txtCity.value = "";
			YAHOO.util.Dom.removeClass("txtCity", "textboxPrompt");
		}
	},
	
	onCityBlur: function(e, me) {
		var txtCity = document.getElementById("txtCity");
		if ( txtCity.value == "" )
		{
			txtCity.value = "City";
			YAHOO.util.Dom.addClass("txtCity", "textboxPrompt"); 
		}
	},
	
	onStateFocus: function(e, me) {
		var txtState = document.getElementById("txtState");
		if ( txtState.value == "ST" )
		{
			txtState.value = "";
			YAHOO.util.Dom.removeClass("txtState", "textboxPrompt");
		}
	},
	
	onStateBlur: function(e, me) {
		var txtState = document.getElementById("txtState");
		if ( txtState.value == "" )
		{
			txtState.value = "ST";
			YAHOO.util.Dom.addClass("txtState", "textboxPrompt"); 
		}
	},

	onZipFocus: function(e, me) {
		var txtZip = document.getElementById("txtZip");
		if ( txtZip.value == "Zip" )
		{
			txtZip.value = "";
			YAHOO.util.Dom.removeClass("txtZip", "textboxPrompt");
		}
	},
	
	onZipBlur: function(e, me) {
		var txtZip = document.getElementById("txtZip");
		if ( txtZip.value == "" )
		{
			txtZip.value = "Zip";
			YAHOO.util.Dom.addClass("txtZip", "textboxPrompt"); 
		}
	},
	
	onEmailFocus: function(e, me) {
		var txtEmail = document.getElementById("txtEmail");
		if ( txtEmail.value == "Email" )
		{
			txtEmail.value = "";
			YAHOO.util.Dom.removeClass("txtEmail", "textboxPrompt");
		}
	},
	
	onEmailBlur: function(e, me) {
		var txtEmail = document.getElementById("txtEmail");
		if ( txtEmail.value == "" )
		{
			txtEmail.value = "Email";
			YAHOO.util.Dom.addClass("txtEmail", "textboxPrompt"); 
		}
	},
	
	showWaitPanel: function() {
		YAHOO.util.Dom.setStyle("pnlSubmitWait", "display", "block"); 
		YAHOO.util.Dom.setStyle("pnlSubmitFailure", "display", "none"); 
		var btnSubmit = document.getElementById("btnSubmit");
		btnSubmit.disabled = true;
	},
	
	showFailurePanel: function() {
		YAHOO.util.Dom.setStyle("pnlSubmitWait", "display", "none"); 
		YAHOO.util.Dom.setStyle("pnlSubmitFailure", "display", "block"); 
		var btnSubmit = document.getElementById("btnSubmit");
		btnSubmit.disabled = false;
	},
	
	onSubmitClick: function(e, me) {
		YAHOO.util.Event.preventDefault(e);
	},
	
	onFormValidate: function(type, args, me) {
	
		if ( !me._formValidator.IsValid )
		{
			window.location.hash = "errors";
			return;
		}
		
		// the form is valid, so submit it
		me.doSubmitData();
	},
	
	doSubmitData: function() {
	
		var formData = new Jensen.ContactUs.FormData();
		var jsonData = JSONstring.make(formData);

		var callback =
		{
			success: this.onSubmitSuccess,
			failure: this.onSubmitFailure,
			argument: this
		};
		
		var btnSubmit = document.getElementById("btnSubmit");
		btnSubmit.disabled = true;
		
		
		this.showWaitPanel();
		
		var postData = "formData=" + escape(jsonData);
		var request = YAHOO.util.Connect.asyncRequest('POST', 'JensenWebService/ContactUs.ashx', callback, postData);
	},
	
	onSubmitSuccess: function(o) {
		var me = o.argument;
		
		if( o.responseText !== undefined )
		{
			if ( o.responseText == "Success." )
			{
				window.location = "contact_success.asp";
				return;
			}
			else
				alert( "Your submission was not received. The following error occured:\n\n" + o.responseText );
		}
		else
		{
			alert("Your submission was not received. An unknown error occured.");
		}
		me.showFailurePanel();
	},
	
	onSubmitFailure: function(o) {
		var me = o.argument;
		me.showFailurePanel();
	}
	
};


function initalizeFormManager()
{
	var formManager = new Jensen.ContactUs.FormManager();
}

YAHOO.util.Event.onDOMReady( initalizeFormManager ); 
