﻿
/******************************************************************************/
/************************控件的id必须类似为 check_[date]_【required】_XX **********/
/******************************************************************************/

var allValidators = $H();
var require_tip = new Array();
var form_error_message = new Array();
String.prototype.trim=String.prototype.strip;
allValidators.set("char",new validater(/^[A-Za-z]+$/," 只允许有字母") );
allValidators.set("int",new validater(/^\d{0,}$/," 数字格式错误" ));
allValidators.set("float",new validater(/(-?\d+)(\.\d{1,2})?$/," 数字格式错误" ));
allValidators.set("double",new validater(/(-?\d+)(\.\d{1,4})?$/," 数字格式错误" ));
allValidators.set("money",new validater(/(-?\d+)(\.\d{1,2})?$/," 金额格式错误" ));
allValidators.set("string",new validater(/^\w+$/," 只允许包含字母或数字及下划线" ));
allValidators.set("phone",new validater(/^((\d{3,4})-?)?\d{7,8}$/," 固定电话格式错误" ));
allValidators.set("fax",new validater(/^((\d{3,4})-?)?\d{7,8}$/," 传真号码格式错误" ));
allValidators.set("cellPhone",new validater(/^(\+\d{2})?\d{11}$/," 手机号码错误" ));
allValidators.set("date",new validater(/\d{4}\-[0-1]?[0-9]{1}\-[0-3]?[0-9]{1}/,"日期格式应如:2008-01-05/" ));
allValidators.set("time",new validater(/^[12]{1}[0-9]{1}:[12345]{1}[0-9]{1}:[012345]{0,1}[0-9]{1}$/,"时间格式应如：22:22:22" ));
allValidators.set("datetime",new validater(/^\d{4}\-?[0-1]?[0-9]{1}\-?[0-3]?[0-9]{1}$/,"日期格式应如:20050505或2005-5-5" ));
allValidators.set("email",new validater(/[^\@]*@{1}[^\@]*/," 电子邮件格式错误" ));
allValidators.set("zCode",new validater(/^\d{6,8}$/i," 邮政编码格式错误" ));

function validater(reg,warning){
	this.reg = reg;
	this.warning = warning;
}
// int_require_xxxxx
function checkCont(conType){
	allInput =document.getElementsByTagName(conType) ;
	for(var k=0;k<allInput.length;k++){
		var input_= allInput[k];
		var id = input_.getAttribute("id");
		if(!id ||id.indexOf("check_")<0){
			continue;
		}
		if(id.indexOf("required_")>-1){
			checkRequire(input_);
		}
		contt=id.split("_")[1];
		if(contt && contt!="required" && contt!="noType"){
			checkFormat(input_);		
		}
	}
}

function checkRequire(cont){
	var title = cont.getAttribute("title");
	if(!cont.value || stringTrim(cont.value)==""){
		form_error_message.push(title+"不能为空");
	}

}

function checkFormat(cont){
	var title = cont.getAttribute("title");
	var id = cont.getAttribute("id");
	if(id && cont.value && !stringTrim(cont.value)==""){
		 contt=id.split("_")[1];
		 if(contt ){
		 	validator = all_validator.get(contt);
		 	if(validator&& !validator.reg.test(cont.value)){
		 		form_error_message.push(title+validator.warning);
		 	}
		 }
	}
}

function showMessage(){
	var message="";
	for(var i=0;i<form_error_message.length;i++){
		message = message+form_error_message[i]+"\n";
	}
	if(message &&!message == ""){
		alert(message);
		return false;
	}
	return true;
}


function stringTrim(string){
	if(!string){
		return;
	}
	reg = /\s+/g;
	return string.replace(reg,"");

}

function defaultCheck(contType){
	form_error_message = new Array();
	if(!contType){
		checkCont('INPUT');
		checkCont('TEXTAREA');
	}else{
		checkCont(contType);
	
	}
	return showMessage();
}

function checkOptionCheck(_name){
	var result = false;
	var _opts = document.getElementsByName(_name);
	if(!_opts){
		return false;
	}
	for(var k=0;k<_opts.length;k++){
		if(_opts[k].checked){
			result = true;
			break;
		}
	
	}
	return result;

}

/**
 * 检查form表单中的输入label的cssclass 为redStart id为input的名称 则为必填项
 */
function checkFormData(formId){
	var messages = new Array();
	var form=$(formId);
	var mes='';
	if(!form){
		return false;
	}
	var elements= $H(form.serialize(true));
	$$('label.redStart').each(function (lab){//check require
		if(elements.get(lab.id)){
			lab.innerHTML="*";
		}else{
			mes="请确保必填项都填写完整(红色部分)\n";
			lab.innerHTML="不能为空";
		}
		
	});
	_checkValueRegByCss(form,messages);
	for(var i=0;i<messages.length;i++){
		mes=mes+messages[i]+'\n'
	
	}
//	alert(mes);
	return mes;
}

function checkFormDataEx(formId){
	var messages = new Array();
	var form=$(formId);
	var mes='';
	if(!form){
		return false;
	}
	var elements= $H(form.serialize(true));
	$$('label.redStart').each(function (lab){//check require
		if(elements.get(lab.id)){
			lab.innerHTML+="";
		}else{
			mes="请确保必填项都填写完整(红色部分)\n";
			//lab.innerHTML="不能为空";
			alert(lab.innerHTML+"不能为空");
			return false;
		}
		
	});
	_checkValueRegByCss(form,messages);
	for(var i=0;i<messages.length;i++){
		mes=mes+messages[i]+'\n'
	
	}
//	alert(mes);
	return mes;
}

function _checkValueRegByCss(form,messageArray){
	allValidators.each(function(element){
		var allInput = form.select("input."+element.key);
		if(allInput && allInput.length>0){
				allInput.each(function(input){
					if(!input.getValue()){
						return;
					}
					var title ='';
					if(input.title){
						title=input.title;
					}
					var validator=element.value;
					if(!validator.reg.test(input.getValue())){
						 messageArray.push(title+''+validator.warning)
					//	 $(input).scrollTo()
					
						 input.focus();
					}
				});
		}
	});
	 if(!messageArray){
	 	messageArray = new Array();
	 }
}
/**
 * 如果没有信息返回true
 */
function showCheckMessage(messages){
	if(! typeof(messages)=='String'){
//		alert("not a string message to show");
		return false;
	}
	if(messages){
		messages=messages.trim();
	}
	if(messages&&messages!==''){
		alert(messages);
		return false;
	}
	return true;
}
