// JavaScript Document

var ValidGroup = [];  //验证组
var g_count = 0;     //验证对象数量
(function($){
	$.formValidator = {
		initConfig : function(controlOptions)
		{
			var settings = 
			{
				formid:"",
				onsuccess: function() {},
				onerror:function() {},
				delaytime: 30000,
				messageid: '#message',
				loadingimg: '/site_media//images/loading1.gif'
			};
			controlOptions = controlOptions || {};
			$.extend(settings, controlOptions);
			if(settings.formid!=""){$("#"+settings.formid).submit(function(){return false;})};
			if(settings.submit!=""){
				$("#"+settings.submit).click(function(){
				});
			}
		}
	}
	
	$.fn.formValidator=function(cs){
		var elem = this;
		var elem_name = elem.attr('name');
		var ele_index = g_count;
		var setting = 
		{
			onshow :"请输入内容",
			onfocus: "请输入内容",
			onblur:function(elem, ele_index) {return true},
			isajax:false,
			onajax:function(elem, ele_index) {return 'onajax'},
			oncorrect: "输入正确",
			isNull:false,
			comp:false,
			comp_msg:'两次密码不一致',
			min_length:0,
			min_length_msg:'输入内容错误',
			onempty: "输入内容为空",
			type:'input',
			eventname:elem_name,
			is_success:true,
			tipid:elem_name
		};
		//先合并整个配置(深度拷贝)
		$.extend(true,setting, cs);
		var tipid = setting.tipid;
		$("#"+tipid+"Tip").html(getBnverify(tipid));
		var member_obj = {name:setting.eventname, valid:0}
		ValidGroup.push(member_obj);
		g_count++;
		elem.blur(function () {
			var value = '';
			if (setting.type == 'radio') {
				value = $(elem).filter('[checked]').val() || '';
			} else if(setting.type == 'select') {
				value = $(elem).val() || '';
				if ( value== '请选择') value='';
			} else {
				value = $.trim(elem.val());
			}
			if (!setting.isNull) {
				if (value == '') {
					ErrorSet(tipid, ele_index, setting.onempty, setting.type);
					return ;
				}
			}
			if (setting.min_length>0) {
				if (value.length < setting.min_length) {
					ErrorSet(tipid, ele_index, setting.min_length_msg, setting.type);
					return ;
				}
			}
			if (setting.comp != false) {
				var comp_value = $("[name="+setting.comp+"]").val();
				if (value !== comp_value) {
					ErrorSet(tipid, ele_index, setting.comp_msg, setting.type);
					return ;
				}
			}
			if (setting.isdefined == true) {
				return setting.ondefined(value, ele_index, setting.type);
			}
			var result = setting.onblur(value, ele_index);
			if (result == true) {
				if (setting.isajax == true ) {
					setting.onajax(value, ele_index);
				} else {
					SuccessSet(tipid, ele_index, setting.type, setting.is_success);
				}
			} else {
				ErrorSet(tipid, ele_index, result, setting.type);
			}
		});
		
		elem.focus(function () {
			if (setting.onfocus && setting.onfocus!='') {
				$('.info-pop').css('z-index', '10');
				$("#"+tipid+'Tip').css('z-index', '11');
				$("#"+tipid+"TipTxt").html(setting.onfocus);
				$("#"+tipid+"_ico_ok").css('display', 'none');
				$("#"+tipid+"_ico_err").css('display', 'none');
				$("#"+tipid+"Tip_cont").removeClass().addClass('tip-cont').css('display', '');
				if (setting.type == 'input') {
					var className = $("[name="+tipid+"]").attr('class');
					$("[name="+tipid+"]").attr('class', className.replace('form-text-err', 'form-text'));
				}
			}
		});
   }
})($)

function getBnverify(tipid) {
	var html = '';
	html += '<b id="'+tipid+'_ico_ok" class="ico-ok" style="display:none;">&nbsp;</b>';
	html += '<b id="'+tipid+'_ico_err" class="ico-err" style="display:none;">&nbsp;</b>';
	html += '<b id="'+tipid+'_ico_load" class="ico-load" style="display:none;">&nbsp;</b>';
	html += '<div class="tip-cont" id="'+tipid+'Tip_cont" style="display:none;">';
	html += '<div class="msg-tip">';
	html += '<div class="tip_tr"><div class="tip_tl"></div></div>';
	html += '<div class="jiantou"></div>';
	html += '<div id="'+tipid+'TipTxt" class="msg-tip-txt"></div>';
	html += '<div class="tip_br"><div class="tip_bl"></div></div>';
	html += '</div>';
	html += '</div>';
	return html;
}

function ErrorSet(tipid, ele_index, msg, type) {
	ValidGroup[ele_index].valid = 2;
	$("#"+tipid+"TipTxt").html(msg);
	$("#"+tipid+"_ico_ok").css('display', 'none');
	$("#"+tipid+"_ico_err").css('display', '');
	$("#"+tipid+"Tip_cont").removeClass().addClass('tip-cont-err').css('display', '');
	if (type == 'input') {
		var className = $("[name="+tipid+"]").attr('class');
		className = className.replace('-err', '');
		$("[name="+tipid+"]").attr('class', className.replace('form-text', 'form-text-err'));
	}
}

function SuccessSet(tipid, ele_index, type, is_success) {
	ValidGroup[ele_index].valid = 1;
	$("#"+tipid+"_ico_err").css('display', 'none');
	if (is_success!=false)
		$("#"+tipid+"_ico_ok").css('display', '');
	$("#"+tipid+"Tip_cont").css('display', 'none');	
	if (type == 'input') {
		var className = $("[name="+tipid+"]").attr('class');
		$("[name="+tipid+"]").attr('class', className.replace('-err', ''));
	}
}
