﻿(function($) {
    String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); }
    String.prototype.ltrim = function() { return this.replace(/^\s+/g, ""); }
    String.prototype.rtrim = function() { return this.replace(/\s+$/g, ""); }
    if (!window.TGL) {
        window.TGL = function() {
            return this;
        }
    }
    var TGL = window.TGL;
    if (!TGL.CheckApi) {
        TGL.CheckApi = {};
    }
    TGL.CheckApi["NotNull"] = function(val)//判断非空
    {
        if (val == null || val.toString().trim() == "")
            return false;
        else
            return true;
    }
    TGL.CheckApi["IPAddress"] = function(val)//判断是否为IP地址  XXX.XXX.XXX.XXX
    {
        if (val.trim() == "") return false;
        var reg = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正则表达式
        if (reg.test(val)) {
            if (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256) return true;
        }
        return false;
    }
    TGL.CheckApi["CheckLength"] = function(val, para)//判断字符串长度是否符合要求
    {
        var len = val.replace(/[^\x00-\xff]/g, "^^").length;
        if (typeof (para) == "string")
            eval("para=" + para);
        if (para.max && para.min) {
            return len <= para.max && len >= para.min;
        }
        if (para.max) {
            return len <= para.max;
        }
        if (para.min) {
            return len >= para.min;
        }
        if (para.equal) {
            return len == para.equal;
        }
        return true;
    }
    TGL.CheckApi["IsNumber"] = function(val, type)//判断是否为指定类型数值
    {
        var reg = {
            NotNInt: /^\d+$/, //非负整数
            PlusInt: /^[0-9]*[1-9][0-9]*$/, //正整数
            NotPInt: /^((-\d+)|(0+))$/, //非正整数
            NegInt: /^-[0-9]*[1-9][0-9]*$/, //负整数
            Int: /^-?\d+$/, //整数
            NotNFloat: /^\d+(\.\d+)?$/, //非负浮点数
            PlusFloat: /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/, //正浮点数
            NotPFloat: /^((-\d+(\.\d+)?)|(0+(\.0+)?))$/, //非正浮点数
            NegFloat: /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/, //负浮点数
            Float: /^(-?\d+)(\.\d+)?$/ //浮点数
        }
        if (reg[type].test(val))
            return true;
        return false;
    }
    TGL.CheckApi["NumberSize"] = function(val, para)//判断数值大小是否符合要求
    {
        if (TGL.CheckApi.IsNumber(val, "Float")) {
            var num = val * 1;
            if (typeof (para) == "string") para = eval(para);
            if (para.max) {
                return num < para.max;
            }
            if (para.min) {
                return num > para.min;
            }
        }
        return false;
    }
    TGL.CheckApi["RcClassId"] = function(val) {
        if (val == 0) { return false; } else { return true; }
    }
    TGL.CheckApi["IsLoginName"] = function(val)//判断登录名用户名3-16位
    {
        var reg = /^[a-zA-Z0-9]\w{2,15}$/;
        if (reg.test(val)) {
            return true;
        }
        else {
            return false;
        }
    }
    TGL.CheckApi["ChinaName"] = function(val) {
        var reg = /^[\u4e00-\u9fa5]{2,4}\s*$/;
        if (reg.test(val)) return true;

        return false;

    }
    TGL.CheckApi["IsEmail"] = function(val)//判断Email
    {
        //var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;
        var reg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
        if (reg.test(val)) return true;

        return false;
    }
    TGL.CheckApi["IsPhone"] = function(val, type)//判断电话或手机号码
    {
        reg = {
            Phone: /^(((\()?\d{2,4}(\))?[-(\s)*]){0,2})?(\d{7,8})$/, //固定电话号码
            MobilePhone: /^((\(\d{3}\))|(\d{3}\-))?13\d{9}|15\d{9}|18\d{9}$/ //移动电话
        }
        if (type == "ALL") {
            return reg["Phone"].test(val) || reg["MobilePhone"].test(val);
        }
        else
            return reg[type].test(val);
    }
    TGL.CheckApi["IsZipCode"] = function(val)//邮政编码
    {
        var reg = /^[0-9]\d{5}$/;
        return reg.test(val);
    }
    TGL.CheckApi["IsDate"] = function(val) {
        var reg = /((^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(10|12|0?[13578])([-\/\._])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(11|0?[469])([-\/\._])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))([-\/\._])(0?2)([-\/\._])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([3579][26]00)([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][0][48])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89][13579][26])([-\/\._])(0?2)([-\/\._])(29)$)|(^([2-9][0-9][13579][26])([-\/\._])(0?2)([-\/\._])(29)$))/;
        return reg.test(val)
    }
    TGL.CheckApi["IsUrl"] = function(val) {
        var reg = /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/;
        return reg.test(val);
    }
    TGL.CheckApi["IsLanguage"] = function(val, type) {
        var reg = {
            Chinese: /[\u4e00-\u9fa5]/,
            English: /^[A-Za-z]+$/
        };
        return reg[type].test(val);
    }
    TGL["Check"] = function(checkInfo, obj, flag) {
        var i = 0;
        var temp = "";
        if (obj != null) {
            if (checkInfo[obj][0]) {
                if (!TGL.CheckApi["NotNull"]($("#" + obj).val()))
                    return "";
            } else {
                if (!TGL.CheckApi["NotNull"]($("#" + obj).val())) {
                    temp = "-" + checkInfo[obj][2];
                }
            }
            if (flag && temp != "") {
                return temp;
            }
            for (i = 3; i < checkInfo[obj].length; i += 3) {
                if (!TGL.CheckApi[checkInfo[obj][i]]($("#" + obj).val(), checkInfo[obj][i + 1])) {
                    if (temp == "")
                        temp += "-" + checkInfo[obj][i + 2];
                    else
                        temp += "<br/>-" + checkInfo[obj][i + 2];
                }
                if (flag && temp != "") {
                    return temp;
                }
            }
            return temp;
        } else {
            temp = [];
            $.each(checkInfo, function(n, item) {
                if (TGL.Check(checkInfo, n, true) != "") {
                    temp[temp.length] = n;
                    if (flag)
                        return false;
                }
            });
            return temp.length > 0 ? temp : "";
        }
    }
} (jQuery));
