// define the namespace if necessary
if ( IDF == undefined )
	var IDF = { };
	
if ( IDF.NewsletterSignup == undefined )
	IDF.NewsletterSignup = { };
	
IDF.NewsletterSignup.FormManager = function() { 
	this.initialize(); 
}

IDF.NewsletterSignup.initialize = function() { 
	var formManager = new IDF.NewsletterSignup.FormManager();
}

IDF.NewsletterSignup.FormManager.prototype = {
	// public properties

	// private properties
	_formValidator : null,
	
	// constructor
	initialize: function() {
		YAHOO.util.Event.addListener("btnSubmit", "click", this.onSubmitClick, this, true);
		this._formValidator = new Lutz.Validation.FormValidator( IDF.NewsletterSignup.ValidationParameters );
		this._formValidator.AfterFormValidate.subscribe(this.onFormValidate, this);
	},
	
	showWaitPanel: function() {
		YAHOO.util.Dom.setStyle("pnlSubmitWait", "display", "block"); 
		YAHOO.util.Dom.setStyle("pnlSubmitFailure", "display", "none"); 
		YAHOO.util.Dom.setStyle("pnlSubmitSuccess", "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"); 
		YAHOO.util.Dom.setStyle("pnlSubmitSuccess", "display", "none"); 
		var btnSubmit = document.getElementById("btnSubmit");
		btnSubmit.disabled = false;
	},
	
	showSuccessPanel: function() {
		YAHOO.util.Dom.setStyle("pnlSubmitWait", "display", "none"); 
		YAHOO.util.Dom.setStyle("pnlSubmitFailure", "display", "none"); 
		YAHOO.util.Dom.setStyle("pnlSubmitSuccess", "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 callback =
		{
			success: this.onSubmitSuccess,
			failure: this.onSubmitFailure,
			argument: this
		};
		
		var btnSubmit = document.getElementById("btnSubmit");
		btnSubmit.disabled = true;
		
		this.showWaitPanel();
		
		var txtEmail = document.getElementById("txtEmail");
		
		var postData = "formData=" + escape(txtEmail.value);
		var request = YAHOO.util.Connect.asyncRequest('POST', 'IdfWebService/NewsletterSignup.ashx', callback, postData);
	},
	
	onSubmitSuccess: function(o) {
		var me = o.argument;
		
		if( o.responseText !== undefined )
		{
			if ( o.responseText == "Success." )
			{
				me.showSuccessPanel();
				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 IDF.NewsletterSignup.FormManager();
}

YAHOO.util.Event.onDOMReady( initalizeFormManager ); 
