function Class(D,E){var C=function(){if(C.preparing){return delete (C.preparing)}if(C.constr){this.constructor=C;C.constr.apply(this,arguments)}};C.prototype={};if(D){D.preparing=true;C.prototype=new D;C.prototype.constructor=D;C.constr=D}if(E){var B="constructor";for(var A in E){if(A!=B){C.prototype[A]=E[A]}}if(E[B]&&E[B]!=Object){C.constr=E[B]}}return C}newClass=Class;Utils={request:function(action,parameters,callback,context){var url=new y5.URL("/");url.addParam("action",action);for(var name in parameters){if(parameters[name]!=null){if(parameters[name] instanceof Array){url.addParam(name,parameters[name].join(","))}else{url.addParam(name,parameters[name])}}else{url.addParam(name,"0")}}function onload(request){var data={status:"error",error:500,comment:"Internal Server Error."};try{eval("data = "+request.responseText)}catch(e){alert("Internal server error.");return }if((data.error==401)||(data.error==500)){window.location.hash="#authentication-lost";window.location.reload();return }if(callback){callback.call(context,data)}}var request=new y5.Request.XML(url,{method:"post"});request.onload=onload;request.onexception=function(e){alert(e.message)};request.send()},div:function(C,B,A){alert("div deprecated");var D=document.createElement("div");if(C){D.className=C}if(B){B.appendChild(D)}if(A){D.innerHTML=A}return D},create:function(A){var D=document.createElement(A.tag?A.tag:"div");if(A.name){D.className=A.name}var B=A.content;if(B){if(typeof B=="string"){D.innerHTML=B}else{D.appendChild(B)}}B=A.child;if(B){if(!(B instanceof Array)){B=[B]}for(var C=0;C<B.length;C++){D.appendChild(Utils.create(B[C]))}}B=A.attribute;if(B){for(var C in B){D.setAttribute(C,B[C])}}B=A.event;if(A.event){if(!(B instanceof Array)){B=[B]}for(var C=B.length-1;C>=0;C--){y5.Events.observe(B[C].name,B[C].listener,D,true,B[C].context)}}if(A.link){A.link.hash[A.link.name]=D}return D},hint:{create:function(A){y5.Events.create("focus",this.onFocus,A,true,this);y5.Events.create("blur",this.onBlur,A,true,this);this.update(A)},onFocus:function(C){var B=C.target;var D=B.getAttribute("title");var A=y5.Classes.test(B,"hint");y5.Classes.remove(B,"hint");if(A){B.value=""}},onBlur:function(B){var A=B.target;var C=A.getAttribute("title");y5.Classes.remove(A,"hint");if(A.value==""){y5.Classes.add(A,"hint");setTimeout(function(){A.value=C},1)}},update:function(A){this.onBlur({target:A})},value:function(A){if(y5.Classes.test(A,"hint")){return""}else{return A.value}},reset:function(A){return ;y5.Classes.add(A,"hint");var B=A.getAttribute("title");setTimeout(function(){A.value=B},1)}},counter:function(){var src="http://counter.yadro.ru/hit?r"+escape(document.referrer)+((typeof (screen)=="undefined")?"":";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";"+Math.random();var img=document.createElement("img");img.setAttribute("src",src);with(img.style){position="absolute";left="-1000px";top="-1000px"}document.body.appendChild(img)}};String.prototype.SPLIT=function(){var A=this==""?[]:this.split(",");for(var B=A.length-1;B>=0;B--){A[B]=y5.Strings.normalizeSpace(A[B])}return A};Array.prototype.JOIN=function(){return this.join(", ")};Login=Class(null,{constructor:function(){y5.Events.observe("click",this.switchToSignUp,y5.Dom.$("button-switch-to-join"),true,this);y5.Events.observe("click",this.switchToSignIn,y5.Dom.$("button-switch-to-sign-in"),true,this);y5.Events.observe("click",this.switchToForgot,y5.Dom.$("button-switch-to-forgot"),true,this);y5.Events.observe("click",this.showPassword,y5.Dom.$("button-show-password"),true,this);y5.Events.observe("click",this.showPasswordReset,y5.Dom.$("button-show-password-reset"),true,this);y5.Events.observe("click",this.signin,y5.Dom.$("button-signin"),true,this);y5.Events.observe("click",this.join,y5.Dom.$("button-join"),true,this);y5.Events.observe("click",this.forgot,y5.Dom.$("button-forgot"),true,this);y5.Events.observe("click",this.reset,y5.Dom.$("button-reset"),true,this);var A=document.body.getElementsByTagName("input");for(var B=A.length-1;B>=0;B--){y5.Events.observe("focus",this.onInputFocus,A[B],true,this);y5.Events.observe("blur",this.onInputFocus,A[B],true,this)}y5.Events.observe("keydown",this.onKeyDown,y5.Dom.$("input-signin-mail"),true,this);y5.Events.observe("keydown",this.onKeyDown,y5.Dom.$("input-signin-password"),true,this);y5.Events.observe("keydown",this.onKeyDown,y5.Dom.$("input-join-name"),true,this);y5.Events.observe("keydown",this.onKeyDown,y5.Dom.$("input-join-mail"),true,this);y5.Events.observe("keydown",this.onKeyDown,y5.Dom.$("input-join-password"),true,this);y5.Events.observe("keydown",this.onKeyDown,y5.Dom.$("input-join-password-repeat"),true,this);if((location.hash.indexOf("no-check-browser")==-1)&&(y5.Vars.is_ie)){this.mode("unsupported");this.title("Your browser is not supported");return }else{if((new y5.URL()).getParam("token")!=null){this.switchToReset();return }if(location.hash.indexOf("authentication-lost")!=-1){this.title("Authentication have been lost");this.mode("authentication-lost");return }}this.switchToSignIn()},switchToSignIn:function(){this.mode("sign-in");this.title("Sign In");try{var A=y5.Cookies.get("mail");if(A){y5.Dom.$("input-signin-mail").value=A;y5.Dom.$("input-signin-password").focus()}else{y5.Dom.$("input-signin-mail").focus()}}catch(B){}},signin:function(){var A={mail:y5.Dom.$("input-signin-mail").value,password:y5.Dom.$("input-signin-password").value};if(y5.Dom.$("input-signin-remember").checked){A.remember=1}if(y5.Strings.trim(A.mail)==""||y5.Strings.trim(A.password)==""){return }y5.Cookies.set("mail",A.mail,24*31*6);this.mode("loading");Utils.request("sign-in",A,this.signinResponse,this)},signinResponse:function(A){if(A.status=="ok"){window.location.reload()}else{this.mode("access-denied")}},showPassword:function(B){var A=y5.Dom.getAncestor(B.target,"tr","*");y5.Dom.removeNode(A);y5.Dom.$("input-join-password").setAttribute("type","text")},switchToSignUp:function(){this.mode("sign-up");y5.Dom.$("input-join-mail").focus();this.title("Join")},join:function(){var C={mail:y5.Dom.$("input-join-mail").value,name:y5.Dom.$("input-join-name").value,password:y5.Dom.$("input-join-password").value};try{C.password_repeat=y5.Dom.$("input-join-password-repeat").value}catch(B){C.password_repeat=C.password}if(y5.Dom.$("input-join-remember").checked){C.remember=1}var A=true;if(!this.isValidMail(C.mail)){A=this.showError("input-join-mail")}if(y5.Strings.trim(C.name)==""){A=this.showError("input-join-name")}if(C.password!=C.password_repeat){A=this.showError("input-join-password-repeat")}if(C.password.length<6){A=this.showError("input-join-password")}if(A){this.mode("loading");Utils.request("join",C,this.joinResponse,this)}},joinResponse:function(A){if(A.status=="ok"){window.location.reload()}else{this.mode("sign-up");this.showError("input-join-mail")}},switchToForgot:function(){this.mode("forgot");try{y5.Dom.$("input-forgot-mail").value=y5.Cookies.get("mail")||"";y5.Dom.$("input-forgot-mail").focus()}catch(A){}this.title("Password recovery")},forgot:function(){var A={mail:y5.Dom.$("input-forgot-mail").value};y5.Cookies.set("mail",A.mail,24*31*6);if(!this.isValidMail(A.mail)){this.showError("input-forgot-mail")}else{this.mode("loading");Utils.request("reset-password",A,this.forgotResponse,this)}},forgotResponse:function(A){if(A.status=="ok"){this.mode("mail-send")}else{this.mode("mail-wrong")}},switchToReset:function(){this.title("Reset password");this.mode("reset");y5.Dom.$("input-reset-mail").focus()},reset:function(){var C={password:y5.Dom.$("input-reset-password").value,token:(new y5.URL()).getParam("token")};try{C.password_repeat=y5.Dom.$("input-reset-password-repeat").value}catch(B){C.password_repeat=C.password}if(y5.Dom.$("input-reset-remember").checked){C.remember=1}var A=true;if(C.password!=C.password_repeat){A=this.showError("input-reset-password-repeat")}if(C.password.length<6){A=this.showError("input-reset-password")}delete C.password_repeat;if(A){this.mode("loading");Utils.request("reset-password",C,this.resetResponse,this)}},resetResponse:function(A){if(A.status=="ok"){(new y5.URL()).clearQuery().go()}},showPasswordReset:function(B){var A=y5.Dom.getAncestor(B.target,"tr","*");y5.Dom.removeNode(A);y5.Dom.$("input-reset-password").setAttribute("type","text")},title:function(A){document.title="Somethings → "+A},mode:function(A){document.body.className=A},onKeyDown:function(A){if(A.keyCode==13){switch(document.body.className){case"":case"access-denied":case"mail-wrong":case"mail-send":case"authentication-lost":this.switchToSignIn();break;case"sign-in":this.signin();break;case"join":this.join();break;case"forgot":this.forgot();break;case"reset":this.reset();break}}},isValidMail:function(A){return(/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(A)},onInputFocus:function(B){var A=y5.Dom.getAncestor(B.target,"tr","*");if(A){y5.Classes.remove(A,"invalid")}},showError:function(A){y5.Classes.add(y5.Dom.getAncestor(y5.Dom.$(A),"tr","*"),"invalid");return false}});window.onload=function(){y5.require(["Dom","Request.XML","Events","Cookies","URL"],function(){Utils.counter();login=new Login()})};