﻿
var specialKeyCodes = [8, 9, 46, 33, 34, 35, 36, 37, 38, 39, 40];

Array.prototype.contains = function(elem) {
    for (i in this) {
        if (this[i] === elem) {
            return true;
        }
    }
    return false;
}


/*applicable on onkeypress event*/
function CheckUsernameAllowedChar(event) {
    var charCode = (event.which) ? event.which : event.keyCode;
    var keyChar = String.fromCharCode(charCode);

    var regExp = /[a-zA-Z0-9!^*\(\)_+\[\]{}:|\.?~=\-\s]/
   
    return regExp.test(keyChar) || specialKeyCodes.contains(charCode);
}


/*applicable on onkeypress event*/
function CheckNicknameAllowedChar(event) {
    var charCode = (event.which) ? event.which : event.keyCode;
    var keyChar = String.fromCharCode(charCode);
    //regex taken from PGP.Credential
    var regExp = /^[a-zA-Z0-9\s]*$/

    return regExp.test(keyChar) || charCode == 8 || charCode == 9;
}


/*applicable on onkeypress event*/
function CheckEmailAllowedChar(event) {
    var charCode = (event.which) ? event.which : event.keyCode;
    var keyChar = String.fromCharCode(charCode);

    var regExp = /[a-zA-Z0-9_\.\-@]/

    return regExp.test(keyChar) || specialKeyCodes.contains(charCode);
}


function GetCursorLocation(CurrentTextBox) {
    var CurrentSelection, FullRange, SelectedRange, LocationIndex = -1;
    
    if (typeof CurrentTextBox.selectionStart == "number") {
        LocationIndex = CurrentTextBox.selectionStart;
    } else if (document.selection && CurrentTextBox.createTextRange) {
        CurrentSelection = document.selection;
        if (CurrentSelection) {
            SelectedRange = CurrentSelection.createRange();
            FullRange = CurrentTextBox.createTextRange();
            FullRange.setEndPoint("EndToStart", SelectedRange);
            LocationIndex = FullRange.text.length;
        }
    }
    
    return LocationIndex;
}
