
var validatejs = new Object();
/*
==================================================================
function: judge if to alert message
return: noreturn
==================================================================
*/
validatejs.ShowMessage = function (obj, ShowMsg) {
	if (obj) {
		obj.focus();
		obj.select();
		if (ShowMsg && ShowMsg != "") {
			alert(ShowMsg);
		}
	}
};
/*
==================================================================
function：check if one object's value is null
return：boolean
==================================================================
*/
validatejs.notNull = function (obj, ShowMsg) {
	if (!(obj && obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
		
	if (obj.value.Trim() == "") {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	} else {
		return true;
	}
};
/*
==================================================================
function：check minlength
return：boolean
==================================================================
*/
validatejs.minLength = function (obj, minlength, ShowMsg) {
	if (!(obj && obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	if (obj.value.Trim().length < minlength) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	} else {
		return true;
	}
};
/*
==================================================================
function：check maxlength
return：boolean
==================================================================
*/
validatejs.maxLength = function (obj, maxlength, ShowMsg) {
	
	if (!(obj && obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	if (obj.value.Trim().length > maxlength) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	} else {
		return true;
	}
};
/*
==================================================================
function:validatejs email
return:boolean
==================================================================
*/
validatejs.isEmail = function (obj, ShowMsg) {
	if (!(obj && obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	var email = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	if (email.test(obj.value)) {
		return true;
	} else {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
};
/*
==================================================================
function：check number
return：boolean
==================================================================
*/
validatejs.isNum = function (obj, ShowMsg) {
	if (!(obj && obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	var testi = /^[-\+]?\d+$/;
	if (testi.test(obj.value)) {
		return true;
	} else {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
};
/*
==================================================================
function：check min number
return：boolean
==================================================================
*/
validatejs.minNum = function (obj, minnum, ShowMsg) {
	if (!(obj && obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	if (!validatejs.isNum(obj)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	} else {
		if (parseInt(obj.value) < minnum) {
			validatejs.ShowMessage(obj, ShowMsg);
			return false;
		} else {
			return true;
		}
	}
};
/*
==================================================================
function：check max Number
return：boolean
==================================================================
*/
validatejs.maxNum = function (obj, maxnum, ShowMsg) {
	if (!(obj && obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	if (!validatejs.isNum(obj)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	} else {
		if (parseInt(obj.value) > maxnum) {
			validatejs.ShowMessage(obj, ShowMsg);
			return false;
		} else {
			return true;
		}
	}
};
/*
==================================================================
function：check if right date style(such as yyyy-mm-dd)
return：boolean
==================================================================
*/
validatejs.isDate = function (obj, ShowMsg) {
	if (!(obj && obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	if (Date.parse(obj.value)) {
		return true;
	} else {
		var r = obj.value.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
		if (r == null) {
			validatejs.ShowMessage(obj, ShowMsg);
			return false;
		}
		var d = new Date(r[1], r[3] - 1, r[4]);
		if ((d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4])) {
			return true;
		} else {
			validatejs.ShowMessage(obj, ShowMsg);
			return false;
		}
	}
};
/*
==================================================================
function：check url
return：boolean
==================================================================
*/
validatejs.isUrl = function (obj, ShowMsg) {
	if (!(obj && obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	var url = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
	var urls = /^https:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
	if (url.test(obj.value) || urls.test(obj.value)) {
		return true;
	} else {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
};
/*
==================================================================
function：check ID card number
return：boolean
==================================================================
*/
validatejs.isIDNo = function (obj, ShowMsg) {
	if (!(obj && obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	var aCity = "11,12,13,14,15,21,22,23,31,32,33,34,35,36,37,41,42,43,44,45,46,50,51,52,53,54,61,62,63,64,65,71,81,82,91";
	var iSum = 0;
	var info = "";
	var idCardLength = obj.value.length;
	if (!/^\d{17}(\d|x)$/i.test(obj.value) && !/^\d{15}$/i.test(obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	obj.value = obj.value.replace(/x$/i, "a");
	var curCity = obj.value.substr(0, 2);
	if (!(aCity.indexOf(curCity) > 0)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	if (idCardLength == 18) {
		sBirthday = obj.value.substr(6, 4) + "-" + Number(obj.value.substr(10, 2)) + "-" + Number(obj.value.substr(12, 2));
		var d = new Date(sBirthday.replace(/-/g, "/"));
		if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) {
			validatejs.ShowMessage(obj, ShowMsg);
			return false;
		}
		for (var i = 17; i >= 0; i--) {
			iSum += (Math.pow(2, i) % 11) * parseInt(obj.value.charAt(17 - i), 11);
		}
		if (iSum % 11 != 1) {
			validatejs.ShowMessage(obj, ShowMsg);
			return false;
		}
	} else {
		if (idCardLength == 15) {
			sBirthday = "19" + obj.value.substr(6, 2) + "-" + Number(obj.value.substr(8, 2)) + "-" + Number(obj.value.substr(10, 2));
			var d = new Date(sBirthday.replace(/-/g, "/"));
			var dd = d.getFullYear().toString() + "-" + (d.getMonth() + 1) + "-" + d.getDate();
			if (sBirthday != dd) {
				validatejs.ShowMessage(obj, ShowMsg);
				return false;
			}
		} else {
			validatejs.ShowMessage(obj, ShowMsg);
			return false;
		}
	}
	return true;
};
/*
==================================================================
function: check phone number
return：boolean
==================================================================
*/
validatejs.isPhoneNumber = function (obj, ShowMsg) {
	if (!(obj && obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	var allowstrlist = "1234567890()-";
	var phoneNo = obj.value;
	for (i = 0; i < phoneNo.length; i++) {
		if (allowstrlist.indexOf(phoneNo.substr(i, 1)) == -1) {
			validatejs.ShowMessage(obj, ShowMsg);
			return false;
		}
	}
	return true;
};
/*
==================================================================
function: check ip address
return：boolean
==================================================================
*/
validatejs.isIP = function (obj, ShowMsg) {
	if (!(obj && obj.value)) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	var strip = obj.value;
	var arrs = strip.split(".");
	if (arrs.length != 4) {
		validatejs.ShowMessage(obj, ShowMsg);
		return false;
	}
	for (i = 0; i < 4; i++) {
		var iv = parseInt(arrs[i]);
		if (arrs[i] != String(iv) || iv > 255) {
			validatejs.ShowMessage(obj, ShowMsg);
			return false;
		}
		
		//the first and forth segment must > 0
		if (i == 0 || i == 3) {
			if (iv == 0) {
				validatejs.ShowMessage(obj, ShowMsg);
				return false;
			}
		}
	}
	return true;
};


/*
==================================================================
function: check time format(yyyy-MM-dd hh:mm)
return：boolean
==================================================================
*/

validatejs.strDateTime = function (obj,ShowMsg){
  var str = obj.value;
  var reg = /^(\d{1,4})(-|\/)(\d{1,2})(-|\/)(\d{1,2}) (\d{1,2}):(\d{1,2})$/;
  var r = str.match(reg); 
  if(r==null){
    validatejs.ShowMessage(obj, ShowMsg);
    return false;
  } 
  var d= new Date(r[1], r[3]-1,r[5],r[6],r[7]); 
  return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[5]&&d.getHours()==r[6]&&d.getMinutes()==r[7]);
};

validatejs.strShortDateTime = function (obj,ShowMsg){
  var str = obj.value;
  var reg = /^(\d{1,4})(-|\/)(\d{1,2})(-|\/)(\d{1,2})$/;
  var r = str.match(reg); 
  if(r==null){
    validatejs.ShowMessage(obj, ShowMsg);
    return false;
  } 
  var d= new Date(r[1], r[3]-1,r[5]); 
  return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[5]);
};



validatejs.ShowMessage = function (obj,showMsg){
   if(obj) alert(showMsg);
}


String.prototype.Trim=function() {				//edit by hanjie 20080402
	return this.replace(/(^\s*)|(\s*$)/g,"");
}

/*
==================================================================
function: check maxlength 
return：boolean
==================================================================
*/

validatejs.customerMaxLength = function (obj,maxLength){
  
   var str = obj.value;
   var reg = /[\u4E00-\u9FA0]/g;
   var strLength = str.length;
   
   for(var i = 0;i < strLength;i++){
     var c = str.charAt(i);
     var flag = c.match(reg);
     if(flag){
      maxLength = maxLength - 2 ;
     }else{
       maxLength--;
     }
   } 
   if(maxLength < 0){
       return false;
     }else{
       return true; 
     }
}

/*
==================================================================
function: get string length 
return：boolean
add by hanjie
==================================================================
*/
validatejs.getStrLength = function (obj){
  
   var slength = 0;
   var str = obj.value;
   var reg = /[\u4E00-\u9FA0]/g;
   var strLength = str.length;
   
   for(var i = 0;i < strLength;i++){
     var c = str.charAt(i);
     var flag = c.match(reg);
     if(flag){
       slength += 2;
     }else{
       slength ++;
     }
   } 
   return slength;
}
