﻿/*让出变量$的控制权*/
jQuery.noConflict();
/*扩展JQuery*/
jQuery.extend({
    /*获取字符长度，中文算两个字符*/
    getLen: function (text) {
        var t = text.replace(/[^\x00-\xff]/g, "**");
        return t.length;
    },
    /*是否为中文字符*/
    IsZh: function (text) {
        var reg = /[^\x00-\xff]/g;
        if (text.match(reg))
            return true;
        return false;
    },
    /*拆分字符，并返回指定位置项*/
    SplitItem: function (text, splitor, index) {
        if (text.indexOf(splitor) == -1)
            return "";
        var a = text.split(splitor);
        if (index > a.length - 1) {
            index = a.length - 1;
        }
        return a[index];
    },
    /*获取url中的参数值index.htm?id=1*/
    Q: function (source, name) {
        var reg = new RegExp("(^|&|\\?)" + name + "=([^&]*)(&|$)"), r;
        if (source) {
            if (r = source.match(reg))
                return unescape(r[2]);
            return null;
        }
    },
    /*获取url中的参数值index.htm?id=1*/
    QH: function (name) {
        var source = jQuery.unescape(location.href);
        var reg = new RegExp("(^|&|\\?)" + name + "=([^&]*)(&|$)"), r;
        if (source) {
            if (r = source.match(reg))
                return unescape(r[2]);
            return null;
        }
    },
    /*用unescape解码字符（字符可能被反复编码）*/
    unescape: function (str) {
        var count = 0;
        if (!str) return "";
        str = unescape(str);
        while (str.indexOf("%") != -1) {
            if (count > 8)
                return str;
            str = unescape(str);
            count++;
        }
        return str;
    },
    /*设置cookie值*/
    setCookie: function (name, value, date, domain) {
        var _date = new Date();
        _date.setTime(_date.getTime() + 365 * 24 * 60 * 60 * 1000);
        _date = date ? date : _date;
        var _domain = domain ? domain : "yitoo.com";
        document.cookie = name + '=' + escape(value) + ';expires=' + _date.toGMTString() + ';domain=' + _domain + ';path=/';
    },
    /*获取cookie值*/
    getCookie: function (name) {
        var c = document.cookie;
        var n = name + '=';
        var s = c.indexOf(n);
        if (s == -1) {
            return "";
        }
        var e = c.indexOf(';', s);
        if (e == -1) {
            e = c.length;
        }
        return unescape(c.substring(s + n.length, e));
    },
    /*将表单对象转换成JSON格式*/
    FormConver: function (f) {
        var F = jQuery(f).serializeArray();
        var J = "{";
        for (var i = 0; i < F.length; i++) {
            if (i == F.length - 1) {
                J += "\"" + F[i].name + "\":\"" + escape(F[i].value || "") + "\"";
            } else {
                J += "\"" + F[i].name + "\":\"" + escape(F[i].value || "") + "\",";
            }
        }
        J += "}";
        return J;
    },
    /*将表单对象转换成JSON格式,但是不处理空值对象*/
    FC: function (f) {
        var F = jQuery(f).serializeArray();
        var J = "{";
        for (var i = 0; i < F.length; i++) {
            if ((F[i].value || "").length == 0) {
                continue;
            }
            if (i == F.length - 1) {
                J += "\"" + F[i].name + "\":\"" + escape(F[i].value || "") + "\"";
            } else {
                J += "\"" + F[i].name + "\":\"" + escape(F[i].value || "") + "\",";
            }
        }
        J += "}";
        return J;
    },
    Validater: {
        Regs: {
            email: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
            phone: /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?([1-9]\d{3,4})(\s*)([1-9]\d{3,4})(\-\d{1,4})?$/,
            mobile: /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/,
            url: /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
            date: /(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)/,
            number: /^\d+$/,
            zip: /^[1-9]\d{5}$/,
            qq: /^[1-9]\d{4,8}$/,
            integer: /^[-\+]?\d+$/,
            double: /^[-\+]?\d+(\.\d+)?$/,
            english: /^[A-Za-z]+$/,
            chinese: /^[\u0391-\uFFE5]+$/,
            username: /^[a-z]\w{0,}$/i,
            usernumber: /^\d+\w{0,}$/i,
            password: /^\w+$/
        },
        Title: {
            email: "请输入有效邮箱。",
            phone: "请输入正确的电话",
            mobile: "请输入正确的手机",
            url: "请输入正确的网址",
            date: "请输入正确的日期格式：1980-01-01",
            number: "请输入数字",
            zip: "请输入邮政骗码",
            qq: "请输入正确的QQ号码",
            integer: "请输入整数",
            double: "请输入浮点数",
            english: "请输入英文",
            chinese: "请输入中文",
            username: "请输入正确的用户名",
            password: "请输入正确的密码"
        },
        Validate: function (v, r, length) {
            if (length) {
                if (jQuery.getLen(v) < length) {
                    return false;
                } else {
                    return true;
                }
            }
            return r.test(v);
        }
    },
    Ajaxget: function (url) {
        var result = null;
        jQuery.ajax({ url: url, type: "GET", async: false, cache: false, dataType: "json", success: function (r) {
            result = r;
        }
        });
        return result;
    },
    Ajaxpost: function (url, data) {
        var result = null;
        jQuery.ajax({ url: url, data: escape(data), type: "POST", async: false, cache: false, dataType: "json", success: function (r) {
            result = r;
        }
        });
        return result;
    },
    xAjaxget: function (url) {
        var result = null;
        jQuery.ajax({ url: url, type: "GET", async: false, cache: false, dataType: "json", success: function (r) {
            result = r;
        }
        });
        return result;
    },
    xAjaxpost: function (url, data) {
        var result = null;
        jQuery.ajax({ url: url, data: escape(data), type: "POST", async: false, cache: false, dataType: "json", success: function (r) {
            result = r;
        }
        });
        return result;
    }
});

jQuery.fn.extend({
    /*动态添加select对象的列表项*/
    options: function (arr, name, value, selector) {
        if (this.length) {
            var e = this[0];
        }
        jQuery(e.options).empty();
        var o;
        if (arr) {
            if (jQuery.nodeName(e, "select")) {
                o = document.createElement("option");
                e.options.add(o);
                o.text = "请选择";
                o.value = "";
                if (!arr.length) {
                    o = document.createElement("option");
                    e.options.add(o);
                    o.text = eval("arr." + name);
                    o.value = eval("arr." + value);
                    if (selector) {
                        if (selector == arr[i][name])
                            o.selected = true;
                    }
                }
                for (var i = 0; i < arr.length; i++) {
                    o = document.createElement("option");
                    e.options.add(o);
                    o.text = arr[i][name];
                    o.value = arr[i][value];
                    if (selector) {
                        if (selector == arr[i][name])
                            o.selected = true;
                    }
                }
            }
        }
    },
    /*获取对象的水平坐标位置*/
    Left: function () {
        var l = null;
        if (this[0]) {
            l = this[0].offsetLeft;
            while (this[0] = this[0].offsetParent) {
                l += this[0].offsetLeft;
            }
        }
        return l;
    },
    /*获取对象的垂直坐标位置*/
    Top: function () {
        var l = null;
        if (this[0]) {
            l = this[0].offsetTop;
            while (this[0] = this[0].offsetParent) {
                l += this[0].offsetTop;
            }
        }
        return l;
    },
    /*判断指定值是否在select控件的列表中*/
    isInOptions: function (v) {
        var index = -1;
        var list = this[0].options;
        for (var i = 0; i < list.length; i++) {
            if (list[i]) {
                if (list[i].text == v || list[i].value == v) {
                    index = i;
                    break;
                }
            }
        }
        return index;
    },
    /*判断表单值是否为数值*/
    IsNumber: function () {
        if (!this[0])
            return false;
        if (String(Number(this[0].value)) == "NaN") {
            return false;
        }
        return true;
    },
    /*设置对象绝对居中，isfloat表示是否跟随页面浮动*/
    center: function (isfloat, x, y) {
        if (!this[0])
            return false;
        var a = (jQuery(document).width() - jQuery(this[0]).width()) / 2;
        var b = (jQuery(document).height() - jQuery(this[0]).height()) / 2;
        a = x || a;
        b = y || b;
        jQuery(this[0]).css("position", "absolute");
        jQuery(this[0]).css("left", a);
        jQuery(this[0]).css("top", b);
        if (isfloat) {
            jQuery.floater = this[0];
            jQuery.float_last_y = 0;
            jQuery(window).unbind("scroll");
            jQuery(window).bind("scroll", function () {
                if (typeof (jQuery.float_last_y) == 'undefined') {
                    jQuery.float_last_y = 0;
                }
                var top = document.body.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop;
                var percent = (top - jQuery.float_last_y);
                if (jQuery.floater != null) {
                    if (percent == 0) {
                        return;
                    }
                    jQuery.floater.style.pixelTop += percent;
                }
                jQuery.float_last_y += percent;
            });
        }
    }
}); 
