1(function ($) { 2 3Drupal.behaviors.initModalFormsLogin = { 4 attach: function (context, settings) { 5 $("a[href*='/user/login'], a[href*='?q=user/login']", context).once('init-modal-forms-login', function () { 6 this.href = this.href.replace(/user\/login/,'modal_forms/nojs/login'); 7 }).addClass('ctools-use-modal ctools-modal-modal-popup-small'); 8 } 9}; 10 11})(jQuery); 12; 13(function ($) { 14 15Drupal.behaviors.initModalFormsRegister = { 16 attach: function (context, settings) { 17 $("a[href*='/user/register'], a[href*='?q=user/register']", context).once('init-modal-forms-register', function () { 18 this.href = this.href.replace(/user\/register/,'modal_forms/nojs/register'); 19 }).addClass('ctools-use-modal ctools-modal-modal-popup-medium'); 20 } 21}; 22 23})(jQuery); 24; 25(function ($) { 26 27Drupal.behaviors.initModalFormsPassword = { 28 attach: function (context, settings) { 29 $("a[href*='/user/password'], a[href*='?q=user/password']", context).once('init-modal-forms-password', function () { 30 this.href = this.href.replace(/user\/password/,'modal_forms/nojs/password'); 31 }).addClass('ctools-use-modal ctools-modal-modal-popup-small'); 32 } 33}; 34 35})(jQuery); 36; 37Drupal.locale = { 'pluralFormula': function ($n) { return Number((((($n%10)==1)&&(($n%100)!=11))?(0):((((($n%10)>=2)&&(($n%10)<=4))&&((($n%100)<10)||(($n%100)>=20)))?(1):2))); }, 'strings': {"":{"An AJAX HTTP error occurred.":"\u0412\u043e\u0437\u043d\u0438\u043a\u043b\u0430 AJAX HTTP \u043e\u0448\u0438\u0431\u043a\u0430.","HTTP Result Code: !status":"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 HTTP: !status","An AJAX HTTP request terminated abnormally.":"AJAX HTTP-\u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d.","Debugging information follows.":"\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f.","Path: !uri":"\u041f\u0443\u0442\u044c: !uri","StatusText: !statusText":"\u0422\u0435\u043a\u0441\u0442 \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f: !statusText","ResponseText: !responseText":"\u0422\u0435\u043a\u0441\u0442 \u041e\u0442\u0432\u0435\u0442\u0430: !responseText","ReadyState: !readyState":"ReadyState: !readyState","CustomMessage: !customMessage":"\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435: !customMessage","No results":"\u041d\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432","clear":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c","All":"\u0412\u0441\u0435","New":"\u041d\u043e\u0432\u043e\u0435","Modules installed within the last week.":"\u041c\u043e\u0434\u0443\u043b\u0438, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043d\u0435\u0434\u0435\u043b\u044e.","No modules added within the last week.":"\u041d\u0435\u0442 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043d\u0435\u0434\u0435\u043b\u044e.","Recent":"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439","Modules enabled\/disabled within the last week.":"\u041c\u043e\u0434\u0443\u043b\u0438, \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0435\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043d\u0435\u0434\u0435\u043b\u044e.","No modules were enabled or disabled within the last week.":"\u041d\u0435\u0442 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043d\u0435\u0434\u0435\u043b\u0438.","@enabled of @total":"@enabled \u0438\u0437 @total","Hide":"\u0421\u043a\u0440\u044b\u0442\u044c","Show":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c","Search":"\u041f\u043e\u0438\u0441\u043a","Next":"\u
370412\u043f\u0435\u0440\u0451\u0434","Cancel":"\u041e\u0442\u043c\u0435\u043d\u0430","Disabled":"\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e","Enabled":"\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e","Edit":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c","Save":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c","Sunday":"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435","Monday":"\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a","Tuesday":"\u0432\u0442\u043e\u0440\u043d\u0438\u043a","Wednesday":"\u0441\u0440\u0435\u0434\u0430","Thursday":"\u0447\u0435\u0442\u0432\u0435\u0440\u0433","Friday":"\u043f\u044f\u0442\u043d\u0438\u0446\u0430","Saturday":"\u0441\u0443\u0431\u0431\u043e\u0442\u0430","Add":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c","Upload":"\u0417\u0430\u043a\u0430\u0447\u0430\u0442\u044c","Done":"\u0413\u043e\u0442\u043e\u0432\u043e","This field is required.":"\u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.","Prev":"\u041d\u0430\u0437\u0430\u0434","Mon":"\u043f\u043d","Tue":"\u0432\u0442","Wed":"\u0441\u0440","Thu":"\u0447\u0442","Fri":"\u043f\u0442","Sat":"\u0441\u0431","Sun":"\u0432\u0441","January":"\u044f\u043d\u0432\u0430\u0440\u044f","February":"\u0444\u0435\u0432\u0440\u0430\u043b\u044f","March":"\u043c\u0430\u0440\u0442\u0430","April":"\u0430\u043f\u0440\u0435\u043b\u044f","May":"\u041c\u0430\u0439","June":"\u0438\u044e\u043d\u044f","July":"\u0438\u044e\u043b\u044f","August":"\u0430\u0432\u0433\u0443\u0441\u0442\u0430","September":"\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f","October":"\u043e\u043a\u0442\u044f\u0431\u0440\u044f","November":"\u043d\u043e\u044f\u0431\u0440\u044f","December":"\u0434\u0435\u043a\u0430\u0431\u0440\u044f","Select all rows in this table":"\u041e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","Deselect all rows in this table":"\u0421\u043d\u044f\u0442\u044c \u043e\u0442\u043c\u0435\u0442\u043a\u0443 \u0441\u043e \u0432\u0441\u0435\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u044b","Today":"\u0421\u0435\u0433\u043e\u0434\u043d\u044f","Jan":"\u044f\u043d\u0432","Mar":"\u043c\u0430\u0440","Apr":"\u0430\u043f\u0440","Jun":"\u0438\u044e\u043d","Jul":"\u0438\u044e\u043b","Aug":"\u0430\u0432\u0433","Sep":"\u0441\u0435\u043d","Oct":"\u043e\u043a\u0442","Nov":"\u043d\u043e\u044f","Dec":"\u0434\u0435\u043a","Su":"\u0432\u0441","Mo":"\u043f\u043d","Tu":"\u0432\u0442","We":"\u0441\u0440","Th":"\u0447\u0442","Fr":"\u043f\u0442","Sa":"\u0441\u0431","Not published":"\u041d\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e","Please wait...":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435...","mm\/dd\/yy":"mm\/dd\/yy","Only files with the following extensions are allowed: %files-allowed.":"\u041f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438: %files-allowed.","By @name on @date":"@name, @date","By @name":"@name","Not in menu":"\u041d\u0435 \u0432 \u043c\u0435\u043d\u044e","Alias: @alias":"\u0421\u0438\u043d\u043e\u043d\u0438\u043c: @alias","No alias":"\u0421\u0438\u043d\u043e\u043d\u0438\u043c \u043d\u0435 \u0437\u0430\u0434\u0430\u043d","New revision":"\u041d\u043e\u0432\u0430\u044f \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044f","Drag to re-order":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043c\u043e\u0436\u043d\u043e, \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0432 \u043f\u0443\u043d\u043a\u0442 \u043c\u044b\u0448\u043a\u043e\u0439.","Changes made in this table will not be saved until the form is submitted.":"\u0421\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0435 \u0432\u0441\u0442\u0443\u043f\u044f\u0442 \u0432 \u0441\u0438\u043b\u0443, \u043f\u043e\u043a\u0430 \u0432\u044b \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0438\u0445.","The changes to these blocks will not be saved until the \u003Cem\u003ESave blocks\u003C\/em\u003E button is clicked.":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0432 \u0431\u043b\u043e\u043a\u0430\u0445 \u043d\u0435 \u0432\u0441\u0442\u0443\u043f\u044f\u0442 \u0432 \u0441\u0438\u043b\u0443 \u043f\u043e\u043a\u0430 \u0432\u044b \u043d\u0435 \u043d\u0430\u0436\u043c\u0435\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u003Cem\u003E\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u003C\/em\u003E.","This permission is inherited from the authenticated user role."
37:"\u042d\u0442\u043e \u043f\u0440\u0430\u0432\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442 \u0440\u043e\u043b\u0438 \u00ab\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u00bb.","No revision":"\u041d\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u0438","@number comments per page":"@number \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443","Requires a title":"\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","Not restricted":"\u0411\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439","(active tab)":"(\u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0430)","Not customizable":"\u041d\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439","Restricted to certain pages":"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","The block cannot be placed in this region.":"\u0411\u043b\u043e\u043a \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0451\u043d \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438.","Hide summary":"\u0421\u043a\u0440\u044b\u0442\u044c \u0430\u043d\u043e\u043d\u0441","Edit summary":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u043e\u043d\u0441","Don\u0027t display post information":"\u041d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438","The selected file %filename cannot be uploaded. Only files with the following extensions are allowed: %extensions.":"\u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b %filename \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438: %extensions.","Re-order rows by numerical weight instead of dragging.":"\u0423\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e \u0432\u0435\u0441\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f.","Show row weights":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0435\u0441 \u0441\u0442\u0440\u043e\u043a","Hide row weights":"\u0421\u043a\u0440\u044b\u0442\u044c \u0432\u0435\u0441 \u0441\u0442\u0440\u043e\u043a","Autocomplete popup":"\u0412\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435","Searching for matches...":"\u041f\u043e\u0438\u0441\u043a \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439...","The response failed verification so will not be processed.":"\u041e\u0442\u0432\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0448\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.","The callback URL is not local and not trusted: !url":"URL-\u0430\u0434\u0440\u0435\u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0438 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c: !url","Other":"\u0414\u0440\u0443\u0433\u043e\u0435","Close":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c","Log messages":"\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0436\u0443\u0440\u043d\u0430\u043b","Please select a file.":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043b.","You are not allowed to operate on more than %num files.":"\u
370412\u0430\u043c \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u0441 %num \u0444\u0430\u0439\u043b\u0430\u043c\u0438.","Please specify dimensions within the allowed range that is from 1x1 to @dimensions.":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u043e\u0437\u043e\u043d\u0430 \u043e\u0442 1x1 \u0434\u043e @dimensions.","%filename is not an image.":"\u0424\u0430\u0439\u043b %filename \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c.","Do you want to refresh the current directory?":"\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u0430\u043f\u043a\u0443?","Delete selected files?":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b?","Please select a thumbnail.":"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0443.","You must select at least %num files.":"\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 %num \u0444\u0430\u0439\u043b\u043e\u0432.","You can not perform this operation.":"\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e.","Insert file":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b","Change view":"\u0421\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0438\u0434","Remove group":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0443","Apply (all displays)":"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c (\u0432\u0441\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f)","Apply (this display)":"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c (\u0434\u0430\u043d\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435)","Revert to default":"\u0412\u0435\u0440\u043d\u0443\u0442\u044c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","@count year from now":"@count \u0433\u043e\u0434 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430","@count years from now":"@count \u0433\u043e\u0434\u0430 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430","Available tokens":"\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b","Insert this token into your form":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0442\u043e\u043a\u0435\u043d \u0432 \u0432\u0430\u0448\u0443 \u0444\u043e\u0440\u043c\u0443","First click a text field to insert your tokens into.":"\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043b\u0438\u043a\u043d\u0438\u0442\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u044b.","Loading token browser...":"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0442\u043e\u043a\u0435\u043d\u043e\u0432...","Using defaults":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","Automatic alias":"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0438\u043d\u043e\u043d\u0438\u043c","Select all children":"\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435\u0445 \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432","Received an invali
vendor: 10,739 bytes, lines 37-43
37d response from the server.":"\u0421 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442.","List additional actions":"\u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439","Inclusion: @value":"\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435: @value","Priority: @value":"\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442: @value","Scheduled for publishing":"\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e","Scheduled for unpublishing":"\u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043d\u0430 \u0441\u043d\u044f\u0442\u0438\u0435 \u0441 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438","Not scheduled":"\u041d\u0435 \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e","Publishing enabled":"\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430","Unpublishing enabled":"\u0421\u043d\u044f\u0442\u0438\u0435 \u0441 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e"},"Geometry":{"Add point":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u0447\u043a\u0443","Add line":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u0438\u043d\u0438\u044e","Add polygone":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0438\u0433\u043e\u043d"}} };; 38/*! 39 Colorbox 1.6.4 40 license: MIT 41 http://www.jacklmoore.com/colorbox 42*/ 43(function(t,e,i){function n(i,n,o){var r=e.createElement(i);return n&&(r.id=Z+n),o&&(r.style.cssText=o),t(r)}function o(){return i.innerHeight?i.innerHeight:t(i).height()}function r(e,i){i!==Object(i)&&(i={}),this.cache={},this.el=e,this.value=function(e){var n;return void 0===this.cache[e]&&(n=t(this.el).attr("data-cbox-"+e),void 0!==n?this.cache[e]=n:void 0!==i[e]?this.cache[e]=i[e]:void 0!==X[e]&&(this.cache[e]=X[e])),this.cache[e]},this.get=function(e){var i=this.value(e);return t.isFunction(i)?i.call(this.el,this):i}}function h(t){var e=W.length,i=(A+t)%e;return 0>i?e+i:i}function a(t,e){return Math.round((/%/.test(t)?("x"===e?E.width():o())/100:1)*parseInt(t,10))}function s(t,e){return t.get("photo")||t.get("photoRegex").test(e)}function l(t,e){return t.get("retinaUrl")&&i.devicePixelRatio>1?e.replace(t.get("photoRegex"),t.get("retinaSuffix")):e}function d(t){"contains"in x[0]&&!x[0].contains(t.target)&&t.target!==v[0]&&(t.stopPropagation(),x.focus())}function c(t){c.str!==t&&(x.add(v).removeClass(c.str).addClass(t),c.str=t)}function g(e){A=0,e&&e!==!1&&"nofollow"!==e?(W=t("."+te).filter(function(){var i=t.data(this,Y),n=new r(this,i);return n.get("rel")===e}),A=W.index(_.el),-1===A&&(W=W.add(_.el),A=W.length-1)):W=t(_.el)}function u(i){t(e).trigger(i),ae.triggerHandler(i)}function f(i){var o;if(!G){if(o=t(i).data(Y),_=new r(i,o),g(_.get("rel")),!U){U=$=!0,c(_.get("className")),x.css({visibility:"hidden",display:"block",opacity:""}),I=n(se,"LoadedContent","width:0; height:0; overflow:hidden; visibility:hidden"),b.css({width:"",height:""}).append(I),j=T.height()+k.height()+b.outerHeight(!0)-b.height(),D=C.width()+H.width()+b.outerWidth(!0)-b.width(),N=I.outerHeight(!0),z=I.outerWidth(!0);var h=a(_.get("initialWidth"),"x"),s=a(_.get("initialHeight"),"y"),l=_.get("maxWidth"),f=_.get("maxHeight");_.w=Math.max((l!==!1?Math.min(h,a(l,"x")):h)-z-D,0),_.h=Math.max((f!==!1?Math.min(s,a(f,"y")):s)-N-j,0),I.css({width:"",height:_.h}),J.position(),u(ee),_.get("onOpen"),O.add(F).hide(),x.focus(),_.get("trapFocus")&&e.addEventListener&&(e.addEventListener("focus",d,!0),ae.one(re,function(){e.removeEventListener("focus",d,!0)})),_.get("returnFocus")&&ae.one(re,function(){t(_.el).focus()})}var p=parseFloat(_.get("opacity"));v.css({opacity:p===p?p:"",cursor:_.get("overlayClose")?"pointer":"",visibility:"visible"}).show(),_.get("closeButton")?B.html(_.get("close")).appendTo(b):B.appendTo("<div/>"),w()}}function p(){x||(V=!1,E=t(i),x=n(se).attr({id:Y,"class":t.support.opacity===!1?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),v=n(se,"Overlay").hide(),L=t([n(se,"LoadingOverlay")[0],n(se,"LoadingGraphic")[0]]),y=n(se,"Wrapper"),b=n(se,"Content").append(F=n(se,"Title"),R=n(se,"Current"),P=t('<button type="button"/>').attr({id:Z+"Previous"}),K=t('<button type="button"/>').attr({id:Z+"Next"}),S=t('<button type="button"/>').attr({id:Z+"Slideshow"}),L),B=t('<button type="button"/>').attr({id:Z+"Close"}),y.append(n(se).append(n(se,"TopLeft"),T=n(se,"TopCenter"),n(se,"TopRight")),n(se,!1,"clear:left").append(C=n(se,"MiddleLeft"),b,H=n(se,"MiddleRight")),n(se,!1,"clear:left").append(n(se,"BottomLeft"),k=n(se,"BottomCenter"),n(se,"BottomRight"))).find("div div").css({"float":"left"}),M=n(se,!1,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"),O=K.add(P).add(R).add(S)),e.body&&!x.parent().length&&t(e.body).append(v,x.append(y,M))}function m(){function i(t){t.which>1||t.shiftKey||t.altKey||t.metaKey||t.ctrlKey||(t.preventDefault(),f(this))}return x?(V||(V=!0,K.click(function(){J.next()}),P.click(function(){J.prev()}),B.click(function(){J.close()}),v.click(function(){_.get("overlayClose")&&J.close()}),t(e).bind("keydown."+Z,function(t){var e=t.keyCode;U&&_.get("escKey")&&27===e&&(t.preventDefault(),J.close()),U&&_.get("arrowKey")&&W[1]&&!t.altKey&&(37===e?(t.preventDefault(),P.click()):39===e&&(t.preventDefault(),K.click()))}),t.isFunction(t.fn.on)?t(e).on("click."+Z,"."+te,i):t("."+te).live("click."+Z,i)),!0):!1}function w(){var e,o,r,h=J.prep,d=++le;if($=!0,q=!1,u(he),u(ie),_.get("onLoad"),_.h=_.get("height")?a(_.get("height"),"y")-N-j:_.get("innerHeight")&&a(_.get("innerHeight"),"y"),_.w=_.get("width")?a(_.get("width"),"x")-z-D:_.get("innerWidth")&&a(_.get("innerWidth"),"x"),_.mw=_.w,_.mh=_.h,_.get("maxWidth")&&(_.mw=a(_.get("maxWidth"),"x")-z-D,_.mw=_.w&&_.w<_.mw?_.w:_.mw),_.get("maxHeight")&&(_.mh=a(_.get("maxHeight"),"y")-N-j,_.mh=_.h&&_.h<_.mh?_.h:_.mh),e=_.get("href"),Q=setTimeout(function(){L.show()},100),_.get("inline")){var c=t(e).eq(0);r=t("<div>").hide().insertBefore(c),ae.one(he,function(){r.replaceWith(c)}),h(c)}else _.get("iframe")?h(" "):_.get("html")?h(_.get("html")):s(_,e)?(e=l(_,e),q=_.get("createImg"),t(q).addClass(Z+"Photo").bind("error."+Z,function(){h(n(se,"Error").html(_.get("imgError")))}).one("load",function(){d===le&&setTimeout(function(){var e;_.get("retinaImage")&&i.devicePixelRatio>1&&(q.height=q.height/i.devicePixelRatio,q.width=q.width/i.devicePixelRatio),_.get("scalePhotos")&&(o=function(){q.height-=q.height*e,q.width-=q.width*e},_.mw&&q.width>_.mw&&(e=(q.width-_.mw)/q.width,o()),_.mh&&q.height>_.mh&&(e=(q.height-_.mh)/q.height,o())),_.h&&(q.style.marginTop=Math.max(_.mh-q.height,0)/2+"px"),W[1]&&(_.get("loop")||W[A+1])&&(q.style.cursor="pointer",t(q).bind("click."+Z,function(){J.next()})),q.style.width=q.width+"px",q.style.height=q.height+"px",h(q)},1)}),q.src=e):e&&M.load(e,_.get("data"),function(e,i){d===le&&h("error"===i?n(se,"Error").html(_.get("xhrError")):t(this).contents())})}var v,x,y,b,T,C,H,k,W,E,I,M,L,F,R,S,K,P,B,O,_,j,D,N,z,A,q,U,$,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,rel:function(){return this.rel},href:function(){return t(this).attr("href")},title:function(){return this.title},createImg:function(){var e=new Image,i=t(this).data("cbox-img-attrs");return"object"==typeof i&&t.each(i,function(t,i){e[t]=i}),e},createIframe:function(){var i=e.createElement("iframe"),n=t(this).data("cbox-iframe-attrs");return"object"==typeof n&&t.each(n,function(t,e){i[t]=e}),"frameBorder"in i&&(i.frameBorder=0),"allowTransparency"in i&&(i.allowTransparency="true"),i.name=(new Date).getTime(),i.allowFullscreen=!0,i}},Y="colorbox",Z="cbox",te=Z+"Element",ee=Z+"_open",ie=Z+"_load",ne=Z+"_complete",oe=Z+"_cleanup",re=Z+"_closed",he=Z+"_purge",ae=t("<a/>"),se="div",le=0,de={},ce=function(){function t(){clearTimeout(h)}function e(){(_.get("loop")||W[A+1])&&(t(),h=setTimeout(J.next,_.get("slideshowSpeed")))}function i(){S.html(_.get("slideshowStop")).unbind(s).one(s,n),ae.bind(ne,e).bind(ie,t),x.removeClass(a+"off").addClass(a+"on")}function n(){t(),ae.unbind(ne,e).unbind(ie,t),S.html(_.get("slideshowStart")).unbind(s).one(s,function(){J.next(),i()}),x.removeClass(a+"on").addClass(a+"off")}function o(){r=!1,S.hide(),t(),ae.unbind(ne,e).unbind(ie,t),x.removeClass(a+"off "+a+"on")}var r,h,a=Z+"Slideshow_",s="click."+Z;return function(){r?_.get("slideshow")||(ae.unbind(oe,o),o()):_.get("slideshow")&&W[1]&&(r=!0,ae.one(oe,o),_.get("slideshowAuto")?i():n(),S.show())}}();t[Y]||(t(p),J=t.fn[Y]=t[Y]=function(e,i){var n,o=this;return e=e||{},t.isFunction(o)&&(o=t("<a/>"),e.open=!0),o[0]?(p(),m()&&(i&&(e.onComplete=i),o.each(function(){var i=t.data(this,Y)||{};t.data(this,Y,t.extend(i,e))}).addClass(te),n=new r(o[0],e),n.get("open")&&f(o[0])),o):o},J.position=function(e,i){function n(){T[0].style.width=k[0].style.width=b[0].style.width=parseInt(x[0].style.width,10)-D+"px",b[0].style.height=C[0].style.height=H[0].style.height=parseInt(x[0].style.height,10)-j+"px"}var r,h,s,l=0,d=0,c=x.offset();if(E.unbind("resize."+Z),x.css({top:-9e4,left:-9e4}),h=E.scrollTop(),s=E.scrollLeft(),_.get("fixed")?(c.top-=h,c.left-=s,x.css({position:"fixed"})):(l=h,d=s,x.css({position:"absolute"})),d+=_.get("right")!==!1?Math.max(E.width()-_.w-z-D-a(_.get("right"),"x"),0):_.get("left")!==!1?a(_.get("left"),"x"):Math.round(Math.max(E.width()-_.w-z-D,0)/2),l+=_.get("bottom")!==!1?Math.max(o()-_.h-N-j-a(_.get("bottom"),"y"),0):_.get("top")!==!1?a(_.get("top"),"y"):Math.round(Math.max(o()-_.h-N-j,0)/2),x.css({top:c.top,left
43:c.left,visibility:"visible"}),y[0].style.width=y[0].style.height="9999px",r={width:_.w+z+D,height:_.h+N+j,top:l,left:d},e){var g=0;t.each(r,function(t){return r[t]!==de[t]?(g=e,void 0):void 0}),e=g}de=r,e||x.css(r),x.dequeue().animate(r,{duration:e||0,complete:function(){n(),$=!1,y[0].style.width=_.w+z+D+"px",y[0].style.height=_.h+N+j+"px",_.get("reposition")&&setTimeout(function(){E.bind("resize."+Z,J.position)},1),t.isFunction(i)&&i()},step:n})},J.resize=function(t){var e;U&&(t=t||{},t.width&&(_.w=a(t.width,"x")-z-D),t.innerWidth&&(_.w=a(t.innerWidth,"x")),I.css({width:_.w}),t.height&&(_.h=a(t.height,"y")-N-j),t.innerHeight&&(_.h=a(t.innerHeight,"y")),t.innerHeight||t.height||(e=I.scrollTop(),I.css({height:"auto"}),_.h=I.height()),I.css({height:_.h}),e&&I.scrollTop(e),J.position("none"===_.get("transition")?0:_.get("speed")))},J.prep=function(i){function o(){return _.w=_.w||I.width(),_.w=_.mw&&_.mw<_.w?_.mw:_.w,_.w}function a(){return _.h=_.h||I.height(),_.h=_.mh&&_.mh<_.h?_.mh:_.h,_.h}if(U){var d,g="none"===_.get("transition")?0:_.get("speed");I.remove(),I=n(se,"LoadedContent").append(i),I.hide().appendTo(M.show()).css({width:o(),overflow:_.get("scrolling")?"auto":"hidden"}).css({height:a()}).prependTo(b),M.hide(),t(q).css({"float":"none"}),c(_.get("className")),d=function(){function i(){t.support.opacity===!1&&x[0].style.removeAttribute("filter")}var n,o,a=W.length;U&&(o=function(){clearTimeout(Q),L.hide(),u(ne),_.get("onComplete")},F.html(_.get("title")).show(),I.show(),a>1?("string"==typeof _.get("current")&&R.html(_.get("current").replace("{current}",A+1).replace("{total}",a)).show(),K[_.get("loop")||a-1>A?"show":"hide"]().html(_.get("next")),P[_.get("loop")||A?"show":"hide"]().html(_.get("previous")),ce(),_.get("preloading")&&t.each([h(-1),h(1)],function(){var i,n=W[this],o=new r(n,t.data(n,Y)),h=o.get("href");h&&s(o,h)&&(h=l(o,h),i=e.createElement("img"),i.src=h)})):O.hide(),_.get("iframe")?(n=_.get("createIframe"),_.get("scrolling")||(n.scrolling="no"),t(n).attr({src:_.get("href"),"class":Z+"Iframe"}).one("load",o).appendTo(I),ae.one(he,function(){n.src="//about:blank"}),_.get("fastIframe")&&t(n).trigger("load")):o(),"fade"===_.get("transition")?x.fadeTo(g,1,i):i())},"fade"===_.get("transition")?x.fadeTo(g,0,function(){J.position(0,d)}):J.position(g,d)}},J.next=function(){!$&&W[1]&&(_.get("loop")||W[A+1])&&(A=h(1),f(W[A]))},J.prev=function(){!$&&W[1]&&(_.get("loop")||A)&&(A=h(-1),f(W[A]))},J.close=function(){U&&!G&&(G=!0,U=!1,u(oe),_.get("onCleanup"),E.unbind("."+Z),v.fadeTo(_.get("fadeOut")||0,0),x.stop().fadeTo(_.get("fadeOut")||0,0,function(){x.hide(),v.hide(),u(he),I.remove(),setTimeout(function(){G=!1,u(re),_.get("onClosed")},1)}))},J.remove=function(){x&&(x.stop(),t[Y].close(),x.stop(!1,!0).remove(),v.remove(),G=!1,x=null,t("."+te).removeData(Y).removeClass(te),t(e).unbind("click."+Z).unbind("keydown."+Z))},J.element=function(){return t(_.el)},J.settings=X)})(jQuery,document,window);; 44/** 45 * @file 46 * Colorbox module init js. 47 */ 48 49(function ($) { 50 51Drupal.behaviors.initColorbox = { 52 attach: function (context, settings) { 53 if (!$.isFunction($('a, area, input', context).colorbox) || typeof settings.colorbox === 'undefined') { 54 return; 55 } 56 57 if (settings.colorbox.mobiledetect && window.matchMedia) { 58 // Disable Colorbox for small screens. 59 var mq = window.matchMedia("(max-device-width: " + settings.colorbox.mobiledevicewidth + ")"); 60 if (mq.matches) { 61 return; 62 } 63 } 64 65 // Use "data-colorbox-gallery" if set otherwise use "rel". 66 settings.colorbox.rel = function () { 67 if ($(this).data('colorbox-gallery')) { 68 return $(this).data('colorbox-gallery'); 69 } 70 else { 71 return $(this).attr('rel'); 72 } 73 }; 74 75 $('.colorbox', context) 76 .once('init-colorbox').each(function(){ 77 // Only images are supported for the "colorbox" class. 78 // The "photo" setting forces the href attribute to be treated as an image. 79 var extendParams = { 80 photo: true 81 }; 82 // If a title attribute is supplied, sanitize it. 83 var title = $(this).attr('title'); 84 if (title) { 85 extendParams.title = Drupal.colorbox.sanitizeMarkup(title); 86 } 87 $(this).colorbox($.extend({}, settings.colorbox, extendParams)); 88 }); 89 90 $(context).bind('cbox_complete', function () { 91 Drupal.attachBehaviors($('#cboxLoadedContent')); 92 }); 93 } 94}; 95 96// Create colorbox namespace if it doesn't exist. 97if (!Drupal.hasOwnProperty('colorbox')) { 98 Drupal.colorbox = {}; 99} 100 101/** 102 * Global function to allow sanitizing captions and control strings. 103 * 104 * @param markup 105 * String containing potential markup. 106 * @return @string 107 * Sanitized string with potentially dangerous markup removed. 108 */ 109Drupal.colorbox.sanitizeMarkup = function(markup) { 110 // If DOMPurify installed, allow some HTML. Otherwise, treat as plain text. 111 if (typeof DOMPurify !== 'undefined') { 112 var purifyConfig = { 113 ALLOWED_TAGS: [ 114 'a', 115 'b', 116 'strong', 117 'i', 118 'em', 119 'u', 120 'cite', 121 'code', 122 'br' 123 ], 124 ALLOWED_ATTR: [ 125 'href', 126 'hreflang', 127 'title', 128 'target' 129 ] 130 } 131 if (Drupal.settings.hasOwnProperty('dompurify_custom_config')) { 132 purifyConfig = Drupal.settings.dompurify_custom_config; 133 } 134 return DOMPurify.sanitize(markup, purifyConfig); 135 } 136 else { 137 return Drupal.checkPlain(markup); 138 } 139} 140 141})(jQuery); 142; 143(function ($) { 144 145/** 146 * A progressbar object. Initialized with the given id. Must be inserted into 147 * the DOM afterwards through progressBar.element. 148 * 149 * method is the function which will perform the HTTP request to get the 150 * progress bar state. Either "GET" or "POST". 151 * 152 * e.g. pb = new progressBar('myProgressBar'); 153 * some_element.appendChild(pb.element); 154 */ 155Drupal.progressBar = function (id, updateCallback, method, errorCallback) { 156 var pb = this; 157 this.id = id; 158 this.method = method || 'GET'; 159 this.updateCallback = updateCallback; 160 this.errorCallback = errorCallback; 161
162 // The WAI-ARIA setting aria-live="polite" will announce changes after users 163 // have completed their current activity and not interrupt the screen reader. 164 this.element = $('<div class="progress" aria-live="polite"></div>').attr('id', id); 165 this.element.html('<div class="bar"><div class="filled"></div></div>' + 166 '<div class="percentage"></div>' + 167 '<div class="message"> </div>'); 168}; 169 170/** 171 * Set the percentage and status message for the progressbar. 172 */ 173Drupal.progressBar.prototype.setProgress = function (percentage, message) { 174 if (percentage >= 0 && percentage <= 100) { 175 $('div.filled', this.element).css('width', percentage + '%'); 176 $('div.percentage', this.element).html(percentage + '%'); 177 } 178 $('div.message', this.element).html(message); 179 if (this.updateCallback) { 180 this.updateCallback(percentage, message, this); 181 } 182}; 183 184/** 185 * Start monitoring progress via Ajax. 186 */ 187Drupal.progressBar.prototype.startMonitoring = function (uri, delay) { 188 this.delay = delay; 189 this.uri = uri; 190 this.sendPing(); 191}; 192 193/** 194 * Stop monitoring progress via Ajax. 195 */ 196Drupal.progressBar.prototype.stopMonitoring = function () { 197 clearTimeout(this.timer); 198 // This allows monitoring to be stopped from within the callback. 199 this.uri = null; 200}; 201 202/** 203 * Request progress data from server. 204 */ 205Drupal.progressBar.prototype.sendPing = function () { 206 if (this.timer) { 207 clearTimeout(this.timer); 208 } 209 if (this.uri) { 210 var pb = this; 211 // When doing a post request, you need non-null data. Otherwise a 212 // HTTP 411 or HTTP 406 (with Apache mod_security) error may result. 213 $.ajax({ 214 type: this.method, 215 url: this.uri, 216 data: '', 217 dataType: 'json', 218 success: function (progress) { 219 // Display errors. 220 if (progress.status == 0) { 221 pb.displayError(progress.data); 222 return; 223 } 224 // Update display. 225 pb.setProgress(progress.percentage, progress.message); 226 // Schedule next timer. 227 pb.timer = setTimeout(function () { pb.sendPing(); }, pb.delay); 228 }, 229 error: function (xmlhttp) { 230 pb.displayError(Drupal.ajaxError(xmlhttp, pb.uri)); 231 } 232 }); 233 } 234}; 235 236/** 237 * Display errors on the page. 238 */ 239Drupal.progressBar.prototype.displayError = function (string) { 240 var error = $('<div class="messages error"></div>').html(string); 241 $(this.element).before(error).hide(); 242 243 if (this.errorCallback) { 244 this.errorCallback(this); 245 } 246}; 247 248})(jQuery); 249; 250/** 251 * @file 252 * 253 * Implement a modal form. 254 * 255 * @see modal.inc for documentation. 256 * 257 * This javascript relies on the CTools ajax responder. 258 */ 259 260(function ($) { 261 // Make sure our objects are defined. 262 Drupal.CTools = Drupal.CTools || {}; 263 Drupal.CTools.Modal = Drupal.CTools.Modal || {}; 264 265 /** 266 * Display the modal 267 * 268 * @todo -- document the settings. 269 */ 270 Drupal.CTools.Modal.show = function(choice) { 271 var opts = {}; 272 273 if (choice && typeof choice == 'string' && Drupal.settings[choice]) { 274 // This notation guarantees we are actually copying it. 275 $.extend(true, opts, Drupal.settings[choice]); 276 } 277 else if (choice) { 278 $.extend(true, opts, choice); 279 } 280 281 var defaults = { 282 modalTheme: 'CToolsModalDialog', 283 throbberTheme: 'CToolsModalThrobber', 284 animation: 'show', 285 animationSpeed: 'fast', 286 modalSize: { 287 type: 'scale', 288 width: .8, 289 height: .8, 290 addWidth: 0, 291 addHeight: 0, 292 // How much to remove from the inner content to make space for the 293 // theming. 294 contentRight: 25, 295 contentBottom: 45 296 }, 297 modalOptions: { 298 opacity: .55, 299 background: '#fff' 300 }, 301 modalClass: 'default' 302 }; 303 304 var settings = {}; 305 $.extend(true, settings, defaults, Drupal.settings.CToolsModal, opts); 306 307 if (Drupal.CTools.Modal.currentSettings && Drupal.CTools.Modal.currentSettings != settings) { 308 Drupal.CTools.Modal.modal.remove(); 309 Drupal.CTools.Modal.modal = null; 310 } 311 312 Drupal.CTools.Modal.currentSettings = settings; 313 314 var resize = function(e) { 315 // When creating the modal, it actually exists only in a theoretical 316 // place that is not in the DOM. But once the modal exists, it is in the 317 // DOM so the context must be set appropriately. 318 var context = e ? document : Drupal.CTools.Modal.modal; 319 320 if (Drupal.CTools.Modal.currentSettings.modalSize.type == 'scale') { 321 var width = $(window).width() * Drupal.CTools.Modal.currentSettings.modalSize.width; 322 var height = $(window).height() * Drupal.CTools.Modal.currentSettings.modalSize.height; 323 } 324 else { 325 var width = Drupal.CTools.Modal.currentSettings.modalSize.width; 326 var height = Drupal.CTools.Modal.currentSettings.modalSize.height; 327 } 328 329 // Use the additionol pixels for creating the width and height. 330 $('div.ctools-modal-content', context).css({ 331 'width': width + Drupal.CTools.Modal.currentSettings.modalSize.addWidth + 'px', 332 'height': height + Drupal.CTools.Modal.currentSettings.modalSize.addHeight + 'px' 333 });
334 $('div.ctools-modal-content .modal-content', context).css({ 335 'width': (width - Drupal.CTools.Modal.currentSettings.modalSize.contentRight) + 'px', 336 'height': (height - Drupal.CTools.Modal.currentSettings.modalSize.contentBottom) + 'px' 337 }); 338 }; 339 340 if (!Drupal.CTools.Modal.modal) { 341 Drupal.CTools.Modal.modal = $(Drupal.theme(settings.modalTheme)); 342 if (settings.modalSize.type == 'scale') { 343 $(window).bind('resize', resize); 344 } 345 } 346 347 resize(); 348 349 $('span.modal-title', Drupal.CTools.Modal.modal).html(Drupal.CTools.Modal.currentSettings.loadingText); 350 Drupal.CTools.Modal.modalContent(Drupal.CTools.Modal.modal, settings.modalOptions, settings.animation, settings.animationSpeed, settings.modalClass); 351 $('#modalContent .modal-content').html(Drupal.theme(settings.throbberTheme)).addClass('ctools-modal-loading'); 352 353 // Position autocomplete results based on the scroll position of the modal. 354 $('#modalContent .modal-content').delegate('input.form-autocomplete', 'keyup', function() { 355 $('#autocomplete').css('top', $(this).position().top + $(this).outerHeight() + $(this).offsetParent().filter('#modal-content').scrollTop()); 356 }); 357 }; 358 359 /** 360 * Hide the modal 361 */ 362 Drupal.CTools.Modal.dismiss = function() { 363 if (Drupal.CTools.Modal.modal) { 364 Drupal.CTools.Modal.unmodalContent(Drupal.CTools.Modal.modal); 365 } 366 }; 367 368 /** 369 * Provide the HTML to create the modal dialog. 370 */ 371 Drupal.theme.prototype.CToolsModalDialog = function () { 372 var html = ''; 373 html += '<div id="ctools-modal">'; 374 html += ' <div class="ctools-modal-content">'; // panels-modal-content 375 html += ' <div class="modal-header">'; 376 html += ' <a class="close" href="#">'; 377 html += Drupal.CTools.Modal.currentSettings.closeText + Drupal.CTools.Modal.currentSettings.closeImage; 378 html += ' </a>'; 379 html += ' <span id="modal-title" class="modal-title"> </span>'; 380 html += ' </div>'; 381 html += ' <div id="modal-content" class="modal-content">'; 382 html += ' </div>'; 383 html += ' </div>'; 384 html += '</div>'; 385 386 return html; 387 }; 388 389 /** 390 * Provide the HTML to create the throbber. 391 */ 392 Drupal.theme.prototype.CToolsModalThrobber = function () { 393 var html = ''; 394 html += '<div id="modal-throbber">'; 395 html += ' <div class="modal-throbber-wrapper">'; 396 html += Drupal.CTools.Modal.currentSettings.throbber; 397 html += ' </div>'; 398 html += '</div>'; 399 400 return html; 401 }; 402 403 /** 404 * Figure out what settings string to use to display a modal. 405 */ 406 Drupal.CTools.Modal.getSettings = function (object) { 407 var match = $(object).attr('class').match(/ctools-modal-(\S+)/); 408 if (match) { 409 return match[1]; 410 } 411 }; 412 413 /** 414 * Click function for modals that can be cached. 415 */ 416 Drupal.CTools.Modal.clickAjaxCacheLink = function () { 417 Drupal.CTools.Modal.show(Drupal.CTools.Modal.getSettings(this)); 418 return Drupal.CTools.AJAX.clickAJAXCacheLink.apply(this); 419 }; 420 421 /** 422 * Handler to prepare the modal for the response 423 */ 424 Drupal.CTools.Modal.clickAjaxLink = function () { 425 Drupal.CTools.Modal.show(Drupal.CTools.Modal.getSettings(this)); 426 return false; 427 }; 428 429 /** 430 * Submit responder to do an AJAX submit on all modal forms. 431 */ 432 Drupal.CTools.Modal.submitAjaxForm = function(e) { 433 var $form = $(this); 434 var url = $form.attr('action'); 435 436 setTimeout(function() { Drupal.CTools.AJAX.ajaxSubmit($form, url); }, 1); 437 return false; 438 }; 439 440 /** 441 * Bind links that will open modals to the appropriate function. 442 */ 443 Drupal.behaviors.ZZCToolsModal = { 444 attach: function(context) { 445 // Bind links 446 // Note that doing so in this order means that the two classes can be 447 // used together safely. 448 /* 449 * @todo remimplement the warm caching feature 450 $('a.ctools-use-modal-cache', context).once('ctools-use-modal', function() { 451 $(this).click(Drupal.CTools.Modal.clickAjaxCacheLink); 452 Drupal.CTools.AJAX.warmCache.apply(this); 453 }); 454 */ 455 456 $('area.ctools-use-modal, a.ctools-use-modal', context).once('ctools-use-modal', function() { 457 var $this = $(this); 458 $this.click(Drupal.CTools.Modal.clickAjaxLink); 459 // Create a drupal ajax object 460 var element_settings = {}; 461 if ($this.attr('href')) { 462 element_settings.url = $this.attr('href'); 463 element_settings.event = 'click'; 464 element_settings.progress = { type: 'throbber' }; 465 } 466 var base = $this.attr('href'); 467 Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings); 468 }); 469 470 // Bind buttons 471 $('input.ctools-use-modal, button.ctools-use-modal', context).once('ctools-use-modal', function() { 472 var $this = $(this); 473 $this.click(Drupal.CTools.Modal.clickAjaxLink); 474 var button = this; 475 var element_settings = {}; 476 477 // AJAX submits specified in this manner automatically submit to the 478 // normal form action. 479 element_settings.url = Drupal.CTools.Modal.findURL(this); 480 if (element_settings.url == '') { 481 element_settings.url = $(this).closest('form').attr('action'); 482 } 483 element_settings.event = 'click'; 484 element_settings.setClick = true; 485 486 var base = $this.attr('id'); 487 Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings); 488 489 // Make sure changes to settings are reflected in the URL. 490 $('.' + $(button).attr('id') + '-url').change(function() { 491 Drupal.ajax[base].options.url = Drupal.CTools.Modal.findURL(button); 492 }); 493 }); 494 495 // Bind our custom event to the form submit
496 $('#modal-content form', context).once('ctools-use-modal', function() { 497 var $this = $(this); 498 var element_settings = {}; 499 500 element_settings.url = $this.attr('action'); 501 element_settings.event = 'submit'; 502 element_settings.progress = { 'type': 'throbber' }; 503 var base = $this.attr('id'); 504 505 Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings); 506 Drupal.ajax[base].form = $this; 507 508 $('input[type=submit], button', this).click(function(event) { 509 Drupal.ajax[base].element = this; 510 this.form.clk = this; 511 // Stop autocomplete from submitting. 512 if (Drupal.autocompleteSubmit && !Drupal.autocompleteSubmit()) { 513 return false; 514 } 515 // An empty event means we were triggered via .click() and 516 // in jquery 1.4 this won't trigger a submit. 517 // We also have to check jQuery version to prevent 518 // IE8 + jQuery 1.4.4 to break on other events 519 // bound to the submit button. 520 if (jQuery.fn.jquery.substr(0, 3) === '1.4' && typeof event.bubbles === "undefined") { 521 $(this.form).trigger('submit'); 522 return false; 523 } 524 }); 525 }); 526 527 // Bind a click handler to allow elements with the 'ctools-close-modal' 528 // class to close the modal. 529 $('.ctools-close-modal', context).once('ctools-close-modal') 530 .click(function() { 531 Drupal.CTools.Modal.dismiss(); 532 return false; 533 }); 534 } 535 }; 536 537 // The following are implementations of AJAX responder commands. 538 539 /** 540 * AJAX responder command to place HTML within the modal. 541 */ 542 Drupal.CTools.Modal.modal_display = function(ajax, response, status) { 543 var settings = response.settings || ajax.settings || Drupal.settings; 544 // If the modal does not exist yet, create it. 545 if ($('#modalContent').length == 0) { 546 Drupal.CTools.Modal.show(Drupal.CTools.Modal.getSettings(ajax.element)); 547 } 548 // If the modal exists run detachBehaviors before removing existing content. 549 else { 550 Drupal.detachBehaviors($('#modalContent'), settings, 'unload'); 551 } 552 $('#modal-title').html(response.title); 553 // Simulate an actual page load by scrolling to the top after adding the 554 // content. This is helpful for allowing users to see error messages at the 555 // top of a form, etc. 556 $('#modal-content').html(response.output).scrollTop(0); 557 $(document).trigger('CToolsAttachBehaviors', $('#modalContent')); 558 559 // Attach behaviors within a modal dialog. 560 Drupal.attachBehaviors($('#modalContent'), settings); 561 562 if ($('#modal-content').hasClass('ctools-modal-loading')) { 563 $('#modal-content').removeClass('ctools-modal-loading'); 564 } 565 else { 566 // If the modal was already shown, and we are simply replacing its 567 // content, then focus on the first focusable element in the modal. 568 // (When first showing the modal, focus will be placed on the close 569 // button by the show() function called above.) 570 $('#modal-content :focusable:first').focus(); 571 } 572 }; 573 574 /** 575 * AJAX responder command to dismiss the modal. 576 */ 577 Drupal.CTools.Modal.modal_dismiss = function(command) { 578 Drupal.CTools.Modal.dismiss(); 579 $('link.ctools-temporary-css').remove(); 580 }; 581 582 /** 583 * Display loading 584 */ 585 //Drupal.CTools.AJAX.commands.modal_loading = function(command) { 586 Drupal.CTools.Modal.modal_loading = function(command) { 587 Drupal.CTools.Modal.modal_display({ 588 output: Drupal.theme(Drupal.CTools.Modal.currentSettings.throbberTheme), 589 title: Drupal.CTools.Modal.currentSettings.loadingText 590 }); 591 }; 592 593 /** 594 * Find a URL for an AJAX button. 595 * 596 * The URL for this gadget will be composed of the values of items by 597 * taking the ID of this item and adding -url and looking for that 598 * class. They need to be in the form in order since we will 599 * concat them all together using '/'. 600 */ 601 Drupal.CTools.Modal.findURL = function(item) { 602 var url = ''; 603 var url_class = '.' + $(item).attr('id') + '-url'; 604 $(url_class).each( 605 function() { 606 var $this = $(this); 607 if (url && $this.val()) { 608 url += '/'; 609 } 610 url += $this.val(); 611 }); 612 return url; 613 }; 614 615 616 /** 617 * modalContent 618 * @param content string to display in the content box 619 * @param css obj of css attributes 620 * @param animation (fadeIn, slideDown, show) 621 * @param speed (valid animation speeds slow, medium, fast or # in ms) 622 * @param modalClass class added to div#modalContent 623 */ 624 Drupal.CTools.Modal.modalContent = function(content, css, animation, speed, modalClass) { 625 // If our animation isn't set, make it just show/pop 626 if (!animation) { 627 animation = 'show'; 628 } 629 else { 630 // If our animation isn't "fadeIn" or "slideDown" then it always is show 631 if (animation != 'fadeIn' && animation != 'slideDown') { 632 animation = 'show'; 633 } 634 } 635 636 if (!speed && 0 !== speed) { 637 speed = 'fast'; 638 } 639 640 // Build our base attributes and allow them to be overriden 641 css = jQuery.extend({ 642 position: 'absolute', 643 left: '0px', 644 margin: '0px', 645 background: '#000', 646 opacity: '.55' 647 }, css); 648 649 // Add opacity handling for IE. 650 css.filter = 'alpha(opacity=' + (100 * css.opacity) + ')'; 651 content.hide(); 652 653 // If we already have modalContent, remove it. 654 if ($('#modalBackdrop').length) $('#modalBackdrop').remove(); 655 if ($('#modalContent').length) $('#modalContent').remove(); 656 657 // position code lifted from http://www.quirksmode.org/viewport/compatibility.html 658 if (self.pageYOffset) { // all except Explorer 659 var wt = self.pageYOffset; 660 } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict 661 var wt = document.documentElement.scrollTop; 662 } else if (document.body) { // all other Explorers 663 var wt = document.body.scrollTop; 664 } 665 666 // Get our dimensions 667 668 // Get the docHeight and (ugly hack) add 50 pixels to make sure we dont have a *visible* border below our div 669 var docHeight = $(document).height() + 50; 670 var docWidth = $(document).width(); 671 var winHeight = $(window).height(); 672 var winWidth = $(window).width();
673 if( docHeight < winHeight ) docHeight = winHeight; 674 675 // Create our divs 676 $('body').append('<div id="modalBackdrop" class="backdrop-' + modalClass + '" style="z-index: 1000; display: none;"></div><div id="modalContent" class="modal-' + modalClass + '" style="z-index: 1001; position: absolute;">' + $(content).html() + '</div>'); 677 678 // Get a list of the tabbable elements in the modal content. 679 var getTabbableElements = function () { 680 var tabbableElements = $('#modalContent :tabbable'), 681 radioButtons = tabbableElements.filter('input[type="radio"]'); 682 683 // The list of tabbable elements from jQuery is *almost* right. The 684 // exception is with groups of radio buttons. The list from jQuery will 685 // include all radio buttons, when in fact, only the selected radio button 686 // is tabbable, and if no radio buttons in a group are selected, then only 687 // the first is tabbable. 688 if (radioButtons.length > 0) { 689 // First, build up an index of which groups have an item selected or not. 690 var anySelected = {}; 691 radioButtons.each(function () { 692 var name = this.name; 693 694 if (typeof anySelected[name] === 'undefined') { 695 anySelected[name] = radioButtons.filter('input[name="' + name + '"]:checked').length !== 0; 696 } 697 }); 698 699 // Next filter out the radio buttons that aren't really tabbable. 700 var found = {}; 701 tabbableElements = tabbableElements.filter(function () { 702 var keep = true; 703 704 if (this.type == 'radio') { 705 if (anySelected[this.name]) { 706 // Only keep the selected one. 707 keep = this.checked; 708 } 709 else { 710 // Only keep the first one. 711 if (found[this.name]) { 712 keep = false; 713 } 714 found[this.name] = true; 715 } 716 } 717 718 return keep; 719 }); 720 } 721 722 return tabbableElements.get(); 723 }; 724 725 // Keyboard and focus event handler ensures only modal elements gain focus. 726 modalEventHandler = function( event ) { 727 target = null; 728 if ( event ) { //Mozilla 729 target = event.target; 730 } else { //IE 731 event = window.event; 732 target = event.srcElement; 733 } 734 735 var parents = $(target).parents().get(); 736 for (var i = 0; i < parents.length; ++i) { 737 var position = $(parents[i]).css('position'); 738 if (position == 'absolute' || position == 'fixed') { 739 return true; 740 } 741 } 742 743 if ($(target).is('#modalContent, body') || $(target).filter('*:visible').parents('#modalContent').length) { 744 // Allow the event only if target is a visible child node 745 // of #modalContent. 746 return true; 747 } 748 else { 749 getTabbableElements()[0].focus(); 750 } 751 752 event.preventDefault(); 753 }; 754 $('body').bind( 'focus', modalEventHandler ); 755 $('body').bind( 'keypress', modalEventHandler ); 756 757 // Keypress handler Ensures you can only TAB to elements within the modal. 758 // Based on the psuedo-code from WAI-ARIA 1.0 Authoring Practices section 759 // 3.3.1 "Trapping Focus". 760 modalTabTrapHandler = function (evt) { 761 // We only care about the TAB key. 762 if (evt.which != 9) { 763 return true; 764 } 765 766 var tabbableElements = getTabbableElements(), 767 firstTabbableElement = tabbableElements[0], 768 lastTabbableElement = tabbableElements[tabbableElements.length - 1], 769 singleTabbableElement = firstTabbableElement == lastTabbableElement, 770 node = evt.target; 771 772 // If this is the first element and the user wants to go backwards, then 773 // jump to the last element. 774 if (node == firstTabbableElement && evt.shiftKey) { 775 if (!singleTabbableElement) { 776 lastTabbableElement.focus(); 777 } 778 return false; 779 } 780 // If this is the last element and the user wants to go forwards, then 781 // jump to the first element. 782 else if (node == lastTabbableElement && !evt.shiftKey) { 783 if (!singleTabbableElement) { 784 firstTabbableElement.focus(); 785 } 786 return false;
787 } 788 // If this element isn't in the dialog at all, then jump to the first 789 // or last element to get the user into the game. 790 else if ($.inArray(node, tabbableElements) == -1) { 791 // Make sure the node isn't in another modal (ie. WYSIWYG modal). 792 var parents = $(node).parents().get(); 793 for (var i = 0; i < parents.length; ++i) { 794 var position = $(parents[i]).css('position'); 795 if (position == 'absolute' || position == 'fixed') { 796 return true; 797 } 798 } 799 800 if (evt.shiftKey) { 801 lastTabbableElement.focus(); 802 } 803 else { 804 firstTabbableElement.focus(); 805 } 806 } 807 }; 808 $('body').bind('keydown', modalTabTrapHandler); 809 810 // Create our content div, get the dimensions, and hide it 811 var modalContent = $('#modalContent').css('top','-1000px'); 812 var $modalHeader = modalContent.find('.modal-header'); 813 var mdcTop = wt + Math.max((winHeight / 2) - (modalContent.outerHeight() / 2), 0); 814 var mdcLeft = ( winWidth / 2 ) - ( modalContent.outerWidth() / 2); 815 $('#modalBackdrop').css(css).css('top', 0).css('height', docHeight + 'px').css('width', docWidth + 'px').show(); 816 modalContent.css({top: mdcTop + 'px', left: mdcLeft + 'px'}).hide()[animation](speed); 817 818 // Bind a click for closing the modalContent 819 modalContentClose = function(){close(); return false;}; 820 $('.close', $modalHeader).bind('click', modalContentClose); 821 822 // Bind a keypress on escape for closing the modalContent 823 modalEventEscapeCloseHandler = function(event) { 824 if (event.keyCode == 27) { 825 close(); 826 return false; 827 } 828 }; 829 830 $(document).bind('keydown', modalEventEscapeCloseHandler); 831 832 // Per WAI-ARIA 1.0 Authoring Practices, initial focus should be on the 833 // close button, but we should save the original focus to restore it after 834 // the dialog is closed. 835 var oldFocus = document.activeElement; 836 $('.close', $modalHeader).focus(); 837 838 // Close the open modal content and backdrop 839 function close() { 840 // Unbind the events 841 $(window).unbind('resize', modalContentResize); 842 $('body').unbind( 'focus', modalEventHandler); 843 $('body').unbind( 'keypress', modalEventHandler ); 844 $('body').unbind( 'keydown', modalTabTrapHandler ); 845 $('.close', $modalHeader).unbind('click', modalContentClose); 846 $(document).unbind('keydown', modalEventEscapeCloseHandler); 847 $(document).trigger('CToolsCloseModalBehaviors', $('#modalContent')); 848 $(document).trigger('CToolsDetachBehaviors', $('#modalContent')); 849 850 // Closing animation. 851 switch (animation) { 852 case 'fadeIn': 853 modalContent.fadeOut(speed, modalContentRemove); 854 break; 855 856 case 'slideDown': 857 modalContent.slideUp(speed, modalContentRemove); 858 break; 859 860 case 'show': 861 modalContent.hide(speed, modalContentRemove); 862 break; 863 } 864 } 865 866 // Remove the content. 867 modalContentRemove = function () { 868 $('#modalContent').remove(); 869 $('#modalBackdrop').remove(); 870 871 // Restore focus to where it was before opening the dialog. 872 $(oldFocus).focus(); 873 }; 874 875 // Move and resize the modalBackdrop and modalContent on window resize. 876 modalContentResize = function () { 877 // Reset the backdrop height/width to get accurate document size. 878 $('#modalBackdrop').css('height', '').css('width', ''); 879 880 // Position code lifted from: 881 // http://www.quirksmode.org/viewport/compatibility.html 882 if (self.pageYOffset) { // all except Explorer 883 var wt = self.pageYOffset; 884 } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict 885 var wt = document.documentElement.scrollTop; 886 } else if (document.body) { // all other Explorers 887 var wt = document.body.scrollTop; 888 } 889 890 // Get our heights 891 var docHeight = $(document).height(); 892 var docWidth = $(document).width(); 893 var winHeight = $(window).height(); 894 var winWidth = $(window).width();
895 if( docHeight < winHeight ) docHeight = winHeight; 896 897 // Get where we should move content to 898 var modalContent = $('#modalContent'); 899 var mdcTop = wt + Math.max((winHeight / 2) - (modalContent.outerHeight() / 2), 0); 900 var mdcLeft = ( winWidth / 2 ) - ( modalContent.outerWidth() / 2); 901 902 // Apply the changes 903 $('#modalBackdrop').css('height', docHeight + 'px').css('width', docWidth + 'px').show(); 904 modalContent.css('top', mdcTop + 'px').css('left', mdcLeft + 'px').show(); 905 }; 906 $(window).bind('resize', modalContentResize); 907 }; 908 909 /** 910 * unmodalContent 911 * @param content (The jQuery object to remove) 912 * @param animation (fadeOut, slideUp, show) 913 * @param speed (valid animation speeds slow, medium, fast or # in ms) 914 */ 915 Drupal.CTools.Modal.unmodalContent = function(content, animation, speed) 916 { 917 // If our animation isn't set, make it just show/pop 918 if (!animation) { var animation = 'show'; } else { 919 // If our animation isn't "fade" then it always is show 920 if (( animation != 'fadeOut' ) && ( animation != 'slideUp')) animation = 'show'; 921 } 922 // Set a speed if we dont have one 923 if ( !speed ) var speed = 'fast'; 924 925 // Unbind the events we bound 926 $(window).unbind('resize', modalContentResize); 927 $('body').unbind('focus', modalEventHandler); 928 $('body').unbind('keypress', modalEventHandler); 929 $('body').unbind( 'keydown', modalTabTrapHandler ); 930 var $modalContent = $('#modalContent'); 931 var $modalHeader = $modalContent.find('.modal-header'); 932 $('.close', $modalHeader).unbind('click', modalContentClose); 933 $(document).unbind('keydown', modalEventEscapeCloseHandler); 934 $(document).trigger('CToolsDetachBehaviors', $modalContent); 935 936 // jQuery magic loop through the instances and run the animations or removal. 937 content.each(function(){ 938 if ( animation == 'fade' ) { 939 $('#modalContent').fadeOut(speed, function() { 940 $('#modalBackdrop').fadeOut(speed, function() { 941 $(this).remove(); 942 }); 943 $(this).remove(); 944 }); 945 } else { 946 if ( animation == 'slide' ) { 947 $('#modalContent').slideUp(speed,function() { 948 $('#modalBackdrop').slideUp(speed, function() { 949 $(this).remove(); 950 }); 951 $(this).remove(); 952 }); 953 } else { 954 $('#modalContent').remove(); 955 $('#modalBackdrop').remove(); 956 } 957 } 958 }); 959 }; 960 961$(function() { 962 Drupal.ajax.prototype.commands.modal_display = Drupal.CTools.Modal.modal_display; 963 Drupal.ajax.prototype.commands.modal_dismiss = Drupal.CTools.Modal.modal_dismiss; 964}); 965 966})(jQuery); 967; 968/** 969* Provide the HTML to create the modal dialog. 970*/ 971Drupal.theme.prototype.ModalFormsPopup = function () { 972 var html = ''; 973 974 html += '<div id="ctools-modal" class="popups-box">'; 975 html += ' <div class="ctools-modal-content modal-forms-modal-content">'; 976 html += ' <div class="popups-container">'; 977 html += ' <div class="modal-header popups-title">'; 978 html += ' <span id="modal-title" class="modal-title"></span>'; 979 html += ' <span class="popups-close close">' + Drupal.CTools.Modal.currentSettings.closeText + '</span>'; 980 html += ' <div class="clear-block"></div>'; 981 html += ' </div>'; 982 html += ' <div class="modal-scroll"><div id="modal-content" class="modal-content popups-body"></div></div>'; 983 html += ' </div>'; 984 html += ' </div>'; 985 html += '</div>'; 986 987 return html; 988} 989;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.