﻿
//datetime
function IsDateTime(strDate) {
    var reg = /^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[1-9])|(1[0-2]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))))?$/;
    return reg.test(strDate);
}

//检查键入是否数字
function iskeynum() {
    if (event.keyCode < 45 || event.keyCode > 57) {
        event.keyCode = 0;
    }
}

function isNumber(val) {
    if (val=="") return false;
    var strP = /^\d+(\.\d+)?$/;
    if (!strP.test(val)) return false;
    try {
        if (parseFloat(val) != val) return false;
    }
    catch (ex) {
        return false;
    }
    return true;
}

function isNumberValue(obj) {
    if (!obj) return false;
    var strNum = obj.value;
    var strP = /^\d+(\.\d+)?$/;
    if (!strP.test(strNum)) return false;
    try {
        if (parseFloat(strNum) != strNum) return false;
    }
    catch (ex) {
        return false;
    }
    return true;
}
function CheckNumber(obj) {
    if (obj.value == "")
        obj.value = "1";
    if (!isNumberValue(obj)) {
        obj.focus();
        alert('请输入数字,并且不允许负数！');
        return false;
    }
    return true;
}
function EnterToTab(e) {
　
    if (e.keyCode == 13)
        e.keyCode = 9;
    else (e.which == 13)
        e.which == 13;
}



    function get_total_price() {
        $.post("/d9jsService/PostSvr.ashx", { action: 'gettotalprice' },
                    function(data) {
                        if (data == "")
                            $("#span_producttotal").text("0");
                        else {
                            $("#span_producttotal").text(data);
                            //alert("添加成功 ");
                        }
                    });
    }


    function add_favorite(type, refid) {
        $.post("/d9jsService/PostSvr.ashx", { action: 'addfavorite', FavoriteType: type, ReferentID: refid },
        function(data) {
            if (data == "1")
                alert("成功添加到收藏夹");
            else if (data == "2")
                alert("当前信息您已经收藏");
            else if (data == "3")
                alert("您需要先登录，才能使我收藏功能。");
            else
                alert("收藏失败，请与我们联系。");
        });
    }

    //说明：javascript的加法结果会有误差，在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。   
    //调用：accAdd(arg1,arg2)   
    //返回值：arg1加上arg2的精确结果   
    function accAdd(arg1, arg2) {
        var r1, r2, m;
        try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
        try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
        m = Math.pow(10, Math.max(r1, r2))
        return (arg1 * m + arg2 * m) / m
    }

    //给Number类型增加一个add方法，调用起来更加方便。   
    Number.prototype.add = function(arg) {
        return accAdd(arg, this);
    }
    //说明：javascript的减法结果会有误差，在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。   
    //调用：accSub(arg1,arg2)   
    //返回值：arg1减上arg2的精确结果   
    function accSub(arg1, arg2) {
        return accAdd(arg1, -arg2);
    }

    //给Number类型增加一个sub方法，调用起来更加方便。   
    Number.prototype.sub = function(arg) {
        return accSub(this, arg);
    }

    //说明：javascript的乘法结果会有误差，在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。   
    //调用：accMul(arg1,arg2)   
    //返回值：arg1乘以arg2的精确结果   
    function accMul(arg1, arg2) {
        var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
        try { m += s1.split(".")[1].length } catch (e) { }
        try { m += s2.split(".")[1].length } catch (e) { }
        return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
    }

    //给Number类型增加一个mul方法，调用起来更加方便。   
    Number.prototype.mul = function(arg) {
        return accMul(arg, this);
    }

    //说明：javascript的除法结果会有误差，在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。   
    //调用：accDiv(arg1,arg2)   
    //返回值：arg1除以arg2的精确结果   
    function accDiv(arg1, arg2) {
        var t1 = 0, t2 = 0, r1, r2;
        try { t1 = arg1.toString().split(".")[1].length } catch (e) { }
        try { t2 = arg2.toString().split(".")[1].length } catch (e) { }
        with (Math) {
            r1 = Number(arg1.toString().replace(".", ""))
            r2 = Number(arg2.toString().replace(".", ""))
            return (r1 / r2) * pow(10, t2 - t1);
        }
    }

    //给Number类型增加一个div方法，调用起来更加方便。   
    Number.prototype.div = function(arg) {
        return accDiv(this, arg);
    }

    /*  
    alert(0.09999999 + 0.00000001);//弹出: 0.09999999999999999  
    alert(-0.09999999 - 0.00000001);//弹出: -0.09999999999999999  
    alert(0.012345 * 0.000001);//弹出: 1.2344999999999999e-8  
    alert(0.000001 / 0.0001);//弹出: 0.009999999999999998  
 
    alert(0.09999999.add(0.00000001));//弹出: 0.1   
    alert(-0.09999999.sub(0.00000001));//弹出: -0.09999998     
    alert(0.012345.mul(0.000001));//弹出: 1.2345e-8   
    alert(0.000001.div(0.0001));//弹出: 0.01  

    */ 
