/*
File Name: check.js
Author: Tiger
Date: 2004-3-9
Reversion:
Copyright (c) 2004 by 21.com, Inc. All Rights Reserved.
*/
/*****************************************************************

	这个函数检查form的域是否是空的。
	参数1：document.form.field.value
	参数2：描述名称，如“帐户名称”

*******************************************************************/
function isEmpty(fval,fname)
{
	if (fval == "")
	{
		alert("请输入" + fname);
		return true;
	}
	else
	{
		return false;
	}
}

/*****************************************************************

	这个函数检查用户输入的email地址是否是有效的。
	参数1：frmName form name
	参数2：txtName email输入框的name
	返回值：合法返回true，非法返回false

*******************************************************************/
function checkEmail(frmName, txtName)
{
	var frmTemp,temp;
	frmTemp = document.forms[frmName];
	temp = frmTemp.elements[txtName].value;
	
	if(temp == "")
	{
		alert("请输入email地址。")
		frmTemp.elements[txtName].focus();
		return false;
	}
	var len = temp.length;

	pos1 = temp.indexOf("@");
	pos2 = temp.indexOf(".");
	pos3 = temp.lastIndexOf("@");
	pos4 = temp.lastIndexOf(".");
	
	if((pos4 + 1) == temp.length)
	   return false;
	if((pos1 + 1) == pos2)
	  return false;
	
	if ((pos1 <= 0) || (pos1 == len) || (pos2 <= 0) || (pos2 == len))
	{
	    alert("请输入正确的email地址，如必须包含\"@\"以及大小写都正确。")
	    frmTemp.elements[txtName].focus();
		return false;
	}
	else
	{
		if( (pos1 == pos2 - 1) || (pos1 == pos2 + 1)
			|| ( pos1 != pos3 ) //find two @
			|| ( pos4 < pos3 ) ) //. should behind the '@'
		{
	    alert("请输入正确的email地址，如必须包含\"@\"以及大小写都正确。")
	    frmTemp.elements[txtName].focus();
			return false;
		}
	}
  	return true;
}

/*****************************************************************

	这个函数检查字符是否是是字母（26个英文字母大小写和"-"和空格）
	或者数字。
	参数：c 要检查的字符
	返回值：合法返回true，否则返回false

******************************************************************/
function isLetter (c)
{
  	return ( ((c >= "a") && (c <= "z")) ||
					((c >= "A") && (c <= "Z")) ||
					(c == "-") ||
					(c == " ") ||
					((c >= 0) && (c <= 9)));
}

/*****************************************************************

	这个函数检查用户输入的字符串是英文字母或者数字。
	参数1：frmName form name
	参数2：txtName 输入框的name
	参数3：txtLab  名头，比如“帐户名称”
	返回值：如果都是英文字母和数字，返回true，否则返回false

******************************************************************/
function isAlphabetic (frmName, txtName, txtLab)
{
	var i;
	
	var frmTemp,temp;
	frmTemp = document.forms[frmName];
	temp = frmTemp.elements[txtName].value;
	
	if(temp == "")
	{
		alert("请输入" + txtLab + "。")
		frmTemp.elements[txtName].focus();
		return false;
	}
	
	for (i = 0; i < temp.length; i++)
	{
		// Check that current character is letter.
		var c = temp.charAt(i);
		
		if ((i == 0) && (c == " "))
		{
		  	alert(txtLab + "只可有英文字母、数字。");
		  	return false;
		}
		else
		{
		  	if (!isLetter(c))
		  	{
		    		alert(txtLab + "只可有英文字母、数字。");
		    		return false;
		  	}
		}
	}
	// All characters are letters.
	return true;
}

/*****************************************************************

	这个函数检查用户输入的两次密码是英文字母或者数字和一致。
	参数1：frmName form name
	参数2：txtPass1 密码输入框的name
	参数3：txtPass2 确认密码输入框的name
	返回值：如果都是密码为英文字母或者数字，并且两次输入的是一致的，
	        返回true，否则返回false

******************************************************************/
function validPassword( frmName, txtPass1, txtPass2 )
{
	var allValid = true;
	
	var frmTemp,temp;
	frmTemp = document.forms[frmName];
	pass1 = frmTemp.elements[txtPass1].value;
	pass2 = frmTemp.elements[txtPass2].value;
	
	if( pass1 == "" )
	{
	  	alert("请输入密码。");
	  	frmTemp.elements[txtPass1].focus();
	  	return false;
	}
	
	if( pass2 == "" )
	{
	  	alert("请输入确认密码。");
	  	frmTemp.elements[txtPass2].focus();
	  	return false;
	}
	
	if( pass1.length < 6 )
	{
	  	alert("密码必须是6－10位的英文字母或者数字。");
	  	frmTemp.elements[txtPass1].focus();
	  	return false;
	}
	
	if( pass1.length != pass2.length )
	{
	  	alert("确认密码栏所输入的必须与密码栏所输入资料相同。");
	  	frmTemp.elements[txtPass2].focus();
	  	return false;
	}
	
	if (!isAlphabetic(frmName, txtPass1, "密码"))
	{
	  	frmTemp.elements[txtPass1].focus();
	  	return false;
	}
	
	for(i = 0; i < pass1.length; i++)
	{
	  	if( pass1.charAt(i) != pass2.charAt(i) )
	  	{
	    		alert("密码与确认密码不相同，请重新输入确认密码。");
	    		frmTemp.elements[txtPass2].focus();
	    		allValid = false;
	    		break;
	  	}
	}
	return allValid;
}

/*****************************************************************

	这个函数检查输入的字符是否是0到9的数字之一。
	参数1：c 要检查的字符
	返回值：是0到9的数字之一，返回true；否则返回false。

*****************************************************************/
function isDigit (c)
{
  	return ((c >= "0") && (c <= "9"));
}

/******************************************************************

	检查输入的字符串是否都是数字。
	参数1：frmName form name
	参数2：txtName 输入框的Name
	参数3：txtLab  描述信息，如“帐户名称”
	返回值：全部是数字的返回true，否则返回false

*******************************************************************/
function isInteger (frmName, txtName, txtLab)
{
	var i;

  	var frmTemp,temp;
  	frmTemp = document.forms[frmName];
  	temp = frmTemp.elements[txtName].value;

  	if(temp == "")
  	{
    		alert("请输入" + txtLab + "。")
    		frmTemp.elements[txtName].focus();
    		return false;
  	}

	for (i = 0; i < temp.length; i++)
	{
		var c = temp.charAt(i);
		if (!isDigit(c))
		{
      		alert(txtLab + "只能为数字，请重新输入" + txtLab + "。")
      		frmTemp.elements[txtName].focus();
		  	return false;
		}
	}
	return true;
}

/*****************************************************************

	这个函数检查输入的字符串的长度是否在指定的范围内。
	参数1：frmName form name
	参数2：txtName 文本框name
	参数3：txtLab  描述名称
	参数4：minLen  最短长度
	参数5：maxLen  最长长度

*****************************************************************/
function checkLength(frmName, txtName, txtLab, minLen, maxLen)
{
  	var temp,lCount = 0;
  	frmTemp = document.forms[frmName];
  	temp = new String(frmTemp.elements[txtName].value);

	for(var i = 0; i < temp.length; i++)
  	{
    		if(temp.charCodeAt(i) > 255)
      		lCount += 2;
    		else
      		lCount += 1;
	}

  	if(minLen > 0 && lCount == 0)
  	{
    		alert("请输入" + txtLab);
    		frmTemp.elements[txtName].focus();
    		return false;
  	}

  	if(lCount < minLen)
  	{
    		alert(txtLab + "必须是" + minLen + "－" + maxLen + "个的英文字母或数字");
    		frmTemp.elements[txtName].focus();
    		return false;
  	}

  	if(lCount > maxLen)
  	{
    		alert(txtLab + "必须是" + minLen + "－" + maxLen + "个的英文字母或数字");
    		frmTemp.elements[txtName].focus();
    		return false;
  	}
  	return true;
}

/*****************************************************************

	这个函数检查输入的字符串是否介于最小值和最大值之间。
	参数1：frmName form name
	参数2：txtName 文本框name
	参数3：txtLab  描述名称
	参数4：minValue  最小值
	参数5：maxValue  最大值

*****************************************************************/
function checkValue(frmName,txtName,txtLab,minValue,maxValue)
{
	var frmTemp,temp;
	frmTemp = document.forms[frmName];
	temp = frmTemp.elements[txtName].value;
	
	if (temp == "")
	{
		alert("请在" + txtLab + "中输入数字");
		frmTemp.elements[txtName].focus();
		return false;
	}
	temp = Number(temp);
	
	if(isNaN(temp))
	{
		alert("请在" + txtLab + "中输入数字");
		frmTemp.elements[txtName].focus();
		return false;
	}
	else
	{
		if(temp >= minValue && temp <= maxValue)
		  	return true;
		else
		{
			alert("请在" + txtLab + "中输入正确的值：介于 " + minValue +" 与 " + maxValue + " 之间");
			frmTemp.elements[txtName].focus();
			return false;
		}
	}
}

/*****************************************************************

	这个函数检查输入字符串的不能包含',\和"。
	参数1：frmName form name
	参数2：txtName email输入框的name
	参数3：txtLab  描述名称
	返回值：不包含这些符号返回true，非法返回false

*******************************************************************/
function isValidity(frmName, txtName, txtLab)
{
  var frmTemp,temp;
  frmTemp = document.forms[frmName];
  temp = frmTemp.elements[txtName].value;

  if(temp == "")
  {
    alert("请输入" + txtLab)
    frmTemp.elements[txtName].focus();
    return false;
  }
  var SlashSym = temp.indexOf("\\");
  var DoubleQuoteSym = temp.indexOf("\"");
  var QuoteSym = temp.indexOf("'");
  var Space    = temp.indexOf(' ');
  var Length   = temp.length - 1;   // Array is from 0 to length-1
  var QuestionSym = temp.indexOf("\?");

  if ((SlashSym != -1) ||                   // 不能包含斜杠
    (DoubleQuoteSym != -1) ||             // 不能包含双引号
    (Space  != -1)      ||             // 不能包含空格
    (QuoteSym != -1) ||
    (QuestionSym != -1))                  // 不能包含单引号
  {
    alert("请输入正确的" + txtLab + "，不能包含 \' 或 \" 或 \\ 或 \?。");
    frmTemp.elements[txtName].focus();
    return false;
  }
  return true;
}

/*****************************************************************

	这个函数检查输入字符串的是否符合手机号码。
	参数1：frmName form name
	参数2：txtName email输入框的name
	返回值：符合手机号码规范的返回true，非法返回false

*******************************************************************/
function checkMobileNum(frmName, txtName)
{
  var frmTemp,temp;
  frmTemp = document.forms[frmName];
  temp = frmTemp.elements[txtName].value;

  if(!isInteger(frmName, txtName, "手机号码"))
  {
    frmTemp.elements[txtName].focus();
    return false;
	}
  var Sym1 = temp.indexOf("13");
  var Sym3 = temp.indexOf("159");
  if (Sym1 != 0 && Sym3 != 0)
  {
    alert("请输入正确的手机号码。");
    frmTemp.elements[txtName].focus();
    return false;
  }
  if (temp.length != 11)
  {
    alert("手机号码只能是11个数字！");
    frmTemp.elements[txtName].focus();
    return false;
  }
  return true;
}

/*****************************************************************

	这个函数检查输入字符串的是否符合手机号码。该函数不会弹出提示框
	参数1：frmName form name
	参数2：txtName email输入框的name
	返回值：符合手机号码规范的返回true，非法返回false

*******************************************************************/
function checkMobileNum_NoAlert(frmName, txtName)
{
  var frmTemp,temp;
  frmTemp = document.forms[frmName];
  temp = frmTemp.elements[txtName].value;

  if(!isInteger_NoAlert(frmName, txtName, "手机号码"))
  {
    return false;
  }
  var Sym1 = temp.indexOf("13");
  var Sym3 = temp.indexOf("159");
  if (Sym1 != 0 && Sym3 != 0)
  {
    return false;
  }
  if (temp.length != 11)
  {
    return false;
  }
  return true;
}

/*****************************************************************

	这个函数检查用户输入的email地址是否是有效的。该函数不会弹出提示框
	参数1：frmName form name
	参数2：txtName email输入框的name
	返回值：合法返回true，非法返回false

*******************************************************************/
function checkEmail_NoAlert(frmName, txtName)
{
	var frmTemp,temp;
	frmTemp = document.forms[frmName];
	temp = frmTemp.elements[txtName].value;
	
	if(temp == "")
	{
	  	return false;
	}
	var len = temp.length;

	pos1 = temp.indexOf("@");
	pos2 = temp.indexOf(".");
	pos3 = temp.lastIndexOf("@");
	pos4 = temp.lastIndexOf(".");

	if((pos4 + 1) == temp.length)
	   return false;
	if((pos1 + 1) == pos2)
	  return false;

	if ((pos1 <= 0) || (pos1 == len) || (pos2 <= 0) || (pos2 == len))
	{
		return false;
	}
	else
	{
		if( (pos1 == pos2 - 1) || (pos1 == pos2 + 1)
			|| ( pos1 != pos3 ) //find two @
			|| ( pos4 < pos3 ) ) //. should behind the '@'
		{
			return false;
		}
	}
  return true;
}

/******************************************************************

	检查输入的字符串是否都是数字。该函数不会弹出提示框
	参数1：frmName form name
	参数2：txtName 输入框的Name
	参数3：txtLab  描述信息，如“帐户名称”
	返回值：全部是数字的返回true，否则返回false

*******************************************************************/
function isInteger_NoAlert (frmName, txtName, txtLab)
{
	var i;

	var frmTemp,temp;
	frmTemp = document.forms[frmName];
	temp = frmTemp.elements[txtName].value;
	
	if(temp == "")
	{
	  return false;
	}

	for (i = 0; i < temp.length; i++)
	{
		var c = temp.charAt(i);
		if (!isDigit(c))
		{
		  return false;
		}
	}
	return true;
}

/******************************************************************

	检查输入的字符串是否 满足电话号码（区号+电话号码）规则。
	参数1：frmName form name
	参数2：txtName 输入框的Name
	返回值：满足的返回true，否则返回false

*******************************************************************/
function checkPhone( frmName, txtName ) {
  var frmTemp = document.forms[frmName];
  var temp = frmTemp.elements[txtName].value;
  if ( temp == "" || temp.length < 10 || temp.length > 15 || temp.charAt(0) != "0" ) {
    return false;
  }

  for ( i = 0; i < temp.length; i++ ) {
    if ( !isDigit(temp.charAt(i)) ) {
      return false;
    }
  }
  return true;
}

/******************************************************************

	检查输入的字符串是否 满足电话区号规则。
	参数1：frmName form name
	参数2：txtName 输入框的Name
	返回值：满足的返回true，否则返回false

*******************************************************************/
function checkPhone1( frmName, txtName ) {
  var frmTemp = document.forms[frmName];
  var temp = frmTemp.elements[txtName].value;
  
  for ( i = 0; i < temp.length; i++ ) {
    if ( !isDigit(temp.charAt(i)) ) {
      return false;
    }
  }

  if (temp == "" || temp.length < 2 || temp.length > 5 || temp.charAt(0) != "0" ) {
    return false;
  }
  return true;
}

/******************************************************************

	检查输入的字符串是否 满足电话号码规则。
	参数1：frmName form name
	参数2：txtName 输入框的Name
	返回值：满足的返回true，否则返回false

*******************************************************************/
function checkPhone2( frmName, txtName ) {
  var frmTemp = document.forms[frmName];
  var temp = frmTemp.elements[txtName].value;
  
  for ( i = 0; i < temp.length; i++ ) {
    if ( !isDigit(temp.charAt(i)) ) {
      return false;
    }
  }

  if (temp == "" || temp.length < 6 || temp.length > 10 ) {
    return false;
  }
  return true;
}

/******************************************************************

	检查输入的字符串是否 满足电话号码规则。提供给联盟检验要求用户填写：
	区号 + 电话号码，的输入格式的脚本判断。
	参数1：frmName form name
	参数2：qhName 区号输入框的Name
	参数3：dhName 电话号码输入框的Name
	参数4：xltName 整合的电话号码的hidden框的Name
	返回值：满足的返回true，否则返回false

*******************************************************************/
function checkLM_XLT(frmName, qhName, dhName, xltName) {
	
	var frmTemp = document.forms[frmName];

	if (!checkPhone1(frmName, qhName)) {
		alert("请输入正确的电话区号。");
		frmTemp.elements[qhName].focus();
		return false;
	}
	if (!checkPhone2(frmName, dhName)) {
		alert("请输入正确的电话号码。");
		frmTemp.elements[dhName].focus();
		return false;
	}
	frmTemp.elements[xltName].value = frmTemp.elements[qhName].value + frmTemp.elements[dhName].value;
	if (!checkPhone(frmName, xltName)) {
		alert("请输入正确的电话区号或者电话号码。");
		frmTemp.elements[qhName].focus();
		return false;
	}
	return true;
}

/*****************************************************************

	这个函数检查输入字符串的是否符合身份证号码。
	参数1：frmName form name
	参数2：txtName email输入框的name
	返回值：符合手机号码规范的返回true，非法返回false

*******************************************************************/
function checkIdCardNum(frmName, txtName) 
{
  var frmTemp,temp;
  frmTemp = document.forms[frmName];
  temp = frmTemp.elements[txtName].value;
  var length = temp.length;
	
  if(length==0){
	alert("请输入身份证号码");
    frmTemp.elements[txtName].focus();
    return false;		
  }
  else{
	  if(length==15&&isInteger(frmName, txtName, "身份证号码")){
		return true;
	  }
	  else if(length==18){
		for(var i=0;i<length-1;i++){
			if(!isDigit(temp.charAt(i))){
				alert("请输入正确的身份证号码");
				frmTemp.elements[txtName].focus();
				return false;
			}
		}
	  }
	  else{
		alert("请输入正确的身份证号码");
		frmTemp.elements[txtName].focus();
		return false;
	  }
  }
  return true;
}

function noSourceExplorer(obj, address){
	if (navigator.appName.indexOf("Internet Explorer") != -1){	
		if (event.button == 2 || event.button == 3){
			
			obj.href = address;
		}
	}
}

// 去除空格
function trim(str) { 
    if (str != null) {
        var i; 
        for (i=0; i<str.length; i++) {
            if (str.charAt(i)!=" ") {
                str=str.substring(i,str.length); 
                break;
            } 
        } 
    
        for (i=str.length-1; i>=0; i--) {
            if (str.charAt(i)!=" ") {
                str=str.substring(0,i+1); 
                break;
            } 
        } 
        
        if (str.charAt(0)==" ") {
            return ""; 
        } else {
            return str; 
        }
    }
} 