var CancelValidation = false;

function CalcXor(a, b)
{
    var Result = "";
    if(a.length == b.length)
    {
        for(var i=0; i<a.length; i++)
        {
            Result += (parseInt(a.charAt(i), 16) ^ parseInt(b.charAt(i), 16)).toString(16);
        }
        return Result;
    }
    else
    {
        return "";
    }
}

/* Register - New Password Creation */
function RegisterPassword(HashString, Password1SubmitField, Password1EntryField1, Password1EntryField2)
{
	// Handles case when password changed and entered twice
    var Password1Entry1Obj = document.getElementById(Password1EntryField1);
    var Password1Entry2Obj = document.getElementById(Password1EntryField2);
    var Password1SubmitObj = document.getElementById(Password1SubmitField);
    
    if(Password1Entry1Obj != null && Password1SubmitObj != null && Password1Entry1Obj.value != "")
    {
        if(Password1Entry2Obj != null && Password1Entry2Obj.value != Password1Entry1Obj.value)
        {
            alert("Please ensure that your new password is entered correctly twice.");
            return false;
        }
        
        if(CheckPassword(Password1Entry1Obj.value, null))
        {
            Password1SubmitObj.value = hex_sha1(HashString+Password1Entry1Obj.value);
		    Password1Entry1Obj.disabled = true;
    		
		    if(Password1Entry2Obj != null) Password1Entry2Obj.disabled = true;

            return true;
        }
        
        return false;
    }
    
    alert("Please enter your password.");

	return false;
}

/* Change Password */
function ChangePassword(HashString, Password1SubmitField, Password1EntryField1, Password1EntryField2, Password2SubmitField, Password2EntryField)
{
	// Handles case when password changed and entered twice
    var Password1Entry1Obj = document.getElementById(Password1EntryField1);
    var Password1Entry2Obj = document.getElementById(Password1EntryField2);
    var Password1SubmitObj = document.getElementById(Password1SubmitField);
    var Password2EntryObj = document.getElementById(Password2EntryField);
    var Password2SubmitObj = document.getElementById(Password2SubmitField);
    
    if(Password1Entry1Obj != null && Password1SubmitObj != null && Password1Entry1Obj.value != "")
    {
        if(Password1Entry2Obj != null && Password1Entry2Obj.value != Password1Entry1Obj.value)
        {
            alert("Please ensure that your new password is entered correctly twice.");
            return false;
        }

		if(Password2EntryObj != null && Password2EntryObj.value == "") return false; // Test this before disabling any fields.

        if(CheckPassword(Password1Entry1Obj.value, Password2EntryObj.value))
        {
            Password1SubmitObj.value = hex_sha1(HashString+Password1Entry1Obj.value);
		    Password1Entry1Obj.disabled = true;
    		
		    if(Password1Entry2Obj != null) Password1Entry2Obj.disabled = true;

		    if(Password2EntryObj != null && Password2EntryObj.value != "")
            {
                Password2SubmitObj.value = hex_sha1(HashString+Password2EntryObj.value);
                Password2EntryObj.disabled = true;
                return true;
		    }

            return true;
        }
        
        return false;
    }
    
    alert("Please enter your password.");

	return false;
}

/* Login */
function LoginPassword(HashString, Password1SubmitField, Password1EntryField1, Username)
{
    var Password1Entry1Obj = document.getElementById(Password1EntryField1);
    var Password1SubmitObj = document.getElementById(Password1SubmitField);
    var UsernameObj = document.getElementById(Username);
    
    if (UsernameObj == null || UsernameObj.value.length == 0)
    {
        alert("Please enter your username");
        return false
    }
    
    if(Password1Entry1Obj != null && Password1SubmitObj != null && Password1Entry1Obj.value != "")
    {
        Password1SubmitObj.value = hex_sha1(HashString+Password1Entry1Obj.value);
		Password1Entry1Obj.disabled = true;
		
        return true;
    }
    else
    {
        alert("Please enter your password.");
    }
	return false;
}

function CheckPassword(Password, OldPassword)
{
    var RestrictedString = "password";
    
    if(Password.length > 5)
    {
        if(OldPassword == null || Password != OldPassword)
        {
            if(RestrictedString.indexOf(Password.toLowerCase()) == -1)
            {
                return true;
            }
            else
            {
                alert("That value isn't allowed. Please re-enter")
            }
        }
        else
        {
            alert("Password hasn't been changed. Please re-enter")
        }
    }
    else
    {
        alert("Password isn't long enough")
    }

    return false;
}
