function QueryString() {
    var name, value, i;
    var str = location.href;
    var num = str.indexOf("?");
    if (num >= 0) {
        str = str.substr(num + 1);
        var arrTmp = str.split("&");
        for (i = 0; i < arrTmp.length; i++) {
            num = arrTmp[i].indexOf("=");
            if (num > 0) {
                name = arrTmp[i].substring(0, num);
                value = arrTmp[i].substr(num + 1);
                //过滤掉锚定，#号后不带入参数值
                var anchorNum = value.indexOf("#");
                if (anchorNum > 0)
                    this[name] = value.substring(0, anchorNum);
                else this[name] = value;
            }
        }
    }
}
var Request = new QueryString();


/**
 * 加入收藏
 */
function addFavorite(tableId, favoriteName, tableType, userFavoriteTag, siteId) {
    $.ajax({
        url: "/default.php?mod=user_favorite&a=async_add",
        type: "POST",
        data: {table_id: tableId, table_type: tableType, user_favorite_title: favoriteName, user_favorite_tag: userFavoriteTag, site_id: siteId},
        dataType: "jsonp",
        jsonp: "jsonpcallback",
        success: function (data) {
            if (data["result"] == -1) {
                //失败
                alert("收藏失败");
                location.replace(location);
            } else if (data["result"] == -2) {
                alert("已被收藏");
                location.replace(location);
            } else {
                //成功
                alert("收藏成功");
                location.replace(location);
            }
        }
    });
}

function formatPrice(price) {
    if (price != undefined) {
        if (parseFloat(price) > 0) {
            return parseFloat(price).toFixed(2);
        } else {
            return "0.00";
        }

    } else {
        return "";
    }

}

/**
 * 时间对象的格式化
 * @param date 时间对象
 * @param format 时间格式字符串
 * @return string format 格式化后的时间对象字符串
 */
function formatDate(date, format) {
    var o = {
        "M+": date.getMonth() + 1,
        "d+": date.getDate(),
        "H+": date.getHours(),
        "m+": date.getMinutes(),
        "s+": date.getSeconds(),
        "q+": Math.floor((date.getMonth() + 3) / 3),
        "S": date.getMilliseconds()
    };

    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4
            - RegExp.$1.length));
    }

    for (var k in o) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1
                ? o[k]
                : ("00" + o[k]).substr(("" + o[k]).length));
        }
    }
    return format;
}

/**
 * 全文搜索替换
 */
String.prototype.replaceAll = function (s1, s2) {
    return this.replace(new RegExp(s1, "gm"), s2);
};

$(function () {
    $(".show_price").each(function () {
        $(this).text(formatPrice($(this).text()));
    });
    $(".show_date").each(function () {
        $(this).text(FormatDateString($(this).text()));
    });
});

/**
 * 时间字符串的格式化
 * @param date 时间字符串
 * @param format 时间格式字符串
 * @return string format 格式化后的时间对象字符串
 */
function formatDateString(date, format) {
    var result="";
    if(date!=null&&date.length>0){
        date = date.replace(/-/g, "/");
        var d = new Date(date);
        if(!isNaN(d)){
            result=formatDate(d,format);
        }
    }
    return result;
}

function FormatDateString(date) {
    date = date.replace(/-/g, "/");
    var d = new Date(date);

    var year = d.getFullYear();
    var month = d.getMonth() + 1;
    if (month < 10) {
        month = '0' + month;
    }
    var day = d.getDate();
    if (day < 10) {
        day = '0' + day;
    }
    var hours = d.getHours();
    if (hours < 10) {
        hours = '0' + hours;
    }
    var minutes = d.getMinutes();
    if (minutes < 10) {
        minutes = '0' + minutes;
    }
    var seconds = d.getSeconds();
    if (seconds < 10) {
        seconds = '0' + seconds;
    }

    return year
        + "-" + month
        + "-" + day
        + " " + hours
        + ":" + minutes
        + ":" + seconds;
}

function checkPrice(me) {
    var reg = /[a-z]|[\u4e00-\u9fa5]/ig;
    me.value = me.value.replace(reg, '');
}

/**
 * 检查正数
 * @param me
 */
function checkNumber(me) {
    var reg = /\D/g;
    me.value = me.value.replace(reg, '');
}

/**
 * 检查正数，0，负数
 * @param me
 */
function checkNumber2(me) {
    var reg = /[^\d\-]/g;
    me.value = me.value.replace(reg, '');
}

function checkEmail(me) {
    var reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]{2,4})*\.[A-Za-z0-9]{2,3}$/;
    if(reg.test(me)){
        return true;
    }else{
        return false;
    }
}

function checkWebUrl(me) {
    var reg = /^(http:|https:)/;
    if(reg.test(me)){
        return true;
    }else{
        return false;
    }
}

function checkMobileNumber(me) {
    var reg = /^1[3456789]{1}\d{9}$/;
    if(reg.test(me)){
        return true;
    }else{
        return false;
    }
}

(function(){

    Validate={
        data:{
            // 加权因子
            Wi : [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ],

            // 身份证验证位值.10代表X
            ValideCode : [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]
        },
        /**
         * 身份证15位编码规则：dddddd yymmdd xx p
         * dddddd：地区码
         * yymmdd: 出生年月日
         * xx: 顺序类编码，无法确定
         * p: 性别，奇数为男，偶数为女
         * <p />
         * 身份证18位编码规则：dddddd yyyymmdd xxx y
         * dddddd：地区码
         * yyyymmdd: 出生年月日
         * xxx:顺序类编码，无法确定，奇数为男，偶数为女
         * y: 校验码，该位数值可通过前17位计算获得
         * <p />
         * 18位号码加权因子为(从右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ]
         * 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]
         * 校验位计算公式：Y_P = mod( ∑(Ai×Wi),11 )
         * i为身份证号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置
         *
         */
        idCardValidate : function (idCard) {
            if (idCard.length == 15) {
                return Validate.isValidityBirthBy15IdCard(idCard);
            } else if (idCard.length == 18) {
                var a_idCard = idCard.split("");// 得到身份证数组
                if(Validate.isValidityBirthBy18IdCard(idCard)
                    &&Validate.isTrueValidateCodeBy18IdCard(a_idCard)){
                    return true;
                }else {
                    return false;
                }
            } else {
                return false;
            }
        },

        /**
         * 判断身份证号码为18位时最后的验证位是否正确
         * @param a_idCard 身份证号码数组
         * @return
         */
        isTrueValidateCodeBy18IdCard : function (a_idCard) {
            var sum = 0; // 声明加权求和变量
            if (a_idCard[17].toLowerCase() == 'x') {
                a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作
            }
            for ( var i = 0; i < 17; i++) {
                sum += Validate.data.Wi[i] * a_idCard[i];// 加权求和
            }
            valCodePosition = sum % 11;// 得到验证码所位置
            if (a_idCard[17] == Validate.data.ValideCode[valCodePosition]) {
                return true;
            } else {
                return false;
            }
        },

        /**
         * 通过身份证判断是男是女
         * @param idCard 15/18位身份证号码
         * @return 'female'-女、'male'-男
         */
        maleOrFemaleByIdCard : function (idCard){
            if(idCard.length==15){
                if(idCard.substring(14,15)%2==0){
                    return 'female';
                }else{
                    return 'male';
                }
            }else if(idCard.length ==18){
                if(idCard.substring(14,17)%2==0){
                    return 'female';
                }else{
                    return 'male';
                }
            }else{
                return null;
            }
        },

        /**
         * 验证18位数身份证号码中的生日是否是有效生日
         * @param idCard 18位书身份证字符串
         * @return
         */
        isValidityBirthBy18IdCard : function (idCard18){
            var year =  idCard18.substring(6,10);
            var month = idCard18.substring(10,12);
            var day = idCard18.substring(12,14);
            var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
            // 这里用getFullYear()获取年份，避免千年虫问题
            if(temp_date.getFullYear()!=parseFloat(year)
                ||temp_date.getMonth()!=parseFloat(month)-1
                ||temp_date.getDate()!=parseFloat(day)){
                return false;
            }else{
                return true;
            }
        },

        /**
         * 验证15位数身份证号码中的生日是否是有效生日
         * @param idCard15 15位书身份证字符串
         * @return
         */
        isValidityBirthBy15IdCard : function (idCard15){
            var year =  idCard15.substring(6,8);
            var month = idCard15.substring(8,10);
            var day = idCard15.substring(10,12);
            var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
            // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法
            if(temp_date.getYear()!=parseFloat(year)
                ||temp_date.getMonth()!=parseFloat(month)-1
                ||temp_date.getDate()!=parseFloat(day)){
                return false;
            }else{
                return true;
            }
        }

    }

})();

function trim(str) {
    return str.replace(/(^\s*)|(\s*$)/g, "");
}
function ltrim(str) {
    return str.replace(/(^\s*)/g, "");
}
function rtrim(str) {
    return str.replace(/(\s*$)/g, "");
}

//去除所有空格，包括中间空格
function trimAll(str)
{
    var result;
    result = str.replace(/\s/g,"");
    return result;
}

function checkMobileNumber(me) {
    var reg = /^1[3456789]{1}\d{9}$/;
    if(reg.test(me)){
        return true;
    }else{
        return false;
    }
}

function setcookie(name, value, days) {
    let Days = 1;
    if(days && !isNaN(days) && parseInt(days) > 0){
        Days = parseInt(days);
    }
    let exp = new Date();
    exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
    document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/";
}
function getcookie(name) {
    let arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
    if (arr != null)
        return unescape(arr[2]);
    return "";
}
function delCookie(name) {
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval = getcookie(name);
    if (cval != null)
        document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
}



/**
 * 检查是否在微信中打开了页面
 * @returns {boolean}
 * @constructor
 */
function IsInWeixin(){

    var result = false;
    var ua = window.navigator.userAgent.toLowerCase();
    if (ua.match(/MicroMessenger/i) == 'micromessenger') {
        result = true;
    }
    return result;

}

/**
 * 检查是否在安卓手机端中打开了页面
 * @returns {boolean}
 * @constructor
 */
function IsInAndroid(){
    var result = true;
    if (/Android/i.test(window.navigator.userAgent)==false) {
        result = false
    }
    return result;
}


function replaceHtmlContent(html){

    return html.replace(/<(?!\/?p)[^<>]*>/ig,'');

}

function isZeroDate(dateString) {
    var result = false;
    if (dateString.length <= 0
        || dateString === "0000-00-00 00:00:00"
        || dateString === "1000-01-01 00:00:00"
        || dateString === "0000-00-00"
        || dateString === "1000-01-01"
        || dateString === "1970-01-01 00:00:00"
    ) {
        result = true;
    }
    return result;
}


/** 显示全屏 loading */
function showLoadingMaskForCommon(loadingContent) {
    loadingContent = loadingContent || 'Loading...';
    var strHtml = '';
    strHtml += '<div id="mask_loading" style="position:fixed;width:100%;height:100%;top:0;left:0;background-color:#fff;opacity:.6;z-index:1000!important">';
    // strHtml += '<div id="mask_loading" style="position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(255,255,255,.6);z-index:1000!important">';
    strHtml += '<div style="position:absolute;left:0;top:40%;width:100%;text-align:center;color:#fff">';
    strHtml += '<img alt="" src="/system_template/common/style/default/images/manage/spinner.gif" style="width:auto">';
    strHtml += '<span style="display:block;font-size:20px;color:#333">' + loadingContent + '</span>';
    strHtml += '</div>';
    strHtml += '</div>';
    $("body").append(strHtml);
}
/** 移除全屏 loading */
function removeLoadingMaskForCommon() {
    if ($("#mask_loading").length > 0) {
        $("#mask_loading").remove();
    }
}