﻿/** 
*功能：	去掉字符串的前后空格
*参数：	strVal		字符串 
*返回：	去掉前后空格的字符串
*/
function trimString(strVal) {
    var reVal;
    var strTmp;
    strTmp = strVal + "";
    if (strTmp.length == 0)
        return (strTmp);
    reVal = /^(\s|　)*/;
    strTmp = strTmp.replace(reVal, '');
    reVal = /(\s|　)*$/;
    return (strTmp.replace(reVal, ''));
}


/** 
*功能：	打开窗口居中
*参数：	theURL		窗口地址 
*		winName：	窗口名称(目标) 
*		features：	窗口的其他属性
*返回：	新窗口 
*/
function openCenterWindow(theURL, winName, features) {
    var nWidth;
    var nHeight;
    var nLeft;
    var nTop;
    var strVal;
    var nPos;
    var strComb;
    var i;
    var chVal;
    nLeft = 0;
    nTop = 0;
    if (features == null)
        return (window.open(theURL, winName, features));
    strVal = features.toUpperCase();
    if (strVal.indexOf("LEFT", 0) >= 0 || strVal.indexOf("TOP", 0) >= 0)
        return (window.open(theURL, winName, features));
    if ((nPos = strVal.indexOf("WIDTH", 0)) < 0)
        return (window.open(theURL, winName, features));
    if ((nPos = strVal.indexOf("=", nPos)) < 0)
        return (window.open(theURL, winName, features));
    strComb = "";
    for (i = nPos + 1; i < features.length; i++) {
        chVal = features.charAt(i);
        if (chVal == " " || (chVal >= "0" && chVal <= "9"))
            strComb += chVal;
        else
            break;
    }
    if ((nWidth = eval(trimString(strComb))) <= 0)
        return (window.open(theURL, winName, features));
    if ((nPos = strVal.indexOf("HEIGHT", 0)) < 0)
        return (window.open(theURL, winName, features));
    if ((nPos = strVal.indexOf("=", nPos)) < 0)
        return (window.open(theURL, winName, features));
    strComb = "";
    for (i = nPos + 1; i < features.length; i++) {
        chVal = features.charAt(i);
        if (chVal == " " || (chVal >= "0" && chVal <= "9"))
            strComb += chVal;
        else
            break;
    }
    if ((nHeight = eval(trimString(strComb))) <= 0)
        return (window.open(theURL, winName, features));
    nLeft = (window.screen.width - nWidth) / 2;
    nTop = (window.screen.height - nHeight) / 2;
    features += ",left=" + nLeft + ",top=" + nTop;
    return (window.open(theURL, winName, features));
}

/** 
*功能：	创建一个显示HTML内容的模态对话框
*参数：	theURL		    指定对话框要显示的文档的URL地址 
*		vArguments：	用来向对话框传递参数。
*                       传递的参数类型不限，包括数组等。
*                       对话框通过window.dialogArguments来取得传递进来的参数。 
*		sFeatures：	    描述对话框的外观等信息
*返回：	模态对话框返回值 
*/
function openModalDialog(theURL, vArguments, sFeatures) {
    var vReturnValue = window.showModalDialog(theURL, vArguments, sFeatures);
    return vReturnValue;
}

/** 
*功能：	创建一个显示HTML内容的非模态对话框
*参数：	theURL		    窗口地址 
*		vArguments：	用来向对话框传递参数。
*                       传递的参数类型不限，包括数组等。
*                       对话框通过window.dialogArguments来取得传递进来的参数。 
* 
*		sFeatures：	    描述对话框的外观等信息
*返回：	对话框返回值 
*/
function openModelessDialog(theURL, vArguments, sFeatures) {
    var vReturnValue = window.showModelessDialog(theURL, vArguments, sFeatures);
    return vReturnValue;
}

/** 
*功能：	提示对话框 
*参数：	msg：		提示信息	
*返回：		
*/
function showCommonAlert(msg) {
    if (typeof (msg) != "undefined" && msg != "") alert(msg);
}

//刷新父窗口
function refreshParent() {
    window.opener.location.href = window.opener.location.href;
    if (window.opener.progressWindow)
        window.opener.progressWindow.close();
    window.close();
}

//简单跳转 
function gotoPage(url) {
    window.location = url;
}

/** 
*功能：	刷新校验码
*参数：	imgId：		校验码图片ID	
*返回：		
*/
function changeValidateKey(imgId) {
    var changeURL = "";
    changeURL = eval(imgId).src + '&r=' + Math.random();
    eval(imgId).src = changeURL;
    //eval(imgId).setAttribute('src',changeURL);
    //setTimeout(function(){eval(imgId).src=changeURL; }  ,20);
}

//日期格式化
function getFormatDate(objDate, format) {
    var o =
	{
	    "M+": objDate.getMonth() + 1, //month
	    "d+": objDate.getDate(),    //day
	    "h+": objDate.getHours(),   //hour
	    "m+": objDate.getMinutes(), //minute
	    "s+": objDate.getSeconds(), //second
	    "q+": Math.floor((objDate.getMonth() + 3) / 3), //quarter
	    "S": objDate.getMilliseconds() //millisecond
	}

    if (/(y+)/.test(format))
        format = format.replace(RegExp.$1, (objDate.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;
}

//获取当前日期
function getCurrentDate() {
    var date = new Date();
    return getFormatDate(date, 'yyyy-MM-dd');
}

//日期加减
function dateAddDay(day) {
    var date = new Date();
    date = date.valueOf();
    date = date + parseInt(day) * 24 * 60 * 60 * 1000;
    date = new Date(date);
    return getFormatDate(date, 'yyyy-MM-dd');
}
//日期加减
function dateAddMonth(month) {
    var date = new Date();
    date.setMonth(date.getMonth() + parseInt(month));
    date = new Date(date);
    return getFormatDate(date, 'yyyy-MM-dd');
}

/**
用途：检查输入字符串是否为空或者全部都是空格
输入：str
返回：
如果全是空返回true,否则返回false
*/
function isNull(str) {
    if (str == "" || str == null || str.length == 0) return true;
    var regu = "^[ 　]+$";
    var re = new RegExp(regu);
    return re.test(str);
}


/** 
*功能：	检查参数对象的值是否符合E-Mail格式 
*参数：	str：	参数的字符串 
*返回：	如果通过验证返回true,否则返回false 
*/
function isEmail(strEmail) {
    var myReg = /^[_a-zA-Z][_a-zA-Z0-9]*@[_a-z0-9]+\.[a-zA-Z]{2,5}(\.[a-zA-Z]{2,3})?$/;
    var emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
    if (emailReg.test(strEmail))
        return true;
    return false;
}


/**	
* ^[1-9]d*$　 　 //匹配正整数
* ^-[1-9]d*$ 　 //匹配负整数
* ^-?[1-9]d*$　　 //匹配整数
* ^[1-9]d*|0$　 //匹配非负整数（正整数 + 0）
* ^-[1-9]d*|0$　　 //匹配非正整数（负整数 + 0）
* ^[1-9]d*.d*|0.d*[1-9]d*$　　 //匹配正浮点数
* ^-([1-9]d*.d*|0.d*[1-9]d*)$　 //匹配负浮点数
* ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$　 //匹配浮点数
* ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$　　 //匹配非负浮点数（正浮点数 + 0）
* ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$　　//匹配非正浮点数（负浮点数 + 0）
* 功能：	判断是否为数字
* 参数：	strNumber：		数字字符串
*		flag：			数字字符串类型
* 返回：	如果通过验证则返回true,否则返回false 
*/
function isNumeric(strNumber, flag) {
    if (isNaN(strNumber)) {
        return false;
    }
    //正数去掉+号
    switch (flag) {
        case "r": //实数  
            return /^(-¦\+)?\d+(\.\d+)?$/.test(strNumber);
        case "+": //正数  + 0
            return /^\d+(\.\d+)?$/.test(strNumber);
        case "-": //负数  
            return /^-\d*\.?\d+$/.test(strNumber);
        case "i": //整数 
            return /^-?\d+$/.test(strNumber);
        case "+i": //正整数 
            return /^[0-9]*[1-9][0-9]*$/.test(strNumber);
        case "i+": //非负整数(正整数 + 0)
            return /^\d+$/.test(strNumber);
        case "-i": //负整数 
            return /^-[0-9]*[1-9][0-9]*$/.test(strNumber);
        case "i-": //非正整数（负整数 + 0）
            return /^((-\d+)|(0+))$/.test(strNumber);
        case "f": //浮点数 
            return /^(-?\d+)(\.\d+)?$/.test(strNumber);
        case "+f": //正浮点数 
            return /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/.test(strNumber);
        case "f+": //非负浮点数 
            return /^\d+(\.\d+)?$/.test(strNumber);
        case "-f": //负浮点数 
            return /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/.test(strNumber);
        case "f-": //非正浮点数 
            return /^((-\d+(\.\d+)?)|(0+(\.0+)?))$/.test(strNumber);
        default: //缺省 (数字)
            return /^[0-9]*$/.test(strNumber);
    }
}

/**
*规则：	移动: 前3位 134-139  或者 150-159   一共11位
*		联通: 前3位 130-133  或者 150-159   一共11位
* 		新增18号段
*		小灵通: 第一位为0 一共11位
*	     这是最新规则
*功能：	检查参数的电话号码格式是否正确（仅手机号）
*参数：	str：	字符串
*返回：	如果通过验证返回true,否则返回false
*/
function isMobile(str) {
    var regu = /(^[1][3][0-9]{9}$)|(^[1][5][0-9]{9}$)|(^[1][8][0-9]{9}$)|(^[0][1-9]{1}[0-9]{9}$)/;
    var reg = new RegExp(regu);
    if (reg.test(str)) {
        return true;
    } else {
        return false;
    }
}


/**
*要求：
*　　	(1)电话号码由数字、"("、")"和"-"构成
*　　	(2)电话号码为3到8位
*　　	(3)如果电话号码中包含有区号，那么区号为三位或四位
*　　	(4)区号用"("、")"或"-"和其他部分隔开
*　　	(5)移动电话号码为11或12位，如果为12位,那么第一位为0
*　　	(6)11位移动电话号码的第一位和第二位为"13"或"15"
*　　	(7)如果包含国际区号2-3位 [0\+]\d{2,3}
*　　	(8)分机号3-4位  0\d{2,3}
* 
*　　	根据这几条规则，可以与出以下正则表达式：
*　　	(^[0-9]{3,4}[0-9]{7,8}$)|(^\([0-9]{3,4}\)([0-9]{3,8})(-(\d{3,4}))?$)|(^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,4}))?$)
*功能：	检查参数的电话号码格式是否正确(包含手机)
*参数：	str：	字符串
*返回：	如果通过验证返回true,否则返回false
*/
function isPhone(str) {
    var regu = /^\d{1,11}$/;

    var reg = new RegExp(regu);
    if (reg.test(str)) {
        return true;
    } else {
        return false;
    }
}
/**
*格式要求 (1)国家代码(2到3位)-区号(2到3位)-电话号码(7到8位)-分机号(2到5位)
*			/^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{2,5}))?$/
*		(2)手机号
*			/(^0{0,1}13[0-9]{9}$)|(^0{0,1}15[0-9]{9}$)|(^0{0,1}18[0-9]{9}$)/
*		(2)小灵通
*			/^[0][1-9]{1}[0-9]{9}$/ 
*功能：	检查参数的电话号码格式是否正确(包含手机)
*参数：	str：	字符串
*返回：	如果通过验证返回true,否则返回false
*/
function isTel(str) {
    var regu = /(^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{2,5}))?$)|(^0{0,1}13[0-9]{9}$)|(^0{0,1}15[0-9]{9}$)|(^0{0,1}18[0-9]{9}$)|(^[0][1-9]{1}[0-9]{9}$)/;
    var reg = new RegExp(regu);
    if (reg.test(str)) {
        return true;
    } else {
        return false;
    }
}


/**
*格式化数字
*@param number表示要格式化的数
*@param pattern 格式
*alert(formatNumber(0,''));
*alert(formatNumber(12432.21,'#,###'));
*alert(formatNumber(12432.21,'#,###.000#'));
*alert(formatNumber(12432,'#,###.00'));
*alert(formatNumber('12432.415','#,###.0#'));
*/
function formatNumber(number, pattern) {
    var str = number.toString();
    var strInt;
    var strFloat;
    var formatInt;
    var formatFloat;
    if (/\./g.test(pattern)) {
        formatInt = pattern.split('.')[0];
        formatFloat = pattern.split('.')[1];
    } else {
        formatInt = pattern;
        formatFloat = null;
    }

    var fix = '0';
    if (formatFloat != null) fix = (0).toFixed(formatFloat.length);
    fix = fix.split('.')[1];

    if (/\./g.test(str) || /\./g.exec(str)) {
        if (formatFloat != null) {
            var tempFloat = Math.round(parseFloat('0.' + str.split('.')[1]) * Math.pow(10, formatFloat.length)) / Math.pow(10, formatFloat.length);
            strInt = (Math.floor(number) + Math.floor(tempFloat)).toString();
            strFloat = /\./g.test(tempFloat.toString()) ? tempFloat.toString().split('.')[1] : fix;
        } else {
            strInt = Math.round(number).toString();
            strFloat = '0';
        }
    } else {
        strInt = str;
        strFloat = fix;
    }

    if (formatInt != null) {
        var outputInt = '';
        var zero = formatInt.match(/0*$/)[0].length;
        var comma = null;
        if (/,/g.test(formatInt)) {
            comma = formatInt.match(/,[^,]*/)[0].length - 1;
        }
        var newReg = new RegExp('(\\d{' + comma + '})', 'g');

        if (strInt.length < zero) {
            outputInt = new Array(zero + 1).join('0') + strInt;
            outputInt = outputInt.substr(outputInt.length - zero, zero)
        } else {
            outputInt = strInt;
        }

        var 
        outputInt = outputInt.substr(0, outputInt.length % comma) + outputInt.substring(outputInt.length % comma).replace(newReg, (comma != null ? ',' : '') + '$1')
        outputInt = outputInt.replace(/^,/, '');

        strInt = outputInt;
    }

    if (formatFloat != null) {
        var outputFloat = '';
        var zero = formatFloat.match(/^0*/)[0].length;

        if (strFloat.length < zero) {
            outputFloat = strFloat + new Array(zero + 1).join('0');
            //outputFloat        = outputFloat.substring(0,formatFloat.length);
            var outputFloat1 = outputFloat.substring(0, zero);
            var outputFloat2 = outputFloat.substring(zero, formatFloat.length);
            outputFloat = outputFloat1 + outputFloat2.replace(/0*$/, '');
        } else {
            outputFloat = strFloat.substring(0, formatFloat.length);
        }

        strFloat = outputFloat;
    } else {
        if (pattern != '' || (pattern == '' && strFloat == '0')) {
            strFloat = '';
        }
    }

    return strInt + (strFloat == '' ? '' : '.' + strFloat);
}

function formatNumber1(number, pattern) {
    var str = number.toString();
    var strInt;
    var strFloat;
    var formatInt;
    var formatFloat;
    if (/\./g.test(pattern)) {
        formatInt = pattern.split('.')[0];
        formatFloat = pattern.split('.')[1];
    } else {
        formatInt = pattern;
        formatFloat = null;
    }

    var fix = '0';
    if (formatFloat != null) fix = (0).toFixed(formatFloat.length);
    fix = fix.split('.')[1];

    if (/\./g.test(str) || /\./g.exec(str)) {
        if (formatFloat != null) {
            var tempFloat = Math.round(parseFloat('0.' + str.split('.')[1]) * Math.pow(10, formatFloat.length)) / Math.pow(10, formatFloat.length);
            strInt = (Math.floor(number) + Math.floor(tempFloat)).toString();
            strFloat = /\./g.test(tempFloat.toString()) ? tempFloat.toString().split('.')[1] : fix;
        } else {
            strInt = Math.round(number).toString();
            strFloat = '0';
        }
    } else {
        strInt = str;
        strFloat = fix;
    }

    if (formatInt != null) {
        var outputInt = '';
        var zero = formatInt.match(/0*$/)[0].length;
        var comma = null;
        if (/,/g.test(formatInt)) {
            comma = formatInt.match(/,[^,]*/)[0].length - 1;
        }
        var newReg = new RegExp('(\\d{' + comma + '})', 'g');

        if (strInt.length < zero) {
            outputInt = new Array(zero + 1).join('0') + strInt;
            outputInt = outputInt.substr(outputInt.length - zero, zero)
        } else {
            outputInt = strInt;
        }

        var 
        outputInt = outputInt.substr(0, outputInt.length % comma) + outputInt.substring(outputInt.length % comma).replace(newReg, (comma != null ? ',' : '') + '$1')
        outputInt = outputInt.replace(/^,/, '');

        strInt = outputInt;
    }

    if (formatFloat != null) {
        var outputFloat = '';
        var zero = formatFloat.match(/^0*/)[0].length;

        if (strFloat.length < zero) {
            outputFloat = strFloat + new Array(zero + 1).join('0');
            //outputFloat        = outputFloat.substring(0,formatFloat.length);
            var outputFloat1 = outputFloat.substring(0, zero);
            var outputFloat2 = outputFloat.substring(zero, formatFloat.length);
            outputFloat = outputFloat1 + outputFloat2.replace(/0*$/, '');
        } else {
            outputFloat = strFloat.substring(0, formatFloat.length);
        }

        strFloat = outputFloat;
    } else {
        if (pattern != '' || (pattern == '' && strFloat == '0')) {
            strFloat = '';
        }
    }

    if (strFloat != '' && parseFloat(strFloat) <= 0)
        strFloat = '';

    return strInt + (strFloat == '' ? '' : '.' + strFloat);
}

function replaceAjaxUrl(strVal) {
    var reVal;
    var strTmp;
    strTmp = strVal + "";
    if (strTmp.length == 0)
        return (strTmp);

    reVal = /%/g;
    strTmp = strTmp.replace(reVal, '%25');
    reVal = /#/g;
    strTmp = strTmp.replace(reVal, '%23');
    reVal = /&/;
    strTmp = strTmp.replace(reVal, '%26');
    reVal = /\+/g;
    strTmp = strTmp.replace(reVal, '%2B');
    reVal = /\\/g;
    strTmp = strTmp.replace(reVal, '%2F');
    reVal = /=/g;
    strTmp = strTmp.replace(reVal, '%3D');
    reVal = /\?/g;
    strTmp = strTmp.replace(reVal, '%3F');

    return strTmp;
}

/**
* 检查图片类型
* @param fileURL
* @return
*/
function checkImgType(fileURL) {
    var right_type = new Array(".gif", ".jpg", ".jpeg", ".png", ".bmp")
    var right_typeLen = right_type.length;
    var imgUrl = fileURL.toLowerCase();
    var postfixLen = imgUrl.length;
    var len4 = imgUrl.substring(postfixLen - 4, postfixLen);
    var len5 = imgUrl.substring(postfixLen - 5, postfixLen);
    for (i = 0; i < right_typeLen; i++) {
        if ((len4 == right_type[i]) || (len5 == right_type[i])) {
            return true;
        }
    }
    return false;
}

/** 
*功能：	检查参数对象的值是否符邮政编码格式 
*参数：	str：		参数的字符串 
*返回：	如果通过验证返回true,否则返回false 
*/
function isZip(str) {
    //var filter=/^[1-9]\d{5}$/;
    var filter = /^[0-9]{6}$/;
    if (!filter.test(str)) return false;
    return true;
}



/**	
*功能：	获取字符串的长度
*参数：	strVal：	字符串
*返回：	返回字符串的字节长度
*/
function getReaLength(strVal) {
    var tempStr;
    tempStr = strVal.replace(/(^\s*)|(\s*$)/g, '');

    return tempStr.replace(/[^\x00-\xff]/g, "**").length;
}


/** 
*功能：	判断密码是否是字母 数字等组成并且6-20位
*参数：	str：		参数的字符串 
*返回：	如果通过验证返回true,否则返回false 
*/
function isPassword(str) {
    var filter = /^([0-9a-zA-Z]){6,20}$/;
    if (!filter.exec(str)) return false;
    return true;
}

/** 
*功能：	判断用户名是否是字母 数字 . _等组成并且6-20位
*参数：	str：		参数的字符串 
*返回：	如果通过验证返回true,否则返回false 
*/
function isUsername(str) {
    var filter = /^\s*[.A-Za-z0-9_-]{6,20}\s*$/;
    var filter = /^[a-zA-Z]+\s*[.A-Za-z0-9_-]{5,20}\s*$/;
    if (!filter.test(str)) return false;
    return true;
}

/** 
*功能：	检查参数字符串是否由字母和数字组成 
*参数：	str：	字符串 
*返回：	如果通过验证返回true,否则返回false 
*/
function isNumbAndLett(str) {
    // var reg=/^([a-z]+(?=[0-9])|[0-9]+(?=[a-z]))[a-z0-9]+$/ig; 

    var reg = /^(([a-z]+[0-9]+)|([0-9]+[a-z]+))[a-z0-9]*$/i;

    return reg.test(str);
}

/** 
*功能：	判断字符串是否排列有序的字符
*参数：	str：		参数的字符串 
*返回：	如果通过验证返回true,否则返回false 
*/
function isSequence(str) {
    var intcount = 0;
    var inttemp = 0;
    for (i = 0; i < str.length; i++) {
        if (str.charCodeAt(i) - inttemp == 1) {
            intcount = intcount + 1;
        }
        else {
            intcount = 1;
        }
        inttemp = str.charCodeAt(i);
        if (intcount >= 3) {
            return true;
        }
    }
    return false;
}

/** 
*功能：	判断字符串是否有3个以上的连续相同字符
*参数：	str：		参数的字符串 
*返回：	如果通过验证返回true,否则返回false 
*/
function isSameChar(str) {
    //检验是否有三个相同的字符
    for (i = 0; i < str.length - 2; i++) {
        if (str.substr(i, 1) == str.substr(i + 1, 1) && str.substr(i, 1) == str.substr(i + 2, 1)) {
            return true;
        }
    }
    return false;
}


//非法字符过滤
function is_forbid(temp_str) {
    temp_str = trimTxt(temp_str);
    temp_str = temp_str.replace('*', "@");
    temp_str = temp_str.replace('--', "@");
    temp_str = temp_str.replace('/', "@");
    temp_str = temp_str.replace('+', "@");
    temp_str = temp_str.replace('\'', "@");
    temp_str = temp_str.replace('\\', "@");
    temp_str = temp_str.replace('$', "@");
    temp_str = temp_str.replace('^', "@");
    temp_str = temp_str.replace('.', "@");
    //temp_str = temp_str.replace('(',"@");
    //temp_str = temp_str.replace(')',"@");
    //temp_str = temp_str.replace(',',"@");
    temp_str = temp_str.replace(';', "@");
    temp_str = temp_str.replace('<', "@");
    temp_str = temp_str.replace('>', "@");
    //temp_str = temp_str.replace('?',"@");
    temp_str = temp_str.replace('"', "@");
    temp_str = temp_str.replace('{', "@");
    temp_str = temp_str.replace('}', "@");
    //temp_str = temp_str.replace('[',"@");
    //temp_str = temp_str.replace(']',"@");
    var forbid_str = new String('@,%,~,&');
    var forbid_array = new Array();
    forbid_array = forbid_str.split(',');
    for (i = 0; i < forbid_array.length; i++) {
        if (temp_str.search(new RegExp(forbid_array[i])) != -1)
            return false;
    }
    return true;
}


