//Function：五个函数：判断非空，判断日期，判断时间 ，判断数值，判断页数
//FileName: check.js
//Example: onclick="return checkNoNull()"
          //onBlur="return checkDate(this)"  onBlur="return checkTime(this)"
          //onBlur="return checkNum(this,10,2)"  onBlur="return checkPage(this,10)"
//Return:   true|false
//Note:  1.判断非空在按钮触发，判断日期、判断时间和判断数值在输入框触发,
           //其中判断非空(tab层）中的参数为要发送的值,
           //判断数值中的第一个参数this表示触发控件本身,第二个参数为数值总长度(不包括小数点),第三个参数为小数点位数,
                //当第三个参数为0时,只能输入最长为第二个参数的整数
          //判断页数后面一个参数为可以输入的最大页数





//判断表单是否可以提交
function checkForm(frm){
  if(!checkNoNull(frm)){
    return false;
  }else if (!enterCheck()){
    return false;
  }else
    return true;
}



function focusit(inputobj){
	if(inputobj.value.indexOf('请输入')!=-1)inputobj.value='';
	inputobj.style.color="#000000";
}

//判断非空
var checkNumArray=new Array();
function checkNoNull(ob){
    checkNumArray.length=0;
    var str="";
    var j=100;
    //var ob=window.document.forms[0];
    for (var i=0;i<ob.elements.length;i++){
        var k=ob.elements[i].type;
        if(k=="text" || k=="select-one" || k=="textarea" || k=="select-multiple" || k=="file"){//当类型为输入框或下拉框时
            var eachvalue=jsTrim(ob.elements[i].value);
            if(eachvalue=="" && ob.elements[i].id!="") {//当id不为空时并且值为空
                str=str+ob.elements[i].id+"，";
                if(j>i) j=i;
            }
        }
        if(k=="checkbox" || k=="radio"){
            //当类型为输入框或下拉框时
            var checkFlag=false;
            var checkFlag2=false;
            var elename=ob.elements[i].name;
            for(var m=0;m<checkNumArray.length;m++){
                if(checkNumArray[m]==elename){
                    checkFlag2=true;
                    break;
                }
            }
            //如果当前的控件以前没有检测过
            if(checkFlag2==false){
                checkNumArray[m]=elename;
                if(document.all[elename].length==null){
                    if(document.all[elename].id=="" || document.all[elename].checked==true)
                    {
                        checkFlag=true;
                    }
                }else{
                	var checkFlag1=false;
                	var checkFlag2=false;
                    for(var l=0;l<document.all[elename].length;l++)
                    {
                        if(document.all[elename][l].id!="")
                        {
                            checkFlag1=true;
                        }
                        if(document.all[elename][l].checked==true)
                        {
                            checkFlag2=true;
                        }
                    }
                    if(checkFlag1 && checkFlag2)
						checkFlag=true;
                }
                if(checkFlag==false)
                {
                    if(document.all[elename].length==null)
                    str=str+document.all[elename].id+"，";
                    else
                    str=str+document.all[elename][0].id+"，";
                    if(j>i) j=i;
                }
            }
        }
    }
	
	//当所求字符串不为空时证明有必填字段为空
    if (str!="")
    {
        if(ob.elements[j].disabled != true)ob.elements[j].focus();
        	alert(str+"不能为空！");
        return false;
    }else{
        return true;
    }
}


function submitForm(ob){
    checkNumArray.length=0;

    //var ob=window.document.forms[0];
    for (var i=0;i<ob.elements.length;i++){
        var k=ob.elements[i].type;
        if(k=="text" || k=="select-one" || k=="textarea" || k=="select-multiple" || k=="file"){//当类型为输入框或下拉框时
            var eachvalue=jsTrim(ob.elements[i].value);
            if(eachvalue=="" && ob.elements[i].id!="") {//当id不为空时并且值为空
        		alert(ob.elements[i].id);
        		if(ob.elements[i].disabled != true)ob.elements[i].focus();
        		return false;
            }
        }
        if(k=="checkbox" || k=="radio"){
            //当类型为输入框或下拉框时
            var checkFlag=false;
            var checkFlag2=false;
            var elename=ob.elements[i].name;
            for(var m=0;m<checkNumArray.length;m++){
                if(checkNumArray[m]==elename){
                    checkFlag2=true;
                    break;
                }
            }
            //如果当前的控件以前没有检测过
            if(checkFlag2==false){
                checkNumArray[m]=elename;
                var idStr= "";
                if(document.all[elename].length==null){
                    if(document.all[elename].id=="" || document.all[elename].checked==true)
                    {
                        checkFlag=true;
                    }else{
                    	idStr=document.all[elename].id;
                    }
                }else{
                	var checkFlag1=false;
                	var checkFlag2=false;
                	
                    for(var l=0;l<document.all[elename].length;l++)
                    {	
                    	if(document.all[elename][l].id!="")
                        {
                            checkFlag1=true;
                            idStr = document.all[elename][l].id;
                        }
                        if(document.all[elename][l].checked==true)
                        {
                            checkFlag2=true;
                        }
                    }
                    if(checkFlag1){
                    	if(checkFlag2)
							checkFlag=true; 
						else
							checkFlag=false; 
					}else{
						checkFlag=true;
					}                   
                }
                if(checkFlag==false)
                {	
                    
                    if(ob.elements[i].disabled != true)ob.elements[i].focus();
        			alert(idStr);
        			return false;

                }
            }
        }
    }

    return true;
}


function checkRegInfo(frm){
	var arr = eval('canSubmit');
	for(var i=0;i<arr.length;i++)
	{
		if(arr[i]==false)
		{
	    	return false;
		}
	}
	if(!submitForm(frm)){
	    return false;
	}
	return true;
}

//判断密码表单
function checkPwdForm(frm)
{	
	if(document.all.oldPassword && document.all.oldPassword.value==""){
		alert("Please input current password.");
	    document.all.passwordConfirm.focus();
	    return false;
	    return false;
	}
	var patrn=/^[a-zA-Z0-9]{4,19}$/; 
	if (!patrn.exec(document.all.password.value)) {
		alert("Password must input 4 to 20 characters (A-Z, a-z, 0-9, no spaces)");
	    document.all.password.focus();
	    return false;
	}
	else if(!patrn.exec(document.all.passwordConfirm.value)){
		alert("Re-enter Password must input 4 to 20 characters (A-Z, a-z, 0-9, no spaces)");
	    document.all.passwordConfirm.focus();
	    return false;
	}
	else if(document.all.password.value!=document.all.passwordConfirm.value)
	{
	    alert("The Confirm Password is incorrect. Please try again.");
	    document.all.passwordConfirm.focus();
	    return false;
	} else {
		return true;
	}
}

//判断密码
function checkPassword(){
if(document.all.new_password.value!=document.all.affirm_password.value)
{
    alert("两次密码必须相同!");
    return false;
}else if(!checkNoNull()){
    return false;
}else {return true;}
}

//判断日期
function checkDate(Obj)
{
    var thisdate=jsTrim(Obj.value);
    var str="格式错误!\n正确的格式如：\n2002-8-4";
    var reg = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;//正则表达式
    var arr = reg.exec(thisdate);
    if(thisdate=="") return true;
    if(reg.test(thisdate)&&RegExp.$2<=12&&RegExp.$3<=31)
        return true;
    else
    {
        alert(str);
        Obj.select();
        return false;
    }
}

//判断日期是不是月的第一天
function checkDateFirst(Obj)
{
    var thisdate=jsTrim(Obj.value);
    var str="格式错误!\n正确的格式如：\n2002-8-1\n且为每月的第一天";
    var reg = /^(\d{4})-(\d{1,2})-1$/;//正则表达式
    var arr = reg.exec(thisdate);
    if(thisdate=="") return true;
    if(reg.test(thisdate)&&RegExp.$2<=12)
        return true;
    else
    {
        alert(str);
        Obj.value="";
        return false;
    }
}

var sDate=new Date();
var year=sDate.getYear();
if (Number(year)<100) year="20"+year;
var month=sDate.getMonth()+1;
var day=sDate.getDate();
//取得当前日期
function currentDate(obj){
    document.all[obj].value=year+"-"+month+"-"+day;
    return true;
}
//判断日期并应小于当前日期
function checkDateEx(Obj)
{
    var thisdate=jsTrim(Obj.value);
    var str="格式错误!\n正确的格式如：\n2002-8-4";
    var str2="输入日期应小于当前日期,请重输!"
    var reg = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;//正则表达式
    var arr = reg.exec(thisdate);
    if(thisdate=="") return true;
    if(reg.test(thisdate)&&RegExp.$2<=12&&RegExp.$3<=31){
        if(RegExp.$1<year || RegExp.$2<month ||(RegExp.$1==year && RegExp.$2==month && RegExp.$3<day)){
            return true;
        }else{
            alert(str2);
            Obj.select();
            return false;
        }
    }else{
        alert(str);
        Obj.select();
        return false;
    }
}

//判断日期并应不大于指定日期
function checkReferDate(Obj,referDate)
{
    if(referDate != ""){
    var referYear = referDate.substring(0,referDate.indexOf("-"));
    var referMonth = referDate.substring(referDate.indexOf("-")+1,referDate.lastIndexOf("-"));
    var referDay = referDate.substring(referDate.lastIndexOf("-")+1,referDate.length);
    var thisdate=jsTrim(Obj.value);
    var str="格式错误!\n正确的格式如：\n2002-8-4";
    var str2="输入日期应不大于"+referDate+",请重输!"
    var reg = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;//正则表达式
    var arr = reg.exec(thisdate);
    if(thisdate=="") return true;
    if(reg.test(thisdate)&&RegExp.$2<=12&&RegExp.$3<=31){
        if(RegExp.$1<referYear || (RegExp.$1==referYear && RegExp.$2<referMonth) ||(RegExp.$1==referYear && RegExp.$2==referMonth && RegExp.$3<=referDay)){
            return true;
        }else{
            alert(str2);
            Obj.select();
            return false;
        }
    }else{
        alert(str);
        Obj.select();
        return false;
    }
    }else{
    return true;
    }
}

//将当前月份的第一天赋值给一个控件
function currentFirstDay(obj){
    if(month<8){
        month++;
        month='0'+month;
    }
    document.all[obj].value=year+"-"+month+"-01";
    return true;
}

//判断时间
function checkTime(Obj)
{
    var thistime=jsTrim(Obj.value);
    var str="格式错误!\n正确的格式如：\n2002-8-4 23:4:21";
    var reg = /^(\d{4})-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;//正则表达式
    var arr = reg.exec(thistime);
    if(thistime=="") return true;
    if(reg.test(thistime)&&RegExp.$2<=12&&RegExp.$3<=31&&RegExp.$4<24&&RegExp.$5<60&&RegExp.$6<60)
        return true;
    else
    {
        alert(str);
        Obj.select();
        return false;
    }
}


//判断年月
function checkYm(Obj){
    var thistime=jsTrim(Obj.value);
    var str="格式错误!\n正确的格式如：\n2002-8";
    var reg = /^(\d{4})-(\d{1,2})$/;//正则表达式
    var arr = reg.exec(thistime);
    if(thistime=="") return true;
    if(reg.test(thistime)&&RegExp.$2<=12)
        return true;
    else
    {
        alert(str);
        Obj.select();
        return false;
    }
}

//判断年月并应小于当前月份
function checkYmAndLessCurrMonth(Obj){
    var thistime=jsTrim(Obj.value);
    var str="格式错误!\n正确的格式如：\n2002-8";
    var str2="输入时间月份应小于当前月份,请重输!"
    var reg = /^(\d{4})-(\d{1,2})$/;//正则表达式
    var arr = reg.exec(thistime);
    if(thistime=="") return true;
    if(reg.test(thistime)&&RegExp.$2<=12){
        if(RegExp.$1<year||(RegExp.$1==year && RegExp.$2<month)){
            return true;
        }else{
            alert(str2);
            Obj.select();
            return false;
        }
    }else{
        alert(str);
        Obj.select();
        return false;
    }
}

//判断年份
function checkYear(Obj){
    var thistime=jsTrim(Obj.value);
    var str="只能输入年份!\n正确的格式如：\n2002";
    var reg = /^(\d{4})$/;//正则表达式
    var arr = reg.exec(thistime);
    if(thistime=="") return true;
    if(reg.test(thistime))
        return true;
    else
    {
        alert(str);
        Obj.select();
        return false;
    }
}

//判断年份并应小于当前年份
function checkYearAndLessCurrYear(Obj){
    var thistime=jsTrim(Obj.value);
    var str="只能输入年份!\n正确的格式如：\n2002";
    var str2="输入年份应小于当前年份,请重输!"
    var reg = /^(\d{4})$/;//正则表达式
    var arr = reg.exec(thistime);
    if(thistime=="") return true;
    if(reg.test(thistime)){
        if(RegExp.$1<year){
            return true;
        }else{
            alert(str2);
            Obj.select();
            return false;
        }
    }else{
        alert(str);
        Obj.select();
        return false;
    }
}

function checkByteLength(str,minlen,maxlen) {
	if (str == null) return false;
	var l = str.length;
	var blen = 0;
	for(i=0; i<l; i++) {
		if ((str.charCodeAt(i) & 0xff00) != 0) {
			blen ++;
		}
		blen ++;
	}
	if (blen > maxlen || blen < minlen) {
		return false;
	}
	return true;
}

//判断长度
function checkLength(Obj,len)
{
    var str = "输入的字符串应小于"+len+"!";
    var value=jsTrim(Obj.value);
    if(value && value.length>len){
      alert(str);
      return false;
    }
    else
      return true;
}

function checkContent(object,input_value) {
	//if (!(checkchi(input_value))) {
	//	alert('Sorry, the information you filled is not in English. Please input in English instead.                                            ');
	//	object.focus();
	//}
}

function checkKeyword(object,input_value)
  {
 
   //if (!(checkchi(input_value)))
   //{
	//	alert("Sorry, the information you filled is not in English. Please input in English instead.");

	//	object.focus();
	//	return;
   //}

   //if( checkContainComma(input_value) ){
   	//alert("Please do not include comma(,) in your keyword string.");
   	//object.focus();
   //}
  } 
  
function checkContainComma( value ){
    if(value==null)
        return false;
    for(i=0;i<value.length;i++){
        ch=value.charCodeAt(i);
        if(ch==44)
            return true;
    }    	 
    return false;
}

function checkchi(myint) {

 // var checkStr = myint;
  //var allValid = true;

  //for (i = 0;  i < checkStr.length;  i++)
  //{
  //  ch = checkStr.charCodeAt(i);
  //   if (ch > 256 && !isOkChar(ch))
  //  {      
  //    allValid = false;
  //    break;
  //  }
  //}
  //if ( !allValid )
  //{
   // return (false);
  //}

  return (true);

}
function isOkChar(ch)
{	
	var checkOk = new Array();
	checkOk[0] = "12288";
	checkOk[1] = "8364";
	for (j = 0;  j < checkOk.length;  j++)
      	if (ch == checkOk[j])
      	{
        	return true;
        }
    return false;
	
}

//判断数值
function checkNum(Obj,s,f)
{

        var thisnum=Obj.value;
        if(thisnum=="") return true;
        var n=s-f;//整数位数
        var i;
	if(isNaN(thisnum)!=true)//当输入为数值
	{
  		if(f>0)
  		{
  			i=thisnum.indexOf(".");
  			if(i==-1)//当找不到小数,可以输入整数
			{
				if(thisnum.length>n)
				{
					Obj.select();
					alert("输入的 整数位 应小于"+n+"位，请重输！");
					return false;
				}
				else return true;
			}

			if(i==0 || i==thisnum.length-1)
			{
				Obj.select();
				alert("输入错误,请重输!");
				return false;
			}

  			if(i>0)
  			{
  				var floatnum=thisnum.substr(i+1);//小数部分
  				var plusnum=thisnum.length-floatnum.length-1;//整数部分
  				if(plusnum>n)
				{
					Obj.select();
					alert("输入的 整数位 应小于"+n+"位，请重输！");
					return false;
				}
  				if (floatnum.length>f)
				{
					Obj.select();
					alert("输入的 小数位 应小于"+f+"位，请重输！");
					return false;
				}
			}

		}

		if(f==0)
		{
			i=thisnum.indexOf(".");
			if(i!=-1)
			{
				Obj.select();
				alert("只能输入整数且小于"+n+"位，请重输！");
				return false;
			}

			if(thisnum.length>n)
			{
				Obj.select();
				alert("只能输入整数且小于"+n+"位，请重输！");
				return false;
			}
		}

		return true;
	}
	else
	{
 	 	Obj.select();
  		alert("请输入一个数值！");
  		return false;
	}

}


//判断输入页数是否在参数范围内
function checkPage(obj,inputNum)
{
	var thisNum=jsTrim(obj.value);
	var str="输入数值不能大于页数或小于1，请重输！";
	if(thisNum=="") return true;
	if(!isNaN(thisNum))
	{
		if(thisNum>inputNum ||thisNum<1)
		{
            obj.value="";
			obj.select();
			alert(str);
			return false;
		}else{
			return true;
		}
	}
	else
	{
		obj.value="";
		obj.select();
		alert("输入数值不正确,请重输！");
		return false;
	}
}


//当输入回车键时判断输入页数是否在参数范围内
function enterCheckPage(obj,inputNum){
    if (event.keyCode==13) {
    	if(checkPage(obj,inputNum))
    		onSubmitForm(obj.form);
    	return false;
    }
}

//本函数用于对sString字符串进行后空格截除
function jsTrim(str){
	str = str.replace(/^\s*/g,"");
	str = str.replace(/\s*$/g,"");
	return str;
}


//实现四舍五入函数
function Number_prototype_Fixed(n){
with(Math){var tmp=pow(10,n);return round(this*tmp)/tmp;}
}


//附加-----------------------------------------------------------------------------------------------
/*
判断电子邮件地址是否正确
*/
function checkEmail(Obj){
	if(isEmail(Obj)){
		return true;
	}
	else{
		alert("请输入正确的电子邮件地址！");
		return false;
	}
}
	

function isEmail(Obj){
	var s = jsTrim(Obj.value); 
	if (isEmpty(s)) 
		return true;
	
	var validString = validAlpha + validDigit;
	var validEmail = validString + "@.-_";
	var v_email = s;
	var v_email2 = s.substr(s.indexOf("@") + 1);
	
	if (validString.indexOf(s.charAt(0)) == -1) 
		return false;
	for (var i = 0; i < s.length; i++){
		if (validEmail.indexOf(s.charAt(i)) == -1) 
		return false;
	}
	
	if ((v_email.indexOf("@") == -1) ||
	    (v_email.indexOf("@") == 0)  ||
	    (v_email.indexOf("@") != v_email.lastIndexOf("@")) ||
	    (v_email2.indexOf(".") == -1)  ||  
	    (v_email2.indexOf(".") == 0) ||
	    ((v_email.indexOf(".") + 1) == v_email.length)) 
	    return false;
	else 
		return true;
	return true;
}

//判断字符串是否为空
function isEmpty(s)
{
	s = trim(s);
	return ((s == null) || (s.length == 0));
}








