﻿// FormValidation.js

//字符串相关函数
//--------------------------------------
//字符创新增trim方法
//" sdfd sdf "返回值"sdfd sdf"
//--------------------------------------
String.prototype.trim = function(){
    return this.replace(/(^\s*)|(\s*$)/g, "");
}
//--------------------------------------
//检查字符串是否为null
//obj:检查的对象
//返回值:不为空返回true
//--------------------------------------
function checkNull(obj){
 if(obj.value.trim().length==0)
	 return false;
 else
	 return true;
}
//--------------------------------------
//检查字符串大于指定长度
//obj:检查的对象
//len:指定长度
//返回值:小于指定长度返回true
//--------------------------------------
function checkLength(obj,len){
	 if(obj.value.length>len)
		 return false;
	 else
	     return true;
}
//------------------------------------
//得到字符串的字节长度
//------------------------------------
function unicodeLength(str){
	return (new String(str)).unicodeLength();
}
String.prototype.unicodeLength=function(){
	var l=0;
	for(var i=0;i<this.length;i++){
		if(this.charCodeAt(i)>255)l+=3;
		else l++;
	}
	return l;
}
//------------------------------------
//得到字符串是否为英文字符和数字
//------------------------------------
function IsCharAndNum(obj){
  var reg = /^\w+$/;
  if(reg.test(obj.value)){
		return true;
  }else{
		return false;
  }
}
//数字相关函数
//------------------------------------
//检查是否为任意数（实数）
//------------------------------------
function isNumeric(obj) {
	var reg=/^(-|\+)?\d+(\.\d+)?$/
	if(reg.test(obj.value)){
		return true;
	}else{
		return false;
	}
}
//------------------------------------
//检查是否为正数
//------------------------------------
function isUnsignedNumeric(obj) {
	var reg=/^\d+(\.\d+)?$/
	if(reg.test(obj.value)){
		return true;
	}else{
		return false;
	}
}
//------------------------------------
//检查是否为整数
//------------------------------------
function isInteger(obj) {
	var reg=/^(-|\+)?\d+$/
	if(reg.test(obj.value)){
		return true;
	}else{
		return false;
	}
}
//------------------------------------
//检查是否为正整数
//------------------------------------
function isUnsignedInteger(obj) {
	var reg=/^\d+$/
	if(reg.test(obj.value)){
		return true;
	}else{
		return false;
	}
}
//------------------------------------
//数字判断函数
//------------------------------------
function isNumber(str) 
{
	var digits = "0123456789";
	var i = 0;
	if(str==null) return false;
	var sLength = str.length;
    if(sLength==0)  return false;
	while ((i < sLength))
	{
	var c = str.charAt(i);
	if (digits.indexOf(c) == -1) return false;
	i++;
	}
	return true;
}
//------------------------------------
//判断是否为合法的数值函数
//------------------------------------
function isValidDouble(str) 
{
	var digits = ".0123456789";
	var i = 0;
	if(str==null) return false;
	var sLength = str.length;	
    if(sLength==0)  return false;
	while (i < sLength)
	{
	var c = str.charAt(i);
	if (digits.indexOf(c) == -1) return false;
	i++;
	}
	return true;
}
//------------------------------------
//判断是否为合法的浮点函数
//------------------------------------
function isDouble(me,i,j,hint) {
   var rule = "\\\d{1,"+i+"}(\\\.\\\d{1,"+j+"})?";
   var patrn = new RegExp("^"+rule+"$");
   if(patrn.test(me.value)){
	   return true;
   }else{
	   if(hint){
           MyAlert(me,hint);
	   }else{
		   me.focus();
		   me.select();
	   }
	   return false;
   }
}
//时间日期相关的函数
//------------------------------------
//判断是否为合法的小时
//------------------------------------
function isValidHour(str) {
  var hour;
  if(!isNumber(str)) {
     return false;
  }
  hour=parseInt(str,10);
  if(hour>23 || hour<0) {
     return false; 
  }
  return true;
}
//------------------------------------
//判断是否为合法的分钟
//------------------------------------
function isValidMinute(str) {
  var minute;
  if(!isNumber(str)) {
     return false;
  }
  minute=parseInt(str,10);
  if(minute>59 || minute<0) {
     return false; 
  }
   return true;
}
//------------------------------------
//判断是否为合法的月份
//------------------------------------
function isValidMonth(str) {
  var month;
  if(!isNumber(str)) {    
     return false;
  }
  month=parseInt(str,10);
  if(month>12 || month<1) {
     return false; 
  }
   return true;
}
//------------------------------------
//判断输入年月是否小于当前年月
//------------------------------------
function isBeforeCurrDate(year,month) {
   var gNow = new Date();
   var vNowMonth = gNow.getMonth()+1;
   var vNowYear = gNow.getFullYear();
   if(!isNumber(year)|| !isValidMonth(month)) {
       alert("所输入年月必须为数字");
       return false;
   }
   if(vNowYear<=parseInt(year,10)) {      
   		if(vNowYear==parseInt(year,10)) {   				
        	if(vNowMonth>parseInt(month,10)) {
       			return false;
        	}else return true;
  		}else return true;
   }
   else return false;
}
//------------------------------------
//判断是否合法日期 xxxx-xx-xx
//------------------------------------
function isValidDate(theDate) {
  var reg = /^\d{4}-((0{0,1}[1-9]{1})|(1[0-2]{1}))-((0{0,1}[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))$/;  
  var result=true;
  if(!reg.test(theDate))
    result = false;
  else{
    var arr_hd=theDate.split("-");
    var dateTmp;
    dateTmp= new Date(arr_hd[0],parseFloat(arr_hd[1])-1,parseFloat(arr_hd[2]));
    if(dateTmp.getFullYear()!=parseFloat(arr_hd[0])|| dateTmp.getMonth()!=parseFloat(arr_hd[1]) -1 || dateTmp.getDate()!=parseFloat(arr_hd[2])){
        result = false
    }
  }
  return result;
}
//----------------------------------
//判断两个日期的大小,日期格式 yyyy-MM-dd
//cmp gt 大于,lt 小于 //ne 不等于,eq 等于,le 小于等于,ge 大于等于
//date1:日期1
//date2:日期2
//return:
//----------------------------------
function cmpDate(date1,date2){
  var dt1 =  new Date(date1.replace(/-/g,"\/"));
  var dt2 =  new Date(date2.replace(/-/g,"\/"));
  if(dt1.getTime()>=dt2.getTime()){
    return true;
  }
  else{
    return false;
  }
}
//
//中文相关的函数
//------------------------------------
//判断是否中文函数
//------------------------------------
function ischinese(str){
	var ret=true;
	for(var i=0;i<str.length;i++)
	ret=ret && (str.charCodeAt(i)>=10000);
	return ret;
}
//------------------------------------
//返回该字符中是否含有中文
//------------------------------------
function hasChinese(str){
	return (new String(str)).hasChinese();
}
String.prototype.hasChinese=function(){
	var s=escape(this);
	return (s.indexOf("%u")!=-1);
}
//其他函数
//------------------------------------
//验证E-MAIL格式函数
//------------------------------------
function isemail(email){
	var re = /\w+@\w+\.\w+/;
	if (re.test(email))
	   return true;
	else
	   return false;
}

//------------------------------------
//定制alert函数
//theText:文本框对象
//notice:警告信息
//------------------------------------
function MyAlert(theText,notice){
   alert(notice);
   theText.focus();
   theText.select();
}
//------------------------------------
//日期格式化函数
//format:格式化字符串
//var date = new Date();
//document.write (date.format('yyyy-MM-dd hh:mm:ss'));
//------------------------------------
Date.prototype.format = function(format){
    var o ={
        "M+" : this.getMonth()+1, //month
        "d+" : this.getDate(),    //day
        "h+" : this.getHours(),   //hour
        "m+" : this.getMinutes(), //minute
        "s+" : this.getSeconds(), //second
        "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
        "S" : this.getMilliseconds() //millisecond
    }
    if(/(y+)/.test(format))
    	format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length));
    for(var k in o)
    	if(new RegExp("("+ k +")").test(format))
    	format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
    return format;
}

 function getDate(dateId){
	 var date = new Date();	  
	   var year = date.getYear();   //yyyy
	   var mm = date.getMonth()+1; //month
       var dd = date.getDate();    //day
       if(mm < 10){
           mm = "0" + mm;
       }
       if(dd < 10){
           dd = "0" + dd;
       }
	   var str = year+"-"+mm+"-"+dd;
	   document.getElementById(dateId).value= str;	
}
//listen body double click event
//document.ondblclick=shiftwindow;

//me=this
//patrntxt=regular express
//flag = true/false
//hint
   function checkme(me,patrntxt,flag,hint){
	   var patrn = new RegExp("^"+patrntxt+"$");
	   if(flag){//必填
               if(checkNull(me)){
				   if(patrn.test(me.value)){
					  return true;
				   }else{
					  MyAlert(me,hint);
					  return false;
				   }
               }else{
	              alert("输入不能为空!");
                  return false;
               }
	   }else{//非必填
		   if(!checkNull(me)){//为空
			   me.value=me.value.trim();
			   return true;
		   }else{//不为空
		       if(patrn.test(me.value)){
		           return true;
		       }else{
		           alert(hint);
				   me.value="";
		           return false;
		       }
		   }
	   }
   }
