﻿var valid = true;
function Validete(arrBoxes, bButton, type) {
    valid = true;
    if (arrBoxes.length != 0) {
        for (var i = 0; i < arrBoxes.length; i++) {
            var ctrl = document.getElementById(arrBoxes[i].ID);
            if (ctrl != undefined) {
                if (arrBoxes[i].Function == "empty") {
                    if (ctrl.value.length > 0)
                        ShowValidIcon(ctrl);
                    else {
                        ShowErrorIcon(ctrl);
                        valid = false;
                    }
                }

                if (arrBoxes[i].Function == "twoEmpty") {
                    var ctrl2 = document.getElementById(arrBoxes[i].ID2);
                    if (ctrl.value.length > 0 || ctrl2.value.length > 0) {
                        ShowValidIcon(ctrl);
                        ShowValidIcon(ctrl2);
                    }
                    else {
                        ShowErrorIcon(ctrl);
                        ShowErrorIcon(ctrl2);
                        valid = false;
                    }
                }

                if (arrBoxes[i].Function == "email") {
                    if (validateEmail(ctrl.value))
                        ShowValidIcon(ctrl);
                    else {
                        ShowErrorIcon(ctrl);
                        valid = false;
                    }
                }

                if (arrBoxes[i].Function == "comparepassword") {
                    var ctrl2 = document.getElementById(arrBoxes[i].ID2);
                    if (ctrl.value.length > 5 && ctrl2.value.length > 5 && ctrl2.value == ctrl.value) {
                        ShowValidIcon(ctrl);
                        ShowValidIcon(ctrl2);
                    } else {
                        ShowErrorIcon(ctrl);
                        ShowErrorIcon(ctrl2);
                        valid = false;
                    }
                }

                if (arrBoxes[i].Function == "SSN") {
                    var sv;
                    try {
                        sv = arrBoxes[i].SV();
                    } catch (e) {
                    sv = arrBoxes[i].SV;
                    }
                    if (sv == true) {
                        if (!ValidateSVSSN(ctrl.value)) {
                            ShowErrorIcon(ctrl);
                            valid = false;
                        } else {
                            ShowValidIcon(ctrl);
                        }
                    } else {
                        var RegExpObject = new RegExp("([0-9][0-9])?([0-9][0-9][0-9][0-9][0-9][0-9])[-+]?");

                        if (RegExpObject.test(ctrl.value)) {
                            ShowValidIcon(ctrl);
                        } else {
                            ShowErrorIcon(ctrl);
                            valid = false;
                        }
                    }
                }
            }
        }
    }
    if (valid == true)
        return true;
    else
        return false;
}

function ShowErrorIcon(ctrl) {
    jQuery(ctrl).addClass('txtBoxError').removeClass('txtBoxValid');
    ctrl.value = ctrl.value;
}

function ShowValidIcon(ctrl) {
    jQuery(ctrl).addClass('txtBoxValid').removeClass('txtBoxError');
    ctrl.value = ctrl.value;
}

function validateEmail(email) {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    return emailPattern.test(email);
}

function ValidateSVSSN(str) {

    var ssnPattern = /([0-9][0-9])?([0-9][0-9][0-9][0-9][0-9][0-9])[-+]?([0-9][0-9][0-9][0-9])/;
    if (!ssnPattern.test(str))
        return false;


  
    try {
        if (str != "") {
            var checkSum = 0;
            var CheckNumber = 0;
            while (str.lastIndexOf("-") != -1) {
                str = str.replace("-", "");
            }
            while (str.lastIndexOf(" ") != -1) {
                str = str.replace(" ", "");
            }
        }
        if (str.length == 10) {
            checkSum = GetCheckSum(str);
            if (checkSum > 0) {
                checkSum = parseInt(checkSum.toString().substring(1, 2));
            }
            CheckNumber = parseInt(str.substring(str.length - 1, str.length));
            if (checkSum == CheckNumber) {
                return true;
            }
            else if (CheckNumber == (10 - checkSum)) {
                return true;
            }
        }
        else if (str.length == 12) {
            str = str.substring(2, 11)
            checkSum = GetCheckSum(str);
            if (checkSum > 10) {
                checkSum = parseInt(checkSum.toString().substring(1, 2));
            }
            CheckNumber = parseInt(str.substring(str.length - 1, str.length));
            if (checkSum == CheckNumber) {
                return true;
            }
            else if (CheckNumber == (10 - checkSum)) {
                return true;
            }
        }
        else {
            return false;
        }
    }
    catch (e) {
        return false;
    }
    return false;
}

function GetCheckSum(str) {
    var checkSum = 0;
    var tempSum = 0;
    var multiply = 2;
    var aSSNumber = new Array();
    for (var i = 0; i < str.length - 1; i++) {
        aSSNumber.push(str.substring(i, (i + 1)));
    }
    try {
        for (var i = 0; i <= aSSNumber.length - 1; i++) {
            tempSum = parseInt(aSSNumber[i]);
            tempSum = tempSum * multiply;
            if (multiply == 2) {
                if (tempSum < 10) {
                    checkSum += tempSum;
                }
                else {
                    var tempSumInt;
                    for (var a = 0; a <= 1; a++) {
                        tempSumInt = parseInt(tempSum.toString().substring(a, (a + 1)));
                        checkSum = checkSum + tempSumInt;
                    }
                }
                multiply = 1;
            }
            else {
                if (tempSum < 10) {
                    checkSum += tempSum;
                }
                else {
                    var tempSumInt;
                    for (var a = 0; a <= 1; a++) {
                        tempSumInt = parseInt(tempSum.toString().substring(a, (a + 1)));
                        checkSum = checkSum + tempSumInt;
                    }
                }
                multiply = 2;
            }
        }
        return checkSum;
    }
    catch (e) {
        return 0
    }
}
