/*
 * @(#)CheckLevelService.java    V1.0.0  2002/11/28
 *
 * Project: HiTRUST SMS Center V1.0
 *
 * Modify Information:
 *    Author        Date        Description
 *    ============  ==========  ================================================
 *    Janus Liu     2002/11/28  Create this program spec.
 *    Janus Liu     2002/11/28  V1.0 Release
 *
 * Copyright Notice:
 *    Copyright (c) 2001-2002 Beijing HiTRUST Technology Co., Ltd.
 *    1808 Room, Science & Technology Building, No. 9 South Street,
 *    Zhong Guan Cun, Haidian District, Beijing ,100081, China
 *    All rights reserved.
 *
 *    This software is the confidential and proprietary information of
 *    Beijing HiTRUST Technology Co., Ltd. ("Confidential Information").
 *    You shall not disclose such Confidential Information and shall use it only
 *    in accordance with the terms of the license agreement you entered into
 *    with HiTRUST.
 */

 /**
 *  检查Input的合法输入
 *  ==================================================================================
 *  语法;
 *  字段;字段||字段描述||是否必填(Y/N)||输入长度范围(#/n-m)||只允许填的字符(#0/#./#A/##/限定字符范围)
 *  字段:
 *  要检查Input的名字
 *  字段描述
 *	  要检查Input的描述
 *  是否必填 
 *	  Y/必添;N/不必添
 *  输入长度范围
 *  	  #--不限长度
 *  	  n-m--n最小长度,m最大长度
 *  只允许填的字符
 *	  #0--0123456789
 *	  #.--0123456789.
 *	  #A--不包括汉字
 *	  ##--全部
 *	  #M--Mail格式
 *	  限定字符范围--限定字符,例如,ABC或1234567.
 *  例如,
 *	  field1||字段一||#0||Y||2-5||1234567890,
 */

var HiScript= new HiScript();//HiScript实例

function HiScript() {
	/*
	 *在HiScript Class定义value方法,可以通过该Class 的实例对value function进行引用。
	 */
	this.value = value;
	this.checkChar = checkChar;
	this.lTrim = lTrim;
	this.rTrim = rTrim;
	this.trim = trim;

	 /**
     * Class HiScript constructor
     * @param aForm		Form表单名称
     * @param aScripts	检查规则的数组
     * @return true/false false表示检查有非法字符/true表示检查字符合法
     */
	function value(aForm,aScripts){
		for(var i = 0; i< aScripts.length; i++){
			var iFields= aScripts[i].split("||");
			
			for(var j = 0; j< iFields.length; j++){
				if (j==0){
					var tInput = eval("document." + aForm + "." + iFields[0]);//iFields[0]为Input名称
					
					/*
					 *判断必填
					 */
					if (iFields[2]=="Y"){//iFields[2]为是否必填
						if(trim(tInput.value).length<1){
							alert("请您填写[" + iFields[1] + "]!!");//iFields[1]为Input描述
							tInput.focus();
							return false;
						}
					}/*判断必填结束:~*/

					 /*
					  *判断长度
					  */
					if (trim(tInput.value).length>0){
						if (iFields[3]!="#"){//iFields[3]为Input长度范围
							var iLengths = iFields[3].split("-");
							if(trim(tInput.value).length<parseInt(iLengths [0])||trim(tInput.value).length>parseInt(iLengths[1])){
								alert("请您填写新的[" + iFields[1] + "],[" + iFields[1] + "]长度范围为[" + iFields[3] + "]!!");
								tInput.focus();
								return false;
							}								
						}
					}/*判断长度结束:~*/
					
					 /*
					  *判断填写字符类型
					  *##--所有
					  *#.--0123456789.
					  *#0--0123456789
					  *#A--所有不包括汉字
					  *ABC
					  */
					if (trim(tInput.value).length>0){//iFields[4]字符范围							
						if (iFields[4]=="##"){//全部字符
							//do nothing
						} else if(iFields[4]=="#A"){//不包括中文
							var icheckChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789><,.[]{}?/_-+=|\\'\":;`~!@#$%^&*() ";
							if (checkChar(tInput.value,icheckChar)){
								alert("请您填写新的[" + iFields[1] + "],[" + iFields[1] + "]字段不能为中文!!");
								tInput.focus();
								return false;
							}
						} else if(iFields[4]=="#."){//只包括1234567890.字符
							var icheckChar = "1234567890.";
							if (checkChar(tInput.value,icheckChar)){
								alert("请您填写新的[" + iFields[1] + "],[" + iFields[1] + "]字段范围为[0123456789.]!!");
								tInput.focus();
								return false;
							}
						} else if(iFields[4]=="#0"){//只包括1234567890字符
							var icheckChar = "1234567890";
							if (checkChar(tInput.value,icheckChar)){
								alert("请您填写新的[" + iFields[1] + "],[" + iFields[1] + "]字段范围为[0123456789]!!");
								tInput.focus();
								return false;
							}
						} else if(iFields[4]=="#M"){//只包括EMAIL
							if (trim(tInput.value).charAt(0)=="." ||        
									trim(tInput.value).charAt(0)=="@" ||       
									trim(tInput.value).indexOf('@', 0)  == -1 || 
									trim(tInput.value).indexOf('.', 0)  == -1 || 
									trim(tInput.value).lastIndexOf("@") == trim(tInput.value).length-1 || 
									trim(tInput.value).lastIndexOf(".") == trim(tInput.value).length-1){
								alert("Email的格式不正确!!");
								tInput.focus();
								return false;
							}
						} else {//只包括限定的字符
							if (checkChar(tInput.value,iFields[4])){
								alert("请您填写新的[" + iFields[1] + "],[" + iFields[1] + "]字符范围为[" + iFields[4] + "]!!");
								tInput.focus();
								return false;
							}
						}
						
					}/*判断填写字符类型结束:~*/
					
				}
				
			}
			
		}
		
		return true;
	}
	
	 /**
     * 检查字符范围
     * @param aCheckString		检查的字符
     * @param aCheckChar	    检查字符的限定范围
     * @return true/false       false表示检查字符在限定范围之内/true表示检查字符在限定范围之外
     */
	function checkChar(aCheckString,aCheckChar) {
		var j = 0;
		
		for (i = 0; i < aCheckString.length; i++) { 
			var c = aCheckString.charAt(i);
			if (aCheckChar.indexOf(c) < 0){
				j++;
				break;
			}
		}
		
		if (j== 0){
			return false;
		}else{
			return true;
		}
	}/*检查字符范围结束:~*/

	/*
	 * 去掉字串左边的空格
	 *@param strTemp ：要规整的字串。字符串型
	 *@return 规整后的字串。字符串型
	 */
	function lTrim(aValue){
		for (i = 0; i < aValue.length; i++){
			if (aValue.charAt(i) != " "){
				return aValue.substring(i, aValue.length);
			}
		}

		return "";
	}/*去掉字串左边的空格结束:~*/

	/*
	 * 去掉字串右边的空格
	 *@param strTemp ：要规整的字串。字符串型
	 *@return 规整后的字串。字符串型
	 */
	function rTrim(aValue){
		for(i = aValue.length - 1; i >= 0; i--){
			if (aValue.charAt(i) != " "){
				return aValue.substring(0, i + 1);
			}
		}
		return "";
	}/*去掉字串右边的空格结束:~*/

	/*
	 * 去掉字串两边的空格
	 *@param strTemp ：要规整的字串。字符串型
	 *@return 规整后的字串。字符串型
	 */
	function trim(aValue){
		return rTrim(lTrim(aValue));
	}/*去掉字串两边的空格结束:~*/

	function checkMail(){
	}

}


