/****************************************
*	javaScript check form 1.1
*
*	author	 : jld
*	date	 : 2008-04-18
*
*	pack	 : dong.web
*	class	 : CheckForm
*
*****************************************/

//=================================================================

var dong;
if(!dong){
	dong = {};
}
if(!dong.web){
	dong.web={};
}

//=================================================================
dong.web.CheckForm = function(){
	this.msgType = 0;//0:alert , 1:innerHTML
	this.errorFocus = true;
	this.doFocus = function(o){
		if(this.errorFocus && o.id!=""){
			o.focus();
		}
	}
}

//功能		判断是否为空
//参数		o:表单对象 , msg:错误信息 , msgName:错误信息显示容器?可?
//返回?true:为空 , false:非空
dong.web.CheckForm.prototype.checkIsNull = function(obj ,msg , msgName){
	var objValue = "";
	try{
		objValue = obj.options[obj.selectedIndex].value;
	}catch(e){
		objValue = obj.value;
	}
	if (objValue==""){
		this._msg(msg,msgName);
		this.doFocus(obj);
		return true;
	}else{
		return false;
	}
};


//功能		判断字符串中文件类型
//参数		obj:表单对象 , type:文件后缀类型(?,'分隔) , msg:错误信息 , msgName:错误信息显示容器?可?
//返回?true:正确类型 , false:错误类型
dong.web.CheckForm.prototype.checkType = function(obj , type , msg , msgName){
	var str = obj.value
	var typeArr = type.split(',');
	var isErr;
	if (str!=""){
		var arr = str.split('.');
		var strExp = arr[arr.length-1]
		for (var i=0; i<typeArr.length; i++){
			if (typeArr[i]==strExp){
				isErr = false;
				break;
			}else{
				isErr = true;
			}
		}
		if (isErr){
			obj.select();
			this._msg(msg,msgName);
			return false;
		}else{
			return true;
		}
	}
	return true;
};

//功能		判断字符串中否为指定字符集中的字?
//参数		obj:表单对象 , checkStr:用于检测的字符?, msg:错误信息 , msgName:错误信息显示容器?可?
//返回?true:正确字符?, false:错误字符?
dong.web.CheckForm.prototype.onlyString = function(obj , checkStr , msg , msgName){
	var checkOK = checkStr;
	var checkStr = obj.value;
	var allValid = true;
	var decPoints = 0;
	
	for (i = 0;  i < checkStr.length;  i++){
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++){
			if (ch == checkOK.charAt(j)){
				break;
			}
		}
			if (j == checkOK.length){
				allValid = false;
				break;
			} 
	}
	if (!allValid){
		this._msg(msg,msgName);
		this.doFocus(obj);
	}
	return (allValid)
};

//功能		判断字符串是否为E-mail格式
//参数		obj:表单对象 , msg:错误信息 , msgName:错误信息显示容器?可?
//返回?true:正确字符?, false:错误字符?
dong.web.CheckForm.prototype.checkIsEmail = function(obj , msg , msgName){
	if (!this._isEmail(obj.value)){
		this._msg(msg,msgName);
		this.doFocus(obj);
		return false;
	}else{
		return true;
	}
};

//功能		检测再次密码是否相?
//参数		obj1:密码表单对象 , obj2:确认密码表单对象 , msg:错误信息 , msgName:错误信息显示容器?可?
//返回?true:相同 , false:不同
dong.web.CheckForm.prototype.checkPasswordSame = function(obj1 , obj2 , msg , msgName){
	if (obj1.value != obj2.value){
		this._msg(msg,msgName);
		this.doFocus(obj1);
		return false;
	}else{
		return true;
	}
};

//功能		检测字符串长度
//参数		obj:表单对象 , count:长度 , msg:错误信息 , msgName:错误信息显示容器?可?
//返回?true:相同 , false:不同
dong.web.CheckForm.prototype.checkPasswordCount = function(obj , count , msg , msgName){
	if (obj.value.length < count){
		this._msg(msg,msgName);
		this.doFocus(obj);
		return false;
	}else{
		return true;
	}
};


//=================================================================
//***PRIVATE

//功能		以指定的方式显示错误信息
//参数		msg:错误信息 , msgName:错误信息显示容器?
//返回??
dong.web.CheckForm.prototype._msg = function(msg,msgName){
	if (this.msgType==0){
		alert(msg);
	}else if(this.msgType==1){
		if (msgName==undefined || msgName==""){
			alert(msg);
		}else{
			document.getElementById(msgName).innerHTML = msg;
		}
	}
}

//功能		检测是否为正确E-mail格式
//参数		emailStr:E-mail字符?
//返回?true:正确E-mail格式 , false:错误E-mail格式
dong.web.CheckForm.prototype._isEmail = function(emailStr){
	var emailPat   = /^(.+)@(.+)$/;
	var userPat    = /^[a-zA-Z0-9\._-]+$/;
	var domainPat  = /^[a-zA-Z0-9\.-]+$/;
	var invalid0   = /^(.+)\.(.+)\.(.+)$/;
	var invalid1   = /^\.(.+)/;
	var invalid2   = /(.+)\.$/;
	var invalid3   = /\.\./;
	var eMailArray = emailStr.match(emailPat);

	if (eMailArray == null)
		return false;

	var user = eMailArray[1];
	var dom = eMailArray[2];
	if (user.match(userPat) == null
		//|| user.match(invalid0) != null
		|| user.length < 2
		|| user.match(invalid1) != null
		|| user.match(invalid2) != null
		|| user.match(invalid3) != null)
	{
		return false;
	}

	if (dom.match(domainPat) == null
		|| dom.indexOf('.') == -1
		|| dom.length < 4
		|| dom.match(invalid1) != null
		|| dom.match(invalid2) != null
		|| dom.match(invalid3) != null)
	{
		return false;
	}

	return true;
};


