///////////////////////////////////////
	// ver 5.1 用 类 对象 方式实现
	// ver 5.1.22 出错的div 简化：只用这个一个即 ok <div id="diserr_all" style="display:none;">&nbsp;&nbsp;</div>
///////////////////////////////////////
var FormDisError = function(formName,args_arr)
{
	
	this.error_flag = 0;
	this.required_flag = 0;
	this.required_def_err = ' * 号项不能为空！';
	this.required_deferr_id = 'req_err_id';
	//this.diserr_class = args_arr['diserr_class'] ? args_arr['diserr_class'] : 'apDiv3';
	this.diserr_class = args_arr['diserr_class'];
	//this.warns = 'follow';//	warns : 'summary,follow, color,class, alert,tips',
	this.warns = args_arr['warns'] ? args_arr['warns'] : 'follow' ;//	warns : 'summary,follow, color,class, alert,tips,star_summary',//star_summary: * 星号项不能为空
	this.summary_follow_id = args_arr['summary_follow_id'] ? args_arr['summary_follow_id'] : 'img_submit' ;//	warns : 'summary,follow, color,class, alert,tips',
	
	this.summary_follow_obj = document.getElementById(this.summary_follow_id);//	warns : 'summary,follow, color,class, alert,tips',
	this.summary_right_zb = args_arr['summary_right_zb'] ? args_arr['summary_right_zb']:10;
	this.summary_top_zb = args_arr['summary_top_zb'] ? args_arr['summary_top_zb']:-26;

	this.form_name = formName;
	
	this.diserr_div =  args_arr['diserror_div'] ? args_arr['diserror_div'] :'diserr_all';
	this.diserr_div_text = '';
	
	this.right_zb =  args_arr['right_zb'] ? args_arr['right_zb'] :100;
	this.top_zb =  args_arr['top_zb'] ? args_arr['top_zb'] :10;
	
	
	
	
	
		//设置 error class
		this.set_diserr_class = function ()
		{
			switch (this.warns)
			{
				case 'follow':
					this.diserr_class =  this.diserr_class ? this.diserr_class : 'apDiv3';//
				break;
				
				case 'summary':
					this.diserr_class =  this.diserr_class ? this.diserr_class : 'showError';//
				break;
				
				case 'star_summary':
					this.diserr_class =  this.diserr_class ? this.diserr_class : 'showError';//
				break;
				
				
				
				default :
					this.diserr_class =  'showError';//
				break;
			}
		}
		
	
	
		//所有显示的信息置空
		this.diserr_reset = function ()
		{
			this.error_flag = 0;
			this.diserr_div_text = '';
			this.required_flag = 0;
			//alert(this.required_flag);
		}
		
		//获取元素的纵坐标 
		this.getTop = function (e)
		{ 
			var offset=e.offsetTop; 
			if(e.offsetParent!=null) offset+= this.getTop(e.offsetParent); 
			return offset; 
		} 
		
		//获取元素的横坐标 
		this.getLeft = function (e)
		{ 
			var offset=e.offsetLeft; 
			if(e.offsetParent!=null) offset+= this.getLeft(e.offsetParent); 
			return offset; 
		} 
		//
		this.get_errdivid_i = function (input_id)
		{
			var input_id_trim = input_id;
				input_id_trim = input_id_trim.replace("Form[","");
			    input_id_trim = input_id_trim.replace("[","");
			    input_id_trim = input_id_trim.replace("]","");
			var diserr_div_i = 'diserr_' + input_id_trim;
			
			return diserr_div_i;
				
		}
		
/*		this.show_error_5.1.5 = function (err,input_id)
		{
			var diserrors_all = document.getElementById(this.diserr_div);

			var input_obj = document.getElementById(input_id);
			
			var diserr_div_i = this.get_errdivid_i(input_id);
			
			var diserror_i = new Array();
				diserror_i['style.display'] = 'block';
				diserror_i['innerHTML'] = err;
				diserror_i['style.left'] = this.getLeft(input_obj)+ this.right_zb ;//右（加）
				diserror_i['style.top'] = this.getTop(input_obj)- this.top_zb ;//上（减）
			
			this.diserr_div_text +=  "<div id=\"" + diserr_div_i + "\" class=\"" + this.diserr_class +　"\" style=\"display:"+ diserror_i['style.display'] +";left:"+ diserror_i['style.left'] +";top:" + diserror_i['style.top'] + ";\" >" + diserror_i['innerHTML'] + "</div>";
			
			diserrors_all.style.display="block";
			diserrors_all.innerHTML　= this.diserr_div_text ;

			//alert(diserrors_all.innerHTML);
		}
*/		
		this.show_error = function (err,input_id,formck_datatype)
		{
			//var diserrors_all = document.getElementById(this.diserr_div);

			var input_obj = document.getElementById(input_id);
			
			var diserr_div_i = this.get_errdivid_i(input_id);
			
			var diserror_i = new Array();
				diserror_i['style.display'] = 'block';
				diserror_i['innerHTML'] = err;
			
			//alert(this.warns);
			switch (this.warns)
			{
				case 'follow':
					diserror_i['style.left'] = this.getLeft(input_obj)+ this.right_zb ;//右（加）
					diserror_i['style.top'] = this.getTop(input_obj)- this.top_zb ;//上（减）
					//alert(this.error_flag);
					
					this.diserr_div_text +=  "<div id=\"" + diserr_div_i + "\" class=\"" + this.diserr_class +　"\" style=\"display:"+ diserror_i['style.display'] +";left:"+ diserror_i['style.left'] +";top:" + diserror_i['style.top'] + ";\" >" + diserror_i['innerHTML'] + "</div>";
					
/*					diserrors_all.style.display="block";
					diserrors_all.innerHTML　= this.diserr_div_text ;
*/					return true;
				break;
				
				case 'summary':
					//this.diserr_div_text += "<br>" +  diserror_i['innerHTML'] ;
					this.diserr_div_text +=  "<div id=\"" + diserr_div_i + "\"  style=\"display:"+ diserror_i['style.display'] +";\" >" + diserror_i['innerHTML'] + "</div>";
					return true;
				break;
				
				case 'star_summary':
					
					//alert(formck_datatype);
					if(formck_datatype!='required')//必填项，所有的 必填项 用 * 号项 表示，省去一些不必要的提示
					{
						this.diserr_div_text +=  "<div id=\"" + diserr_div_i + "\"  style=\"display:"+ diserror_i['style.display'] +";\" >" + diserror_i['innerHTML'] + "</div>";
					}
					
					return true;
				break;
				
				default :
					this.diserr_div_text +=  "<div id=\"" + diserr_div_i + "\"  style=\"display:"+ diserror_i['style.display'] +";\" >" + diserror_i['innerHTML'] + "</div>";
					return true;
				break;
			}
			//alert(diserrors_all.innerHTML);
		}
			///////////////////////
			//clear null error
			this.clear_errors = function (input_id)
			{
				//alert(input_id);
				var diserr_div_i = this.get_errdivid_i(input_id);
					
				//alert(diserr_div_i);
				var diserrors_obj = document.getElementById(diserr_div_i);
				var input_obj = document.forms[this.form_name].elements[input_id];
				
				var input_value = input_obj.value;
				if(input_value!='')
				{	
				//var diserrors=document.all.dis_errors;
				var diserrors = diserrors_obj ;
				///////////////////////////////////////////////////
				//alert(diserrors);
					if(typeof(diserrors)!="undefined" && diserrors != null)
					{
						diserrors.style.display="none";
						diserrors.innerHTML= '' ;
					}
				///////////////////////////////////////////////////
					
				}
			}
		///////////////////////
		this.trim = function (str)
		{
			if (typeof(str) == "string")
			{
				return str.replace(/^\s*|\s*$/g, "");
			}
			else
			{
				return str;
			}
		}
		///////////////////////
		//用正则表达式进行判断
		this.check_regex = function (regexpress,val)
		{
			//alert(val);
			var regexpress = eval("regexEnum."+regexpress);
			
			if(regexpress==undefined || regexpress=="")
			{
				return false;
			}
			else
			{
				var isvalid = (new RegExp(regexpress, 'i')).test(val);
				 return isvalid;	
			}
		}
		///////////////////////
		this.show_error_method = function (err,input_id,formck_datatype)
		{
			//alert(warns);
			switch (this.warns)
			{
				case 'follow':
				//alert(this.error_flag);
					this.show_error( err,input_id,formck_datatype);
					return true;
				break;
				
				case 'summary':
				//alert(this.error_flag);
					this.show_error( err,input_id,formck_datatype);
					return true;
				break;
				
				case 'star_summary':
				//alert(this.error_flag);
					this.show_error( err,input_id,formck_datatype);
					return true;
				break;
				
					case 'alert':
					alert(err);
					return true;
				break;
			
				
				default:
					alert(err);
					return true;
				break;
			}
		}
		///////////////////////
		this.IsRequired = function (input_id,err)
		{
			//alert(this.form_name);
			var obj = document.forms[this.form_name].elements[input_id];
			//alert(obj.value);
	
			obj.value = this.trim(obj.value);
			
			
			//alert(obj.value);
			
			if(typeof(obj)=="undefined" || obj.value=='')
			{
				this.error_flag = 1;
				this.required_flag = 1;
				//alert(this.error_flag);
				this.show_error_method(err,input_id,'required');
				return false;
			}
			else
			{
			 return true;	
			}
			
		}
	
		///////////////////////
		//用正则表达式 来判断，比如：手机号，邮件地址，url 等
		this.IsMatching_regex = function (regex,inputid,err)
		{
			//alert(formname);
			var obj = document.forms[this.form_name].elements[inputid];
			
			obj.value = this.trim(obj.value);
			
			
			//alert(obj.value);
			
			if(obj.value!='' && !(this.check_regex(regex,obj.value)))
			{
				this.error_flag = 1;
				//alert(this.error_flag);
				this.show_error_method(err,inputid,'match_regex');
				return false;
			}
			else
			{
			 return true;	
			}
			
		}
		/////////////////////////////
		this.ISsubmit = function ()
		{
			//alert(this.error_flag);
			 if(this.error_flag==1)
			 {
				this.show_error_display();
			   return 0;  
			 }
			   
			document.forms[this.form_name].submit(); 
		}
		
		/////////////////////////////
		this.show_error_display = function ()
		{
			//设置 error class
			this.set_diserr_class() ;
			
			var diserrors_all = document.getElementById(this.diserr_div);

			switch (this.warns)
			{
				
				case 'summary':
					//this.diserr_div_text += "<a href='#' title='"+ '关闭错误提示' +"' onclick='$(\"#" + this.diserr_div + "\").slideUp(\"slow\");return false;'>"+ '关闭'  +"</a>";;
					if(this.diserr_div_text!='')
					{
						this.diserr_div_text = "<div id=\"close_err\" align=\"right\"><a href='#' title='"+ '关闭错误提示' +"' onclick='$(\"#" + this.diserr_div + "\").slideUp(\"slow\");return false;'>"+ '关闭'  +"</a></div>"   +  this.diserr_div_text;
						diserrors_all.style.left = this.getLeft(this.summary_follow_obj)+ this.summary_right_zb ;//右（加）
						diserrors_all.style.top = this.getTop(this.summary_follow_obj)- this.summary_top_zb ;//上（减）
						diserrors_all.className = this.diserr_class;
						//alert(this.diserr_class);
						//alert(diserrors_all.class);
					}
				break;
				
				case 'star_summary':
					//this.diserr_div_text += "<a href='#' title='"+ '关闭错误提示' +"' onclick='$(\"#" + this.diserr_div + "\").slideUp(\"slow\");return false;'>"+ '关闭'  +"</a>";;
					//alert(this.required_flag);
					if(this.required_flag == 1)
					{
						this.diserr_div_text +=  "<div id=\"" + this.required_deferr_id + "\"  >" + this.required_def_err + "</div>";
					}
					
					if(this.diserr_div_text!='')
					{
						this.diserr_div_text = "<div id=\"close_err\" align=\"right\"><a href='#' title='"+ '关闭错误提示' +"' onclick='$(\"#" + this.diserr_div + "\").slideUp(\"slow\");return false;'>"+ '关闭'  +"</a></div>"   +  this.diserr_div_text;
					
						diserrors_all.style.left = this.getLeft(this.summary_follow_obj)+ this.summary_right_zb ;//右（加）
						diserrors_all.style.top = this.getTop(this.summary_follow_obj)- this.summary_top_zb ;//上（减）
						diserrors_all.className = this.diserr_class;
						//alert(this.diserr_class);
						//alert(diserrors_all.class);
					}
				break;
				
				default :
				break;
			}//switch end
			
			if(this.diserr_div_text!='')
			{
				diserrors_all.style.display="block";
				diserrors_all.innerHTML　= this.diserr_div_text ;
			}
			else
			{
				diserrors_all.style.display="none";
				diserrors_all.innerHTML　= this.diserr_div_text ;
			}

		}
	

		/////////////////////////
		//单个输入框，或者其他选择等，oblur,或者 onchange，或者 onmouseover，等事件，触发 清空当前项目的错误提示，其他其实不变
		//即：input 或者 其他选项框，内容更改的话，就去除错误提示
		// check if confirm inputs is still valid after inputs changed
		this.input_event_clearerr = function (inputid_arr)
		{
			var inputid_arr_i;
			//jquery 的this 和 对象的this 冲突时的解决方法
			//var self = this;//解决冲突,用self 表示当前对象,防止和 jquery对象冲突

			//alert(inputid_arr.length);
			for(var i=0;i<inputid_arr.length;i++)
			{
				inputid_arr_i = inputid_arr[i];
				
				this.clear_errors(inputid_arr_i);

/*				//alert(this.error_flag);
				$("[id="+ inputid_arr_i +"]").blur(function() {
			//alert(inputid_arr_i);
					//alert('aaa');
					//alert(self.error_flag);
					self.clear_errors(inputid_arr_i);
				});
*/			}
		}
		/////////////////////////


}//class end
