scheduler.templates.calendar_month=scheduler.date.date_to_str("%F %Y");scheduler.templates.calendar_scale_date=scheduler.date.date_to_str("%D");scheduler.templates.calendar_date=scheduler.date.date_to_str("%d");scheduler.renderCalendar=function(F){C=C||(new Date());var L=F.container;var J=F.position;var C=F.date;if(typeof L=="string"){L=document.getElementById(L)}if(typeof C=="string"){C=this.templates.api_date(C)}if(typeof J=="string"){J=document.getElementById(J)}if(J&&(typeof J.left=="undefined")){var G=getOffset(J);J={top:G.top+J.offsetHeight,left:G.left}}if(!L){L=scheduler._get_def_cont(J)}var A=this._render_calendar(L,C,F);var B=scheduler.date.month_start(C);var D=scheduler.date.add(B,1,"month");var K=this.getEvents(B,D);for(var E=0;E<K.length;E++){var I=K[E];var H=I.start_date;if(H.valueOf()<B.valueOf()){H=B}while(H<I.end_date){this.markCalendar(A,H,"dhx_year_event");H=this.date.add(H,1,"day");if(H.valueOf()>=D.valueOf()){break}}}A.onclick=function(O){O=O||event;var P=O.target||O.srcElement;if(P.className.indexOf("dhx_month_head")!=-1){var N=P.parentNode.className;if(N!="dhx_after"&&N!="dhx_before"){var M=scheduler.templates.xml_date(this.getAttribute("date"));M.setDate(parseInt(P.innerHTML,10));scheduler.unmarkCalendar(this);scheduler.markCalendar(this,M,"dhx_calendar_click");this._last_date=M;if(F.handler){F.handler.call(scheduler,M,this)}}}};return A};scheduler._get_def_cont=function(A){if(!this._def_count){this._def_count=document.createElement("DIV");this._def_count.style.cssText="position:absolute;z-index:10100;width:251px; height:175px;";this._def_count.onclick=function(B){(B||event).cancelBubble=true};document.body.appendChild(this._def_count)}this._def_count.style.left=A.left+"px";this._def_count.style.top=A.top+"px";this._def_count._created=new Date();return this._def_count};scheduler._locateCalendar=function(C,A){var B=C.childNodes[2].childNodes[0];if(typeof A=="string"){A=scheduler.templates.api_date(A)}var D=C.week_start+A.getDate()-1;return B.rows[Math.floor(D/7)].cells[D%7].firstChild};scheduler.markCalendar=function(C,A,B){this._locateCalendar(C,A).className+=" "+B};scheduler.unmarkCalendar=function(D,A,B){A=A||D._last_date;B=B||"dhx_calendar_click";if(!A){return }var C=this._locateCalendar(D,A);C.className=(C.className||"").replace(RegExp(B,"g"))};scheduler._week_template=function(B){var F=(B||250);var E=0;var C=document.createElement("div");var D=this.date.week_start(new Date());for(var A=0;A<7;A++){this._cols[A]=Math.floor(F/(7-A));this._render_x_header(A,E,D,C);D=this.date.add(D,1,"day");F-=this._cols[A];E+=this._cols[A]}C.lastChild.className+=" dhx_scale_bar_last";return C};scheduler._render_calendar=function(F,A,E){var B=scheduler.templates;var J=this._cols;this._cols=[];var R=this._mode;this._mode="calendar";var Q=this._colsS;this._colsS={height:0};var P=new Date(this._min_date);var N=new Date(this._max_date);var M=new Date(scheduler._date);var K=B.month_day;B.month_day=B.calendar_date;A=this.date.month_start(A);var D=this._week_template(F.offsetWidth-1);var L=document.createElement("DIV");L.className="dhx_cal_container dhx_mini_calendar";L.setAttribute("date",this.templates.xml_format(A));L.innerHTML="<div class='dhx_year_month'></div><div class='dhx_year_week'>"+D.innerHTML+"</div><div class='dhx_year_body'></div>";L.childNodes[0].innerHTML=this.templates.calendar_month(A);if(E.navigation){var C=document.createElement("DIV");C.className="dhx_cal_prev_button";C.style.cssText="left:1px;top:2px;position:absolute;";C.innerHTML="&nbsp;";L.firstChild.appendChild(C);C.onclick=function(){E.date=scheduler.date.add(L._date,-1,"month");scheduler.destroyCalendar(L);scheduler.renderCalendar(E)};C=document.createElement("DIV");C.className="dhx_cal_next_button";C.style.cssText="left:auto; right:1px;top:2px;position:absolute;";C.innerHTML="&nbsp;";L.firstChild.appendChild(C);C.onclick=function(){E.date=scheduler.date.add(L._date,1,"month");scheduler.destroyCalendar(L);scheduler.renderCalendar(E)};L._date=new Date(A)}L.week_start=(A.getDay()-(this.config.start_on_monday?1:0)+7)%7;var O=this.date.week_start(A);this._reset_month_scale(L.childNodes[2],A,O);var H=L.childNodes[2].firstChild.rows;for(var I=H.length;I<6;I++){H[0].parentNode.appendChild(H[0].cloneNode(true));for(var G=0;G<H[I].childNodes.length;G++){H[I].childNodes[G].className="dhx_after"}}F.appendChild(L);this._cols=J;this._mode=R;this._colsS=Q;this._min_date=P;this._max_date=N;scheduler._date=M;B.month_day=K;return L};scheduler.destroyCalendar=function(B,A){if(!B&&this._def_count&&this._def_count.firstChild){if(A||(new Date()).valueOf()-this._def_count._created.valueOf()>500){B=this._def_count.firstChild}}if(!B){return }B.onclick=null;B.innerHTML="";if(B.parentNode){B.parentNode.removeChild(B)}if(this._def_count){this._def_count.style.top="-1000px"}};scheduler.isCalendarVisible=function(){if(this._def_count&&parseInt(this._def_count.style.top)>0){return this._def_count}return false};scheduler.attachEvent("onTemplatesReady",function(){dhtmlxEvent(document.body,"click",function(){scheduler.destroyCalendar()})});scheduler.templates.calendar_time=scheduler.date.date_to_str("%d-%m-%Y");scheduler.form_blocks.calendar_time={render:function(){var C="<input class='dhx_readonly' type='text' readonly='true'>";var A=scheduler.config;var D=this.date.date_part(new Date());if(A.first_hour){D.setHours(A.first_hour)}C+=" <select>";for(var B=60*A.first_hour;B<60*A.last_hour;B+=this.config.time_step*1){var E=this.templates.time_picker(D);C+="<option value='"+B+"'>"+E+"</option>";D=this.date.add(D,this.config.time_step,"minute")}C+="</select>";return"<div style='height:30px; padding-top:0px; font-size:inherit;' class='dhx_cal_lsection dhx_section_time'>"+C+"<span style='font-weight:normal; font-size:10pt;'> &nbsp;&ndash;&nbsp; </span>"+C+"</div>"},_init_once:function(B,A){B.onclick=function(){scheduler.destroyCalendar(null,true);scheduler.renderCalendar({position:B,date:new Date(this._date),navigation:true,handler:function(C){B.value=scheduler.templates.calendar_time(C);B._date=new Date(C);scheduler.destroyCalendar()}})}},set_value:function(D,E,C){function A(G,F){scheduler.form_blocks.calendar_time._init_once(G,F);G.value=scheduler.templates.calendar_time(F);G._date=scheduler.date.date_part(new Date(F))}var B=D.getElementsByTagName("input");A(B[0],C.start_date);A(B[1],C.end_date);scheduler.form_blocks.calendar_time._init_once=function(){};var B=D.getElementsByTagName("select");B[0].value=C.start_date.getHours()*60+C.start_date.getMinutes();B[1].value=C.end_date.getHours()*60+C.end_date.getMinutes()},get_value:function(D,C){var A=D.getElementsByTagName("input");var B=D.getElementsByTagName("select");C.start_date=scheduler.date.add(A[0]._date,B[0].value,"minute");C.end_date=scheduler.date.add(A[1]._date,B[1].value,"minute");if(C.end_date<=C.start_date){C.end_date=scheduler.date.add(C.start_date,scheduler.config.time_step,"minute")}},focus:function(A){}};