function CalendarEvent(params)
{ this.Params=params;
  this.HTMLElem=null;
  this.isSetDate=false;

  this.init=function()
  { var HTMLElem;
    if(typeof(this.Params)!='object')
      this.Params=new Object;
    if(!this.Params.id)
      return;
    if(!this.Params.AddParams || typeof(this.Params.AddParams)!='object')
      this.Params.AddParams=new Object;
    this.HTMLElem=document.getElementById(this.Params.id);
    if(!this.Params.sect) this.Params.sect=null;
    if(!this.Params.iface) this.Params.iface=null;
    if(!this.Params.cmd) this.Params.cmd=null;
    if(!this.Params.date) this.Params.date=0; else this.isSetDate=true;
    if(!this.Params.date_format) this.Params.date_format="dd.mm.yy";
    if(!this.Params.success || typeof(this.Params.success)!='function') this.Params.success=function(dateText){};
    if(this.Params.selectCmd)
    { if(typeof(this.Params.selectCmd)!='object')
        this.Params.selectCmd=new Object;
      if(!this.Params.selectCmd.sect)this.Params.selectCmd.sect=null;
      if(!this.Params.selectCmd.iface)this.Params.selectCmd.iface=null;
      if(!this.Params.selectCmd.cmd)this.Params.selectCmd.cmd=null;
      if(!this.Params.selectCmd.name_date_param)this.Params.selectCmd.name_date_param='date';
      if(!this.Params.selectCmd.AddParams || typeof(this.Params.selectCmd.AddParams)!='object')this.Params.selectCmd.AddPArams=new Object();
    }
    else
      this.Params.selectCmd=null;
    if(!this.HTMLElem)
      return;
    
    this.HTMLElem.Days=null;
    this.HTMLElem.CurMonth=null;
    this.HTMLElem.CurYear=null;
    this.HTMLElem.Params=this.Params;
    
    this.HTMLElem.LoadMonthInfo=function(year,month)
    { var res,i,url,HTMLElem,elem;
      var Query=new SimpleQuery(null,null,this.Params.sect,this.Params.iface,this.Params.cmd);
      Query.SetParam("year",year);
      Query.SetParam("month",month);
      for(i in this.Params.AddParams)
      { Query.SetParam(i,this.Params.AddParams[i]);
      }
      url=Query.GetLocation();
      this.Days=new Array(31);
      this.CurMonth=month;
      this.CurYear=year;
      for(i=0;i<31;i++)
      { elem=new Object;
        elem.show=false;
        elem.tooltip="";
        this.Days[i]=elem;
      }
      HTMLElem=this;
      $.ajax({url: url,
              async: false,
              dataType: 'json',
              data: null,
              success: function(data)
                        { var i,cnt,elem,date;
                          cnt=data.length;
                          for(i=0;i<cnt;i++)
                          { elem=data[i];
                            date=$.datepicker.parseDate(HTMLElem.Params.date_format,elem.date);
                            HTMLElem.Days[date.getDate()-1].show=true;
                            HTMLElem.Days[date.getDate()-1].tooltip=elem.tooltip;
                          }
                        }
              });
    };
    
    HTMLElem=this.HTMLElem;
    $(function() {$(HTMLElem).datepicker({  defaultDate: HTMLElem.Params.date,
                                            dateFormat: HTMLElem.Params.date_format,
                                            beforeShowDay: function(date)
                                                          { var prevFunc;
                                                            var retVal=new Array(3);
                                                            var day=date.getDate();
                                                            var month=date.getMonth()+1;
                                                            var year=date.getFullYear();
                                                           // $retVal=prevFunc(date);
                                                            if(!this.Days)
                                                            { var selDate=$.datepicker.parseDate(this.Params.date_format,this.value);
                                                              var cur_month=selDate.getMonth()+1;
                                                              var cur_year=selDate.getFullYear();
                                                              this.LoadMonthInfo(cur_year,cur_month);
                                                            }
                                                            if(year==this.CurYear && month==this.CurMonth)
                                                            { retVal[0]=this.Days[day-1].show;
                                                              retVal[1]='';
                                                              retVal[2]=this.Days[day-1].tooltip;
                                                            }
                                                            else
                                                            { retVal[0]=false;
                                                              retVal[1]='';
                                                              retVal[2]='Новостей нет';
                                                            }
                                                            return(retVal);
                                                          },
                                            onChangeMonthYear: function(year, month, inst) 
                                                             { this.LoadMonthInfo(year,month);
                                                             },
                                            
                                            onSelect: function(dateText, inst) 
                                                             { this.Params.success(dateText);
                                                               if(this.Params.selectCmd!=null)
                                                               { var i;
                                                                 var Query=new SimpleQuery(null,null,this.Params.selectCmd.sect,this.Params.selectCmd.iface,this.Params.selectCmd.cmd);
                                                                 Query.SetParam(this.Params.selectCmd.name_date_param,dateText);
                                                                 for(i in this.Params.selectCmd.AddParams)
                                                                 { if(i)
                                                                     Query.SetParam(i,this.Params.selectCmd.AddParams[i]);
                                                                 }
                                                                 Query.Get();
                                                               }
                                                             }
                        });});
    if(this.isSetDate)
    { $(function() {var btn,div,span,vwidth,e;
                    div=document.createElement('div');
                    e=HTMLElem.firstChild;
                    vwidth=$(e).outerWidth()-3;
                    $(div).addClass('ui-datepicker-inline');
                    $(div).addClass('ui-widget');
                    $(div).addClass('ui-widget-content');
                    $(div).addClass('ui-corner-all');
                    $(div).css({"text-align":"right",width: vwidth,"margin": "0px 3px 0px 3px",padding: "3px 3px 3px 0px", background: "#DCE6F4"});
                    span=document.createElement('span');
                    $(span).attr("title","Поточна вибрана дата");
                    span.appendChild(document.createTextNode(HTMLElem.value));
                    $(span).css({"margin-right": "10px", "font-size": "0.9em", background: "#F4F1C1", padding: "3px 5px 3px 5px", color: "#084065", "font-weight": "bold"});
                    HTMLElem.btn=document.createElement('button');
                    HTMLElem.btn.appendChild(document.createTextNode('Сбросить'));
                    $(HTMLElem.btn).button();
                    $(HTMLElem.btn).click(function()
                                          { 
                                            if(HTMLElem.Params.selectCmd!=null)
                                                               { var i;
                                                                 var Query=new SimpleQuery(null,null,HTMLElem.Params.selectCmd.sect,HTMLElem.Params.selectCmd.iface,HTMLElem.Params.selectCmd.cmd);
                                                                 Query.SetParam(HTMLElem.Params.selectCmd.name_date_param,null);
                                                                 for(i in HTMLElem.Params.selectCmd.AddParams)
                                                                 { if(i)
                                                                     Query.SetParam(i,HTMLElem.Params.selectCmd.AddParams[i]);
                                                                 }
                                                                 Query.Get();
                                                               }
                                          });
                    div.appendChild(span);
                    div.appendChild(HTMLElem.btn);
                    HTMLElem.appendChild(div);
                   });
    }
    $(HTMLElem).css("margin-bottom","0px");
    
  };
  
  this.init();
}

