
    function isInteger(s) {
        var i;

        if (isEmpty(s))
            if (isInteger.arguments.length == 1) return 0;
        else return (isInteger.arguments[1] == true);

        for (i = 0; i < s.length; i++) {
            var c = s.charAt(i);

            if (!isDigit(c)) return false;
        }

        return true;
    }

    function isEmpty(s) {
        return ((s == null) || (s.length == 0))
    }

    function isDigit(c) {
        return ((c >= "0") && (c <= "9"))
    }

    function isEmailValid(str) {
        return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
    }

    function luhnCheck(cardnumber) {
        var i, sum, weight;
        sum = 0;
        for (i = 0; i < cardnumber.length - 1; i++) {
            weight = cardnumber.substr(cardnumber.length - (i + 2), 1) * (2 - (i % 2));
            sum += ((weight < 10) ? weight : (weight - 9));
        }
        if (parseInt(cardnumber.substr(cardnumber.length - 1)) == ((10 - sum % 10) % 10)) {
            return true;
        } else {
            return false;
        }    
    }
