function checkAll(obj){
	$("input[type='checkbox']").prop("checked", obj.checked);
	$("#checkCount").length > 0 ? $("#checkCount").text($("input[type='checkbox']:not('input[name='all']'):checked").length) : "";
  $.checkbox();
  for (let index = 0; index < $("input[type='checkbox']").length; index++) {
    const element = $("input[type='checkbox']")[index];
	if($(element).parent().parent().parent().parent().attr('class').split(' ').indexOf('table-gray')== -1){
		if(obj.checked){
			$(element).parent().parent().addClass('blue-hover')
		} else {
			$(element).parent().parent().removeClass('blue-hover')
		}
	}
  }
}

function itemCheck(){
	$("input[name='all']").prop("checked", $("input[type='checkbox']:not('.checkbox-white')").length == $("input[type='checkbox']:not('input[name='all']'):checked").length ? true : false);
	$("#checkCount").length > 0 ? $("#checkCount").text($("input[type='checkbox']:not('input[name='all']'):checked").length) : "";
  	$.checkbox();
	if($(this).parent().parent().parent().parent().attr('class').split(' ').indexOf('table-gray')== -1){
		if($(this).attr('class').split(' ').indexOf('checkbox-check')== 1){
			$(this).parent().parent().addClass('blue-hover')
		} else {
			$(this).parent().parent().removeClass('blue-hover')
		}
	}
  
}

function resetCheckAll(){
	$("input[name='all']").prop("checked",false);
	$("#checkCount").text(0);
	$.checkbox();
}

function del(e){
	$(e).parent().remove();
}

function html_encode(str){   
  var s = "";   
  if (str.length == 0) return "";   
  s = str.replace(/&/g, "&gt;");   
  s = s.replace(/</g, "&lt;");   
  s = s.replace(/>/g, "&gt;");   
  s = s.replace(/ /g, "&nbsp;");
  s = s.replace(/\'/g, "&#39;");   
  s = s.replace(/\"/g, "&quot;");   
  s = s.replace(/\n/g, "<br>");   
  return s;
}
 
function html_decode(str){   
  var s = "";   
  if (str.length == 0) return "";   
  s = str.replace(/&gt;/g, "&");   
  s = s.replace(/&lt;/g, "<");   
  s = s.replace(/&gt;/g, ">");   
  s = s.replace(/&nbsp;/g, " ");   
  s = s.replace(/&#39;/g, "\'");   
  s = s.replace(/&quot;/g, "\"");   
  s = s.replace(/<br>/g, "\n");   
  return s;   
}

function getImgUrl(str) {
	var reg =/\<img[^\>]*[\/]?\>/ig;
	var result = str.match(reg);
	if(result)
	{
	     for (var i = 0; i < result.length; i++)
	      {
	            result[i].replace( /src=(\"|\')?([^\"\>]*)(\"|\')?( |>|\/)/ig, function( $1,$2,$3,$4 ){
	                    result[i] = $3; } );
	    
	         }
	       return result;
	}
}

function ObjectArrayToJsonString(objArray) {  
    var objCount = arrayCount(objArray);  
    if (objCount > 0) {  
        var myJson = "[";  
        for (var i = 0; i < objCount; i++) {  
            myJson += JSON.stringify(objArray[i])+",";  
        }  
        myJson = myJson.slice(0, myJson.length - 1)+"]";  
        return myJson;  
     }  
    return null;  
}  

function arrayCount(myArray) {  
    var arrayType = typeof myArray;  
    if (arrayType = "string") {  
        return myArray.length;  
    }  
    else if (arrayType = "object") {  
        var n = 0;  
        for (var i in myArray) {  
            n++;  
        }  
        return n;  
    }  
    return false;  
}



/**
 * 根据最小二乘法计算趋势线公式 y=bx+a 的a,b值，
 * 并根据算出来的a,b值计算出每个x对应的y值，
 * 即为趋势线的y值，返回y值数组，直接用于echarts
 *
 * @param
 *      values - n个数据的数组
 * @return
 *      ys - 计算出的n个数据的趋势线数据数组
 */
function calTrendline(values) {
    /*
     * 根据最小二乘法求解，需要以下参数
     * ∑x, ∑y, ∑xx, ∑xy
     * 此处x取单位1即可，依次++
     */
    var n = values.length;
    var sumX = 0;
    var sumY = 0.0;
    var sumXX = 0;
    var sumXY = 0.0;
    for (var i = 1; i <= n; i ++) {
        sumX += i;
        sumY += values[i - 1];
        sumXX += (i * i);
        sumXY += (i * values[i - 1]);
    }
 
    // 求a,b
    var b = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
    var a = (sumY - b * sumX) / n;
 
    // 返回趋势线y值
    var ys = [];
    for (var i = 1; i <= n; i ++) {
        // 保留2位小数
        var bd =  b * i + a ;
        ys[i - 1] = bd.toFixed(3);
    }
    return ys;
}

/**
 * 数组去重
 * @param arr
 * @returns {Array}
 */
function unique(arr) {
	var result = [], hash = {};
    for (var i = 0, elem; (elem = arr[i]) != null; i++) {
      if (!hash[elem]) {
        result.push(elem);
        hash[elem] = true;
      }
    }
    return result;
}

/**
 * 使用jquery的inArray方法判断元素是否存在于数组中
 * @param {Object} arr 数组
 * @param {Object} value 元素值
 */
function isInArray2(arr,value){
    var index = $.inArray(value,arr);
    if(index >= 0){
        return true;
    }
    return false;
}

function removeByValue(arr, val) {
  for(var i=0; i<arr.length; i++) {
    if(arr[i] == val) {
      arr.splice(i, 1);
      break;
    }
  }
}

function onErrorImg(obj){
	obj.scr = 'static/img/noimg.jpg';
}