
var cEmailForm = Class.create({
	
	initialize: function( uBase, argv ) {
		if( Object.isString(uBase) ) {
			this.oMyBaseElement = $(uBase);
		}
		else {
			this.oMyBaseElement = uBase;
		}
	}

	, init: function() {
		var oButton = this.oMyBaseElement.down(".ef_ext_send");
		
		if( !Object.isUndefined(oButton) ) {
			Event.stopObserving(oButton, "click");
			Event.observe(oButton, "click", ejsf_globalEventHandler.bindAsEventListener(this));
		}
	}

	, handleEvent: function( oEvent ) {
		var oSource = Event.element(oEvent);
		
		if( oSource.hasClassName("ef_ext_send") ) {
			var aRequest = new Array();
			
			aRequest["action"] = "RENDER_COMPONENT";
			aRequest["component"] = "cEmailForm";
			
			var aFields = this.oMyBaseElement.select("input");
			for(var i = 0; i < aFields.length; i++) {
				var sName = aFields[i].readAttribute("name");
				if( sName.startsWith("ef_") && !sName.startsWith("ef_ext_") ) {
					if( aFields[i].readAttribute("type") != "checkbox" && aFields[i].readAttribute("type") != "radio" ) {
						aRequest[sName] = aFields[i].getValue();
					}
					else if( aFields[i].getValue() != null ) {
						aRequest[sName] = aFields[i].getValue();
					}
				}
			}
			
			var aFields = this.oMyBaseElement.select("textarea");
			for(var i = 0; i < aFields.length; i++) {
				var sName = aFields[i].readAttribute("name");
				if( sName.startsWith("ef_") && !sName.startsWith("ef_ext_") ) {
					aRequest[sName] = aFields[i].getValue();
				}
			}
			
			var oRequest = this.sendSynchronousRequest(aRequest);
			var oResponse = oRequest.sMyResponseText.evalJSON();
			for(var i = 0; !Object.isUndefined(oResponse[i]); i++) {
				if( oResponse[i].className == "capcha" ) {
					var oCapcha = this.oMyBaseElement.down(".capcha");
					if( !Object.isUndefined(oCapcha) ) {
						oCapcha.update(oResponse[i].value);
					}
					continue;
				}
				if( oResponse[i].show == 1 ) {
					this.oMyBaseElement.down("." + oResponse[i].className).show();
				}
				else {
					this.oMyBaseElement.down("." + oResponse[i].className).hide();
				}
			}
		}
		
	}
	
	, sendSynchronousRequest: function( aParameters ) {
		return new Ajax.Request("/ajax_helper.php"
			+ "?" + SESSION_PARAM + "=" + SESSION_ID
			+ "&ts=" + (new Date()).getTime()
			, {
			  method: "post"
			, parameters: aParameters
			, asynchronous: false
			, onSuccess: function( oResponse ) {
				oResponse.request.oMyResponse = oResponse;
    			oResponse.request.sMyResponseText = oResponse.responseText;
			  }
			});
	}

});

