/*
文件名：function.js
说明：JS函数定义文件
*/


/*************************************
函数名：CheckPolicy
作  用：检查权限设定页父标签选定时才能选子标签
参  数：Pid   ----父标签ID号
        Sid   ----子标签ID号（含在span标签之中）
返回值： 功能函数，无返回值
*************************************/
function CheckPolicy(Pid,Sid)
{ 
var o=document.getElementById(Pid); 
var obj = document.getElementById(Sid); 
obj=obj.children; 
if(o.checked==false)
{
for(i=0;i<obj.length;i++) 
{ 
e=obj[i]; 
if(e.type=="checkbox")
{ obj[i].checked=false; } 
} 
} 
}


/*************************************
函数名：LeapYear
作  用：判断日期是否为闰年
参  数：Str   ----要判断日期
       
返回值： true: 是闰年   false: 不是闰年 
*************************************/      
function LeapYear(Str) 
{ 
   if (Str % 100 == 0) 
	   { 
      if (Str % 400 == 0) 
		{ return true; } 
		} 
	  else 
		{ 
	  if ((Str % 4) == 0) 
		{ return true; } 
		} 
   return false; 
} 


/*************************************
函数名：IsDate
作  用：判断是否为日期，日期是否正确
        能判断闰年2月日期和4,6,9,11月份日期不能超过30
参  数：Str   ----要判断的字符
        
返回值： true为通过判断,false为未通过判断
*************************************/      
function IsDate(Str) 
{  
// 判断输入格式是否正确 
if (Str.search(/^[0-9]{4}-(0[1-9]|[1-9]|1[0-2])-((0[1-9]|[1-9])|1[0-9]|2[0-9]|3[0-1])$/)==-1)
	{ 
     return false;
	}else
	{//判断具体年份日期是否正确
	  var year=Str.substr(0,Str.indexOf('-'))  // 获得年 
   // 下面操作获得月份 
   var transition_month=Str.substr(0,Str.lastIndexOf('-'));  
   var month=transition_month.substr(transition_month.lastIndexOf('-')+1,transition_month.length); 
		if (month.indexOf('0')==0) 
		 { 
		  month=month.substr(1,month.length); 
		 } 
   // 下面操作获得日期 
   var day=Str.substr(Str.lastIndexOf('-')+1,Str.length); 
		if (day.indexOf('0')==0) 
		{ 
          day=day.substr(1,day.length); 
		} 
	// 4,6,9,11月份日期不能超过30 
	if ((month==4 || month==6 || month==9 || month==11) && (day>30)) 
		{return false;}
		else
		{// 判断2月份 
			if (month==2) 
			{
				if (LeapYear(year))
				{
					if (day>29 || day<1)//闰年2月29天
						{ return false;} 
				}else 
				{ 
					if (day>28 || day<1)//非闰年2月28天
						{return false; } 
				} 
			}else
			{return true;}//通过验证返回ture

	     }
	}
}



/*************************************
函数名：IsChina
作  用：判断是否为中文
参  数：Str   ----要判断的字符
返回值：true为中文,false为不是中文
*************************************/      
function IsChina(Str)
 { 
  for(i=0;i<Str.length;i++)
   {
   char=Str.charCodeAt(i);
   if(char<255)
   {return false;}
   }
return true;
 }



/*************************************
函数名：IsIDCard
作  用：判断是否为身份证号
参  数：Str   ----要判断的字符
返回值：true为是,false为不是
*************************************/      
function IsIDCard(Str)
      {
        if (isNaN(Str)) {return false;}
        var len = Str.length, re; 
        
		if (len == 15)
          re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
        else if (len == 18)
          re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
        else {return false;}
        
		var a = Str.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) {return false;}
        }
      return true;
      }


/*************************************
函数名：IsIdCard2
作  用：判断是否为身份证号 （验证比较严格）
参  数：number   ----要判断的字符
返回值：true为是,false为不是
*************************************/      
function IsIdCard2(number)
{
var date, Ai;
var verify = "10x98765432";
var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var area = ['','','','','','','','','','','','北京','天津','河北','山西','内蒙古','','','','','','辽宁','吉林','黑龙江','','','','','','','','上海','江苏','浙江','安微','福建','江西','山东','','','','河南','湖北','湖南','广东','广西','海南','','','','重庆','四川','贵州','云南','西藏','','','','','','','陕西','甘肃','青海','宁夏','新疆','','','','','','台湾','','','','','','','','','','香港','澳门','','','','','','','','','国外'];
var re = number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[x\d])))$/i);
if(re == null) return false;
if(re[1] >= area.length || area[re[1]] == "") return false;
if(re[2].length == 12){
Ai = number.substr(0, 17);
date = [re[9], re[10], re[11]].join("-");
}
else{
Ai = number.substr(0, 6) + "19" + number.substr(6);
date = ["19" + re[4], re[5], re[6]].join("-");
}
//if(!this.IsDate(date, "ymd")) return false;
var sum = 0;
for(var i = 0;i<=16;i++){
sum += Ai.charAt(i) * Wi[i];
}
Ai += verify.charAt(sum%11);
return (number.length ==15 || number.length == 18 && number == Ai);
}


/*************************************
函数名：IsPhone
作  用：判断是否为电话号码
　　
	电话号码为3到8位
　　如果电话号码中包含有区号，那么区号为三位或四位
　　区号用"("、")"或"-"和其他部分隔开
　　移动电话号码为11或12位，如果为12位,那么第一位为0
　　11位移动电话号码的第一位和第二位为"13"
　　12位移动电话号码的第二位和第三位为"13"

参  数：Str   ----要判断的字符
返回值：true为是,false为不是
*************************************/      
function IsPhone(Str) 
{
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}$)|(^0{0,1}15[0-9]{9}$)/
return reg.test(Str);
}


/*************************************
函数名：IsAge
作  用：判断是否为年龄
参  数：Str   ----要判断的字符
返回值：true为是,false为不是
*************************************/      
function IsAge(Str)
{
	if (isNaN(Str))
	{return false;}
	else
	{if (Str.length>3)
		{return false;}
		else{
			if(Str.indexOf(".")!=-1)
			{return false;}
			else if(parseInt(Str)<=10 || parseInt(Str)>=100)
			{return false;}
		}
	return true;
	}
}



/*************************************
函数名：dsMove
作  用：实现层的拖移方法onmousedown='DS_x=event.
x-parentNode.style.pixelLeft;DS_y=event.y-parentNode
.style.pixelTop;setCapture();' onmouseup='releaseCapture();' 
onmousemove='dsMove(this.parentNode)' style='cursor:move;'
参  数：obj   ----层对象
返回值：无
*************************************/      
var DS_x,DS_y;
function dsMove(obj)  

{
  if(event.button==1)
  {
    var X=obj.clientLeft;
    var Y=obj.clientTop;
    obj.style.pixelLeft=X+(event.x-DS_x);
    obj.style.pixelTop=Y+(event.y-DS_y);
  }
}


/*************************************
函数名：IsMoney
作  用：判断是否为工资数值
参  数：Str   ----要判断的字符
返回值：true为是,false为不是
*************************************/      
function IsMoney(Str)
{
    var i,j,strTemp;
    strTemp="0123456789."; //能输入的字符定义
    
    for (i=0;i<Str.length;i++)
    {
        j=strTemp.indexOf(Str.charAt(i));    
        if (j==-1)
        {
        //说明有字符不是工资
            return false;
        }
    }
    //说明是工资
    return true;
} 




/*************************************
函数名：IsYear
作  用：判断是否为年份（限定为2000-2059）年
参  数：Str   ----要判断的字符
返回值：true为是,false为不是
*************************************/      
function IsYear(Str) 
{
reg=/[2][0][0-5][0-9]$/
return reg.test(Str);
}




/*************************************
函数名：IsDay
作  用：判断是否为天数（限定为0-99）天
参  数：Str   ----要判断的字符
返回值：true为是,false为不是
*************************************/      
function IsDay(Str) 
{
reg=/(^[0-9]{1,2}$)/
return reg.test(Str);
}


/***************
函数名：emailCheck
作  用：判断是否为Email地址
参  数：emailAddr   ----要判断的字符
返回值：true为是,false为不是
******************/
function emailCheck(emailAddr)
{
    if((emailAddr == null) || (emailAddr.length < 2)) return false ;

    // 需出现'@',且不在首字符.
    var aPos = emailAddr.indexOf("@" ,1) ;

    if(aPos < 0)
    {
        return false ;
    }

    // '@'后出现'.',且不紧跟其后.
    if(emailAddr.indexOf("." ,aPos+2) < 0)
    {
        return false ;
    }

    return true ;
}


/////全选
function CheckAll(form){
  for (var i=0;i<form.elements.length;i++){
    var e = form.elements[i];
    if (e.name != 'chkall')
       e.checked = form.chkall.checked;
    }
  }

///隐藏左边菜单
function HiddenMenu(){
if(parent.mainframe.cols=="250,7,*"){
	window.parent.mainframe.cols="0,7,*";
}else{
	window.parent.mainframe.cols="250,7,*";
}
}
document.ondblclick=HiddenMenu


///只能是字母数字false 为不是
function IsReg(Str){
reg=/^[A-Za-z0-9]+$/
return reg.test(Str);
}


//cookies操作
function setCookie(name,value){
    var Days = 1; //1天过期
    var exp  = new Date();    //new Date("December 31, 9998");
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";"//expires=" + exp.toGMTString();
}
function getCookie(name)
{
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
        if(arr=document.cookie.match(reg)) return unescape(arr[2]);
        else return null;
}
function delCookie(name)
{
    var exp = new Date();
        exp.setTime(exp.getTime() - 1);
    var cval=getCookie(name);
        if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}


