/* This software is allowed to use under GPL or you need to obtain Commercial or Enterise License to use it in non-GPL project. Please contact sales@dhtmlx.com for details */ scheduler._props = {}; scheduler.createUnitsView=function(name,property,list,size,step,skip_incorrect){ if (typeof name == "object"){ list = name.list; property = name.property; size = name.size||0; step = name.step||1; skip_incorrect = name.skip_incorrect; name = name.name; } scheduler._props[name]={map_to:property, options:list, step:step, position:0 }; if(size>scheduler._props[name].options.length){ scheduler._props[name]._original_size = size; size = 0; } scheduler._props[name].size = size; scheduler._props[name].skip_incorrect = skip_incorrect||false; scheduler.date[name+"_start"]= scheduler.date.day_start; scheduler.templates[name+"_date"] = function(date){ return scheduler.templates.day_date(date); }; scheduler.templates[name+"_scale_date"] = function(date){ var list = scheduler._props[name].options; if (!list.length) return ""; var index = (scheduler._props[name].position||0)+Math.floor((scheduler._correct_shift(date.valueOf(),1)-scheduler._min_date.valueOf())/(60*60*24*1000)); if (list[index].css) return ""+list[index].label+""; else return list[index].label; }; scheduler.date["add_"+name]=function(date,inc){ return scheduler.date.add(date,inc,"day"); }; scheduler.date["get_"+name+"_end"]=function(date){ return scheduler.date.add(date,scheduler._props[name].size||scheduler._props[name].options.length,"day"); }; scheduler.attachEvent("onOptionsLoad",function(){ var pr = scheduler._props[name]; var order = pr.order = {}; var list = pr.options; for(var i=0; i list.length) { pr._original_size = pr.size; pr.size = 0; } else pr.size = pr._original_size||pr.size; if (scheduler._date && scheduler._mode == name) scheduler.setCurrentView(scheduler._date, scheduler._mode); }); scheduler.callEvent("onOptionsLoad",[]); }; scheduler.scrollUnit=function(step){ var pr = scheduler._props[this._mode]; if (pr){ pr.position=Math.min(Math.max(0,pr.position+step),pr.options.length-pr.size); this.update_view(); } }; (function(){ var _removeIncorrectEvents = function(evs) { var pr = scheduler._props[scheduler._mode]; if(pr && pr.order && pr.skip_incorrect) { var correct_events = []; for(var i=0; i= pr.size+pr.position ) return false; } } return res; }; scheduler._reset_scale = function(){ var pr = scheduler._props[this._mode]; var ret = t.apply(this,arguments); if (pr){ this._max_date=this.date.add(this._min_date,1,"day"); var d = this._els["dhx_cal_data"][0].childNodes; for (var i=0; i < d.length; i++) d[i].className = d[i].className.replace("_now",""); //clear now class if (pr.size && pr.size < pr.options.length){ var h = this._els["dhx_cal_header"][0]; var arrow = document.createElement("DIV"); if (pr.position){ arrow.className = "dhx_cal_prev_button"; arrow.style.cssText="left:1px;top:2px;position:absolute;" arrow.innerHTML = " " h.firstChild.appendChild(arrow); arrow.onclick=function(){ scheduler.scrollUnit(pr.step*-1); } } if (pr.position+pr.sizepr.order[b[pr.map_to]]?1:-1; }); } else o.apply(this,arguments); }; scheduler.attachEvent("onEventAdded",function(id,ev){ if (this._loading) return true; for (var a in scheduler._props){ var pr = scheduler._props[a]; if (typeof ev[pr.map_to] == "undefined") ev[pr.map_to] = pr.options[0].key; } return true; }); scheduler.attachEvent("onEventCreated",function(id,n_ev){ var pr = scheduler._props[this._mode]; if (pr && n_ev){ var ev = this.getEvent(id); this._mouse_coords(n_ev); fix_und(pr,ev); this.event_updated(ev); } return true; }) })();