var infoboxErrorClass = 'msg_error';
var infoboxWarningClass = 'msg_warning';
var infoboxHintClass = 'msg_hint';
var infoboxSuccessClass = 'msg_success';

var inputWarningClass = 'input_warning';
var inputErrorClass = 'input_error';
var inputSuccessClass = 'input_success';
var inputNormalClass = 'input_normal';

var infoSuccessMsg = '输入正确';

function HideNote(){
	if(jQuery(".notetxt").css('display') == 'none'){
		jQuery(".notetxt").show("normal");
		jQuery("#HideNoteBTN").attr({'src':'/public/images/close_01.gif'});
	}else{
		jQuery(".notetxt").hide("slow");
		jQuery("#HideNoteBTN").attr({'src':'/public/images/show_01.gif'});
	}
}

jQuery(document).ready(function(){
	initForm('reg');
	initProvince();
});

//初始化表单动作
function initForm(frm){
	var infobox;
	var xfrm = jQuery('#'+ frm);
	if(!xfrm) return;
	xfrm.find('input').each(function(i){
		var xtype = jQuery(this).attr('type');
		if(xtype == 'text' || xtype == 'password'){
			//initStatus($(this),true);
			jQuery(this).focus(function(){
				getFocus(jQuery(this));
			}).blur(function(){
				lostFocus(jQuery(this));
			}).keyup(function(){
				//showMyStatus($(this));
			});
		}
	});
}

//地区初始化
function initProvince(){
	jQuery("#Province").change(function(){
		ChangeCity(jQuery(this).val());
	});
}

//地区联动动作
function ChangeCity(val){
	document.getElementById('City').length = 0;
	for(var i=0;i<onecount;i++){
		if(subcat[i][2] == val){
			document.getElementById('City').options[document.getElementById('City').length] = new Option(subcat[i][0], subcat[i][0]);
		}
	}
}

//焦点动作
function getFocus(obj){
	showInfo(obj,0);
}

//失去焦点动作
function lostFocus(obj){
	showInfo(obj,-1);
	var xval = obj.val();
	var id = obj.attr('id');

	var errorCode = validateValue(obj);
	var xbox = getInfobox(obj);
	if(errorCode == 0){
		showStatus(obj,"Success");
		if(xbox){
			xbox.attr({'class':infoboxSuccessClass});
			xbox.html(infoSuccessMsg);
		}
	}
	if(errorCode >= 1){
		if(id){
			var tipbox = jQuery('#'+ eval(id).i);
			if(eval(id).i && tipbox){
				tipbox.attr({'class':infoboxErrorClass});
				tipbox.html((eval(id).e)[errorCode]);
			}
		}
		showStatus(obj,"Error");
	}
	if(errorCode < 0){
		if(id){
			if(eval(id).i && jQuery('#'+ eval(id).i)){
				jQuery('#'+ eval(id).i).attr({'class':'infoboxHintClass'});
				jQuery('#'+ eval(id).i).html(eval(id).e)[0];
			}
		}
		showStatus(obj,"Normal");
	}
}

//按键动作
function showMyStatus(obj){
	var xbox = getInfobox(obj);
	var errorCode = validateValue(obj);
	if(errorCode == 0){
		showStatus(obj,"Success");
		xbox.attr({'class':infoboxHintClass});
	}
	if(errorCode >= 1){
		showStatus(obj,"Error");
	}
	if(errorCode < 0){
		showStatus(obj,"Normal");
	}
}

//检测值
function validateValue(obj){
	var patn = /(^\s)|(\s$)/;
	var errorCode = -1;
	switch(getDatatype(obj)){
		case "uid":
			errorCode = validateUid(obj);
			//alert(errorCode);
			break;
		case "safepassword":
			var val = obj.val();
			if(patn.test(val)){
				obj.val(jQuery.trim(obj.val()));
			}
			errorCode = validateSafePassword(obj);
			break;
		case "answer":
			errorCode = validateAnswer(obj);
			break;
		case "realname":
			errorCode = validateRealName(obj);
			break;
		case "zhiwei":
			errorCode = validateZhiwei(obj);
			break;
		case "email":
			if(patn.test(val)){
				obj.val(jQuery.trim(obj.val()));
			}
			errorCode = validateEmail(obj);
			break;
		case "mirror":
			if(patn.test(val)){
				obj.val(jQuery.trim(obj.val()));
			}
			errorCode = validateMirror(obj);
			break;
		case "phone":
			var val = obj.val();
			if(patn.test(val)){
				obj.val(jQuery.trim(obj.val()));
			}
			errorCode = validatePhone(obj);
			break;
		case "mobile":
			var val = obj.val();
			if(patn.test(val)){
				obj.val(jQuery.trim(obj.val()));
			}
			errorCode = validateMobile(obj);
			break;
		case "company":
			errorCode = validateCompany(obj);
			break;
		case "address":
			errorCode = validateAddress(obj);
			break;
		case "number":
			errorCode = validateNumber(obj);
			break;
		case "seccode":
			errorCode = validateSeccode(obj);
			break;
		default:
			errorCode = -1;
			break;
	}
	//alert(errorCode);
	return errorCode;
}

//数字
function validateNumber(obj){
	var val = obj.val();
	var patn = /^[0-9]{4}$/;
	if(patn.test(val)) return 0;
	return 1;
}

//数字+字符
function validateSeccode(obj){
	var val = obj.val();
	var patn = /^[a-zA-Z0-9]{4}$/;
	if(patn.test(val)) return 0;
	return 1;
}

//企业名称
function validateCompany(obj){
	var val = obj.val();	
	if(val.length == 0 || val.length > 128){return 1;}
	return 0;
}

//企业地址
function validateAddress(obj){
	var val = obj.val();	
	if(val.length == 0 || val.length > 128){return 1;}
	return 0;
}

//手机
function validateMobile(obj){
	var val = obj.val();
	var patn = /^1(3|5|8)[0-9]{9}$/;
	if(patn.test(val)){return 0;}
	return 1;
}

//电话
function validatePhone(obj){
	var val = obj.val();
	var patn = /.{7,20}/; 
	if(patn.test(val)) return 0;
	return 1; 	
}

//电子邮件
function validateEmail(obj){
	var val = obj.val();
	var id = obj.attr('id');
	var patn = /^[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]*)*@[a-zA-Z0-9\-]+([\.][a-zA-Z0-9\-]+)+$/;
	if(patn.test(val)){
		var blocklist = eval(id).p;
		if (blocklist.length > 0){
			for(var i=0;i<blocklist.length;i++){
				if(getMailServer(val) == blocklist[i]){return 2;}
			}
		}
		return 0;
	}else{
		return 1;
	}
}

//获取电子邮件域名
function getMailServer(str){
	str = str.trim();
	return str.substr(str.indexOf("@")+1);
}

//职位
function validateZhiwei(obj){
	var val = obj.val();	
	if(val.length == 0 || val.length > 128){return 1;}
	return 0;
}

//真实姓名
function validateRealName(obj){
	var val = obj.val();
	if(val.length > 4 || val.length < 2){
		return 1;
	}
	if(chk_broswer()){
		var re = new RegExp("[\\w\\$\\(\\)\\*\\+\\.\\[\\]\\?\\\\\\^\\{\\}\\|'\\\"#@%]");
		if (re.test(val)) {
			return 1;
		}
	}else{
		if (checkAscii(val)) {
			return 1;
		}
	}
	return 0;
}

//提示问题
function validateAnswer(obj){
	var val = obj.val();	
	if(val.length == 0 || val.length > 128){return 1;}
	return 0;
}

//用户名
function validateUid(obj){
	var id = obj.attr('id');
	var val = obj.val();
	if(val.length < 6 || val.length > 20){
		return 1;
	}
	if(IsIndex(val,"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-") != 1){
		return 2;
	}
	var rtnValue = jQuery.ajax({type : 'POST',data : {'username':val},url : _CHECKURL,async:false}).responseText;
	//alert(rtnValue);
	return rtnValue;
}

//密码
function validateSafePassword(obj){
	var val = obj.val();
	if(validatePassword(obj)>0){
		return 1;
	}
	if(val == jQuery("#UserName").val()){return 2;}
	for(var i=0;i < val.length;i++){
		if(val.charAt(0) != val.charAt(i)){break;}
	}
	if(i == val.length){return 3;}
	var seqStr = "01234567890";
	if(seqStr.indexOf(val) != -1){return 4;}
	var seqStr = "abcdefghijklmnopqrstuvwxyz";
	if(seqStr.indexOf(val) != -1){return 5;}
	var seqStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	if(seqStr.indexOf(val) != -1){return 6;}
	return 0;
}

//密码
function validatePassword(obj){
	var val = obj.val();
	var patn = /.{6,20}/; 
	if(patn.test(val)) return 0;
	return 1;
}

//重复密码
function validateMirror(obj){
	if(validateSameAs(obj)){
		var sameobj = jQuery('#'+ getAttrValueByName(obj,"sameas"));
		var id = sameobj.attr('id');
		var sameobj_dt;
		if(eval(id).d){
			sameobj_dt = eval(id).d;
		}else{
			return -1;
		}
		if(sameobj_dt != "mirror"){
			if(validateValue(sameobj) == 0){
				return 0;
			}else{
				return 2;
			}
		}
	}
	return 1;
}

function validateSameAs(obj){
	var sameobj = jQuery('#'+ getAttrValueByName(obj,"sameas"));
	if(!sameobj){
		return true;
	}
	var v1 = obj.val();
	var v2 = sameobj.val();
	if(v1 == v2){
		return true;
	}
	return false;
}

function getAttrValueByName(obj,str){
	var para;
	var id = obj.attr('id');
	if(id){
		if(eval(id).p){
			para = eval(id).p;
		}else{
			return;
		}
	}else{
		return;
	}
	var s = para.split(",");
	for(var i=0;i<s.length;i++){
		if(getAttrName(s[i]) == str){
			if(getAttrValue(s[i])){
				return getAttrValue(s[i]);
			}else{
				return;
			}
		}
	}
	return;
}

function getAttrName(str){
	var s = str.split("=");
	return s[0];
}

function getAttrValue(str){
	var s = str.split("=");
	return s[1];
}

function IsIndex(sV,sR){
	var sTmp;
	if(sV.length == 0){
		return false;
	}
	for(var i=0;i < sV.length;i++){
		sTmp = sV.substring (i,i+1);
		if(sR.indexOf(sTmp, 0)==-1){return false;}
	}
	return true;
}

function showInfo(obj,errorCode,forcible){
	var xbox = getInfobox(obj);
	if(xbox){
		var xClass = xbox.attr('class');
		if(xClass != infoboxErrorClass || forcible){
			if(errorCode == 0){
				xbox.attr({'class':infoboxWarningClass});
				xbox.html(getErrorMsg(obj,errorCode));
			}
			if(errorCode > 0){
				xbox.attr({'class':infoboxErrorClass});
				xbox.html(getErrorMsg(obj,errorCode));
			}
			if(errorCode < 0){
				xbox.attr({'class':infoboxHintClass});
			}
		}
	}	
}

function formEle(required,datatype,parameter,infobox,errormsg,combine,status){
	this.r	= required;	
	this.d	= datatype;
	this.p	= parameter;
	this.i	= infobox;
	this.e	= errormsg;
	this.c = combine;
	this.s = status;
}

function initStatus(obj,isInput){
	if(isInput){
		if(isRequired(obj)){
			showStatus(obj,"Warning");
		}else{
			showStatus(obj,"Normal");
		}
	}
	var xbox = getInfobox(obj);
	var xhtml = xbox.html();
	var xCode = getInitStatus(obj);
	if(xbox && xhtml == null){
		if(!xCode || xCode == 0){
			xbox.attr({'class':infoboxHintClass});
			xbox.html(getErrorMsg(obj,0));
		}
		if(xCode > 0){
			xbox.attr({'class':infoboxErrorClass});
			xbox.html(getErrorMsg(obj,xCode));
		}
	}	
}

//返回是否必要
function isRequired(obj){
	var id = obj.attr('id');
	if(id){
		if(eval(id).r) return eval(id).r;
	}
	return false;
}

//返回信息窗体
function getInfobox(obj){
	var id = obj.attr('id');
	if(id){
		if(eval(id).i && jQuery('#'+ eval(id).i)) return jQuery('#'+ eval(id).i);
	}
	return;
}

//返回信息数组
function getInitStatus(obj){
	var id = obj.attr('id');
	if(id){
		if(eval(id).s || eval(id).s == 0) return eval(id).s;
	}
	return;
}

//返回错误信息
function getErrorMsg(obj,errorCode){
	var id = obj.attr('id');
	if(id){
		if(eval(id).e[errorCode]) return eval(id).e[errorCode];
	}
	return;
}

//返回数据类型
function getDatatype(obj){
	var id = obj.attr('id');
	if(id){
		if(eval(id).d) return eval(id).d;
	}
	return false;
}

function isCombine(obj){
	var id = obj.attr('id');
	if(id){
		if(eval(id).c) return eval(id).c;
	}
	return false;
}

function showStatus(obj,stat){
	switch(stat){
		case "Warning":
			obj.addClass(inputWarningClass);
			break;
		case "Error":
			obj.addClass(inputErrorClass);
			break;
		case "Success":
			obj.addClass(inputSuccessClass);
			break;
		default:
			obj.addClass(inputNormalClass);
			break;
	}
}

function validateAll(formObj){
	var obj;
	var pass = true;
	var firstObj = null;
	var y = formObj.getElementsByTagName("input");
	for (var i=0;i<y.length;i++){
		var xobj = y[i];
		var xval = xobj.value;
		var xtype = xobj.type;
		var xid = xobj.id;
		
		if(xtype == 'text' || xtype == 'password'){
			var jQueryObj = jQuery('#'+ xid);
			var xbox = getInfobox(jQueryObj);
			
			if(!isRequired(jQueryObj) && xval == ''){
				continue;
			}
			
			if(isRequired(jQueryObj) && xval == ''){
				pass = false;
				if(firstObj == null){
					firstObj = jQueryObj;
				}
				showStatus(jQueryObj,"Error");
				xbox.attr({'class':infoboxErrorClass});
				xbox.html(getErrorMsg(jQueryObj,0));
				if(isCombine(jQueryObj)){break;}
				continue;
			}
			
			var eCode = validateValue(jQueryObj);
			if(eCode > 0){
				pass = false;
				if(firstObj == null){
					firstObj = jQueryObj;
				}
				showStatus(jQueryObj,"Error");
				showInfo(jQueryObj,eCode,true);
				if(isCombine(jQueryObj)){break;}
				continue;
			}
			
			if(eCode == 0){
				showStatus(jQueryObj,"Ok");
				xbox.attr({'class':infoboxSuccessClass});
				xbox.html(infoSuccessMsg);
				continue;
			}
		}
	}
	if(firstObj){
		firstObj.focus();
	}
	return pass;
}

function validateSelect(frmObj){
	var pass = true;
	var y = frmObj.getElementsByTagName("select");
	for (var i=0;i<y.length;i++){
		var xid = y[i].id;
		try{
			var jQueryObj = jQuery('#'+ xid);
			var xbox = getInfobox(jQueryObj);
			var xval = jQueryObj.val();
			if(xval == '' || xval == null){
				xbox.attr({'class':infoboxErrorClass});
				xbox.html((eval(xid).e)[1]);
				pass = false;
			}
		}catch(E){
			
		}
	}
	return pass;
}

function validateCheckbox(frmObj){
	var xid = 'CompanyModel';
	var u_checked = 0;
	var u_box = jQuery("#CompanyModel_tips");
	jQuery(":checkbox").each(function(i){
		if(this.checked){
			u_checked++;
		}
	});
	alert(u_checked);
	if(u_checked < 2){
		u_box.attr({'class':infoboxErrorClass});
		u_box.html((eval(xid).e)[1]);
	}
}

function selectEle(required,datatype,parameter,infobox,errormsg,combine,status){
	this.r	= required;	
	this.d	= datatype;
	this.p	= parameter;
	this.i	= infobox;
	this.e	= errormsg;
	this.c = combine;
	this.s = status;
}

function formValidate(frm){
	var frmObj = document.getElementById(frm);
	var rtn1 = validateAll(frmObj);
	var rtn2 = validateSelect(frmObj);
	if(rtn1 && rtn2){
		jQuery("#reg_button").val('提交中......请稍后......').attr('disabled','true');
		frmObj.submit();
	}
}
