/****************************************
*Program	：	Verify.js               *
*DateTime	：	2004-9-10               *
*Author		：	zhangtao                *
*Describe	：	用于客户端表单的验证    *
*Mark       ：  如果脚本出错，请将WebConfig中的字符集改为gb2312
*****************************************/
/*************************************************************************************
/*使用verifyInput， verifyAllInfoOfInput， verifyAll函数需要对?*
/*1、chname：表示该数据的中文名称，用于校验出错时显示用。 
/*
/*2、maxsize：表示允许输入的最大长度，这个长度是以节字计算的。 
/*
/*3、nullable：表示输入值是否允许为空。为yes时允许为空。 
/*
/*4、datatype：表示输入值的数据类型。这个数据类型用户可以根据需要自行定义，需要注意的是，
/*对于每一个新的数据类型，均需要在添加相应的校验函数，从而实现统一校验。 
****************************************************************************************/
/* 检测指定文本框输入是否合法 */
function verifyInput(input)//校验Input的数据，但不包括必填属性的校验
{
	var image;
	var i;
	var error = false;
	var strTemp;
	var inputMaxSize;
	
	if(input.datatype == "double")
	{
		inputMaxSize = parseInt(input.maxsize)+2;
	}
	else
	{
		inputMaxSize = parseInt(input.maxsize);
	}
	
	
	if ((strlen(input.value)>inputMaxSize)&&(!error))
	{
		
		alert(input.chname+"最多输入"+inputMaxSize+"个字符");
		error = true;
	}

	if (!error)
	{
		
		strTemp = trim(input.value);
		
		switch(input.datatype)
		{
			case "number": 
				if ((isnumber(strTemp)||isnull(strTemp))==false)
				{
					alert(input.chname+"值应该全为数字！");
					error = true;
				}
				break;
				
			case "double":
				
				if ((isdouble(strTemp)||isnull(strTemp))==false)
				{
					alert(input.chname+"输入有误！")
					error = true;
				}
				else
				{
					formatfloat(input);	
				}
				break;
			default		: break;
		}
	}
	
	if (error)
	{
		input.focus();
		input.select();
		return false;
	}
	else
	{
		CalculateData(input);
		return true;
	}
	
}

/* 取得字符串的字节长度 */
function strlen(str)
{
	var i;
	var len;
	len = 0;
	for (i=0;i<str.length;i++)
	{
		if (str.charCodeAt(i)>255) len+=2; else len++;
	}
	return len;
}

/* 检测字符串是否为空 */
function isnull(str)
{
	var i;
	for (i=0;i<str.length;i++)
	{
		if (str.charAt(i)!=' ') return false;
	}
	return true;
}

/*
==================================================================
字符串操作
Trim(string):去除字符串两边的空格
==================================================================
*/

/*
==================================================================
LTrim(string):去除左边的空格
==================================================================
*/
function ltrim(str)
{
    var whitespace = new String(" \t\n\r");
    var s = new String(str);

    if (whitespace.indexOf(s.charAt(0)) != -1)
    {
	    var j=0, i = s.length;
        while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
        {
            j++;
        }
        s = s.substring(j, i);
    }
    return s;
}

/*
==================================================================
RTrim(string):去除右边的空格
==================================================================
*/
function rtrim(str)
{
    var whitespace = new String(" \t\n\r");
    var s = new String(str);

    if (whitespace.indexOf(s.charAt(s.length-1)) != -1)
    {
        var i = s.length - 1;
        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
        {
            i--;
        }
        s = s.substring(0, i+1);
    }
    return s;
}

/*
==================================================================
Trim(string):去除前后空格
==================================================================
*/

function trim(str)
{
    return rtrim(ltrim(str));
}

/*
isnumber(string,string,int or string):(测试字符串,+ or - or empty,empty or 0)
功能：判断是否为整数、正整数、负整数、正整数+0、负整数+0
*/
function isnumber(objStr,sign,zero)
{
    var reg;    
    var bolzero;    

    if(trim(objStr)=="")
    {
        return false;
    }
    else
    {
        objStr=objStr.toString();
    }    

    if((sign==null)||(trim(sign)==""))
    {
        sign="+-";
    }

    if((zero==null)||(trim(zero)==""))
    {
        bolzero=false;
    }
    else
    {
        zero=zero.toString();
        if(zero=="0")
        {
            bolzero=true;
        }
        else
        {
            alert("检查是否包含0参数，只可为(空、0)");
        }
    }
  
    switch(sign)
    {
        case "+-":
            //整数
            reg=/(^-?|^\+?)\d+$/;            
            break;
        case "+": 
            if(!bolzero)           
            {
                //正整数
                reg=/^\+?[0-9]*[1-9][0-9]*$/;
            }
            else
            {
                //正整数+0
                //reg=/^\+?\d+$/;
                reg=/^\+?[0-9]*[0-9][0-9]*$/;
            }
            break;
        case "-":
            if(!bolzero)
            {
                //负整数
                reg=/^-[0-9]*[1-9][0-9]*$/;
            }
            else
            {
                //负整数+0
                //reg=/^-\d+$/;
                reg=/^-[0-9]*[0-9][0-9]*$/;
            }            
            break;
        default:
            alert("检查符号参数，只可为(空、+、-)");
            return false;
            break;
    }

    var r=objStr.match(reg);
    if(r==null)
    {
        return false;
    }
    else
    {        
        return true;     
    }
}

/*
isdouble(string,string,int or string):(测试字符串,+ or - or empty,empty or 0)
功能：判断是否为浮点数、正浮点数、负浮点数、正浮点数+0、负浮点数+0
*/
function isdouble(objStr,sign,zero)
{
    var reg;    
    var bolzero;    

    if(trim(objStr)=="")
    {
        return false;
    }
    else
    {
        objStr=objStr.toString();
    }    

    if((sign==null)||(trim(sign)==""))
    {
        sign="+-";
    }

    if((zero==null)||(trim(zero)==""))
    {
        bolzero=false;
    }
    else
    {
        zero=zero.toString();
        if(zero=="0")
        {
            bolzero=true;
        }
        else
        {
            alert("检查是否包含0参数，只可为(空、0)");
        }
    }

    switch(sign)
    {
        case "+-":
            //浮点数
            reg=/^((-?|\+?)\d+)(\.\d+)?$/;
            break;
        case "+": 
            if(!bolzero)           
            {
                //正浮点数
                reg=/^\+?(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
            }
            else
            {
                //正浮点数+0
                reg=/^\+?\d+(\.\d+)?$/;
            }
            break;
        case "-":
            if(!bolzero)
            {
                //负浮点数
                reg=/^-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
            }
            else
            {
                //负浮点数+0
                reg=/^((-\d+(\.\d+)?)|(0+(\.0+)?))$/;
            }            
            break;
        default:
            alert("检查符号参数，只可为(空、+、-)");
            return false;
            break;
    }

    var r=objStr.match(reg);
    if(r==null)
    {
        return false;
    }
    else
    {        
        return true;     
    }
}




function verifyAllInfoOfInput(input)//校验Input输入数据。包括所有属性。
{
	var image;
	var i;
	var error = false;
	var strTemp;
	var strname;
	
	if ((strlen(input.value)>parseInt(input.maxsize))&&(!error))
	{
		alert(input.chname+"最多输入"+input.maxsize+"个字符");
		error = true;
	}

	
	if (input.nullable=="no"&&isnull(input.value)&&(!error))
	{
		alert(input.chname+"不能为空");
		error = true;
	}

	if (!error)
	{
		
		strTemp = trim(input.value);
		switch(input.datatype)
		{
			case "number": 
				if ((isnumber(strTemp)||isnull(strTemp))==false)
				{
					alert(input.chname+"值应该全为数字！");
					error = true;
				}
				break;
				
			case "double":
				if ((isdouble(strTemp)||isnull(strTemp))==false)
				{
					alert(input.chname+"输入有误！");
					error = true;
				}
				else
				{
					formatfloat(input);	
				}
				break;
			case "CardID":
				
				strname = input.name;
				switch(strname.toLowerCase())
				{
					case "txtidcard": //投资法人身份证校验
						if(isnull(input.value) == false)
						{
							if(CheckValue(input.value) == false)
							{
								error = true;
							}
						}
						break;
					case "txtcardid": //公司法人身份证校验
						
						if(form1.ddlCardName.value == "1")
						{
							if(CheckValue(input.value) == false)
							{
								error = true;
							}
						}
						break;
					default :break;
				}
				break;
			case "username":
				if (isusername(strTemp) == false)
				{
					alert(input.chname+"输入有误！")
					error = true;
				}
				break;
			case "userpwd":
				if (isuserpwd(strTemp) == false)
				{
					alert(input.chname+"输入有误！")
					error = true;
				}
				break;
			default		: break;
		}
	}
	
	if (error)
	{
		return false;
	}
	else
	{
		return true;
	}
	
}

/*格式化浮点值*/
function formatfloat(elm)
{
	//目前控制格式化浮点值保留小数点后2位。
	if (!(trim(elm.value)==""))
	{
		elm.value = adv_format(elm.value, 2);
	}
}

//***********************************************************
//Function formatnumber(value,num)
//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 f_str;
		  var temp =a_str.indexOf('.');
		  a_str =a_str.substring(0,temp)+a_str.substring(temp+1);
          a_int = parseFloat(a_str);
          a_int = a_int + 1;
          f_str = a_str.substring(0,1)
          if(f_str == "0")
          {
			a_str = "0"+a_int.toString().substring(0,a_int.toString().length-2)+"."+a_int.toString().substring(a_int.toString().length-2);
          }
          else
          {
			a_str = a_int.toString().substring(0,a_int.toString().length-2)+"."+a_int.toString().substring(a_int.toString().length-2);
		  }
		  	//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 CalculateData(inputElm)
{
	//实际拆迁建筑面积 = 住宅面积+营业用房面积+其他用房面积
	if ((inputElm.id == "txtBulidArea")||(inputElm.id == "txtBusinessBuildArea")||
	    (inputElm.id == "txtOtherBulidArea"))
	{
		Form1.txtFaceBulidArea.value = Form1.txtBulidArea.value * 1 +
				Form1.txtBusinessBuildArea.value * 1+Form1.txtOtherBulidArea.value * 1;
				
		Form1.txtFaceBulidArea.value =adv_format(Form1.txtFaceBulidArea.value,2);
	}	
	//结案占比 = 结案数量/交办案件件数
	if ((inputElm.id == "txtCaseCount")||(inputElm.id == "txtCompleteCaseCount"))
	{
		if (Form1.txtCaseCount.value * 1!=0)
		{
			Form1.txtCompleteCaseRate.value = Form1.txtCompleteCaseCount.value * 1 /
					(Form1.txtCaseCount.value * 1);
					
			Form1.txtCompleteCaseRate.value =adv_format(Form1.txtCompleteCaseRate.value,2);
		}
		else
		{
			Form1.txtCompleteCaseRate.value = 0;
		}
	}	
	//结案息访占比 = 结案息访数量/结案数量
	if ((inputElm.id == "txtCompleteDominateCount")||(inputElm.id == "txtCompleteCaseCount"))
	{
		if (Form1.txtCompleteCaseCount.value * 1!=0)
		{
			Form1.txtCompleteDominateRate.value = Form1.txtCompleteDominateCount.value * 1 /
					(Form1.txtCompleteCaseCount.value * 1);
					
			Form1.txtCompleteDominateRate.value =adv_format(Form1.txtCompleteDominateRate.value,2);
		}
		else
		{
			Form1.txtCompleteDominateRate.value = 0;
		}
	}	
}

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;
}

function onclickcheck(formNeedCheck)
{
	if (!verifyAll(formNeedCheck))
	{
		return false;
	}
	else
	{
		return true;
	}
}

function verifyAll(myform)
{
	var i;
	for (i=0;i<myform.elements.length;i++)
	{
		/* 非自定义属性的元素不予理睬 */
		if (myform.elements[i].chname+""=="undefined") continue;
		/* 校验当前元素 */
		if (verifyAllInfoOfInput(myform.elements[i])==false)
		{
			myform.elements[i].focus();
			return false;
		}
	}
	return true;
}

//检验checkbox状态
//参数：Form的ID
function checkState(FormName)
{
	var iNum = 0;
	var num = document.forms[FormName].length-1;
	
	for(i=0;i<=num;i=i+1)
	{
		if(document.forms[FormName].elements[i].name.indexOf("chk")>=0 && document.forms[FormName].elements[i].checked!=0)
		{
			iNum++;
		}
	}
	if (iNum == 0)
	{
		alert("请选择您要操作的信息！");
		return false;
	}
	if (iNum >1)
	{
		alert("每次只能操作一条信息！");
		return false;
	}
	
}
//检验checkbox状态
//参数：Form的ID
function checkDelState(FormName1)
{
	var iNum = 0;
	var num = document.forms[FormName1].length-1;
	
	for(i=0;i<=num;i=i+1)
	{
		if(document.forms[FormName1].elements[i].name.indexOf("chk")>=0 && document.forms[FormName1].elements[i].checked!=0)
		{
			iNum++;
		}
	}
	if (iNum == 0)
	{
		alert("请选择您要删除的信息！");
		return false;
	}
	if (iNum >0)
	{
		return confirm("您确认要删除选定记录吗？\n");
	}
	
}


function shleft1(){
	if (parent.main.cols=="0,*"){
		parent.main.cols="200,*,"
		document.getElementById("heading").src="../images/left.jpg";
	}
	else{
		parent.main.cols="0,*"
		document.getElementById("heading").src="../images/right.jpg";
	}
}

function shleft(){
	if (parent.main.cols=="0,*"){
		parent.main.cols="200,*,"
		document.getElementById("arrow").src="../../images/arrow_leftward.gif";
	}
	else{
		parent.main.cols="0,*"
		document.getElementById("arrow").src="../../images/arrow_rightward.gif";
	}
}
function opennewweb(url)
{
	var child = null;
	child = window.open(url,'','height=170, width=230, toolbar=no, menubar=no, scrollbars=no,resizable=no,location=n o, status=no');
	return;
}

/*
==================================================================
检查身份证是否合法
==================================================================
*/
function CheckValue(idCard){
    var id=idCard;
    var id_length=id.length;
//	if (FormUserInfo.UserBasinInfo_ddlCer.value =="001")
//	{
		if (id_length==0){
		alert("请输入身份证号码!");
		return false;
		}

		if (id_length!=15 && id_length!=18){
			alert("身份证号长度应为15位或18位！");
			return false;
		}

		if (id_length==15){
			yyyy="19"+id.substring(6,8);
			mm=id.substring(8,10);
			dd=id.substring(10,12);

			if (mm>12 || mm<=0){
				alert("输入身份证号,月份非法！");
				return false;
			}

			if (dd>31 || dd<=0){
				alert("输入身份证号,日期非法！");
				return false;
			}

			birthday=yyyy+ "-" +mm+ "-" +dd;

			if ("13579".indexOf(id.substring(14,15))!=-1){
				sex="1";
			}else{
				sex="2";
			}
		}else if (id_length==18){
			if (id.indexOf("X") > 0 && id.indexOf("X")!=17 || id.indexOf("x")>0 && id.indexOf("x")!=17){
				alert("身份证中\"X\"输入位置不正确！");
				return false;
			}

			yyyy=id.substring(6,10);
			if (yyyy>2200 || yyyy<1900){
				alert("输入身份证号,年度非法！");
				return false;
			}

			mm=id.substring(10,12);
			if (mm>12 || mm<=0){
				alert("输入身份证号,月份非法！");
				return false;
			}

			dd=id.substring(12,14);
			if (dd>31 || dd<=0){
				alert("输入身份证号,日期非法！");
				return false;
			}

			if (id.charAt(17)=="x" || id.charAt(17)=="X")
			{
				if ("x"!=GetVerifyBit(id) && "X"!=GetVerifyBit(id)){
					alert("身份证校验错误，请检查最后一位！");
					return false;
				}

			}else{
				if (id.charAt(17)!=GetVerifyBit(id)){
					alert("身份证校验错误，请检查最后一位！");
					return false;
				}
			}

			birthday=id.substring(6,10) + "-" + id.substring(10,12) + "-" + id.substring(12,14);
			if ("13579".indexOf(id.substring(16,17)) > -1){
				sex="1";
			}else{
				sex="2";
			}
		}

		//return true;
//	}
    
}

function GetVerifyBit(id){
    var result;
    var nNum=eval(id.charAt(0)*7+id.charAt(1)*9+id.charAt(2)*10+id.charAt(3)*5+id.charAt(4)*8+id.charAt(5)*4+id.charAt(6)*2+id.charAt(7)*1+id.charAt(8)*6+id.charAt(9)*3+id.charAt(10)*7+id.charAt(11)*9+id.charAt(12)*10+id.charAt(13)*5+id.charAt(14)*8+id.charAt(15)*4+id.charAt(16)*2);
    nNum=nNum%11;
    switch (nNum) {
       case 0 :
          result="1";
          break;
       case 1 :
          result="0";
          break;
       case 2 :
          result="X";
          break;
       case 3 :
          result="9";
          break;
       case 4 :
          result="8";
          break;
       case 5 :
          result="7";
          break;
       case 6 :
          result="6";
          break;
       case 7 :
          result="5";
          break;
       case 8 :
          result="4";
          break;
       case 9 :
          result="3";
          break;
       case 10 :
          result="2";
          break;
    }
    //document.write(result);
    return result;
}
//15位转18位
function Get18(idCard){
 if (CheckValue(idCard)){
  var id = idCard;
  var id18=id;
  if (id.length==0){
   alert("请输入15位身份证号！");
   return false;
  }
  if (id.length==15){
   if (id.substring(6,8)>20){
    id18=id.substring(0,6)+"19"+id.substring(6,15);
   }else{
    id18=id.substring(0,6)+"20"+id.substring(6,15);
   }

   id18=id18+GetVerifyBit(id18);
  }

  return id18;
 }else{
  return false;
 }
}

//用于用户名、密码表单验证
//主要用于Register/reg.aspx
//校验用户名：只能输入4-16个以字母开头、可带数字、“_”、“.”的字串
function isusername(s)
{
	var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){3,16}$/;
	if (!patrn.exec(s)) return false
	return true
}

//校验密码：只能输入4-16个字母、数字、下划线
function isuserpwd(s)
{
var patrn=/^(\w){4,16}$/;
if (!patrn.exec(s)) return false
return true
}

function searchdata(str) //查找完后刷新通用列表
{
   document.all.SearchHidden.value = str; 
   document.forms[0].BtnQuery.click();
   return false;
}

function bbimg(o){
	var zoom=parseInt(o.style.zoom, 10)||100;zoom+=event.wheelDelta/12;if (zoom>0) o.style.zoom=zoom+'%';
	return false;
}

function onclickcheckGovCase(formNeedCheck)
{
	if (!verifyAll(formNeedCheck))
	{
		return false;
	}
	else
	{
		if ((formNeedCheck.txtCaseCount.value-formNeedCheck.txtCompleteCaseCount.value)<0.00)
		{
			alert("交办案件件数应大于等于结案情况数量。");
			formNeedCheck.txtCaseCount.focus();
			return false;
		}
		if ((formNeedCheck.txtCompleteCaseCount.value-formNeedCheck.txtCompleteDominateCount.value)<0.00)
		{
			alert("结案情况数量应大于等于结案息访情况数量。");
			formNeedCheck.txtCompleteCaseCount.focus();
			return false;
		}
		return true;
	}
}


//公共检索函数
function ret(form)
{
	var strret;
	var strctl = "";
	for(var i=0; i< form.length; i++)
	{
		if(form.elements[i].id.indexOf("chkExport") > -1 && form.elements[i].checked == true)
		{
			strctl = form.elements[i].id;
			var reg = /chkExport/;
			strctl = strctl.replace(reg,"lblColumn1");
			break;
		}
	}
	if (strctl=="")
	{
		return;
	}
	returnValue = document.all[strctl].value;

	window.close();
}

function Search(paraname)
{
	var para = document.all[paraname].value;
	
    var paraarr = para.split("|");
	var tb = paraarr.length>0 ? paraarr[0] : "";
    
	var displaylist = paraarr.length>1 ? paraarr[1] :"";
	var retfd = paraarr.length>2 ? paraarr[2] :"";
	var wherefd = paraarr.length>3 ? paraarr[3] :"";
	var ctlname = paraarr.length>4 ? paraarr[4].split(",") :"";
	var wherestr = paraarr.length>5 ? paraarr[5] : "1=1" ;
	
	var output = window.showModalDialog("CQCSearchCommon.aspx?" + "tb=" + tb + "&displaylist=" + displaylist + "&retfd=" + retfd + "&wherefd=" + wherefd + "&wherestr=" + wherestr,null,"dialogHeight:600px;dialogWidth:800px");
	//var output = window.open("CQCSearchCommon.aspx?" + "tb=" + tb + "&displaylist=" + displaylist + "&retfd=" + retfd + "&wherefd=" + wherefd,null,"dialogHeight:600px;dialogWidth:800px");
	var ctlval;
	if(output != null)
	{
		ctlval = output.split(",");
	}
	
	for(var i=0; i<ctlname.length && i<ctlval.length; i++)
	{
		document.all[ctlname[i]].value = ctlval[i];
	}
}

function SelProj(RegionNum)
{
	var output = window.showModalDialog("CQCSelProj.aspx?RegionNum=" + RegionNum,null,"dialogHeight:600px;dialogWidth:800px");
	//var output = window.open("CQCSearchCommon.aspx?" + "tb=" + tb + "&displaylist=" + displaylist + "&retfd=" + retfd + "&wherefd=" + wherefd,null,"dialogHeight:600px;dialogWidth:800px");
	
	var ctlval;
	if (output != null)
	{
		ctlval = output.split("|");

		document.all["txtSelProjName"].value = ctlval[0];
		document.all["hidSelProjNum"].value = ctlval[1];
	}
}

function radioclick(form,ctl)
{
	for (var i=0; i< form.length; i++)
	{
		if(form.elements[i].id.indexOf("chkExport") > -1 && form.elements[i].checked == true)
		{
			form.elements[i].checked = false;
		}
	}
	ctl.checked = true;
}