var DEPARTEMENT_ID_LENGTH = 12;
var NOT_SUPPORTED = -1;
var DISTRICT_ID_LENGTH = 9;
var PROVINCE_LENGTH = 2;
var CITY_LENGTH = 4;
var COUNTRY_LENGTH = 6;
var TOWN_LENGTH = 9;

var PROVINCE_EMPTY = "00";
var CITY_EMPTY = "00";
var COUNTRY_EMPTY = "00";
var TOWN_EMPTY = "000";
var VILLAGERS_EMPTY = "000";

var PROVINCE_TYPE = 0;
var CITY_TYPE = 1;
var COUNTRY_TYPE = 2;
var TOWN_TYPE = 3;
var VILLAGERS_TYPE = 4;

//东莞
var dongguanCity = "4419";
//中山
var zhongshanCity = "4420";

//是否是没有区县的城市
function isLackCountryCity(id){
//	alert(id);

	if((id == null) || (id.length != DEPARTEMENT_ID_LENGTH)){
		return false;
	}else {
		var city = id.substring(0, CITY_LENGTH);
		if((city == dongguanCity) || (city == zhongshanCity)){
			return true;
		}else{
			return false;
		}
	}
}

function getTypeById(id) {
        if ((id == null) || (id.length != DEPARTEMENT_ID_LENGTH)) {
            return NOT_SUPPORTED;
        } else {
            //String districtId = id.substring(0, DISTRICT_ID_LENGTH);
            var province = id.substring(0, PROVINCE_LENGTH);
            var city = id.substring(PROVINCE_LENGTH, CITY_LENGTH);
            var country = id.substring(CITY_LENGTH, COUNTRY_LENGTH);
            var town = id.substring(COUNTRY_LENGTH, TOWN_LENGTH);
            var villages = id.substring(TOWN_LENGTH);

            if (villages != (VILLAGERS_EMPTY)) {
                return VILLAGERS_TYPE;
            } else if (town != (TOWN_EMPTY)) {
                return TOWN_TYPE;
            } else if (country != (COUNTRY_EMPTY)) {
                return COUNTRY_TYPE;
            } else if (city != (CITY_EMPTY)) {
                return CITY_TYPE;
            } else {
                return PROVINCE_TYPE;
            }
        }
}


function getLevelForQhtz(code) {
	var len = code.length;
	if(len == 2){
		return 1;
	}else if(len == 6){
		return 2;
	}else if(len == 10){
		return 3;
	}else if(len == 14){
		return 4;
	}else if(len == 18){
		return 5;
	}else{
		return 0;
	}
}

function checkDate(year, month, day) {
     var birthdayDate = new Date(new Number(year), month - 1, day);
     //alert(birthdayDate);
     var checkDate = birthdayDate.getDate();
     
     var checkMonth = birthdayDate.getMonth() + 1;
     
     if (checkMonth <= 9) {
       checkMonth = '0' + checkMonth;
     }
     
     //alert(checkDate);     
     //alert(checkMonth);
     if (checkMonth != month || checkDate != day) {
       //return '身份证中的出生日期错误';
       //alert('身份证中的出生日期错误');
       return false;
     }
     return true;
}
function getDate(str) {
     year = str.substring(0,4);
     month = str.substring(5,7);
     day = str.substring(8,10);
     return new Date(year, month - 1, day);
}

/* 日期相减，返回日期 */
function subDate(start, end) {
  startDate = getDate(start);
  endDate = getDate(end);
  if ( endDate < startDate) {
     return 0;  
  } else {
  	var dif = endDate.getTime() - startDate.getTime();
  	//alert('日期相减的结果');
  	//alert(dif);
  	//alert(dif/(24*3600*1000));
  	
  	return dif/(24*3600*1000);
  } 
}



/* 根据出生日期和时间计算年龄 */
/* 两个参数都是字符串 */
/* 另外一个getAge只有一个参数 */
function getAgeByBirthdayAndDate(birthday, current) {
//   alert(1);

   if (!checkBirthday (birthday)) {
     return 0;
   }
   
  // alert(2);
   birthdayDate = getDate(birthday);
   currentDate = getDate(current);
//   alert(3);
   if (currentDate < birthdayDate) {
  //   alert(4);
     return 0;
   } else {
//     alert(5);
//     alert(currentDate - birthdayDate);     
     //alert(new Date((currentDate - birthdayDate)).getYear());
//     alert(new Date((currentDate - birthdayDate)).getFullYear() - 1970);
     return new Date((currentDate - birthdayDate)).getFullYear() - 1970;
   }
   
   
}
/* 检查出生日期的格式 */
/* 可以使用一个参数 2004-06-06 */
/* 或使用三个参数 2004 06 06 */
function checkBirthday(year, month, day) {

   if (month == undefined && day == undefined) {    
     month = year.substring(5,7);
     day = year.substring(8,10);
     year = year.substring(0,4);
	 bolCheck = false;
   }

  if (!checkDate(year, month, day)) {
   return false;
  } 
//  alert(2);
     var birthdayDate = new Date(new Number(year), month - 1, day);
     var current = new Date();
   
     if (current < birthdayDate) {
   	 	//alert('出生日期 大于 当前日期。');
       return false;
     }
     return true;
}


function checkId(id) {
if(id == null || id.length == 0) return true;
    //alert("身份证" + id);     
     //检查长度
     if (!(id.length == 15 || id.length == 18)) {
       //alert("公民身份号码长度不正确");
       return false;
       //return "公民身份号码长度不正确";

     }
     
     //检查字符
     if (id.length == 15) {
       var exp = /[^0-9]*/;
       var exp = /([0-9]){15}/;
       if (!exp.test(id)) {
         //alert("公民身份号码有非法字符");
         //return "公民身份号码有非法字符";
         return false;
       }       
     } else {
       //转换最后一位
       var exp = /[0-9]{17}[0-9xX]$/;
       if (!exp.test(id)) {
         //alert("公民身份号码有非法字符");
         //return "公民身份号码有非法字符";
         return false;
       } else {
       /*
       exp = /[0-9]{17}[0-9x]$/;
         if (exp.test(id)) {
         alert(id);
           id = id.substring(0,17) + 'X';
         alert(id);
         }       
         */
       }
       
     }     
     //检查校验位 
     if (id.length == 18){
       var sumBite = calculateIdCheckSum(id);
       //alert(sumBite);
       var realSumBite = getCheckSumFromId(id);
       //alert(sum % 11);
       //alert(sumBite);
       //alert(realSumBite);
       
       if (sumBite != realSumBite) {
         //alert('身份证的校验位错误,应该为' + sumBite + ",现在为" + realSumBite);
         //return '身份证的校验位错误,应该为' + sumBite;         

         return false;
       }
     }
     
     
     //检查出生日期
     
     var year,month,day;
     if (id.length == 15) {
       year = '19' + id.substring(6,8);
       month = id.substring(8,10);
       day = id.substring(10,12);
     } else {
       year = id.substring(6,10);
       month = id.substring(10,12);
       day = id.substring(12,14);
     }
     birthday = year + "-" + month + "-" + day;
     //alert("出生日期" + birthday);

     if (!checkBirthday(year, month, day)) {
       return false;
     }
     
     return true;
      
}

/**
 *从15位身份证号码转换为18位
 */
function convertIdFrom15To18(id){
	if(null == id || "" == id || 15 != id.length){
		return id;
	}
	if(checkId(id)){
		var csrqStr = getBirthdayFromId(id);
		//alert(csrqStr);
		var csrq = Date.parse(csrqStr);
		//alert(csrq.getFullYear());
		if(csrq.getFullYear() < 1900){
			return id;	//1900以前出生的还是15位，不变
		}else{
			var newId = id.substring(6,0) + "19" + id.substring(15,6);
			var checkSum = calculateIdCheckSum(newId);
			newId += checkSum;
			//alert(newId);
			return newId;
		}
	}

	return id;
}

/**
 * 从18位身份证号码"计算出"校验位
 * 也可以传一个17位的号码进来（缺校验位）
 */
function calculateIdCheckSum(id){
       var weights = [0,2,4,8,5,10,9,7,3,6,1,2,4,8,5,10,9,7];
       var sumBites = ['1','0','X','9','8','7','6','5','4','3','2'];               
       var sum = 0;
       for (i=17;i>=1;i--) {
         var number = id.substring(18-i, 17-i)
         var weight = weights[i];
         //alert("add sum");
         //alert(number);
         //alert(weight);       
         sum += number * weight;
         //alert(sum);
       }
       //alert(sum);
       //alert(sum % 11);
     
       var sumBite = sumBites[sum % 11];
       return sumBite;
}

/**
 * 从18位身份证号码"取得"校验位
 */
function getCheckSumFromId(id){
	return id.substring(17,18);
}

function getBirthdayFromId(id) {
	  if(!checkId(id)){
	  		return "";
	  }
	
     var year,month,day;
     if (id.length == 15) {
       year = '19' + id.substring(6,8);
       month = id.substring(8,10);
       day = id.substring(10,12);
     } else {
       year = id.substring(6,10);
       month = id.substring(10,12);
       day = id.substring(12,14);
     }
     birthday = year + "-" + month + "-" + day;
     //alert("出生日期" + birthday);     
     return birthday;  
}

function getGenderFromId(id) {
    if ( id.length == 15 ){
	   var sex = id.substring(14,15);
	} else {
	   var sex = id.substring(16,17);
	}  	
	//alert('sex' + sex);
	if ((sex % 2) != 0) {
	  return 'male';
	} else {
	  return 'female';	
	}   
}

function checkGenderForMale(id) {
	//alert('checkGenderForMale(id)');
    gender = getGenderFromId(id);
    //alert(gender);
    if (gender != 'male') {
      //alert('从证件判断，该人员的性别应该是女性，请核查该人员信息');
      return false;
    } else {
      return true;
    }
}

function checkGenderForFemale(id) {
    gender = getGenderFromId(id);
    if (gender != 'female') {
      //alert('从证件判断，该人员的性别应该是男性，请核查该人员信息');
      return false;
    } else {
      return true;
    }

}





function validateGmsfhm(gmsfhm1,gmsfhm2,result,zjlbnan,zjlbnv) {
   
    // 入口参数检查
    
    if ((zjlbnan == zjlbnv )&& zjlbnan == "内地居民身份证" ){
       validateLen(gmsfhm1,gmsfhm2,result);
       validateMan(gmsfhm1,result);
       validateFemale(gmsfhm2,result);
       return;   
    }
    
    if (zjlbnan == "内地居民身份证"){
        validateMan(gmsfhm1,result);
        return;
    }
    
    if (zjlbnv == "内地居民身份证"){
        validateFemale(gmsfhm2,result);
        return;
    }
    
    if (zjlbnan != zjlbnv){
        return;
    }
    else
    validateLen(gmsfhm1,gmsfhm2,result);
           
}


function validateMan(gmsfhm1,result){
    if (gmsfhm1.length != 15 && gmsfhm1.length != 18) {
      result.push("证件类别(男):长度错误");
    }

    if ( gmsfhm1.length == 15 || gmsfhm1.length == 18 ) {    
	    if ( gmsfhm1.length == 15 ){
	        var sex = gmsfhm1.substring(14,15);
	    }	       
	    else {
	        var sex = gmsfhm1.substring(16,17);
	    }  
	    var pattern = /^(1|3|5|7|9)$/;	        
	    if (!pattern.test(sex)) {
	        result.push("从证件类别(男)字段内容判断，该人员的性别应该是女性，请核查该人员信息！");
	    }  
    }
}

function validateFemale(gmsfhm2,result){
    if (gmsfhm2.length != 15 && gmsfhm2.length != 18) {
      result.push("证件类别(女):长度错误");
    }
    
    if ( gmsfhm2.length == 15 || gmsfhm2.length == 18 ) { 
	    if (gmsfhm2.length == 15 ){
	        var sex = gmsfhm2.substring(14,15);
	    }	    
	    else {
	        var sex = gmsfhm2.substring(16,17);
	    }
	    var pattern = /^(0|2|4|6|8)$/;	        
	    if (!pattern.test(sex)){
	        result.push("从证件类别(女)字段内容判断，该人员的性别应该是男性，请核查该人员信息！");
	    }
    }

}

function validateLen(gmsfhm1,gmsfhm2,result){
    if (gmsfhm1 == gmsfhm2 && gmsfhm1.length > 0 && gmsfhm2.length > 0){
       result.push("公民证件号码相同");
    }

}

function getSex(gmsfhm){
    if (gmsfhm.length != 15 && gmsfhm.length != 18) {
      //result.push("公民身份号码:长度错误");
    }

    if ( gmsfhm.length == 15 || gmsfhm.length == 18 ) {    
	    if ( gmsfhm.length == 15 ){
	        var sex = gmsfhm.substring(14,15);
	    }	       
	    else {
	        var sex = gmsfhm.substring(16,17);
	    }  
	    var pattern = /^(1|3|5|7|9)$/;	        
	    if (pattern.test(sex)) {
			//alert("男");
			return "男";
	    }
	    else{
			//alert("女");
			return "女";
	    }  
    }

}


function getAge(as_csrq){
    var currentYear = "";
    var currentDay ="";
    var currentMonth="";
    var csYear = "";
    var csDay ="";
    var age = 0;
    var interMonth = 0;
    var interDay =0;
    var currentDate = new Date();
    currentYear =  currentDate.getYear();
    currentMonth = currentDate.getMonth();
    currentDay = currentDate.getDate();
    csYear = as_csrq.substring(0,4);
   // alert(as_csrq.substring(5,7));
    var csMonth = parseMonth_Day(as_csrq.substring(5,7));
	csDay =as_csrq.substring(8,10);
	//alert("currentYear = " + currentYear);
	//alert("currentMonth = " + currentMonth);
	//alert("csYear = " + csYear);
    // alert("csMonth = " + csMonth);
    age = parseInt(currentYear) - parseInt(csYear);
	//alert("age = " + age); 
    interMonth = currentMonth - parseInt(csMonth)+1;
	//alert("interMonth = " + interMonth);
    interDay =parseInt(currentDay) - parseInt(csDay);
   // alert("interDay = " + interDay);
  
  if (interMonth > 0){
	//alert("age = " + age); 
	return age;
    }
  else if (interMonth ==0 && interDay >= 0 ){
       return age;
    }
  else {
	//alert("age = " + age); 
	//alert(age);
	return age - 1;
    
    }
    
}
   


function prompt(type) {
  if (type == 'delete') {
    return confirm('确认要删除吗');
  } else if (type == 'sign') {
    return confirm('签章之后，将由业务中的下一环节处理。\n确认要签章吗？');
  } else if (type == 'save') {
    return confirm('确认要保存吗？');
  } else if (type == 'saveAndCreate') {
    return confirm('保存当前的操作并新增一条记录？');
  } else if (type == 'apply') {
  	return confirm('保存后将不允许再修改，确定保存该记录？');
  } else if (type == 'close') {
    return confirm('确认要关闭本窗口吗？');
  }
}

function UrlEncode(str){
	/*********qiushuiwuhen(2002-9-16)********/
	var i,c,p,q,ret="",strSpecial="!\"#$%&'()*+,/:;<=>?@[\]^`{|}~%";
	alert('fdfdfd');
	for(i=0;i<str.length;i++){
		if(str.charCodeAt(i)>=0x4e00){
			var p=strGB.indexOf(str.charAt(i));
			if(p>=0){
				q=p%94;
				p=(p-q)/94;
				ret+=("%"+(0xB0+p).toString(16)+"%"+(0xA1+q).toString(16)).toUpperCase();
			}
		}
		else{
			c=str.charAt(i);
			if(c==" ")
				ret+="+";
			else if(strSpecial.indexOf(c)!=-1)
				ret+="%"+str.charCodeAt(i).toString(16);
			else
				ret+=c;
		}
	}
	return ret;
}

//判断是否大于某个年龄
function getIsBigerThanSomeNl(csrq,nl){
	var csrqYear = new Number(csrq.substring(0,4));
	var csrqMonth = new Number(csrq.substring(5,7));
	var csrqDate = new Number(csrq.substring(8,10));
	
	var thisDate = new Date();
	var isBigger = 'true';
	var isNotBigger = 'false';
	var currentYear = new Number(thisDate.getYear());
	var currentMonth = new Number(thisDate.getMonth()) + 1;
	var currentDate = new Number(thisDate.getDate());
	
	var nianLing = new Number(nl);
	
	if((currentYear - csrqYear) > nianLing) {
		return isBigger;
	} else if ((currentYear - csrqYear) == nianLing){
		if(currentMonth > csrqMonth){
			return isBigger;
		}else if (currentMonth == csrqMonth){
			if(currentDate >= csrqDate){
				return isBigger;
			}else {
				return isNotBigger;
			}
		} else {
			return isNotBigger;
		}
	}else {
		return isNotBigger;
	}
}


function getIsNlcBiggerThanSomeInt(bigCsrq,littleCsrq,nlc){
	var bigCsrqYear = new Number(bigCsrq.substring(0,4));
	var bigCsrqMonth = new Number(bigCsrq.substring(5,7));
	var bigCsrqDate = new Number(bigCsrq.substring(8,10));

	var littleCsrqYear = new Number(littleCsrq.substring(0,4));
	var littleCsrqMonth = new Number(littleCsrq.substring(5,7));
	var littleCsrqDate = new Number(littleCsrq.substring(8,10));
	
	var nianLingCha = new Number(nlc);
	
	var isBigger = 'true';
	var isNotBigger = 'false';
	
	if((littleCsrqYear - bigCsrqYear) > nlc){
		return isBigger;
	} else if ((littleCsrqYear - bigCsrqYear) == nlc){
		if(littleCsrqMonth > bigCsrqMonth){
			return isBigger;
		} else if ( '' + littleCsrqMonth == '' + bigCsrqMonth){
			if(littleCsrqDate >= bigCsrqDate){
				return isBigger;
			} else {
				return isNotBigger;
			}
		} else {
			return isNotBigger;
		}		
	}else {
		return isNotBigger;
	}
}

	 
 //校验e_mail
 function isEmail (theStr) {
	var atIndex = theStr.indexOf('@');
	var dotIndex = theStr.indexOf('.', atIndex);
	var flag = true;
	theSub = theStr.substring(0, dotIndex+1)

	if ((atIndex < 1)||(atIndex != theStr.lastIndexOf('@'))||(dotIndex < atIndex + 2)||(theStr.length <= theSub.length)) {
		 return false;
	}else { 
		return true; 
	}
}


//校验邮政编码
function isPostalCode(s)
{
var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
if (s.length > 0 && !patrn.exec(s)) return false
return true
}

//校验数字
function isDigit(s)
{
var patrn=/^[0-9]{1,20}$/;
if (s.length > 0 && !patrn.exec(s)) return false
return true
}







