function $(str) {
	return document.getElementById(str);
}

//校验中文和字符长度
function lengthValid(str) {
	var sum=0;
	for(var i = 0;i<str.length;i++){
		if((str.charCodeAt(i)>=0) && (str.charCodeAt(i)<=255)){ 
			sum=sum+1;   
		}else{   
			sum=sum+2;   
		}
	}
	return sum;    
}

function isStrValid(str) {
    var flag_str = true;
    var reg = /^[a-zA-Z0-9_.]{5,20}$/;
    if(!str.match(reg)) {
        flag_account = false;
    }
    return flag_str;
}

function isIpAddress(str) {
    var flag_ip = true;
    var pattern = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/;
    if(!str.match(pattern)) {
        flag_ip = false;
    }
    return flag_ip;
}

//字符串是一个电子邮件地址时返回真true;空返回真

function isEmail(str) {
    var flag_email = true;
    var reg = /^(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)$/;
    if(!str.match(reg)) {
        flag_email = false;
    }
    return flag_email;
}

function isEmpty(str) {
    if(str || str == "null" || str.length == 0) {
        return true;
    }
    else {
        return false; 
    }
}

function isValidTelephone(str) {
    var reg=/^[0-9\-]{7,20}$/;
    if(!str.match(reg)){
        return false;
    }
    return true;   
}

function isValidMobile(str) {
    var reg=/^[0-9\-]{8,20}$/;
    if(!str.match(reg)){
        return false;
    }
    return true;   
}

//所有字符都是数字时返回真，空也返回真
function isInt(str){
  str=trim(str);
  if(str==null||str=="")return true;
  if(str.search(/^\d+$/)==-1)return false;
  else return true;
}

//如果字符串满足给定的日期格式返回真true;
function validateFullDate(aStr,aFormatString)
{
  //aStr=trim(aStr);
  Regexyyyy="[0-9]{4}";
  Regexyy="[0-9]{2}";
  Regexmm="(0[1-9]|1[0-2])";
  Regexdd="(0[1-9]|[1-2][0-9]|3[01])";
  Regexhh24="([01][0-9]|2[0-3])";
  Regexhh="(0[1-9]|1[0-2])";
  Regexmi="([0-5][0-9]|60)";
  Regexss="([0-5][0-9]|60)";
  aFormatString=aFormatString.replace(/\./,"\.");
  aFormatString=aFormatString.replace(/yyyy/i,Regexyyyy);
  aFormatString=aFormatString.replace(/yy/i,Regexyy);
  aFormatString=aFormatString.replace(/mm/i,Regexmm);
  aFormatString=aFormatString.replace(/dd/i,Regexdd);
  aFormatString=aFormatString.replace(/hh24/i,Regexhh24);
  aFormatString=aFormatString.replace(/hh/i,Regexhh);
  aFormatString=aFormatString.replace(/mi/i,Regexmi);
  aFormatString=aFormatString.replace(/ss/i,Regexss);
  aFormatString="^"+aFormatString+"$";
  return aStr.search(new RegExp(aFormatString,"i"))!=-1;
}

function checkIdcard(idcard){ 
	var Errors=new Array( 
	"验证通过!", 
	"身份证号码位数不对!", 
	"身份证号码出生日期超出范围或含有非法字符!", 
	"身份证号码校验错误!", 
	"身份证地区非法!" 
	); 
	var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} 
	   

	var idcard,Y,JYM; 
	var S,M; 
	var idcard_array = new Array(); 
	idcard_array = idcard.split(""); 
	//地区检验 
	if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4]; 
	//身份号码位数及格式检验 
	switch(idcard.length){ 
	case 15: 
	if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){ 
	ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性 
	} else { 
	ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性 
	} 
	if(ereg.test(idcard)) return Errors[0]; 
	else return Errors[2]; 
	break; 
	case 18: 
	//18位身份号码检测 
	//出生日期的合法性检查 
	//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) 
	//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8])) 
	if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){ 
	ereg=/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9X]$/;//闰年出生日期的合法性正则表达式 
	} else { 
	ereg=/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9X]$/;//平年出生日期的合法性正则表达式 
	} 
	if(ereg.test(idcard))   //测试出生日期的合法性 
	 return Errors[0]; //检测ID的校验位 
	else return Errors[2]; 
	break; 
	default: 
	return Errors[1]; 
	break; 
	} 
	}

function isOverLength(str,maxLength){	
	
	if (maxLength <= 0 || unicodeLength(str) <= maxLength){
		return false;
	}
	return true;
}
//得到字符串的字节长度
function unicodeLength(str){
	return (new String(str)).unicodeLength();
}
String.prototype.unicodeLength=function(){
	var l=0;
	for(var i=0;i<this.length;i++){
		if(this.charCodeAt(i)>255)l+=3;
		else l++;
	}
	return l;
};
function required(id)
{
   return document.getElementById(id).value=="";
}
function validateLength(id,maxLength){
  
	var fieldObj = document.getElementById(id);
	
	if(fieldObj){
		if(isOverLength(fieldObj.value,maxLength)){
			fieldObj.focus();
			return false;
		}
	}
	return true;
}

// 判断输入字符串是否为日期(Date)|
//
// 日期(Date)定义如下：
//
// 1.长度为8位的字符串;2.格式为年月日,eg.2001-09-11;3.1900-2100;
//
// 返回值：1：是;0：否
// @add by XJ

function isDate(objId)
{	
	var obj = document.getElementById(objId);
	var inStr = obj.value;
	var bf=true;
	
	var Year;
	var Month;
	var Day;

	var strDate=Trim(inStr);
	if(strDate.length==0){
		return true;
	}
	if(strDate.length!=10)
	// 判断长度是否正确
	{
		bf=false;
	}
	if(strDate.substring(4,5) != "-" || strDate.substring(7,8) != "-"){
		bf=false;
	}
	//
	// 取出Year,Month,Day
	//
	// char(10)格式的Date,直接取出Year,Month,Day
	Year=strDate.substring(0,4);
	Month=strDate.substring(5,7);
	Day=strDate.substring(8,10);
	//
	// 据取出的Year,Month,Day从逻辑上加以判断是否是日期
	//
	if( ( isDigit(Year)!=1 )||( isDigit(Month)!=1 )||( isDigit(Day)!=1 )||( Year<"1900" )||( Year>"2100" )||( Month<"01" )||( Month>"12" ) )
	// 年月日非数值或者年份过小过大认为不是日期
	{
		bf=false;
	}
	// 年份在一定范围(1900-2100)的情况下,判断月和日的数值是否正确
	switch(Month)
	{
		case '01':
		case '03':
		case '05':
		case '07':
		case '08':
		case '10':
		case '12':
		// 以上月份为31天
			if(Day<'01'||Day>'31')
				bf=false;
			break;
		case '04':
		case '06':
		case '09':
		case '11':
		// 以上月份为30天
			if(Day<'01'||Day>'30')
				bf=false;
			break;
		case '02':
			if(( parseInt(Year)%4==0 && parseInt(Year)%100!=0 )|| parseInt(Year)%400==0)
			// 闰年2
			{
				if(Day<'01'||Day>'29'){
					bf=false;
				}
			}else{
				if(Day<'01'||Day>'28'){
					bf=false;
				}
			}
			break;
	}		
	// obj.focus();
	return bf;
}

//
// 去除字符串头尾空白|
//
// 返回值：去除Space得到的子串
//
// @add by XJ
function Trim(inStr)
{
	if(isEmpty(inStr)==1)
		return "";
	var temp=inStr;
	while(temp.indexOf(' ')==0)
		temp=temp.substring(1,temp.length);
	while(temp.lastIndexOf(' ')==temp.length-1)
		temp=temp.substring(0,temp.length-1);
	return temp;
}

//
//为空检验|
//
//认为输入Space组成的字符串也为空
//返回值：1：是;0：否
//
//@add by XJ
function isEmpty(inStr)
{	
for(var i=0;i<inStr.length;i++)
	if(inStr.substring(i,i+1)!=" ")
		return 0;
return 1;
}

//
//判断输入的字符串是否为由数字组成的|
//
//数字介于0-9之间,不能有Space
//
//返回值：1：是;0：否;
//
//@add by XJ
function isDigit(inStr)
{
var Digits = "0123456789";
var temp;

if(isEmpty(inStr)==1)
	return 0;

for(var i=0;i<inStr.length;i++)
{
	temp=inStr.substring(i,i+1);
	if (Digits.indexOf(temp)==-1)
	{
		return 0;
	}
}
return 1;	
}

//
function isDouble(itemId) 
{
var str = document.getElementById(itemId).value;
var digits = ".0123456789";
var i = 0;
if(str==null) return true;
var sLength = str.length;
if(sLength==0)  return true;
while ((i < sLength))
{
var c = str.charAt(i);
if (digits.indexOf(c) == -1) return false;
i++;
}

return true;
}
//数字判断函数
function isNumber(itemId) 
{
var str = document.getElementById(itemId).value;
var digits = "0123456789";
var i = 0;


if(str==null) return false;
var sLength = str.length;
if(sLength==0)  return false;
while ((i < sLength))
{
var c = str.charAt(i);
if (digits.indexOf(c) == -1) return false;
i++;
}

return true;
}

/*
* 检验电话号码
*/
function checkPhoneNumber(fieldID)
{
var phoneNumber = document.getElementById(fieldID);
if (phoneNumber.value=="")
{	
	return true;
}
else
{
	var Letters = "0123456789()+-";
	for (i=0; i< phoneNumber.value.length; i++)
	{
		var CheckChar = phoneNumber.value.charAt(i);
		if (Letters.indexOf(CheckChar) == -1)
		{
			phoneNumber.focus();
			return false;
		}
		if((i==0 || i==phoneNumber.value.length-1)&&(CheckChar=="+" || CheckChar=="-")){
			phoneNumber.focus();
			return false;
		}
	}
}
return true;
}



function emailCheck(strEmail) {
if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1){
	return true;
}else{
	return false;
}
}
function checkLegalWord(fieldId)
{
var fieldValue = document.getElementById(fieldId).value;
if (fieldValue=="")
{	
	return true;
}
if(/^[0-9a-zA-Z]+$/g.test(fieldValue))
{
	return true;
}
return false;
}
function checkUnomalWord(fieldId)
{
var fieldValue = document.getElementById(fieldId).value;
if (fieldValue=="")
{	
	return true;
}
for(var i=0;i<fieldValue.length;i++)
{
	 var code = fieldValue.charCodeAt(i);
   var c  = fieldValue.charAt(i);
	 if(code<10000)
	 {
	 		if(!/[0-9a-zA-Z]+/.test(c))
	 		{
	 			return false;
	 		}
	 }
}
return true;
}

/**
* 比较两个日期大小，start>end时 return false;
*/
function compareDate(startId, endId){
var start = document.getElementById(startId).value;
var end = document.getElementById(endId).value;
start = start.replace(/-/g,"/");
end = end.replace(/-/g,"/"); 
var startDate = new Date(start);
var endDate = new Date(end); 
if (startDate > endDate)  {      
	return false;  
}
return true;
}

function checkName(str){
    var digits = "0123456789";
    var i =0;
    for ( i = 0; i < digits.length - 1; i++)
    {
        if (str.indexOf(digits.charAt(i)) != -1)
        {
            return false;
        }
    }
    return true;
}

//处理sql注入和JavaScript注入
function IsValid( id)
{
	if(id!=""){
			//加入sql和javascript注入的判断
		 re= /eval|select|update|delete|exec|count|'|"|=|;|>|<|javascript%/;
		 //re= /select|update|delete|exec|count|'|"|=|;|>|<|%/i;
		// alert(re.test(id));
		 if ( re.test(id) )
		 {
			 //alert(id);
			 return false;
		 }
		 re1= /%|'|"|or|like|=%/i;
		// alert(re.test(id));
		 if ( re1.test(id) )
		 {
			 //alert(id+id);
			 return false;
		 }
	}
	return true;
}


//针对保险卡投保人的身份证校验的方法
 function checkIdcardByInsurer(idcard){ 
	var Errors=new Array( 
	"验证通过!", 
	"身份证号码位数不对!", 
	"身份证号码出生日期超出范围或含有非法字符!", 
	"身份证号码校验错误!", 
	"身份证地区非法!" 
	); 
	var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} 
	   

	var idcard,Y,JYM; 
	var S,M; 
	var idcard_array = new Array(); 
	idcard_array = idcard.split(""); 
	//地区检验 
	if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4]; 
	//身份号码位数及格式检验 
	switch(idcard.length){ 
	case 15: 
	if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){ 
	ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性 
	} else { 
	ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性 
	} 
	//if(ereg.test(idcard)) return Errors[0]; 
	//else return Errors[2]; 
	return Errors[0];
	break; 
	case 18: 
	//18位身份号码检测 
	//出生日期的合法性检查 
	//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) 
	//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8])) 
	if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){ 
	ereg=/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9X]$/;//闰年出生日期的合法性正则表达式 
	} else { 
	ereg=/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9X]$/;//平年出生日期的合法性正则表达式 
	} 
	//if(ereg.test(idcard))   //测试出生日期的合法性 
	// return Errors[0]; //检测ID的校验位 
	//else return Errors[2]; 
	return Errors[0];
	break; 
	default: 
	return Errors[1]; 
	break; 
	} 
	}



