//来源于MPVS项目
/*表格触摸和离开时调用的方法，如：<tbody onmouseover="onmouseRow()" onmouseout="outmouseRow()">*/
var oldclass;
function onmouseRow()
{
	var overtr=event.srcElement;

	while(overtr.tagName!='TD')
	{
		overtr=overtr.parentNode;
		if(overtr==null){
			return ;
		}

	}
	oldclass=overtr.className;
	overtr=overtr.parentNode;
		for(i=0;i<overtr.cells.length;i++)
		{
			overtr.cells[i].className="tdonmouse";
		}
}
function outmouseRow()
{
	var overtr=event.srcElement.parentNode;
	while(overtr.tagName!='TR')
	{
		overtr=overtr.parentNode;
		if(overtr==null){
			return ;
		}

	}
		for(i=0;i<overtr.cells.length;i++)
		{
			overtr.cells[i].className=oldclass;
		}
}

//javascript中全角转半角
function DBC2SBC(str){
 var result = '';
 for (i=0 ; i<str.length; i++) {
  code = str.charCodeAt(i);//获取当前字符的unicode编码
  if (code >= 65281 && code <= 65373){//在这个unicode编码范围中的是所有的英文字母以及各种字符  
   result += String.fromCharCode(str.charCodeAt(i) - 65248);//把全角字符的unicode编码转换为对应半角字符的unicode码
  }else if (code == 12288){//空格  
   result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32);
  }else{  
   result += str.charAt(i);
  }
 }
 return result;
}

//ForDight(Dight,How):数值格式化函数，
//Dight要格式化的  数字，How要保留的小数位数。  
function  ForDight(Dight,How){  
    Dight  =  Math.round  (Dight*Math.pow(10,How))/Math.pow(10,How);  
   return  Dight;  
}

//获取给定的年、月的天数
function solarDays(y,m) {
	var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
   if(m==1)
      return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28)
   else
      return(solarMonth[m])
}

//日期格式校验
// true:	日期格式正确
// false：	日期格式错误
function isDateS(sd) {
  var re = /^(1|2)\d\d\d-((0?\d)|(1(0|1|2)))-(((0|1|2)?\d)|(3(0|1)))$/;
  var re2 = /^(\d+)-(\d+)-(\d+)$/;
  if( re.test(sd) ) {
    re2.exec(sd);
    yy = Number(RegExp.$1);
    mm = Number(RegExp.$2)-1;
    dd = Number(RegExp.$3);
    d = new Date(yy, mm, dd);
    if( mm==d.getMonth() )
      return true;
  };
  return false;
}

//日期格式校验
// true:	日期格式正确
// false：	日期格式错误
function isDateWithTime(sd) {
  var re = /^(1|2)\d\d\d-((0?\d)|(1(0|1|2)))-(((0|1|2)?\d)|(3(0|1))) ((0?\d)|(((1\d)|(2(0|1|2|3))))):((0?\d)|((1|2|3|4|5)\d))$/;
  var re2 = /^(\d+)-(\d+)-(\d+) (\d+):(\d+)$/;
  if( re.test(sd) ) {
    re2.exec(sd);
    yy = Number(RegExp.$1);
    mm = Number(RegExp.$2)-1;
    dd = Number(RegExp.$3);
    d = new Date(yy, mm, dd);
    if( mm==d.getMonth() )
      return true;
  };
  return false;
}

//比较日期大小
//return 	val>0	:	sd1 > sd2
//			val<0	:	sd1 < sd2
//			val=0	:	sd1 = sd2
function DateSComp(sd1, sd2) {
  var re = /^(\d+)-(\d+)-(\d+)$/;
  re.exec(sd1);
  d1 = new Date(Number(RegExp.$1), Number(RegExp.$2)-1, Number(RegExp.$3));
  re.exec(sd2);
  d2 = new Date(Number(RegExp.$1), Number(RegExp.$2)-1, Number(RegExp.$3));
  return( d1 - d2 );
}

//与当前日期比较日期大小
//return 	val>0	:	大于今天
//			val<0	:	小于今天
//			val=0	:	等于今天
function CompToday(sd1) {
	dd = new Date();
	var sd2 = dd.getYear()+"-"+(Number(dd.getMonth())+1)+"-"+dd.getDate();
	var re = /^(\d+)-(\d+)-(\d+)$/;
	re.exec(sd1);
	d1 = new Date(Number(RegExp.$1), Number(RegExp.$2)-1, Number(RegExp.$3));
	re.exec(sd2);
	d2 = new Date(Number(RegExp.$1), Number(RegExp.$2)-1, Number(RegExp.$3));
	return( d1 - d2 );
}


//计算天数差的函数，通用
  function GetDateDiff(sDate1, sDate2){  //sDate1和sDate2是2002-12-18格式
    var aDate, oDate1, oDate2, iDays;
    aDate = sDate1.split("-");
    oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]);  //转换为12-18-2002格式
    aDate = sDate2.split("-");
    oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]);
   // alert(oDate1 - oDate2)
    iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 /24);  //把相差的毫秒数转换为天数
    return iDays;
  } 
  
  
  //=================数字相关=====================
 //  数字
 function  isNumeric(p)  { //   /^\d+$/.test(str) 
 	//alert("+++" + p + "+++");
	if (/^(\ +|- )?(0|[1-9]\d*)(\.\d*[1-9])?$/.test(p)){
		//alert("true");
         return   true ;
	}else{ 
		//alert("false");
         return   false ;
	}
}

//校验只允许负数
function checkNeg(aString){
	dotCount = 0;
	if(aString.charCodeAt(0)!=45)
	{
		return (-1);
	}
	for (i=1;i<aString.length;i++){
		if ((aString.charCodeAt(i) < 48 && aString.charCodeAt(i) != 46) || aString.charCodeAt(i) > 57){
			return(-1);
		}
		if (aString.charCodeAt(i) == 46)
			dotCount++;
	}
	if (dotCount > 1)
		return (-1);
	return(1);
}

//验证整数（正负零）
 function  isInteger(p)  {
	if( /^(-|\+)?\d+$/.test(p))
         return   true ;
     else 
         return   false ;
}

//验证大于0的整数
 function  isInteger_Gt_Zero(p)  {
	if(parseFloat(p) == 0)
		return false;
		
	if( /^\d+$/.test(p))
         return   true ;
     else 
         return   false ;
}

//验证小于0的整数
 function  isInteger_Lt_Zero(p)  {
	if(parseFloat(p) == 0)
		return false;
		
	if(  /^-\d+$/.test(p))
         return   true ;
     else 
         return   false ;
}

//正负整数（不包括零）
function checkNegNum(aString){
	if((aString.charCodeAt(0)<48 || aString.charCodeAt(0)>57)
		&& aString.charCodeAt(0)!=45)
	{
		return (false);
	}
	for (i=1;i<aString.length;i++){
		if (aString.charCodeAt(i)<48 || aString.charCodeAt(i)>57){
			return(false);
		}
	}
	return(true);
}

//货币,允许负数
function checkMoney2(aString){
	dotCount = 0;
	if((aString.charCodeAt(0)<48 || aString.charCodeAt(0)>57)
		&& aString.charCodeAt(0)!=45)
	{
		return (-1);
	}
	for (i=1;i<aString.length;i++){
		if ((aString.charCodeAt(i) < 48 && aString.charCodeAt(i) != 46) || aString.charCodeAt(i) > 57){
			return(-1);
		}
		if (aString.charCodeAt(i) == 46)
			dotCount++;
	}
	if (dotCount > 1)
		return (-1);
	return(1);
}

//货币
function checkMoney(aString){
	dotCount = 0;
	for (i=0;i<aString.length;i++){
		if ((aString.charCodeAt(i) < 48 && aString.charCodeAt(i) != 46) || aString.charCodeAt(i) > 57){
			return(-1);
		}
		if (aString.charCodeAt(i) == 46)
			dotCount++;
	}
	if (dotCount > 1)
		return (-1);
	return(1);
}
//==============================================================================

//==============身份证==========================================================
//判断是否为身份证号
function CheckIdCardNo(num) {  
        var len = num.length, re;
		 var temp_17 = num.substring(0, num.length - 1);
		 var temp_18 = num;
        if (len == 15){ 
          if (isNaN(num)) {alert("身份证号输入的不是数字！"); return false;}
		  re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/); 
		 } 
        else if (len == 18) {
		  var last = num.charAt(num.length-1);
		  
		  var front17 = num.substring(0, num.length - 1);
		  if(isNaN(front17)){
				alert("身份证号前17位输入的不是数字!");
				return false;
		  }
		  
		  if(isNaN(last) && last!='x' && last!='X'){
		  	alert("输入的身份证号有误，最后一位应该是数字或x（X）!");
			return false;
		  }
          if(num.charAt(num.length-1) == 'x' || num.charAt(num.length - 1) == 'X'){
		  	num = num.substring(0, num.length - 1);
			if(isNaN(num)){
				alert("身份证号前17位输入的不是数字!");
				return false;
			}
			re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})$/);
		  }else{
		  	re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/); 
		  }	
		}
        else {alert("身份证号输入的位数不对！"); return false;} 
        var a = num.match(re); 
        if (a != null) 
        { 
          if (len==15) 
          { 
            var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]); 
            var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; 
          } 
          else 
          { 
            var D = new Date(a[3]+"/"+a[4]+"/"+a[5]); 
            var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]; 
          } 
          if (!B) {alert("输入的身份证号 "+ a[0] +" 里出生日期不对！"); return false;} 
        } 
		if(len == 18){
			var sumall = 0;
			var w = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);//加权因子
			var c = new Array("1","0","X","9","8","7","6","5","4","3","2");//校验码			
			for(var i=0;i<17;i++){
				sumall += parseInt(temp_17.charAt(i))*w[i];
			}
			if(temp_18.charAt(17).toUpperCase() != c[sumall%11]){
				alert("身份证号有误");
				return false;
			}
		}
        return true; 
 }
 
 //===========================================================================================
 
 //========================日期时间===========================================================
//短时间，形如 (13:04:06)
function isTime(str){
    var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
    if (a == null) {alert('输入的参数不是时间格式'); return false;}
    if (a[1]>24 || a[3]>60 || a[4]>60){
          alert("时间格式不对");
          return false
     }
     return true;
}

//短日期，形如 (2003-12-05)
function strDateTime_yyyy_MM_dd(str){
    var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
    if(r==null)return false;
    var d= new Date(r[1], r[3]-1, r[4]);
    return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}

//长时间，形如 (2003-12-05 13:04:06)
function strDateTime_yyyy_MM_dd_hh_mm_ss(str){
    var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
    var r = str.match(reg);
    if(r==null)return false;
    var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
     return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}

//长时间，形如 (2003-12-05 13:04)
function strDateTime_yyyy_MM_dd_hh_mm(sd) {
  var re = /^(1|2)\d\d\d-((0?\d)|(1(0|1|2)))-(((0|1|2)?\d)|(3(0|1))) ((0?\d)|(((1\d)|(2(0|1|2|3))))):((0?\d)|((1|2|3|4|5)\d))$/;
  var re2 = /^(\d+)-(\d+)-(\d+) (\d+):(\d+)$/;
  if( re.test(sd) ) {
    re2.exec(sd);
    yy = Number(RegExp.$1);
    mm = Number(RegExp.$2)-1;
    dd = Number(RegExp.$3);
    d = new Date(yy, mm, dd);
    if( mm==d.getMonth() )
      return true;
  };
  return false;
}

//=========================================================================================

//===============EMAIL=============================================
//email的判断。
function ismail(mail){
    return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail));
}

//==================================================================

//============radio必选=======================================
function mustselectradio(obj){
	//var isselect = false;
	
	if (obj.type == "radio"){
		if(obj.checked){
			//alert('a');
			return true;
		}	 
    }else{
		var count = obj.length;
		//alert(count);
		for(i = 0; i < count; i++){
			//alert(obj[i].checked);
		  if (obj[i].checked){
			   //iselect = true;
			   //break;
			   //alert('b');
			   return true;
		  }
		}
  }
  return false;
  //alert('c');
  //return isselect;
}
//============================================================

//============checkbox必选=======================================
function mustselectcheckbox(obj){
	//var isselect = false;
	
	if (obj.type == "checkbox"){
		if(obj.checked){
			//alert('a');
			return true;
		}	 
    }else{
		var count = obj.length;
		//alert(count);
		for(i = 0; i < count; i++){
			//alert(obj[i].checked);
		  if (obj[i].checked){
			   //iselect = true;
			   //break;
			   //alert('b');
			   return true;
		  }
		}
  }
  return false;
  //alert('c');
  //return isselect;
}
//============================================================

//checkbox全选
//ctrlCheckbox 用于控制全选/全不选的checkbox
//checkboxes 被控制的checkbox的name
function  selectAllCheckbox(ctrlCheckbox,checkboxes){  
	 var  a  =  document.getElementsByName(checkboxes);  
     for  (var  i=0;  i<a.length;  i++){  
         a[i].checked  =  ctrlCheckbox.checked;  
     }  
       
}  

//================字符串相关============================
//去左空格 
function LTrim(str){ 
return str.replace(/^\s*/g,""); 
} 
//去右空格 
function RTrim(str){ 
return str.replace(/\s*$/g,""); 
} 

//去首尾空格 
function Trim(str){ 
return str.replace(/^\s*|\s*$/g,""); 
} 


/** 
* 检测字符串是否为空 
*/ 

function isNullOrEmpty(str)    
{    
    str = Trim(str);    
    if(str.length == 0) {   
        return true;    
    } 
    else { 
        return false 
    } 
}

/**
*验证电话号码的合法性，输入参数为电话号码域的id
*/
function chkPhone(str) {
	//var str = document.getElementById(Objectid).value;
	if (str=="") {
		return true;
	}
	var reg=/(^[0-9]{3,4}-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^([0-9]{3,4})[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/;
	if(!reg.test(str)){
		//alert("电话号码(如0591-1234567)输入不合法，请检查重输！");
		//document.getElementById(Objectid).select();   
  		return   false;
	}
	return   true;
} 

/**
 *str 原字符串
 *s1 要被替换的子串
 *s2 替换s1的串
 */
function replaceall(str,s1,s2){
	var demo=str
 	while(demo.indexOf(s1)!=-1){
 		demo=demo.replace(s1,s2);
	}
 	return demo;
}

/**
*日历弹出
*/
function fPopUpDlg(endtarget,ctl,WINname,WINwidth,WINheight){

	showx =  WINwidth + 120  ; // + deltaX;
	showy = WINheight -50 ; // + deltaY;


	newWINwidth = WINwidth + 4 + 18;
	var features =
		'dialogWidth:'  + newWINwidth  + 'px;' +
		'dialogHeight:' + WINheight + 'px;' +
		'dialogLeft:'   + showx     + 'px;' +
		'dialogTop:'    + showy     + 'px;' +
		'directories:no; localtion:no; menubar:no; status=no; toolbar=no;scrollbars:yes;Resizeable=no';



	retval = window.showModalDialog(endtarget, WINname , features );
	if( retval != null ){
		ctl.value = retval;
	}else{
		//alert("canceled");
	}
}
