/* (c) 2008-2010 Agnition Enterprises, Inc. */

Agnition.Zleek.Authentication={};Agnition.Zleek.Authentication.Authenticate=function(){var userName=$("#userName").val();var pwdField=$("#password");var password=pwdField.val();var rememberMe=$("#rememberMe").attr("checked");if(facebookId===undefined){facebookId=null;}
pwdField.val("");$("#errorMessage,.validator").text("");$("#userName,#password").removeClass("invalid");var valid=true;var errorMessage=new StringBuilder();if(!Agnition.Zleek.Validate(userName.length!==0,"User Name or e-mail address is required.","#userName","#userNameValidator",errorMessage)){valid=false;}
if(!Agnition.Zleek.Validate(password.length!==0,"Password is required.","#password","#passwordValidator",errorMessage)){valid=false;}
if(!valid){$("#errorMessage").css("display","block").html(errorMessage.toString());return;}
$("#errorMessage").css("display","none").text("");$("#loadingMessage").css("display","block").text("Authenticating...");var authRequest=new Agnition.Zleek.Authentication.AuthenticationRequest(userName,password,facebookId,rememberMe,Agnition.Zleek.UserServiceAddress);authRequest.Authenticate(function(userData,statusText){var qs="";if(Agnition.FACEBOOK_EMBED===true){if((redirectUrl===null)||(redirectUrl.indexOf('?')===-1)){qs="?facebook=true";}
else{qs="&facebook=true";}}
Agnition.Zleek.Web.UI.SetUserLogin(userData);$("#loadingMessage").css("display","none").text("");$("#successMessage").css("display","block").focus();if(!userData.HasUserProvidedPassword||(redirectUrl===null)||(redirectUrl.length===0)){window.location=(profileUrl.replace(/\|USERNAME\|/,userData.UserName)+qs);}
else{window.location=(redirectUrl+qs);}},function(request,statusText){$("#loadingMessage").css("display","none").text("");if(request.status===401){$("#errorMessage").css("display","block").text("Invalid credentials.");}
else if(request.status===403){var re=/.*\shas\snot\sbeen\svalidated.*/;if(re.test(request.statusText)){$("#errorMessage").css("display","block").html("The specified user account has not yet been validated. "+"Please check your e-mail for your welcome letter and follow the instructions.");}
else{$("#errorMessage").css("display","block").html("Max login attempts exceeded, account has been temporarily locked. Please try again later. "+"If you have forgotten your password, you may <a href=\""+resetPasswordUrl+"\">reset your password <\/a>.");}}
else{Agnition.Zleek.LogError(request.status+": "+request.statusText);$("#errorMessage").css("display","block").text("Error: Unable to perform authentication.");}});};$(document).ready(function(){$("#login").bind("click",Agnition.Zleek.Authentication.Authenticate);if($.browser.msie){$(".text,.checkbox").keydown(Agnition.Zleek.Authentication.HandleKeyPress);}
else{$(".text,.checkbox").keypress(Agnition.Zleek.Authentication.HandleKeyPress);}
if(validationRequired){$("#errorMessage").css("display","block").html("The specified user account has not yet been validated. "+"Please check your e-mail for your welcome letter and follow the instructions.");}});Agnition.Zleek.Authentication.HandleKeyPress=function(e){if(e.keyCode===13){Agnition.Zleek.Authentication.Authenticate();if(e.preventDefault){e.preventDefault();}else{e.returnValue=false;}
return false;}
return true;};Agnition.Zleek.Authentication.AuthenticationRequestData=function(userName,passwordHash,facebookId,rememberMe){this.__class=true;this.UserName=userName;this.PasswordHash=passwordHash;this.FacebookId=facebookId;this.RememberMe=rememberMe;};Agnition.Zleek.Authentication.AuthenticationRequest=function(userName,password,facebookId,rememberMe,serviceAddress){this.__class=true;this.ServiceAddress=serviceAddress;this.RegistrationData=new Agnition.Zleek.Authentication.AuthenticationRequestData(userName,password,facebookId,rememberMe);this.Authenticate=function(successCallback,errorCallback){var authData=this.RegistrationData;var svcAddress=this.ServiceAddress;var userNameIsEmail=function(userName){return Agnition.Zleek.RegularExpressions.EmailAddress.test(userName);};var getLoginInformation=function(successCallback){var loginType="User";if(userNameIsEmail(authData.UserName)){loginType="Email";}
var jsonRequest=new Agnition.Net.WebRequest();var url=svcAddress+"/"+loginType+"/"+escape(authData.UserName)+"/LoginData";jsonRequest.GetJson(url,null,successCallback,errorCallback,null);};var performAuthentication=function(data,statusText){authData.UserName=data.UserName;authData.PasswordHash=SHA256(SHA256(data.UserName.toLowerCase()+"|"+authData.PasswordHash)+"|"+data.LoginSalt);var jsonRequest=new Agnition.Net.WebRequest();var url=svcAddress+"/Authenticate";jsonRequest.PostJson(url,authData,null,successCallback,errorCallback,null);};getLoginInformation(performAuthentication,errorCallback);};};