isBusyLoggingInOrOut=false;login=function(b,a,c){ASSERT(!isBusyLoggingInOrOut);isBusyLoggingInOrOut=true;new Ajax.Request(Application.host+"/user/login",{method:"post",parameters:{email:b.toLowerCase(),pwhash:User.hashPassword(a),dry_run:true},onSuccess:function(e){var d=Application.host+"/user/login_and_redirect";d+="?email="+escape(b.toLowerCase());d+="&pwhash="+escape(User.hashPassword(a));d+="&redirect="+escape(window.location.href);Database.save();Application.navigateTo(d)},onFailure:function(e){isBusyLoggingInOrOut=false;var d=e.responseJSON;if(d&&d.error){c(d.error)}else{c("Network Error")}}})};logout=function(){isBusyLoggingInOrOut=true;new Ajax.Request(Application.host+"/user/logout",{method:"post",parameters:{dummy:"hello"},onSuccess:function(a){isBusyLoggingInOrOut=false;CookieDb.readDb();User.switchUser(a.responseJSON);Application.navigateTo(Application.host+"/")},onFailure:function(a){isBusyLoggingInOrOut=false}})};var isBusyRequestingPasswordReset=false;sendPasswordResetRequest=function(a,c,b){isBusyRequestingPasswordReset=true;new Ajax.Request("/user/send_password_reset",{method:"post",parameters:{email:a},onSuccess:function(d){isBusyRequestingPasswordReset=false;if(c){c()}},onFailure:function(e){isBusyRequestingPasswordReset=false;var d="Network Error";if(e.responseJSON){d=e.responseJSON.error}if(b){b(d)}}})};