﻿function ClientValidateEmpty(source, args) {
    args.IsValid = IsNotEmpty(args.Value);
}

function ClientValidateEmail(source, args) {
    args.IsValid = IsEmail(args.Value);
}

function ClientValidatePhone(source, args) {
    args.IsValid = IsPhone(args.Value);
}

function ClientValidateEmailPhone(source, args) {
    var s = args.Value.replace(' ', '');
    args.IsValid = false;
    if (IsNotEmpty(s)) {
        args.IsValid = IsEmail(s) || IsPhone(s);
    }
}

function ClientValidatePostCode(source, args) {
    args.IsValid = false;
    var s = args.Value.replace(' ', '');
    if (IsNotEmpty(s)) {
        args.IsValid = !isNaN(s) && s.length == 4;
    }
}

function ClientValidateSelectedValue(source, args) {
    args.IsValid = args.Value > 0;
}

function IsNotEmpty(str) {
    if (str) {
        return str.length > 0;
    }
    return false;
}

function IsEmail(str) {
    if (IsNotEmpty(str)) {
        var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        return filter.test(str);
    }
    return false;
}

function IsPhone(str) {
    if (IsNotEmpty(str)) {
    
        var index = 0;
        var min = 8;
        var isNumber = true;
        
        if (str.indexOf('+') == 0) {
            index = 1;
            min += 3;
        }

        for (var i = index; i < str.length; i++) {
            if (str[i] != undefined) {
                isNumber = !isNaN(str[i]) && isNumber;
            }
            else {
                isNumber = !isNaN(str);
                i = str.length;
            }
        }
        
        return str.length >= min && str.length <= 15 && isNumber;
    }
    return false;
}

function IsNotEmpty(str) {
    if (str) {
        return str.length > 0;
    }
    return false;
}
