function PasswordRecoveryFormController(settings,rpcClientObject)
{
  this._construct(settings,rpcClientObject);
}
(function(){
  var _this= null;
  
  PasswordRecoveryFormController.prototype={
  	form: null,
  	formContainer: null,
    
    data: {
      email: ''
    },
  	
  	emailValidator: null,
    
    eventListeners: {},
    rpcClientObject: null,
    
    Events: {
      onPasswordRecovery: 'onPasswordRecovery'
    },

    addEventListener: function(customEvent,listener)
    {
      if (typeof(_this.eventListeners[customEvent])=='undefined')
        _this.eventListeners[customEvent]=[];
        
      _this.eventListeners[customEvent].push(listener);
      return false;
    },
    
    notifyListeners: function(evt,customEvent,customData)
    {
    	if (typeof(_this.eventListeners)=='undefined' || typeof(_this.eventListeners[customEvent])=='undefined')
    		return;
    	var i=0;
    	for (i=0;i<_this.eventListeners[customEvent].length;i++)
    	{
    		_this.eventListeners[customEvent][i](evt,customData);
    	}
    },
    
  	_construct: function(settings,rpcClientObject)
  	{
  	  _this=this;
  	  _this.rpcClientObject=rpcClientObject;
  	
  		if (typeof(settings)!='undefined')
  		{
  		  if (typeof(settings.formName)!='undefined') _this.form=document.forms[settings.formName];
  		  if (typeof(settings.formContainerId)!='undefined') _this.formContainer=document.getElementById(settings.formContainerId);
  		  
  		  if (typeof(settings.passwordRecoveryBtnId)!='undefined') Spry.Utils.addEventListener(settings.passwordRecoveryBtnId,'click',_this.onPasswordRecovery);
  		  if (typeof(settings.passwordRecoveryFieldId)!='undefined') _this.emailValidator=new Spry.Widget.ValidationTextField(settings.passwordRecoveryFieldId, "none", {maxChars:40, validateOn:["blur"]});
  		}
  		
  		if (!_this.form) throw "Password recovery form object not found.";
  	},
  	
  	resetControls: function()
  	{

  	},
    
    prepareData: function()
    {
      var error=false
    
      if (_this.emailValidator.validate()) _this.data.email=_this.form.lf_email.value; else error|=true;
      
      if (error) return false;
      
      _this.data.onSuccess=_this.form.action;
      
      return true;
    },
  	
	  onPasswordRecovery: function(evt)
	  {
	      if (_this.prepareData())
	      {
            _this.form.email.disabled = true;
            
	        _this.rpcClientObject.setData(_this.data,_this.onDataReady);
	        _this.rpcClientObject.call('controllers_passwordRecovery.passwordRecovery',5);
	        _this.notifyListeners(evt,_this.onLogin,_this);
	      }
            
	  	evt.preventDefault();
	  },
	  
    onDataReady: function(response)
    {
        _this.form.email.disabled = false;
        
      if (response.error)
      {
        alert(response.error);
//        alert('Неверный логин пользователя!');
        return;
      }
      
      if (response.result.errors)
      {
        if (response.result.errors.eBadLogin)
          _this.emailValidator.addClassName(_this.emailValidator.element,'textfieldInvalidFormatState');
      	if (response.result.errors.eNotActive)
          alert('Пользователь не активен');
      } else {
            alert('Новый пароль выслан на емейл пользователя!');
            document.location.href = "http://www.galileo.com.ua/m1/ru/vacancy/welcome";
         }
    }
  }
})();
