﻿// Check Mobile Number
function IsMobileNumber(TextBox) {
    if (isNaN(String.fromCharCode(event.keyCode)) || String.fromCharCode(event.keyCode) == " ") {
        event.keyCode = 0;
    }
}

// Check Country Code
function IsCountryCode(TextBox) {
    if ((isNaN(String.fromCharCode(event.keyCode)) || String.fromCharCode(event.keyCode) == " ") && String.fromCharCode(event.keyCode) != "+") {
        event.keyCode = 0;
    }
}

//  Check Email
function IsValidEmail(Email) 
{
    //var re = new RegExp("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"); 
    // DW 06/04/2010 Change RegExp to allow apostrophes. Almost adheres to standard RFC 2822
    var re = new RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");

    return re.test(Email);
}

//  Check Url
function IsValidURL(URL) {
    var regexp = /(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
    return regexp.test(URL);
}


function IsNumber(e, TextBox) {
    var retval;
    if (window.event) {
        if (e.keyCode == 45 || e.keyCode == 46) {
            // 45=-, 46=.
            retval = true;
        }

        if (!retval) {
            /*e.keyCode == 32 is white space */
            if (isNaN(String.fromCharCode(e.keyCode)) || e.keyCode == 32) {
                event.e = 0;
                retval = false;
            } else {
                retval = true;
            }
        }
    } else {
        if (e.which == 8 || e.which == 0 || e.which == 45 || e.which == 46) {
            /*allow delete and back/forward cursor move*/
            retval = true;
        } else {
            keychar = String.fromCharCode(e.which);
            numcheck = /\d/;
            retval = numcheck.test(keychar);
        }
    }
    return retval;
}

function IsInteger(e, TextBox) {

    if (window.event) {
        if (isNaN(String.fromCharCode(e.keyCode)) || e.keyCode == 32) {
            event.e = 0;
            return false;
        } else {
            return true;
        }
    } else {
        keychar = String.fromCharCode(e.which);
        numcheck = /\d/;
        return numcheck.test(keychar);
    }
}


function LuhnCheck(cardNumber) {
    //check if test card numbers
    if (cardNumber == "4111111111111111" || cardNumber == "4111111111111114") {
        return true;
    }

    if (cardNumber.indexOf("xxxx") > 0) {
        //Using pre-saved numbers. Ignore
        return true;
    }
    
    var sum = 0;
    var digit = 0;
    var addend = 0;
    var timesTwo = false;

    for (var i = cardNumber.length - 1; i >= 0; i--) {
        digit = parseInt(cardNumber.substring(i, i + 1));
        if (timesTwo) {
            addend = digit * 2;
            if (addend > 9) {
                addend -= 9;
            }
        } else {
            addend = digit;
        }
        sum += addend;
        timesTwo = !timesTwo;
    }
    return (sum % 10) == 0;
}
