/**
 *			常用检测函数
 *
 * 检查日期：	validateDate(value, datePattern)
 * 检查integer：	validateInteger(value)
 * 检查float: 	validateFloat(value)
 * 检查电话：	validateTel(value)
 * 是否为空：	validateRequired(value)
 * 检查email：	validateEmail(value)
 */

   /*
    * 检查是否必填
    */
	 function validateRequired(value)
    {
   		if (value == null) return false; 
   		if (trim(value).length == 0) return false; 
   		return true;
    }
   /*$RCSfile: validateDate.js,v $ $Revision: 1.10 $ $Date: 2004/03/28 16:53:21 $ */
    /**
    * Check to see if value are a valid date.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validateDate(value, datePattern) {
       var bValid = true;

           // try loose pattern
           if (datePattern == null)
               datePattern = 'yyyy-MM-dd';
           if ((value.length > 0) && (datePattern.length > 0)) {
                 var MONTH = "MM";
                 var DAY = "dd";
                 var YEAR = "yyyy";
                 var orderMonth = datePattern.indexOf(MONTH);
                 var orderDay = datePattern.indexOf(DAY);
                 var orderYear = datePattern.indexOf(YEAR);
                 if ((orderDay < orderYear && orderDay > orderMonth)) {
                     var iDelim1 = orderMonth + MONTH.length;
                     var iDelim2 = orderDay + DAY.length;
                     var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                     if (iDelim1 == orderDay && iDelim2 == orderYear) {
                        dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
                     } else if (iDelim1 == orderDay) {
                        dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
                     } else if (iDelim2 == orderYear) {
                        dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
                     } else {
                        dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
                     }
                     var matched = dateRegexp.exec(value);
                     if(matched != null) {
                        if (!isValidDate(matched[2], matched[1], matched[3])) {
                           bValid =  false;
                        }
                     } else {
                        bValid =  false;
                     }
                 } else if ((orderMonth < orderYear && orderMonth > orderDay)) {
                     var iDelim1 = orderDay + DAY.length;
                     var iDelim2 = orderMonth + MONTH.length;
                     var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                     if (iDelim1 == orderMonth && iDelim2 == orderYear) {
                         dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
                     } else if (iDelim1 == orderMonth) {
                         dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
                     } else if (iDelim2 == orderYear) {
                         dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
                     } else {
                         dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
                     }
                     var matched = dateRegexp.exec(value);
                     if(matched != null) {
                        if (!isValidDate(matched[1], matched[2], matched[3])) {
                           bValid =  false;
                        }
                     } else {
                        bValid =  false;
                     }
                 } else if ((orderMonth > orderYear && orderMonth < orderDay)) {
                     var iDelim1 = orderYear + YEAR.length;
                     var iDelim2 = orderMonth + MONTH.length;
                     var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                     var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                     if (iDelim1 == orderMonth && iDelim2 == orderDay) {
                         dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$");
                     } else if (iDelim1 == orderMonth) {
                         dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$");
                     } else if (iDelim2 == orderDay) {
                         dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$");
                     } else {
                         dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$");
                     }
                     var matched = dateRegexp.exec(value);
                     if(matched != null) {
                        if (!isValidDate(matched[3], matched[2], matched[1])) {
                           bValid =  false;
                        }
                     } else {
                        bValid =  false;
                     }
                 } else {
                     bValid =  false;
                 }
          }

       return bValid;
    }
    
    function isValidDate(day, month, year) {
	    if (month < 1 || month > 12) {
            return false;
        }
        if (day < 1 || day > 31) {
            return false;
        }
        if ((month == 4 || month == 6 || month == 9 || month == 11) &&
            (day == 31)) {
            return false;
        }
        if (month == 2) {
            var leap = (year % 4 == 0 &&
               (year % 100 != 0 || year % 400 == 0));
            if (day>29 || (day == 29 && !leap)) {
                return false;
            }
        }
        return true;
    }
    
    function matchPattern(value, mask) {
       return mask.exec(value);
    }
    
//是否不包含中文、回车和换行，如包含返回false??
function ifWesternChr(value)
{
	var chrInput_e;
	for(i=0;i<value.length;i++ )
	{
		chrInput = value.charAt(i);
		chrInput_e=escape(chrInput);
		if(chrInput_e.length==(chrInput.length)*6 || chrInput=='\r' || chrInput=='\n')
		    return false;
		else 
			return true;
	}
}
 function pinYinFilter(value)
{
  var checkOK = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_";
  var allValid = true;

  if (value == "") return false;

  for (i = 0;  i < value.length;  i++)
  {
    ch = value.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  return allValid;
}


function validateUsername(value)
{
  var checkOK = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_";
  var allValid = true;

  if (value == "") return false;

  for (i = 0;  i < value.length;  i++)
  {
    ch = value.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  return allValid;
}

function validateFloat(value)
{
  var checkOK = "0123456789.";
  var allValid = true;

  if (value == "") return false;

  for (i = 0;  i < value.length;  i++)
  {
    ch = value.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  return allValid;
}

function validateInteger(value)
{
  var checkOK = "0123456789";
  var allValid = true;

  if (value == "") return false;

  for (i = 0;  i < value.length;  i++)
  {
    ch = value.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  return allValid;
}

/*电话号码检测*/
function validateTel(TEL)
{
 var i,j,strTemp;
 strTemp="0123456789-()#";
 for (i=0;i<TEL.length;i++)
 {
  j=strTemp.indexOf(TEL.charAt(i)); 
  if (j==-1)
  {
   //说明有字符不合法
   return false;
  }
 }
   //说明合法
 return true;
}

function ltrim(s){
   var count=0;
   var i=0;
   var space=" ";
   var newline="\n";
   var cr="\r";
   var tab="\t";
   var sret;
   var schar;
   schar=s.charAt(i);
   while ((schar==space)||(schar==newline)||(schar==cr)||(schar==tab)){
    count++;
    i++
    schar=s.charAt(i);
    }
   if (count>0)
     sret=s.substring(count,s.length);
   else
     sret=s;
//document.write("&"+sret+"&");
   return(sret);
}

function rtrim(s){
   var count=0;
   var i=s.length-1;
   var space=" ";
   var newline="\n";
   var cr="\r";
   var tab="\t";
   var sret;
   var schar;
   schar=s.charAt(i);
// document.write(i +"&");
   while (
   (schar==space)||
   (schar==newline)||
   (schar==cr)||
   (schar==tab)){
    count++;
    i--;
    schar=s.charAt(i);
    }
   if (count>0)
     sret=s.substring(0,s.length-count);
   else
     sret=s;
//     document.write(sret +"&");
//     document.write(s +"&");
     return(sret);
}

function trim(s){
   if (s!=""){
    s=rtrim(s);
    }
   if (s!=""){
    s=ltrim(s);
    }
//   document.write("&"+s+"&");
    return(s);
}


function isEmpty(str)
{
		var temp = "";
		temp = ignoreBlock(str);
        if ((temp == null) || (temp.length == 0)) 
			return true;
        else 
			return false;
}

function select(name,value)
{
        if (value<0) 
			return false;
        var item = document.forms[0].elements[name];
        item.selectedIndex = value-1;
}

function selectRadio(name,value)
{

        if (value<0) 
			return false;
        document.forms[0].elements[name](value-1).checked = true;

}

function ignoreBlock(passedVal)
{
	returnString = "";
	for(j=0;j<passedVal.length;j++)
	{
		if(passedVal.charAt(j)==" ")
		{
			continue;
		}
		returnString += passedVal.charAt(j);
	}
	return returnString
}


//得到选中CheckBox的数
function CheckBoxCheckedNum(FormName,boxName)
{
    var a1 = eval("document."+FormName+"."+boxName);
	var num=0;
	if (a1==null)
	{
	    num=-1;//alert("缺少选项。");
	}
	else if (a1.value!=null)
	{
	    if (( true==a1.checked) && (a1.type == 'checkbox' )) 
			num++;
	}
	else
	{
	    for ( var i=0; i < a1.length; i++ )
		{
			if (( true==a1[i].checked) && (a1[i].type == 'checkbox' )) num++;
		}
	}
    return num;
}

//得到选中CheckBox或radio的的值，CheckBox有多个值时用/隔开
function getBoxValue(FormName,boxName)
{
	var a1 = eval("document."+FormName+"."+boxName);
	if (a1==null)
	{
	    //alert("缺少选项，无法提交，请先添加相关选项后再做此操作。");
		return "";
	}
	var temp="";
	if (a1.value!=null)
	{
	    if (a1.checked)
		{
		    temp=a1.value;
		}
	}
	else
	{
	    for(i=0;i<a1.length;i++)
		{
		    if (a1[i].checked)
			{
			    if (a1[i].type=="radio")
				{
					temp=a1[i].value;
					break;
				}
				else
					temp=temp+"/"+a1[i].value;
			}
		}
	}
	if (temp.indexOf("/")==0)
	{
		temp=temp.substring(1);
	}
	return temp;
}

//得到List被选中的值，List为多选时，用/隔开
function getListValue(FormName,checkName)
{   var temp="";
    var a1 = eval("document."+FormName+"."+checkName);
    for(i=0;i<a1.length;i++)
	{
	    if (a1.options[i].selected&&a1.options[i].value!="")
	        temp=temp+"/"+a1.options[i].value;
	}
	if (temp.indexOf("/")==0)
	{
		temp=temp.substring(1);
	}
	return temp;
}


//将Checkbox:sForm.sName的值为sValue的选中
function selectCheckbox(sForm,sName,sValue)
{
	var iSelect = eval("document"+"."+sForm+"."+sName);
	if (iSelect.value==null)
	{
		for (var i=0;i<iSelect.length;i++)
		{
			//alert (iSelect[i].value==sValue);
			if (iSelect[i].value==sValue)
			{
			   iSelect[i].checked=true;
			}   
		}
	}
	else
	{
	    if (iSelect.value==sValue)
		{
		   iSelect.checked=true;
		}
	}
        
}

//List:sForm.sName的值为sValue的选中
function selectList(sForm,sName,sValue)
{
	var iSelect = eval("document"+"."+sForm+"."+sName);
	for (var i=0;i<iSelect.length;i++)
	{
		//alert (iSelect[i].value==sValue);
		if (iSelect.options[i].value==sValue)
		{
		   iSelect.options[i].selected=true;
		}   
	}
}	

//检测邮编
function checkPost(num)
{
	if (! isFinite(num))
		{
		   alert ("邮政编码应为数字");
		   return false;
		}
	else 
	{
		if (num>999999 ||num<100000 || Math.round(num)!=num)
		 {
			alert ("邮政编码不正确");
			return false;
		 }
	} 
	return true;
} 

//检测身份证号码
function checkCardID(cardID)
{
    if (cardID=="")
    {
		 alert("请填写身份证号码");
		 //document.apply.card_id.focus();
		 return false;
    }
	if (cardID.length != 15&&cardID.length !=18)
    {
		 alert("身份证号码应为15位或18位");
		 //document.apply.card_id.focus();
		 return false;
    }
	for (nIndex=0; nIndex<cardID.length; nIndex++)
    {
        cCheck = cardID.charAt(nIndex);
        if (!(IsDigit(cCheck) || IsAlpha(cCheck) ))
        {
            alert("身份证号只能使用数字和英文字母");
			//document.apply.card_id.focus();
            return false;
        }
    }
    return true;
}

//判断单个字符是否是数字
function IsDigit(cCheck) 
{ 
	return (('0'<=cCheck) && (cCheck<='9')); 
}

//判断单个字符是否是字母
function IsAlpha(cCheck) 
{ 
	return ((('a'<=cCheck) && (cCheck<='z')) || (('A'<=cCheck) && (cCheck<='Z'))) 
}

//得到字符串的长度，每中文的长度为2
function getStrLength(str1)
{
    var len=0;
	var nIndex=0
	for (nIndex=0; nIndex<str1.length; nIndex++)
    {
        cCheck = str1.charAt(nIndex);
        if (cCheck<='~')
            len++;
		else
			len=len+2;
    }
	return len;
}

//每个页面onload时，调用此函数    
function onLoadInit() 
{
        setFocus();    
}


//保证输入焦点落在第一个文本输入域上
function setFocus() 
{
        for ( formIndex = 0; formIndex < document.forms.length; formIndex++ )
        {
                var form = document.forms[ formIndex ];
	
	        for ( index = 0; index < form.elements.length; index++ )
	        {
			var element = form.elements[ index ];

			if ( element != null && element.disabled == false  && ( element.type == "text" || element.type == "textarea" || element.type == "password") )
			{
				element.focus();
				return;
	                }
	        }
        }
}

//去掉字符串的单引号，用&#039;代替
function replaceInvertedComma(str1)
{
    var str="";
	var nIndex=0
	for (nIndex=0; nIndex<str1.length; nIndex++)
    {
        cCheck = str1.charAt(nIndex);
        if (cCheck=='\'')
            str=str+"&#039;";
		else
			str=str+cCheck;
    }
	return str;
}
    
    /**
     * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
     * http://javascript.internet.com
     */
    function validateEmail(emailStr) {
       if (emailStr.length == 0) {
           return true;
       }
       var emailPat=/^(.+)@(.+)$/;
       var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
       var validChars="\[^\\s" + specialChars + "\]";
       var quotedUser="(\"[^\"]*\")";
       var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
       var atom=validChars + '+';
       var word="(" + atom + "|" + quotedUser + ")";
       var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
       var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
       var matchArray=emailStr.match(emailPat);
       if (matchArray == null) {
           return false;
       }
       var user=matchArray[1];
       var domain=matchArray[2];
       if (user.match(userPat) == null) {
           return false;
       }
       var IPArray = domain.match(ipDomainPat);
       if (IPArray != null) {
           for (var i = 1; i <= 4; i++) {
              if (IPArray[i] > 255) {
                 return false;
              }
           }
           return true;
       }
       var domainArray=domain.match(domainPat);
       if (domainArray == null) {
           return false;
       }
       var atomPat=new RegExp(atom,"g");
       var domArr=domain.match(atomPat);
       var len=domArr.length;
       if ((domArr[domArr.length-1].length < 2) ||
           (domArr[domArr.length-1].length > 3)) {
           return false;
       }
       if (len < 2) {
           return false;
       }
       return true;
    }
    
    function isAllDigits(argvalue) {
        argvalue = argvalue.toString();
        var validChars = "0123456789";
        var startFrom = 0;
        if (argvalue.substring(0, 2) == "0x") {
           validChars = "0123456789abcdefABCDEF";
           startFrom = 2;
        } else if (argvalue.charAt(0) == "0") {
           validChars = "01234567";
           startFrom = 1;
        } else if (argvalue.charAt(0) == "-") {
            startFrom = 1;
        }

        for (var n = startFrom; n < argvalue.length; n++) {
            if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
        }
        return true;
    }