﻿Type.registerNamespace("Telerik.Web.UI.Scheduler.Rendering");
(function(){var d=60000,e=$telerik.$,b=Telerik.Web.UI,c=b.Scheduler,a=Telerik.Web.UI.Scheduler.Rendering;
a.RenderingManager=function(g,f){this._owner=g;
this._settings=f;
this._schedulerTzOffset=this._owner._timeZoneOffset;
this._isWCFService=false;
this._appointmentsLoaded=false;
this._resourcesLoaded=false;
};
a.RenderingManager.prototype={initialize:function(){this._webServiceLoader=new b.WebServiceLoader(this._settings);
this._webServiceLoader.add_loadingSuccess(Function.createDelegate(this,this._onRequestSuccess));
this._webServiceLoader.add_loadingError(Function.createDelegate(this,this._onRequestError));
this._isWCFService=this._settings.get_path().endsWith("svc");
if(this._settings.get_resourcesPopulated()){this._resourcesLoaded=true;
}this.loadAppointments();
this.loadResources();
this._owner.add_propertyChanged(Function.createDelegate(this,this._onSchedulerPropertyChanged));
},get_events:function(){if(!this._events){this._events=new Sys.EventHandlerList();
}return this._events;
},loadAppointments:function(f){var h=this._getSchedulerInfo(f);
if(!this._onAppointmentsPopulating(h)){return;
}var g={schedulerInfo:h};
this._webServiceLoader.loadData(g,"loadAppointments");
},deleteAppointment:function(j,g){var i=this._getSchedulerInfo();
var f={appointment:j,editingRecurringSeries:g,schedulerInfo:i};
var l=e.raiseCancellableControlEvent(this._owner,"AppointmentWebServiceDeleting",f);
if(l){return;
}if(!this._onAppointmentsPopulating(i)){return;
}var h={schedulerInfo:i,appointmentData:this._storeAppointment(j),deleteSeries:g};
var k=this._settings.get_deleteAppointmentMethod();
this._webServiceLoader.invokeMethod(k,h,"deleteAppointment");
},insertAppointment:function(g){var i=this._getSchedulerInfo();
var j={appointment:g,schedulerInfo:i};
var f=e.raiseCancellableControlEvent(this._owner,"AppointmentWebServiceInserting",j);
if(f){return;
}if(!this._onAppointmentsPopulating(i)){return;
}var h={schedulerInfo:i,appointmentData:this._storeAppointment(g)};
var k=this._settings.get_insertAppointmentMethod();
this._webServiceLoader.invokeMethod(k,h,"insertAppointment");
g.set_allowDelete(false);
g.set_allowEdit(false);
},updateAppointment:function(f){if(f.__newRecurrenceException){this._createRecurrenceException(f);
}else{this._executeUpdate(f);
}},loadResources:function(){if(this._settings.get_resourcesPopulated()){return;
}var g=this._getSchedulerInfo();
var f=new b.SchedulerWebServiceEventArgs(g);
this._owner._raiseResourcesPopulating(f);
if(f.get_cancel()){return;
}this._owner.get_resources().clear();
var i={schedulerInfo:g};
var h=this._settings.get_getResourcesMethod();
this._webServiceLoader.invokeMethod(h,i,"loadResources");
},removeRecurrenceExceptions:function(k){var h=this._getSchedulerInfo();
var j={appointment:k,schedulerInfo:h};
var g=e.raiseCancellableControlEvent(this._owner,"RecurrenceExceptionsRemoving",j);
if(g){return;
}if(!this._onAppointmentsPopulating(h)){return;
}var f={schedulerInfo:h,masterAppointmentData:this._storeAppointment(k)};
var i=this._settings.get_removeRecurrenceExceptionsMethod();
this._webServiceLoader.invokeMethod(i,f,"removeRecurrenceExceptions");
},add_appointmentsReceived:function(f){this.get_events().addHandler("appointmentsReceived",f);
},add_appointmentsPopulated:function(f){this.get_events().addHandler("appointmentsPopulated",f);
},_getSchedulerInfo:function(g){var f;
if(g){f=this._owner._newActiveModel;
}else{f=this._owner.get_activeModel();
}return{ViewStart:this._toServerDate(f.get_visibleRangeStart()),ViewEnd:this._toServerDate(f.get_visibleRangeEnd()),EnableDescriptionField:this._owner._enableDescriptionField,MinutesPerRow:this._owner.get_minutesPerRow(),TimeZoneOffset:this._owner._timeZoneOffset};
},_executeUpdate:function(f){var i=this._getSchedulerInfo();
var h={appointment:f,schedulerInfo:i};
var k=e.raiseCancellableControlEvent(this._owner,"AppointmentWebServiceUpdating",h);
if(k){return;
}if(!this._onAppointmentsPopulating(i)){return;
}var g={schedulerInfo:i,appointmentData:this._storeAppointment(f)};
var j=this._settings.get_updateAppointmentMethod();
this._webServiceLoader.invokeMethod(j,g,"updateAppointment");
},_createRecurrenceException:function(f){var i=this._getSchedulerInfo();
var k={appointment:f,schedulerInfo:i};
var h=e.raiseCancellableControlEvent(this._owner,"RecurrenceExceptionCreating",k);
if(h){return;
}if(!this._onAppointmentsPopulating(i)){return;
}var g={schedulerInfo:i,recurrenceExceptionData:this._storeAppointment(f)};
var j=this._settings.get_createRecurrenceExceptionMethod();
this._webServiceLoader.invokeMethod(j,g,"createRecurrenceException");
},_onAppointmentsPopulating:function(g){var f=new b.SchedulerWebServiceEventArgs(g);
this._owner._raiseAppointmentsPopulating(f);
return !f.get_cancel();
},_onRequestSuccess:function(f,h){var g=h.get_data();
var i=g.Appointments||g;
this._owner._raiseRequestSuccess(new c.RequestSuccessEventArgs(g));
this._owner._suppressWebServiceCalls=true;
if(h.get_context()=="loadResources"){this._loadResources(this._owner.get_resources(),i);
this._resourcesLoaded=true;
this._owner._raiseResourcesPopulated();
}else{this._raiseEvent("appointmentsReceived");
this._populateAppointments(i);
this._raiseEvent("appointmentsPopulated");
this._appointmentsLoaded=true;
}if(this._appointmentsLoaded&&this._resourcesLoaded){this._owner._raiseDataBound();
}this._owner._suppressWebServiceCalls=false;
},_populateAppointments:function(l){var k=[];
for(var g=0,j=l.length;
g<j;
g++){var f=this._loadAppointment(l[g]);
Array.add(k,f);
var h=new c.AppointmentDataBoundEventArgs(f,l[g]);
this._owner._raiseAppointmentDataBound(h);
}k.sort(function(n,i){return n.compare(i);
});
var m=this._owner.get_appointments();
for(var g=0,j=k.length;
g<j;
g++){m.add(k[g]);
}this._owner.repaint();
},_onRequestError:function(f,i){var g=i.get_message();
var h=new b.SchedulerRequestFailedEventArgs(g);
this._owner._raiseRequestFailed(h);
if(!h.get_cancel()){alert(g);
}},_loadAppointment:function(g){var f=new b.SchedulerAppointment();
f._id=g.ID;
f._internalID=g.EncodedID;
f.set_subject(g.Subject);
f.set_description(g.Description);
f.set_start(this._toClientDate(g.Start));
f.set_end(this._toClientDate(g.End));
f._setOwner(this._owner);
f._recurrenceRule=g.RecurrenceRule;
f._recurrenceParentID=g.RecurrenceParentID;
f._recurrenceState=g.RecurrenceState;
f._visible=g.Visible;
f.set_toolTip(g.Subject);
if(g.Resources){this._loadResources(f.get_resources(),g.Resources);
}if(g.Attributes){this._loadAttributes(f.get_attributes(),g.Attributes);
}return f;
},_loadResources:function(h,f){for(var j=0,i=f.length;
j<i;
j++){var g=f[j];
var k=new b.SchedulerResource({key:g.Key,type:g.Type,text:g.Text,internalKey:g.EncodedKey,available:g.Available});
if(g.Attributes){this._loadAttributes(k.get_attributes(),g.Attributes);
}h.add(k);
}},_loadAttributes:function(g,f){if(this._isWCFService){for(var h=0;
h<f.length;
h++){var i=f[h];
g.setAttribute(i.Key,i.Value);
}}else{g._load(f);
}},_storeAppointment:function(h){var i=b.RecurrenceState.NotRecurring;
if(h.get_recurrenceParentID()){i=b.RecurrenceState.Exception;
}else{if(h.get_recurrenceRule()){i=b.RecurrenceState.Master;
}}var g={EncodedID:h._internalID,Subject:h.get_subject(),Description:h.get_description(),Start:this._toServerDate(h.get_start()),End:this._toServerDate(h.get_end()),RecurrenceRule:h._recurrenceRule,RecurrenceParentID:h._recurrenceParentID,RecurrenceState:i};
var f=this._storeResources(h.get_resources());
if(f.length>0){g.Resources=f;
}g.Attributes=this._storeAttributes(h.get_attributes());
e.raiseControlEvent(this._owner,"appointmentSerialized",{appointment:h,data:g});
return g;
},_toClientDate:function(g){var h=new Date(g.getTime());
var f=h.getTimezoneOffset()*d;
h.setTime(h.getTime()+f);
h.setTime(h.getTime()+this._schedulerTzOffset);
return h;
},_toServerDate:function(g){var h=new Date(g.getTime());
h.setTime(h.getTime()-this._schedulerTzOffset);
var f=h.getTimezoneOffset()*d;
h.setTime(h.getTime()-f);
return h;
},_storeResources:function(g){var f=[];
var h=this;
g.forEach(function(i){Array.add(f,{Key:i.get_key(),Type:i.get_type(),Text:i.get_text(),EncodedKey:i._getInternalKey(),Available:i.get_available(),Attributes:h._storeAttributes(i.get_attributes())});
});
return f;
},_storeAttributes:function(f){if(this._isWCFService){return this._storeAttributesWCF(f);
}var g={};
f.forEach(function(h,i){g[h]=i;
});
return g;
},_storeAttributesWCF:function(f){var g=[];
f.forEach(function(h,i){Array.add(g,{Key:h,Value:i});
});
return g;
},_raiseEvent:function(g,h){var f=this.get_events().getHandler(g);
if(f){if(!h){h=Sys.EventArgs.Empty;
}f(this,h);
}},_onSchedulerPropertyChanged:function(f,g){switch(g.get_propertyName()){case"selectedDate":this.loadAppointments();
break;
case"selectedView":this.loadAppointments(true);
break;
}}};
a.RenderingManager.registerClass("Telerik.Web.UI.Scheduler.Rendering.RenderingManager");
})();

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();