﻿/// <reference path="dyk-ui-config.js" />
/// <reference path="dyk-ui-global.js" />
/// <reference path="dyk-ui.quote.js" />


DouYaoKanUI.基本.类型 = {
    get: function (val) {
        /// <summary>指示指定的值的类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="String" />

        var _toS = Object.prototype.toString,
            _types = {
                'undefined': 'undefined',
                'number': 'number',
                'boolean': 'boolean',
                'string': 'string',
                '[object Function]': 'function',
                '[object RegExp]': 'regexp',
                '[object Array]': 'array',
                '[object Date]': 'date',
                '[object Error]': 'error'
            };
        return _types[typeof val] || _types[_toS.call(val)] || (val ? 'object' : 'null');
    },

    equals: function (val, type) {
        /// <summary>指示指定的值是否等同于指定的类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <param name="type" type="String">指定的类型</param>
        /// <returns type="Boolean" />

        return type == this.get(val);
    },

    isObject: function (val) {
        /// <summary>指示指定的值是否为 Object类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return this.equals(val, "object");
    },

    isArray: function (val) {
        /// <summary>指示指定的值是否为 Array类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return this.equals(val, "array");
    },

    isFunction: function (val) {
        /// <summary>指示指定的值是否为 Function类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return this.equals(val, "function");
    },

    isBoolean: function (val) {
        /// <summary>指示指定的值是否为 Boolean类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return this.equals(val, "boolean");
    },

    isRegExp: function (val) {
        /// <summary>指示指定的值是否为 RegExp类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return this.equals(val, "regexp");
    },

    isDate: function (val) {
        /// <summary>指示指定的值是否为 Date类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return this.equals(val, "date");
    },

    isError: function (val) {
        /// <summary>指示指定的值是否为 Error类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return this.equals(val, "error");
    },

    isString: function (val) {
        /// <summary>指示指定的值是否为 String类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return this.equals(val, "string");
    },

    isNumber: function (val) {
        /// <summary>指示指定的值是否为 Number类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return this.equals(val, "number");
    },

    isNull: function (val) {
        /// <summary>指示指定的值是否为 null。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return this.equals(val, "null");
    },

    isUndefined: function (val) {
        /// <summary>指示指定的值是否为 Undefined类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return this.equals(val, "undefined");
    }
};

DouYaoKanUI.基本.字符 = {

    is: function (val) {
        /// <summary>指示指定的值是否为 String类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return DouYaoKanUI.基本.类型.isString(val);
    },

    isNullOrEmpty: function (val) {
        /// <summary>指示指定的值是否为 null 还是 空字符串。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return DouYaoKanUI.基本.类型.isNull(val) || val === "";
    },

    isWhiteSpace: function (val) {
        /// <summary>指示指定的值是否为 空还是仅由空白字符组成。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return val === "" || (DouYaoKanUI.基本.类型.isString(val) && val.replace(" ", "") === "");
    },

    isNullOrWhiteSpace: function (val) {
        /// <summary>指示指定的值是否为 null、空还是仅由空白字符组成。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return DouYaoKanUI.基本.类型.isNull(val) || this.isWhiteSpace(val);
    }
};

DouYaoKanUI.基本.数字 = {
    is: function () {
        /// <summary>指示指定的值是否为 Number类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return DouYaoKanUI.基本.类型.isNumber(val);
    }
};

DouYaoKanUI.基本.正则 = {
    is: function () {
        /// <summary>指示指定的值是否为 RegExp类型。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        return DouYaoKanUI.基本.类型.isRegExp(val);
    },

    isEmail: function (val) {
        /// <summary>指示指定的值是否为 Email格式。</summary>
        /// <param name="val" type="Object">指定的值</param>
        /// <returns type="Boolean" />

        var regex = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;

        return regex.test(val);
    }
};

DouYaoKanUI.基本.图片 = {

    加载完成: function () {

    },
    加载失败: function (ownerDoc) {
        if (ownerDoc && ownerDoc.src && ownerDoc.src.indexOf(DouYaoKanUI.引用.图片库.默认背景文件) == -1) {
            ownerDoc.src = DouYaoKanUI.引用.图片库.默认背景文件;
        }
    }
};

DouYaoKanUI.基本.路径 = {

};
