﻿

/******************************
**包含客户端验证函数 张建义 2007-4 7 21
*form表单名请指定为 formData
*******************************/
/**
*检查一个文本域的值是否为空

*@param string name 要检查的文本域的name属性

*@param string message 当文本域为空时显示的信息
*return boolean
*/
function CheckIfEmpty( name, message )
{
	var obj = document.form1.item(name);
	
	if( !obj ){
		alert ("checkIfEmpty函数调用错误！！！！！！(属性为"+name+"的对象不存在）");
		return true;
	}
	
	if( obj.value == "" ){
		alert( message );
		obj.style.backgroundColor = "#cccccc";
		 
		if( obj.type == "text" || obj.type == "textarea" || obj.type == "file" ){
			if( obj.readOnly ) return false;
			obj.focus();
			obj.onblur = clearColor;
		}
		return false;
	}
	return true;
}

function clearColor(){
	var obj = event.srcElement;
	//alert( typeof(obj) ==  );
	if( typeof(obj) == "undefined" ) return; 
	obj.style.backgroundColor = "";
}

function displayErr( obj ){

}

//错误提示
function DisplayErrField( name ){
	if( name == "" ) return ;
	var obj = document.form1.item(name);
	if( obj == null ) return;
	obj.style.backgroundColor = "#cccccc";
	if( obj.type == "text" || obj.type == "textarea" ){
		if( obj.readOnly ) return false;
		obj.focus();
		obj.onblur = clearColor;
	}
}


/**
*检查一组单选按扭或复选按扭是否有一个被选中
*@param string name 要检查的单选按扭或复选按扭的name属性

*@param string message 当无被选中选项时显示的信息
*return boolean
*/
/*
function checkIsChecked( name , message ){
		if( typeof(name) == "undefined" ){
			alert ("checkRadioIsChecked函数调用错误！！！！！！(请指定name参数）");
			return true;		
		}else if( typeof(message) == "undefined" ){			
			alert ("checkRadioIsChecked函数调用错误！！！！！！(请指定messgage参数）");
			return true;		
		}
			
		var obj = document.form1.item( name );
		if( !obj ){
			alert ("checkRadioIsChecked函数调用错误！！！！！！(属性为"+name+"的对象不存在）");
			return true;
		}
			
		if( typeof(obj.length) == "undefined" ){
			alert ("checkRadioIsChecked函数调用错误！！！！！！(属性为"+name+"的对象不是radio或checkbox）");
			return true;
		}
			
		for( i = 0; i < obj.length; i ++ ){
			if( obj[i].checked == true ) return true;
		}
		alert( message );
		return false;
}*/

/**
*检查一个文本域的值是否为空且全是数字
*@param string name 要检查的文本域的name属性

*@param string emptyMessage 当文本域为空时显示的信息
*@param string notNumMessage 当文本域值不全是数字时显示的信息
*return boolean
*/
function CheckIfNumber( name, emptyMessage, notNumMessage )
{
	var canEmpty = false;
	var _notNumMessage = "";
	
	if( typeof(notNumMessage) == "undefined" ){
		canEmpty = true ;
		 _notNumMessage = emptyMessage ;
	}else{
		 _notNumMessage = notNumMessage ;
	}

	var obj = document.form1.item(name);
	if( !obj ){
		alert ("checkIfNumber函数调用错误！！！！！！(属性为"+name+"的对象不存在）");
		return true;
	}
	
	if( canEmpty == false && obj.value == "" ){
		alert( emptyMessage );
		obj.focus();
		return false;
	}

	if( !IsNumber( obj.value ) ){
		alert( _notNumMessage );
		obj.focus();
		return false;
	}

	return true;

}

/**
*检查一个文本域的值是否为空且全是数字
*@param string name 要检查的文本域的name属性

*@param string emptyMessage 当文本域为空时显示的信息
*@param string notNumMessage 当文本域值不全是数字时显示的信息
*return boolean
*/
function CheckIfDecimal( name, emptyMessage, notNumMessage )
{

	var obj = document.form1.item(name);
	if( !obj ){
		alert ("checkIfNumber函数调用错误！！！！！！(属性为"+name+"的对象不存在）");
		return true;
	}
	
	if( obj.value == "" ){
		alert( emptyMessage );
		obj.focus();
		return false;
	}

	if( !IsDecimal( obj.value ) ){
		alert( notNumMessage );
		obj.focus();
		return false;
	}

	return true;

}

/**
*刘力源

*检查一个文本域的值是否为空且全是数字
*@param string name 要检查的文本域的name属性

*@param string notNumMessage 当文本域值不全是数字时显示的信息
*return boolean
*/
function CheckDecimal( name, notNumMessage )
{

	var obj = document.form1.item(name);
	if( !obj ){
		alert ("checkIfNumber函数调用错误！！！！！！(属性为"+name+"的对象不存在）");
		return true;
	}

	if( !IsDecimal( obj.value ) ){
		alert( notNumMessage );
		obj.focus();
		return false;
	}

	return true;
}
function CheckIsDecimal( name, notNumMessage )
{

	var obj = document.form1.item(name);
	if( !obj ){
		alert ("checkIfNumber函数调用错误！！！！！！(属性为"+name+"的对象不存在）");
		return true;
	}

	if( obj.value =="") return true;
	
	if( !IsDecimal( obj.value ) ){
		alert( notNumMessage );
		obj.focus();
		return false;
	}

	return true;
}

/**
*检查一个字符串是否全是数字
*wangsm
*@param string v 要检查的字符串

*return boolean
*/
function IsNumber( v )
{
	var re =/^-?[\d]+$/ ;
	return re.test(v);
}

/**
*检查一个字符串是否是小数格式

*wangsm
*@param string v 要检查的字符串

*return boolean
*/
function IsDecimal( v )
{
	var re =/^-?[\d]+\.?[\d]*$/ ;
	return re.test(v);
}

/**
*将几个文本域的内容相加 赋值到特定的文本域
*@param string formBoxNameString 要相加的几个文本域的 name 列表，用 "," 间割
*@param string toBoxName 要赋值的文本域

*return boolean
*调用方法 onchange=addTo("a,b,c","d")
*/
function AddTo( fromBoxNameString, toBoxName )
{
	var adderNameArray = fromBoxNameString.split(",");
	var sum = 0;
	var temp = 0;

	var obj = null;

	for( i = 0; i < adderNameArray.length; i ++ ){
		obj = document.form1.item(adderNameArray[i]);
		if( obj == null ) continue;

		temp = parseInt( obj.value );
		if( isNaN(temp) ) continue;

		sum += temp;
	}

	obj = document.form1.item(toBoxName);
	if( obj == null ){
		alert ("addTo函数调用错误！！！！！！(属性为"+toBoxName+"的对象不存在）");
		return false;
	}

	obj.value = sum;

}
//**************************************************************************************************
/***
*通过嵌入在文本域中的自定义属性进行客户端必填字段验证
***
属性定义：allowNull="true"|"false"是否允许为空
		tipContent 当必填字段为空是显示的提示信息

***
*form name属性任意,函数只支持一个页面一个Form
*@author jianyi 2004 7 21
*@return boolean
*调用方式：  onsubmit="return checkByTag()"
*IE6 测试通过
*/
		
function CheckByTag(){
	
		var curObj = null;
		for( i = 0; i < document.forms(0).elements.length; i++ ){
			curObj = document.forms(0).elements(i);
			if( curObj.type == "text" ){
				if( curObj.allowNull == "undefined" ) break;
				
				if( curObj.allowNull == "false" ){
					if( curObj.value == "" ){
						if( curObj.tipContent != "undefined" &&  curObj.tipContent != null ) alert( curObj.tipContent );
						else alert( "name为" + curObj.name + "文本域为空！[程序错误！请指定此必填字段的tipContent属性！]");
						curObj.focus();
						return false;
					}
				}
			}			
		}	
		return true;	
}
//**********************************************************************************************

/*检测页面中的复选或单选框 是否至少有一个被选中
*@author jianyi 2004 7 18
*@param message 没有选择时的提示信息
*return bool
**/
function OneIsChecked( message )
{
	var selectedCount = 0;
	for( i = 0; i < document.forms[0].elements.length; i++ )
	{
		 var e = document.forms[0].elements[i];
     	 if ( e.type =="checkbox" && e.checked == true )
			return true;
		 else if ( e.type =="radio" && e.checked == true )
			return true;
	}
	alert( message );
	return false;
}


/**/
function OneIsFill(){
	for( i = 0; i < document.forms[0].elements.length; i++ )
	{
		 var e = document.forms[0].elements[i];
     	 if ( e.type =="text" && e.value!= "" )
			return true;
	}
	alert( "请至少填写一项" );
	return false;
}

//将所有域的小于1的小数值添加上 0 
function FormatAllDecmail(){

	for( i = 0; i < document.formData.elements.length; i++ )
	{
		 var e = document.formData.elements[i];
     	 if ( e.type =="text" && e.value != "" ){
		 	temp = e.value;
			
			if( temp.indexOf(".") == 0 ){
				e.value = "0" + temp; 
			}
		}
	}
}


//////////////
/*
*只允许输入数字值(整数）

*调用方法:  OnKeyPress="javascript:return OnlyInt();" 
**/
function OnlyInt(){
	if (event.keyCode == 13)
        return true
   if (event.keyCode < 48 || event.keyCode > 57){
		alert( "只能输入数字！" );
        return false;
        
    }else
        return true;
}
/*
*只允许输入数字值(整数或小数)
*调用方法:  OnKeyPress="javascript:return onlyNumber();" 
**/
function OnlyDecimal(){
		//alert(event.keyCode);
	//alert(event.srcElement.value);
	var oldValue = event.srcElement.value;
	
	if (event.keyCode == 13 ||event.keyCode == 110 || event.keyCode == 190)
        return true
	//确保只输入一个 .	
	if ( event.keyCode == 46 ){
	
		if(oldValue.length == 0 ){
			alert( "只能输入小数！" );
			oldValue="";
			return false ;
		 }
		
    	if( oldValue.indexOf(".") > -1 ){
    		alert( "只能输入小数！" );
    		oldValue="";
	    	return false
		}else
	    	return true
	}
	
    if (event.keyCode < 48 || event.keyCode > 57){
		alert( "只能输入小数！" );
		oldValue="";
        return false;
    }else
        return true;
}

// --------------------------------------------------------------------
// - 版权所有： Beyondbit
// - 作者：刘力源   Email: postmanlly@gmail.com
// - 创建：2005-11-23
// - 更改：

// - 备注：判断输入的是否为电子邮件，如含非法字符则提示

// - 参数：text-------输入的电子邮件

// - 使用例子onBlur="isEmail(this)" 
// --------------------------------------------------------------------
function isEmail(text)
{
    email = text.value; 
    reg=/^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/gi; 
    if(!reg.test(email))
    { alert("非法的电子邮件"); return true; }

}

function ischar(c)
	{
	    if (((c>='a') && (c<='z')) || ((c>='A') && (c<='Z')))
	    return true;
	    else
	    return false;
	}

	function isnumber(c)
	{
	    if ((c>='0') && (c<='9'))
	    return true;
	    else
	    return false;
	}


function MakeArray(n)
	{
	    this.length = n
	    for (var i = 1; i <= n; i++) 
	    this[i] = 0 
	    return this
	}
	
	function checknumber(s)
	{
	    for (i=0; i<s.length; i++)
	    {
	        n = s.substr(i, 1)
	        if (!(isnumber(n)))
	        {
	        return false;
	        }
    	}
    	return true;
	}
    
    function checknumeric(s)
    {
	    var dotpos;
	    var dotcount = 0;
	    for ( ii=0; ii<s.length; ii++)
	    {
		    n = s.substr(ii,1);
    		
		    if ( !( isnumber(n) ||( n == '.')))
		    {	return false;	}
		    if ( n == '.')
		    {	dotcount = dotcount ++;
			    dotpos = ii;
			    if ( ii == 0 )
			    { return false; }
			    if ( ii == s.length-1  ) 
			    { return false; }
		    }
	    }
	    if  ( dotcount > 1) 
	    {	return false; }
	    else
	    {	return true; }
    }

	function lench(ch)
	{
	    var ture_len = 0
	    var lench = 0
    	 
	    for (var i = 0;i <= ch.length-1;i++)
	    {
	        if (ch.charCodeAt(i) > 127)
    	        ture_len=ture_len + 2;
	        else
	            ture_len=ture_len + 1;
    	}
	    lench = ture_len;
	    return lench;
	}
	
    function validateDay(str)
    { 
     var r = str.split("-");
     if(r==null)return false; 
     var d= new Date(r[0], r[1]-1, r[2]); 
     return (d.getFullYear()==r[0]&&(d.getMonth()+1)==r[1]&&d.getDate()==r[2]);
    }
    
//function validateDay(ymd)
//	{
//		if (!checknumber(ymd.substring(0,4)))
//			return false;
//		if (!checknumber(ymd.substring(ymd.indexOf("-")+1,ymd.lastIndexOf("-"))))
//			return false;
//		if (!checknumber(ymd.substring(ymd.lastIndexOf("-")+1,10)))
//			return false;
//		var yearInt = parseInt(ymd.substring(0,4));
//		var monthInt = parseInt(ymd.substring(ymd.indexOf("-")+1,ymd.lastIndexOf("-"))) - 1;
//		var dayInt = parseInt(ymd.substring(ymd.lastIndexOf("-")+1,10));
//		
//		if (monthInt > 11)
//		{
//			return false;
//		}
//			monthDays = new MakeArray(12)
//			monthDays [0] = 31;
//			monthDays [1] = 28;
//			monthDays [2] = 31;
//			monthDays [3] = 30;
//			monthDays [4] = 31;
//			monthDays [5] = 30;
//			monthDays [6] = 31;
//			monthDays [7] = 31;
//			monthDays [8] = 30;
//			monthDays [9] = 31;
//			monthDays [10] = 30;
//			monthDays [11] = 31;

//			if (yearInt % 100 == 0)
//			{
//				if (yearInt % 400 == 0)
//				{
//					monthDays[1] = 29;
//				}
//			}
//			else
//			{
//				if (yearInt % 4 == 0)
//				{
//					monthDays[1] = 29;
//				}
//			}

//			if (dayInt > monthDays[monthInt])
//			{
//				return false;
//			}
//			return true;
//	}

//表单验证
function Trim(sVal)
{
 while ((sVal.length>0)  && (sVal.charAt(0)==' '))
   sVal=sVal.substring(1, sVal.length);
 while ((sVal.length>0)  && (sVal.charAt(sVal.length-1)==' '))
   sVal=sVal.substring(0, sVal.length-1);
 return  sVal;
}

function checkcharornumber(s)
{
	for (i=0; i<s.length; i++)
	{
		n = s.substr(i, 1)
		if (!(ischar(n))&&!(isnumber(n)))
		{
			return false;
		}
	}
	return true;
}
