var note = "note";
var notetrue = "notetrue";
var noteok = "noteok";
var noteawoke = "noteawoke";

var errorFieldName = "";
var validateInfo_ok = "填写正确。";


var validateInfo_userName = "由4-20个小写英文字母或数字组成。不支持中文，不支持特殊字符(如：* - / 等)，不能以数字开头，注册成功后不可修改。";
var validateInfo_userName_error = "<h1><span class=\"R\">您的填写有误。</span>会员登录名只能由4-20个小写英文字母或数字组成(不支持中文、不支持特殊字符(如：* - / 等)、不能以数字开头)。</h1>";
var validateInfo_userName_has = "<h1>会员帐号已经存在，请重新输入</h1>";
var validateInfo_userName_Null = "<h1><span class=\"R\">此项为必填项。</span><br/>由4-20个英文字母或数字组成。不支持中文，不支持特殊字符(如：* - / 等)，不能以数字开头，注册成功后不可修改。</h1>";

var validateInfo_password = "由4-20个字母（区分大小写）或数字组成。";
var validateInfo_password_error = "<h1><span class=\"R\">您设置的密码有误。</span>密码由4-20个英文字母(区分大小写)或数字组成</h1>";
var validateInfo_password_Null = "<h1><span class=\"R\">此项为必填项。</span><br/>由4-20个字母（区分大小写）或数字组成。</h1>";

var valideteInfo_confirmPassword = "请再输入一遍您上面填写的密码。";
var valideteInfo_confirmPassword_error = "<h1><span class=\"R\">两次输入的密码不一致！</span>请再输入一遍您上面填写的密码。</h1>";

var validateInfo_companyName = "注册成功后，修改公司名称必须提供相关证明！<br/>请填写工商局注册的全称，无商号的个体经营者请填写执照上的姓名，并标注个体经营。如:张三（个体经营）";
var validateInfo_companyName_Null = "<h1><span class=\"R\">此项为必填项。</span><br/>注册企业请填写工商局注册的全称，无商号的个体经营者请填写执照上的姓名，并标注个体经营。如:张三（个体经营）</h1>";
var validateInfo_companyNameLength = "<h1><span class=\"R\">公司名称错误。</span>必须在4-40个字之间。";
var validateInfo_companyNameSame = "<h1><span class=\"R\">公司名称错误。</span>不能用连续的字或完全使用数字表示。";
var validateInfo_companyName_Same = "对不起，该公司名称已被注册。";

var validateInfo_Null = "<h1><span class=\"R\">此项为必填项。</span>";


var validateInfo_tel_Char = "<h1><span class=\"R\">电话号码错误。</span>区号只能是3～4位数字,电话号码只能是7～8位数字。";
var validateInfo_tel_Null = "<h1><span class=\"R\">电话号码错误。</span>电话号码不能为空。";


var validateInfo_email = "这是客户与您联系的首选方式，请务必填写真实，并确认是您最常用的电子邮件。邮件正确格式如下: b2b@hisupplier.com。";
var validateInfo_email_error = "<h1><span class=\"R\">电子邮箱格式错误。</span>电子邮箱地址正确格式如下: b2b@hisupplier.com。";
var validateInfo_email_Null = "<h1><span class=\"R\">电子邮箱格式错误。</span>电子邮箱地址不能为空。";
var validateInfo_email_Same = "对不起，该电子邮箱已被注册。";

var validateInfo_validateCode = "请输入验证码。";
var validateInfo_validateCode_Null = "<h1><span class=\"R\">验证码不能为空。</span>";
var validateInfo_validateCode_Error = "<h1><span class=\"R\">验证码错误。</span>";



/**
 * 表单验证
 */
function validateForm() {
	var value;
	var notice;	
	var fieldName;
	var flag = true;
	
	//验证公司所在地
	fieldName = "countryCode";
	value = getFieldValue(fieldName);
	notice = getFieldNotice(fieldName);	
	var province = getElementByID("province");
	var city = getElementByID("city");
	if(province.value == "" || city.value == "") { //如果省份或者城市为空
		flag = false;
		setValidateError(notice, validateInfo_Null, fieldName);
	}
	else {
		setValidateOK(notice,validateInfo_ok);
	}

	
	//验证用户帐号
	fieldName = "userName";
	value = getFieldValue(fieldName);
	notice = getFieldNotice(fieldName);
	if (isBlank(value)) {
		flag = false;
		setValidateError(notice, validateInfo_userName_Null, fieldName);
	}
	else {
		if (validate_userName() == 0) {
			flag = false;
		}
	}
	
	//验证密码
	fieldName = "password";
	value = getFieldValue(fieldName);
	notice = getFieldNotice(fieldName);
	if (isBlank(value)) {
		flag = false;
		setValidateError(notice, validateInfo_password_Null, fieldName);
	}
	else {
		if (validate_password() == 0) {
			flag = false;
		}
	}
	
	//验证确认密码
	fieldName = "confirmPassword";
	value = getFieldValue(fieldName);
	notice = getFieldNotice(fieldName);
	if (isBlank(value)) {
		flag = false;
		setValidateError(notice, valideteInfo_confirmPassword_error, fieldName);
	}
	else {
		if (validate_confirmPassword() == 0) {
			flag = false;
		}
	}
	
	//验证公司名称
	fieldName = "companyName";
	value = getFieldValue(fieldName);
	notice = getFieldNotice(fieldName);
	if (isBlank(value)) {
		flag = false;
		setValidateError(notice, validateInfo_companyName_Null, fieldName);
	}
	else {
		if (validate_companyName() == 0) {
			flag = false;
		}
	}
	
	
	//验证真实姓名
	fieldName = "trueName";
	value = getFieldValue(fieldName);
	notice = getFieldNotice(fieldName);
	if (isBlank(value)) {
		flag = false;
		setValidateError(notice, validateInfo_Null, fieldName);
	}
	else {
		if (validate_trueName() == 0) {
			flag = false;
		}
	}
	
	//验证电话号码
	if (focus_tel() == 10) {
		flag = false;
		getFieldNotice("tel").className = noteawoke;
		getFieldNotice("tel").innerHTML = validateInfo_tel_Null;			
	}
	else if (focus_tel() == 0) {
		flag = false;
	}
	
	
	//验证电子邮箱
	fieldName = "email";
	value = getFieldValue(fieldName);
	notice = getFieldNotice(fieldName);
	if (isBlank(value)) {
		flag = false;
		setValidateError(notice, validateInfo_email_Null, fieldName);
	}
	else {
		if (validate_email() == 0) {
			flag = false;
		}
	}
	
	//验证码
	fieldName = "validateCode";
	value = getFieldValue(fieldName);
	notice = getFieldNotice(fieldName);
	if (isBlank(value)) {
		flag = false;
		setValidateError(notice, validateInfo_validateCode_Null, fieldName);
	}
	else {
		if (validate_validateCode() == 0) {
			flag = false;
		}
	}	
	
	
	//
	if (flag == true) {
		document.joinForm.submit();
		return true;
	}
	else {
		return false;
	}
	
}


/**
 * 焦点进入
 */
function focus_join(field) {
	
	//用户帐号
	if (field.name == "userName") {
		var fieldName = "userName";
		var value = getFieldValue(fieldName);
		var notice = getFieldNotice(fieldName);
		if (isBlank(value)) {
			notice.className = notetrue;
			notice.innerHTML = validateInfo_userName;
		}
	}
	
	
	//密码
	if (field.name == "password") {
		var fieldName = "password";
		var value = getFieldValue(fieldName);
		var notice = getFieldNotice(fieldName);
		if (isBlank(value)) {
			notice.className = notetrue;
			notice.innerHTML = validateInfo_password;
		}
	}
	
	//确认密码
	if (field.name == "confirmPassword") {
		var fieldName = "confirmPassword";
		var value = getFieldValue(fieldName);
		var notice = getFieldNotice(fieldName);
		if (isBlank(value)) {
			notice.className = notetrue;
			notice.innerHTML = valideteInfo_confirmPassword;
		}
	}
	
	//公司名称
	if (field.name == "companyName") {
		var fieldName = "companyName";
		var value = getFieldValue(fieldName);
		var notice = getFieldNotice(fieldName);
		if (isBlank(value)) {
			notice.className = notetrue;
			notice.innerHTML = validateInfo_companyName;
		}
	}
	
	//电子邮箱
	if (field.name == "email") {
		var fieldName = "email";
		var value = getFieldValue(fieldName);
		var notice = getFieldNotice(fieldName);
		if (isBlank(value)) {
			notice.className = notetrue;
			notice.innerHTML = validateInfo_email;
		}
	}	
		
	//验证码
	if (field.name == "validateCode") {
		var fieldName = "validateCode";
		var value = getFieldValue(fieldName);
		var notice = getFieldNotice(fieldName);
		if (isBlank(value)) {
			notice.className = notetrue;
			notice.innerHTML = validateInfo_validateCode;
		}
	}	
	
}
	
	
/* 焦点离开 **/
function focus_left(field) {
	eval("validate_" + field.name + "()");
}
	
	
/*
 * 验证用户帐号 0＝错误 1=正确
 */
function validate_userName() {
	var fieldName = "userName";
	var value = getFieldValue(fieldName);
	var notice = getFieldNotice(fieldName);
	if (isNotBlank(value)) { //如果不为空
		//长度4,20
		if (!isLength(value, 4, 20)) {
			setValidateError(notice, validateInfo_userName_error, fieldName);
			return 0;
		}
		//是否是由英文字母的小写或者整数组成的字符串
		if(!isLowerORisInteger(value)) {
			setValidateError(notice, validateInfo_userName_error, fieldName);
			return 0;
		}
		//第一个字母是否是小写英文
		if(!isFirstEnglish(value)) {
			setValidateError(notice, validateInfo_userName_error, fieldName);
			return 0;
		}
		//用户帐号是否已存在
		if(isUserName()) {
			setValidateError(notice, validateInfo_userName_has, fieldName);
			return 0;
		}
		//
		setValidateOK(notice,validateInfo_ok);
		return 1;
	}
	else { //如果为空
		notice.className = note;
		notice.innerHTML  = "&nbsp;";
		return 1;
	}
}
	
	
	
/*
 * 验证密码
 */
function validate_password() {
	var fieldName = "password";
	var value = getFieldValue(fieldName);
	var notice = getFieldNotice(fieldName);
	if (isNotBlank(value)) { //如果不为空
		if(!isPassword(value)) {
			setValidateError(notice, validateInfo_password_error, fieldName);
			return 0;
		}
		else {
			setValidateOK(notice,validateInfo_ok);
			return 1;
		}
		
	}
	else { //如果为空
		notice.className = note;
		notice.innerHTML  = "&nbsp;";
		return 1;
	}
}
	

/*
 * 验证确认密码
 */
function validate_confirmPassword() {
	var fieldName = "confirmPassword";
	var value = getFieldValue(fieldName);
	var notice = getFieldNotice(fieldName);
	//
	var fieldName2 = "password";
	var value2 = getFieldValue(fieldName2);
	var notice2 = getFieldNotice(fieldName2);

	if (isNotBlank(value)) { //如果不为空
		if(!isPassword(value)) {
			setValidateError(notice, valideteInfo_confirmPassword_error, fieldName);
			return 0;
		}
		if(value != value2) {
			setValidateError(notice, valideteInfo_confirmPassword_error, fieldName);
			return 0;
		}
		//
		setValidateOK(notice,validateInfo_ok);
		return 1;
	}
	else { //如果为空
		notice.className = note;
		notice.innerHTML  = "&nbsp;";
		return 1;
	}	
}

	
/* 验证公司名称 **/
function validate_companyName() {
	var fieldName = "companyName";
	var value = getFieldValue(fieldName);
	var notice = getFieldNotice(fieldName);
	if (!isBlank(value)) { //如果不为空
		if (!isLength(value, 4, 40)) {
			setValidateError(notice, validateInfo_companyNameLength);
			return 0;
		}	
		if(sameChar(value) || isInteger(value)) {
			setValidateError(notice, validateInfo_companyNameSame);
			return 0;		
		}
		if( usedCompanyName() ) { //公司名称是否已存在
			setValidateError(notice, validateInfo_companyName_Same);
			return 0;
		}		
		setValidateOK(notice, validateInfo_ok);
		return 1;			
	}
	else { //如果为空
		notice.className = note;
		notice.innerHTML  = "&nbsp;";
		return 1;
	}
}
	
	
/* 验证真实姓名 **/
function validate_trueName() {
	var fieldName = "trueName";
	var value = getFieldValue(fieldName);
	var notice = getFieldNotice(fieldName);
	
	if (!isBlank(value)) { //如果不为空
		setValidateOK(notice, validateInfo_ok);
		return 1;
	}
	else {
		notice.className = note;
		notice.innerHTML  = "&nbsp;";
		return 1;
	}
}	
	
/* 验证电子邮箱 **/
function validate_email() {
	var fieldName = "email";
	var value = getFieldValue(fieldName);
	var notice = getFieldNotice(fieldName);
	if (!isBlank(value)) { //如果不为空
		if( !isEmail(value) ) {
			setValidateError(notice, validateInfo_email_error);
			return 0;
		}
		if( usedEmail() ) { //Email是否已存在
			//setValidateError(notice, validateInfo_email_Same);
			getElementByID("joinDiv").style.display = "none";
			getElementByID("loginDiv").style.display = "block";
			document.loginForm.userEamil.value = value;
			return 0;
		}
		setValidateOK(notice, validateInfo_ok);
		return 1;
	}
	else { //如果为空
		notice.className = note;
		notice.innerHTML  = "&nbsp;";
		return 1;
	}
}

/* 验证码 **/
function validate_validateCode() {
	var fieldName = "validateCode";
	var value = getFieldValue(fieldName);
	var notice = getFieldNotice(fieldName);
	
	if (!isBlank(value)) { //如果不为空
		if (!isValidateCode()) { //验证码是否正确
			setValidateError(notice, validateInfo_validateCode_Error);
			return 0;
		}
		setValidateOK(notice, validateInfo_ok);
		return 1;
	}
	else {
		notice.className = note;
		notice.innerHTML  = "&nbsp;";
		return 1;
	}
}
	
	
/* －－－－－ 验证电话号码开始 －－－－－   **/

/* 焦点进入或者离开 **/
function focus_tel() {
	var tmp = validateTel1() + validateTel2();

	if (tmp == 2) {
		getFieldNotice("tel").className = note;
		getFieldNotice("tel").innerHTML = validateInfo_ok;
		return 1;		
	} 
	else if ((tmp == 0 || tmp == 1 || tmp == -10)){
		setValidateError(getFieldNotice("tel"), validateInfo_tel_Char);
		return 0;
	}
	else if (tmp == -9 || tmp == -20) {
		getFieldNotice("tel").className = note;
		getFieldNotice("tel").innerHTML = "";
		return 10;
	}
}


/* 验证电话号码(区号) **/
function validateTel1() {
	var fieldName = "tel1";
	var value = getFieldValue(fieldName);
	var notice = getFieldNotice(fieldName);
	if (!isBlank(value)) { //如果不为空
		if (!isLength(value,3,4) || !isInteger(value)) { //区号必须是3,4位数字
			return 0;			
		}
		else {
			return 1;
		}
	} else {
		return -10;
	}
}

/* 验证电话号码(电话号码) **/
function validateTel2() {
	var fieldName = "tel2";
	var value = getFieldValue(fieldName);
	var notice = getFieldNotice(fieldName);
	if (!isBlank(value)) { //如果不为空
		if (!isLength(value,7,8) || !isInteger(value)) { //电话号码必须是7-8位数字
			return 0;			
		}
		else {
			return 1;
		}		
	} else {
		return -10;
	}
}

/* －－－－－ 验证电话号码结束 －－－－－   **/	
	
	
	
	
/*
 *验证错误
 *@param element - 提示元素
 *@param info - 提示信息
 *@param fieldName - 字段名
 */
function setValidateError(element, info, fieldName) {
	element.innerHTML = info;
	element.className = noteawoke;
	if (errorFieldName == "") {
		errorFieldName = fieldName;
	}
}

/*
 *验证通过
 *@param element - 字段提示元素
 *@param info - 字段提示信息
 */
function setValidateOK(element, info) {
	if (info == undefined || info == "") {
		element.innerHTML = validateInfo_ok;
	} else {
		element.innerHTML = info;
	}
	element.className = noteok;
}
	
	
/* 取得字段提示元素 **/
function getFieldNotice(fieldName) {
	var notice = getElementByID(fieldName + "_notice");
	return notice;
}

/* 取得验证字段元素 **/
function getFieldValue(fieldName) {
	return getElementByID(fieldName).value;
}


/* 检测账号是否已存在 **/
function isUserName() {
	try {
		createXMLHttpRequest();
		var userName = document.getElementById( "userName" ).value;
		var url = "/isUserName.do?userName=" + userName;
		xmlhttp.open("GET",url,false);
		xmlhttp.onreadystatechange = showResult;
		xmlhttp.send(null);
		return showResult();
	}
	catch (e) {			
		return false;
	}		
}
/* ajax返回结果 **/
function showResult() {
	if (xmlhttp.readyState == 4) {
		if (xmlhttp.status == 200) {
			var result = toTrim(xmlhttp.responseText);
			if (result == "1") {
				return false;
			}
			else {
				return true;
			}
		}
	}
}

/* 检测Email否已存在 **/
function usedEmail() {
	try {
		if (xmlhttp == null) {
			createXMLHttpRequest();
		}
		var email = document.getElementById( "email" ).value;
		var url = "/isEmail.do?email=" + email;
		xmlhttp.open("GET",url,false);
		xmlhttp.onreadystatechange = showUsedEmail;
		xmlhttp.send(null);
		return showUsedEmail();
	} catch (e) {			
		return true;
	}	
}
/* usedEmail ajax返回结果 //1-不存在  2-已存在 **/
function showUsedEmail() {
	if (xmlhttp.readyState == 4) {
		if (xmlhttp.status == 200) {
			var result = toTrim(xmlhttp.responseText);
			var notice = getFieldNotice("email");
			if (result == "1") {
				return false;
			} else if(result == "2") {
				return true;
			}
		}
	}
}

/* 检测公司名称否已存在 **/
function usedCompanyName() {
	try {
		if (xmlhttp == null) {
			createXMLHttpRequest();
		}
		var companyName = document.getElementById( "companyName" ).value;
		companyName = toTrim(companyName);
		companyName = escape(encodeURIComponent(companyName));
		var url = "/isCompanyName.do?companyName=" + companyName;
		xmlhttp.open("GET",url,false);
		xmlhttp.onreadystatechange = showUsedCompanyName;
		xmlhttp.send(null);
		return showUsedCompanyName();
	} catch (e) {
		return true;
	}	
}
/* usedEmail ajax返回结果 //1-不存在  2-已存在 **/
function showUsedCompanyName() {
	if (xmlhttp.readyState == 4) {
		if (xmlhttp.status == 200) {
			var result = toTrim(xmlhttp.responseText);
			var notice = getFieldNotice("companyName");
			if (result == "1") {
				return false;
			} else if(result == "2") {
				return true;
			}
		}
	}
}

/* 检测验证码 **/
function isValidateCode() {
	try {
		createXMLHttpRequest();
		var validateCode = document.getElementById( "validateCode" ).value;
		var validateCodeKey = document.getElementById( "validateCodeKey" ).value;
		var url = "/isValidateCode.do?validateCode=" + validateCode + "&validateCodeKey=" + validateCodeKey;
		xmlhttp.open("GET",url,false);
		xmlhttp.onreadystatechange = showValidateCode;
		xmlhttp.send(null);
		return showValidateCode();
	} catch (e) {
		return false;
	}
}
/* isValidateCode ajax返回结果 **/
function showValidateCode() {
	if (xmlhttp.readyState ==4) {
		if (xmlhttp.status == 200) {
			var result = toTrim(xmlhttp.responseText);
			var notice = getFieldNotice("validateCode");
			if (result == "1") { //正确
				return true;
			}
			else if(result == "2"){ //错误
				return false;
			}
		}
	}
}

/**
 * 验证登陆
 */
function validateLoginForm(form){
	var userEamil = form.userEamil;
	var userPassword = form.userPassword;
	var userValidateCode = form.userValidateCode;
	var buffer = new Array();
	var fieldName = "";
	if( userEamil.value == "" ){
		buffer.push("请输入电子邮箱！");
		if( fieldName == "" ){
			fieldName = userEamil.name;
		}										
	}
	else {
		if( !isEmail(userEamil.value) ) {
			alert("请输入正确的电子邮箱！")
			return false;
		}
	}
	if( userPassword.value == "" ){				 
		buffer.push("请输入密码！");
		if( fieldName == "" ){
			fieldName = userPassword.name;
		}				
	}
	if( userValidateCode.value == "" ){			 
		buffer.push("请输入验证码！"); 
		if( fieldName == "" ){
			fieldName = userValidateCode.name;
		}	
	}
	if( buffer.length > 0 ){
		alert(buffer.join("\n\n"));
		form.elements[fieldName].focus();
		return false;
	}
	return true;
}

/* 验证电子邮箱 **/
function validateEmail() {
	var email = document.loginForm.userEamil.value;
	if (email != "") {
		if( !isEmail(email) ) {
			alert("请输入正确的电子邮箱！")
			return;
		}		
		if( !usedEmail2() ) { //Email是否已存在
			getElementByID("joinDiv").style.display = "block";
			getElementByID("loginDiv").style.display = "none";
			document.joinForm.email.value = email;
			return;
		}
	}
}

/* 检测Email否已存在 **/
function usedEmail2() {
	try {
		if (xmlhttp == null) {
			createXMLHttpRequest();
		}
		var email = document.loginForm.userEamil.value;
		var url = "/isEmail.do?email=" + email;
		xmlhttp.open("GET",url,false);
		xmlhttp.onreadystatechange = showUsedEmail;
		xmlhttp.send(null);
		return showUsedEmail();
	} catch (e) {			
		return true;
	}	
}
/* usedEmail ajax返回结果 //1-不存在  2-已存在 **/
function showUsedEmail() {
	if (xmlhttp.readyState == 4) {
		if (xmlhttp.status == 200) {
			var result = toTrim(xmlhttp.responseText);
			if (result == "1") {
				return false;
			} else if(result == "2") {
				return true;
			}
		}
	}
}