/******************************************************/
/* 文件名：univerify.js                               */
/* 功  能：基于自定义属性的统一检测用Javascript函数库 */
/* 作  者：纵横软件制作中心雨亦奇(zhsoft88@sohu.com)  */
/******************************************************/
/* 取得字符串的字节长度 */
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;
}
/* 检测字符串是否全为数字 */
function isnumber(str)
{
var number_chars = "1234567890";
var i;
for (i=0;i<str.length;i++)
{
if (number_chars.indexOf(str.charAt(i))==-1) return false;
}
return true;
}
/* 检测字符串是否全为数字包括小数 */
function isfloat(str)
{
	//var number_chars = "1234567890.-";
	//var i;
	//for (i=0;i<str.length;i++)
	//{
	//if (number_chars.indexOf(str.charAt(i))==-1) return false;
	//}
	
	//if (!isFirst(str)){
		//alert("wrong");
	//	return false;
	//}
	//return true;

	var number; 
  number = new Number(str); 
  if (isNaN(number)) 
  { 
   return false; 
  } 
  else 
  {
   return true; 
   }
  
}
/** 
IsDate: 用于判断一个字符串是否是日期格式的字符串 

返回值： 
  true或false 
   
参数： 
DateString： 需要判断的字符串 
Dilimeter ： 日期的分隔符，缺省值为'-' 

Author: PPDJ 
sample: 
  var date = '1999-1-2'; 
  if (IsDate(date)) 
  { 
   alert('You see, the default separator is "-"); 
  } 
  date = '1999/1/2"; 
  if (IsDate(date,'/')) 
  { 
   alert('The date's separator is "/"); 
  } 
*/ 
function isDate(DateString , Dilimeter) 
{ 
  if (DateString==null) return false; 
  if (Dilimeter=='' || Dilimeter==null) 
   Dilimeter = '-'; 
  var tempy=''; 
  var tempm=''; 
  var tempd=''; 
  var tempArray; 
  if (DateString.length<8 && DateString.length>10) 
    return false;    
  tempArray = DateString.split(Dilimeter); 
  if (tempArray.length!=3) 
   return false; 
  if (tempArray[0].length==4) 
  { 
   tempy = tempArray[0]; 
   tempd = tempArray[2]; 
  } 
  else 
  { 
   tempy = tempArray[2]; 
   tempd = tempArray[1]; 
  } 
  tempm = tempArray[1]; 
  var tDateString = tempy + '/'+tempm + '/'+tempd+' 8:0:0';//加八小时是因为我们处于东八区 
  var tempDate = new Date(tDateString); 
  if (isNaN(tempDate)) 
   return false; 
 if (((tempDate.getUTCFullYear()).toString()==tempy) && (tempDate.getMonth()==parseInt(tempm)-1) && (tempDate.getDate()==parseInt(tempd))) 
  { 
   return true; 
  } 
  else 
  { 
   return false; 
  } 
}
/* 检测字符串是否为数字 */
function isFirst(str){
	//alert("test");
	//alert(str.charAt(0));
	//alert(str.charAt(str.length-1));
	if ((str.charAt(0))=='.') return false;
	if ((str.charAt(str.length-1))=='.') return false;
	return true;
}

/* 检测指定文本框输入是否合法 */
function verifyInput(input)
{
var image;
var i;
var error = false;
/* 长度校验 */
if (strlen(input.value)>parseInt(input.maxsize))
{
alert(input.chname+"超出最大长度"+input.maxsize);
error = true;
}else if(strlen(input.value)<parseInt(input.minsize))
{
alert(input.chname+"小于最小长度"+input.minsize);
error = true;
}

else
/* 非空校验 */
if (input.nullable=="no"&&isnull(input.value))
{
alert(input.chname+"不能为空");
error = true;
}
else
{
/* 数据类型校验 */
//alert(input.datatype);
switch(input.datatype)
{
	/* 在这里可以添加多个自定义数据类型的校验判断 */
	/*  case datatype1: ... ; break;        */
	/*  case datatype2: ... ; break;        */
	/*  ....................................*/


//是数字
case "number": if (isnumber(input.value)==false)
{
alert(input.chname+"值应该全为数字");
error = true;
}
break;

//是百分比
case "rate": 
	if (isnumber(input.value)==false)
	{
		alert(input.chname+"值应该全为数字");
		error = true;
	}
	if ((parseInt(input.value)>100)||(parseInt(input.value)<0)){
		alert(input.chname+"值应该大于0小于100");
		error = true;
	}
break;

//是小数
case "float": 
	if (isfloat(input.value)==false)
	{
		alert(input.chname+"值应该全为数字");
		error = true;
	}
	
break;

//是日期
case "date": 
	if (isDate(input.value,"-")==false)
	{
		alert(input.chname+"格式不正确");
		error = true;
	}
	
break;

//默认
default		: break;
}
}
/* 根据有无错误设置或取消警示标志 */
if (error)
{
//image = document.getElementById("img_"+input.name);
//image.src="img/warning.gif";
return false;
}
else
{
//image = document.getElementById("img_"+input.name);
//image.src="img/space.gif";
return true;
}
}
/* 检测指定FORM表单所有应被检测的元素
（那些具有自定义属性的元素）是否合法，此函数用于表单的onsubmit事件 */
function verifyAll(myform)
{
var i;
for (i=0;i<myform.elements.length;i++)
{
 /* 非自定义属性的元素不予理睬 */
if (myform.elements[i].chname+""=="undefined") continue;
/* 校验当前元素 */
if (verifyInput(myform.elements[i])==false)
{
myform.elements[i].focus();
return false;
}
}
return true;
}

//检测输入的EMAIL格式是否正确
//BY:程锴，传入需要验证的字符串，返回TRUE或者FALSE
function isEmail(str){

var cs;
cs=/^[a-z0-9A-Z_]+@[a-z0-9A-Z_]+([\.][a-z0-9A-Z_]+){1,3}$/;

if (cs.test(str)==false)
{
return false;
}
else{
return true;
}
}


/*
	<script language="javascript" src="univerify.js"></script> 
	http://tech.ccidnet.com/pub/disp/Article?columnID=1115&articleID=55114&pageNO=2
*/
