/**
 * 定义初始值  
 */
// 静态服务器url
var WEB_URL = 'http://www.szhr.com.cn/v3';
var DESIRE_MAX = 3;/* 求职意向最大条数 */
var OTHER_MAX = 10;//最大教育背景、工作经历等条数

$(document).ready(function() {
	// 设置blockUI
	// $.blockUI.defaults.css.border = '5px solid red';
	// $.blockUI.defaults.fadeOut = 1000;

	// loading
//	var loader = jQuery('<span><img src="' + WEB_URL + '/images/busy.gif" alt="loading..." border="0"/> 正在处理，请稍候...</span>')
//			.css({
//						position : "relative",
//						top : "0",
//						left : "200px",
//						display : "none"
//					});
//	$("#msg-info").append(loader);
//	jQuery().ajaxStart(function() {
//				loader.show();
//			}).ajaxStop(function() {
//				loader.hide();
//			}).ajaxError(function(a, b, e) {
//				// throw e;
//			});

	// 校验插件设置
	$.validator.defaults.errorClass = 'v-error';
	$.validator.defaults.focusInvalid = false;
	// $('form').validate();
	
	// 中文字两个字节
	jQuery.validator.addMethod("byteRangeLength", function(value, element,
					param) {
				var length = value.length;
				for (var i = 0; i < value.length; i++) {
					if (value.charCodeAt(i) > 127) {
						length++;
					}
				}
				return this.optional(element)
						|| (length >= param[0] && length <= param[1]);
			}, "请确保输入的值在3-15个字节之间(一个中文字算2个字节)");

	/* 追加自定义验证方法 */
	// 身份证号码验证
	jQuery.validator.addMethod("isIdCardNo", function(value, element) {
				return this.optional(element) || isIdCardNo(value);
			}, "请正确输入您的身份证号码");

	// 字符验证
	jQuery.validator.addMethod("userName", function(value, element) {
				return this.optional(element) || /^[\w]+$/.test(value);
			}, "用户名只能包括英文字母、数字和下划线");

	// 字符验证
	jQuery.validator.addMethod("userNameCN", function(value, element) {
				return this.optional(element)
						|| /^[\u0391-\uFFE5\w]+$/.test(value);
			}, "用户名只能包括中文字、英文字母、数字和下划线");

	// 手机号码验证
	jQuery.validator.addMethod("isMobile", function(value, element) {
		var length = value.length;
		return this.optional(element)
				|| (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1})|(189))+\d{8})$/
						.test(value));
	}, "请正确填写您的手机号码");

	// 电话号码验证
	jQuery.validator.addMethod("isPhone", function(value, element) {
				var tel = /^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,11})+$/;
				return this.optional(element) || (tel.test(value));
			}, "请正确填写您的电话号码");

	// 传真号码验证
	jQuery.validator.addMethod("isFax", function(value, element) {
				var tel = /^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,11})+$/;
				return this.optional(element) || (tel.test(value));
			}, "请正确填写您的传真号码");

	// 邮政编码验证
	jQuery.validator.addMethod("isZipCode", function(value, element) {
				var tel = /^[0-9]{6}$/;
				return this.optional(element) || (tel.test(value));
			}, "请正确填写您的邮政编码");

	// 校验结束日期大于或等于开始日期
	jQuery.validator.addMethod("afterDate", function(value, element, param) {

			}, "结束日期不能小于开始日期");

});

// 身份证号码校验
function isIdCardNo(num) {
	var factorArr = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4,
			2, 1);
	// var error;
	var varArray = new Array();
	var intValue;
	var lngProduct = 0;
	var intCheckDigit;
	var intStrLen = num.length;
	var idNumber = num;
	// initialize
	if ((intStrLen != 15) && (intStrLen != 18)) {
		// error = "输入身份证号码长度不对！";
		// alert(error);
		// frmAddUser.txtIDCard.focus();
		return false;
	}
	// check and set value
	for (i = 0; i < intStrLen; i++) {
		varArray[i] = idNumber.charAt(i);
		if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
			// error = "错误的身份证号码！.";
			// alert(error);
			// frmAddUser.txtIDCard.focus();
			return false;
		} else if (i < 17) {
			varArray[i] = varArray[i] * factorArr[i];
		}
	}
	if (intStrLen == 18) {
		// check date
		var date8 = idNumber.substring(6, 14);
		if (isDate8(date8) == false) {
			// error = "身份证中日期信息不正确！.";
			// alert(error);
			return false;
		}
		// calculate the sum of the products
		for (i = 0; i < 17; i++) {
			lngProduct = lngProduct + varArray[i];
		}
		// calculate the check digit
		intCheckDigit = 12 - lngProduct % 11;
		switch (intCheckDigit) {
			case 10 :
				intCheckDigit = 'X';
				break;
			case 11 :
				intCheckDigit = 0;
				break;
			case 12 :
				intCheckDigit = 1;
				break;
		}
		// check last digit
		if (varArray[17].toUpperCase() != intCheckDigit) {
			// error = "身份证效验位错误!正确为： " + intCheckDigit + ".";
			// alert(error);
			return false;
		}
	} else { // length is 15
		// check date
		var date6 = idNumber.substring(6, 12);
		if (isDate6(date6) == false) {
			// alert("身份证日期信息有误！.");
			return false;
		}
	}
	// alert ("Correct.");
	return true;
}
/**
 * 判断是否为“YYYYMM”式的时期
 * 
 */
function isDate6(sDate) {
	if (!/^[0-9]{6}$/.test(sDate)) {
		return false;
	}
	var year, month, day;
	year = sDate.substring(0, 4);
	month = sDate.substring(4, 6);
	if (year < 1900 || year > 2100)
		return false
	if (month < 1 || month > 12)
		return false
	return true
}
/**
 * 判断是否为“YYYYMMDD”式的时期
 * 
 */
function isDate8(sDate) {
	if (!/^[0-9]{8}$/.test(sDate)) {
		return false;
	}
	var year, month, day;
	year = sDate.substring(0, 4);
	month = sDate.substring(4, 6);
	day = sDate.substring(6, 8);
	var iaMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
	if (year < 1900 || year > 2100)
		return false
	if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
		iaMonthDays[1] = 29;
	if (month < 1 || month > 12)
		return false
	if (day < 1 || day > iaMonthDays[month - 1])
		return false
	return true
}
