var BaseLoginForm=new Class({Extends:Form,initialize:function(){this.element={email:new Field("login-email",this.dialog),password:new Field("login-password",this.dialog)}
this._addErrors();this._initBlurValidation();this.button={login:this.dialog.getElement("#login-button")};this._initMessages();},_initMessages:function(){this.message={error:$("login-error-message")};this.message.error.hide();},_addErrors:function(){this.field("email").addError("CRuleNotEmpty").addRule(new CRuleNotEmpty(this.field("email").dom.input.get("id")));this.field("email").addError("CRuleEmail").addRule(new CRuleEmail(this.field("email").dom.input.get("id")));this.field("password").addError("CRuleNotEmpty").addRule(new CRuleNotEmpty(this.field("password").dom.input.get("id")));},_initBlurValidation:function(){var self=this;this.field("email").dom.input.addEvent("blur",function(){self.field("email").validate();});this.field("password").dom.input.addEvent("blur",function(){self.field("password").validate();});}});var LoginForm=new Class({Extends:BaseLoginForm,initialize:function(){this.dialog=$("login-form");this.parent();this.active_tab=new Field("active_tab",this.dialog);this.work_id=new Field("work_id",this.dialog);this.formHTML=this.dialog.getElement("#login-html-form");var self=this;this.button.login.addEvent("click",function(){if(self.validate()==true){self.formHTML.submit();}});},setError:function(email){this.message.error.show();this.field("email").value(email);}});var InlineLoginForm=new Class({Extends:BaseLoginForm,initialize:function(dialog){this.dialog=dialog;this.dialog.show();this.parent();var self=this;this.button.login.addEvent("click",function(){if(self.validate()==true){self.onLogin();}});this.response=null;this.events=[];},onLogin:function(){var data=this.storeToHash();var self=this;$URL.ModUser.onAjaxLogin({data:data,onComplete:function(response){self.onLogin_cb(response);}}).send();},onLogin_cb:function(json){return json.status=="OK"?this._statusOk(json):this._statusError(json);},_statusOk:function(json){this.response=json;this.events.each(function(e){e();});$getInstance($Application).location(json.redirect);},_statusError:function(json){this.field("password").value("");if(json.error.class_name==$E.ExObjectNotFound){return this.message.error.show();}
this.showErrors(json);},addEvent:function(fn){this.events.push(fn);}});var HeaderLoginForm=new Class({Extends:InlineLoginForm,initialize:function(dialog){this.dialog=dialog;this.element={email:new Field("header-login-email",this.dialog),password:new Field("header-login-password",this.dialog)}
this._addErrors();this._initBlurValidation();this.button={login:$("header-login-button")};var self=this;this.button.login.addEvent("click",function(){if(self.validate()==true){self.onLogin();}});this.message={error:$("header-login-error")};this.message.error.hide();this.events=[];}});var HeaderLoginInterface=new Class({initialize:function(redirect){this.login_dialog=$("header-login-form");var b=$("header-show-login-box");var self=this;b.addEvent("click",function(){self._toggleLoginBox();return false;});var form=new HeaderLoginForm(this.login_dialog);form.addEvent(function(){$getInstance($Application).location(redirect);});},_toggleLoginBox:function(){var state=this.login_dialog.getStyle("display")=="none"?"block":"none";this.login_dialog.setStyle("display",state);}});