function requestUserExists(userInformation, type, focusObj) {
	var transport;
	var params = type + '=' + userInformation;
	var postUrl = 'http://' + location.host + '/js/existsUser.asp?' + params;
	
	try {
		transport = new XMLHttpRequest();
	} catch(e) {
		try {
			transport = new ActiveXObject('Msxml2.XMLHTTP');
		} catch(e) {
			try {
				transport = new ActiveXObject('Microsoft.XMLHTTP');
			} catch(e) { return; }
		}
	}
	
	transport.open('POST', postUrl, true);
	transport.setRequestHeader('Content-Type', 'text/html');
	transport.onreadystatechange = function() {
		if(transport.readyState == 4) {
			if(transport.status == 200) {
				existsUser(transport.responseXML, focusObj);
			}
		}
	}
	transport.send(params);
}
function existsUser(xmlObj, focusObj) {
	var father = focusObj.parentNode.parentNode;
	
	 if(focusObj.id == 'username') {
		rs = xmlObj.getElementsByTagName('cer');
		if(rs.length > 0) {
			var username = document.getElementById('username');
			var err = getErrArea(username, 'color:#FF0000;');
		  	err.innerHTML = '此用户名已经被注册！'; return false;
		} else {
			return true;
		}
	}
}


function getErrArea(obj, stl) {
	var err = obj.parentNode.lastChild; //取表单对象的父对象中最后一个元素
	if(err.nodeName.toLowerCase() != 'span') { //如果这个元素不是SPAN标签元素，则创建新的元素
		err = obj.parentNode.appendChild(document.createElement('span'));
		err.style.cssText = stl;
	}
	
	err.innerHTML = '';
	
	return err;
}
	
function getform(formObjectId) {
	var f = document.getElementById(formObjectId); //获取需要验证的FORM对象
	
	for(var i = 0; i< f.length; i++) { //循环FORM内的表单元素
		switch(f[i].id) {
			case 'username' :
				//onform为自定义事件，用于提交时整体验证
				f[i].onform = f[i].onblur = function() {
					var err = getErrArea(this, 'color:#FF0000;'); //取错误显示区域对象
					var wordAs = /^[a-zA-Z]\w*$/g.test(this.value); //定义字符验证的正则
					if(this.value == '') { err.innerHTML = '帐号没有填写！'; return false; }
					else if(this.value.length > 20 || this.value.length < 5) { err.innerHTML = '帐号的长度不能小于5位，或不大于20位！'; return false; }
					else if(!wordAs) { err.innerHTML = '帐号必须是英文字母开头，并且只能是英文字母、数字或下划线！'; return false; }
					else if(requestUserExists(this.value, 'u', this)){ err.innerHTML = '用户名已经被注册！'; return true; }
					else { err.innerHTML = ''; return true; } //如果没有错误，则清空错误对象中的内容
				}
				break;
			case 'password' :
				f[i].onform = f[i].onblur = function() {
					var err = getErrArea(this, 'color:#FF0000;');
					var wordAs = /[^\x21-\x7E]/g.test(this.value);//***************
					if(this.value == '') { err.innerHTML = '密码没有填写！'; return false; }
					else if(this.value.length > 16 || this.value.length < 4) { err.innerHTML = '密码的长度不能小于4位，且不大于16位！'; return false; }
					else if(wordAs) { err.innerHTML = '密码只能是英文字母、数字或半角标点符号！'; return false; }
					else { err.innerHTML = ''; return true; }
				}
				break;
			case 'password2' :
				f[i].onform = f[i].onblur = function() {
					var err = getErrArea(this, 'color:#FF0000;');
					if(this.value == '') { err.innerHTML = '确认密码没有填写！'; return false; }
					else if(this.value != f['password'].value) { err.innerHTML = '确认密码和密码不同！'; return false; }
					else { err.innerHTML = ''; return true; }
				}
				break;
			case 'question' :
				f[i].onform = f[i].onblur = function() {
					var err = getErrArea(this, 'color:#FF0000;');
					if(this.value == '') { err.innerHTML = '密码提示问题没有填写！'; return false; }
					else { err.innerHTML = ''; return true; }
				}
				break;
			case 'answer' :
				f[i].onform = f[i].onblur = function() {
					var err = getErrArea(this, 'color:#FF0000;');
					if(this.value == '') { err.innerHTML = '提示问题答案没有填写！'; return false; }
					else { err.innerHTML = ''; return true; }
				}
				break;
			case 'email' :
				function isEmail(vEMail)
					{
						var regInvalid=/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
						var regValid=/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
						return (!regInvalid.test(vEMail)&&regValid.test(vEMail));
					}
				f[i].onform = f[i].onblur = function() {
					var err = getErrArea(this, 'color:#FF0000;');
					if(this.value == '') { err.innerHTML = '邮箱没有填写！'; return false; }
					else if (!isEmail(this.value)){ err.innerHTML = '邮箱格式不正确！'; return false; }
					else { err.innerHTML = ''; return true; }
				}
				break;
			case 'company' :
				f[i].onform = f[i].onblur = function() {
					var err = getErrArea(this, 'color:#FF0000;');
					if(this.value == '') { err.innerHTML = '企业名称/姓名没有填写！'; return false; }
					else { err.innerHTML = ''; return true; }
				}
				break;
			default :
				break;
		}
	}
	
	f.onreset = function() {
		for(var i = 0; i < this.length; i++) {
			getErrArea(this[i]).innerHTML = '';
		}
	}
	
	f.onsubmit = function() {
		var SubmitButton = this.Submit;
		SubmitButton.disabled = true; //提交时，立刻禁用提交按扭

		var result = true;
		var firstInput = null; //第一个错误的表单元素
		for(var i = 0; i < this.length; i++) {
			if(this[i].onform) {
				var re = this[i].onform(); 
				result = result && re; //添加一个变量re来临时记录返回值，在计算result最终是否有错误的项
				if(!firstInput && !re) { firstInput = this[i]; }
			}
			
//			result = result && f['sex1'].onselect(); //使用了自定义事件，就不需要这里了
		}
		if(!result) {
			SubmitButton.disabled = false;
			if(firstInput) { firstInput.focus(); }
			return false;
		}
//		this.submit();
//		return false; //用于调试
	}
}

window.onload = function() { getform('form2');init();div();}