var kCapitalLetter=0;var kSmallLetter=1;var kDigit=2;var kPunctuation=3;function CharacterSetChecks(type,fResult){this.type=type;this.fResult=fResult;}
function isctype(character,type){var fResult=false;switch(type){case kCapitalLetter:if((character>='A')&&(character<='Z')){fResult=true;}
break;case kSmallLetter:if((character>='a')&&(character<='z')){fResult=true;}
break;case kDigit:if((character>='0')&&(character<='9')){fResult=true;}
break;case kPunctuation:if("><.,/?\'@#:;\"!$%^&*()=+-_".indexOf(character)>=0){fResult=true;}
break;default:break;}
return fResult;}
function IsLongEnough(strWord,nAtLeastThisLong){if((strWord==null)||isNaN(nAtLeastThisLong)){return false;}
else if(strWord.length<nAtLeastThisLong){return false;}
return true;}
function SpansEnoughCharacterSets(strWord,nAtLeastThisMany){var nCharSets=0;var characterSetChecks=new Array(new CharacterSetChecks(kCapitalLetter,false),new CharacterSetChecks(kSmallLetter,false),new CharacterSetChecks(kDigit,false),new CharacterSetChecks(kPunctuation,false));if((strWord==null)||isNaN(nAtLeastThisMany)){return false;}
for(var index=0;index<strWord.length;index++){for(var nCharSet=0;nCharSet<characterSetChecks.length;nCharSet++){if(!characterSetChecks[nCharSet].fResult&&isctype(strWord.charAt(index),characterSetChecks[nCharSet].type)){characterSetChecks[nCharSet].fResult=true;break;}}}
for(var nCharSet=0;nCharSet<characterSetChecks.length;nCharSet++){if(characterSetChecks[nCharSet].fResult){nCharSets++;}}
if(nCharSets<nAtLeastThisMany){return false;}
return true;}
function IsPasswordVeryStrong(strWord){return((IsLongEnough(strWord,"10")&&SpansEnoughCharacterSets(strWord,"3"))||(IsLongEnough(strWord,"13")&&SpansEnoughCharacterSets(strWord,"2"))||(IsLongEnough(strWord,"16")&&SpansEnoughCharacterSets(strWord,"1")));}
function IsPasswordStrong(strWord){return((IsLongEnough(strWord,"8")&&SpansEnoughCharacterSets(strWord,"2"))||(IsLongEnough(strWord,"12")&&SpansEnoughCharacterSets(strWord,"1")));}
function IsPasswordMedium(strWord){return((IsLongEnough(strWord,"5")&&SpansEnoughCharacterSets(strWord,"2"))||(IsLongEnough(strWord,"7")&&SpansEnoughCharacterSets(strWord,"1")));}
function IsPasswordWeak(strWord){return(IsLongEnough(strWord,"1")||!(IsLongEnough(strWord,"0")));}
function EvalPwdStrength(strWord){if(IsPasswordVeryStrong(strWord)){DispPwdStrength(4);}
else if(IsPasswordStrong(strWord)){DispPwdStrength(3);}
else if(IsPasswordMedium(strWord)){DispPwdStrength(2);}
else if(IsPasswordWeak(strWord)){DispPwdStrength(1);}
else{DispPwdStrength(0);}}
function ProcessRegistration(form){if(form.register_text_user.value==""){alert("Du måste fylla i ett visningsnamn!");form.register_text_user.focus();}
else if(form.register_text_pw.value==""){alert("Du måste fylla i ett lösenord!");form.register_text_pw.focus();}
else if(form.register_text_pw.value!=form.register_text_pw_repeat.value){alert("Lösenorden skiljer sig åt!");form.register_text_pw.focus();}
else if(form.register_text_email.value==""){alert("Du måste fylla i en e-postadress!");form.register_text_email.focus();}
else if(!IsPasswordStrong(form.register_text_pw.value)){alert("Ditt lösenord är inte tillräckligt säkert. Pröva med ett längre lösenord eller blanda små och stora bokstäver.");form.register_text_pw.focus();}else{md5hash(form.register_text_pw,form.register_hidden_md5pw);md5hash(form.register_text_pw_repeat,form.register_hidden_md5pw_repeat);return true;}
return false;}
function ProcessAccountSettings(pwold,pwmd5_old,pw,pwmd5,pw_rep,pwmd5_rep){if(pwold.value=="")
{alert("Du måste fylla i ditt nuvarande lösenord!");pwold.focus();}
else if(pw.value=="")
return true;else if(pw.value!=pw_rep.value)
{alert("Lösenorden skiljer sig åt!");pw.focus();}
else if(!IsPasswordStrong(pw.value))
{alert("Ditt lösenord är inte tillräckligt säkert. Pröva med ett längre lösenord eller blanda små och stora bokstäver.");pw.focus();}
else{md5hash(pwold,pwmd5_old);md5hash(pw,pwmd5);md5hash(pw_rep,pwmd5_rep);return true;}
return false;}
function ProcessAccountDeletion(pw,pwmd5){if(pw.value=="")
{alert("Du måste fylla i ditt nuvarande lösenord!");pw.focus();return false;}
else
{md5hash(pw,pwmd5);return true;}}
function ProcessPWRecovery(pw,pwmd5,pw_rep,pwmd5_rep){if(pw.value=="")
alert("Du måste fylla i ett lösenord!");else if(pw.value!=pw_rep.value)
alert("Lösenorden skiljer sig åt!");else if(!IsPasswordStrong(pw.value))
alert("Ditt lösenord är inte tillräckligt säkert. Pröva med ett längre lösenord eller blanda små och stora bokstäver.");else{md5hash(pw,pwmd5);md5hash(pw_rep,pwmd5_rep);return true;}
pw.focus();return false;}
function DispPwdStrength(nStrength){var txtClass1,txtClass2,txtClass3,txtClass4,txtDescr;switch(nStrength)
{case 1:txtDescr="För svagt";txtClass1="red";txtClass2="gray";txtClass3="gray";txtClass4="gray";break;case 2:txtDescr="Något bättre";txtClass1="red";txtClass2="red";txtClass3="gray";txtClass4="gray";break;case 3:txtDescr="Godkänt";txtClass1="yellow";txtClass2="yellow";txtClass3="yellow";txtClass4="gray";break;case 4:txtDescr="Starkt";txtClass1="green";txtClass2="green";txtClass3="green";txtClass4="green";break;default:txtDescr="";txtClass1="gray";txtClass2="gray";txtClass3="gray";txtClass4="gray";break;}
$("span#strengthtext").text(txtDescr);$("li#strength1").attr("class",txtClass1);$("li#strength2").attr("class",txtClass2);$("li#strength3").attr("class",txtClass3);$("li#strength4").attr("class",txtClass4);}