﻿
//-----------------------------------------公共函数-------------------------------------------------------
var E$=function()
{//获取节点
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof(element) == 'string')
    {
      element = document.getElementById(element);
    }

    if (arguments.length == 1)
    {
      return element;
    }

    elements.push(element);
    
  }

  return elements;
}

///
//绑写方法，为解决不同浏览器中方法不统一的问题
///
var EBM$=function (element)
{
    if(typeof(element)== 'string')
    {
        element=E$(element);
    }
    if(element&&(element!=null))
    {

        element['setStyle']=function(styleText)
        {
            if( element.style['setAttribute'])
            { 
                element.style.setAttribute("cssText", styleText ); 
            }
            else
            { 
                element.setAttribute("style", styleText );
            } 
        };
        element['setClass']=function(ClassName)
        {
            element.setAttribute("className", ClassName);
        };        
        element['addEvent']=function(sEvent,func)
        {
            if(element['attachEvent'])
            {        
                element.attachEvent('on'+sEvent,func); 
            }
            else
            {
                element.addEventListener(sEvent,func,false); 
            }
        };  
        element['removeEvent']=function(sEvent,func)
        {
            if(element['attachEvent'])
            {        
                element.detachEvent('on'+sEvent,func); 
            }
            else
            {
                element.removeEventListener(sEvent,func,false); 
            }
        };    

        element['insertHTML'] = function(where, html)
        {
        
            if(Br$('ff')||Br$('sf'))
            {
                var e = this.ownerDocument.createRange();
                e.setStartBefore(this);
                e = e.createContextualFragment(html);
                switch (where)
                {
                    case 'beforeBegin' :
                        this.parentNode.insertBefore(e, this);
                        break;
                    case 'afterBegin' :
                        this.insertBefore(e, this.firstChild);
                        break;
                    case 'beforeEnd' :
                        this.appendChild(e);
                        break;
                    case 'afterEnd' :
                        if( ! this.nextSibling)
                            this.parentNode.appendChild(e);
                        else 
                            this.parentNode.insertBefore(e, this.nextSibling);
                        break;
                }
            }
            else
            {
                element.insertAdjacentHTML(where, html);
            }
            
            
        };

        
    }
    return element;
}
///
//追加this修改器，让对象的成员，在控件的事件中同样能够以this.成员 的形式访问
///
var EBD$=function(_Fun)
{
    _Fun.bind = function(obj) {  var method = this; return function() { return method.apply(obj,arguments);  }; }
    return _Fun;
}
///
//判断浏览器
///
var Br$=function(_BrType)
{
    var bString = navigator.userAgent.toLowerCase();
    switch(_BrType)
    {
        case 'ie':
            return (/msie ([\d.]+)/i.test(bString));
            break;
        case 'ff':
            return (/firefox\/([\d.]+)/i.test(bString));
            break;
        case 'cm':
            return (/chrome\/([\d.]+)/i.test(bString));
            break;
        case 'op':
            return (/opera.([\d.]+)/i.test(bString));
            break;
		case 'sf':
            return (/version\/([\d.]+).*safari/i.test(bString));
            break;
        default:
            return false;
            break;			
    }
}
///
//求出指定对象的绝对位置
//e：需要求的对象
///
var ELC$=function(e)
{
    var Result=[0,0];
    if(typeof(e) == 'string')
    {
        e=E$(e);
    }
    if(e&&e!=null)
    {
        var t=e.offsetTop;  
        var l=e.offsetLeft;  
        while(e=e.offsetParent) 
        {  
          t+=e.offsetTop;  
          l+=e.offsetLeft;  
        }
        Result=[l,t];
    }    
    return Result;
}
///
//从事件中取得节点
//evt：事件对象
///
var EEG$=function(evt)
{
    var evtobj=(window.event?window.event:evt);
    var Cobj=(window.event?event.srcElement:evtobj.target);
    return Cobj;
}

///
//取消事件，取消A对象的HREF事件等
//evt：需要取消的事件对象
///
var EEC$=function(evt){
if(arguments[1]){
  if(window.event){
    evt.returnValue=true;
  }
  return true;
}else {
  if(window.event){
    evt.returnValue=false;
  }else {
    evt.preventDefault();
  }
  return false;
}
};


///------------------------以F开头的都是对Ifarme中的对象进行操作----------------------------------
/// 
//从Ifarme中得到对象
//_Ifarme：帧名
//_Element：对象名
///
var FE$=function(_Ifarme,_Element)
{
    if(typeof(_Ifarme) == 'string')
    {
        _Ifarme=E$(_Ifarme);
    }
    if(_Ifarme&&(_Ifarme!=null))
    {
        return _Ifarme.contentWindow.document.getElementById(_Element);
    }    
}
/// 
//从Ifarme中得到绑定事件
///
var FEBM$=function(_Ifarme,_Element)
{
    return EBM$(FE$(_Ifarme,_Element));
}
/// 
//从Ifarme中得取得事件触发对象
///
var FEEG$=function(_Ifarme,evt)
{
    _Ifarme=E$(_Ifarme);
    var evtobj=(_Ifarme.contentWindow.event?_Ifarme.contentWindow.event:evt);
    var Cobj=(_Ifarme.contentWindow.event?_Ifarme.contentWindow.event.srcElement:evtobj.target);
    return Cobj;
}
/// 
//从Ifarme中得到取消事件
///
var FEEC$=function(_Ifarme,evt)
{
    _Ifarme=E$(_Ifarme);
    if(arguments[2]){
      if(_Ifarme.contentWindow.event){
        evt.returnValue=true;
      }
      return true;
    }else {
      if(_Ifarme.contentWindow.event){
        evt.returnValue=false;
      }else {
        evt.preventDefault();
      }
      return false;
    }
}

//--------------------------------------------控件类----------------------------------------------------
///
//下拉类
//用于在文档中创建一个IFRAME对象，并向其它写入内容
///
if(Receptacle==null)
{
    var Receptacle=new function()
    {
        this.Create=function(_Name,_Parameter,_Links,_Scripts,_AddStyle)
        {//Receptacle.Create
            var _TIfarme=EBM$(_Name);
            var Stylestr='position:absolute;';
            if(_Parameter)
            {                             
                Stylestr+='width:'+(typeof(_Parameter['width'])!='undefined'?_Parameter['width']:_TIfarme.style.width)+'px;';
                Stylestr+='height:'+(typeof(_Parameter['height'])!='undefined'?_Parameter['height']:_TIfarme.style.height)+'px;';
                Stylestr+='left:'+(typeof(_Parameter['left'])!='undefined'?_Parameter['left']:_TIfarme.style.left)+'px;';
                Stylestr+='top:'+(typeof(_Parameter['top'])!='undefined'?_Parameter['top']:_TIfarme.style.top)+'px;';
                Stylestr+='display:'+(typeof(_Parameter['display'])!='undefined'?_Parameter['display']:_TIfarme.style.display)+'px;';
            }            
            
            if(_TIfarme)
            {
                _TIfarme.setStyle(Stylestr);
            }
            else
            {
                var FHtml='<iframe id="'+_Name+'" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" border="0" style="'+Stylestr+'"></iframe>';            
	            EBM$(document.body).insertHTML("beforeEnd",FHtml);
	        }
	        this.Load(_Name,_Parameter['outhtml'],_Links,_Scripts,_AddStyle);
        }
        this.Load=function(_Name,_OutHtml,_Links,_Scripts,_AddStyle)
        {//Receptacle.Load
            var _TIfarme=E$(_Name);
	        if(_TIfarme)
	        {
	            var oh='';                
                oh+=('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
                oh+=('<html xmlns="http://www.w3.org/1999/xhtml" ><html><head>');
                if(_Links&&_Links.length!=0){for(var i=0;i<_Links.length;i++){oh+=('<link rel="stylesheet" type="text/css" href="'+_Links[i]+'">');}};
                if(_Scripts&&_Scripts.length!=0){for(var i=0;i<_Scripts.length;i++){oh+=('<script src="'+_Scripts[i]+'"></script>');}};
                if(_AddStyle){oh+='<style  type="text/css">'+_AddStyle+'</style>'}
                oh+=('</head><body>'+_OutHtml+'</body></html>');
	            var IfHtml = _TIfarme.contentWindow;
	            
                IfHtml.document.open();
                IfHtml.document.writeln(oh);
                IfHtml.document.close();
                //_TIfarme.style.height=IfHtml.document.body.offsetHeight;
                IfHtml=null;
                
            }	
            
        }
        
    }
}

///
//日历制作思路：
//1。调用Receptacle（下拉类）的静态方法，在BODY里插入一个IFARME，将样式表、日历的操作控件部分和星期拼构成HTML字串写入IFARME
//2。然后通过已知的年月或当天年月求出当月的第一天是星期几，最后一天是星期几，然后分别在当月的第一天前和最后一天后加上对应个数的<li>，以占位的形式将当月的第一天挤到对应的星期几
//比如(以0为占位，当月第一天星期2,当月共有28天)：0,0,1,2,3...28,0,0;
//把当月的日和占位符（其实都为LI只是样式不同，没有内容而已）拼构成字串写入IFARME指定DIV中；
//3。当前月和年的修改都会重复第2个步骤
//注：日历名中不能有下划线
///
if(Calendar==null)
{
	var Calendar=function()
	{ 
	    Calendar.Timer;
	    Calendar.SitePath='/ehuatian/';//站点目录的位置，用于定位背景图片文件
		var _Today = new Date();
		var _CDay = _Today.getDate();
		var _CWeek=_Today.getDay();		
		var dayNames = ['\u65e5','\u4e00','\u4e8c','\u4e09','\u56db','\u4e94','\u516d'];//对中的中文星期日到星期六
		this.Name='CalendarDt';
		this.Year=_Today.getYear();
		this.Month=_Today.getMonth();
		this.Day=_CDay;
		this.BHistory=true;//如果赋假值则在日历盘中历史日期无法选择
		this.CallBack=null;//当选择一个正常的日期后所做的操作
		this.Left=0;
		this.Top=0;
		this.Width=137;
		this.Height=135;
		this.CDate=_Today;//用于暂存当前的年月
		this.NM_BM_P='C_IMonth_P';
		this.NM_BM_N='C_IMonth_N';
		this.NM_IY='C_IYear';
		this.NM_IM='C_IMonth';
		this.NM_Body='C_Body';
		this.ReObjId='';		
		this.OutTimer=500;
		this.AddStyle='';


        ///
        //给指定的方法对象绑定bind方法，拼构样式表
        ///
		this.Init=function(){
		    EBD$(this.ChangeValue);//为指定方法添加 bind方法
            EBD$(this.CheckValue);
            EBD$(this.PClick);
            EBD$(this.NClick);
            EBD$(this.BodyClick);
            EBD$(this.Emousover);
            EBD$(this.Emousout);  
            EBD$(this.Eclose);       

            var _AS='';
            _AS+='*{margin: 0;padding: 0;}';
            _AS+='body{background-color: Transparent;font-size: 12px;font-family: "宋体";}';
            _AS+='.Calendar{width: 134px;border: #EBEBEB solid 1px;display: table;background-image: url('+Calendar.SitePath+'images/cbg.gif);}';//界面上的亮色在些修改，这里默认是蓝色
            _AS+='.Calendar li{width: 18px;height: 18px;display: block;float: left;list-style-type: none;line-height: 18px;text-align: center;margin-left: 1px;}';
            _AS+='.Calendar ul{width: 134px;display: table;color: #FFFFFF;}';
            _AS+='.Calendar .Nav{border-bottom: none;padding-top: 1px;border-right: #898989 solid 1px;}';
            _AS+='.Calendar .Nav a{color: #FFFFFF;text-decoration: none;text-align: center;display: block;width: 100%;height: 18px;}';
            _AS+='.Calendar .Nav a: hover{color: #E7E3DB;}';
            _AS+='.Calendar .Nav input{padding: 0;border: solid 1px #CCCCCC;text-align: center;color: #4D4D4D;height: 13px;font-size: 12px;font-family: "宋体";filter: alpha(opacity=80);/*IE*/-moz-opacity: 0.8;/*MOZ , FF*/opacity: 0.8;/*CSS3, FF1.5*/}';
            _AS+='.Calendar .Nav li.Nav_IY{width: 36px;}';
            _AS+='.Calendar .Nav li.Nav_IY input{width: 30px;}';
            _AS+='.Calendar .Nav li.Nav_IM input{width: 16px;}';
            _AS+='.Calendar .WNav{border-right: #898989 solid 1px;}';
            _AS+='.Calendar .WNav li{margin: 0;padding: 0;margin-left: 1px;}';
            _AS+='.Calendar .DNav{border-bottom: #898989 solid 1px;border-right: #898989 solid 1px;background-color: #FFFFFF;}';
            _AS+='.Calendar .DNav li{border-top: #EBEBEB solid 1px;border-left: #EBEBEB solid 1px;margin: 0;background-color: #FFFFFF;color: #6C6C6C;cursor: pointer;display: block;float: left;position: relative;}';
            _AS+='.Calendar .DNav li.C{border-top: #B5B5B5 solid 1px;border-left: #B5B5B5 solid 1px;background-color: #EBEBEB;color: #464646;cursor: pointer;}';
            _AS+='.Calendar .DNav li.H{color: #CCCCCC;cursor: default;}';
            _AS+='.Calendar .DNav li.N{cursor: default;}';
            this.AddStyle=_AS;

		}
		///
		//创建日历面板
		//_y:年
		//_m:月
		//功能：拼构日历的操作区和星期区，并写入一个IFRAME对象中
		///
		this.Create=function(_y,_m){
		    this.Init();
		    var outHtml='';
            outHtml+='<div id="'+this.Name+'" class="Calendar">';
            outHtml+='<ul class="Nav">';
            outHtml+='<li class="Nav_P"><a id="'+this.NM_BM_P+'" href="#"><</a></li>';
            outHtml+='<li class="Nav_IY"><input id="'+this.NM_IY+'" type="text" value="" maxlength="4" /></li>';
            outHtml+='<li class="Nav_TY">年</li>';
            outHtml+='<li class="Nav_IM"><input id="'+this.NM_IM+'" type="text" value="" maxlength="2"/></li>';
            outHtml+='<li class="Nav_TY">月</li>';
            outHtml+='<li class="Nav_N"><a id="'+this.NM_BM_N+'" href="#">></a></li>';
            outHtml+='</ul>';
            outHtml+='<ul class="WNav">';
            outHtml+='<li>'+dayNames.join('</li><li>')+'</li>';//生成星期标题
            outHtml+='</ul>';
            outHtml+='</div> ';
            var _Parameter={};
            _Parameter['width']=this.Width;
            _Parameter['height']=this.Height;
            _Parameter['left']=this.Left;
            _Parameter['top']=this.Top;
            _Parameter['display']='block';
            _Parameter['outhtml']=outHtml;   
            _y&&(this.Year=_y);
            _m&&(this.Month=_m);                     
            Receptacle.Create(this.Name,_Parameter,null,null,this.AddStyle);//创建下拉框            
	        this.GenerateBody(this.Name,this.Year,this.Month);
	        this.BindOpEvent();      
	        outHtml=null;
		}
        ///
        //生成日期盘
        ///
		this.GenerateBody=function(_Name,_Year,_Month)
		{
		    var _TCalendar=FEBM$(_Name,_Name);		    
		    var _CIYear=FE$(_Name,this.NM_IY);
		    var _CIMonth=FE$(_Name,this.NM_IM);		    
		    if(_TCalendar){
		    	var _TDate=getDate();//当前日期，不含时间
		        var _CDate=this.CDate;//取出当前月日并写入控件
		        !_Year&&(_Year=_CDate.getYear());//当改变年份时用-1代月
		        _Month==-1&&(_Month=_CDate.getMonth());//当改变年份时用-1代月
		        _CIYear&&(_CIYear.value=getYear(_Year,1));
		        _CIMonth&&(_CIMonth.value=_Month+1);
		        this.CDate=new Date(getYear(_Year,1),_Month,_TDate.getDate());//自定义日期对象是不同浏览器的参数同为正常日期格式
		        var outCalenderHtml='';
		        var _NDays=monthDayCount(_Year,_Month);//当月共有多少天
		        var _SWeek=getWeek(_Year,_Month);//当月的1号星期几
			    var _EWeek=getWeek(_Year,_Month,_NDays);//当月最后一天星期几
		        var _EDayCount=6-_EWeek;//日期未尾应该生成几个空格		        
		        var _CBody=FE$(_Name,this.NM_Body);		        
		        _CBody&&_TCalendar.removeChild(_CBody);//如果日历盘存在则删除，FireFox中用innerHTML插入的LI不支持 FLOAT，只有将对象删除后再创建，对象才能正确应用样式
		        outCalenderHtml+='<ul id="'+this.NM_Body+'" class="DNav">';
		        for(var t=1;t<=_SWeek;t++){outCalenderHtml+='<li class="N" ></li>';}//月前占位
		        for(var i=1;i<=_NDays;i++){
		            var _IDate=new Date(_Year,_Month,i);		            
		            var _Style=(this.BHistory&&_IDate<_TDate)?'class="H"':((_IDate.toString()==_TDate.toString())?'class="C"':'');
		            outCalenderHtml+='<li '+_Style+'>'+i+'</li>';
		        }//日期					
		        for(var j=0;j<_EDayCount;j++){outCalenderHtml+='<li class="N"></li>';}//月尾占位
		        outCalenderHtml+='</ul>';	
		        _TCalendar.insertHTML("beforeEnd",outCalenderHtml);
		        _CBody=FEBM$(_Name,this.NM_Body);
                _CBody&&_CBody.addEvent('click',this.BodyClick.bind(this));   
                var _TIfarme=E$(_Name);_TIfarme&&(_TIfarme.style.height=((_SWeek+_NDays+_EDayCount)>35?154:135)+'px');//据内容改变列表高度
		        _TIfarme=null;         
			    _TDate=null;	
			    _CDate=null;
			    _CBody=null;	    
			}
		    _CIYear=null;
		    _CIMonth=null;
		    _TCalendar=null;
		}
		///
		//滚轮、控制按钮修改当前日期
		///
		this.ChangeValue=function(evt,value){
            var _value=(evt.wheelDelta||value);            
            var _Name=this.Name;
            var _Ope=FEEG$(_Name,evt);
            var _TCalendar=FE$(_Name,_Name);
            var _CIYear=FE$(_Name,this.NM_IY);
            var _CIMonth=FE$(_Name,this.NM_IM);
            var _AYear=0;//追加年份
            var _CDate=this.CDate;//getCDate(_TCalendar.getAttribute('CDate'));//取出当前月日并写入控件
            if(evt.type!='change'){_year=_CDate.getYear();_month=_CDate.getMonth();}else{_year=getYear(parseInt(_CIYear.value));_month=parseInt(_CIMonth.value)-1;}
            if(_Ope.id.indexOf('_IMonth')!=-1){//则用操作控件中都包括特点字符的共性来区别操作                
                if(_value){if(_value>= 120){_month++;}else if (_value<= -120){_month--;}};
                if(_month>11){_month=0;_AYear=1;}else if(_month<0){_month=11;_AYear=-1;}
                _year+=_AYear;
                this.GenerateBody(_Name,_year,_month);//重新生成日期
            }           
            if(_Ope.id.indexOf('_IYear')!=-1){                	                                
                if(_value){if (_value>= 120){_year++;}else if (_value<= -120){_year--;}};
                var _Tyear=getYear(_year,1);//变为正常格式
                (_Tyear<1900)&&(_Tyear=1900);
                (_Tyear>3000)&&(_Tyear=3000);
                _year=getYear(_Tyear);//还原系统格式
                this.GenerateBody(_Name,_year,-1);//重新生成日期
            }            
            _Ope=null;   
            _CIYear=null;
		    _CIMonth=null;
		    FEEC$(_Name,evt);//取消滚动事件
        }
        ///
        //当鼠标滑过日历盘时
        ///
        this.Emousover=function(evt)
        {
            window.clearTimeout(Calendar.Timer);
        }
        ///
        //当鼠标离开日历盘时
        ///
        this.Emousout=function(evt)
        {
            window.clearTimeout(Calendar.Timer);
            var _Reg=new RegExp(this.NM_BM_P+'|'+this.NM_BM_N+'|'+this.NM_IY+'|'+this.NM_IM);
            var _Aid=document.activeElement.id;
            if(_Aid!=this.ReObjId&&_Aid!=this.Name&&!_Reg.test(_Aid)){Calendar.Timer=window.setTimeout('Calendar.Close("'+this.Name+'")', this.OutTimer);}            
        }
        ///
        //关闭日历
        ///
        this.Eclose=function()
        {
            Calendar.Close(this.Name);
        }
        
		///
		//绑定操作按钮事件，包括单击、滚动修改操作区时日期的向前向后
		///
		this.BindOpEvent=function(){
		    var _CIFarme=EBM$(this.Name);
		    var _Reobj=EBM$(this.ReObjId);
		    var _CP=FEBM$(this.Name,this.NM_BM_P);
		    var _CN=FEBM$(this.Name,this.NM_BM_N);		    
		    var _CIYear=FEBM$(this.Name,this.NM_IY);
		    var _CIMonth=FEBM$(this.Name,this.NM_IM);
	        _CP&&_CP.addEvent('click',this.PClick.bind(this));
	        _CP&&_CN.addEvent('click',this.NClick.bind(this));
	        if(_CIFarme){_CIFarme.addEvent('mouseover',this.Emousover.bind(this));_CIFarme.addEvent('mouseout',this.Emousout.bind(this));}
	        if(_Reobj){_Reobj.addEvent('blur',this.Emousout.bind(this))}
	        if(_CIYear)
	        {
	            _CIYear.addEvent('mousewheel',this.ChangeValue.bind(this));
	            _CIYear.addEvent('keydown',this.CheckValue.bind(this));
	            _CIYear.addEvent('change',this.ChangeValue.bind(this));
	        }
	        if(_CIMonth)
	        {
	            _CIMonth.addEvent('mousewheel',this.ChangeValue.bind(this));
	            _CIMonth.addEvent('keydown',this.CheckValue.bind(this));
	            _CIMonth.addEvent('change',this.ChangeValue.bind(this));
	        }
		    _CP=null;
		    _CN=null;
		    _CIYear=null;
		    _CIMonth=null;
		}	
		///
		//单击日期后的操作
		///
		this.BodyClick=function(evt){            
            var _Name=this.Name;
            var _Tobj=FEEG$(_Name,evt);//得到事件触发对象
            var _CIYear=FE$(_Name,this.NM_IY); 
            var _CIMonth=FE$(_Name,this.NM_IM);                        
            var _Ty=getYear(parseInt(_CIYear.value));
            var _Tm=parseInt(_CIMonth.value)-1;
            var _CToDay=parseInt(_Tobj.innerHTML);//当前选择日
            var _TCDate=getDate();//系统日期，不包含时间
            var _TSDate=new Date(_Ty,_Tm,_CToDay);//面板日期           
            if(_CToDay&&!(_TSDate<_TCDate&&this.BHistory))
            {
                if(this.CallBack){this.CallBack(getYear(_Ty,1),_Tm+1,_CToDay);}
                Calendar.Close(_Name);                     
            }
            _Tobj=null;
            _TCDate=null;
            _TSDate=null;
            _CIYear=null;
	        _CIMonth=null;
        }
        ///
        //单击日期后退
        ///
		this.PClick=function(evt){
		    this.ChangeValue(evt,-120);//调用方法本为滚轮设计，这里模拟滚轮共用方法，模拟向前
	        FEEC$(this.Name,evt,false);
		}
		///
		//单击日期前进
		///
		this.NClick=function(evt){
	        this.ChangeValue(evt,120);//模拟向后
            FEEC$(this.Name,evt,false);
		}
		///检查录入，非数字字符则放弃
		this.CheckValue=function(evt){
            var _InputNum=evt.keyCode;
            var _Value=String.fromCharCode?String.fromCharCode(_InputNum):"";                
            if(!_Value.match(/[0-9]/))
            {
                _InputNum!=8&&_InputNum!=46&&FEEC$(this.Name,evt,false);
            }		    
		}

		///得到名称
		function getName(e){
		    var _id='';
		    if(e&&typeof(e) == 'object')
		    {
		    	_id=e.id;
		        if(!_id)
		        {
		            _id=getName(e.parentElement||e.parentNode);
		        }
		        _id.indexOf('_')!=-1&&(_id=_id.substr(0,_id.indexOf('_')));		        	        
		    }
		    return _id;
		}
		///
		//每月天数计数
		///
		function monthDayCount(_year,_month){			
		    var monthDays =[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
		    _year=getYear(_year,1);//变以正常格式求闰年
			if (((_year % 4 == 0) && (_year % 100 != 0)) || (_year % 400 == 0))
			{//得到闰年二月的天数
				monthDays[1] = 29;
			}
			if(typeof(_month) == 'number'&&_month>=0&&_month<13)
			{
				return monthDays[_month];
			}
			else
			{
				return 0;
			}
		}

		///
		//得到星期
		///
		function getWeek(_year,_month,_day){
		    var Tdate=new Date(getYear(_year,1),_month,(_day?_day:1));//
		    return Tdate.getDay();
		}
		///
		//得到系统年,T为真时返回正常格式
		///
		function getYear(_y,_t){
		   var Tdate=new Date();
		    if(Tdate.getYear()>999||_t)
		    {//如果系统日期基于1900		        
		        _y=(_y>999?_y:_y +1900);//ie
		    }
		    else
		    {
		        _y=(_y>999?_y-1900:_y);//ff
		    }
		   return _y;
		}
		

		///得到统一的日期,无时间
        function getDate(_y,_m,_d){
          var Tdate=new Date();
          if(_y&&Tdate.getYear()>999){
            //如果系统日期基于1900
            _y=(_y>999?_y:_y+1900);
            //ie
          }else {
            _y=(_y>999?_y-1900:_y);
            //ff
          }
          if(_y&&_m&&_d){
            return new Date(_y,_m,_d);
          }else {
            if(_y&&_m){
              return new Date(_y,_m);
            }else {
              return new Date(Tdate.getYear(),Tdate.getMonth(),Tdate.getDate());
            }
          }
        }       		
		///
		//关闭
		///
		Calendar.Close=function(_Name){
            var _FCaendar=EBM$(_Name);
		    _FCaendar.style.display='none';		  
		    _FCaendar=null; 
		    if(Br$('ie')){CollectGarbage(); }
        }
		///
		//从字符中分析日期
		///
		 Calendar.getCDate=function(_sdate){
		    var _Reg=/\d{4}-(1[0-2]{1}|[1-9]{1})-(3[0-1]{1}|[1-2]{1}[0-9]{1}|[1-9]{1})/i;
		    if(_sdate&&_Reg.test(_sdate)){var _Ds=_sdate.split('-');return new Date(getYear(parseInt(_Ds[0]),1),parseInt(_Ds[1])-1,parseInt(_Ds[2]));}
		    return new Date();
		}

	}	 
	///日历类的静态方法，如果页面中同时只出现一个日历可以用此方法
    Calendar.Show=function(_ReObj,_CallBack){
        var _Name='CalendarDt';
        var _Loc=ELC$(_ReObj);
        _Loc[1]+=_ReObj.offsetHeight;    
        var Tc=new Calendar();
        Tc.Name=_Name;
        Tc.Left=_Loc[0];
        Tc.Top=_Loc[1];
        Tc.ReObjId=_ReObj.id;
        Tc.BHistory=(arguments[2]||false);
        Tc.CallBack=function(y,m,d){
            _ReObj.value=y+'-'+m+'-'+d;
            _CallBack&&_CallBack(y,m,d);//如果调用SHOW方法的时间传递了回调方法则执行

        }
        var _SDate=Calendar.getCDate((arguments[3]||_ReObj.value));
        Tc.Create(_SDate.getYear(),_SDate.getMonth());
        Tc=null;        
        return true;
    }
    ///联动方式显示日历
    Calendar.ShowByLinkage=function(_ReObj,_ReObj2Id){
      var _CallBack=function()
      {        
        var _ReObj2=E$(_ReObj2Id);
        _ReObj2&&_ReObj2.focus();
      }
      Calendar.Show(_ReObj,_CallBack);
      return true;
    }
    //日历盘展开函数
    //_ReObj：当前控件
    //_ReObj2Id:联动控件名
    //_ConList:对应年月日的三个控件名“年，月，日”
    //_IsNotHistory:是否不能选择历史日期
    Calendar.ShowCss=function(_ReObj,_ReObj2Id,_ConList,_IsNotHistory)
    {
         var Objs=_ConList.split(',');
         var CDate='';
         var _CallBack
            Objs[0]=E$(Objs[0]);
            Objs[1]=E$(Objs[1]);
            Objs[2]=E$(Objs[2]);
            
            Objs[0]&&Objs[1]&&Objs[2]&&(CDate=Objs[0].value+'-'+Objs[1].value+'-'+Objs[2].value);        
            var _CallBack=function(y,m,d){            
                _ReObj.value=y+'-'+m+'-'+d;
                Objs[0]&&(Objs[0].value=y);
                var ydiv=E$(Objs[0].id.replace("SearchType","Slected"));
                if(ydiv && ydiv.id!=Objs[0].id)
                    ydiv.innerHTML=y;
                Objs[1]&&(Objs[1].value=m);
                var mdiv=E$(Objs[1].id.replace("SearchType","Slected"));
                if(mdiv && mdiv.id!=Objs[1].id)
                    mdiv.innerHTML=m;
                Objs[2]&&(Objs[2].value=d);
                var ddiv=E$(Objs[2].id.replace("SearchType","Slected"));
                if(ddiv && ddiv.id!=Objs[2].id)
                    ddiv.innerHTML=d;
                var _ReObj2=E$(_ReObj2Id);
                if(_ReObj2)
                {
                   _ReObj2&&_ReObj2.focus();
                }
        }
        Calendar.Show(_ReObj,_CallBack,_IsNotHistory,CDate);
      return true;
    } 
    Calendar.ShowCss2=function(_ReObj,_ReObj2Id,_ConId,_IsNotHistory)
    {
        var Objs=E$(_ConId);
        var CDate=Objs.value;
        var _CallBack=function(y,m,d){
  
            _ReObj.value=y+'-'+m+'-'+d;
            Objs.value=_ReObj.value;
            var _ReObj2=E$(_ReObj2Id);
            if(_ReObj2)
            {
               _ReObj2&&_ReObj2.focus();
            }
        }
        Calendar.Show(_ReObj,_CallBack,_IsNotHistory,CDate);
        return true;
    }
    
    Calendar.ShowCss3=function(_ReObj,_ReObj2Id,_ConId,_Ladd1,_Ladd2,_IsNotHistory)//By LiuJiaLong
    {
        var Objs=E$(_ConId);
        var CDate=Objs.value;
        var _CallBack=function(y,m,d)
        {
            _ReObj.value=y+'-'+m+'-'+d;
                       
            Objs.value=_ReObj.value;
            var _ReObj2=E$(_ReObj2Id);
            if(_ReObj2)
            {
               _ReObj2&&_ReObj2.focus();
            }
            
            ///////////////////////LJL////////////////////////////           
            var exeFlag = document.getElementById(_Ladd2).value;        
            if(exeFlag!=null)
            {
                CheckGvDate(_ConId,_Ladd1,_Ladd2);    
            }
            ///////////////////////////////////////////////////
            
         }
        Calendar.Show(_ReObj,_CallBack,_IsNotHistory,CDate);
               
        return true;
    }
    
    Calendar.ShowCss4=function(_ReObj,_ReObj2Id,_ConId,_Ladd1,_Ladd2,_IsNotHistory)//By LiuJiaLong
    {
        var Objs=E$(_ConId);
        var CDate=Objs.value;
        var _CallBack=function(y,m,d)
        {
            _ReObj.value=y+'-'+m+'-'+d;
                       
            Objs.value=_ReObj.value;
            var _ReObj2=E$(_ReObj2Id);
            if(_ReObj2)
            {
               _ReObj2&&_ReObj2.focus();
            }
            
            ///////////////////////LJL////////////////////////////           
            var exeFlag = document.getElementById(_Ladd2).value;        
            if(exeFlag!=null)
            {
                CheckGvDate(_Ladd1,_ConId,_Ladd2);    
            }
            ///////////////////////////////////////////////////
            
         }
        Calendar.Show(_ReObj,_CallBack,_IsNotHistory,CDate);
               
        return true;
    }
    
}


function CheckGvDate(StatDt,EddtDt,ExecBt)
{
    
    var  Stat = document.getElementById(StatDt).value;
    var  Eddt = document.getElementById(EddtDt).value;
    var  reg   = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;    
    var execBt =  document.getElementById(ExecBt);
 
    if(!reg.test(Stat))
    {
       alert("日期格式不正确！");
       return false;
    }
    else
    {
        var arrDt = new Date(Stat.replace('-','/'));
        var dptDt = new Date(Eddt.replace('-','/'));
        if (arrDt>dptDt)
        {
            document.getElementById(StatDt).value = document.getElementById(EddtDt).value;
            execBt.click();
            alert("离期不能小于来期-->");                             
            return true;
        }
        else
        {
            if(execBt!=null)
            {
                execBt.click();
            }          
            return true;
        }                             
    } 
        
}

