﻿//check_notNull(notNUll) notNull值不为空
//以下函数如果传值为null或者"",均返回true
//check_ip_address(ip_address)
//check_float(num) 
//check_int(num)  全为数字
//check_date(str)日期验证
//check_fix_tel(tel)  //验证固定电话 0570开头，或者没有区号
//check_code(code)  //身份证号码
//check_email(email)
//isdate(intYear,intMonth,intDay) 日期验证

function check_ip_address(ip_address) //匹配IP地址
{
	if(check_notNull(ip_address)==true)
	{
		var regExp;
		regExp= /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/  ;//正则表达式,IP地址
		if (regExp.exec(ip_address)==null)
		{
			//alert("IP地址格式不正确")；
			return false;
		}
	}
	return true;   
}
function check_notNull(notNull){//不为空，返回true
	if(notNull==null || notNull.length==0)  return false;
	return true;	
}

function check_float(num) //验证float型
{
	if(check_notNull(num)==true)
	{
		var regExp;
		regExp= /^\d+(\.\d+)?$/;//正则表达式,float验证
		if (regExp.exec(num)==null)
		{
			//alert("num格式不正确")；
			return false;
		}
	}
	return true;   
}
function check_int(num) //验证int型
{
	if(check_notNull(num)==true)
	{
		var regExp;
		regExp= /^[0-9]+$/;//正则表达式,全数字验证
		if (regExp.exec(num)==null)
		{
			//alert("num格式不正确")；
			return false;
		}
	}
	return true;   
}

function check_fix_tel(tel) //验证固定电话.需要修改
{
	if(check_notNull(tel)==true)
	{		
		if(tel.length<3)
			return false;					
		var regExp;
 		//regExp= /^\d+(\.\d+)?$/;
 		regExp=/0\d{2,3}-\d{5,9}(-|转)\d{1,5}/;//正则表达式,验证
 		if (regExp.exec(tel)==null)
  			return false;
	}
	return true;   
}

//验证手机
//以13开头的手机号码---目前手机号以13或者15开头
function check_mobil(mobil) 
{
	if(check_notNull(mobil)==true)
	{
		if(mobil.length!=11 || check_int(mobil)==false) return false;
		var oneChar;
		for(var i=0;i<2;i++){
			oneChar=mobil.charAt(i).charCodeAt(0); 
			if(i==0 && oneChar!=49) return false;
			if(i==1 && !(oneChar==51 || oneChar==53)) return false;
		}
	}
  return true;   
}

function check_email(email) //验证email
{
	if(check_notNull(email)==true)
	{
		var regExp;
		regExp= /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;//正则表达式,Email验证
		if (regExp.exec(email)==null) return false;
		else
		{
    		regExp= /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
    		if (regExp.exec(email)==null) return false;
		}
	}
    return true;   
}

//验证邮编
function check_zip(zip) 
{
	if(check_notNull(zip)==true)
	{
		if(zip.length!=6 || check_int(zip)==false)
			return false;
	}
  return true;   
}

//日期验证
function isdate(intYear,intMonth,intDay)
{
	if(check_notNull(intYear)==true || check_notNull(intMonth)==true || check_notNull(intDay)==true)
	{
		if(isNaN(intYear)||isNaN(intMonth)||isNaN(intDay)) return false;     
		if(intMonth>12||intMonth<1) return false;  
		if ( intDay<1||intDay>31)return false;  
		if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&(intDay>30)) return false;  
		if(intMonth==2){  
			if(intDay>29) return false;    
			if((((intYear%100==0)&&(intYear%400!=0))||(intYear%4!=0))&&(intDay>28))return false;  
		}  
	}
    return true;  
}
//以下为身份证验证代码
function check_code(code) 
{
	if(check_notNull(code)==true){
		var regExp;
		if (code.length==15){
			regExp= /^\d{15}$/;//正则表达式,15位且全是数字
			if (regExp.exec(code)==null){
				return false;
			}
			if (!isdate("19"+code.substring(6,8),code.substring(8,10),code.substring(10,12)))
			{
				//   alert("身份证号码中所含日期不正确") 
				return false;
			}
		}
		else if (code.length==18)
		{
			regExp= /^\d{17}(\d|x|X)$/;//正则表达式,18位且前17位全是数字，最后一位只能数字,x,X
			if (regExp.exec(code)==null)
			{
				//       alert("18位身份证号码必须为数字！")
				return false;

			}
			if (!isdate(code.substring(6,10),code.substring(10,12),code.substring(12,14)))
			{
				//   alert("身份证号码中所含日期不正确") 
				return false;
			}
			var strCheck  =[  "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];
			var intPower =[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];
			var intTemp=0;
			for(i = 0; i < code.length - 1; i++)
				intTemp +=  code.substring(i, i + 1)  * intPower[i];  
			intTemp %= 11;
			if(code.substring(code.length - 1,code.length).toUpperCase()!=strCheck[intTemp])
			{
				//   alert("验证码失败！")
				return false;
			}
		}
		else
		{
			//  alert("长度必须为15或18！")
			return false;
		}
	}
    return true;   
}
//以上为身份证验证代码

function check_date(str){
	if(check_notNull(str)==false) 	return true;
	if(str.length>10 || str.length<8)
		return false;
	var subIndex1 =str.indexOf("-");
	var subIndex2 =str.lastIndexOf("-");
	if(subIndex1!=4 ||subIndex2==-1){
		if(str.length==8){
			var intyear=str.substring(0,4);
			var intmonth=str.substring(4,6);
			var intdate=str.substring(6,8);
			return isdate(intyear,intmonth,intdate);
		}
		else{
			return false;
		}
	}	
	else{
		var intyear=str.substring(0,subIndex1);
		if(intyear<1900) return false;
		var intmonth=str.substring(subIndex1+1,subIndex2);
		var intdate=str.substring(subIndex2+1);
		if(intmonth.length>2 || intdate.length>2)
			return false;
		else
			return isdate(intyear,intmonth,intdate);		
	}	
}

//////控制只能输入整型或浮点型数字
//数字
function int_onkeypress() {
	if (event.keyCode<48 || event.keyCode>57){
		return false;
	}
}
//数字 和 小数点
function dec_onkeypress() {
	if ((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46){
		return false;
	}
}

function phone_onkeypress() {
	if ((event.keyCode<48 || event.keyCode>57) && event.keyCode!=45){
		return false;
	}
}

function floor_onkeypress() {
	window.status=event.keyCode;
	if ((event.keyCode<47 || event.keyCode>57) && event.keyCode!=70 && event.keyCode!=102){
	return false;
	}
}
//入网编号(小写转大写)
function id_onkeypress() {
	if (event.keyCode >=97 && event.keyCode<=122) {
		event.keyCode=event.keyCode-32;
	}
}



//替换全部的方法
String.prototype.ReplaceAll = stringReplaceAll;
function  stringReplaceAll(AFindText,ARepText){
  raRegExp = new RegExp(AFindText,"gm");
  return this.replace(raRegExp,ARepText)
}


/***********************************************************
Function formatnumber(value,num)
Written by zergling
javascript版本的FormatNumber函数，用法与VBScript相同，第一个参数是待格式化的数值，第二个是保留小数位数
注意：返回的是字符串类型
第一个函数需要调用第二个函数，所以第二个不能去掉
***********************************************************/
function adv_format(value,num) //四舍五入
{
var a_str = formatnumber(value,num);
var a_int = parseFloat(a_str);
if (value.toString().length>a_str.length)
{
var b_str = value.toString().substring(a_str.length,a_str.length+1)
var b_int = parseFloat(b_str);
if (b_int<5)
{
return a_str
}
else
{
var bonus_str,bonus_int;
if (num==0)
{
bonus_int = 1;
}
else
{
bonus_str = "0."
for (var i=1; i<num; i++)
bonus_str+="0";
bonus_str+="1";
bonus_int = parseFloat(bonus_str);
}
a_str = formatnumber(a_int + bonus_int, num)
}
}
return a_str
}

function formatnumber(value,num) //直接去尾
{
var a,b,c,i
a = value.toString();
b = a.indexOf('.');
c = a.length;
if (num==0)
{
if (b!=-1)
a = a.substring(0,b);
}
else
{
if (b==-1)
{
a = a + ".";
for (i=1;i<=num;i++)
a = a + "0";
}
else
{
a = a.substring(0,b+num+1);
for (i=c;i<=b+num;i++)
a = a + "0";
}
}
return a
}


