﻿
//日历
var date_start,date_end,g_object
var today = new Date();
var separator="-";
var inover=false;
var cele_date;
//mode :时间变换的类型0-年 1-月 2-直接选择月
function change_date(temp,mode)
{
	var t_month,t_year
	var cele_date_month = document.getElementById("cele_date_month");
	var cele_date_year = document.getElementById("cele_date_year");
    if (mode)
    {
        if(mode==1)
            t_month=parseInt(cele_date_month.value,10)+parseInt(temp,10);
        else
            t_month=parseInt(temp)
        if (t_month<cele_date_month.options[0].text)
        {
            cele_date_month.value=cele_date_month.options[cele_date_month.length-1].text;
            change_date(parseInt(cele_date_year.value,10)-1,0);
        
       }else{
            if (t_month>cele_date_month.options[cele_date_month.length-1].text)
            {
                cele_date_month.value=cele_date_month.options[0].text;
                change_date(parseInt(cele_date_year.value,10)+1,0);
           
            }            
            else
                {
                    cele_date_month.value=t_month;
                    set_cele_date(cele_date_year.value,cele_date_month.value,0);                
                }
        }       
    }else{
        t_year=parseInt(temp,10);
        
        if (t_year<cele_date_year.options[0].text)
        {
            cele_date_year.value=cele_date_year.options[0].text;
            set_cele_date(cele_date_year.value,1,0);                
        }else{
            if (parseInt(t_year,10)>parseInt(cele_date_year.options[cele_date_year.length-1].text,10)){
                cele_date_year.value=cele_date_year.options[cele_date_year.length-1].text;
                set_cele_date(cele_date_year.value,12,0);                
                }            
            else
                {cele_date_year.value=t_year;
                 set_cele_date(cele_date_year.value,cele_date_month.value,0);                
                }
        }
    }
 
    /*********2002-02-01 MODIFY BY WING **************/
    cele_date.focus();
    /****************MODIFY END***********************/
}

//初始化日历
function init(d_start,d_end)
{
     var temp_str;
     var i=0
     var j=0
     date_start=new Date(1900,1,1)
     date_end=new Date(2010,12,30)
     document.writeln("<div name=\"cele_date\" id=\"cele_date\"   style=\"LEFT: 69px; POSITION: absolute; TOP: 159px;Z-INDEX:99;display:none;font-family:宋体;\" onClick=\"event.cancelBubble=true;\" onBlur=\"hilayer()\" onMouseout=\"lostlayerfocus()\">-</div>");
     cele_date = document.getElementById("cele_date");
     temp_str="<table border=\"1\" bgcolor=\"#DDDDDD\" bordercolor=\"white\"><tr><td colspan=7 onmouseover=\"overcolor(this)\">";
     temp_str+="<input type=\"Button\" value=\"<<\" onclick=\"change_date(-1,1)\" onmouseover=\"getlayerfocus()\" style=\"color: #000099; background-color: #BFBFBF; cursor: hand\">-";

     temp_str+=""
     temp_str+="<select name=\"cele_date_year\" id=\"cele_date_year\" language=\"javascript\" onchange=\"change_date(this.value,0)\" onmouseover=\"getlayerfocus()\" onblur=\"getlayerfocus()\" style=\"font-size: 9pt; border: 1px #666666 outset; background-color: #F4F8FB\">"

     for (i=1900;i<=2020;i++)
     {
     	temp_str+="<OPTION value=\""+i.toString()+"\">"+i.toString()+"</OPTION>";
     }
     temp_str+="</select>-";
     temp_str+=""
     temp_str+="<select name=\"cele_date_month\" id=\"cele_date_month\" language=\"javascript\" onchange=\"change_date(this.value,2)\" onmouseover=\"getlayerfocus()\" onblur=\"getlayerfocus()\" style=\"font-size: 9pt; border: 1px #666666 outset; background-color: #F4F8FB\">"

     for (i=1;i<=12;i++)
     {
     	temp_str+="<OPTION value=\""+i.toString()+"\">"+i.toString()+"</OPTION>";
     }
     temp_str+="</select>-";
     temp_str+=""
     temp_str+="<input type=\"Button\" value=\">>\" onclick=\"change_date(1,1)\" onmouseover=\"getlayerfocus()\"  style=\"color: #000099; background-color: #BFBFBF; cursor: hand\">";

     temp_str+="</td></tr><tr><td onmouseover=\"overcolor(this)\">"
     temp_str+="<font color=red>日</font></td><td>";temp_str+="一</td><td>"; temp_str+="二</td><td>"; temp_str+="三</td><td>"
     temp_str+="四</td><td>";temp_str+="五</td><td>"; temp_str+="六</td></tr>";
     for (i=1 ;i<=6 ;i++)
     {
     temp_str+="<tr>";
        for(j=1;j<=7;j++){
            temp_str+="<td name=\"c"+i+"_"+j+"\" id=\"c"+i+"_"+j+"\" style=\"CURSOR: hand\" style=\"COLOR:#000000\" language=\"javascript\" onmouseover=\"overcolor(this)\" onmouseout=\"outcolor(this)\" onclick=\"td_click(this)\">X</td>"
            }
     temp_str+="</tr>"        
     }
     temp_str+="</td></tr></table>";
     cele_date.innerHTML=temp_str;

}

function set_cele_date(year,month,day)
{

   var i,j,p,k,d
   var nd = new Date(year,month-1,1);
   event.cancelBubble=true;
   var cele_date_month = document.getElementById("cele_date_month");
   var cele_date_year = document.getElementById("cele_date_year");
   cele_date_year.value = (year.toString().length <= 2) ? (1900 + year) : year;
   cele_date_month.value = month;
   k=nd.getDay()-1
   if(day > 0)
   {
        d = day;
   }
   else
   {
        d = today.getDate();
   }

   var temp;
   for (i=1;i<=6;i++)
      for(j=1;j<=7;j++)
      {
        document.getElementById("c"+i+"_"+j).innerHTML = "";
        document.getElementById("c"+i+"_"+j).bgColor = "#DDDDDD";
        document.getElementById("c"+i+"_"+j).style.cursor = "hand";
      }
   while(month-1==nd.getMonth())
    { j=(nd.getDay() +1);
      p=parseInt((nd.getDate()+k) / 7)+1;
      document.getElementById("c"+p+"_"+j).innerHTML = nd.getDate();        
      if (nd.getDate()==d)
      {
      	 document.getElementById("c"+p+"_"+j).bgColor="#EFFB64";
      }
      if (nd>date_end || nd<date_start)
      {
          document.getElementById("c"+p+"_"+j).bgColor="#FF9999";
          document.getElementById("c"+p+"_"+j).style.cursor="text";
      }
      nd=new Date(nd.valueOf() + 86400000)
    }
}

function getAbsoluteOffsetTop(obj) {
    if(document.all)
    {
    return obj.offsetTop;
    }
    else{
        var y = 0;
        while (obj = obj.offsetParent) y += obj.offsetTop;
        return y+"px";
    }
}
 
//s_object：点击的对象；d_start-d_end有效的时间区段；需要存放值的控件；
function show_cele_date(eP,d_start,d_end,t_object)
{
        cele_date.style.display="";
        cele_date.style.zIndex=99
        var s,cur_d
        var eT = getAbsoluteOffsetTop(eP);  
        var eH = eP.offsetHeight+eT;  
        var dH = cele_date.style.pixelHeight;  
        var sT = document.body.scrollTop; 
        var sL = document.body.scrollLeft; 
        event.cancelBubble=true;
        cele_date.style.posLeft = event.clientX-event.offsetX+sL-5;  
        cele_date.style.posTop = event.clientY-event.offsetY+eH+sT-5;
        
        if (cele_date.style.posLeft+cele_date.clientWidth>document.body.clientWidth) cele_date.style.posLeft+=eP.offsetWidth-cele_date.clientWidth;
        if (d_start!=""){
            if (d_start=="today"){
                date_start=new Date(today.getYear(),today.getMonth(),today.getDate());
            }else{
                s=d_start.split(separator);
                date_start=new Date(s[0],s[1]-1,s[2]);
            }
        }else{
            date_start=new Date(1900,1,1);
        }

       
    
        if (d_end!=""){
            s=d_end.split(separator);
            date_end=new Date(s[0],s[1]-1,s[2]);
        }else{
            date_end=new Date(3000,1,1);
        }
        g_object=t_object
        if(t_object.value != "")
        {
            s = t_object.value.split(separator);
            cur_d = new Date(s[0],s[1]-1,s[2]);
        }
        else
        {
            cur_d = new Date();
        }
        set_cele_date(cur_d.getYear(),cur_d.getMonth()+1,cur_d.getDate());
         
        cele_date.style.display="block";

        cele_date.focus();

}
function td_click(t_object)
{
    var t_d
    var cele_date_month = document.getElementById("cele_date_month");
	var cele_date_year = document.getElementById("cele_date_year");
    if (parseInt(t_object.innerHTML,10)>=1 && parseInt(t_object.innerHTML,10)<=31) 
    {
        t_d = new Date(cele_date_year.value,cele_date_month.value-1,t_object.innerHTML)
        if (t_d<=date_end && t_d>=date_start)
        { 
            var year = cele_date_year.value;
            var month = cele_date_month.value;
            var day = t_object.innerHTML;
            if (parseInt(month)<10) month = "0" + month;
            if (parseInt(day)<10) day = "0" + day;

            g_object.value=year+separator+month+separator+day;
            cele_date.style.display="none";
        };
    }
}
function h_cele_date()
{
    cele_date.style.display="none";
}

function overcolor(obj)
{
  if (obj.style.cursor=="hand") obj.style.color = "#FFFFFF";

  inover=true;
  cele_date.focus();

}

function outcolor(obj)
{
	obj.style.color = "#000000";
	inover=false;

}

function getNow(o){
    var Stamp=new Date();
    var year = Stamp.getYear();
    var month = Stamp.getMonth()+1;
    var day = Stamp.getDate();
    if(month<10){
	month="0"+month;
    }
    if(day<10){
	day="0"+day;
    }
    o.value=year+separator+month+separator+day;
}

function hilayer()
{
	if (inover==false)
	{
		var lay=document.all.cele_date;
		lay.style.display="none";
	}
}
function getlayerfocus()
{
	inover=true;
}
function lostlayerfocus()
{
	inover=false;
}

init();
//日历结束



/*重写firefox的event事件*/ 
function __firefox(){ 
    HTMLElement.prototype.__defineGetter__("runtimeStyle", __element_style); 
    window.constructor.prototype.__defineGetter__("event", __window_event); 
    Event.prototype.__defineGetter__("srcElement", __event_srcElement); 
    } 
    function __element_style(){ 
    return this.style; 
    } 
    function __window_event(){ 
    return __window_event_constructor(); 
    } 
    function __event_srcElement(){ 
    return this.target; 
    } 
    function __window_event_constructor(){ 
    if(document.all){ 
    return window.event; 
    } 
    var _caller = __window_event_constructor.caller; 
    while(_caller!=null){ 
    var _argument = _caller.arguments[0]; 
    if(_argument){ 
    var _temp = _argument.constructor; 
    if(_temp.toString().indexOf("Event")!=-1){ 
    return _argument; 
    } 
    } 
    _caller = _caller.caller; 
    } 
    return null; 
    } 
    if(window.addEventListener){ 
    __firefox(); 
} 
/*end firefox*/ 
