root/trunk/eCard/eCardMVC/adMoto.Payments.Web/Scripts/MicrosoftMvcAjax.debug.js @ 977

Wersja 866, 12.3 KB (wprowadzona przez alina, 16 years temu)

re #215

Line 
1//!----------------------------------------------------------
2//! Copyright (C) Microsoft Corporation. All rights reserved.
3//!----------------------------------------------------------
4//! MicrosoftMvcAjax.js
5
6Type.registerNamespace('Sys.Mvc');
7
8////////////////////////////////////////////////////////////////////////////////
9// Sys.Mvc.AjaxOptions
10
11Sys.Mvc.$create_AjaxOptions = function Sys_Mvc_AjaxOptions() { return {}; }
12
13
14////////////////////////////////////////////////////////////////////////////////
15// Sys.Mvc.InsertionMode
16
17Sys.Mvc.InsertionMode = function() {
18    /// <field name="replace" type="Number" integer="true" static="true">
19    /// </field>
20    /// <field name="insertBefore" type="Number" integer="true" static="true">
21    /// </field>
22    /// <field name="insertAfter" type="Number" integer="true" static="true">
23    /// </field>
24};
25Sys.Mvc.InsertionMode.prototype = {
26    replace: 0,
27    insertBefore: 1,
28    insertAfter: 2
29}
30Sys.Mvc.InsertionMode.registerEnum('Sys.Mvc.InsertionMode', false);
31
32
33////////////////////////////////////////////////////////////////////////////////
34// Sys.Mvc.AjaxContext
35
36Sys.Mvc.AjaxContext = function Sys_Mvc_AjaxContext(request, updateTarget, loadingElement, insertionMode) {
37    /// <param name="request" type="Sys.Net.WebRequest">
38    /// </param>
39    /// <param name="updateTarget" type="Object" domElement="true">
40    /// </param>
41    /// <param name="loadingElement" type="Object" domElement="true">
42    /// </param>
43    /// <param name="insertionMode" type="Sys.Mvc.InsertionMode">
44    /// </param>
45    /// <field name="_insertionMode" type="Sys.Mvc.InsertionMode">
46    /// </field>
47    /// <field name="_loadingElement" type="Object" domElement="true">
48    /// </field>
49    /// <field name="_response" type="Sys.Net.WebRequestExecutor">
50    /// </field>
51    /// <field name="_request" type="Sys.Net.WebRequest">
52    /// </field>
53    /// <field name="_updateTarget" type="Object" domElement="true">
54    /// </field>
55    this._request = request;
56    this._updateTarget = updateTarget;
57    this._loadingElement = loadingElement;
58    this._insertionMode = insertionMode;
59}
60Sys.Mvc.AjaxContext.prototype = {
61    _insertionMode: 0,
62    _loadingElement: null,
63    _response: null,
64    _request: null,
65    _updateTarget: null,
66   
67    get_data: function Sys_Mvc_AjaxContext$get_data() {
68        /// <value type="String"></value>
69        if (this._response) {
70            return this._response.get_responseData();
71        }
72        else {
73            return null;
74        }
75    },
76   
77    get_insertionMode: function Sys_Mvc_AjaxContext$get_insertionMode() {
78        /// <value type="Sys.Mvc.InsertionMode"></value>
79        return this._insertionMode;
80    },
81   
82    get_loadingElement: function Sys_Mvc_AjaxContext$get_loadingElement() {
83        /// <value type="Object" domElement="true"></value>
84        return this._loadingElement;
85    },
86   
87    get_response: function Sys_Mvc_AjaxContext$get_response() {
88        /// <value type="Sys.Net.WebRequestExecutor"></value>
89        return this._response;
90    },
91    set_response: function Sys_Mvc_AjaxContext$set_response(value) {
92        /// <value type="Sys.Net.WebRequestExecutor"></value>
93        this._response = value;
94        return value;
95    },
96   
97    get_request: function Sys_Mvc_AjaxContext$get_request() {
98        /// <value type="Sys.Net.WebRequest"></value>
99        return this._request;
100    },
101   
102    get_updateTarget: function Sys_Mvc_AjaxContext$get_updateTarget() {
103        /// <value type="Object" domElement="true"></value>
104        return this._updateTarget;
105    }
106}
107
108
109////////////////////////////////////////////////////////////////////////////////
110// Sys.Mvc.AsyncHyperlink
111
112Sys.Mvc.AsyncHyperlink = function Sys_Mvc_AsyncHyperlink() {
113}
114Sys.Mvc.AsyncHyperlink.handleClick = function Sys_Mvc_AsyncHyperlink$handleClick(anchor, evt, ajaxOptions) {
115    /// <param name="anchor" type="Object" domElement="true">
116    /// </param>
117    /// <param name="evt" type="Sys.UI.DomEvent">
118    /// </param>
119    /// <param name="ajaxOptions" type="Sys.Mvc.AjaxOptions">
120    /// </param>
121    evt.preventDefault();
122    Sys.Mvc.MvcHelpers._asyncRequest(anchor.href, 'post', '', anchor, ajaxOptions);
123}
124
125
126////////////////////////////////////////////////////////////////////////////////
127// Sys.Mvc.MvcHelpers
128
129Sys.Mvc.MvcHelpers = function Sys_Mvc_MvcHelpers() {
130}
131Sys.Mvc.MvcHelpers._serializeForm = function Sys_Mvc_MvcHelpers$_serializeForm(form) {
132    /// <param name="form" type="Object" domElement="true">
133    /// </param>
134    /// <returns type="String"></returns>
135    var formElements = form.elements;
136    var formBody = new Sys.StringBuilder();
137    var count = formElements.length;
138    for (var i = 0; i < count; i++) {
139        var element = formElements[i];
140        var name = element.name;
141        if (!name || !name.length) {
142            continue;
143        }
144        var tagName = element.tagName.toUpperCase();
145        if (tagName === 'INPUT') {
146            var inputElement = element;
147            var type = inputElement.type;
148            if ((type === 'text') || (type === 'password') || (type === 'hidden') || (((type === 'checkbox') || (type === 'radio')) && element.checked)) {
149                formBody.append(encodeURIComponent(name));
150                formBody.append('=');
151                formBody.append(encodeURIComponent(inputElement.value));
152                formBody.append('&');
153            }
154        }
155        else if (tagName === 'SELECT') {
156            var selectElement = element;
157            var optionCount = selectElement.options.length;
158            for (var j = 0; j < optionCount; j++) {
159                var optionElement = selectElement.options[j];
160                if (optionElement.selected) {
161                    formBody.append(encodeURIComponent(name));
162                    formBody.append('=');
163                    formBody.append(encodeURIComponent(optionElement.value));
164                    formBody.append('&');
165                }
166            }
167        }
168        else if (tagName === 'TEXTAREA') {
169            formBody.append(encodeURIComponent(name));
170            formBody.append('=');
171            formBody.append(encodeURIComponent((element.value)));
172            formBody.append('&');
173        }
174    }
175    return formBody.toString();
176}
177Sys.Mvc.MvcHelpers._asyncRequest = function Sys_Mvc_MvcHelpers$_asyncRequest(url, verb, body, triggerElement, ajaxOptions) {
178    /// <param name="url" type="String">
179    /// </param>
180    /// <param name="verb" type="String">
181    /// </param>
182    /// <param name="body" type="String">
183    /// </param>
184    /// <param name="triggerElement" type="Object" domElement="true">
185    /// </param>
186    /// <param name="ajaxOptions" type="Sys.Mvc.AjaxOptions">
187    /// </param>
188    if (ajaxOptions.confirm) {
189        if (!confirm(ajaxOptions.confirm)) {
190            return;
191        }
192    }
193    if (ajaxOptions.url) {
194        url = ajaxOptions.url;
195    }
196    if (ajaxOptions.httpMethod) {
197        verb = ajaxOptions.httpMethod;
198    }
199    if (body.length > 0 && !body.endsWith('&')) {
200        body += '&';
201    }
202    body += 'X-Requested-With=XMLHttpRequest';
203    var requestBody = '';
204    if (verb.toUpperCase() === 'GET' || verb.toUpperCase() === 'DELETE') {
205        if (url.indexOf('?') > -1) {
206            if (!url.endsWith('&')) {
207                url += '&';
208            }
209            url += body;
210        }
211        else {
212            url += '?';
213            url += body;
214        }
215    }
216    else {
217        requestBody = body;
218    }
219    var request = new Sys.Net.WebRequest();
220    request.set_url(url);
221    request.set_httpVerb(verb);
222    request.set_body(requestBody);
223    if (verb.toUpperCase() === 'PUT') {
224        request.get_headers()['Content-Type'] = 'application/x-www-form-urlencoded;';
225    }
226    request.get_headers()['X-Requested-With'] = 'XMLHttpRequest';
227    var updateElement = null;
228    if (ajaxOptions.updateTargetId) {
229        updateElement = $get(ajaxOptions.updateTargetId);
230    }
231    var loadingElement = null;
232    if (ajaxOptions.loadingElementId) {
233        loadingElement = $get(ajaxOptions.loadingElementId);
234    }
235    var ajaxContext = new Sys.Mvc.AjaxContext(request, updateElement, loadingElement, ajaxOptions.insertionMode);
236    var continueRequest = true;
237    if (ajaxOptions.onBegin) {
238        continueRequest = ajaxOptions.onBegin(ajaxContext) !== false;
239    }
240    if (loadingElement) {
241        Sys.UI.DomElement.setVisible(ajaxContext.get_loadingElement(), true);
242    }
243    if (continueRequest) {
244        request.add_completed(Function.createDelegate(null, function(executor) {
245            Sys.Mvc.MvcHelpers._onComplete(request, ajaxOptions, ajaxContext);
246        }));
247        request.invoke();
248    }
249}
250Sys.Mvc.MvcHelpers._onComplete = function Sys_Mvc_MvcHelpers$_onComplete(request, ajaxOptions, ajaxContext) {
251    /// <param name="request" type="Sys.Net.WebRequest">
252    /// </param>
253    /// <param name="ajaxOptions" type="Sys.Mvc.AjaxOptions">
254    /// </param>
255    /// <param name="ajaxContext" type="Sys.Mvc.AjaxContext">
256    /// </param>
257    ajaxContext.set_response(request.get_executor());
258    if (ajaxOptions.onComplete && ajaxOptions.onComplete(ajaxContext) === false) {
259        return;
260    }
261    var statusCode = ajaxContext.get_response().get_statusCode();
262    if ((statusCode >= 200 && statusCode < 300) || statusCode === 304 || statusCode === 1223) {
263        if (statusCode !== 204 && statusCode !== 304 && statusCode !== 1223) {
264            var contentType = ajaxContext.get_response().getResponseHeader('Content-Type');
265            if ((contentType) && (contentType.indexOf('application/x-javascript') !== -1)) {
266                eval(ajaxContext.get_data());
267            }
268            else {
269                Sys.Mvc.MvcHelpers.updateDomElement(ajaxContext.get_updateTarget(), ajaxContext.get_insertionMode(), ajaxContext.get_data());
270            }
271        }
272        if (ajaxOptions.onSuccess) {
273            ajaxOptions.onSuccess(ajaxContext);
274        }
275    }
276    else {
277        if (ajaxOptions.onFailure) {
278            ajaxOptions.onFailure(ajaxContext);
279        }
280    }
281    if (ajaxContext.get_loadingElement()) {
282        Sys.UI.DomElement.setVisible(ajaxContext.get_loadingElement(), false);
283    }
284}
285Sys.Mvc.MvcHelpers.updateDomElement = function Sys_Mvc_MvcHelpers$updateDomElement(target, insertionMode, content) {
286    /// <param name="target" type="Object" domElement="true">
287    /// </param>
288    /// <param name="insertionMode" type="Sys.Mvc.InsertionMode">
289    /// </param>
290    /// <param name="content" type="String">
291    /// </param>
292    if (target) {
293        switch (insertionMode) {
294            case Sys.Mvc.InsertionMode.replace:
295                target.innerHTML = content;
296                break;
297            case Sys.Mvc.InsertionMode.insertBefore:
298                if (content && content.length > 0) {
299                    target.innerHTML = content + target.innerHTML.trimStart();
300                }
301                break;
302            case Sys.Mvc.InsertionMode.insertAfter:
303                if (content && content.length > 0) {
304                    target.innerHTML = target.innerHTML.trimEnd() + content;
305                }
306                break;
307        }
308    }
309}
310
311
312////////////////////////////////////////////////////////////////////////////////
313// Sys.Mvc.AsyncForm
314
315Sys.Mvc.AsyncForm = function Sys_Mvc_AsyncForm() {
316}
317Sys.Mvc.AsyncForm.handleSubmit = function Sys_Mvc_AsyncForm$handleSubmit(form, evt, ajaxOptions) {
318    /// <param name="form" type="Object" domElement="true">
319    /// </param>
320    /// <param name="evt" type="Sys.UI.DomEvent">
321    /// </param>
322    /// <param name="ajaxOptions" type="Sys.Mvc.AjaxOptions">
323    /// </param>
324    evt.preventDefault();
325    var body = Sys.Mvc.MvcHelpers._serializeForm(form);
326    Sys.Mvc.MvcHelpers._asyncRequest(form.action, form.method || 'post', body, form, ajaxOptions);
327}
328
329
330Sys.Mvc.AjaxContext.registerClass('Sys.Mvc.AjaxContext');
331Sys.Mvc.AsyncHyperlink.registerClass('Sys.Mvc.AsyncHyperlink');
332Sys.Mvc.MvcHelpers.registerClass('Sys.Mvc.MvcHelpers');
333Sys.Mvc.AsyncForm.registerClass('Sys.Mvc.AsyncForm');
334
335// ---- Do not remove this footer ----
336// Generated using Script# v0.5.0.0 (http://projects.nikhilk.net)
337// -----------------------------------
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.