
//-------------------- vanadium-types.js -----------------------------


			 //弹出信息样式设置
			Vanadium.config = {
			    valid_class: 'rightformcss',//验证正确时表单样式
			    invalid_class: 'failformcss',//验证失败时该表单样式
			    message_value_class: 'msgvaluecss',//这个样式是弹出信息中调用值的样式
			    //advice_class: 'failmsg',//验证失败时文字信息的样式
			    prefix: ':',
			    separator: ';',
			    reset_defer_timeout: 100
			}
			
			Vanadium.setupValidatorTypes = function() {

			  Vanadium.addValidatorType('empty', function(v) {
			    return  ((v == null) || (v.length == 0));
			  });
			
			  Vanadium.addValidatorTypes([

				['digits', function(v) {
				      return Vanadium.validators_types['empty'].test(v) || !/[^\d]/.test(v);
				    }, '内容或格式不符.'],
			    //
			    ['required', function(v) {
			      return !Vanadium.validators_types['empty'].test(v);
			    }, '内容不可为空. '],
			    //
			    ['email', function (v) {
			      return (Vanadium.validators_types['empty'].test(v)
			              ||
			              /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v))
			    }, '录入的电子邮件格式不对.'],
				//
			    ['mobile', function (v) {
			      return (Vanadium.validators_types['empty'].test(v)
			              ||
			              /^(13[0-9]|15[0-9]|18[0-9])\d{8}$/.test(v))

			    }, '手机号码不合要求. '],
			    
				//手机电话任选一个
			    ['mobiletel', function (v,p) {
			    var tel = document.getElementById(p).value;
			      if(Vanadium.validators_types['empty'].test(v)){
			      	if(tel == ''){
			      		return false;
			      	}else{
			      		return true;
			      	}
			      }else{
			      	return true;
			      }
			    }, '手机或电话需任选一个. '],
			    
			    //
			    ['min_length',
			      function (v, p) {
			        if (p === undefined) {
			          return true
			        } else {
			          return v.length >= parseInt(p)
			        }
			        ;
			      },
			      function (_v, p) {
			        return '长度不低于<span class="' + Vanadium.config.message_value_class + '">' + p + '</span>个.'
			      }
			    ],
			    ['max_length',
			      function (v, p) {
			        if (p === undefined) {
			          return true
			        } else {
			          return v.length <= parseInt(p)
			        }
			        ;
			      },
			      function (_v, p) {
			        return '长度不大于<span class="' + Vanadium.config.message_value_class + '">' + p + '</span>个.'
			      }
			    ],

			    ['ishavemember',
			      function (v) {
			      	var isExists;
			      	DWREngine.setAsync(false);
			      	TMemberDWR.isExistsMember(v,function(data){
			      		isExists = data;
			      	});
			      	DWREngine.setAsync(true);
					return !isExists;
			 	  },'该用户名已存在.'
			    ],
			    
			    //
			    ['same_as',
			      function (v, p) {
			        if (p === undefined) {
			          return true
			        } else {
			          var exemplar = document.getElementById(p);
			          if (exemplar)
			            return v == exemplar.value;
			          else
			            return false;
			        }
			        ;
			      },
			      function (_v, p) {
			        var exemplar = document.getElementById(p);
			        if (exemplar)
			          return '两次密码输入不相同.';
			        else
			          return '没有可参考值!'
			      },
			      "",
			      function(validation_instance) {
			        var exemplar = document.getElementById(validation_instance.param);
			        if (exemplar){
			          jQuery(exemplar).bind('validate', function(){
			            jQuery(validation_instance.element).trigger('validate');
			          });
			        }
			      }
			    ],
			    
			    //强制选中 
			    ['addrequired', function(v, p) {
			    	var status = document.getElementById(p).checked;
			    	if (Vanadium.validators_types['empty'].test(v)){
				      if (status){
				      	return false;
				      }else{
				      	return true;
				      }
				     }else{
				     	return true;
				     }
			    }, '必须填写该信息! '],

			    //
			    ['zip', function(v) {
			      return Vanadium.validators_types['empty'].test(v) || /^[0-9]{6}$/.test(v);
			    }, '邮政编码格式有误. '],
			    
			    //
			    ['tel', function(v) {
			      return Vanadium.validators_types['empty'].test(v) || /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/.test(v);
			    }, '电话号码不合要求. '],
			    
			    //输入固定长度字符串
			    ['length',
			      function (v, p) {
			        if (p === undefined) {
			          return true
			        } else {
			          return v.length == parseInt(p)
			        }
			        ;
			      },
			      function (_v, p) {
			        return '输入字符长度等于<span class="' + Vanadium.config.message_value_class + '">' + p + '</span>个.'
			      }
			    ],
			    //校验码验证
			    ['checkCode', function(v, p) {
			      var code = document.getElementById(p).value;
			      return v.toLowerCase() == code.toLowerCase();
			     
			    }, function (_v, p) {
			      return '输入的校验码不符. '
			    }],

			    //日期格式
			    ['date_au', function(v) {
			      if (Vanadium.validators_types['empty'].test(v)) return true;
			      var regex = /^(\d{4})\/(\d{2})\/(\d{2})$/;
			      if (!regex.test(v)) return false;
			      var d = new Date(v.replace(regex, '$3-$2-$1'));
			      return (parseInt(RegExp.$3, 10) == d.getFullYear() ) && ( parseInt(RegExp.$2, 10) == (1 + d.getMonth()) ) && (parseInt(RegExp.$1, 10) == d.getDate());
			    }, '日期格式不对. '
			    ],

				//身份证验证
				['IDCard', 
				function(v,p) {
					var IDType = document.getElementById(p).value;
					if (Vanadium.validators_types['empty'].test(v)) return true;
					if (IDType === '身份证'){
					return convertCardID(v);
					}else{
					return true;
					}
				},'身份证号码不合要求.'
				],
				//性别验证
				['SEX', 
				function(v,p) {
					var IDType = document.getElementById("credentialtype"+p).value;
					var IDNo = document.getElementById("credentialno"+p).value;
					if (Vanadium.validators_types['empty'].test(v)) return true;
					if (IDType === '身份证' &&  IDNo !=''){
					return v == getSex(IDNo);
					}else{
					return true;
					}
				},'性别与身份证不符. '
				],
				
				// 生日验证
				['birthDay',
				function(v,p) {
					var IDType = document.getElementById("credentialtype"+p).value;
					var birthday = document.getElementById("credentialno"+p).value;
					
					if (Vanadium.validators_types['empty'].test(v)) return true;
					if (IDType === '身份证' &&  birthday !=''){
					return v == getBirthday(birthday);
					}else{
					return true;
					}
				},'生日与身份证不符. '
				],
				
				// 机票生日验证
				['ticketbirthDay',
				function(v,p) {
					var IDType = document.getElementById("ctype").value;
					var birthday = document.getElementById(p).value;
					
					if (Vanadium.validators_types['empty'].test(v)) return true;
					if (IDType === '身份证' &&  birthday !=''){
					return v == getBirthday(birthday);
					}else{
					return true;
					}
				},'生日与身份证不符. '
				],

				// 生日验证,是否儿童 
				['diffDateIN',
				function(v,p) {
					var guesttype = document.getElementById("guesttype"+p).value;
					var birthday=new Date(v);
					var d=new Date(); 
					var age = d.getFullYear()-birthday.getFullYear()-((d.getMonth() < birthday.getMonth() || d.getMonth()==birthday.getMonth() && d.getDate() < birthday.getDate()) ? 1 : 0); 

					if (Vanadium.validators_types['empty'].test(v)) return true;
					if (age >= 12 && guesttype == '儿童') {
						return false;
					}else{
						return true;
					}
				},'儿童年龄超过12岁. '
				],
				
				['diffDateHK',
				function(v,p) {
					var guesttype = document.getElementById("guesttype"+p).value;
					var birthday=new Date(v);
					var d=new Date(); 
					var age = d.getFullYear()-birthday.getFullYear()-((d.getMonth() < birthday.getMonth() || d.getMonth()==birthday.getMonth() && d.getDate() < birthday.getDate()) ? 1 : 0); 

					if (Vanadium.validators_types['empty'].test(v)) return true;
					if (age > 18 && guesttype == '儿童') {
						return false;
					}else{
						return true;
					}
				},'港澳/儿童年龄超过18岁. '
				],

				['diffDateXM',
				function(v,p) {
					var guesttype = document.getElementById("guesttype"+p).value;
					var birthday=new Date(v);
					var d=new Date(); 
					var age = d.getFullYear()-birthday.getFullYear()-((d.getMonth() < birthday.getMonth() || d.getMonth()==birthday.getMonth() && d.getDate() < birthday.getDate()) ? 1 : 0); 

					if (Vanadium.validators_types['empty'].test(v)) return true;
					if (age > 16 && guesttype == '儿童') {
						return false;
					}else{
						return true;
					}
				},'新马/儿童年龄超过16岁. '
				],
				
				['diffDateOUT',
				function(v,p) {
					var guesttype = document.getElementById("guesttype"+p).value;
					var birthday=new Date(v);
					var d=new Date(); 
					var age = d.getFullYear()-birthday.getFullYear()-((d.getMonth() < birthday.getMonth() || d.getMonth()==birthday.getMonth() && d.getDate() < birthday.getDate()) ? 1 : 0); 

					if (Vanadium.validators_types['empty'].test(v)) return true;
					if (age > 12 && guesttype == '儿童') {
						return false;
					}else{
						return true;
					}
				},'儿童年龄超过12岁. '
				],
				//
			    ['IDrequired', function(v,p) {
			      	var guestbirthday = document.getElementById("guestbirthday"+p).value;
			      	var guesttype = document.getElementById("guesttype"+p).value;
			      	var IDType = document.getElementById("credentialtype"+p).value;
			      
			      	if (Vanadium.validators_types['empty'].test(v)){
						if (guesttype === '儿童' && IDType === '出生日期' && guestbirthday !== '') {
								return true;
						}else{
								return false;
						}
					}else{
						return true;
					}
			    }, '号码一般不为空，<br />儿童有出生日期则可为空. '],
			    //
			    ['dayrequired', function(v,p) {
					var IDType = document.getElementById("credentialtype"+p).value;
					var guesttype = document.getElementById("guesttype"+p).value;
			      	if (Vanadium.validators_types['empty'].test(v)){

			      			if (IDType !== '身份证'){
			      				if (guesttype === '儿童'){
			      					if (IDType === '出生日期'){
			      						return false;
			      					}else{
			      						return true;
			      					}
			      				}else{
			      					return false;
			      				}
			      			}else{
			      				return true;
			      			}

			      	}else{
			      		return true;
			      	}
			    }, '儿童证件类型为<br />出生日期<br />则内容不可为空. '],

			    //
			    ['otherrequired', function(v,p) {
					var IDType = document.getElementById("credentialtype"+p).value;
					var guesttype = document.getElementById("guesttype"+p).value;
			      	if (Vanadium.validators_types['empty'].test(v)){

		      			if (IDType !== '身份证'){
		      				if (IDType !== '出生日期' && guesttype !== '儿童'){
		      					return false;
		      				}else{
		      					return true;
		      				}
		      			}else{
		      				return true;
		      			}
			      	}else{
			      		return true;
			      	}
			    }, '证件类型非身份证，<br />证件有效期内容不可为空. ']
			    //
			    

			  ])
			}
			
