﻿
//判断Email是否正确
$.fn.isEmail = function() {
    var reg = /^[a-zA-Z0-9_\.]+@[a-zA-Z0-9-]+[\.a-zA-Z]+$/;
    return reg.test($(this).val());
}

//两个密码是否相同
$.fn.repPassword = function() {
    return $(this).eq(0).val() == $(this).eq(1).val();
}

//密码要求由长度为6-20位字符组成
$.fn.PasswordLen = function() {
    if ($(this).length < 6) return false; return true;
}

//生日输入格式验证
$.fn.Birthday = function() {
    var reg = /^(19|20)\d{2}年(0?\d|1[012])月(0?\d|[12]\d|3[01])日$/;
    return reg.test($(this).val());
}

//普通的电话、手机、传真号码验证
$.fn.TelePhone = function() {
    var reg = /^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
    return reg.test($(this).val());
}

//手机
$.fn.Mobile = function() {
    var reg = /^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}|15[89]\d{8}$/;
    return reg.test($(this).val());
}

//固话
$.fn.Tel = function() {
    var reg = /^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})$/;
    return reg.test($(this).val());
}

$.fn.Postcode = function() {
    var reg = /^[1-9]\d{5}(?!\d)?$/;
    return reg.test($(this).val());
}

//验证码
$.fn.ValidatorCode = function() {
    if ($.ajax({
        url: "/Account/ValidateImg?type=compare&code=" + this.val(),
        async: false
    }).responseText == "true") return true; return false;
}



//是否为空
$.fn.IsNull = function() {
    if (this.val() == "") return false; return true;
}

//必录一个
$.fn.mustRecorded = function() {
    for (var i = 0; i < $(this).length; i++) {
        if ($(this)[i].value != "")
            return true;
    }
    return false;
}

$.fn.isNumber = function() {
    var patrn = /^([0-9]+[\.]{1}[0-9]+)$|^([0-9]+)$/;
    var isError = true;
    $(this).each(function() {
        if ($(this).val().length > 0 && patrn.exec($(this).val()) == null) {
            isError = false;
            return false;
        }
    });
    return isError;
}

$.validator = function(objects) {
    var summarys = new Array();
    for (var i = 0; i < objects.length; i++) {
        this.defaults = {
            control: "",
            message: "",
            type: "",
            regExp: "",
            showModel: false
        };
        $(this.defaults).initParam(objects[i]);
        this.defaults.control.removeClass("errortext");
        switch (this.defaults.type) {
            case "custom":
                if (!this.defaults.regExp.test(this.defaults.control.val())) {
                    summarys.push({ control: this.defaults.control, message: this.defaults.message });
                }
                continue;
                break;
            case "regExpFalse":
                for (var ri = 0; ri < this.defaults.control.length; ri++) {
                    if (this.defaults.regExp.test(this.defaults.control[ri].value)) {
                        summarys.push({ control: this.defaults.control[ri], message: this.defaults.message });
                        break;
                    }
                }
                continue;
                break;
        }
        if (!eval("this.defaults.control." + this.defaults.type + "()"))
            summarys.push({ control: this.defaults.control, message: this.defaults.message });
    }
    var msg = "";
    var ss = "<ul style='list-style-type:none;'>";
    for (var i in summarys) {
        msg += eval("summarys[i].message") + "\r\n";
        ss += "<li>" + eval("summarys[i].message") + "</li>";
        eval("summarys[i].control.addClass('errortext')");

    }
    ss += "</ul>";
    $('#FlashError').html(ss);
    if (summarys.length != 0) {
        $('#FlashError').show();
        if (this.defaults.showModel) alert(msg);
        return false;
    }
    else {
        $('#FlashError').hide();
        return true;
    }
}

$.fn.initParam = function(json) {
    var defaults = $(this);
    for (var j in json)
        defaults.attr(j, eval("json." + j));
}
