Drupal.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.":"HTTP \u0437\u0430\u043f\u0440\u043e\u0441 AJAX \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.","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":"\u0421\u0442\u0430\u0442\u0443\u0441\u0422\u0435\u043a\u0441\u0442: !statusText","ResponseText: !responseText":"ResponseText: !responseText","ReadyState: !readyState":"ReadyState: !readyState","Hide":"\u0421\u043a\u0440\u044b\u0442\u044c","Show":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c","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","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.":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u044f\u0442 \u0432 \u0441\u0438\u043b\u0443 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0440\u043c\u044b.","Edit":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c","Configure":"\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c","This field is required.":"\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.","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...","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","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.":"\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\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\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","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":"\u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\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 \u044d\u0442\u043e\u043c \u0440\u0435\u0433\u0438\u043e\u043d\u0435.","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't 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 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430","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.","Autocomplete popup":"\u0412\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u0430\u0432\u0442\u043e\u0437\u0430\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...","Automatic alias":"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c","Insert this token into your form":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0430\u0440\u043a\u0435\u0440 \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 \u0432 \u043d\u0435\u0433\u043e \u0432\u0430\u0448\u0438 \u043c\u0430\u0440\u043a\u0435\u0440\u044b.","jQuery UI Tabs: Mismatching fragment identifier.":"jQuery UI Tabs: \u041d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430.","jQuery UI Tabs: Not enough arguments to add tab.":"jQuery UI Tabs: \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0438."} };;
(function ($) {

$(document).ready(function() {

  // Accepts a string; returns the string with regex metacharacters escaped. The returned string
  // can safely be used at any point within a regex to match the provided literal string. Escaped
  // characters are [ ] { } ( ) * + ? - . , \ ^ $ # and whitespace. The character | is excluded
  // in this function as it's used to separate the domains names.
  RegExp.escapeDomains = function(text) {
    return (text) ? text.replace(/[-[\]{}()*+?.,\\^$#\s]/g, "\\$&") : '';
  }

  // Attach onclick event to document only and catch clicks on all elements.
  $(document.body).click(function(event) {
    // Catch the closest surrounding link of a clicked element.
    $(event.target).closest("a,area").each(function() {

      var ga = Drupal.settings.googleanalytics;
      // Expression to check for absolute internal links.
      var isInternal = new RegExp("^(https?):\/\/" + window.location.host, "i");
      // Expression to check for special links like gotwo.module /go/* links.
      var isInternalSpecial = new RegExp("(\/go\/.*)$", "i");
      // Expression to check for download links.
      var isDownload = new RegExp("\\.(" + ga.trackDownloadExtensions + ")$", "i");
      // Expression to check for the sites cross domains.
      var isCrossDomain = new RegExp("^(https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal):\/\/.*(" + RegExp.escapeDomains(ga.trackCrossDomains) + ")", "i");

      // Is the clicked URL internal?
      if (isInternal.test(this.href)) {
        // Is download tracking activated and the file extension configured for download tracking?
        if (ga.trackDownload && isDownload.test(this.href)) {
          // Download link clicked.
          var extension = isDownload.exec(this.href);
          _gaq.push(["_trackEvent", "Downloads", extension[1].toUpperCase(), this.href.replace(isInternal, '')]);
        }
        else if (isInternalSpecial.test(this.href)) {
          // Keep the internal URL for Google Analytics website overlay intact.
          _gaq.push(["_trackPageview", this.href.replace(isInternal, '')]);
        }
      }
      else {
        if (ga.trackMailto && $(this).is("a[href^=mailto:],area[href^=mailto:]")) {
          // Mailto link clicked.
          _gaq.push(["_trackEvent", "Mails", "Click", this.href.substring(7)]);
        }
        else if (ga.trackOutbound && this.href) {
          if (ga.trackDomainMode == 2 && isCrossDomain.test(this.href)) {
            // Top-level cross domain clicked. document.location is handled by _link internally.
            _gaq.push(["_link", this.href]);
          }
          else if (ga.trackOutboundAsPageview) {
            // Track all external links as page views after URL cleanup.
            // Currently required, if click should be tracked as goal.
            _gaq.push(["_trackPageview", '/outbound/' + this.href.replace(/^(https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal):\/\//i, '').split('/').join('--')]);
          }
          else {
            // External link clicked.
            _gaq.push(["_trackEvent", "Outbound links", "Click", this.href]);
          }
        }
      }
    });
  });
});

})(jQuery);
;
/* Author: Insaitov */
(function($){
  Drupal.behaviors.cherepaha = {
    attach: function(context) {
      if (($('#edit-tracking-submit').length > 0) && (typeof(Drupal.ajax) != 'undefined')) {
        Drupal.ajax['edit-tracking-submit'].commands.alert = function (ajax, response, status) {
          window.location.href = response.text;
        }
      }
      
      $('.cherepaha-region', context).each(function () {
        var $this = $(this);
        var list = $('.list', $this);
        $('.region-selector', $this).click(function () {
          list.toggle();
        });
      });
      
      
      
      // calculator
      $('#cherepaha-order-calculator-form').each(function () {
        var dotsemicolon = '.';
        if (parseFloat('0.5') == 0.5) dotsemicolor = '.';
        if (parseFloat('0,5') == 0.5) dotsemicolor = ',';
        
        var form = $(this);
        var regionId = $('#edit-region', form).val();
        var senderId = $('#edit-sender-city', form).val();
        var recipientId = $('#edit-recipient-city', form).val();
        var rateId = $('#edit-rate', form).val();
        var delivery_filter = $('#edit-delivery-filter', form).val().split('_');
        
        $("select", form).selectBox();
        
        $('#edit-rate', form).prepend('<option value="none">-Нет-</option>');
        
        var filterRates = function () {
        
          var region = Drupal.settings.calc[regionId];
          var rate = region['rates'][rateId];
          
          log('=== filterRates ===');
          log('region'); log(region);
          log('senderId'); log(senderId);
          log('recipientId'); log(recipientId);
          log('rate'); log(rate);

          
          var city = 0;
          if (region['city'] == senderId) city = recipientId;
          if (region['city'] == recipientId) city = senderId;
          $('#edit-rate option', form).removeClass('visible').hide();
          
          log('city'); log(city);
          log('region[city]'); log(region['city']);
          if (city > 0) { // а это значит, что посылка отправляется и регионального центра, что *только* возможно
            for (var rateIdx in region['rates']) {
              var rate = region['rates'][rateIdx];
              for (var zoneIdx in rate['zones']) {
                var zone = rate['zones'][zoneIdx];
                for (var cityIdx in zone['cities']) {
                  if (cityIdx == city) {
                    log('rateIdx');
                    log(rateIdx);
                    $('#edit-rate option[value="' + rateIdx + '"]', form).addClass('visible').show();
                  }
                }
              }
            }
          }
          
          if ($('#edit-rate option.visible', form).length == 0) {
            $('#edit-rate option[value="none"]', form).addClass('visible').show();
          }
          $('#edit-rate', form).val($('#edit-rate option.visible:first', form).attr('value')).trigger('change');
          $('#edit-rate', form).selectBox('destroy');
          $('#edit-rate', form).selectBox();
        }
        
        var updateServices = function () {
          var services = $('.form-item-services .form-checkboxes', form);
          services.html('');

          if (rateId != 'none') {
            var rate = Drupal.settings.calc[regionId]['rates'][rateId];
            var i = 0;
            for(var serviceId in rate['services']) {
              var service = rate['services'][serviceId];
              $('<div class="form-item form-type-checkbox"><input type="checkbox" class="form-checkbox" value="' + service['value'] + '" id="edit-services-' + i + '"><label for="edit-services-' + i + '" class="option">' + service['name'] + '</label></div>').appendTo(services);
              i++;
            }
          }
          
          $('.form-item-services', form).toggle($('.form-item', services).length > 0);
        }
        
        var filterDeliveries = function () {
          var region = Drupal.settings.calc[regionId];
          log(region);
          $('#edit-delivery-filter option', form).each(function () {
            var ids = $(this).val().split('_');
            if (ids[0] == regionId) {
              $(this).addClass('visible').show();
            } else {
              $(this).removeClass('visible').hide();
            }
          });
          
          $('#edit-delivery-filter', form).val($('#edit-delivery-filter option.visible:first', form).attr('value')).trigger('change');
          $('#edit-delivery-filter', form).selectBox('destroy');
          $('#edit-delivery-filter', form).selectBox();

        }
        
        var filterCities = function () {
          var region = Drupal.settings.calc[regionId];
          var filter = region['delivery_filters'][delivery_filter[1]];

          var sender_city_filtered = $('');
          for (var rId in Drupal.settings.calc) {
            var me = $('#edit-sender-city option[value="' + Drupal.settings.calc[rId]['city'] + '"]', form);
            me.addClass('office');
            sender_city_filtered = sender_city_filtered.add(me);
            if (me.parent().is('optgroup')) {
              sender_city_filtered = sender_city_filtered.add(me.parent());
            }
          }
          $('#edit-sender-city optgroup', form).addClass('visible').show(); // reset all
          $('#edit-sender-city option', form).addClass('visible').show();
          
          $('#edit-sender-city optgroup', form).each(function () {
            if ($(this).attr('label') == filter['city']) {
              sender_city_filtered = sender_city_filtered.add($(this));
              sender_city_filtered = sender_city_filtered.add($('option', $(this)));
              return false; // break
            }
          });

          $('#edit-sender-city option', form).each(function () {
            if ($(this).val() == filter['value']) {
              sender_city_alone = true;
              
              sender_city_filtered = sender_city_filtered.add($(this));
              var parent = $(this).parent();
              if (parent.is('optgroup')) sender_city_filtered = sender_city_filtered.add(parent);
              return false; // break;
            }
          });
          
          if (sender_city_filtered !== false) {
            //if (sender_city_filtered.length  % 2 == 1) { // not only optgroup
            //  $('#edit-sender-city option', form).removeClass('visible').hide();
            //}
            //$('#edit-sender-city optgroup', form).removeClass('visible').hide();
            //sender_city_filtered.addClass('visible').show();
            
            $('#edit-sender-city optgroup', form).not(sender_city_filtered).removeClass('visible').hide();
            $('#edit-sender-city option', form).not(sender_city_filtered).removeClass('visible').hide();
          } else {
            $('#edit-sender-city optgroup', form).addClass('visible').show();
            $('#edit-sender-city option', form).addClass('visible').show();
          }
          
          $('#edit-sender-city', form).val(region['city']).trigger('change');
          $('#edit-sender-city', form).selectBox('destroy');
          $('#edit-sender-city', form).selectBox();
          
          var recipient_city_filtered = $('');
          for (var rId in Drupal.settings.calc) {
            var me = $('#edit-recipient-city option[value="' + Drupal.settings.calc[rId]['city'] + '"]', form);
            me.addClass('office');
            recipient_city_filtered = recipient_city_filtered.add(me);
            if (me.parent().is('optgroup')) {
              recipient_city_filtered = recipient_city_filtered.add(me.parent());
            }
          }
          $('#edit-recipient-city optgroup', form).addClass('visible').show(); // reset all
          $('#edit-recipient-city option', form).addClass('visible').show();
          
          $('#edit-recipient-city optgroup', form).each(function () {
            if ($(this).attr('label') == filter['city']) {
              recipient_city_filtered = recipient_city_filtered.add($(this));
              recipient_city_filtered = recipient_city_filtered.add($('option', $(this)));
              return false; // break
            }
          });

          $('#edit-recipient-city option', form).each(function () {
            if ($(this).val() == filter['value']) {
              recipient_city_alone = true;
              
              recipient_city_filtered = recipient_city_filtered.add($(this));
              var parent = $(this).parent();
              if (parent.is('optgroup')) recipient_city_filtered = recipient_city_filtered.add(parent);
              return false; // break;
            }
          });
          
          if (recipient_city_filtered !== false) {
            //if (recipient_city_filtered.length  % 2 == 1) { // not only optgroup
            //  $('#edit-recipient-city option', form).removeClass('visible').hide();
            //}
            //$('#edit-recipient-city optgroup', form).removeClass('visible').hide();
            //recipient_city_filtered.addClass('visible').show();
            
            $('#edit-recipient-city optgroup', form).not(recipient_city_filtered).removeClass('visible').hide();
            $('#edit-recipient-city option', form).not(recipient_city_filtered).removeClass('visible').hide();
          } else {
            $('#edit-recipient-city optgroup', form).addClass('visible').show();
            $('#edit-recipient-city option', form).addClass('visible').show();
          }
          
          $('#edit-recipient-city', form).val(region['city']).trigger('change');
          $('#edit-recipient-city', form).selectBox('destroy');
          $('#edit-recipient-city', form).selectBox();

        }
        
        $('#edit-region', form).change(function (e) { regionId = $(this).val(); filterDeliveries(); filterRates(); });
        $('#edit-delivery-filter', form).change(function (e) { delivery_filter = $(this).val().split('_'); filterCities(); });
        $('#edit-sender-city', form).change(function (e) { senderId = $(this).val(); filterRates(); });
        $('#edit-recipient-city', form).change(function (e) { recipientId = $(this).val(); filterRates(); });
        $('#edit-rate', form).change(function (e) { rateId = $(this).val(); updateServices(); });

        filterDeliveries(); // Вызвать в первый раз, чтобы после перезагрузки страницы форма оставалась в актуальном состоянии.
        filterCities();
        filterRates(); 
        updateServices();
        
        $('#edit-calc', form).click(function (e) {
          e.preventDefault();
          $('#edit-cost', form).val('Нет доставки');
          
          // региональный центр, нужен только для проверки вектора направления
          var region = Drupal.settings.calc[regionId]; // направление не может не проходить через этот город.
          var city = 0; // Конец вектора направления. Начало находится в региональном центре.
          var reverse = false;
          if (region['city'] == senderId) {
            city = recipientId;
          }
          if (region['city'] == recipientId) {
            city = senderId;
            reverse = true;
          }
          
          // Имеем два города. region['city'] и city. они составляют наш маршрут по тарифу rateId
          
          if (city > 0) { // как уже было написано выше, производится расчет только при прохождени маршрута через региональный центр
            var rate = region['rates'][rateId];
            log('rate'); log(rate);
            var zoneId = 0;
            for (var zId in rate['zones']) {
              if (zoneId == 0) {
                for (var cityId in rate['zones'][zId]['cities']) {
                  if (cityId == city) {
                    zoneId = zId;
                    break;
                  }
                }
              } else {
                break;
              }
            }
            // var region = Drupal.settings.calc[regionId];
            // var rate = region['rates'][rateId];
            log(zoneId);
            var zone = rate['zones'][zoneId];
            log('zone'); log(zone);
            var weight = parseFloat($('#edit-field-order-shipment-weight', form).val().replace(',',dotsemicolon).replace('.',dotsemicolon));
            var base_price = {weight: 0, value: 0, reverse: 0};
            var extra_price = {weight: 0, value: 0, reverse: 0};

            var sortPriceByWeight = function(a,b) { return parseFloat(a.weight) - parseFloat(b.weight); }
            var sortPriceByValue = function(a,b) { return parseFloat(a.value) - parseFloat(b.value); }
            var specific_prices = zone['specific_prices'].sort(sortPriceByWeight);
            //if (typeof(zone['specific_prices_reversed']) == 'undefined') {
              //specific_prices = specific_prices.reverse();
              //zone['specific_prices_reversed'] = true;
            //}
            
            var max_price = {weight: 0, value: 0, reverse: 0};
            for (var priceId in specific_prices) {
              var price = specific_prices[priceId];
              if (price.multiplier == false) {
                if ((weight <= parseFloat(price.weight)) && ((parseFloat(base_price.weight) > parseFloat(price.weight)) || (parseFloat(base_price.weight) == 0))) {
                  base_price = price;
                }
                if (parseFloat(price.weight) > parseFloat(max_price.weight)) {
                  max_price = price;
                }
              }
              if (price.multiplier == true) {
                extra_price = price;
              }
            }
            
            if (parseFloat(base_price.weight) == 0) {
              base_price = max_price;
            }
            
            var services_value = 0;
            var services = $('.form-item-services .form-checkboxes input:checked', form).toArray();
            for(var serviceId in services) {
              services_value += parseFloat($(services[serviceId]).attr('value'));
            }
            
            log('weight'); log(weight);
            log('base_price'); log(base_price);
            log('extra_price'); log(extra_price);
            var extra_value = Math.ceil((weight - parseFloat(base_price.weight))/parseFloat(extra_price.weight));
            if (extra_value < 0) extra_value = 0;
            if (reverse) {
              extra_value *= parseFloat(extra_price.reverse);
            } else {
              extra_value *= parseFloat(extra_price.value);
            }
            log('extra_value'); log(extra_value);
            log('services_value'); log(services_value);
            var total_cost = 0;
            if (reverse) {
              total_cost = parseFloat(base_price.reverse);
            } else {
              total_cost = parseFloat(base_price.value)
            }
            total_cost = total_cost + extra_value + services_value;
            if (reverse) {
              total_cost = total_cost * parseFloat(rate['reverse_factor']);
            }
            $('#edit-cost', form).val(total_cost);
          } else {
            $('#edit-cost', form).val('Нет доставки');
          }
        });
      });
    },
  };
})(this.jQuery);;

