if (typeof GUI.form=="undefined"||!GUI.form) {
	GUI.form={};
}

GUI.form.submit = function(e) {
	YAHOO.util.Connect.setForm(e);

	YAHOO.util.Connect.asyncRequest('POST', e.action, {
		success: function(e) {
			response = YAHOO.lang.JSON.parse(e.responseText);
 			
 			var msg = response['msg']['global'];
			if ( msg != null ) {
				YAHOO.util.Dom.setStyle('gui-form-msg', 'opacity', 0);
				YAHOO.util.Dom.setStyle('gui-form-msg', 'display', 'block');
				YAHOO.util.Dom.get('gui-form-msg').innerHTML = msg['content'];
				YAHOO.util.Dom.addClass('gui-form-msg', msg['class']);
				
				var anim = new YAHOO.util.Anim('gui-form-msg', {opacity: {to: 1}}, .5);
				anim.animate()
				anim.onComplete.subscribe(function (e) {
					var anim = new YAHOO.util.Anim('gui-form-msg', {opacity: {to: 1}}, 5);
					anim.animate();
					anim.onComplete.subscribe(function (e) {
						var anim = new YAHOO.util.Anim('gui-form-msg', {opacity: {to: 0}}, .5);
						anim.animate();
						anim.onComplete.subscribe(function (e) {
							YAHOO.util.Dom.setStyle('gui-form-msg', 'display', 'none');
						});
					});
				});
			}
			
			var msg = response['msg']['form'];
			for (k in msg) {
				if (typeof YAHOO.util.Dom.get('gui-form-input-' + k + '-msg')=="undefined"||!YAHOO.util.Dom.get('gui-form-input-' + k + '-msg'))
					continue;
				
				YAHOO.util.Dom.setStyle('gui-form-input-' + k + '-msg', 'opacity', 0);
				YAHOO.util.Dom.addClass('gui-form-input-' + k, 'field-error');
				YAHOO.util.Dom.get('gui-form-input-' + k + '-msg').innerHTML = msg[k]['content'];
				YAHOO.util.Dom.addClass('gui-form-input-' + k + '-msg', msg[k]['class']);
				new YAHOO.util.Anim('gui-form-input-' + k + '-msg', {opacity: {to: 1}}, .5).animate();
				
				YAHOO.util.Event.addListener('gui-form-input-' + k, 'focus', function(e){
					YAHOO.util.Dom.removeClass(this, 'field-error');
					var anim = new YAHOO.util.Anim(this.id + '-msg', {opacity: {to: 0} }, .5);
					anim.animate();
					tmp_val = this.id;
					anim.onComplete.subscribe(function(e) {
						YAHOO.util.Dom.setStyle(tmp_val + '-msg', 'display', 'none');
					});
				});
			}
			return false;
		},
		failure: function(e) {
			return false;
		}
	});
	
	return false;
}