﻿// (c) 2009 Microsoft Corporation, All Rights Reserved
// Use of this software is subject to the following license terms: 
// http://go.microsoft.com/fwlink/?LinkId=163454
Type._registerScript("MicrosoftAjaxDataContext.js",["MicrosoftAjaxCore.js"]);Type.registerNamespace("Sys.Net");Sys.Net.WebServiceOperation=function(a,b,c){if(typeof a==="undefined")a=null;this.operation=a;this.parameters=b||null;this.httpVerb=c||null};Sys.Net.WebServiceOperation.prototype={operation:null,parameters:null,httpVerb:null};Sys.Net.WebServiceOperation.registerClass("Sys.Net.WebServiceOperation");Type.registerNamespace("Sys.Data");if(!Sys.Data.IDataProvider){Sys.Data.IDataProvider=function(){};Sys.Data.IDataProvider.prototype={fetchData:function(){}};Sys.Data.IDataProvider.registerInterface("Sys.Data.IDataProvider")}if(!Sys.Data.MergeOption){Sys.Data.MergeOption=function(){throw Error.notImplemented()};Sys.Data.MergeOption.prototype={appendOnly:0,overwriteChanges:1};Sys.Data.MergeOption.registerEnum("Sys.Data.MergeOption")}Sys.Data.DataContext=function(){var a=this;Sys.Data.DataContext.initializeBase(a);a._dataChangedDel=Function.createDelegate(a,a._dataChanged);a._items={};a._methods={}};Sys.Data.DataContext.prototype={_useIdentity:false,_dirty:false,_lastResults:null,_items:null,_ignoreChange:false,_inserts:null,_edits:null,_deletes:null,_changelist:null,_hasChanges:false,_mergeOption:Sys.Data.MergeOption.overwriteChanges,_saverequest:null,_saving:false,_serviceUri:null,_saveOperation:null,_saveParameters:null,_saveHttpVerb:null,_saveTimeout:0,_methods:null,get_changes:function(){var a=this._changelist;if(!a)this._changelist=a=[];return a},get_createEntityMethod:function(){return this._methods.createEntity||null},set_createEntityMethod:function(a){this._methods.createEntity=a},get_getIdentityMethod:function(){return this._methods.getIdentity||null},set_getIdentityMethod:function(a){this._methods.getIdentity=a;this._useIdentity=!!a},get_handleSaveChangesResultsMethod:function(){return this._methods.handleSaveResults||null},set_handleSaveChangesResultsMethod:function(a){this._methods.handleSaveResults=a},get_isDeferredPropertyMethod:function(){return this._methods.isDeferredProperty||null},set_isDeferredPropertyMethod:function(a){this._methods.isDeferredProperty=a},get_getNewIdentityMethod:function(){return this._methods.getNewIdentity||null},set_getNewIdentityMethod:function(a){this._methods.getNewIdentity=a},get_getDeferredPropertyFetchOperationMethod:function(){return this._methods.getDeferredQuery||null},set_getDeferredPropertyFetchOperationMethod:function(a){this._methods.getDeferredQuery=a},get_items:function(){return this._items},get_lastFetchDataResults:function(){return this._lastResults||null},get_hasChanges:function(){return this._hasChanges},get_fetchDataMethod:function(){return this._methods.fetchData||null},set_fetchDataMethod:function(a){this._methods.fetchData=a},get_mergeOption:function(){return this._mergeOption},set_mergeOption:function(a){this._mergeOption=a},get_saveChangesMethod:function(){return this._methods.saveChanges||null},set_saveChangesMethod:function(a){this._methods.saveChanges=a},get_saveOperation:function(){return this._saveOperation||""},set_saveOperation:function(a){this._saveOperation=a},get_saveHttpVerb:function(){return this._saveHttpVerb||"POST"},set_saveHttpVerb:function(a){this._saveHttpVerb=a},get_saveParameters:function(){return this._saveParameters},set_saveParameters:function(a){this._saveParameters=a},get_saveChangesTimeout:function(){return this._saveTimeout},set_saveChangesTimeout:function(a){this._saveTimeout=a},get_isSaving:function(){return this._saving},get_serviceUri:function(){return this._serviceUri||""},set_serviceUri:function(a){this._serviceUri=a},addLink:function(c,b,d){var a=this._toggleLink(c,b,d),e=this._setLinkField(true,c,b,d);if(!a||a.action!==Sys.Data.ChangeOperationType.remove)if(e||a&&a.action===Sys.Data.ChangeOperationType.insert)this._registerChange(new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.insert,null,c,b,d))},removeLink:function(c,b,d){var a=this._toggleLink(c,b,d),e=this._setLinkField(true,c,b,d,true);if(!a||a.action!==Sys.Data.ChangeOperationType.insert)if(e||a&&a.action===Sys.Data.ChangeOperationType.remove)this._registerChange(new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.remove,null,c,b,d))},setLink:function(b,a,c){this._toggleLink(b,a,c);this._setLinkField(false,b,a,c);this._registerChange(new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.update,null,b,a,c))},abortSave:function(){var a=this;if(a._saverequest){a._saverequest.get_executor().abort();a._saverequest=null}if(a._saving){a._saving=false;a.raisePropertyChanged("isSaving")}},clearChanges:function(){var a=this;a._edits=a._deletes=a._inserts=null;if(a._changelist)Sys.Observer.clear(a._changelist);if(a._hasChanges){a._hasChanges=false;a.raisePropertyChanged("hasChanges")}},clearData:function(){this._clearData()},createEntity:function(a){var b=this.get_createEntityMethod();return b(this,a)},dispose:function(){var a=this;if(a._disposed)return;a._disposed=true;if(a.get_isSaving())a.abortSave();a.clearData();a._lastResults=null;a._saverequest=null;a._methods={};Sys.Data.DataContext.callBaseMethod(a,"dispose")},initialize:function(){this.updated();Sys.Data.DataContext.callBaseMethod(this,"initialize")},fetchDeferredProperty:function(k,e,j,f,g,h,l,b){var i="undefined",a=null,c=this,m=c.get_getDeferredPropertyFetchOperationMethod(),n=c,d=m(c,k,e,j||a,b);if(d&&d.operation){function o(c){n._setField(k,e,a,c,a,true);if(g)g(c,b,e)}function p(a){if(h)h(a,b,e)}if(typeof b===i)b=a;if(typeof f===i||f===a)f=c.get_mergeOption();return c.fetchData(d.operation,Sys._combine(d.parameters,j),f,d.httpVerb||"POST",o,p,l||0,b)}},getNewIdentity:function(c,b){var a=this.get_getNewIdentityMethod();return a?a(this,c,b)||null:null},insertEntity:function(c,d){var a=this,b=null;if(a._useIdentity){b=a.getIdentity(c);if(b===null)b=a.getNewIdentity(c,d||null);if(!b)throw Error.invalidOperation(Sys.Data.DataRes.requiredIdentity);if(a._items[b])throw Error.invalidOperation(String.format(Sys.Data.DataRes.entityAlreadyExists,b));a._storeEntity(b,c)}else a._captureEntity(c);a._inserts=a._pushChange(a._inserts,c,b);a._registerChange(new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.insert,c))},removeEntity:function(b){var e=true,a=this;if(a._ignoreChange)return;var c=a.getIdentity(b);if(c!==null){b=a._items[c];if(typeof b==="undefined")return;delete a._items[c]}a._releaseEntity(b);var h=a,d=a.get_changes(),g=a._hasChanges;function f(){for(var a=0,c=d.length;a<c;a++)if(d[a].item===b){Sys.Observer.removeAt(d,a);h._hasChanges=!!d.length;return}}if(a._peekChange(a._inserts,b,c,e)){a._removeChanges(b,"*");f()}else{a._deletes=a._pushChange(a._deletes,b,c);if(a._peekChange(a._edits,b,c,e))f();a._removeChanges(b,"*",e);Sys.Observer.add(d,new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.remove,b));a._hasChanges=e}if(a._hasChanges!==g)a._raiseChanged("hasChanges")},fetchData:function(e,k,c,f,h,i,l,a){var d=null,j="undefined",b=this,g=b;if(typeof c===j||c===d)c=b.get_mergeOption();function n(d){if(g._disposed)return;var b=g.trackData(d,c);if(h){if(d instanceof Array&&b===d)b=Array.clone(b);h(b,a,e)}}function o(b){if(g._disposed)return;if(i)i(b,a,e)}if(typeof a===j)a=d;var m=b.get_fetchDataMethod(),p=b.get_serviceUri();return m?m(b,p,e,k||d,f||"POST",n,o,l||0,a):Sys.Net.WebServiceProxy.invoke(p,e,f?f==="GET":false,k||d,n,o,a,l||0)},_clearData:function(b){var a=this;if(a._useIdentity)for(var c in a._items){var e=a._items[c];a._releaseEntity(e)}else if(a._lastResults)a._release(a._lastResults);a._items={};var d=a._lastResults;a._lastResults=b||null;a.clearChanges();if(b)a._capture(b);if(d!==null)a._raiseChanged("lastFetchDataResults")},_fixAfterSave:function(f,b,c){var a=this;if(a._useIdentity){var e=a.getIdentity(b),d=a.getIdentity(c);a._combine(b,c);if(e!==d){delete a._items[e];a._items[d]=b}}else{a._combine(b,c);if(f.action===Sys.NotifyCollectionChangedAction.add)a._captureEntity(item)}},trackData:function(a,c){var d=null,f="undefined",b=this;if(b._useIdentity){if(typeof c===f||c===d)c=b.get_mergeOption();var e;if(a instanceof Array)a=b._storeEntities(a,c);else if(typeof a!==f&&a!==d){e=b._storeEntities([a],c);if(e.length===0)a=d}var g=b._lastResults;b._lastResults=a;if(g!==d)b._raiseChanged("lastFetchDataResults")}else b._clearData(a);return a},_processResults:function(c,e,a){if(a&&a.length===e.length){c._ignoreChange=true;try{for(var b=0,h=a.length;b<h;b++){var d=a[b],f=e[b],g=f.item;if(d&&typeof d==="object")c._fixAfterSave(f,g,d)}}finally{c._ignoreChange=false}}},_peekChange:function(a,c,b,d){if(!a)return false;if(b!==null){var e="id$"+b,f=a[e];if(f){if(d)a[e]=null;return true}}else if(d)return Array.remove(a,c);else return Array.contains(a,c)},_pushChange:function(a,c,b){if(!a)a=[];if(b===null)a[a.length]=c;else a["id$"+b]=true;return a},_registerChange:function(b){var a=this;Sys.Observer.add(a.get_changes(),b);if(!a._hasChanges){a._hasChanges=true;a.raisePropertyChanged("hasChanges")}},saveChanges:function(j,k,i){var e="isSaving",c=null,d=true,a=this,f=false,o=a.get_serviceUri(),l=a.get_saveOperation(),b=a,g;function h(a){if(b._disposed)return;if(!f){f=d;window.setTimeout(function(){h(a)},0)}else{b.clearChanges();var k=b.get_handleSaveChangesResultsMethod();(k||b._processResults)(b,g,a);b._saverequest=c;b._saving=false;b._raiseChanged(e);if(j)j(a,i,l)}}function m(a){if(b._disposed)return;if(!f){f=d;window.setTimeout(function(){m(a)},0)}else{b._saverequest=c;b._saving=false;b._raiseChanged(e);if(k)k(a,i,l)}}if(!a._hasChanges){h(c);return c}g=Array.clone(a.get_changes());if(g.length===0){h(c);return c}if(!o)return;if(a.get_isSaving())a.abortSave();a._saving=d;a._raiseChanged(e);var n=a._filterLinks(g);a._saverequest=(a.get_saveChangesMethod()||a._saveInternal)(a,n,h,m,i);f=d;return a._saverequest},_isDeleted:function(d){var b,e,a,c=this.get_changes(),f=this.getIdentity(d);for(b=0,e=c.length;b<e;b++){a=c[b];if(a.action===Sys.Data.ChangeOperationType.remove&&a.item&&(a.item===d||this.getIdentity(a.item)===f))return true}return false},_removeChanges:function(g,f,j){var e=this,b,h,c,a,d=e.get_changes(),i=f==="*";for(b=0,h=d.length;b<h;b++){a=d[b];if(f&&(!j||a.action===Sys.Data.ChangeOperationType.insert)&&(a.linkSource===g||i&&a.linkTarget===g)&&(i||a.linkSourceField===f)||!f&&a.item&&typeof a.item==="object"&&(a.item===g||e.getIdentity(a.item)===e.getIdentity(g))){if(!c)c=[];c.push(a)}}if(c){Sys.Observer.beginUpdate(d);for(b=0,h=c.length;b<h;b++)Sys.Observer.remove(d,c[b]);Sys.Observer.endUpdate(d);if(d.length===0){e._hasChanges=false;e.raisePropertyChanged("hasChanges")}}},_setLinkField:function(i,d,f,h,g){var c=true,b=false,e=this;if(i){var a=d[f];if(a===null||e._getValueType(d,f,a)!==2){if(g)return b;d[f]=a=[]}e._ignoreChange=c;try{if(Array.contains(a,h))if(g){Sys.Observer.remove(a,h);return c}else return b;else if(g)return b;else{Sys.Observer.add(a,h);return c}}finally{e._ignoreChange=b}}else{e._ignoreChange=c;try{if(g)Sys.Observer.setValue(d,f,null);else Sys.Observer.setValue(d,f,h);return c}finally{e._ignoreChange=b}}},_toggleLink:function(f,h,g){var b=this,a,c=b.get_changes();for(var d=0,i=c.length;d<i;d++){a=c[d];if(a.linkSourceField===h&&a.linkSource===f&&(a.linkTarget===g||a.action===Sys.Data.ChangeOperationType.update)){Sys.Observer.remove(c,a);var e=b._hasChanges;b._hasChanges=!!c.length;if(e!==b._hasChanges)b.raisePropertyChanged("hasChanges");return a}}return null},updated:function(){if(this._dirty){this._dirty=false;this.raisePropertyChanged("")}},_capture:function(a){if(a instanceof Array)for(var b=0,c=a.length;b<c;b++)this._captureEntity(a[b]);else if(a!==null)this._captureEntity(a)},_captureEntity:function(a){if(this._isCaptureable(a))Sys.Observer.addPropertyChanged(a,this._dataChangedDel)},_dataChanged:function(b){var a=this;if(a._ignoreChange)return;var e=a.get_changes(),c=a.getIdentity(b);if(!a._peekChange(a._inserts,b,c)){var d=a._peekChange(a._edits,b,c);if(!d){Sys.Observer.add(e,new Sys.Data.ChangeOperation(Sys.Data.ChangeOperationType.update,b));a._edits=a._pushChange(a._edits,b,c);if(!a._hasChanges){a._hasChanges=true;a.raisePropertyChanged("hasChanges")}}}},_isActive:function(){return this.get_isInitialized()&&!this.get_isUpdating()},_isCaptureable:function(a){if(a===null)return false;var b=typeof a;return b==="object"||b==="unknown"},_raiseChanged:function(a){if(this._isActive()){this.raisePropertyChanged(a);return true}else{this._dirty=true;return false}},_release:function(a){if(a instanceof Array)for(var b=0,c=a.length;b<c;b++)this._releaseEntity(a[b]);else if(a!==null)this._releaseEntity(a)},_releaseEntity:function(a){if(this._isCaptureable(a))Sys.Observer.removePropertyChanged(a,this._dataChangedDel)},_saveInternal:function(a,c,d,e,f){var b=a.get_saveParameters();return Sys.Net.WebServiceProxy.invoke(a.get_serviceUri(),a.get_saveOperation()||"",a.get_saveHttpVerb()==="GET",b?Sys._combine(b,{changeSet:c}):{changeSet:c},d,e,f,a.get_saveChangesTimeout()||0)},_filterLinks:function(g){var e=this;if(!e._useIdentity)return g;var b,i=g.length,h=new Array(i);for(b=0;b<i;b++){var a=g[b],f=a.item,c=a.linkSource,d=a.linkTarget;if(f)f=e._getEntityOnly(f);if(c)c=e._getEntityOnly(c);if(d)d=e._getEntityOnly(d);h[b]=new Sys.Data.ChangeOperation(a.action,f,c,a.linkSourceField,d)}return h},_getEntityOnly:function(b){var a={};this._combine(a,b,null,true);return a},getIdentity:function(b){var a=null;if(b===a)return a;var c=this.get_getIdentityMethod();return c?c(this,b)||a:a},isDeferredProperty:function(c,b){var a=this.get_isDeferredPropertyMethod();return a?a(this,c,b)||false:false},_getValueType:function(c,d,a){var b=typeof a;if(b==="undefined")return 0;if(a===null||b!=="object")return 2;if(this.isDeferredProperty(c,d))return 1;return 2},_setField:function(c,d,j,a,k,l){var b=this,f=true,i=c instanceof Array,g=k===Sys.Data.MergeOption.appendOnly;if(!i){var e=c[d],h=b._getValueType(c,d,e);if(g){if(h===2&&(!e||!a||typeof e!=="object"||e instanceof Array||typeof a!=="object"||a instanceof Array||b.getIdentity(e)!==b.getIdentity(a)))f=false}else if(h===2&&a&&j&&b._getValueType(j,d,a)===1)f=false}if(f){if(i)c[d]=a;else{b._ignoreChange=true;try{Sys.Observer.setValue(c,d,a)}finally{b._ignoreChange=false}}if(l&&!g)b._removeChanges(c,d)}return f},_combine:function(c,e,d,i){var b=this,j=false;for(var f in e){var a=e[f],k=typeof a;if(k==="function")continue;if(b._useIdentity&&a instanceof Array){if(!i){a=b._storeEntities(a,d);if(c)b._setField(c,f,e,a,d,true)}}else{var h=null;if(a&&k==="object")h=b.getIdentity(a);if(h!==null){if(!i)b._storeEntity(h,a,c,f,e,d)}else if(c){var g=c[f];if(g&&typeof g==="object"&&b.getIdentity(g))continue;if(b._setField(c,f,e,a,d)&&!j&&(typeof d!=="number"||d===Sys.Data.MergeOption.overwriteChanges)){j=true;b._removeChanges(c)}}}}},_storeEntity:function(g,b,e,f,i,d){var c=this,h=true,a=c._items[g];if(typeof a!=="undefined")if(a===b)h=false;else c._combine(a,b,d);else{c._items[g]=a=b;c._captureEntity(b);c._combine(b,b,d)}if(e&&e[f]!==a)c._setField(e,f,i,a,d,true);return h},_storeEntities:function(d,h){var e=this,a,f,g,c,i=h===Sys.Data.MergeOption.appendOnly;for(a=0,f=d.length;a<f;a++){var b=d[a],k=b&&typeof b==="object";if(k){if(i)if(e._isDeleted(b)){if(!c)c=[b];else c[c.length]=b;continue}var j=e.getIdentity(b);if(j!==null)if(e._storeEntity(j,b,d,a,null,h)&&!i)e._removeChanges(b)}}if(c){g=Array.clone(d);for(a=0,f=c.length;a<f;a++)Array.remove(g,c[a])}return g||d}};Sys.Data.DataContext.registerClass("Sys.Data.DataContext",Sys.Component,Sys.Data.IDataProvider);Sys.Data.ChangeOperationType=function(){throw Error.notImplemented()};Sys.Data.ChangeOperationType.prototype={insert:0,update:1,remove:2};Sys.Data.ChangeOperationType.registerEnum("Sys.Data.ChangeOperationType");Sys.Data.ChangeOperation=function(e,f,c,b,d){var a=this;a.action=e;a.item=f;a.linkSourceField=b;a.linkSource=c;a.linkTarget=d};Sys.Data.ChangeOperation.prototype={action:null,item:null,linkSource:null,linkSourceField:null,linkTarget:null};Sys.Data.ChangeOperation.registerClass("Sys.Data.ChangeOperation");Sys.Data.AdoNetDataContext=function(){var a=this;Sys.Data.AdoNetDataContext.initializeBase(a);a.set_getIdentityMethod(a._getIdentity);a.set_getNewIdentityMethod(a._getNewIdentity);a.set_fetchDataMethod(a._fetchAdoNet);a.set_saveChangesMethod(a._saveAdoNet);a.set_createEntityMethod(a._createEntity);a.set_handleSaveChangesResultsMethod(a._processResultsAdoNet);a.set_getDeferredPropertyFetchOperationMethod(a._getDeferredQuery);a.set_isDeferredPropertyMethod(a._isDeferred)};Sys.Data.AdoNetDataContext.prototype={_proxy:null,_puri:null,_entityCounter:0,_saveCounter:1,_createEntity:function(c,b){var a={};c._createMetaData(a,b);return a},_fetchAdoNet:function(g,c,a,h,i,e,f,k,j){var b=null;if(a){if(typeof a!=="string")a=a.toString();var d=a.indexOf(":");if(d!==-1&&d<a.indexOf("/"))c=a}var l=g._getProxy(c||"");return l.fetchData(a,h||b,b,i||b,e||b,f||b,k||0,j||b)},_getDeferredQuery:function(d,e,c,f){var a=null,b=e[c];if(b===null||typeof b==="undefined"||b instanceof Array){a=d.getIdentity(e);a+=a.endsWith("/")?c:"/"+c}else if(typeof b==="object"){a=d.getIdentity(b);if(!a)a=b.__deferred?b.__deferred.uri:null}if(!a)throw Error.invalidOperation(String.format(Sys.Data.AdoNetRes.propertyNotFound,c));return new Sys.Net.WebServiceOperation(a,f)},_getProxy:function(b){var a=this;if(a._puri!==b){a._proxy=new Sys.Data.AdoNetServiceProxy(b);a._puri=b}return a._proxy},_isDeferred:function(d,c,b){var a=c[b];return !!(a&&typeof a==="object"&&a.__deferred)},_processResultsAdoNet:function(h,c,a){if(a&&a.length===c.length)for(i=0,l=a.length;i<l;i++){var e=c[i],b=e.item,f=a[i],g=f.get_result(),d=f.get_httpHeaders();if(b){if(g)h._fixAfterSave(e,b,g);if(d.ETag&&b.__metadata)b.__metadata.etag=d.ETag}}},_getBatchReference:function(c,e,d,f){var b=c.__metadata[e];if(typeof b==="number")return d+"$"+b;else{var a=this.getIdentity(c);if(f)a=a.substr(a.lastIndexOf("/"));return a}},_saveAdoNet:function(a,i,l,m,n){var g="/$links/",f,k,o=a.get_serviceUri(),j=a._getProxy(o),d=j.createActionSequence(),c="__batchNumber"+a._saveCounter++;j.set_timeout(a.get_saveChangesTimeout());for(f=0,k=i.length;f<k;f++){var b=i[f],e=b.item;switch(b.action){case Sys.Data.ChangeOperationType.insert:if(e){var h=a.get_items()[a.getIdentity(e)];delete e.__metadata;h.__metadata[c]=f;d.addInsertAction(e,h.__metadata.entitySet)}else d.addInsertAction({uri:a._getBatchReference(b.linkTarget,c,"")},a._getBatchReference(b.linkSource,c,"/")+g+b.linkSourceField);break;case Sys.Data.ChangeOperationType.update:if(e)d.addUpdateAction(e);else if(b.linkTarget)d.addUpdateAction({uri:a._getBatchReference(b.linkTarget,c,"")},a._getBatchReference(b.linkSource,c,"/")+g+b.linkSourceField);else d.addRemoveAction({__metadata:{uri:a._getBatchReference(b.linkSource,c,"/")+g+b.linkSourceField}});break;case Sys.Data.ChangeOperationType.remove:if(e)d.addRemoveAction(e);else d.addRemoveAction({__metadata:{uri:a._getBatchReference(b.linkSource,c,"/")+"/$links"+a._getBatchReference(b.linkTarget,c,"/",true)}})}}return d.execute(l,m,n)},_createMetaData:function(b,a){b.__metadata={entitySet:a,uri:a+"(__new"+this._entityCounter+++")"}},_getNewIdentity:function(c,a,b){c._createMetaData(a,b);return a.__metadata.uri},_getIdentity:function(c,b){var a=b.__metadata;if(a)return a.uri||null;return null}};Sys.Data.AdoNetDataContext.registerClass("Sys.Data.AdoNetDataContext",Sys.Data.DataContext);
Type.registerNamespace('Sys.Data');Sys.Data.DataRes={'requiredIdentity':'The entity must have an identity or a new identity must be creatable with the set getNewIdentityMethod.','entityAlreadyExists':'Entity \'{0}\' already exists and cannot be added again.'};

