var A;

A = {
  //=================================================
  // ПЕРМЕННЫЕ САЙТА
  //=================================================
  //-- A.w - ССЫЛКА НА ОКНО С САЙТОМ
  w: $(window),
  //-- A.dropper - ПОДДЕРЖИВАЕТСЯ ЛИ DRAG AND DROP
  dropper: false,
  //-- A.fff - функция для вывода в лог получаемых данных через api
  logApi: function(data, cd) {
    return console.log(data, cd);
  },
  reload: function() {
    return window.location.reload();
  },
  display: function(x, y) {
    if (y) {
      return $(x).show();
    } else {
      return $(x).hide();
    }
  },
  disabled: function(x, y) {
    if (y) {
      return $(x).removeAttr('disabled');
    } else {
      return $(x).attr('disabled', true);
    }
  },
  notify: function(x, html = '') {
    return x.queue(function() {
      x.html(html).show(300);
      return x.dequeue();
    });
  },
  stopPropogation: function(e) {
    return e.stopPropagation();
  },
  toggleInfoText: function(id) {
    var $t;
    $t = $("#info_text_" + id);
    $t.toggleClass('open');
    if (!$t.hasClass('open')) {
      return $t.hide(300);
    } else {
      return $t.show(300);
    }
  },
  mail: /^([A-Za-z0-9_-]+\.)*[A-Za-z0-9_-]+@[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)*\.[A-Za-z]{2,6}$/,
  testMail: function(x) {
    return A.mail.test(x);
  },
  serialize: function(form) {
    var a, i, j, len, o;
    a = $(form).serializeArray();
    o = {};
    for (j = 0, len = a.length; j < len; j++) {
      i = a[j];
      o[i.name] = i.value;
    }
    return o;
  },
  htmlspecialchars: function(str) {
    if (typeof str === "string") {
      str = str.replace(/&/g, "&amp;");
      str = str.replace(/"/g, '&#34;');
      str = str.replace(/'/g, "&#039;");
      str = str.replace(/</g, "<");
      str = str.replace(/>/g, ">");
    }
    return str;
  },
  //-------------------------------------------------
  // A.createRequestObject - Создаёт новый RequestObject
  //-------------------------------------------------
  createRequestObject: function() {
    if (typeof XMLHttpRequest === 'undefined') {
      try {
        return new ActiveXObject("Msxml2.XMLHTTP.6.0");
      } catch (error) {}
      try {
        return new ActiveXObject("Msxml2.XMLHTTP.3.0");
      } catch (error) {}
      try {
        return new ActiveXObject("Msxml2.XMLHTTP");
      } catch (error) {}
      try {
        return new ActiveXObject("Microsoft.XMLHTTP");
      } catch (error) {}
      throw new Error("This browser does not support XMLHttpRequest.");
    }
    return new XMLHttpRequest();
  },
  domen: '',
  //-------------------------------------------------
  // A.setCookie - НАЗНАЧЕНИЕ ПЕЧЕНЕК
  //-------------------------------------------------
  setCookie: function(k, v, date) {
    var c, cook, domain;
    //domain = ' domain=*'+window.location.host+';'
    //domain = ' domain=' + A.domen + ';'
    domain = 'domain=' + A.domen + ';';
    cook = k + "=" + v + '; expires=' + new Date(date ? date : new Date().getTime() + 5184000000).toGMTString() + '; path=/;';
    document.cookie = cook + domain;
    c = A.getCookie('k');
    if (c !== v) {
      document.cookie = cook;
    }
    return cook;
  },
  getCookie: function(name) {
    var pattern, regexp;
    pattern = "(?:; )?" + name + "=([^;]*);?";
    regexp = new RegExp(pattern);
    if (regexp.test(document.cookie)) {
      return decodeURIComponent(RegExp["$1"]);
    }
    return false;
  },
  //-------------------------------------------------
  // A.init - ИНИЦИАЛИЗАЦИЯ САЙТА
  //-------------------------------------------------
  init: function() {
    A.dropper = !(typeof window.FileReader === 'undefined');
    A.content = $("#content");
    A.content_padding = 90;
    A.P.init();
    A.W.init();
    A.resize();
    return A.scroll();
  },
  /*
  $('.fancy').fancybox({
    openEffect	: 'none',
    closeEffect	: 'none'
  });
  */
  ready: function() {
    //A.resize();
    A.w.resize(function() {
      return A.resize();
    });
    A.w.scroll(function() {
      return A.scroll();
    });
    return A.P.ready();
  },
  //-------------------------------------------------
  // A.resize - Изменение размеров страницы
  //-------------------------------------------------
  resize: function() {},
  //-------------------------------------------------
  // A.scroll - Изменение размеров страницы
  //-------------------------------------------------
  scroll: function() {
    return A.P.scroll();
  }
};

$(window).ready(function() {
  return A.ready();
});

$(window).load(function() {
  return A.init();
});

var API;

API = {
  init: function() {
    return API.uinit(API.U, '/api/');
  },
  isEmpty: function(o) {
    var i;
    for (i in o) {
      return false;
    }
    return true;
  },
  uinit: function(x, path) {
    var i, results;
    results = [];
    for (i in x) {
      if (i === "url") {
        continue;
      }
      if (!API.isEmpty[x[i]]) {
        API.uinit(x[i], path + i + '/');
      }
      if (x[i] === "") {
        x[i] = path + i + '/';
      }
      results.push(x[i].url = path + i + '/');
    }
    return results;
  },
  U: {
    check: {
      make: ''
    },
    favorite: {
      list: "",
      remove: "",
      uadd: "",
      form: {
        add: ''
      }
    },
    stat: {
      getData: ''
    },
    strany: {
      findStrana: ""
    },
    soatoregion: {
      findregio: ""
    },
    kodtnved: {
      findKod: ""
    },
    charts: {
      getFiles: "",
      makePDF: ""
    },
    veddatanew: {
      getContent: "",
      saveImg: "",
      acceptFilter: ""
    },
    login: {
      login: "",
      exit: "",
      exit_admin: "",
      admin: "",
      admin_login: ""
    },
    get: {
      form: {
        recall: "",
        map: "",
        advantages: "",
        map: "",
        about: "",
        partners: "",
        providers: "",
        contacts: "",
        calculator: "",
        docs: "",
        services: "",
        directions: "",
        projects: ""
      }
    },
    account: {
      uadd: "",
      uexit: "",
      login: "",
      newpass: "",
      resetpass: "",
      uupdate: "",
      remind: "",
      form: {
        auth: "",
        reg: "",
        remind: "",
        profile: ""
      }
    }
  },
  GET: {
    // u - url
    // d - data
    // c - callback
    // cd - callback data
    r: function(u, d, c, cd) {
      d['nocache'] = (new Date()).getTime();
      return $.ajax({
        url: u,
        type: "POST",
        dataType: d.dataType !== void 0 ? d.dataType : "html",
        data: d,
        success: function(data) {
          if (c !== void 0) {
            return c(data, cd);
          }
        },
        error: function() {
          return c({
            error: 1
          }, cd);
        }
      });
    }
  }
};

$(window).ready(function() {
  return API.init();
});

A.DELETE = {
  init: function() {}
};

A.F = {
  init: function() {},
  exit: function() {
    A.setCookie('uid', '');
    A.setCookie('uim', '');
    return window.location.href = "/";
  },
  reg: function(f) {
    var $f, $res, s;
    $f = $(f);
    s = {
      dataType: "JSON",
      name: $.trim($("input[name=name]", $f).val()),
      email: $.trim($("input[name=email]", $f).val()),
      pass: $.trim($("input[name=pass]", $f).val()),
      type: $.trim($("input[name=type]:checked", $f).val()),
      inn: $.trim($("input[name=inn]", $f).val()),
      address: $.trim($("input[name=address]", $f).val())
    };
    $res = $(".res", $f).hide(300);
    if (s.email === "") {
      A.notify($res, 'Введите email');
    } else if (!A.mail.test(s.email)) {
      A.notify($res, 'Введите корректный email');
    } else if (s.pass === "") {
      A.notify($res, 'Введите пароль');
    } else {
      A.I.waitButton($("button", $f));
      A.I.waitInput($("input[type=submit]", $f));
      API.GET.r(API.U.account.uadd, s, A.F.aAuth, {
        f: $f,
        r: $res
      });
    }
    return false;
  },
  aAuth: function(data, cd) {
    A.I.unwaitButton($("button", cd.f));
    A.I.unwaitInput($("input[type=submit]", cd.f));
    if (data.e === 1) {
      return A.notify(cd.r, data.m);
    } else {
      window.location.href = "/";
      if (data.p !== void 0) {
        A.setCookie('uid', data.p.uid);
        A.setCookie('uim', data.p.uim);
        return window.location.reload();
      }
    }
  },
  auth: function(f) {
    var $f, $res, s;
    $f = $(f);
    s = {
      dataType: "JSON",
      email: $.trim($("input[name=email]", $f).val()),
      pass: $.trim($("input[name=pass]", $f).val()),
      nocache: (new Date()).getTime()
    };
    $res = $(".res", $f).hide(300);
    if (s.email === "") {
      A.notify($res, 'Введите email');
    } else if (s.pass === "") {
      A.notify($res, 'Введите пароль');
    } else {
      A.I.waitButton($("button", $f));
      A.I.waitInput($("input[type=submit]", $f));
      API.GET.r(API.U.account.login, s, A.F.aAuth, {
        f: $f,
        r: $res
      });
    }
    return false;
  },
  remind: function(f) {
    var $f, $res, s;
    $f = $(f);
    s = {
      dataType: "JSON",
      email: $.trim($("input[name=email]", $f).val()),
      nocache: (new Date()).getTime()
    };
    $res = $(".res", $f).hide(300);
    if (s.email === "") {
      A.notify($res, 'Введите email');
    } else {
      A.I.waitButton($("button", $f));
      A.I.waitInput($("input[type=submit]", $f));
      API.GET.r(API.U.account.remind, s, A.F.aRemind, {
        f: $f,
        r: $res
      });
    }
    return false;
  },
  aRemind: function(data, cd) {
    A.I.unwaitButton($("button", cd.f));
    A.I.unwaitInput($("input[type=submit]", cd.f));
    return A.notify(cd.r, data.m);
  },
  newPass: function(f) {
    var $f, $res, s;
    $f = $(f);
    s = {
      dataType: "JSON",
      pass1: $.trim($("input[name=pass1]", $f).val()),
      pass2: $.trim($("input[name=pass2]", $f).val()),
      key: $.trim($("input[name=key]", $f).val()),
      hash: $.trim($("input[name=hash]", $f).val()),
      id: $.trim($("input[name=id]", $f).val()),
      nocache: (new Date()).getTime()
    };
    $res = $(".res", $f).hide(300);
    if (s.pass1 === "") {
      A.notify($res, 'Введите пароль');
    } else if (s.pass2 === "") {
      A.notify($res, 'Повторите пароль');
    } else if (s.pass1 !== s.pass2) {
      A.notify($res, 'Пароли должны совпадать');
    } else {
      A.I.waitButton($("button", $f), {
        title: 'Отправка'
      });
      A.I.waitInput($("input[type=submit]", $f), {
        title: 'Отправка'
      });
      API.GET.r(API.U.account.newpass, s, A.F.aRemind, {
        f: $f,
        r: $res
      });
    }
    return false;
  },
  resetPass: function(f) {
    var $f, $res, s;
    $f = $(f);
    s = {
      dataType: "JSON",
      pass1: $.trim($("input[name=pass1]", $f).val()),
      pass2: $.trim($("input[name=pass2]", $f).val())
    };
    $res = $(".res", $f).hide(300);
    if (s.pass1.length < 6) {
      A.notify($res, 'Длина пароля должна быть не менее 6 символов');
    } else if (s.pass1 === "") {
      A.notify($res, 'Введите пароль');
    } else if (s.pass2 === "") {
      A.notify($res, 'Повторите пароль');
    } else if (s.pass1 !== s.pass2) {
      A.notify($res, 'Введённые пароли не совпадают');
    } else {
      A.I.waitButton($("button", $f));
      A.I.waitInput($("input[type=submit]", $f));
      API.GET.r(API.U.account.resetpass, s, A.F.aResetPass, {
        f: $f,
        r: $res
      });
    }
    return false;
  },
  aResetPass: function(data, cd) {
    A.I.unwaitButton($("button", cd.f));
    A.I.unwaitInput($("input[type=submit]", cd.f));
    A.notify(cd.r, data.m);
    if (data.uim !== void 0) {
      return A.setCookie('uim', data.uim);
    }
  },
  updateProfile: function(f) {
    var $f, $res, s;
    $f = $(f);
    s = {
      dataType: "JSON",
      name: $.trim($("input[name=name]", $f).val()),
      inn: $.trim($("input[name=inn]", $f).val()),
      address: $.trim($("input[name=address]", $f).val()),
      type: $.trim($("input[name=type]:checked", $f).val())
    };
    console.log(s);
    $res = $(".res", $f).hide(300);
    A.I.waitButton($("button", $f));
    A.I.waitInput($("input[type=submit]", $f));
    API.GET.r(API.U.account.uupdate, s, A.F.aUpdateProfile, {
      f: $f,
      r: $res
    });
    return false;
  },
  aUpdateProfile: function(data, cd) {
    A.I.unwaitButton($("button", cd.f));
    A.I.unwaitInput($("input[type=submit]", cd.f));
    return A.notify(cd.r, data.m);
  }
};

var H;

H = {
  menu: {},
  selected: {},
  top_selected: null,
  inited: false,
  dir: '', // up | down | left | right
  title: null,
  data: null,
  ready: function() {
    if (!H.inited) {
      $(window).on('popstate', H.switchByWindow);
      H.inited = false;
      H.body = $("#content");
      H.title = $("title");
      return console.log(H.title);
    }
  },
  // H.switch()
  reload: function() {
    return H.switch({
      animate: false
    });
  },
  formGo: function(form) {
    var $f, action, path, s;
    s = ($f = $(form)).serialize();
    action = $f.attr('action');
    if (action === void 0) {
      action = window.location.pathname;
    }
    //console.log action
    H.go(path = action + '?' + s);
    return false;
  },
  go: function(x, data = null, title = '') {
    var y;
    if (x.substr(0, 1) === '/') {
      x = x.substr(1);
    }
    y = '/' + x;
    H.data = data;
    history.pushState(data, title, y);
    return H.switch();
  },
  switchByWindow: function(x) {
    return H.switch(x.state);
  },
  switch: function(o = {
      animate: true
    }) {
    var path, url;
    path = H.parse();
    url = path.join("/");
    if (url === "/" || url === "") {
      url = "/?mini=1";
    } else {
      url = `/${url}/?mini=1`;
    }
    if (window.location.search.length > 0) {
      url += '&' + window.location.search.substr(1);
    }
    //console.log url
    return $.ajax({
      url: url,
      //url:"/#{url}/?mini=1"
      dataType: "JSON",
      success: function(data) {
        var $data, $html, i, j, ref, ref1, results, s;
        if (typeof data.location === "string" && data.location !== "") {
          return H.go(data.location);
        } else {
          H.title.text(data.title);
          $data = $(data.content);
          $html = $($data[0]);
          //$hide = $(".b_content:not(.hide)").addClass('hide')
          //$(".b_content").remove()
          H.body.html($html);
          A.P.initMini($html);
          A.P.scrollToTop();
          /*
          setTimeout ->
            $hide.remove()
          ,1000
          if o.animate
            $html.addClass(H.dir)
          H.body.append($html)
          */
          if ($data.length > 1) {
            results = [];
            for (i = j = 1, ref = $data.length - 1; (1 <= ref ? j <= ref : j >= ref); i = 1 <= ref ? ++j : --j) {
              s = document.createElement('script');
              if ((ref1 = $data[i].tagName) === 'SCRIPT' || ref1 === 'script') {
                s.innerHTML = $($data[i]).html();
                results.push(H.body[0].appendChild(s));
              } else {
                results.push(void 0);
              }
            }
            return results;
          }
        }
      }
    });
  },
  /*
  $(H).triggerHandler 'loaded'
  if o.animate
    $html.delay(80)
    $html.queue ->
      $html.removeClass(H.dir)
      $html.dequeue()
  */
  parse: function() {
    var a, i, j, len, o;
    a = window.location.pathname.split("/");
    o = [];
    for (j = 0, len = a.length; j < len; j++) {
      i = a[j];
      if (i !== "") {
        o.push(i);
      }
    }
    return o;
  }
};

//$(window).ready H.ready

//-------------------------------------------------
// A.I = РАБОТА С ПОЛЯМИ ВВОДА
//-------------------------------------------------
A.I = {
  waitInput: function(x) {
    return $(x).each(function() {
      var button, click, val;
      button = $(this);
      click = button.attr('onclick');
      val = $.trim(button.val());
      return button.attr('onclick', '').attr('data-val', val).val(val === "" ? '' : 'Отправляется...').addClass("wait").attr('data-onclick', click).attr('disabled', 'disabled');
    });
  },
  unwaitInput: function(x) {
    return $(x).each(function() {
      var b;
      b = $(this);
      return b.val(b.attr('data-val')).removeClass("wait").attr('onclick', b.attr('data-onclick')).removeAttr('disabled');
    });
  },
  waitButton: function(x) {
    return $(x).each(function() {
      var button, click, val;
      button = $(this);
      click = button.attr('onclick');
      val = $.trim(button.html());
      if (val !== "?") {
        return button.attr('onclick', '').attr('data-val', val).html(val === "" || val === "&nbsp;" ? '' : 'Отправляется...').addClass("wait").attr('data-onclick', click).attr('disabled', 'disabled');
      }
    });
  },
  unwaitButton: function(x) {
    return $(x).each(function() {
      var b;
      b = $(this);
      return b.html(b.attr('data-val')).removeClass("wait").attr('onclick', b.attr('data-onclick')).removeAttr('disabled');
    });
  }
};

A.P = {
  init: function() {
    A.P.html = $("html,body");
    A.P.body = $("body");
    return A.P.initMini(A.P.body);
  },
  scrollToTop: function() {
    var ref;
    return (ref = A.P.html) != null ? ref.scrollTop(0) : void 0;
  },
  scrollToTopAnimate: function() {
    var ref;
    return (ref = A.P.html) != null ? ref.animate({
      scrollTop: 0
    }, 600) : void 0;
  },
  initMini: function($html) {
    var elem;
    console.log('initMini', $html);
    if ($("#to_top").length > 0) {
      A.P.$totop = $("#to_top");
    }
    A.P.initPreventLink($html);
    $('.radio:not(.inited)', $html).addClass('inited').click(function() {
      var $r, s, t, type, va, vas, vs;
      t = $(this);
      $r = $(this);
      s = t.find('input');
      vs = s.attr('name');
      vas = $('.radio').find('input[name=' + vs + ']');
      va = vas.attr('name');
      if (va === vs) {
        t.addClass('checked');
        type = $r.attr('data-radio');
        console.log(type);
        $('div[data-menu]').each(function() {
          return $(this).addClass('hide');
        });
        $('div[data-menu="' + type + '"]').removeClass('hide');
        return vas.parent().not(t).removeClass('checked');
      } else {

      }
    });
    //select
    $('.select:not(.inited)', $html).addClass('inited').click(function() {
      var a;
      console.log('click');
      a = $(this);
      a.toggleClass('open');
      return $('*').click(function(e) {
        var div;
        div = a;
        if (!div.is(e.target) && div.has(e.target).length === 0) {
          return div.removeClass('open');
        }
      });
    });
    $('.select .option', $html).addClass('inited').click(function() {
      var t;
      t = $(this).text();
      $('.text', $(this).closest('.select')).attr('data-value', $(this).attr('value')).attr('value', $(this).text());
      return $(this).parent().parent().find('.text').text(t);
    });
    elem = $('.maxs:not(.inited)', $html).addClass('inited');
    return $.each(elem, function() {
      var size, text;
      size = $(this).attr('maxs');
      text = $(this).html();
      if (text.length > size) {
        text = text.slice(0, size);
        return $(this).html(text + '...');
      }
    });
  },
  initPreventLink: function(x) {
    return $("a:not(.prevented)", $(x)).addClass('prevented').click(A.P.preventALink);
  },
  waitLoad: function() {
    var err;
    err = '<p>Загрузка данных может занять до 30 секунд, пожалуйста подожите</p>';
    $(".centercol .content").html(err);
    return $("html,body").animate({
      scrollTop: 0
    }, 400);
  },
  preventALink: function(e) {
    var href;
    href = $(this).attr('href');
    if (href.indexOf("/statistic/") === 0) {
      return A.P.waitLoad();
    }
  },
  /*
  if !$(@).hasClass('about')
    href = $(@).attr('href')
    if href!=undefined
      if href.substr(0,1)=='/'
        e.preventDefault();
        H.go($(@).attr('href'))
  else
    $(@).removeClass('prevented')
    console.log '111'
  */
  loadStat: function(x) {
    return API.GET.r(API.U.stat.getData, x, function(data) {
      return $("#load").replaceWith(data);
    });
  },
  ready: function() {},
  //$("#content").css
  //paddingBottom:$("#b_footer").outerHeight()
  //A.P.animate = $(".ani")
  scroll: function() {
    var ref;
    if (A.P.$totop != null) {
      A.P.$totop.toggleClass('show', A.w.scrollTop() > 0);
    }
    return (ref = A.P.animate) != null ? ref.each(function() {
      var $t;
      if (!($t = $(this)).hasClass('animated')) {
        if (($t.offset().top - (A.w.scrollTop() + A.w.height()) < 0) && ($t.offset().top + $t.height()) > (A.w.scrollTop() + 5)) {
          return $t.addClass('animated').addClass($t.attr('data-ani'));
        }
      }
    }) : void 0;
  }
};

A.TOGGLE = {
  init: function() {}
};

A.UPDATE = {
  init: function() {}
};

//-----------------------------------------------
// A.W - Работа со всплывающими окнами
//-----------------------------------------------
A.W = {
  back: null,
  w: null,
  i: null,
  init: function() {
    A.W.back = $("#wback").css({
      display: 'none',
      height: '100%',
      opacity: 1
    });
    if (A.W.back.length > 0) {
      A.W.w = $("#window");
      return A.W.i = $("#w_inner");
    } else {
      return delete A.W;
    }
  },
  startLoad: function() {
    return A.W.i.addClass("load").html("Загрузка данных");
  },
  finishLoad: function(data) {
    return A.W.i.removeClass("load").html(data);
  },
  setHtml: function(data) {
    return A.W.finishLoad(data);
  },
  open: function(w) {
    A.P.body.css('overflow', 'hidden');
    A.W.back.css({
      display: 'block',
      opacity: 1,
      'pointer-events': 'all'
    });
    return A.W.w.css({
      maxWidth: (w !== void 0 ? w : 800) + "px"
    });
  },
  close: function() {
    var base;
    A.W.back.css({
      display: 'none',
      opacity: 0
    });
    A.P.body.css('overflow', 'auto');
    A.W.i.html("");
    A.W.back.css({
      'pointer-events': 'none'
    });
    return typeof (base = A.W).onClose === "function" ? base.onClose() : void 0;
  },
  openRecall: function() {
    A.W.open(1000);
    A.W.startLoad();
    return API.GET.r(API.U.get.form.recall, {}, A.W.aOpenRecall);
  },
  aOpenRecall: function(data) {
    A.W.setHtml(data);
    return $(".window_inner input[name=phone]").mask("+7 (999) 999-99-99");
  },
  aOpenProfile: function(data) {
    var $data, checkType;
    $data = $(data);
    A.W.aOpenRecall($data);
    checkType = function() {
      var $org_input;
      $org_input = $(".org_input", $data);
      return $org_input.toggle(parseInt($("[name=type]:checked", $data).val()) === 2);
    };
    $("[name=type]", $data).on('click', checkType);
    return checkType();
  },
  openAuth: function() {
    A.W.open(400);
    A.W.startLoad();
    return API.GET.r(API.U.account.form.auth, {}, A.W.aOpenRecall);
  },
  openProfile: function() {
    A.W.open(400);
    A.W.startLoad();
    return API.GET.r(API.U.account.form.profile, {}, A.W.aOpenProfile);
  },
  openReg: function() {
    A.W.open(400);
    A.W.startLoad();
    return API.GET.r(API.U.account.form.reg, {}, A.W.aOpenProfile);
  },
  openBuy: function(id) {
    A.W.open(400);
    A.W.startLoad();
    return API.GET.r(API.U.check.make, {
      id,
      dataType: "JSON"
    }, function(data) {
      console.log(data);
      if (data.link) {
        return window.location.href = data.link;
      }
    });
  },
  openRemind: function() {
    A.W.open(400);
    A.W.startLoad();
    return API.GET.r(API.U.account.form.remind, {}, A.W.aOpenRecall);
  }
};

(function($) {
  var F;
  $.fn.FAVORITE = function(method) {
    if (F[method]) {
      return F[method].apply(this, Array.prototype.slice.call(arguments, 1));
    } else if (typeof method === "object" || !method) {
      return F.init.apply(this, arguments);
    } else {
      return $.error('Метод с именем ' + method + ' не существует для jQuery.FAVORITE');
    }
  };
  return F = {
    init: function() {},
    reload: function() {
      return API.GET.r(API.U.favorite.list, {}, function(data) {
        return $("#favorite").replaceWith($(data));
      });
    },
    remove: function(id) {
      if (confirm("Вы уверены, что хотите удалить избранное?")) {
        return API.GET.r(API.U.favorite.remove, {id}, function(data) {
          return F.reload();
        });
      }
    },
    add: function(f) {
      var $f, $res, s;
      $f = $(f);
      s = {
        dataType: "JSON",
        options: $("[name=options]", $f).val(),
        name: $("[name=name]", $f).val(),
        id: $("[name=id]", $f).val()
      };
      $res = $(".res", $f).hide(300);
      API.GET.r(API.U.favorite.uadd, s, function(data) {
        A.notify($res, data.m);
        return F.reload();
      });
      return false;
    },
    edit: function(id) {
      A.W.open(400);
      A.W.startLoad();
      return API.GET.r(API.U.favorite.form.add, {id}, A.W.setHtml);
    },
    openAdd: function(options) {
      A.W.open(400);
      A.W.startLoad();
      return API.GET.r(API.U.favorite.form.add, {options}, A.W.setHtml);
    }
  };
})(jQuery);

var CANVAS;

CANVAS = {
  getPDF: function() {},
  make: function() {
    return CANVAS.saveToimg(function() {
      var datas, header, header2, s, text;
      datas = {};
      datas = CANVAS.collectTables();
      text = CANVAS.collectTexts();
      header = $('.text_filter').text();
      header2 = $('.text_filter2').text();
      s = {
        string: $('#filter_string').val(),
        tables: datas,
        text: text,
        header: header,
        header2: header2,
        kaz: $("[name=page]").val() === "kazahstan" ? 1 : 0
      };
      console.log(s);
      return API.GET.r(API.U.charts.makePDF, s, function(data) {
        return window.open('/upload/pdfs/' + data + '.pdf', '_blank');
      });
    });
  },
  collectTexts: function() {
    var s;
    s = [];
    return s = {
      chart1: CANVAS.collectText("#block_text_char_1"),
      chart2: CANVAS.collectText("#block_text_char_2"),
      chart3: CANVAS.collectText("#block_text_char_3"),
      chart4: CANVAS.collectText("#block_text_char_4"),
      chart5: CANVAS.collectText("#block_text_char_5"),
      chart6: CANVAS.collectText("#block_text_char_6"),
      chart7: CANVAS.collectText("#block_text_char_7"),
      chart8: CANVAS.collectText("#block_text_char_8"),
      chart9: CANVAS.collectText("#block_text_char_9")
    };
  },
  collectText: function(x) {
    var $x, header, text;
    $x = $(x);
    header = $('.header_chart', $x).text();
    text = $('.text_chart', $x).text();
    return {
      header: header,
      text: text
    };
  },
  collectTables: function() {
    var s;
    s = [];
    s = {
      table1: CANVAS.collectTable("#table1"),
      table2: CANVAS.collectTable("#table2"),
      table3: CANVAS.collectTable("#table3"),
      table4: CANVAS.collectTable("#table4"),
      table5: CANVAS.collectTable("#table5"),
      table6: CANVAS.collectTable("#table6"),
      table7: CANVAS.collectTable("#table7"),
      table8: CANVAS.collectTable("#table8"),
      table9: CANVAS.collectTable("#table9")
    };
    return s;
  },
  prepareText: function(x) {
    return x.replace(/ года/gi, ' г.', x);
  },
  collectTable: function(x) {
    var $x, p, th;
    $x = $(x);
    p = [];
    th = [];
    $('th', $x).each(function() {
      return th.push($(this).text());
    });
    $('tbody', $x).each(function() {
      return $('tr', $(this)).each(function() {
        var tr;
        tr = [];
        $('td', $(this)).each(function() {
          return tr.push(CANVAS.prepareText($(this).text()));
        });
        return p.push(tr);
      });
    });
    return {
      tbody: p,
      thead: th
    };
  },
  saveToimg: function(cb) {
    var count, inc;
    inc = 0;
    count = $('canvas').length;
    return $('canvas').each(function() {
      var body, canvas, id, url, xmlhttprequest;
      id = $(this).closest('div.win1').attr('id');
      url = '/api/veddatanew/saveImg/';
      canvas = this;
      body = canvas.toDataURL();
      xmlhttprequest = new XMLHttpRequest();
      xmlhttprequest.open('POST', url);
      xmlhttprequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
      xmlhttprequest.send(id + '{!@#!}' + body);
      return xmlhttprequest.onload = function(r) {
        console.log('inc', inc, count, r.responseText);
        inc = inc + 1;
        if (inc === count) {
          return setTimeout(cb, 10);
        }
      };
    });
  }
};

var SITEFILTER;

SITEFILTER = {
  unsetFindKod: function() {
    return SITEFILTER.findKod = 0;
  },
  initResultRow: function() {
    $('.tnved_result_row').click(function() {
      var kod;
      kod = $(this).attr('data-id');
      console.log(kod);
      $('input[name="veddataNew_TNVED"]').val(kod);
      return $('.tnved_result').addClass('hidden');
    });
    $('.strana_result_row').click(function() {
      var kod;
      kod = $(this).attr('data-id');
      console.log(kod);
      $('input[name="veddataNew_STRANA"]').attr('data-value', kod).attr('value', $(this).text());
      return $('.strana_result').addClass('hidden');
    });
    return $('.regio_result_row').click(function() {
      var kod;
      kod = $(this).attr('data-id');
      console.log(kod);
      $('input[name="veddataNew_REGIO"]').attr('data-value', kod).attr('value', $(this).text());
      return $('.regio_result').addClass('hidden');
    });
  },
  init: function() {
    return setTimeout(SITEFILTER.unsetFindKod, 2000);
  },
  unsetKeyupTnved: function() {
    return clearTimeout(SITEFILTER.intervaltnved);
  },
  keyupTnved: function(input) {
    clearTimeout(SITEFILTER.intervaltnved);
    return SITEFILTER.intervaltnved = setTimeout(function() {
      return SITEFILTER.findTnved(input);
    }, 500);
  },
  unsetKeyupStrana: function() {
    return clearTimeout(SITEFILTER.intervalstrana);
  },
  keyupStrana: function(input) {
    clearTimeout(SITEFILTER.intervalstrana);
    return SITEFILTER.intervalstrana = setTimeout(function() {
      return SITEFILTER.findStrana(input);
    }, 500);
  },
  unsetKeyupRegio: function() {
    return clearTimeout(SITEFILTER.intervalregio);
  },
  keyupRegio: function(input) {
    clearTimeout(SITEFILTER.intervalregio);
    return SITEFILTER.intervalregio = setTimeout(function() {
      return SITEFILTER.findRegio(input);
    }, 500);
  },
  findStrana: function(input) {
    var $input, val;
    $input = $(input);
    val = $input.val();
    $('html').css('cursor', 'wait');
    return API.GET.r(API.U.strany.findStrana, {
      opisanie: val,
      dataType: "JSON"
    }, function(data) {
      console.log(data);
      $('.strana_result').closest('div.select').addClass('open');
      $('.strana_result').empty().append(data.content).removeClass('hidden');
      SITEFILTER.initResultRow();
      return $('html').css('cursor', 'default');
    });
  },
  findRegio: function(input) {
    var $input, val;
    $input = $(input);
    val = $input.val();
    $('html').css('cursor', 'wait');
    return API.GET.r(API.U.soatoregion.findregio, {
      opisanie: val,
      dataType: "JSON"
    }, function(data) {
      console.log(data);
      $('.regio_result').closest('div.select').addClass('open');
      $('.regio_result').empty().append(data.content).removeClass('hidden');
      SITEFILTER.initResultRow();
      return $('html').css('cursor', 'default');
    });
  },
  findTnved: function(input) {
    var $input, val;
    $input = $(input);
    val = $input.val();
    $('html').css('cursor', 'wait');
    return API.GET.r(API.U.kodtnved.findKod, {
      opisanie: val,
      dataType: "JSON"
    }, function(data) {
      console.log(data);
      $('.tnved_result').closest('div.select').addClass('open');
      $('.tnved_result').empty().append(data.content).removeClass('hidden');
      SITEFILTER.initResultRow();
      return $('html').css('cursor', 'default');
    });
  },
  collectFilterFormAjax: function() {
    var p;
    p = {};
    $('.isValue', '.filter_form').each(function() {
      if (parseInt($(this).val())) {
        if (!$(this).closest('div[data-menu]').hasClass('hide')) {
          return p[$(this).attr('name')] = $(this).val();
        }
      }
    });
    return p;
  },
  collectFilterFormGet: function() {
    var p;
    p = {};
    $('.isValue').each(function() {
      if (!$(this).closest('div[data-menu]').hasClass('hide')) {
        if (typeof $(this).attr('value') === "undefined") {
          return p[$(this).attr('name')] = 0;
        } else {
          if ($(this).attr('data-value')) {
            return p[$(this).attr('name')] = $(this).attr('data-value');
          } else {
            return p[$(this).attr('name')] = $(this).attr('value');
          }
        }
      }
    });
    return p;
  },
  checkMonth: function(month) {
    if (month) {
      if (month.substr(0, 1) !== 'q') {
        console.log(month);
        if (parseInt(month) < 10) {
          console.log(month);
          month = String('0' + month);
        }
      }
    } else {
      month = '';
    }
    return month;
  },
  acceptFilter: function() {
    var data, page, positions, replace, string, types;
    page = $("input[name=page]").val();
    types = ['oborot', 'import', 'export'];
    data = SITEFILTER.collectFilterFormGet();
    if (!data['veddataNew_TNVED']) {
      data['veddataNew_TNVED'] = 'all';
    }
    if (data['veddataNew_STRANA'].length > 1) {
      data['veddataNew_STRANA'] = data['veddataNew_STRANA'].split(':');
      data['veddataNew_STRANA'] = data['veddataNew_STRANA'][1];
    } else {
      data['veddataNew_STRANA'] = 'world';
    }
    data['veddataNew_NAPR'] = types[data['veddataNew_NAPR']];
    data['veddataNew_Month_from'] = SITEFILTER.checkMonth(data['veddataNew_Month_from']);
    data['veddataNew_Month_to'] = SITEFILTER.checkMonth(data['veddataNew_Month_to']);
    data['dates'] = data['veddataNew_Year_from'] + data['veddataNew_Month_from'] + '-' + data['veddataNew_Year_to'] + data['veddataNew_Month_to'];
    positions = ['veddataNew_TNVED', 'veddataNew_NAPR', 'dates', 'veddataNew_STRANA', 'veddataNew_REGIO'];
    if (page === "kazahstan") {
      positions = ['veddataNew_TNVED', 'veddataNew_NAPR', 'dates', 'veddataNew_STRANA'];
    }
    replace = ['all'];
    string = '';
    $.each(positions, function(index, value) {
      string = string + data[value] + '/';
      if (!data[value]) {
        return data[value] = replace[index];
      }
    });
    //console.log data[value]
    A.P.waitLoad();
    return window.location.href = '/' + page + '/' + string;
  },
  //H.go('/statistic/'+string);
  //data.dataType = "JSON"
  //console.log data
  //API.GET.r API.U.veddataNew.acceptFilter,data,(datas)->
  //  console.log datas
  initRadio: function() {
    return $('#filter_date_control input').click(function() {
      var $r, type;
      $r = $(this);
      type = $r.attr('data-radio');
      console.log(type);
      $('div[data-menu]').each(function() {
        return $(this).addClass('hide');
      });
      return $('div[data-menu="' + type + '"]').removeClass('hide');
    });
  },
  getContent: function() {
    var s;
    SITEFILTER.setWait();
    s = {
      array: $('#filter_array').val(),
      period: $('#filter_period').val(),
      filter: $('#filter').val(),
      count_filter: $('#filter_count').val(),
      from: $('#filter_from').val(),
      get: $('#filter_get').val(),
      to: $('#filter_to').val()
    };
    return API.GET.r(API.U.veddatanew.getContent, s, function(data) {
      $('.chart_content').empty().removeAttr('style').append(data);
      return console.log(data);
    });
  },
  setWait: function() {
    return $('.chart_content').prepend('Загрузка данных может занять до 30 секунд, пожалуйста подождите');
  }
};
