/** * Magento Commercial Edition * * NOTICE OF LICENSE * * This source file is subject to the Magento Commercial Edition License * that is available at: http://www.magentocommerce.com/license/commercial-edition * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@magentocommerce.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade Magento to newer * versions in the future. If you wish to customize Magento for your * needs please refer to http://www.magentocommerce.com for more information. * * @category Mage * @package Mage_Adminhtml * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com) * @license http://www.magentocommerce.com/license/commercial-edition */ var SessionError = Class.create(); SessionError.prototype = { initialize: function(errorText) { this.errorText = errorText; }, toString: function() { return 'Session Error:' + this.errorText; } }; Ajax.Request.addMethods({ initialize: function($super, url, options){ $super(options); this.transport = Ajax.getTransport(); if (!url.match(new RegExp('[?&]isAjax=true',''))) { url = url.match(new RegExp('\\?',"g")) ? url + '&isAjax=true' : url + '?isAjax=true'; } if (!this.options.parameters) { this.options.parameters = { form_key: FORM_KEY }; } if (!this.options.parameters.form_key) { this.options.parameters.form_key = FORM_KEY; } this.request(url); }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; if (response.responseText.isJSON()) { var jsonObject = response.responseText.evalJSON(); if (jsonObject.ajaxExpired && jsonObject.ajaxRedirect) { window.location.replace(jsonObject.ajaxRedirect); throw new SessionError('session expired'); } } (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); if (e instanceof SessionError) { return; } } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) { this.evalResponse(); } } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { // avoid memory leak in MSIE: clean up this.transport.onreadystatechange = Prototype.emptyFunction; } } }); Ajax.Updater.respondToReadyState = Ajax.Request.respondToReadyState; //Ajax.Updater = Object.extend(Ajax.Updater, { // initialize: function($super, container, url, options) { // this.container = { // success: (container.success || container), // failure: (container.failure || (container.success ? null : container)) // }; // // options = Object.clone(options); // var onComplete = options.onComplete; // options.onComplete = (function(response, json) { // this.updateContent(response.responseText); // if (Object.isFunction(onComplete)) onComplete(response, json); // }).bind(this); // // $super((url.match(new RegExp('\\?',"g")) ? url + '&isAjax=1' : url + '?isAjax=1'), options); // } //}); var varienLoader = new Class.create(); varienLoader.prototype = { initialize : function(caching){ this.callback= false; this.cache = $H(); this.caching = caching || false; this.url = false; }, getCache : function(url){ if(this.cache.get(url)){ return this.cache.get(url) } return false; }, load : function(url, params, callback){ this.url = url; this.callback = callback; if(this.caching){ var transport = this.getCache(url); if(transport){ this.processResult(transport); return; } } if (typeof(params.updaterId) != 'undefined') { new varienUpdater(params.updaterId, url, { evalScripts : true, onComplete: this.processResult.bind(this), onFailure: this._processFailure.bind(this) }); } else { new Ajax.Request(url,{ method: 'post', parameters: params || {}, onComplete: this.processResult.bind(this), onFailure: this._processFailure.bind(this) }); } }, _processFailure : function(transport){ location.href = BASE_URL; }, processResult : function(transport){ if(this.caching){ this.cache.set(this.url, transport); } if(this.callback){ this.callback(transport.responseText); } } } if (!window.varienLoaderHandler) var varienLoaderHandler = new Object(); varienLoaderHandler.handler = { onCreate: function(request) { if(request.options.loaderArea===false){ return; } request.options.loaderArea = $$('#html-body .wrapper')[0]; // Blocks all page if(request && request.options.loaderArea){ Element.clonePosition($('loading-mask'), $(request.options.loaderArea), {offsetLeft:-2}) toggleSelectsUnderBlock($('loading-mask'), false); Element.show('loading-mask'); setLoaderPosition(); if(request.options.loaderArea=='html-body'){ //Element.show('loading-process'); } } else{ //Element.show('loading-process'); } }, onComplete: function(transport) { if(Ajax.activeRequestCount == 0) { //Element.hide('loading-process'); toggleSelectsUnderBlock($('loading-mask'), true); Element.hide('loading-mask'); } } }; /** * @todo need calculate middle of visible area and scroll bind */ function setLoaderPosition(){ var elem = $('loading_mask_loader'); if (elem && Prototype.Browser.IE) { var middle = parseInt(document.body.clientHeight/2)+document.body.scrollTop; elem.style.position = 'absolute'; elem.style.top = middle; } } /*function getRealHeight() { var body = document.body; if (window.innerHeight && window.scrollMaxY) { return window.innerHeight + window.scrollMaxY; } return Math.max(body.scrollHeight, body.offsetHeight); }*/ function toggleSelectsUnderBlock(block, flag){ if(Prototype.Browser.IE){ var selects = document.getElementsByTagName("select"); for(var i=0; i