remotes/origin/1203
kotzilla 11 years ago
parent 2c28e0a4e9
commit c4a9451564
  1. 2
      accounts/edit_forms.py
  2. 19
      accounts/views.py
  3. 10
      city/admin.py
  4. 3
      city/admin_urls.py
  5. 7
      city/forms.py
  6. 10
      exposition/admin.py
  7. 3
      exposition/admin_urls.py
  8. 7
      exposition/forms.py
  9. 26
      functions/admin_forms.py
  10. 86
      functions/admin_views.py
  11. 6
      photologue/client_urls.py
  12. 15
      photologue/client_view.py
  13. 8
      place_exposition/admin.py
  14. 6
      place_exposition/admin_urls.py
  15. 22
      place_exposition/forms.py
  16. 9
      settings/templatetags/template_filters.py
  17. 69
      templates/admin/accounts/user_list.html
  18. 10
      templates/admin/admin_list.html
  19. 56
      templates/admin/city/city_list.html
  20. 62
      templates/admin/company/company_list.html
  21. 86
      templates/admin/conference/conference_list.html
  22. 57
      templates/admin/country/contry_list.html
  23. 81
      templates/admin/exposition/exposition_list.html
  24. 49
      templates/admin/includes/admin_pagination.html
  25. 58
      templates/admin/organiser/organiser_list.html
  26. 2
      templates/admin/place_conference/place_conference_all.html
  27. 65
      templates/admin/place_conference/place_conference_list.html
  28. 66
      templates/admin/place_exposition/place_exposition_list.html
  29. 87
      templates/admin/seminar/seminar_list.html
  30. 70
      templates/admin/theme/tag_list.html
  31. 66
      templates/admin/theme/theme_list.html
  32. 64
      templates/admin/translator/translator_list.html
  33. 89
      templates/admin/webinar/webinar_list.html
  34. 1218
      templates/client/accounts/fill_company.html
  35. 976
      templates/client/accounts/new_profile.html
  36. 926
      templates/client/accounts/profile.html
  37. 1
      templates/client/blank.html
  38. 112
      templates/client/includes/catalog_search.html
  39. 116
      templates/client/includes/place/place_list.html
  40. 652
      templates/client/includes/place/place_object.html
  41. 216
      templates/client/place/place_photo.html
  42. 48
      templates/client/popups/photo.html
  43. 166
      templates/client/popups/place.html
  44. 108
      templates/client/popups/theme.html
  45. 24168
      templates/client/static_client/css/main.css
  46. 4106
      templates/client/static_client/js/main.js
  47. 9
      templates/client/static_client/js/pages/company.js
  48. 149
      templates/client/static_client/js/pages/place_photo.js
  49. 98
      templates/client/static_client/js/pages/profile.js
  50. 18
      templates/client/static_client/js/plugins/inputmask/jquery.bind-first-0.2.3.min.js
  51. 764
      templates/client/static_client/js/plugins/inputmask/jquery.inputmask-multi.js
  52. 2244
      templates/client/static_client/js/plugins/inputmask/jquery.inputmask.js
  53. 588
      templates/client/static_client/js/plugins/inputmask/phone-codes.json
  54. 4804
      templates/client/static_client/js/plugins/inputmask/phones-ru.json
  55. 642
      templates/client/static_client/js/plugins/inputmask/phones-us.json

@ -8,7 +8,7 @@ from company.models import Company
class AvatarForm(forms.ModelForm):
avatar = forms.ImageField(label=_(u'Выберите файл (GIF, JPG, PNG. Размер 100 × 100 пикселей)'),
required=False)
required=False, widget=forms.FileInput(attrs={'class': 'input'}))
class Meta:
model = Profile
fields = ('avatar',)

@ -14,6 +14,8 @@ from models import User
import json, datetime
import calendar as python_calendar
from django.views.generic import TemplateView, FormView, ListView
from sorl.thumbnail import get_thumbnail
class SettingsView(TemplateView):
template_name = 'accounts/settings.html'
@ -240,10 +242,19 @@ class AvatarView(BaseProfileView):
def form_valid(self, form):
profile = self.request.user.profile
if not self.request.FILES:
response = {'success': False, 'message':'files is empty'}
return HttpResponse(json.dumps(response), content_type='application/json')
form = self.form_class(self.request.POST, self.request.FILES, instance=profile)
form.save()
response = {'success': True}
return HttpResponse(json.dumps(response), content_type='application/json')
if self.request.is_ajax():
im = get_thumbnail(profile.avatar, '100x100', crop='center')
response = {'success': True, 'url': im.url}
#response = {'success': True}
return HttpResponse(json.dumps(response), content_type='application/json')
else:
return HttpResponseRedirect('/profile/')
class HomeView(BaseProfileView):
@ -300,7 +311,6 @@ def test(request):
from exposition.models import Exposition
def get_user(url):
try:
url = int(url)
@ -354,5 +364,4 @@ class UserSeminarView(UserEventView):
url = self.kwargs.get('url')
user = get_user(url)
self.obj = user
return user.seminar_users.all()
return user.seminar_users.all()

@ -6,12 +6,13 @@ from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.contrib.contenttypes.models import ContentType
#models and forms
from forms import CityForm, CityDeleteForm
from forms import CityForm, CityDeleteForm, CityFilterForm
from models import City
from file.models import FileModel
from file.forms import FileModelForm
#custom views
from functions.custom_views import objects_list, add_object_with_file, delete_object
from functions.admin_views import AdminListView
def city_all(request):
@ -104,4 +105,9 @@ def search_city(request):
qs = City.objects.language().filter(country=country, translations__name__contains=term)
result = [{'id': city.id, 'label': city.name} for city in qs]
return HttpResponse(json.dumps(result), content_type='application/json')
return HttpResponse(json.dumps(result), content_type='application/json')
class CityListView(AdminListView):
template_name = 'admin/city/city_list.html'
form_class = CityFilterForm
model = City

@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, url
from admin import CityListView
urlpatterns = patterns('city.admin',
url(r'^add/$', 'city_add'),
url(r'^delete/(?P<url>.*)/$', 'city_delete'),
url(r'^change/(.*)/$', 'city_change'),
url(r'^all/$', 'city_all'),
url(r'^all/$', CityListView.as_view()),
url(r'^search/$', 'search_city'),
)

@ -13,6 +13,7 @@ from directories.models import Iata
from functions.translate import fill_with_signal
from functions.form_check import is_positive_integer, translit_with_separator
from functions.files import check_tmp_files
from functions.admin_forms import AdminFilterForm
class CityForm(forms.Form):
@ -158,4 +159,8 @@ class CityDeleteForm(forms.ModelForm):
class Meta:
model = City
fields = ('url',)
fields = ('url',)
class CityFilterForm(AdminFilterForm):
model = City

@ -9,7 +9,7 @@ from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.decorators import login_required
# models and forms
from models import Exposition, TimeTable, Statistic, TmpTimeTable
from forms import ExpositionCreateForm, ExpositionDeleteForm, TimeTableForm, StatisticForm
from forms import ExpositionCreateForm, ExpositionDeleteForm, TimeTableForm, StatisticForm, ExpositionFilterForm
from theme.models import Tag
from city.models import City
from file.models import FileModel, TmpFile
@ -19,6 +19,7 @@ import random
# custom views
from functions.custom_views import objects_list, delete_object
from functions.views_help import get_referer
from functions.admin_views import AdminListView
def exposition_all(request):
@ -229,4 +230,9 @@ def exposition_change(request, url):
object_id=getattr(exposition, 'id'))
args['obj_id'] = getattr(exposition, 'id')
return render_to_response('exposition_add.html', args)
return render_to_response('exposition_add.html', args)
class ExpositionListView(AdminListView):
template_name = 'admin/exposition/exposition_list.html'
form_class = ExpositionFilterForm
model = Exposition

@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, include, url
from admin import ExpositionListView
urlpatterns = patterns('exposition.admin',
url(r'^add.*/$', 'exposition_add'),
url(r'^delete/(?P<url>.*)/$', 'exposition_delete'),
url(r'^change/(?P<url>.*)/$', 'exposition_change'),
url(r'^all/$', 'exposition_all'),
url(r'^all/$', ExpositionListView.as_view()),
url(r'^switch/(?P<url>.*)/(?P<action>.*)$', 'exposition_switch'),
url(r'^copy/(?P<url>.*)$', 'exposition_copy'),
)

@ -22,6 +22,7 @@ from functions.form_check import is_positive_integer
from functions.files import check_tmp_files
from functions.form_check import translit_with_separator
from settings.settings import date_formats
from functions.admin_forms import AdminFilterForm
class ExpositionCreateForm(forms.Form):
@ -479,4 +480,8 @@ class TimeTableForm(forms.Form):
else:
fill_with_signal(TimeTable, timetable, data)
return timetable
return timetable
class ExpositionFilterForm(AdminFilterForm):
model = Exposition

@ -1,5 +1,7 @@
# -*- coding: utf-8 -*-
from django import forms
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
class AdminForm(forms.Form):
@ -14,3 +16,27 @@ class AdminForm(forms.Form):
# uses enumerate for detect iteration number
# first iteration is a default lang so it required fields
required = True if lid == 0 else False
class AdminFilterForm(forms.Form):
"""
class for filtering lists in admin panel
"""
model = None # which models work with
name = forms.CharField(label=_(u'Имя'), required=False)
def filter(self):
"""
return filtered queryset
form must be cleaned before calling this method
"""
data = self.cleaned_data
name = data['name']
model = self.model
qs = model.objects.all()
if name:
qs = qs.filter(translations__name__contains=name)
return qs

@ -1,4 +1,4 @@
from django.views.generic import FormView
from django.views.generic import FormView, ListView
from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponseRedirect
from django.conf import settings
@ -59,4 +59,86 @@ class AdminView(FormView):
return form_class(data)
else:
return form_class()
"""
"""
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def paginate_results(qs, page=None):
paginator = Paginator(qs, settings.ADMIN_PAGINATION)
try:
result = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
result = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
result = paginator.page(paginator.num_pages)
return result
class AdminListView(FormView):
def get_form(self, form_class):
if self.request.GET:
return form_class(self.request.GET)
else:
return form_class(**self.get_form_kwargs())
def get(self, request, *args, **kwargs):
if request.GET:
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
else:
return super(AdminListView, self).get(request, *args, **kwargs)
def form_valid(self, form):
"""
filtering queryset and return paginated results
"""
qs = form.filter()
result = paginate_results(qs, page=self.request.GET.get('page'))
context = self.get_context_data(form=form)
context.update({'object_list': result})
return self.render_to_response(context)
def get_context_data(self, **kwargs):
context = super(AdminListView, self).get_context_data(**kwargs)
qs = self.model.objects.all()
result = paginate_results(qs, page=self.request.GET.get('page'))
context['object_list'] = result
return context
"""
class AdminListView(ListView):
model = None
paginate_by = settings.ADMIN_PAGINATION
template_name = None
filter_form = None
def get_queryset(self):
if self.filter_form is None:
return super(AdminListView, self).get_queryset()
else:
form = self.filter_form(self.request.GET)
if form.is_valid():
result = form.filter()
return result
else:
return super(AdminListView, self).get_queryset()
def get_context_data(self, **kwargs):
context = super(AdminListView, self).get_context_data(self, **kwargs)
context =
"""

@ -3,7 +3,9 @@ from django.conf.urls import patterns, url
from client_view import GalleryView, PhotoView
urlpatterns = patterns('',
url(r'gallery/(?P<slug>.*)$', GalleryView.as_view()),
url(r'photo/(?P<slug>.*)$', PhotoView.as_view()),
#url(r'gallery/(?P<slug>.*)$', GalleryView.as_view()),
#url(r'photo/(?P<slug>.*)$', PhotoView.as_view()),
url(r'^show/photo/$', 'photologue.client_view.ajax_photo'),
)

@ -1,7 +1,9 @@
import warnings
import json
from django.conf import settings
from django.views.generic import DetailView, ListView
from photologue.models import Gallery, Photo
from django.shortcuts import get_object_or_404, HttpResponse
# Number of galleries to display per page.
@ -29,3 +31,16 @@ class PhotoView(DetailView):
slug_field = 'slug'
template_name = 'client/photoreport/photo.html'
def ajax_photo(request):
if request.GET:
id = request.GET.get('id')
photo = get_object_or_404(Photo, pk=id)
response = {'title': photo.caption, 'text': photo.title, 'url':photo.get_display_url()}
return HttpResponse(json.dumps(response), content_type='application/json')
else:
return HttpResponse('123')

@ -10,7 +10,7 @@ from django.contrib.auth.decorators import login_required
from django.forms.formsets import BaseFormSet, formset_factory
from django.forms.models import modelformset_factory
#models and forms
from forms import ExpositionForm, PlaceExpositionFormDelete, HallForm
from forms import ExpositionForm, PlaceExpositionFormDelete, HallForm, PlaceExpositionFilter
from models import PlaceExposition, Hall
from city.models import City
from file.models import FileModel, TmpFile
@ -192,7 +192,7 @@ def exposition_change(request, url):
#test----------------------
from functions.admin_views import AdminView
from functions.admin_views import AdminView, AdminListView
class PlaceExpositionView(AdminView):
@ -257,3 +257,7 @@ class PlaceExpositionView(AdminView):
return context
class PlaceExpositionListView(AdminListView):
template_name = 'admin/place_exposition/place_exposition_list.html'
form_class = PlaceExpositionFilter
model = PlaceExposition

@ -1,13 +1,15 @@
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, include, url
from admin import PlaceExpositionView
from admin import PlaceExpositionView, PlaceExpositionListView
urlpatterns = patterns('place_exposition.admin',
url(r'^all/$', 'exposition_all'),
#url(r'^all/$', 'exposition_all'),
url(r'^all/$', PlaceExpositionListView.as_view()),
url(r'^add.*/$', 'exposition_add'),
url(r'^delete/(?P<url>.*)/$', 'exposition_delete'),
url(r'^change/(?P<url>.*)/$', 'exposition_change'),
url(r'^copy/(?P<url>.*)/$', 'place_exposition_copy'),
url(r'^$', PlaceExpositionView.as_view()),
url(r'^(?P<url>.*)/$', PlaceExpositionView.as_view()),

@ -293,5 +293,23 @@ class HallForm(forms.ModelForm):
capacity = cleaned_data.get('capacity').strip()
return is_positive_integer(capacity, 'Вместимость должна состоять из цифр')
class TestForm(forms.Form):
pass
from functions.admin_forms import AdminFilterForm
from django.utils.translation import ugettext_lazy as _
class PlaceExpositionFilter(AdminFilterForm):
country = forms.MultipleChoiceField(choices=[(item.id, item.name) for item in list(Country.objects.all())],
required=False, widget=forms.SelectMultiple())
model = PlaceExposition
def filter(self):
qs = super(PlaceExpositionFilter, self).filter()
data = self.cleaned_data
country = data['country']
if country:
qs = qs.filter(country_id__in=country)
return qs

@ -14,6 +14,15 @@ from photoreport.models import Photoreport
register = template.Library()
@register.filter
def delete_get_key(request, key=None):
get = request.GET.copy()
if key in get:
del get[key]
return get.urlencode()
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)

@ -0,0 +1,69 @@
{% extends 'admin_list.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список пользователей</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>id</th>
<th>Email</th>
<th>Полное имя</th>
<th>Админ</th>
<th>Переводчик</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.email }}</td>
<td>{{ item.get_full_name }}</td>
{% if item.is_admin %}
<td>Да</td>
{% else %}
<td>&nbsp;</td>
{% endif %}
{% if item.is_translator %}
<td>Да</td>
{% else %}
<td>&nbsp;</td>
{% endif %}
<td class="center sorting_1">
<a class="btn btn-info" href="/admin/accounts/change/{% if item.url %}{{ item.url }}{% else %}{{ item.id }}{% endif %}">
<i class="icon-edit icon-white"></i> Изменить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -0,0 +1,10 @@
{% extends 'base.html' %}
{% load static %}
{% block scripts %}
{# selects #}
<link href="{% static 'js/select/select2.css' %}" rel="stylesheet"/>
<script src="{% static 'js/select/select2.js' %}"></script>
<script src="{% static 'custom_js/make_select.js' %}"></script>
{% endblock %}

@ -0,0 +1,56 @@
{% extends 'admin_list.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список городов</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>Город</th>
<th>Страна</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.name }}</td>
<td>{% ifnotequal item.country.name None %}{{ item.country }} {% endifnotequal %}</td>
<td class="center sorting_1">
<a class="btn btn-info" href="/admin/city/change/{{ item.url|lower }}">
<i class="icon-edit icon-white"></i> Изменить
</a>
<a class="btn btn-danger delete" href="/admin/city/delete/{{ item.url }}/">
<i class="icon-trash icon-white"></i> Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/city/add"><i class="icon-plus-sign icon-white"></i> Добавить город</a>
</div>
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -0,0 +1,62 @@
{% extends 'admin_list.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список компаний</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>id</th>
<th>Компания</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td class="center sorting_1">
<a class="btn btn-info" href="/admin/company/change/{% if item.url %}{{ item.url }}{% else %}{{ item.id }}{% endif %}">
<i class="icon-edit icon-white"></i> Изменить
</a>
<a class="btn btn-danger" href="/admin/company/delete/{{ item.id }}">
<i class="icon-trash icon-white"></i> Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/company/add"><i class="icon-plus-sign icon-white"></i> Добавить компанию</a>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -0,0 +1,86 @@
{% extends 'admin_list.html' %}
{% load static %}
{% block scripts %}
<script src="{% static 'custom_js/event_switcher.js' %}"></script>
{% endblock %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список конференций</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>Название</th>
<th>Дата начала</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.name }}</td>
<td>{{ item.data_begin }}</td>
<td>
<a class="btn-small btn-warning off" style="{% if item.is_published %}{% else %}display: none;{% endif %}"
href="/admin/conference/switch/{{ item.url }}/off">
Отключить
</a>
<a class="btn-small btn-success on" style="{% if item.is_published %}display: none;{% else %}{% endif %}"
href="/admin/conference/switch/{{ item.url }}/on">
Включить
</a>
</td>
<td class="center sorting_1">
<a class="btn-small btn-info" href="/admin/conference/change/{{ item.url|lower }}">
Изменить
</a>
</td>
<td>
<a class="btn-small btn-inverse" href="/admin/conference/copy/{{ item.url|lower }}">
Копировать
</a>
</td>
<td>
<a class="btn btn-danger" href="/admin/conference/delete/{{ item.url|lower }}">
<i class="icon-trash icon-white"></i> Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/conference/add"><i class="icon-plus-sign icon-white"></i> Добавить конференцию</a>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -0,0 +1,57 @@
{% extends 'admin_list.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список стран</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>id</th>
<th>Страна</th>
<th>Столица</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td>{% ifnotequal item.capital None %}{{ item.capital }} {% endifnotequal %}</td>
<td class="center sorting_1">
<a class="btn btn-info" href="/admin/country/change/{{ item.url|lower }}">
<i class="icon-edit icon-white"></i> Изменить
</a>
<a class="btn btn-danger delete" href="/admin/country/delete/{{ item.url }}/">
<i class="icon-trash icon-white"></i> Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/country/add"><i class="icon-plus-sign icon-white"></i> Добавить страну</a>
</div>
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -0,0 +1,81 @@
{% extends 'admin_list.html' %}
{% block styles %}
td a{
float:left;
margin: 0 10px 10px 0
}
{% endblock %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список выставок</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>Название</th>
<th>Дата начала</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.name }}</td>
<td>{{ item.data_begin }}</td>
<td style="width: 200px; height:100px;">
<a class="btn-small btn-warning off" style="{% if item.is_published %}{% else %}display: none;{% endif %}"
href="/admin/exposition/switch/{{ item.url }}/off">
Отключить
</a>
<a class="btn-small btn-success on" style="{% if item.is_published %}display: none;{% else %}{% endif %}"
href="/admin/exposition/switch/{{ item.url }}/on">
Включить
</a>
<a class="btn-small btn-info" href="/admin/exposition/change/{{ item.url|lower }}">
Изменить
</a>
<a class="btn-small btn-inverse" href="/admin/exposition/copy/{{ item.url }}" id="copy">
Копировать
</a>
<a class="btn-small btn-danger" href="/admin/exposition/delete/{{ item.url|lower }}">
Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/exposition/add"><i class="icon-plus-sign icon-white"></i> Добавить выставку</a>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -1,4 +1,4 @@
{% comment %}
<div class="pagination pagination-centered">
<ul>
{% if page_obj.has_previous %}
@ -9,4 +9,49 @@
<li><a href="?page={{ page_obj.next_page_number }}"></a></li>
{% endif %}
</ul>
</div>
</div>
{% endcomment %}
{% load template_filters %}
{% if page_obj.paginator.num_pages > 1 %}
<section id="paginations">
<ul class="pagination" style="float:right;margin-right:20px;">
{% if page_obj.has_previous %}
<li>
<a href="?page={{ page_obj.previous_page_number }}&{{ request|delete_get_key:'page'}}">&laquo;</a>
</li>
{% endif %}
{% if page_obj.number > 2 %}
<li><a href="?page={{ 1 }}&{{ request|delete_get_key:'page'}}">{{ 1 }}</a></li>
{% if page_obj.number > 3 %}
<li><a href="#" style="border:0;">...</a></li>
{% endif %}
{% endif %}
{% if page_obj.has_previous %}
<li><a href="?page={{ page_obj.previous_page_number }}&{{ request|delete_get_key:'page'}}">{{ page_obj.previous_page_number }}</a></li>
{% endif %}
<li class="active">
<a href="#">{{ page_obj.number }}</a>
</li>
{% if page_obj.has_next %}
<li><a href="?page={{ page_obj.next_page_number }}&{{ request|delete_get_key:'page'}}">{{ page_obj.next_page_number }}</a></li>
{% endif %}
{% if page_obj.paginator.num_pages|subtract:page_obj.number > 1 %}
{% if page_obj.paginator.num_pages|subtract:page_obj.number > 2 %}
<li><a href="#" style="border:0;">...</a></li>
{% endif %}
<li><a href="?page={{ page_obj.paginator.num_pages }}&{{ request|delete_get_key:'page'}}">{{ page_obj.paginator.num_pages }}</a></li>
{% endif %}
{% if page_obj.has_next %}
<li>
<a href="?page={{ page_obj.next_page_number }}&{{ request|delete_get_key:'page'}}">&raquo;</a>
</li>
{% endif %}
</ul>
</section>
{% endif %}

@ -0,0 +1,58 @@
{% extends 'admin_list.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список организаторов</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>id</th>
<th>Организатор</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td class="center sorting_1">
<a class="btn btn-info" href="/admin/organiser/change/{{ item.id }}">
<i class="icon-edit icon-white"></i> Изменить
</a>
<a class="btn btn-danger" href="/admin/organiser/delete/{{ item.id }}">
<i class="icon-trash icon-white"></i> Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/organiser/add"><i class="icon-plus-sign icon-white"></i> Добавить организатора</a>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -2,7 +2,7 @@
{% block body %}
<div class="box span8">
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Места проведения конференций</h2>
</div>

@ -0,0 +1,65 @@
{% extends 'admin_list.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Места проведения конференций</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>Название</th>
<th>Страна</th>
<th>Город</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.name }}</td>
<td>{% ifnotequal item.country None %}{{ item.country }} {% endifnotequal %}</td>
<td>{% ifnotequal item.city None %}{{ item.city }} {% endifnotequal %}</td>
<td class="center sorting_1">
<a class="btn-small btn-info" href="/admin/place_conference/change/{{ item.url|lower }}">
Изменить
</a>
</td>
<td class="center sorting_1">
<a class="btn-small btn-inverse" href="/admin/place_conference/copy/{{ item.url|lower }}">
Копировать
</a>
</td>
<td>
<a class="btn-small btn-danger" href="/admin/place_conference/delete/{{ item.url|lower }}">
Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/place_conference/add"><i class="icon-plus-sign icon-white"></i> Добавить конферец зал</a>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -0,0 +1,66 @@
{% extends 'admin_list.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Места проведения выставок</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>Название</th>
<th>Страна</th>
<th>Город</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.name }}</td>
<td>{% ifnotequal item.country None %}{{ item.country }} {% endifnotequal %}</td>
<td>{% ifnotequal item.city None %}{{ item.city }} {% endifnotequal %}</td>
<td class="center sorting_1">
<a class="btn-small btn-info" href="/admin/place_exposition/change/{{ item.url|lower }}">
Изменить
</a>
</td>
<td class="center sorting_1">
<a class="btn-small btn-inverse" href="/admin/place_exposition/copy/{{ item.url|lower }}">
Копировать
</a>
</td>
<td>
<a class="btn-small btn-danger" href="/admin/place_exposition/delete/{{ item.url|lower }}">
Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/place_exposition/add"><i class="icon-plus-sign icon-white"></i> Добавить выставочный центр</a>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -0,0 +1,87 @@
{% extends 'admin_list.html' %}
{% load static %}
{% block scripts %}
<script src="{% static 'custom_js/event_switcher.js' %}"></script>
{% endblock %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список семинаров</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>Название</th>
<th>Дата начала</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.name }}</td>
<td>{{ item.data_begin }}</td>
<td>
<a class="btn-small btn-warning off" style="{% if item.is_published %}{% else %}display: none;{% endif %}"
href="/admin/seminar/switch/{{ item.url }}/off">
Отключить
</a>
<a class="btn-small btn-success on" style="{% if item.is_published %}display: none;{% else %}{% endif %}"
href="/admin/seminar/switch/{{ item.url }}/on">
Включить
</a>
</td>
<td class="center sorting_1">
<a class="btn-small btn-info" href="/admin/seminar/change/{{ item.url|lower }}">
Изменить
</a>
</td>
<td>
<a class="btn-small btn-inverse" href="/admin/seminar/copy/{{ item.url|lower }}">
Удалить
</a>
</td>
<td>
<a class="btn-small btn-danger" href="/admin/seminar/delete/{{ item.url|lower }}">
Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/seminar/add"><i class="icon-plus-sign icon-white"></i> Добавить семинар</a>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -0,0 +1,70 @@
{% extends 'admin_list.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список тегов</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>id</th>
<th>Название</th>
<th>Тема</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td>{{ item.theme }}</td>
<td class="center sorting_1">
<a class="btn-small btn-info" href="/admin/theme/tag/change/{{ item.id }}">
Изменить
</a>
</td>
<td class="center sorting_1">
<a class="btn-small btn-inverse" href="/admin/theme/tag/copy/{{ item.id }}">
Копировать
</a>
</td>
<td>
<a class="btn-small btn-danger delete" href="/admin/theme/tag/delete/{{ item.id }}/">
Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/theme/tag/add"><i class="icon-plus-sign icon-white"></i> Добавить тег</a>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -0,0 +1,66 @@
{% extends 'admin_list.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список тем</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>id</th>
<th>Название</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td class="center sorting_1">
<a class="btn-small btn-info" href="/admin/theme/theme/change/{{ item.id }}">
Изменить
</a>
</td>
<td>
<a class="btn-small btn-inverse" href="/admin/theme/theme/copy/{{ item.id }}/">
Копировать
</a>
</td>
<td>
<a class="btn-small btn-danger delete" href="/admin/theme/theme/delete/{{ item.id }}/">
Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/theme/theme/add"><i class="icon-plus-sign icon-white"></i> Добавить тематику</a>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -0,0 +1,64 @@
{% extends 'admin_list.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список переводчиков</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>id</th>
<th>Пользователь</th>
<th>Страна</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.id }}</td>
{% for u in item.user.all %}
<td>{{ u }}</td>
<td>{{ u.country }}</td>
{% endfor %}
<td class="center sorting_1">
<a class="btn btn-info" href="/admin/translator/change/{{ item.id }}">
<i class="icon-edit icon-white"></i> Изменить
</a>
<a class="btn btn-danger delete" href="/admin/translator/delete/{{ item.id }}/">
<i class="icon-trash icon-white"></i> Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/translator/add"><i class="icon-plus-sign icon-white"></i> Добавить перводчика</a>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

@ -0,0 +1,89 @@
{% extends 'admin_list.html' %}
{% load static %}
{% block scripts %}
<script src="{% static 'custom_js/event_switcher.js' %}"></script>
{% endblock %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Фильтры</h2>
</div>
<div class="box-content">
<form>
{{ form }}
<button type="submit" class="btn">Найти</button>
</form>
</div>
</div>
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список вебинаров</h2>
</div>
<div class="box-content">
<table class="table table-hover">
<thead>
<tr>
<th>Название</th>
<th>Дата</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.name }}</td>
<td>{{ item.data_begin }}</td>
<td>
<a class="btn-small btn-warning off" style="{% if item.is_published %}{% else %}display: none;{% endif %}"
href="/admin/webinar/switch/{{ item.url }}/off">
Отключить
</a>
<a class="btn-small btn-success on" style="{% if item.is_published %}display: none;{% else %}{% endif %}"
href="/admin/webinar/switch/{{ item.url }}/on">
Включить
</a>
</td>
<td class="center sorting_1">
<a class="btn-small btn-info" href="/admin/webinar/change/{{ item.url|lower }}">
Изменить
</a>
</td>
<td>
<a class="btn-small btn-inverse" href="/admin/webinar/copy/{{ item.url|lower }}">
Копировать
</a>
</td>
<td>
<a class="btn-small btn-danger" href="/admin/webinar/delete/{{ item.url|lower }}">
Удалить
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a class="btn btn-success" href="/admin/webinar/add"><i class="icon-plus-sign icon-white"></i> Добавить вебинар</a>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
{% endblock %}

File diff suppressed because it is too large Load Diff

@ -1,480 +1,496 @@
{% extends 'base_catalog.html' %}
{% load static %}
{% load i18n %}
{% load template_filters %}
{% block style %}
<link rel="stylesheet" href="{% static 'client/css/select2.css' %}">
{% if not company_form %}
<style>
.add_company a:before { content:'';background: none; display: inline-block !important;}
.add_company a:hover:before {background: none !important;}
</style>
{% endif %}
{% endblock %}
{% block bread_scrumbs %}
<div class="bread-crumbs">
<a href="/">{% trans 'Главная страница' %}</a>
<strong>{% trans 'Личный кабинет' %}</strong>
</div>
{% endblock %}
{% block page_title %}
{% endblock %}
{% block content_list %}
<div class="m-article">
<div class="item-wrap clearfix">
<aside>
<div class="i-pict">
<a class="add_pic_block" title="">
<span></span>
<i>Добавить фото</i>
<b>+20</b>
<input type="file" class="input" value="">
</a>
</div>
<div class="i-rating" title="Рейтинг: 551">551</div>
<div class="reason_block">
<p>Заполните свой<br>профиль, чтобы<br>повысить рейтинг</p>
<p>Чем выше<br>рейтинг —<br>тем больше<br>преимуществ!</p>
</div>
</aside>
<div class="i-info">
<header>
<div class="{% if home_form.instance.country and home_form.instance.city %}i-place p-editable{% else %}i-place p-editable add_link_text add_link_text_medium{% endif %}">
{% if home_form.instance.country and home_form.instance.city %}
<span>
{% else %}
<span style="display:none;">
{% endif %}
<a href="#" id="static-home-country">{{ home_form.instance.country }}</a>
</span>
{% if home_form.instance.country and home_form.instance.city %}
<span>
{% else %}
<span style="display:none;">
{% endif %}
, <a href="#" id="static-home-city">{{ home_form.instance.city }}</a>
</span>
<div class="edit-wrap e-left">
{% if home_form.instance.country and home_form.instance.city %}
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
{% else %}
<a class="e-btn" href="#" title="">Указать</a>
<div class="add_link_text_text">свой город <b>+5</b></div>
{% endif %}
<div class="e-form">
<form class="clearfix update-profile-form" id="home_form" action="/profile/update/home/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>Страна</label>
<div class="epf-field">
{{ home_form.country }}
</div>
</div>
<div class="epfl">
<label>{% trans 'Город' %}</label>
<div class="epf-field">
{{ home_form.city }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">Сохранить</button>
</div>
</form>
<a class="ef-close" href="#">закрыть</a>
</div>
</div>
</div>
<div class="site_link" {% if home_form.instance.country and home_form.instance.city %}style="right:-70px;"{% endif %}>
<a href="{{ request.user.get_permanent_url }}" title="">
{{ request.user.get_permanent_url }}
</a>
</div>
<div class="i-title p-editable p-editable">
<span id="static-name-value">
{{ name_form.get_full_name }}
</span>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="name_form" action="/profile/update/name/"
method="post" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ name_form.first_name.label }}</label>
<div class="epf-field">
{{ name_form.first_name }}
</div>
</div>
<div class="epfl">
<label>{{ name_form.last_name.label }}</label>
<div class="epf-field">
{{ name_form.last_name }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</header>
{# position #}
<div class="{% if work_form.position.value and work_form.company.value %}p-editable{% else %}i-descr p-editable add_link_text add_link_text_top{% endif %}">
{% if work_form.position.value and work_form.company.value %}
<p id="static-work-value">
{{ work_form.position.value }}
{% if work_form.company.value %}
{% trans 'в' %} {{ request.user.company.name }}
{% endif %}
</p>
{% endif %}
<div class="edit-wrap">
{% if work_form.position.value and work_form.company.value %}
<a class="e-btn" href="/profile/company/">{% trans 'редактировать' %}</a>
{% else %}
<a class="e-btn" href="#" title="">Указать</a>
<div class="add_link_text_text">свою должность и место работы <b>+10</b></div>
{% endif %}
<div class="e-form">
<form class="clearfix update-profile-form" id="work_form" action="/profile/update/work/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ work_form.position.label }}</label>
<div class="epf-field">
{{ work_form.position }}
</div>
</div>
<div class="epfl">
<label>{{ work_form.company.label }}</label>
<div class="epf-field">
{{ work_form.company }}
</div>
</div>
<!-- сделать проверку на создателя компании -->
<div class="add_company"><a id="add-comp-btn" class="pw-open" href="{% if not company_form %}/profile/company/{% else %}#pw-company{% endif %}" title="">{% if not company_form %}Изменить{% else %}Добавить{% endif %} компанию</a></div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
<div class="clear"></div>
</div>
<hr />
<div class="i-contacts clearfix">
<div class="ic-buttons ic-buttons_pos dd_width_4">
<a class="button icon-edit icb-edit-profile" href="#">редактировать профиль</a>
<a class="button orange icon-edit icb-exit-edit" href="#">завершить редактирование</a>
<div class="ic-buttons_text">Добавить профили в соц.сетях:</div>
<div class="p-editable add_link_text add_link_text_medium soc-media-indent">
<div class="edit-wrap">
<a class="e-btn" href="#" title="">Добавить</a>
<ul class="soc-media-buttons soc-media-buttons1">
<li>
{% if social_form.facebook.value %}
<a href="{{ social_form.facebook.value }}" target="_blank">
<img id="img-facebook" src="{% static 'client/img/soc-medias/sm-icon-fb.png' %}" title="Facebook" alt="Facebook" />
</a>
{% else %}
<img id="img-facebook" src="{% static 'client/img/soc-medias/sm-icon-fb_hover.png' %}" title="Facebook" alt="Facebook" />
{% endif %}
</li>
<li>
{% if social_form.linkedin.value %}
<a href="{{ social_form.linkedin.value }}" target="_blank">
<img id="img-linkedin" src="{% static 'client/img/soc-medias/sm-icon-lin.png' %}" title="LinkedIn" alt="LinkedIn" />
</a>
{% else %}
<img id="img-linkedin" src="{% static 'client/img/soc-medias/sm-icon-lin_hover.png' %}" title="LinkedIn" alt="LinkedIn" />
{% endif %}
<li>
{% if social_form.vk.value %}
<a href="{{ social_form.vk.value }}" target="_blank">
<img id="img-vk" src="{% static 'client/img/soc-medias/sm-icon-vk.png' %}" title="В контакте" alt="В контакте" />
</a>
{% else %}
<img id="img-vk" src="{% static 'client/img/soc-medias/sm-icon-vk_hover.png' %}" title="В контакте" alt="В контакте" />
{% endif %}
</li>
<li>
{% if social_form.twitter.value %}
<a href="{{ social_form.twitter.value }}" target="_blank">
<img id="img-twitter" src="{% static 'client/img/soc-medias/sm-icon-twit.png' %}" title="Twitter" alt="Twitter" />
</a>
{% else %}
<img id="img-twitter" src="{% static 'client/img/soc-medias/sm-icon-twit_hover.png' %}" title="Twitter" alt="Twitter" />
{% endif %}
</li></li>
</ul>
<div class="add_link_text_text"><b>+5 за каждый</b></div>
<div class="e-form">
<form class="clearfix update-profile-form" id="social_form" action="/profile/update/social/">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-fb-w.png' %}" title="Facebook" alt="Facebook" /> {{ social_form.facebook.label }}</label>
<div class="epf-field">
{{ social_form.facebook }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-lin-w.png' %}" title="LinkedIn" alt="LinkedIn" /> {{ social_form.linkedin.label }}</label>
<div class="epf-field">
{{ social_form.linkedin }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-vk-w.png' %}" title="В контакте" alt="В контакте" /> {{ social_form.vk.label }}</label>
<div class="epf-field">
{{ social_form.vk }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-twit-w.png' %}" title="Twitter" alt="Twitter" /> {{ social_form.twitter.label }}</label>
<div class="epf-field">
{{ social_form.twitter }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</div>
<div class="ic-links ic-links_indent dd_width_5">
<div class="{% if phone_form.phone.value %}ic-tel p-editable{% else %}p-editable add_link_text add_link_text_medium{% endif %}">
{% if phone_form.phone.value %}
<span id="static-phone-value">{{ phone_form.phone.value|phone }}</span>
{% endif %}
<div class="edit-wrap">
{% if phone_form.phone.value %}
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
{% else %}
<a class="e-btn" href="#" title="">Добавить</a>
<div class="add_link_text_text">номер телефона <b>+15</b></div>
{% endif %}
<div class="e-form">
<form class="clearfix update-profile-form" id="phone_form" action="/profile/update/phone/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ phone_form.phone.label }}</label>
<div class="epf-field">
{{ phone_form.phone }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
<div class="ic-mail add_indent">
<a class="icon-mail" href="mailto:{{ request.user.email }}">{{ request.user.email }}</a>
</div>
<div class="{% if web_page_form.web_page.value %}ic-site p-editable{% else %}ic-site p-editable add_link_text add_link_text_medium{% endif %}">
{% if web_page_form.web_page.value %}
<a class="icon-ext-link" id="static-web-page-value" href="{% if web_page_form.web_page.value %}{{ web_page_form.web_page.value }}{% else %}#{% endif %}" target="_blank">
{% if web_page_form.web_page.value %}
{{ web_page_form.web_page.value }}
{% endif %}
</a>
{% endif %}
<div class="edit-wrap">
{% if web_page_form.web_page.value %}
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
{% else %}
<a class="e-btn" href="#" title="">Добавить</a>
<div class="add_link_text_text">сайт <b>+5</b></div>
{% endif %}
<div class="e-form">
<form class="clearfix update-profile-form" id="web_page_form" action="/profile/update/web-page/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ web_page_form.web_page.label }}</label>
<div class="epf-field">
{{ web_page_form.web_page }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</div>
</div>
<hr />
<div class="{% if about_form.about.value %}i-additional{% else %}i-additional i-additional1{% endif %}">
{% if about_form.about.value %}
<div class="ia-title">{% trans 'О себе:' %}</div>
{% endif %}
<div class="{% if about_form.about.value %}p-editable{% else %}p-editable add_link_text{% endif %}">
{% if about_form.about.value %}
<p id="static-about-value">{{ about_form.about.value }}</p>
{% endif %}
<div class="edit-wrap">
{% if about_form.about.value %}
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
{% else %}
<a class="e-btn" href="#" title="">Добавить</a>
<div class="add_link_text_text">информацию о себе <b>+10</b></div>
{% endif %}
<div class="e-form">
<form class="clearfix update-profile-form" id="about_form" action="/profile/update/about/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ about_form.about.label }}</label>
<div class="epf-field">
{{ about_form.about }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">Сохранить</button>
</div>
</form>
<a class="ef-close" href="#">закрыть</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block popup %}
{% if company_form %}
{% include 'popups/create_company.html' with form=company_form %}
{% endif %}
{% endblock %}
{% block pre_scripts %}
<script src="{% static 'client/js/plugins/select2.min.js' %}"></script>
<script src="{% static 'client/js/plugins/select2_locale_ru.js' %}"></script>
{% endblock %}
{% block scripts %}
<!-- mask select scripts-->
<script src="{% static 'client/js/plugins/inputmask/jquery.inputmask.js' %}"></script>
<script src="{% static 'client/js/plugins/inputmask/jquery.bind-first-0.2.3.min.js' %}"></script>
<script src="{% static 'client/js/plugins/inputmask/jquery.inputmask-multi.js' %}"></script>
<!-- page module-->
<script src="{% static 'client/js/pages/profile.js' %}"></script>
<script>
//js module initialization
EXPO.profile.init({
// class selector to identify required forms on page
updateFormClass:'update-profile-form',
// text and paths for dynamically rendered selectboxes
selectBox:[
{id:'id_country'},
{id:'id_theme',
placeHolder:'Выберите тематику компании'
},
{id:'id_city',
placeholder:'Search city',
path:'/city/get-city/'
},
{id:'id_company',
placeholder:'Search company',
path:'/company/get-company/'
}
],
// we need this id to enable mapping library
phoneBox: 'id_phone',
// some helper text in current language
lang:{
workIn:'в'// there must be 'at' in English
}
});
</script>
{% endblock %}
{% extends 'base_catalog.html' %}
{% load static %}
{% load i18n %}
{% load template_filters %}
{% load thumbnail %}
{% block style %}
<link rel="stylesheet" href="{% static 'client/css/select2.css' %}">
{% if not company_form %}
<style>
.add_company a:before { content:'';background: none; display: inline-block !important;}
.add_company a:hover:before {background: none !important;}
</style>
{% endif %}
{% endblock %}
{% block bread_scrumbs %}
<div class="bread-crumbs">
<a href="/">{% trans 'Главная страница' %}</a>
<strong>{% trans 'Личный кабинет' %}</strong>
</div>
{% endblock %}
{% block page_title %}
{% endblock %}
{% block content_list %}
<div class="m-article">
<div class="item-wrap clearfix">
<aside>
<div class="i-pict p-editable">
<form class="clearfix update-profile-form" enctype="multipart/form-data" id="avatar_form" action="/profile/update/avatar/" method="post">{% csrf_token %}
{% if request.user.profile.avatar %}
<a class="pic_block" style="padding-top: 0;" title="" id="pick-block">
{% thumbnail request.user.profile.avatar "100x100" crop="center" as im %}
<img clas="user-avatar" src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
{% else %}
<a class="add_pic_block" title="" id="pick-block">
<p class="add-wrapper">
<span></span>
<i>Добавить фото</i>
<b>+20</b>
</p>
{% endif %}
{{ avatar_form.avatar }}
</a>
<a href="javascript:void(0);" id="pic-edit-photo" class="pic-edit-photo" {% if not request.user.profile.avatar %}style="display:none;"{% endif %}>Изменить фото</a>
</form>
</div>
<div class="i-rating" title="Рейтинг: 551">551</div>
<div class="reason_block">
<p>Заполните свой<br>профиль, чтобы<br>повысить рейтинг</p>
<p>Чем выше<br>рейтинг —<br>тем больше<br>преимуществ!</p>
</div>
</aside>
<div class="i-info">
<header>
<div class="{% if home_form.instance.country and home_form.instance.city %}i-place p-editable{% else %}i-place p-editable add_link_text add_link_text_medium{% endif %}">
{% if home_form.instance.country and home_form.instance.city %}
<span>
{% else %}
<span style="display:none;">
{% endif %}
<a href="#" id="static-home-country">{{ home_form.instance.country }}</a>
</span>
{% if home_form.instance.country and home_form.instance.city %}
<span>
{% else %}
<span style="display:none;">
{% endif %}
, <a href="#" id="static-home-city">{{ home_form.instance.city }}</a>
</span>
<div class="edit-wrap e-left">
{% if home_form.instance.country and home_form.instance.city %}
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
{% else %}
<a class="e-btn" href="#" title="">Указать</a>
<div class="add_link_text_text">свой город <b>+5</b></div>
{% endif %}
<div class="e-form">
<form class="clearfix update-profile-form" id="home_form" action="/profile/update/home/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>Страна</label>
<div class="epf-field">
{{ home_form.country }}
</div>
</div>
<div class="epfl">
<label>{% trans 'Город' %}</label>
<div class="epf-field">
{{ home_form.city }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">Сохранить</button>
</div>
</form>
<a class="ef-close" href="#">закрыть</a>
</div>
</div>
</div>
<div class="site_link" {% if home_form.instance.country and home_form.instance.city %}style="right:-70px;"{% endif %}>
<a href="{{ request.user.get_permanent_url }}" title="">
{{ request.user.get_permanent_url }}
</a>
</div>
<div class="i-title p-editable p-editable">
<span id="static-name-value">
{{ name_form.get_full_name }}
</span>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="name_form" action="/profile/update/name/"
method="post" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ name_form.first_name.label }}</label>
<div class="epf-field">
{{ name_form.first_name }}
</div>
</div>
<div class="epfl">
<label>{{ name_form.last_name.label }}</label>
<div class="epf-field">
{{ name_form.last_name }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</header>
{# position #}
<div class="{% if work_form.position.value and work_form.company.value %}p-editable{% else %}i-descr p-editable add_link_text add_link_text_top{% endif %}">
{% if work_form.position.value and work_form.company.value %}
<p id="static-work-value">
{{ work_form.position.value }}
{% if work_form.company.value %}
{% trans 'в' %} {{ request.user.company.name }}
{% endif %}
</p>
{% endif %}
<div class="edit-wrap">
{% if work_form.position.value and work_form.company.value %}
<a class="e-btn" href="/profile/company/">{% trans 'редактировать' %}</a>
{% else %}
<a class="e-btn" href="#" title="">Указать</a>
<div class="add_link_text_text">свою должность и место работы <b>+10</b></div>
{% endif %}
<div class="e-form">
<form class="clearfix update-profile-form" id="work_form" action="/profile/update/work/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ work_form.position.label }}</label>
<div class="epf-field">
{{ work_form.position }}
</div>
</div>
<div class="epfl">
<label>{{ work_form.company.label }}</label>
<div class="epf-field">
{{ work_form.company }}
</div>
</div>
<!-- сделать проверку на создателя компании -->
<div class="add_company"><a id="add-comp-btn" class="pw-open" href="{% if not company_form %}/profile/company/{% else %}#pw-company{% endif %}" title="">{% if not company_form %}Изменить{% else %}Добавить{% endif %} компанию</a></div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
<div class="clear"></div>
</div>
<hr />
<div class="i-contacts clearfix">
<div class="ic-buttons ic-buttons_pos dd_width_4">
<a class="button icon-edit icb-edit-profile" href="#">редактировать профиль</a>
<a class="button orange icon-edit icb-exit-edit" href="#">завершить редактирование</a>
<div class="ic-buttons_text">Добавить профили в соц.сетях:</div>
<div class="p-editable add_link_text add_link_text_medium soc-media-indent">
<div class="edit-wrap">
<a class="e-btn" href="#" title="">Добавить</a>
<ul class="soc-media-buttons soc-media-buttons1">
<li>
{% if social_form.facebook.value %}
<a href="{{ social_form.facebook.value }}" target="_blank">
<img id="img-facebook" src="{% static 'client/img/soc-medias/sm-icon-fb.png' %}" title="Facebook" alt="Facebook" />
</a>
{% else %}
<img id="img-facebook" src="{% static 'client/img/soc-medias/sm-icon-fb_hover.png' %}" title="Facebook" alt="Facebook" />
{% endif %}
</li>
<li>
{% if social_form.linkedin.value %}
<a href="{{ social_form.linkedin.value }}" target="_blank">
<img id="img-linkedin" src="{% static 'client/img/soc-medias/sm-icon-lin.png' %}" title="LinkedIn" alt="LinkedIn" />
</a>
{% else %}
<img id="img-linkedin" src="{% static 'client/img/soc-medias/sm-icon-lin_hover.png' %}" title="LinkedIn" alt="LinkedIn" />
{% endif %}
<li>
{% if social_form.vk.value %}
<a href="{{ social_form.vk.value }}" target="_blank">
<img id="img-vk" src="{% static 'client/img/soc-medias/sm-icon-vk.png' %}" title="В контакте" alt="В контакте" />
</a>
{% else %}
<img id="img-vk" src="{% static 'client/img/soc-medias/sm-icon-vk_hover.png' %}" title="В контакте" alt="В контакте" />
{% endif %}
</li>
<li>
{% if social_form.twitter.value %}
<a href="{{ social_form.twitter.value }}" target="_blank">
<img id="img-twitter" src="{% static 'client/img/soc-medias/sm-icon-twit.png' %}" title="Twitter" alt="Twitter" />
</a>
{% else %}
<img id="img-twitter" src="{% static 'client/img/soc-medias/sm-icon-twit_hover.png' %}" title="Twitter" alt="Twitter" />
{% endif %}
</li></li>
</ul>
<div class="add_link_text_text"><b>+5 за каждый</b></div>
<div class="e-form">
<form class="clearfix update-profile-form" id="social_form" action="/profile/update/social/">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-fb-w.png' %}" title="Facebook" alt="Facebook" /> {{ social_form.facebook.label }}</label>
<div class="epf-field">
{{ social_form.facebook }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-lin-w.png' %}" title="LinkedIn" alt="LinkedIn" /> {{ social_form.linkedin.label }}</label>
<div class="epf-field">
{{ social_form.linkedin }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-vk-w.png' %}" title="В контакте" alt="В контакте" /> {{ social_form.vk.label }}</label>
<div class="epf-field">
{{ social_form.vk }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-twit-w.png' %}" title="Twitter" alt="Twitter" /> {{ social_form.twitter.label }}</label>
<div class="epf-field">
{{ social_form.twitter }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</div>
<div class="ic-links ic-links_indent dd_width_5">
<div class="{% if phone_form.phone.value %}ic-tel p-editable{% else %}p-editable add_link_text add_link_text_medium{% endif %}">
{% if phone_form.phone.value %}
<span id="static-phone-value">{{ phone_form.phone.value|phone }}</span>
{% endif %}
<div class="edit-wrap">
{% if phone_form.phone.value %}
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
{% else %}
<a class="e-btn" href="#" title="">Добавить</a>
<div class="add_link_text_text">номер телефона <b>+15</b></div>
{% endif %}
<div class="e-form">
<form class="clearfix update-profile-form" id="phone_form" action="/profile/update/phone/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ phone_form.phone.label }}</label>
<div class="epf-field">
{{ phone_form.phone }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
<div class="ic-mail add_indent">
<a class="icon-mail" href="mailto:{{ request.user.email }}">{{ request.user.email }}</a>
</div>
<div class="{% if web_page_form.web_page.value %}ic-site p-editable{% else %}ic-site p-editable add_link_text add_link_text_medium{% endif %}">
{% if web_page_form.web_page.value %}
<a class="icon-ext-link" id="static-web-page-value" href="{% if web_page_form.web_page.value %}{{ web_page_form.web_page.value }}{% else %}#{% endif %}" target="_blank">
{% if web_page_form.web_page.value %}
{{ web_page_form.web_page.value }}
{% endif %}
</a>
{% endif %}
<div class="edit-wrap">
{% if web_page_form.web_page.value %}
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
{% else %}
<a class="e-btn" href="#" title="">Добавить</a>
<div class="add_link_text_text">сайт <b>+5</b></div>
{% endif %}
<div class="e-form">
<form class="clearfix update-profile-form" id="web_page_form" action="/profile/update/web-page/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ web_page_form.web_page.label }}</label>
<div class="epf-field">
{{ web_page_form.web_page }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</div>
</div>
<hr />
<div class="{% if about_form.about.value %}i-additional{% else %}i-additional i-additional1{% endif %}">
{% if about_form.about.value %}
<div class="ia-title">{% trans 'О себе:' %}</div>
{% endif %}
<div class="{% if about_form.about.value %}p-editable{% else %}p-editable add_link_text{% endif %}">
{% if about_form.about.value %}
<p id="static-about-value">{{ about_form.about.value }}</p>
{% endif %}
<div class="edit-wrap">
{% if about_form.about.value %}
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
{% else %}
<a class="e-btn" href="#" title="">Добавить</a>
<div class="add_link_text_text">информацию о себе <b>+10</b></div>
{% endif %}
<div class="e-form">
<form class="clearfix update-profile-form" id="about_form" action="/profile/update/about/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ about_form.about.label }}</label>
<div class="epf-field">
{{ about_form.about }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">Сохранить</button>
</div>
</form>
<a class="ef-close" href="#">закрыть</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block popup %}
{% if company_form %}
{% include 'popups/create_company.html' with form=company_form %}
{% endif %}
{% endblock %}
{% block pre_scripts %}
<script src="{% static 'client/js/plugins/select2.min.js' %}"></script>
<script src="{% static 'client/js/plugins/select2_locale_ru.js' %}"></script>
{% endblock %}
{% block scripts %}
<!-- mask select scripts-->
<script src="{% static 'client/js/plugins/inputmask/jquery.inputmask.js' %}"></script>
<script src="{% static 'client/js/plugins/inputmask/jquery.bind-first-0.2.3.min.js' %}"></script>
<script src="{% static 'client/js/plugins/inputmask/jquery.inputmask-multi.js' %}"></script>
<!-- page module-->
<script src="{% static 'client/js/pages/profile.js' %}"></script>
<script>
//js module initialization
EXPO.profile.init({
// class selector to identify required forms on page
updateFormClass:'update-profile-form',
// text and paths for dynamically rendered selectboxes
selectBox:[
{id:'id_country'},
{id:'id_theme',
placeHolder:'Выберите тематику компании'
},
{id:'id_city',
placeholder:'Search city',
path:'/city/get-city/'
},
{id:'id_company',
placeholder:'Search company',
path:'/company/get-company/'
}
],
// we need this id to enable mapping library
phoneBox: 'id_phone',
// some helper text in current language
lang:{
workIn:'в'// there must be 'at' in English
}
});
</script>
{% endblock %}

@ -1,464 +1,464 @@
{% extends 'base_catalog.html' %}
{% load static %}
{% load i18n %}
{% load template_filters %}
{% block bread_scrumbs %}
<div class="bread-crumbs">
<a href="/">{% trans 'Главная страница' %}</a>
<strong>{% trans 'Личный кабинет' %}</strong>
</div>
{% endblock %}
{% block page_title %}
<div class="page-title">
<h1>{% trans 'Личный кабинет' %}</h1>
</div>
{% endblock %}
{% block content_list %}
<div class="m-article">
<div class="item-wrap clearfix">
{# avatar #}
<aside>
<div class="i-pict p-editable">
{% if request.user.profile.avatar %}
<img src="{{ request.user.profile.avatar.url }}" alt="" />
{% endif %}
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" enctype="multipart/form-data" id="avatar_form"action="/profile/update/avatar/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ avatar_form.avatar.label }}</label>
<div class="epf-field">
<div class="input-file clearfix">
<div class="button icon-clip">{% trans 'выберите файл' %}</div>
<div class="file-text placehlder">{% trans 'Файл не выбран' %}</div>
<div class="if-field-wrap"><input id="id_avatar" type="file" name="avatar" /></div>
</div>
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</aside>
{# END avatar #}
<div class="i-info">
<header>
{# country and city #}
<div class="i-place p-editable">
{% if home_form.instance.country %}
<span>
{% else %}
<span style="display:none;">
{% endif %}
<a href="#">{{ home_form.instance.country }}</a>
</span>
{% if home_form.instance.city %}
<span>
{% else %}
<span style="display:none;">
{% endif %}
, <a href="#">{{ home_form.instance.city }}</a>
</span>
<div class="edit-wrap e-left">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="home_form" action="/profile/update/home/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ home_form.country.label }}</label>
<div class="epf-field">
{{ home_form.country }}
</div>
</div>
<div class="epfl">
<label>{% trans 'Город' %}</label>
<div class="epf-field">
<select name="city">
</select>
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END country and city #}
{# name #}
<div class="i-title p-editable">
<span>{{ name_form.get_full_name }}</span>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="name_form" action="/profile/update/name/"
method="post" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ name_form.first_name.label }}</label>
<div class="epf-field">
{{ name_form.first_name }}
</div>
</div>
<div class="epfl">
<label>{{ name_form.last_name.label }}</label>
<div class="epf-field">
{{ name_form.last_name }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END name #}
</header>
{# position #}
<div class="i-position p-editable">
<p>
{{ work_form.position.value }}
{% if work_form.work.value %}
{% trans 'в' %} {{ work_form.work.value }}
{% endif %}
</p>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="work_form" action="/profile/update/work/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ work_form.position.label }}</label>
<div class="epf-field">
{{ work_form.position }}
</div>
</div>
<div class="epfl">
<label>{{ work_form.work.label }}</label>
<div class="epf-field">
{{ work_form.work }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END position #}
{# description #}
<div class="i-descr p-editable">
<p>{{ about_company_form.about_company.value }}</p>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="about_company_form" action="/profile/update/about-company/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ about_company_form.about_company.label }}</label>
<div class="epf-field">
{{ about_company_form.about_company }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END description #}
<hr />
<div class="i-contacts clearfix">
<div class="ic-buttons">
<a class="button icon-edit icb-edit-profile" href="#">{% trans 'редактировать профиль' %}</a>
<a class="button orange icon-edit icb-exit-edit" href="#">{% trans 'завершить редактирование' %}</a>
<div class="p-editable">
<ul class="soc-media-buttons">
<li><a href="{% if social_form.facebook.value %} {{ social_form.facebook.value }} {%else %}#{% endif %}">
<img src="{% static 'client/img/soc-medias/sm-icon-fb.png' %}" title="Facebook" alt="Facebook" />
</a>
</li>
<li><a href="{% if social_form.linkedin.value %} {{ social_form.linkedin.value }} {%else %}#{% endif %}">
<img src="{% static 'client/img/soc-medias/sm-icon-lin.png' %}" title="LinkedIn" alt="LinkedIn" />
</a>
</li>
<li><a href="{% if social_form.vk.value %} {{ social_form.vk.value }} {%else %}#{% endif %}">
<img src="{% static 'client/img/soc-medias/sm-icon-vk.png' %}" title="В контакте" alt="В контакте" />
</a>
</li>
<li><a href="{% if social_form.twitter.value %} {{ social_form.twitter.value }} {%else %}#{% endif %}">
<img src="{% static 'client/img/soc-medias/sm-icon-twit.png' %}" title="Twitter" alt="Twitter" />
</a>
</li>
</ul>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="social_form" action="/profile/update/social/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-fb-w.png' %}" title="Facebook" alt="Facebook" /> {{ social_form.facebook.label }}</label>
<div class="epf-field">
{{ social_form.facebook }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-lin-w.png' %}" title="LinkedIn" alt="LinkedIn" /> {{ social_form.linkedin.label }}</label>
<div class="epf-field">
{{ social_form.linkedin }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-vk-w.png' %}" title="В контакте" alt="В контакте" /> {{ social_form.vk.label }}</label>
<div class="epf-field">
{{ social_form.vk }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-twit-w.png' %}" title="Twitter" alt="Twitter" /> {{ social_form.twitter.label }}</label>
<div class="epf-field">
{{ social_form.twitter }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</div>
{# contacts #}
<div class="ic-links">
<div class="ic-tel p-editable">
{% if phone_form.phone.value %}
<span>{{ phone_form.phone.value|phone }}</span>
{% endif %}
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="phone_form" action="/profile/update/phone/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ phone_form.phone.label }}</label>
<div class="epf-field">
{{ phone_form.phone }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
<!--
<div class="ic-mail p-editable">
{% if email_form.email.value %}
<a class="icon-mail" href="mailto:{{ email_form.email.value }}">{{ email_form.email.value }}</a>
{% endif %}
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix" action="/profile/update/email/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ email_form.email.label }}</label>
<div class="epf-field">
{{ email_form.email }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
-->
<div class="ic-site p-editable">
{% if web_page_form.web_page.value %}
<a class="icon-ext-link" href="{% if web_page_form.web_page.value %}{{ web_page_form.web_page.value }}{% else %}#{% endif %}" target="_blank">
{% if web_page_form.web_page.value %}
{{ web_page_form.web_page.value }}
{% endif %}
</a>
{% endif %}
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="web_page_form" action="/profile/update/web-page/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ web_page_form.web_page.label }}</label>
<div class="epf-field">
{{ web_page_form.web_page }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END contacts #}
</div>
</div>
<hr/>
{# about #}
<div class="i-additional">
<div class="ia-title">{% trans 'О себе:' %}</div>
<div class="p-editable">
<p>{{ about_form.about.value }}</p>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="about_form" action="/profile/update/about/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ about_form.about.label }}</label>
<div class="epf-field">
{{ about_form.about }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</div>
{# END about #}
</div>
</div>
</div>
{% endblock %}
{% block scripts %}
<script src="{% static 'client/js/profile.js' %}"></script>
<script>
//js module initialization
EXPO.profile.init({
// class seletor to identify required forms on page
updateFormClass:'update-profile-form',
// text and paths for dynamically rendered selectboxes
selectBox:[
{id:'id_country'},
{id:'id_theme',
placeHolder:'Выберите тематику компании'
},
{id:'id_city',
placeholder:'Search city',
path:'/city/get-city/'
},
{id:'id_company',
placeholder:'Search company',
path:'/company/get-company/'
}
]
});
</script>
{% extends 'base_catalog.html' %}
{% load static %}
{% load i18n %}
{% load template_filters %}
{% block bread_scrumbs %}
<div class="bread-crumbs">
<a href="/">{% trans 'Главная страница' %}</a>
<strong>{% trans 'Личный кабинет' %}</strong>
</div>
{% endblock %}
{% block page_title %}
<div class="page-title">
<h1>{% trans 'Личный кабинет' %}</h1>
</div>
{% endblock %}
{% block content_list %}
<div class="m-article">
<div class="item-wrap clearfix">
{# avatar #}
<aside>
<div class="i-pict p-editable">
{% if request.user.profile.avatar %}
<img src="{{ request.user.profile.avatar.url }}" alt="" />
{% endif %}
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" enctype="multipart/form-data" id="avatar_form"action="/profile/update/avatar/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ avatar_form.avatar.label }}</label>
<div class="epf-field">
<div class="input-file clearfix">
<div class="button icon-clip">{% trans 'выберите файл' %}</div>
<div class="file-text placehlder">{% trans 'Файл не выбран' %}</div>
<div class="if-field-wrap"><input id="id_avatar" type="file" name="avatar" /></div>
</div>
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</aside>
{# END avatar #}
<div class="i-info">
<header>
{# country and city #}
<div class="i-place p-editable">
{% if home_form.instance.country %}
<span>
{% else %}
<span style="display:none;">
{% endif %}
<a href="#">{{ home_form.instance.country }}</a>
</span>
{% if home_form.instance.city %}
<span>
{% else %}
<span style="display:none;">
{% endif %}
, <a href="#">{{ home_form.instance.city }}</a>
</span>
<div class="edit-wrap e-left">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="home_form" action="/profile/update/home/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ home_form.country.label }}</label>
<div class="epf-field">
{{ home_form.country }}
</div>
</div>
<div class="epfl">
<label>{% trans 'Город' %}</label>
<div class="epf-field">
<select name="city">
</select>
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END country and city #}
{# name #}
<div class="i-title p-editable">
<span>{{ name_form.get_full_name }}</span>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="name_form" action="/profile/update/name/"
method="post" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ name_form.first_name.label }}</label>
<div class="epf-field">
{{ name_form.first_name }}
</div>
</div>
<div class="epfl">
<label>{{ name_form.last_name.label }}</label>
<div class="epf-field">
{{ name_form.last_name }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END name #}
</header>
{# position #}
<div class="i-position p-editable">
<p>
{{ work_form.position.value }}
{% if work_form.work.value %}
{% trans 'в' %} {{ work_form.work.value }}
{% endif %}
</p>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="work_form" action="/profile/update/work/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ work_form.position.label }}</label>
<div class="epf-field">
{{ work_form.position }}
</div>
</div>
<div class="epfl">
<label>{{ work_form.work.label }}</label>
<div class="epf-field">
{{ work_form.work }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END position #}
{# description #}
<div class="i-descr p-editable">
<p>{{ about_company_form.about_company.value }}</p>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="about_company_form" action="/profile/update/about-company/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ about_company_form.about_company.label }}</label>
<div class="epf-field">
{{ about_company_form.about_company }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END description #}
<hr />
<div class="i-contacts clearfix">
<div class="ic-buttons">
<a class="button icon-edit icb-edit-profile" href="#">{% trans 'редактировать профиль' %}</a>
<a class="button orange icon-edit icb-exit-edit" href="#">{% trans 'завершить редактирование' %}</a>
<div class="p-editable">
<ul class="soc-media-buttons">
<li><a href="{% if social_form.facebook.value %} {{ social_form.facebook.value }} {%else %}#{% endif %}">
<img src="{% static 'client/img/soc-medias/sm-icon-fb.png' %}" title="Facebook" alt="Facebook" />
</a>
</li>
<li><a href="{% if social_form.linkedin.value %} {{ social_form.linkedin.value }} {%else %}#{% endif %}">
<img src="{% static 'client/img/soc-medias/sm-icon-lin.png' %}" title="LinkedIn" alt="LinkedIn" />
</a>
</li>
<li><a href="{% if social_form.vk.value %} {{ social_form.vk.value }} {%else %}#{% endif %}">
<img src="{% static 'client/img/soc-medias/sm-icon-vk.png' %}" title="В контакте" alt="В контакте" />
</a>
</li>
<li><a href="{% if social_form.twitter.value %} {{ social_form.twitter.value }} {%else %}#{% endif %}">
<img src="{% static 'client/img/soc-medias/sm-icon-twit.png' %}" title="Twitter" alt="Twitter" />
</a>
</li>
</ul>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="social_form" action="/profile/update/social/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-fb-w.png' %}" title="Facebook" alt="Facebook" /> {{ social_form.facebook.label }}</label>
<div class="epf-field">
{{ social_form.facebook }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-lin-w.png' %}" title="LinkedIn" alt="LinkedIn" /> {{ social_form.linkedin.label }}</label>
<div class="epf-field">
{{ social_form.linkedin }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-vk-w.png' %}" title="В контакте" alt="В контакте" /> {{ social_form.vk.label }}</label>
<div class="epf-field">
{{ social_form.vk }}
</div>
</div>
<div class="epfl">
<label><img src="{% static 'client/img/soc-medias/sm-icon-twit-w.png' %}" title="Twitter" alt="Twitter" /> {{ social_form.twitter.label }}</label>
<div class="epf-field">
{{ social_form.twitter }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</div>
{# contacts #}
<div class="ic-links">
<div class="ic-tel p-editable">
{% if phone_form.phone.value %}
<span>{{ phone_form.phone.value|phone }}</span>
{% endif %}
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="phone_form" action="/profile/update/phone/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ phone_form.phone.label }}</label>
<div class="epf-field">
{{ phone_form.phone }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
<!--
<div class="ic-mail p-editable">
{% if email_form.email.value %}
<a class="icon-mail" href="mailto:{{ email_form.email.value }}">{{ email_form.email.value }}</a>
{% endif %}
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix" action="/profile/update/email/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ email_form.email.label }}</label>
<div class="epf-field">
{{ email_form.email }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
-->
<div class="ic-site p-editable">
{% if web_page_form.web_page.value %}
<a class="icon-ext-link" href="{% if web_page_form.web_page.value %}{{ web_page_form.web_page.value }}{% else %}#{% endif %}" target="_blank">
{% if web_page_form.web_page.value %}
{{ web_page_form.web_page.value }}
{% endif %}
</a>
{% endif %}
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="web_page_form" action="/profile/update/web-page/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ web_page_form.web_page.label }}</label>
<div class="epf-field">
{{ web_page_form.web_page }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
{# END contacts #}
</div>
</div>
<hr/>
{# about #}
<div class="i-additional">
<div class="ia-title">{% trans 'О себе:' %}</div>
<div class="p-editable">
<p>{{ about_form.about.value }}</p>
<div class="edit-wrap">
<a class="e-btn" href="#">{% trans 'редактировать' %}</a>
<div class="e-form">
<form class="clearfix update-profile-form" id="about_form" action="/profile/update/about/" method="post">{% csrf_token %}
<div class="ef-body">
<div class="epfl">
<label>{{ about_form.about.label }}</label>
<div class="epf-field">
{{ about_form.about }}
</div>
</div>
</div>
<div class="ef-buttons">
<button type="submit" class="lnk icon-save">{% trans 'Сохранить' %}</button>
</div>
</form>
<a class="ef-close" href="#">{% trans 'закрыть' %}</a>
</div>
</div>
</div>
</div>
{# END about #}
</div>
</div>
</div>
{% endblock %}
{% block scripts %}
<script src="{% static 'client/js/profile.js' %}"></script>
<script>
//js module initialization
EXPO.profile.init({
// class seletor to identify required forms on page
updateFormClass:'update-profile-form',
// text and paths for dynamically rendered selectboxes
selectBox:[
{id:'id_country'},
{id:'id_theme',
placeHolder:'Выберите тематику компании'
},
{id:'id_city',
placeholder:'Search city',
path:'/city/get-city/'
},
{id:'id_company',
placeholder:'Search company',
path:'/company/get-company/'
}
]
});
</script>
{% endblock %}

@ -167,6 +167,7 @@ This template include basic anf main styles and js files,
<script src="{% static 'client/js/pages/complete_registration.js' %}"></script>
{% endif %}
{% endif %}
<div id="wait-ajax" class="wait-ajax" style="display:none;"><img src="{% static 'client/img/ajax-loader.gif' %}" alt=""/></div>
</body>

@ -1,56 +1,56 @@
{% load static %}
{% load i18n %}
<div class="in-search-form">
<form action="{{ search_form.search_url }}" class="search_form">
<div class="s-title">{% if type %}{{ type }}{% else %}{% trans 'поиск событий' %}{% endif %}</div>
<div class="search-form-wrap">
<div class="search-line">
<div class="sf-field-wrap">
<div class="sf-field">
<label for="search">{% trans 'Я ищу:' %}</label>
<div class="input-text">{{ search_form.q }}</div>
</div>
</div>
<div class="sf-field-wrap">
<div class="sf-field">
<label for="where">{% trans 'Где:' %}</label>
<div class="input-text">{{ search_form.w }}</div>
</div>
</div>
<div class="sf-field-wrap">
<button class="search_submit" type="submit"><span>{% trans 'найти' %}</span></button>
</div>
</div>
<div class="search-line sl-options">
{% ifnotequal type 'places search' %}
<div class="sf-field-wrap">{% trans 'Тематика: ' %}
<a class="pw-open" href="#pw-subj">{{ search_form.get_themes_display }}</a>
</div>
{% endifnotequal %}
<div class="sf-field-wrap">{% trans 'Место: ' %}
<a class="pw-open" href="#pw-place">
{{ search_form.get_places_display }}
</a></div>
{% ifnotequal type 'places search' %}
<div class="sf-field-wrap">{% trans 'Период: ' %}
<a class="pw-open" href="#pw-period">
{% if search_form.fr.value or search_form.to.value %}
{% if search_form.fr.value %}
c {{ search_form.fr.value }}
{% endif %}
{% if search_form.to.value %}
по {{ search_form.to.value }}
{% endif %}
{% else %}
Не важно
{% endif %}
</a>
</div>
{% endifnotequal %}
</div>
</div>
</form>
</div>
{% load static %}
{% load i18n %}
<div class="in-search-form">
<form action="{{ search_form.search_url }}" class="search_form">
<div class="s-title">{% if type %}{{ type }}{% else %}{% trans 'поиск событий' %}{% endif %}</div>
<div class="search-form-wrap">
<div class="search-line">
<div class="sf-field-wrap">
<div class="sf-field">
<label for="search">{% trans 'Я ищу:' %}</label>
<div class="input-text">{{ search_form.q }}</div>
</div>
</div>
<div class="sf-field-wrap">
<div class="sf-field">
<label for="where">{% trans 'Где:' %}</label>
<div class="input-text">{{ search_form.w }}</div>
</div>
</div>
<div class="sf-field-wrap">
<button class="search_submit" type="submit"><span>{% trans 'найти' %}</span></button>
</div>
</div>
<div class="search-line sl-options">
{% ifnotequal type 'places search' %}
<div class="sf-field-wrap">{% trans 'Тематика: ' %}
<a class="pw-open" href="#pw-subj">{{ search_form.get_themes_display }}</a>
</div>
{% endifnotequal %}
<div class="sf-field-wrap">{% trans 'Место: ' %}
<a class="pw-open" href="#pw-place">
{{ search_form.get_places_display }}
</a></div>
{% ifnotequal type 'places search' %}
<div class="sf-field-wrap">{% trans 'Период: ' %}
<a class="pw-open" href="#pw-period">
{% if search_form.fr.value or search_form.to.value %}
{% if search_form.fr.value %}
c {{ search_form.fr.value }}
{% endif %}
{% if search_form.to.value %}
по {{ search_form.to.value }}
{% endif %}
{% else %}
Не важно
{% endif %}
</a>
</div>
{% endifnotequal %}
</div>
</div>
</form>
</div>

@ -1,59 +1,59 @@
{% load static %}
{% load i18n %}
{% load template_filters %}
<ul class="cat-list cl-places">
{% for object in object_list %}
<li class="cl-item">
<div class="cl-item-wrap clearfix">
<a href="/{{ filter|generate_url }}/place-{{ object.url }}">
<div class="cli-pict">
{% with obj=object %}
{% include 'client/includes/show_logo.html' %}
{% endwith %}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
<div class="cli-approved">
{% if object.approved %}
<img src="{% static 'clint/img/approved-logo.png' %}" alt="" title="Approved Event" />
{% endif %}
</div>
<header>
<div class="cli-title"><a href="/{{ filter|generate_url }}/place-{{ object.url }}">{{ object.name|safe }}</a></div>
<!--<div class="cli-rate">551</div>-->
</header>
<div class="cli-descr">{{ object.get_type }}</div>
</div>
<div class="cli-bot clearfix">
{% if object.total_area %}
<div class="cli-dim">{{ object.total_area }} м2</div>
{% endif %}
<div class="cli-place"><a href="{{ object.country.get_permanent_url }}">{{ object.country }}</a>, <a href="{{ object.city.get_permanent_url }}">{{ object.city }}</a>, <a href="{{ object.get_permanent_url }}">{{ object.adress }}</a></div>
</div>
</div>
<div class="cli-buttons clearfix">
<div class="cli-m-buttons">
<a class="button icon-info" href="/{{ filter|generate_url }}/place-{{ object.url }}">{% trans 'описание' %}</a>
{% if object.get_events_number %}
<a class="button green icon-list" href="#">{% trans 'события' %} ({{ object.get_events_number }})</a>
{% endif %}
{% if object.photogallery %}
<a class="button blue icon-photo" href="/{{ filter|generate_url }}/place-{{ object.url }}/photo">{% trans 'фото' %}</a>
{% endif %}
</div>
<!--
<div class="cli-s-buttons">
<a class="button blue2 lc" href="#">{% trans 'Найти отели поблизости' %}</a>
</div>
-->
</div>
</div>
</li>
{% endfor %}
{% load static %}
{% load i18n %}
{% load template_filters %}
<ul class="cat-list cl-places">
{% for object in object_list %}
<li class="cl-item">
<div class="cl-item-wrap clearfix">
<a href="/{{ filter|generate_url }}/place-{{ object.url }}">
<div class="cli-pict">
{% with obj=object %}
{% include 'client/includes/show_logo.html' %}
{% endwith %}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
<div class="cli-approved">
{% if object.approved %}
<img src="{% static 'clint/img/approved-logo.png' %}" alt="" title="Approved Event" />
{% endif %}
</div>
<header>
<div class="cli-title"><a href="/{{ filter|generate_url }}/place-{{ object.url }}">{{ object.name|safe }}</a></div>
<!--<div class="cli-rate">551</div>-->
</header>
<div class="cli-descr">{{ object.get_type }}</div>
</div>
<div class="cli-bot clearfix">
{% if object.total_area %}
<div class="cli-dim">{{ object.total_area }} м2</div>
{% endif %}
<div class="cli-place"><a href="{{ object.country.get_permanent_url }}">{{ object.country }}</a>, <a href="{{ object.city.get_permanent_url }}">{{ object.city }}</a>, <a href="{{ object.get_permanent_url }}">{{ object.adress }}</a></div>
</div>
</div>
<div class="cli-buttons clearfix">
<div class="cli-m-buttons">
<a class="button icon-info" href="/{{ filter|generate_url }}/place-{{ object.url }}">{% trans 'описание' %}</a>
{% if object.get_events_number %}
<a class="button green icon-list" href="#">{% trans 'события' %} ({{ object.get_events_number }})</a>
{% endif %}
{% if object.photogallery %}
<a class="button blue icon-photo" href="/{{ filter|generate_url }}/place-{{ object.url }}/photo">{% trans 'фото' %}</a>
{% endif %}
</div>
<!--
<div class="cli-s-buttons">
<a class="button blue2 lc" href="#">{% trans 'Найти отели поблизости' %}</a>
</div>
-->
</div>
</div>
</li>
{% endfor %}
</ul>

@ -1,327 +1,327 @@
{% load static %}
{% load i18n %}
{% load template_filters %}
{% block page_body %}
<div class="m-article">
<div class="item-wrap place clearfix">
<aside>
<div class="i-pict"><img src="{% if place.get_logo %}{{ place.get_logo.file_path.url }}
{% else %}{% static 'client/img/no-logo.png' %} {% endif %}" alt="" /></div>
<!--<div class="i-rating">551</div>-->
</aside>
<div class="i-info">
<header>
<div class="i-title">
{{ place.name|safe }}
</div>
<div class="i-descr">
{{ place.description|safe|linebreaks }}
</div>
{% if place.address %}
<div class="i-address map-opened">
<header>
<div class="address">
{{ place.adress }}
</div>
<div class="show-map"><a class="toggle-map" href="#">Раскрыть карту</a></div>
</header>
<div class="i-map">
<div class="close-map"><a class="toggle-map" href="#">Скрыть карту</a></div>
<!-- позиция для карты задается в атрибуте data-coords -->
<div class="map-canvas" id="map-canvas" data-coords="{{ place.address.lat|stringformat:'f' }},{{ place.address.lng|stringformat:'f' }}" ></div>
</div>
</div>
{% else %}
<hr/>
{% endif %}
</header>
</div>
</div>
<div class="i-services">
<div class="sect-title">Услуги</div>
<div class="is-wrap clearfix">
<ul>
{% if place.bank %}
<li>{% trans 'Банк / банкоматы / обмен валюты' %}</li>
{% endif %}
{% if place.wifi %}
<li>Wi-Fi</li>
{% endif %}
{% if place.children_room %}
<li>{% trans 'Детская комната' %}</li>
{% endif %}
{% if place.disabled_service %}
<li>{% trans 'Сервис для инвалидов' %}</li>
{% endif %}
</ul>
<ul>
{% if place.conference_centre %}
<li>{% trans 'Конгресс-центр' %}</li>
{% endif %}
{% if place.business_centre %}
<li>{% trans 'Бизнес центр' %}</li>
{% endif %}
{% if place.online_registration %}
<li>{% trans 'Онлайн-регистрация' %}</li>
{% endif %}
{% if place.cafe %}
<li>{% trans 'Кафе и рестораны' %}</li>
{% endif %}
</ul>
<ul>
{% if place.terminals %}
<li>{% trans 'Информационные терминалы' %}</li>
{% endif %}
{% if place.parking %}
<li>{% trans 'Парковка' %}</li>
{% endif %}
{% if place.press_centre %}
<li>{% trans 'Пресс-центр' %}</li>
{% endif %}
{% if place.mobile_application %}
<li>{% trans 'Мобильное приложение' %}</li>
{% endif %}
</ul>
</div>
</div>
<hr />
{% if place.photogallery %}
{% with photos=place.photogallery.photos.all|slice:"5" %}
<div class="i-photo-slides">
<div class="sect-title">{% trans 'Фотогалерея' %}</div>
<div id="ps-photo-gallery" class="ps-photo-gallery swiper-container">
<ul class="swiper-wrapper">
{% for photo in photos %}
<li class="swiper-slide">
<img src="{{ photo.get_display_url }}" alt="" />
</li>
{% endfor %}
</ul>
<div class="re-controls">
<a class="prev" href="#">&lt;</a>
<a class="next" href="#">&gt;</a>
</div>
</div>
</div>
{% endwith %}
{% endif %}
<div class="e-num-info">
{% if place.total_area %}
<div class="eni-area-wrap">
<div class="eni-title">{% trans 'Общая выставочная площадь' %}</div>
<div class="eni-area">{{ place.total_area|int_format }} м²</div>
</div>
{% endif %}
<div class="eni-areas clearfix">
{% if place.closed_area %}
<div class="enis-col">
<b>{{ place.closed_area|int_format }} {% trans 'м²' %}</b>
{% trans 'закрытая выставочная площадь' %}
</div>
{% endif %}
{% if place.open_area %}
<div class="enis-col">
<b>{{ place.open_area|int_format }} {% trans 'м²' %}</b>
{% trans 'открытая выставочная площадь' %}
</div>
{% endif %}
</div>
<div class="eni-areas clearfix">
<div class="enis-col">
<ul>
{% for hall in place.halls.all %}
{% if not forloop.counter|divisibleby:"2" %}
<li>{{ hall.name }} {% if hall.number %} №{{ hall.number }} {% endif %} — {{ hall.capacity }} м<sup>2</sup></sup></li>
{% endif %}
{% endfor %}
</ul>
</div>
<div class="enis-col">
<ul>
{% for hall in place.halls.all %}
{% if forloop.counter|divisibleby:"2" %}
<li>{{ hall.name }} {% if hall.number %} №{{ hall.number }} {% endif %} — {{ hall.capacity }} м<sup>2</sup></sup></li>
{% endif %}
{% endfor %}
</ul>
</div>
</div>
<div class="eni-holds">
{{ place.total_year_action }}
</div>
<div class="eni-holds">
{% if place.foundation_year %}
<div class="eni-founded">{% trans 'Основано в' %} <b>{{ place.foundation_year }}</b> {% trans 'году' %}</div>
{% endif %}
</div>
</div>
{% if place.get_scheme %}
<hr />
<div class="e-pv-container">
<div class="sect-title">{% trans 'Схема павильонов' %}</div>
{% for scheme in place.get_scheme %}
<div class="div-img-wrap"><img src="{{ scheme.file_path.url }}" alt="" /></div>
<hr/>
{% endfor %}
</div>
{% endif %}
<div class="i-contacts clearfix">
<div class="sect-title">{% trans 'Контактная информация' %}</div>
<div class="ic-wrap">
<div class="ic-col">
<div class="ic-addr">{{ place.adress }}</div>
<div class="ic-links"><a target="_blank" href="{{ place.web_page }}">{{ place.web_page }}</a></div>
</div>
<div class="ic-col">
<ul class="tels">
{% if place.phone %}
<li>{{ place.phone|phone }} ({% trans 'телефон' %})</li>
{% endif %}
{% if place.fax %}
<li>{{ place.fax|phone }} ({% trans 'факс' %})</li>
{% endif %}
</ul>
</div>
</div>
</div>
</div>
{% if place.events %}
<div class="i-events-list">
<div class="sect-title">{% trans 'Список событий' %}</div>
<ul class="cat-list cl-exhibitions">
{% for event in place.events %}
<li class="cl-item" data-link="#">
<div class="cl-item-wrap clearfix">
<a href="#">
{% if event.expohit %}
<span class="hit"></span>
{% endif %}
<div class="cli-pict">
{% with obj=event %}
{% include 'show_logo.html' %}
{% endwith %}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
<header>
<div class="cli-title"><a href="#">{{ event.name|safe|linebreaks }}</a></div>
</header>
<div class="cli-bot clearfix">
<div class="cli-date">
{% with obj=event %}
{% include 'show_date_block.html' %}
{% endwith %}
</div>
<div class="cli-place">
<a href="#">{{ event.country }}</a>, <a href="#">{{ event.city }}</a>
</div>
</div>
</div>
</div>
<div class="cli-buttons clearfix">
<div class="cli-m-buttons">
<div class="cli-services">
<a class="button icon-sm" href="#">{% trans 'услуги' %}</a>
<div class="cli-services-sm">
<ul>
{% for service in event.get_services %}
<li><a href="{{ service.get_permanent_url }}">{{ service.name }}</a></li>
{% endfor %}
</ul>
</div>
</div>
<a class="button blue icon-calendar" href="{{ event.get_calendar_url }}">{% trans 'в расписание' %}</a>
<a class="button green icon-note" href="#">заметка</a>
</div>
<div class="cli-s-buttons">
<a class="button blue2 lc" href="#">{% trans 'Лучшие цены на отели на' %} <i>Booking</i>.com</a>
</div>
</div>
</div>
<footer class="clearfix">
<div class="cli-stats">
{% if event.visitors %}<span class="visitors"> {{ event.visitors }}</span>{% endif %}
{% if event.members %}<span class="participants">{{ event.members }}</span>{% endif %}
</div>
<div class="cli-tags">
{% with obj=event %}
{% include 'client/includes/show_tags.html' %}
{% endwith %}
</div>
</footer>
{% endfor %}
</ul>
</div>
{% endif %}
{% if place.get_nearest_places %}
<div class="e-cat">
<div class="sect-title">{% trans 'Ближайшие выставочные центры' %}</div>
<ul class="cat-list cl-places">
{% for pl in place.get_nearest_places %}
<li class="cl-item">
<div class="cl-item-wrap clearfix">
<a href="{{ pl.get_permanent_url }}">
<div class="cli-pict">
{% with obj=pl %}
{% include 'show_logo.html' %}
{% endwith %}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
<header>
<div class="cli-title">
<a href="{{ pl.get_permanent_url }}"> {{ pl.name|safe|linebreaks }}</a>
</div>
</header>
<div class="cli-descr">{{ pl.get_type }}</div>
</div>
<div class="cli-bot clearfix">
{% if pl.total_area %}
<div class="cli-dim">{{ pl.total_area }}</div>
{% endif %}
<div class="cli-place">
<a href="#">{{ pl.country }}</a>, <a href="#">{{ pl.city }}</a>,
<a href="{{ pl.get_permanent_url }}">{{ pl.adress }}</a>
</div>
</div>
</div>
</div>
</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% load static %}
{% load i18n %}
{% load template_filters %}
{% block page_body %}
<div class="m-article">
<div class="item-wrap place clearfix">
<aside>
<div class="i-pict"><img src="{% if place.get_logo %}{{ place.get_logo.file_path.url }}
{% else %}{% static 'client/img/no-logo.png' %} {% endif %}" alt="" /></div>
<!--<div class="i-rating">551</div>-->
</aside>
<div class="i-info">
<header>
<div class="i-title">
{{ place.name|safe }}
</div>
<div class="i-descr">
{{ place.description|safe|linebreaks }}
</div>
{% if place.address %}
<div class="i-address map-opened">
<header>
<div class="address">
{{ place.adress }}
</div>
<div class="show-map"><a class="toggle-map" href="#">Раскрыть карту</a></div>
</header>
<div class="i-map">
<div class="close-map"><a class="toggle-map" href="#">Скрыть карту</a></div>
<!-- позиция для карты задается в атрибуте data-coords -->
<div class="map-canvas" id="map-canvas" data-coords="{{ place.address.lat|stringformat:'f' }},{{ place.address.lng|stringformat:'f' }}" ></div>
</div>
</div>
{% else %}
<hr/>
{% endif %}
</header>
</div>
</div>
<div class="i-services">
<div class="sect-title">Услуги</div>
<div class="is-wrap clearfix">
<ul>
{% if place.bank %}
<li>{% trans 'Банк / банкоматы / обмен валюты' %}</li>
{% endif %}
{% if place.wifi %}
<li>Wi-Fi</li>
{% endif %}
{% if place.children_room %}
<li>{% trans 'Детская комната' %}</li>
{% endif %}
{% if place.disabled_service %}
<li>{% trans 'Сервис для инвалидов' %}</li>
{% endif %}
</ul>
<ul>
{% if place.conference_centre %}
<li>{% trans 'Конгресс-центр' %}</li>
{% endif %}
{% if place.business_centre %}
<li>{% trans 'Бизнес центр' %}</li>
{% endif %}
{% if place.online_registration %}
<li>{% trans 'Онлайн-регистрация' %}</li>
{% endif %}
{% if place.cafe %}
<li>{% trans 'Кафе и рестораны' %}</li>
{% endif %}
</ul>
<ul>
{% if place.terminals %}
<li>{% trans 'Информационные терминалы' %}</li>
{% endif %}
{% if place.parking %}
<li>{% trans 'Парковка' %}</li>
{% endif %}
{% if place.press_centre %}
<li>{% trans 'Пресс-центр' %}</li>
{% endif %}
{% if place.mobile_application %}
<li>{% trans 'Мобильное приложение' %}</li>
{% endif %}
</ul>
</div>
</div>
<hr />
{% if place.photogallery %}
{% with photos=place.photogallery.photos.all|slice:"5" %}
<div class="i-photo-slides">
<div class="sect-title">{% trans 'Фотогалерея' %}</div>
<div id="ps-photo-gallery" class="ps-photo-gallery swiper-container">
<ul class="swiper-wrapper">
{% for photo in photos %}
<li class="swiper-slide">
<img src="{{ photo.get_display_url }}" alt="" />
</li>
{% endfor %}
</ul>
<div class="re-controls">
<a class="prev" href="#">&lt;</a>
<a class="next" href="#">&gt;</a>
</div>
</div>
</div>
{% endwith %}
{% endif %}
<div class="e-num-info">
{% if place.total_area %}
<div class="eni-area-wrap">
<div class="eni-title">{% trans 'Общая выставочная площадь' %}</div>
<div class="eni-area">{{ place.total_area|int_format }} м²</div>
</div>
{% endif %}
<div class="eni-areas clearfix">
{% if place.closed_area %}
<div class="enis-col">
<b>{{ place.closed_area|int_format }} {% trans 'м²' %}</b>
{% trans 'закрытая выставочная площадь' %}
</div>
{% endif %}
{% if place.open_area %}
<div class="enis-col">
<b>{{ place.open_area|int_format }} {% trans 'м²' %}</b>
{% trans 'открытая выставочная площадь' %}
</div>
{% endif %}
</div>
<div class="eni-areas clearfix">
<div class="enis-col">
<ul>
{% for hall in place.halls.all %}
{% if not forloop.counter|divisibleby:"2" %}
<li>{{ hall.name }} {% if hall.number %} №{{ hall.number }} {% endif %} — {{ hall.capacity }} м<sup>2</sup></sup></li>
{% endif %}
{% endfor %}
</ul>
</div>
<div class="enis-col">
<ul>
{% for hall in place.halls.all %}
{% if forloop.counter|divisibleby:"2" %}
<li>{{ hall.name }} {% if hall.number %} №{{ hall.number }} {% endif %} — {{ hall.capacity }} м<sup>2</sup></sup></li>
{% endif %}
{% endfor %}
</ul>
</div>
</div>
<div class="eni-holds">
{{ place.total_year_action }}
</div>
<div class="eni-holds">
{% if place.foundation_year %}
<div class="eni-founded">{% trans 'Основано в' %} <b>{{ place.foundation_year }}</b> {% trans 'году' %}</div>
{% endif %}
</div>
</div>
{% if place.get_scheme %}
<hr />
<div class="e-pv-container">
<div class="sect-title">{% trans 'Схема павильонов' %}</div>
{% for scheme in place.get_scheme %}
<div class="div-img-wrap"><img src="{{ scheme.file_path.url }}" alt="" /></div>
<hr/>
{% endfor %}
</div>
{% endif %}
<div class="i-contacts clearfix">
<div class="sect-title">{% trans 'Контактная информация' %}</div>
<div class="ic-wrap">
<div class="ic-col">
<div class="ic-addr">{{ place.adress }}</div>
<div class="ic-links"><a target="_blank" href="{{ place.web_page }}">{{ place.web_page }}</a></div>
</div>
<div class="ic-col">
<ul class="tels">
{% if place.phone %}
<li>{{ place.phone|phone }} ({% trans 'телефон' %})</li>
{% endif %}
{% if place.fax %}
<li>{{ place.fax|phone }} ({% trans 'факс' %})</li>
{% endif %}
</ul>
</div>
</div>
</div>
</div>
{% if place.events %}
<div class="i-events-list">
<div class="sect-title">{% trans 'Список событий' %}</div>
<ul class="cat-list cl-exhibitions">
{% for event in place.events %}
<li class="cl-item" data-link="#">
<div class="cl-item-wrap clearfix">
<a href="#">
{% if event.expohit %}
<span class="hit"></span>
{% endif %}
<div class="cli-pict">
{% with obj=event %}
{% include 'show_logo.html' %}
{% endwith %}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
<header>
<div class="cli-title"><a href="#">{{ event.name|safe|linebreaks }}</a></div>
</header>
<div class="cli-bot clearfix">
<div class="cli-date">
{% with obj=event %}
{% include 'show_date_block.html' %}
{% endwith %}
</div>
<div class="cli-place">
<a href="#">{{ event.country }}</a>, <a href="#">{{ event.city }}</a>
</div>
</div>
</div>
</div>
<div class="cli-buttons clearfix">
<div class="cli-m-buttons">
<div class="cli-services">
<a class="button icon-sm" href="#">{% trans 'услуги' %}</a>
<div class="cli-services-sm">
<ul>
{% for service in event.get_services %}
<li><a href="{{ service.get_permanent_url }}">{{ service.name }}</a></li>
{% endfor %}
</ul>
</div>
</div>
<a class="button blue icon-calendar" href="{{ event.get_calendar_url }}">{% trans 'в расписание' %}</a>
<a class="button green icon-note" href="#">заметка</a>
</div>
<div class="cli-s-buttons">
<a class="button blue2 lc" href="#">{% trans 'Лучшие цены на отели на' %} <i>Booking</i>.com</a>
</div>
</div>
</div>
<footer class="clearfix">
<div class="cli-stats">
{% if event.visitors %}<span class="visitors"> {{ event.visitors }}</span>{% endif %}
{% if event.members %}<span class="participants">{{ event.members }}</span>{% endif %}
</div>
<div class="cli-tags">
{% with obj=event %}
{% include 'client/includes/show_tags.html' %}
{% endwith %}
</div>
</footer>
{% endfor %}
</ul>
</div>
{% endif %}
{% if place.get_nearest_places %}
<div class="e-cat">
<div class="sect-title">{% trans 'Ближайшие выставочные центры' %}</div>
<ul class="cat-list cl-places">
{% for pl in place.get_nearest_places %}
<li class="cl-item">
<div class="cl-item-wrap clearfix">
<a href="{{ pl.get_permanent_url }}">
<div class="cli-pict">
{% with obj=pl %}
{% include 'show_logo.html' %}
{% endwith %}
</div>
</a>
<div class="cli-info">
<div class="cli-top clearfix">
<header>
<div class="cli-title">
<a href="{{ pl.get_permanent_url }}"> {{ pl.name|safe|linebreaks }}</a>
</div>
</header>
<div class="cli-descr">{{ pl.get_type }}</div>
</div>
<div class="cli-bot clearfix">
{% if pl.total_area %}
<div class="cli-dim">{{ pl.total_area }}</div>
{% endif %}
<div class="cli-place">
<a href="#">{{ pl.country }}</a>, <a href="#">{{ pl.city }}</a>,
<a href="{{ pl.get_permanent_url }}">{{ pl.adress }}</a>
</div>
</div>
</div>
</div>
</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% endblock %}

@ -1,134 +1,82 @@
{% extends 'base_catalog.html' %}
{% load static %}
{% load i18n %}
{% load template_filters %}
{% block page_body %}
<div class="m-article cl-photos">
<div class="cl-item">
<div class="cl-item-wrap clearfix">
<div class="cli-pict">
<a href="{{ object.get_permanent_url }}">
{% with obj=object %}
{% include 'client/includes/show_logo.html' %}
{% endwith %}
</a>
</div>
<div class="cli-info">
<div class="cli-top clearfix">
<header>
<div class="cli-title">
<a href="{{ object.get_permanent_url }}">{{ object.name }}</a>
</div>
</header>
<div class="cli-descr">
{{ object.get_type }}
</div>
</div>
<div class="cli-bot clearfix">
{% if object.country %}
<div class="cli-place">
<a href="#">{{ object.country }}</a>, <a href="#">{{ object.city }}</a>
</div>
{% endif %}
</div>
</div>
</div>
</div>
<div class="cli-photo-text">
{{ object.description|safe }}
</div>
<div id="cli-pg" class="cli-photo-gallery">
<ul class="clearfix">
{% for photo in object_list %}
<li>
<a class="open-photo" href="#" >
<img src="{{ photo.get_client_thumbnail_url }}" alt="{{ photo.title }}"
data-user-id="{{ user.id }}" data-image-id="{{ photo.id }}"
data-image-name="{{ photo.title }}" data-image-description="{{ photo.description }}"/>
<span class="pg-title">{{ photo.title }}</span>
</a>
</li>
{% endfor %}
</ul>
</div>
</div>
{% block paginator %}
{% with page_obj=page_obj queries=queries %}
{% include 'includes/paginator.html' %}
{% endwith %}
{% endblock %}
{% endblock %}
{% block photogallery %}
<div id="pw-gallery" class="popup-gallery-container">
<div class="pg-container-wrap">
<div class="popup-gallery-outer">
<div class="popup-gallery">
<a class="pg-close"></a>
<div class="pg-wrap clearfix">
<div class="pg-photos">
<img src="{% static 'client/img/_del-temp/glr-1.jpg' %}" width="730" height="533" alt="" class="photoTag"
data-user-id="25" data-image-id="150" data-album-id="150"/>
</div>
<div class="pg-info">
<div class="pgi-wrap scroll-container">
<div class="pg-photo-info">
<div class="pg-photo-title"></div>
<div class="pg-photo-text"></div>
<hr />
<div class="pg-photo-descr">
<h3>{% trans 'На фотографии отмечены' %}:</h3>
</div>
<hr />
</div>
<!--
<div class="pg-comments">
<div class="pgc-title">{% trans 'Коментарии' %}:</div>
<div class="pgc-body">
<ul>
</ul>
</div>
</div>
</div>
{% if user.is_authenticated %}
<form class="pgc-form">
<hr />
<div class="pgc-field">
<label for="comment">{% trans 'Оставьте свой комментарий' %}:</label>
<textarea name="comment" id="comment" cols="30" rows="10"></textarea>
</div>
-->
<div class="pgc-buttons">
<!--<button type="submit" class="icon-check">ок</button>-->
<a class="button blue icon-tag addTag" id="externalLink" href="#">{% trans 'отметить человека' %}</a>
</div>
<!--
</form>
-->
{% endif %}
</div>
</div>
<div class="pg-photos-controls">
<a class="pgpc-prev" href="#">&lt;</a>
<a class="pgpc-next" href="#">&gt;</a>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% extends 'base_catalog.html' %}
{% load static %}
{% load i18n %}
{% load template_filters %}
{% block page_body %}
<div class="m-article cl-photos">
<div class="cl-item">
<div class="cl-item-wrap clearfix">
<div class="cli-pict">
<a href="{{ object.get_permanent_url }}">
{% with obj=object %}
{% include 'client/includes/show_logo.html' %}
{% endwith %}
</a>
</div>
<div class="cli-info">
<div class="cli-top clearfix">
<header>
<div class="cli-title">
<a href="{{ object.get_permanent_url }}">{{ object.name }}</a>
</div>
</header>
<div class="cli-descr">
{{ object.get_type }}
</div>
</div>
<div class="cli-bot clearfix">
{% if object.country %}
<div class="cli-place">
<a href="#">{{ object.country }}</a>, <a href="#">{{ object.city }}</a>
</div>
{% endif %}
</div>
</div>
</div>
</div>
<div class="cli-photo-text">
{{ object.description|safe }}
</div>
<div id="cli-pg" class="cli-photo-gallery">
<ul class="clearfix">
{% for photo in object_list %}
<li>
<a class="open-photo" href="#" >
<img src="{{ photo.get_client_thumbnail_url }}" data-image-id="{{ photo.id }}"/>
<span class="pg-title">{{ photo.title }}</span>
</a>
</li>
{% endfor %}
</ul>
</div>
</div>
{% block paginator %}
{% with page_obj=page_obj queries=queries %}
{% include 'includes/paginator.html' %}
{% endwith %}
{% endblock %}
{% endblock %}
{% block photogallery %}
{% include 'client/popups/photo.html' %}
{% endblock %}
{% block scripts %}
<script src="{% static 'client/js/pages/place_photo.js' %}"></script>
<script>
//js module initialization
//TODO: разобраться с опциями модуля
EXPO.placePhoto.init({
modalId:'pw-gallery',
modalTrigger:'open-photo'
});
</script>
{% endblock %}

@ -1,53 +1,29 @@
{% load i18n %}
{% load static %}
{% load i18n %}
<div id="pw-gallery" class="popup-gallery-container">
<div class="pg-container-wrap">
<div class="popup-gallery-outer">
<!--<div class="pg-container-wrap">-->
<!--<div class="popup-gallery-outer">-->
<div class="popup-gallery">
<a class="pg-close"></a>
<div class="pg-wrap clearfix">
<div class="pg-photos">
<img src="{{ photo.get_display_url}}" alt="{{ photo.title }}" class="photoTag"
data-user-id="25" data-image-id="150" data-album-id="150"/>
<img src="/media/photologue/cache/ADNEC-Marina-View-1-with-helipad_display.jpg" alt=""/>
<!--/media/photologue/cache/ADNEC-Marina-View-1-with-helipad_display.jpg-->
<!--TODO: тут должна грузится картинка-->
</div>
<div class="pg-info">
<div class="pg-info pg-only-text">
<div class="pgi-wrap scroll-container">
<div class="pg-photo-info">
<div class="pg-photo-title">{{ photo.title }}</div>
<div class="pg-photo-text"></div>
<hr />
<div class="pg-photo-descr">
<h3>{% trans 'На фотографии отмечены' %}:</h3>
<div class="pg-photo-title">{{ photo.title }}Лазерный период: основные моменты</div>
<div class="pg-photo-text">
Проекция абсолютной угловой скорости на оси системы координат xyz последовательно переворачивает поплавковый угол крена. Непосредственно из законов сохранения следует, что точность курса опасна. Подвес, согласно третьему закону Ньютона, представляет собой гироскопический маятник, что явно следует из прецессионных уравнений движения.
</div>
<hr />
</div>
<div class="pg-comments">
<div class="pgc-title">{% trans 'Коментарии' %}:</div>
<div class="pgc-body">
<ul>
</ul>
</div>
</div>
</div>
{% if user.is_authenticated %}
<form class="pgc-form">
<hr />
<div class="pgc-field">
<label for="comment">{% trans 'Оставьте свой комментарий' %}:</label>
<textarea name="comment" id="comment" cols="30" rows="10"></textarea>
</div>
<div class="pgc-buttons">
<button type="submit" class="icon-check">ок</button>
<a class="button blue icon-tag addTag" id="externalLink" href="#">{% trans 'отметить человека' %}</a>
</div>
</form>
{% endif %}
</div>
</div>
<div class="pg-photos-controls">
@ -55,7 +31,7 @@
<a class="pgpc-next" href="#">&gt;</a>
</div>
</div>
</div>
</div>
<!--</div>-->
<!--</div>-->
</div>

@ -1,84 +1,84 @@
{% load static %}
{% load i18n %}
{% load template_filters %}
<div id="pw-place" class="popup-window pw-place">
<header class="clearfix">
<div class="pw-title">{% trans 'Место' %}</div>
</header>
<div class="pw-body clearfix">
<form class="pw-form search_form" action="{{ search_form.search_url }}">
<div class="c-select-box-wrap">
<div class="c-select-box places">
<div class="csb-title">
<input type="text" class="filter-input" autocomplete="on" placeholder="Введите или выберите страну из списка" />
<!--
<div class="ac-custom-message" id="ac_animes"><span>Этот регион уже выбран.</span></div>
-->
<!--Введите или выберите страну из списка-->
</div>
<div class="csb-selected-items"></div>
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<div class="places-list">
<ul>
{% for value, text in search_form.area.field.choices %}
<li class="level1">
<label>
<input type="checkbox" name="area" value="{{ value }}" {% for option in search_form.area.value %}{% if option == value|slugify %}checked="checked"{% endif %}{% endfor %}/>
<span class="hidden">{{ text }}</span>
</label>
<a href="#">{{ text }}</a>
{% if value|get_country_by_area %}
<ul>
{% for country in value|get_country_by_area %}
<li class="level2">
<label>
<input type="checkbox" name="co" value="{{ country.id }}" {% for option in search_form.co.value %}{% if option == country.id|slugify %}checked="checked"{% endif %}{% endfor %}/>
<span class="hidden">{{ country.name }}</span>
</label>
<a href="#">{{ country.name }}</a>
{% if country.id|get_city_by_country %}
<ul>
{% for city in country.id|get_city_by_country %}
<li>
<label>
<input type="checkbox" name="ci" value="{{ city.id }}" {% for option in search_form.ci.value %}{% if option == city.id|slugify %}checked="checked"{% endif %}{% endfor %}/>{{ city.name }}
</label>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
</div>
<div class="q-sel">
<div class="q-sel-title">{% trans 'Быстрый выбор' %}:</div>
<ul>
<li><a href="#">Москва</a></li>
<li><a href="#">Санкт-Петербург</a></li>
</ul>
<a class="clear" href="#">{% trans 'Сбросить выбранные регионы' %}</a>
</div>
</div>
</div>
</div>
</div>
<div class="pwf-buttons-line">
<button type="submit" class="icon-check">{% trans 'применить' %}</button>
</div>
</form>
</div>
{% load static %}
{% load i18n %}
{% load template_filters %}
<div id="pw-place" class="popup-window pw-place">
<header class="clearfix">
<div class="pw-title">{% trans 'Место' %}</div>
</header>
<div class="pw-body clearfix">
<form class="pw-form search_form" action="{{ search_form.search_url }}">
<div class="c-select-box-wrap">
<div class="c-select-box places">
<div class="csb-title">
<input type="text" class="filter-input" autocomplete="on" placeholder="Введите или выберите страну из списка" />
<!--
<div class="ac-custom-message" id="ac_animes"><span>Этот регион уже выбран.</span></div>
-->
<!--Введите или выберите страну из списка-->
</div>
<div class="csb-selected-items"></div>
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<div class="places-list">
<ul>
{% for value, text in search_form.area.field.choices %}
<li class="level1">
<label>
<input type="checkbox" name="area" value="{{ value }}" {% for option in search_form.area.value %}{% if option == value|slugify %}checked="checked"{% endif %}{% endfor %}/>
<span class="hidden">{{ text }}</span>
</label>
<a href="#">{{ text }}</a>
{% if value|get_country_by_area %}
<ul>
{% for country in value|get_country_by_area %}
<li class="level2">
<label>
<input type="checkbox" name="co" value="{{ country.id }}" {% for option in search_form.co.value %}{% if option == country.id|slugify %}checked="checked"{% endif %}{% endfor %}/>
<span class="hidden">{{ country.name }}</span>
</label>
<a href="#">{{ country.name }}</a>
{% if country.id|get_city_by_country %}
<ul>
{% for city in country.id|get_city_by_country %}
<li>
<label>
<input type="checkbox" name="ci" value="{{ city.id }}" {% for option in search_form.ci.value %}{% if option == city.id|slugify %}checked="checked"{% endif %}{% endfor %}/>{{ city.name }}
</label>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
</div>
<div class="q-sel">
<div class="q-sel-title">{% trans 'Быстрый выбор' %}:</div>
<ul>
<li><a href="#">Москва</a></li>
<li><a href="#">Санкт-Петербург</a></li>
</ul>
<a class="clear" href="#">{% trans 'Сбросить выбранные регионы' %}</a>
</div>
</div>
</div>
</div>
</div>
<div class="pwf-buttons-line">
<button type="submit" class="icon-check">{% trans 'применить' %}</button>
</div>
</form>
</div>
</div>

@ -1,55 +1,55 @@
{% load static %}
{% load i18n %}
{% load template_filters %}
<div id="pw-subj" class="popup-window pw-subj">
<header class="clearfix">
<div class="pw-title">{% trans 'Тематика' %}</div>
</header>
<div class="pw-body clearfix">
<form class="pw-form search_form" action="{{ search_form.search_url }}">
<div class="pwf-line subj-checks">
<div class="pwf-field">
<label class="check"><input type="checkbox" class="topicChecks" checked="true" name="sType" value="exhb" />выставки</label>
</div>
<div class="pwf-field">
<label class="check"><input type="checkbox" class="topicChecks" checked="true" name="sType" value="conf" />конференции</label>
</div>
<div class="pwf-field">
<label class="check"><input type="checkbox" class="topicChecks" name="sType" value="smnr" />семинары</label>
</div>
<div class="pwf-field">
<label class="check"><input type="checkbox" class="topicChecks" name="sType" value="webn" />вебинары</label>
</div>
</div>
<div class="c-select-box-wrap">
<div class="c-select-box topics">
<div class="csb-title">
<input type="text" class="filter-input topicAC" autocomplete="on" placeholder="Введите или выберите тематику из списка" />
<div class="ac-custom-message" id="ac_animes_t"><span>Эта тематика уже выбрана.</span></div>
</div>
<div class="csb-selected-items"></div>
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
{% for value, text in search_form.th.field.choices %}
<li class="level1{{ search_form.theme_classes|get_item:value }}">
<label>
<input type="checkbox" name="th" value="{{ value }}" {% for option in search_form.th.value %}{% if option == value|slugify %}checked="checked"{% endif %}{% endfor %}/>{{ text }}
</label>
</li>
{% endfor %}
</ul>
</div>
</div>
</div>
</div>
<div class="pwf-buttons-line">
<button type="submit" class="icon-check">{% trans 'применить' %}</button>
</div>
</form>
</div>
{% load static %}
{% load i18n %}
{% load template_filters %}
<div id="pw-subj" class="popup-window pw-subj">
<header class="clearfix">
<div class="pw-title">{% trans 'Тематика' %}</div>
</header>
<div class="pw-body clearfix">
<form class="pw-form search_form" action="{{ search_form.search_url }}">
<div class="pwf-line subj-checks">
<div class="pwf-field">
<label class="check"><input type="checkbox" class="topicChecks" checked="true" name="sType" value="exhb" />выставки</label>
</div>
<div class="pwf-field">
<label class="check"><input type="checkbox" class="topicChecks" checked="true" name="sType" value="conf" />конференции</label>
</div>
<div class="pwf-field">
<label class="check"><input type="checkbox" class="topicChecks" name="sType" value="smnr" />семинары</label>
</div>
<div class="pwf-field">
<label class="check"><input type="checkbox" class="topicChecks" name="sType" value="webn" />вебинары</label>
</div>
</div>
<div class="c-select-box-wrap">
<div class="c-select-box topics">
<div class="csb-title">
<input type="text" class="filter-input topicAC" autocomplete="on" placeholder="Введите или выберите тематику из списка" />
<div class="ac-custom-message" id="ac_animes_t"><span>Эта тематика уже выбрана.</span></div>
</div>
<div class="csb-selected-items"></div>
<div class="scroll-container csb-menu">
<div class="scroll-content clearfix">
<ul>
{% for value, text in search_form.th.field.choices %}
<li class="level1{{ search_form.theme_classes|get_item:value }}">
<label>
<input type="checkbox" name="th" value="{{ value }}" {% for option in search_form.th.value %}{% if option == value|slugify %}checked="checked"{% endif %}{% endfor %}/>{{ text }}
</label>
</li>
{% endfor %}
</ul>
</div>
</div>
</div>
</div>
<div class="pwf-buttons-line">
<button type="submit" class="icon-check">{% trans 'применить' %}</button>
</div>
</form>
</div>
</div>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -49,9 +49,6 @@ EXPO.company = (function() {
formDataString = decodeURI(formData).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"').replace(/\//ig, '\\/').replace(/\\n/g, '\\n');
this.formData = JSON.parse('{"' + formDataString + '"}');
this.formId = formName;
console.log('pushData:');
console.log(data);
},
pullData: function (data) {
@ -64,9 +61,6 @@ EXPO.company = (function() {
message: " handler function for processing response after form submit not defined, please define it!"
};
}
console.log('pullData: ');
console.log(data);
},
// method to fulfill edited inputs with new content
@ -148,9 +142,6 @@ EXPO.company = (function() {
$img, imgSrc, $input, inputValue;
this.pullHandler = function (data) {
if (data.success){
console.log('self:');
console.log(self);
for (item in self.formData) {
$input = $('#id_'+item);
if($.trim(self.formData[item]) != '' && $input.length){

@ -0,0 +1,149 @@
var EXPO = EXPO || {}; //isolated namespace
//общий для всех страниц модуль Функционал общий для всех страниц
// module requires JQuery library
EXPO.placePhoto = (function() {
// variables
var that = {};
that.settings = {
}; //default module setting
that.lang ={};
//dependences
//private
// constructor for popup window on gallery page
var ModalBox = function(){
// object properties
this.rawData;
this.currentId;
// привязка к html данным шаблона формы
this.control;
};
//methods for ModalBox object
ModalBox.prototype = {
//some kind of 'protected' methods
_getAjax: function () {
},
_renderSlide: function () {
},
_getId: function () {
},
//public methods
close: function () {
},
open: function () {
},
nextSlide:function () {
},
prevSlide: function () {
},
// method to get sliderPopup visible and pass to modalBox first initial id and make some init routine
show: function () {
}
};
// methods
//инициализация общих свойств
that.init = function(options) {
// settings extending
$.extend(this.lang, options.lang);
options.lang = null;
$.extend(this.settings, options);
// begin of initialization
var self = this;
$(function () {
$('a.open-photo').on('click', function () {
var $popupGallery = $('#pw-gallery');
// configure image
var $img = $(this).find('img').clone();
$img.addClass('photoTag');
$img_block = $popupGallery.find('.pg-photos');
$img_block.html($img);
// add id for image description
var id = 'imgid'+$img.attr('data-image-id')
$popupGallery.find('.pg-photo-descr').attr('id', id);
$popupGallery.find('.pg-photo-descr ul').remove();
$popupGallery.find('.pg-photo-title').html($img.attr('data-image-name'))
$popupGallery.find('.pg-photo-text').html($img.attr('data-image-description'))
// end configure image
// Список людей для автокомплита:
$.getJSON('/accounts/get-tag-users/',function(json){
window.photoTagData = json;
});
// отметки
$('.photoTag').photoTag({
externalAddTagLinks: {
bind: true,
selector: ".addTag"
},
requestTagsUrl: '/photo/existing-tags/',
deleteTagsUrl: '/photo/delete-tag/',
addTagUrl: '/photo/add-tag/',
parametersForNewTag: {
name: {
parameterKey: 'name',
isAutocomplete: true,
label: 'Введите имя:'
}
}
});
// ---------------------------------------
var $popupOuter = $('div.popup-gallery-outer', $popupGallery);
var $closePopup = $('a.pg-close', $popupGallery);
var $prevSlide = $('a.pgpc-prev', $popupGallery);
var $nextSlide = $('a.pgpc-next', $popupGallery);
function closeGallery() {
$popupGallery.fadeOut(300, function () {
$body.removeClass('no-scroll');
});
return false;
}
$closePopup.on('click', closeGallery);
$popupOuter.on('click', function (event) {
var targetObj = $(event.target);
if (targetObj.parents().filter('.popup-gallery').length < 1) {
closeGallery()
}
});
$prevSlide.on('click', function () {
return false;
});
$nextSlide.on('click', function () {
return false;
});
$body.addClass('no-scroll');
$popupGallery.fadeIn(300);
return false;
});
});
};
return that;
}());

@ -27,6 +27,8 @@ EXPO.profile = (function() {
// dataType: "json",
url: self.ajaxPath,
data:dataToSend,
processData: false,
contentType: false,
success: function(data) {
self.pullHandler(data);
$('#wait-ajax').fadeOut();
@ -38,6 +40,13 @@ EXPO.profile = (function() {
pushData: function (data, formName) {
var handler = this.pushHandler,
formData = data;
if(typeof formData != "string"){
this.formData =formData;
}else{
this.formData = JSON.parse('{"' + decodeURI(formData).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}');
}
this.formId = formName;
if(typeof handler == 'function'){
// if particular data change required
handler(data);
@ -46,11 +55,10 @@ EXPO.profile = (function() {
this.getajax(data);
$('#wait-ajax').show();
}
this.formData = JSON.parse('{"' + decodeURI(formData).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}');
this.formId = formName;
console.log('pushData:');
console.log(data);
console.log('formData type');
console.log(typeof formData);
},
pullData: function (data) {
@ -63,9 +71,7 @@ EXPO.profile = (function() {
message: " handler function for processing response after form submit not defined, please define it!"
};
}
console.log('pullData: ');
console.log(data);
},
// method to fulfill edited inputs with new content
@ -101,13 +107,7 @@ EXPO.profile = (function() {
// please add functionality for new profile forms here
// pushHandler is for ajax to server, pullHandler for ajax from it. Data is the response information from server
// name of each method is equal 'id' attribute of <form/> element on the page.
Forms.avatar_form = function (path) {
this.pullHandler = function (data) {
console.log('avatar form not defined');
};
this.ajaxPath = path;
};
Forms.home_form = function (path) {
var self = this;
this.pullHandler = function (data) {
@ -214,9 +214,7 @@ EXPO.profile = (function() {
$img, imgSrc, $input, inputValue;
this.pullHandler = function (data) {
if (data.success){
console.log('self:');
console.log(self);
for (item in self.formData) {
$input = $('#id_'+item);
if($.trim(self.formData[item]) != '' && $input.length){
@ -247,26 +245,51 @@ EXPO.profile = (function() {
}
$('.p-editable').removeClass('pe-current');
// var vk = $.trim($('#id_vk').val()), vk_img = $('#vk-img').attr('src').replace('_hover',''),
// fb = $.trim($('#id_facebook').val()), fb_img = $('#fb-img').attr('src').replace('_hover',''),
// ln = $.trim($('#id_linkedin').val()), ln_img = $('#ln-img').attr('src').replace('_hover',''),
// tw = $.trim($('#id_twitter').val()), tw_img = $('#tw-img').attr('src').replace('_hover','');
// if($('#fb-link').length){
// $('#fb-link').attr('src', fb);
// }else{
// $('#fb-img').attr('src',fb_img);
// }
// $('#vk-link').attr('src', vk);
// $('#ln-link').attr('src', ln);
// $('#tw-link').attr('src', tw);
//
// $('.p-editable').removeClass('pe-current');
}
};
this.ajaxPath = path;
};
Forms.avatar_form = function (path) {
var self = this,
$input = $('#id_avatar'),
$editPhoto = $('#pic-edit-photo'),
$pickBlock = $('#pick-block'),
$form,
$avatar = $('.pic_block img');
this.pullHandler = function (data) {
if (data.success){
if($avatar.length){
$avatar.attr('src', data.url);
}else{
$pickBlock.removeClass('add_pic_block').addClass('pic_block');
$('.add-wrapper', $pickBlock).remove();
$('<img/>').attr('src', data.url).prependTo($pickBlock);
}
// $('#static-about-value').text($('#id_about').val());
$('.p-editable').removeClass('pe-current');
}
};
this.pushHandler = function(data){
if(typeof data != 'string'){
self.getajax(data);
$('#wait-ajax').show();
}else{
$form = $('#'+self.formId);
$form.off('submit');
$form.trigger('submit');
}
};
$input.on('change', function () {
$(this).parents('form').submit();
});
$editPhoto.on('click', function () {
$input.trigger('click');
});
// pick-block
this.ajaxPath = path;
}
$(function () {
@ -400,7 +423,8 @@ EXPO.profile = (function() {
//forms init
$('.'+self.settings.updateFormClass).each(function () {
var formName = $(this).attr('id'),
path = $(this).attr('action');
path = $(this).attr('action'),
inputData;
//make and initialize form objects
self.forms[formName] = Forms.factory(formName,path);
@ -408,9 +432,15 @@ EXPO.profile = (function() {
// submit events handler
$(this).off('submit');
$(this).on('submit', function () {
var serialized = $(this).serialize();
// each form post definitin function
self.forms[formName].pushData(serialized, formName);
//check if formData is supported
if ( window.FormData && ("upload" in ($.ajaxSettings.xhr())) ){
inputData = new FormData(this);
self.forms[formName].pushData(inputData, formName);
} else {
inputData = $(this).serialize();
self.forms[formName].pushData(inputData, formName);
}
return false;
});

@ -1,10 +1,10 @@
/*
* jQuery.bind-first library v0.2.3
* Copyright (c) 2013 Vladimir Zhuravlev
*
* Released under MIT License
* @license
*
* Date: Thu Feb 6 10:13:59 ICT 2014
**/
/*
* jQuery.bind-first library v0.2.3
* Copyright (c) 2013 Vladimir Zhuravlev
*
* Released under MIT License
* @license
*
* Date: Thu Feb 6 10:13:59 ICT 2014
**/
(function(t){function e(e){return u?e.data("events"):t._data(e[0]).events}function n(t,n,r){var i=e(t),a=i[n];if(!u){var s=r?a.splice(a.delegateCount-1,1)[0]:a.pop();return a.splice(r?0:a.delegateCount||0,0,s),void 0}r?i.live.unshift(i.live.pop()):a.unshift(a.pop())}function r(e,r,i){var a=r.split(/\s+/);e.each(function(){for(var e=0;a.length>e;++e){var r=t.trim(a[e]).match(/[^\.]+/i)[0];n(t(this),r,i)}})}function i(e){t.fn[e+"First"]=function(){var n=t.makeArray(arguments),i=n.shift();return i&&(t.fn[e].apply(this,arguments),r(this,i)),this}}var a=t.fn.jquery.split("."),s=parseInt(a[0]),f=parseInt(a[1]),u=1>s||1==s&&7>f;i("bind"),i("one"),t.fn.delegateFirst=function(){var e=t.makeArray(arguments),n=e[1];return n&&(e.splice(0,2),t.fn.delegate.apply(this,arguments),r(this,n,!0)),this},t.fn.liveFirst=function(){var e=t.makeArray(arguments);return e.unshift(this.selector),t.fn.delegateFirst.apply(t(document),e),this},u||(t.fn.onFirst=function(e,n){var i=t(this),a="string"==typeof n;if(t.fn.on.apply(i,arguments),"object"==typeof e)for(type in e)e.hasOwnProperty(type)&&r(i,type,a);else"string"==typeof e&&r(i,e,a);return i})})(jQuery);

@ -1,382 +1,382 @@
/*
* @license Multi Input Mask plugin for jquery
* https://github.com/andr-04/inputmask-multi
* Copyright (c) 2012 Andrey Egorov
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
* Version: 1.0.2
*
* Requriements:
* https://github.com/RobinHerbots/jquery.inputmask
* https://github.com/private-face/jquery.bind-first
*/
(function ($) {
$.masksLoad = function(url) {
var maskList;
$.ajax({
url: url,
async: false,
dataType: 'json',
success: function (response) {
maskList = response;
}
});
return maskList;
}
$.masksSort = function(maskList, defs, match, key) {
maskList.sort(function (a, b) {
var ia = 0, ib = 0;
for (; (ia<a[key].length && ib<b[key].length);) {
var cha = a[key].charAt(ia);
var chb = b[key].charAt(ib);
if (!match.test(cha)) {
ia++;
continue;
}
if (!match.test(chb)) {
ib++;
continue;
}
if ($.inArray(cha, defs) != -1 && $.inArray(chb, defs) == -1) {
return 1;
}
if ($.inArray(cha, defs) == -1 && $.inArray(chb, defs) != -1) {
return -1;
}
if ($.inArray(cha, defs) == -1 && $.inArray(chb, defs) == -1) {
if (cha != chb) {
return cha < chb ? -1 : 1;
}
}
ia++;
ib++;
}
for (; (ia<a[key].length || ib<b[key].length);) {
if (ia<a[key].length && !match.test(a[key].charAt(ia))) {
ia++;
continue;
}
if (ib<b[key].length && !match.test(b[key].charAt(ib))) {
ib++;
continue;
}
if (ia<a[key].length) {
return 1;
}
if (ib<b[key].length) {
return -1;
}
}
return 0;
});
return maskList;
}
$.fn.inputmasks = function(maskOpts, mode) {
//Helper Functions
var caret = function(begin, end) {
if (typeof begin == 'number') {
end = (typeof end == 'number') ? end : begin;
if (this.setSelectionRange) {
this.setSelectionRange(begin, end);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', begin);
range.select();
}
} else {
if (this.setSelectionRange) {
begin = this.selectionStart;
end = this.selectionEnd;
} else if (document.selection && document.selection.createRange) {
var range = document.selection.createRange();
begin = 0 - range.duplicate().moveStart('character', -100000);
end = begin + range.text.length;
}
return {
begin: begin,
end: end
};
}
};
var keys = Object.keys || function(obj) {
if (obj !== Object(obj)) {
throw new TypeError('Invalid object');
}
var keys = [];
for (var key in obj) {
keys[keys.length] = key;
}
return keys;
};
maskOpts = $.extend(true, {
onMaskChange: $.noop
}, maskOpts);
var defs = {};
for (var def in maskOpts.inputmask.definitions) {
var validator = maskOpts.inputmask.definitions[def].validator;
switch (typeof validator) {
case "string":
defs[def] = new RegExp(validator);
break;
case "object":
if ("test" in maskOpts.definitions[def].validator) {
defs[def] = validator;
}
break;
case "function":
defs[def] = {
test: validator
};
break;
}
}
maskOpts.inputmask.definitions[maskOpts.replace] = {
validator: maskOpts.match.source,
cardinality: 1
};
var iphone = navigator.userAgent.match(/iphone/i) != null;
var oldmatch = false;
var placeholder = $.extend(true, {}, $.inputmask.defaults, maskOpts.inputmask).placeholder;
var insertMode = $.extend(true, {}, $.inputmask.defaults, maskOpts.inputmask).insertMode;
var maskMatch = function(text) {
var mtxt = "";
for (var i=0; i<text.length; i++) {
var ch = text.charAt(i);
if (ch == placeholder) {
break;
}
if (maskOpts.match.test(ch)) {
mtxt += ch;
}
}
for (var mid in maskOpts.list) {
var mask = maskOpts.list[mid][maskOpts.listKey];
var pass = true;
for (var it=0, im=0; (it<mtxt.length && im<mask.length);) {
var chm = mask.charAt(im);
var cht = mtxt.charAt(it);
if (!maskOpts.match.test(chm) && !(chm in defs)) {
im++;
continue;
}
if (((chm in defs) && defs[chm].test(cht)) || (cht == chm)) {
it++;
im++;
} else {
pass = false;
break;
}
}
if (pass && it==mtxt.length) {
var determined = mask.substr(im).search(maskOpts.match) == -1;
mask = mask.replace(new RegExp([maskOpts.match.source].concat(keys(defs)).join('|'), 'g'), maskOpts.replace);
var completed = mask.substr(im).search(maskOpts.replace) == -1;
return {
mask: mask,
obj: maskOpts.list[mid],
determined: determined,
completed: completed
};
}
}
return false;
}
var caretApply = function(oldMask, newMask, oldPos) {
if (!oldMask) {
return 0;
}
var pos = 0, startPos = 0;
for (; pos < oldPos.begin; pos++) {
if (oldMask.charAt(pos) == maskOpts.replace) {
startPos++;
}
}
var endPos = 0;
for (; pos < oldPos.end; pos++) {
if (oldMask.charAt(pos) == maskOpts.replace) {
endPos++;
}
}
for (pos = 0; (pos < newMask.length && (startPos > 0 || newMask.charAt(pos) != maskOpts.replace)); pos++) {
if (newMask.charAt(pos) == maskOpts.replace) {
startPos--;
}
}
startPos = pos;
for (; (pos < newMask.length && endPos > 0); pos++) {
if (newMask.charAt(pos) == maskOpts.replace) {
endPos--;
}
}
endPos = pos;
return {
begin: startPos,
end: endPos
};
}
var maskUnbind = function() {
$(this)
.unbind("keypress.inputmask", masksKeyPress)
.unbind("input.inputmask", masksPaste)
.unbind("paste.inputmask", masksPaste)
.unbind("dragdrop.inputmask", masksPaste)
.unbind("drop.inputmask", masksPaste)
.unbind("keydown.inputmask", masksKeyDown)
.unbind("setvalue.inputmask", masksSetValue)
.unbind("blur.inputmask", masksChange);
}
var maskRebind = function() {
maskUnbind.call(this);
$(this)
.bindFirst("keypress.inputmask", masksKeyPress)
.bindFirst("input.inputmask", masksPaste)
.bindFirst("paste.inputmask", masksPaste)
.bindFirst("dragdrop.inputmask", masksPaste)
.bindFirst("drop.inputmask", masksPaste)
.bindFirst("keydown.inputmask", masksKeyDown)
.bindFirst("setvalue.inputmask", masksSetValue)
.bind("blur.inputmask", masksChange);
}
var maskApply = function(match, newtext) {
if (match && (newtext || match.mask != oldmatch.mask)) {
var caretPos;
if (!newtext) {
caretPos = caretApply(oldmatch.mask, match.mask, caret.call(this));
}
if (newtext) {
if (this._valueSet) {
this._valueSet(newtext);
} else {
this.value = newtext;
}
}
$(this).inputmask(match.mask, $.extend(true, maskOpts.inputmask, {
insertMode: insertMode
}));
if (!newtext) {
caret.call(this, caretPos.begin, caretPos.end);
}
}
oldmatch = match;
maskOpts.onMaskChange.call(this, match.obj, match.determined);
return true;
}
var keyboardApply = function(e, text, insert) {
var match = maskMatch(text);
if (!match || match.obj != oldmatch.obj || match.determined != oldmatch.determined) {
if (match) {
maskUnbind.call(this);
if (insert) {
maskApply.call(this, match);
$(this).trigger(e);
} else {
$(this).trigger(e);
maskApply.call(this, match);
}
maskRebind.call(this);
}
e.stopImmediatePropagation();
return false;
}
return true;
}
var masksKeyDown = function(e) {
e = e || window.event;
var k = e.which || e.charCode || e.keyCode;
if (k == 8 || k == 46 || (iphone && k == 127)) { // delete or backspace
var text = this._valueGet();
var caretPos = caret.call(this);
if (caretPos.begin == caretPos.end || (!insertMode && caretPos.begin == caretPos.end-1)) {
var pos = caretPos.begin;
do {
if (k != 46) { // backspace
pos--;
}
var chr = text.charAt(pos);
text = text.substring(0, pos) + text.substring(pos+1);
} while (pos>0 && pos<text.length && chr != placeholder && !maskOpts.match.test(chr));
} else {
var test = text.substring(0, caretPos.begin) + text.substring(caretPos.end);
if (test.search(maskOpts.match) == -1) {
text = test;
}
}
return keyboardApply.call(this, e, text, false);
}
if (k == 45) { // insert
insertMode = !insertMode;
}
return true;
}
var masksKeyPress = function(e) {
var text = this._valueGet();
e = e || window.event;
var k = e.which || e.charCode || e.keyCode, c = String.fromCharCode(k);
caretPos = caret.call(this);
text = text.substring(0, caretPos.begin) + c + text.substring(caretPos.end);
return keyboardApply.call(this, e, text, true);
}
var masksChange = function(e) {
var match = maskMatch(this._valueGet());
maskApply.call(this, match);
maskRebind.call(this);
return true;
}
var masksSetValue = function(e) {
maskInit.call(this);
e.stopImmediatePropagation();
return true;
}
var maskInit = function() {
var text;
if (this._valueGet) {
text = this._valueGet();
} else {
text = this.value;
}
var match = maskMatch(text);
while (!match && text.length>0) {
text = text.substr(0, text.length-1);
match = maskMatch(text);
}
maskApply.call(this, match, text);
maskRebind.call(this);
}
var masksPaste = function(e) {
var input = this;
setTimeout(function() {
maskInit.call(input);
}, 0);
e.stopImmediatePropagation();
return true;
}
switch (mode) {
case "isCompleted":
var res = maskMatch((this[0]._valueGet && this[0]._valueGet()) || this[0].value);
return (res && res.completed);
default:
this.each(function () {
maskInit.call(this);
});
return this;
}
}
})(jQuery);
/*
* @license Multi Input Mask plugin for jquery
* https://github.com/andr-04/inputmask-multi
* Copyright (c) 2012 Andrey Egorov
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
* Version: 1.0.2
*
* Requriements:
* https://github.com/RobinHerbots/jquery.inputmask
* https://github.com/private-face/jquery.bind-first
*/
(function ($) {
$.masksLoad = function(url) {
var maskList;
$.ajax({
url: url,
async: false,
dataType: 'json',
success: function (response) {
maskList = response;
}
});
return maskList;
}
$.masksSort = function(maskList, defs, match, key) {
maskList.sort(function (a, b) {
var ia = 0, ib = 0;
for (; (ia<a[key].length && ib<b[key].length);) {
var cha = a[key].charAt(ia);
var chb = b[key].charAt(ib);
if (!match.test(cha)) {
ia++;
continue;
}
if (!match.test(chb)) {
ib++;
continue;
}
if ($.inArray(cha, defs) != -1 && $.inArray(chb, defs) == -1) {
return 1;
}
if ($.inArray(cha, defs) == -1 && $.inArray(chb, defs) != -1) {
return -1;
}
if ($.inArray(cha, defs) == -1 && $.inArray(chb, defs) == -1) {
if (cha != chb) {
return cha < chb ? -1 : 1;
}
}
ia++;
ib++;
}
for (; (ia<a[key].length || ib<b[key].length);) {
if (ia<a[key].length && !match.test(a[key].charAt(ia))) {
ia++;
continue;
}
if (ib<b[key].length && !match.test(b[key].charAt(ib))) {
ib++;
continue;
}
if (ia<a[key].length) {
return 1;
}
if (ib<b[key].length) {
return -1;
}
}
return 0;
});
return maskList;
}
$.fn.inputmasks = function(maskOpts, mode) {
//Helper Functions
var caret = function(begin, end) {
if (typeof begin == 'number') {
end = (typeof end == 'number') ? end : begin;
if (this.setSelectionRange) {
this.setSelectionRange(begin, end);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', begin);
range.select();
}
} else {
if (this.setSelectionRange) {
begin = this.selectionStart;
end = this.selectionEnd;
} else if (document.selection && document.selection.createRange) {
var range = document.selection.createRange();
begin = 0 - range.duplicate().moveStart('character', -100000);
end = begin + range.text.length;
}
return {
begin: begin,
end: end
};
}
};
var keys = Object.keys || function(obj) {
if (obj !== Object(obj)) {
throw new TypeError('Invalid object');
}
var keys = [];
for (var key in obj) {
keys[keys.length] = key;
}
return keys;
};
maskOpts = $.extend(true, {
onMaskChange: $.noop
}, maskOpts);
var defs = {};
for (var def in maskOpts.inputmask.definitions) {
var validator = maskOpts.inputmask.definitions[def].validator;
switch (typeof validator) {
case "string":
defs[def] = new RegExp(validator);
break;
case "object":
if ("test" in maskOpts.definitions[def].validator) {
defs[def] = validator;
}
break;
case "function":
defs[def] = {
test: validator
};
break;
}
}
maskOpts.inputmask.definitions[maskOpts.replace] = {
validator: maskOpts.match.source,
cardinality: 1
};
var iphone = navigator.userAgent.match(/iphone/i) != null;
var oldmatch = false;
var placeholder = $.extend(true, {}, $.inputmask.defaults, maskOpts.inputmask).placeholder;
var insertMode = $.extend(true, {}, $.inputmask.defaults, maskOpts.inputmask).insertMode;
var maskMatch = function(text) {
var mtxt = "";
for (var i=0; i<text.length; i++) {
var ch = text.charAt(i);
if (ch == placeholder) {
break;
}
if (maskOpts.match.test(ch)) {
mtxt += ch;
}
}
for (var mid in maskOpts.list) {
var mask = maskOpts.list[mid][maskOpts.listKey];
var pass = true;
for (var it=0, im=0; (it<mtxt.length && im<mask.length);) {
var chm = mask.charAt(im);
var cht = mtxt.charAt(it);
if (!maskOpts.match.test(chm) && !(chm in defs)) {
im++;
continue;
}
if (((chm in defs) && defs[chm].test(cht)) || (cht == chm)) {
it++;
im++;
} else {
pass = false;
break;
}
}
if (pass && it==mtxt.length) {
var determined = mask.substr(im).search(maskOpts.match) == -1;
mask = mask.replace(new RegExp([maskOpts.match.source].concat(keys(defs)).join('|'), 'g'), maskOpts.replace);
var completed = mask.substr(im).search(maskOpts.replace) == -1;
return {
mask: mask,
obj: maskOpts.list[mid],
determined: determined,
completed: completed
};
}
}
return false;
}
var caretApply = function(oldMask, newMask, oldPos) {
if (!oldMask) {
return 0;
}
var pos = 0, startPos = 0;
for (; pos < oldPos.begin; pos++) {
if (oldMask.charAt(pos) == maskOpts.replace) {
startPos++;
}
}
var endPos = 0;
for (; pos < oldPos.end; pos++) {
if (oldMask.charAt(pos) == maskOpts.replace) {
endPos++;
}
}
for (pos = 0; (pos < newMask.length && (startPos > 0 || newMask.charAt(pos) != maskOpts.replace)); pos++) {
if (newMask.charAt(pos) == maskOpts.replace) {
startPos--;
}
}
startPos = pos;
for (; (pos < newMask.length && endPos > 0); pos++) {
if (newMask.charAt(pos) == maskOpts.replace) {
endPos--;
}
}
endPos = pos;
return {
begin: startPos,
end: endPos
};
}
var maskUnbind = function() {
$(this)
.unbind("keypress.inputmask", masksKeyPress)
.unbind("input.inputmask", masksPaste)
.unbind("paste.inputmask", masksPaste)
.unbind("dragdrop.inputmask", masksPaste)
.unbind("drop.inputmask", masksPaste)
.unbind("keydown.inputmask", masksKeyDown)
.unbind("setvalue.inputmask", masksSetValue)
.unbind("blur.inputmask", masksChange);
}
var maskRebind = function() {
maskUnbind.call(this);
$(this)
.bindFirst("keypress.inputmask", masksKeyPress)
.bindFirst("input.inputmask", masksPaste)
.bindFirst("paste.inputmask", masksPaste)
.bindFirst("dragdrop.inputmask", masksPaste)
.bindFirst("drop.inputmask", masksPaste)
.bindFirst("keydown.inputmask", masksKeyDown)
.bindFirst("setvalue.inputmask", masksSetValue)
.bind("blur.inputmask", masksChange);
}
var maskApply = function(match, newtext) {
if (match && (newtext || match.mask != oldmatch.mask)) {
var caretPos;
if (!newtext) {
caretPos = caretApply(oldmatch.mask, match.mask, caret.call(this));
}
if (newtext) {
if (this._valueSet) {
this._valueSet(newtext);
} else {
this.value = newtext;
}
}
$(this).inputmask(match.mask, $.extend(true, maskOpts.inputmask, {
insertMode: insertMode
}));
if (!newtext) {
caret.call(this, caretPos.begin, caretPos.end);
}
}
oldmatch = match;
maskOpts.onMaskChange.call(this, match.obj, match.determined);
return true;
}
var keyboardApply = function(e, text, insert) {
var match = maskMatch(text);
if (!match || match.obj != oldmatch.obj || match.determined != oldmatch.determined) {
if (match) {
maskUnbind.call(this);
if (insert) {
maskApply.call(this, match);
$(this).trigger(e);
} else {
$(this).trigger(e);
maskApply.call(this, match);
}
maskRebind.call(this);
}
e.stopImmediatePropagation();
return false;
}
return true;
}
var masksKeyDown = function(e) {
e = e || window.event;
var k = e.which || e.charCode || e.keyCode;
if (k == 8 || k == 46 || (iphone && k == 127)) { // delete or backspace
var text = this._valueGet();
var caretPos = caret.call(this);
if (caretPos.begin == caretPos.end || (!insertMode && caretPos.begin == caretPos.end-1)) {
var pos = caretPos.begin;
do {
if (k != 46) { // backspace
pos--;
}
var chr = text.charAt(pos);
text = text.substring(0, pos) + text.substring(pos+1);
} while (pos>0 && pos<text.length && chr != placeholder && !maskOpts.match.test(chr));
} else {
var test = text.substring(0, caretPos.begin) + text.substring(caretPos.end);
if (test.search(maskOpts.match) == -1) {
text = test;
}
}
return keyboardApply.call(this, e, text, false);
}
if (k == 45) { // insert
insertMode = !insertMode;
}
return true;
}
var masksKeyPress = function(e) {
var text = this._valueGet();
e = e || window.event;
var k = e.which || e.charCode || e.keyCode, c = String.fromCharCode(k);
caretPos = caret.call(this);
text = text.substring(0, caretPos.begin) + c + text.substring(caretPos.end);
return keyboardApply.call(this, e, text, true);
}
var masksChange = function(e) {
var match = maskMatch(this._valueGet());
maskApply.call(this, match);
maskRebind.call(this);
return true;
}
var masksSetValue = function(e) {
maskInit.call(this);
e.stopImmediatePropagation();
return true;
}
var maskInit = function() {
var text;
if (this._valueGet) {
text = this._valueGet();
} else {
text = this.value;
}
var match = maskMatch(text);
while (!match && text.length>0) {
text = text.substr(0, text.length-1);
match = maskMatch(text);
}
maskApply.call(this, match, text);
maskRebind.call(this);
}
var masksPaste = function(e) {
var input = this;
setTimeout(function() {
maskInit.call(input);
}, 0);
e.stopImmediatePropagation();
return true;
}
switch (mode) {
case "isCompleted":
var res = maskMatch((this[0]._valueGet && this[0]._valueGet()) || this[0].value);
return (res && res.completed);
default:
this.each(function () {
maskInit.call(this);
});
return this;
}
}
})(jQuery);

@ -1,294 +1,294 @@
[
{ "mask": "+247-####", "cc": "AC", "name_en": "Ascension", "desc_en": "", "name_ru": "Остров Вознесения", "desc_ru": "" },
{ "mask": "+376-###-###", "cc": "AD", "name_en": "Andorra", "desc_en": "", "name_ru": "Андорра", "desc_ru": "" },
{ "mask": "+971-5#-###-####", "cc": "AE", "name_en": "United Arab Emirates", "desc_en": "mobile", "name_ru": "Объединенные Арабские Эмираты", "desc_ru": "мобильные" },
{ "mask": "+971-#-###-####", "cc": "AE", "name_en": "United Arab Emirates", "desc_en": "", "name_ru": "Объединенные Арабские Эмираты", "desc_ru": "" },
{ "mask": "+93-##-###-####", "cc": "AF", "name_en": "Afghanistan", "desc_en": "", "name_ru": "Афганистан", "desc_ru": "" },
{ "mask": "+1(268)###-####", "cc": "AG", "name_en": "Antigua & Barbuda", "desc_en": "", "name_ru": "Антигуа и Барбуда", "desc_ru": "" },
{ "mask": "+1(264)###-####", "cc": "AI", "name_en": "Anguilla", "desc_en": "", "name_ru": "Ангилья", "desc_ru": "" },
{ "mask": "+355(###)###-###", "cc": "AL", "name_en": "Albania", "desc_en": "", "name_ru": "Албания", "desc_ru": "" },
{ "mask": "+374-##-###-###", "cc": "AM", "name_en": "Armenia", "desc_en": "", "name_ru": "Армения", "desc_ru": "" },
{ "mask": "+599-###-####", "cc": "AN", "name_en": "Caribbean Netherlands", "desc_en": "", "name_ru": "Карибские Нидерланды", "desc_ru": "" },
{ "mask": "+599-###-####", "cc": "AN", "name_en": "Netherlands Antilles", "desc_en": "", "name_ru": "Нидерландские Антильские острова", "desc_ru": "" },
{ "mask": "+599-9###-####", "cc": "AN", "name_en": "Netherlands Antilles", "desc_en": "Curacao", "name_ru": "Нидерландские Антильские острова", "desc_ru": "Кюрасао" },
{ "mask": "+244(###)###-###", "cc": "AO", "name_en": "Angola", "desc_en": "", "name_ru": "Ангола", "desc_ru": "" },
{ "mask": "+672-1##-###", "cc": "AQ", "name_en": "Australian bases in Antarctica", "desc_en": "", "name_ru": "Австралийская антарктическая база", "desc_ru": "" },
{ "mask": "+54(###)###-####", "cc": "AR", "name_en": "Argentina", "desc_en": "", "name_ru": "Аргентина", "desc_ru": "" },
{ "mask": "+1(684)###-####", "cc": "AS", "name_en": "American Samoa", "desc_en": "", "name_ru": "Американское Самоа", "desc_ru": "" },
{ "mask": "+43(###)###-####", "cc": "AT", "name_en": "Austria", "desc_en": "", "name_ru": "Австрия", "desc_ru": "" },
{ "mask": "+61-#-####-####", "cc": "AU", "name_en": "Australia", "desc_en": "", "name_ru": "Австралия", "desc_ru": "" },
{ "mask": "+297-###-####", "cc": "AW", "name_en": "Aruba", "desc_en": "", "name_ru": "Аруба", "desc_ru": "" },
{ "mask": "+994-##-###-##-##", "cc": "AZ", "name_en": "Azerbaijan", "desc_en": "", "name_ru": "Азербайджан", "desc_ru": "" },
{ "mask": "+387-##-#####", "cc": "BA", "name_en": "Bosnia and Herzegovina", "desc_en": "", "name_ru": "Босния и Герцеговина", "desc_ru": "" },
{ "mask": "+387-##-####", "cc": "BA", "name_en": "Bosnia and Herzegovina", "desc_en": "", "name_ru": "Босния и Герцеговина", "desc_ru": "" },
{ "mask": "+1(246)###-####", "cc": "BB", "name_en": "Barbados", "desc_en": "", "name_ru": "Барбадос", "desc_ru": "" },
{ "mask": "+880-##-###-###", "cc": "BD", "name_en": "Bangladesh", "desc_en": "", "name_ru": "Бангладеш", "desc_ru": "" },
{ "mask": "+32(###)###-###", "cc": "BE", "name_en": "Belgium", "desc_en": "", "name_ru": "Бельгия", "desc_ru": "" },
{ "mask": "+226-##-##-####", "cc": "BF", "name_en": "Burkina Faso", "desc_en": "", "name_ru": "Буркина Фасо", "desc_ru": "" },
{ "mask": "+359(###)###-###", "cc": "BG", "name_en": "Bulgaria", "desc_en": "", "name_ru": "Болгария", "desc_ru": "" },
{ "mask": "+973-####-####", "cc": "BH", "name_en": "Bahrain", "desc_en": "", "name_ru": "Бахрейн", "desc_ru": "" },
{ "mask": "+257-##-##-####", "cc": "BI", "name_en": "Burundi", "desc_en": "", "name_ru": "Бурунди", "desc_ru": "" },
{ "mask": "+229-##-##-####", "cc": "BJ", "name_en": "Benin", "desc_en": "", "name_ru": "Бенин", "desc_ru": "" },
{ "mask": "+1(441)###-####", "cc": "BM", "name_en": "Bermuda", "desc_en": "", "name_ru": "Бермудские острова", "desc_ru": "" },
{ "mask": "+673-###-####", "cc": "BN", "name_en": "Brunei Darussalam", "desc_en": "", "name_ru": "Бруней-Даруссалам", "desc_ru": "" },
{ "mask": "+591-#-###-####", "cc": "BO", "name_en": "Bolivia", "desc_en": "", "name_ru": "Боливия", "desc_ru": "" },
{ "mask": "+55-##-####-####", "cc": "BR", "name_en": "Brazil", "desc_en": "", "name_ru": "Бразилия", "desc_ru": "" },
{ "mask": "+1(242)###-####", "cc": "BS", "name_en": "Bahamas", "desc_en": "", "name_ru": "Багамские Острова", "desc_ru": "" },
{ "mask": "+975-17-###-###", "cc": "BT", "name_en": "Bhutan", "desc_en": "", "name_ru": "Бутан", "desc_ru": "" },
{ "mask": "+975-#-###-###", "cc": "BT", "name_en": "Bhutan", "desc_en": "", "name_ru": "Бутан", "desc_ru": "" },
{ "mask": "+267-##-###-###", "cc": "BW", "name_en": "Botswana", "desc_en": "", "name_ru": "Ботсвана", "desc_ru": "" },
{ "mask": "+375(##)###-##-##", "cc": "BY", "name_en": "Belarus", "desc_en": "", "name_ru": "Беларусь (Белоруссия)", "desc_ru": "" },
{ "mask": "+501-###-####", "cc": "BZ", "name_en": "Belize", "desc_en": "", "name_ru": "Белиз", "desc_ru": "" },
{ "mask": "+243(###)###-###", "cc": "CD", "name_en": "Dem. Rep. Congo", "desc_en": "", "name_ru": "Дем. Респ. Конго (Киншаса)", "desc_ru": "" },
{ "mask": "+236-##-##-####", "cc": "CF", "name_en": "Central African Republic", "desc_en": "", "name_ru": "Центральноафриканская Республика", "desc_ru": "" },
{ "mask": "+242-##-###-####", "cc": "CG", "name_en": "Congo (Brazzaville)", "desc_en": "", "name_ru": "Конго (Браззавиль)", "desc_ru": "" },
{ "mask": "+41-##-###-####", "cc": "CH", "name_en": "Switzerland", "desc_en": "", "name_ru": "Швейцария", "desc_ru": "" },
{ "mask": "+225-##-###-###", "cc": "CI", "name_en": "Cote d’Ivoire (Ivory Coast)", "desc_en": "", "name_ru": "Кот-д’Ивуар", "desc_ru": "" },
{ "mask": "+682-##-###", "cc": "CK", "name_en": "Cook Islands", "desc_en": "", "name_ru": "Острова Кука", "desc_ru": "" },
{ "mask": "+56-#-####-####", "cc": "CL", "name_en": "Chile", "desc_en": "", "name_ru": "Чили", "desc_ru": "" },
{ "mask": "+237-####-####", "cc": "CM", "name_en": "Cameroon", "desc_en": "", "name_ru": "Камерун", "desc_ru": "" },
{ "mask": "+86(###)####-####", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" },
{ "mask": "+86(###)####-###", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" },
{ "mask": "+86-##-#####-#####", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" },
{ "mask": "+57(###)###-####", "cc": "CO", "name_en": "Colombia", "desc_en": "", "name_ru": "Колумбия", "desc_ru": "" },
{ "mask": "+506-####-####", "cc": "CR", "name_en": "Costa Rica", "desc_en": "", "name_ru": "Коста-Рика", "desc_ru": "" },
{ "mask": "+53-#-###-####", "cc": "CU", "name_en": "Cuba", "desc_en": "", "name_ru": "Куба", "desc_ru": "" },
{ "mask": "+238(###)##-##", "cc": "CV", "name_en": "Cape Verde", "desc_en": "", "name_ru": "Кабо-Верде", "desc_ru": "" },
{ "mask": "+599-###-####", "cc": "CW", "name_en": "Curacao", "desc_en": "", "name_ru": "Кюрасао", "desc_ru": "" },
{ "mask": "+357-##-###-###", "cc": "CY", "name_en": "Cyprus", "desc_en": "", "name_ru": "Кипр", "desc_ru": "" },
{ "mask": "+420(###)###-###", "cc": "CZ", "name_en": "Czech Republic", "desc_en": "", "name_ru": "Чехия", "desc_ru": "" },
{ "mask": "+49(####)###-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
{ "mask": "+49(###)###-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
{ "mask": "+49(###)##-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
{ "mask": "+49(###)##-###", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
{ "mask": "+49(###)##-##", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
{ "mask": "+49-###-###", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
{ "mask": "+253-##-##-##-##", "cc": "DJ", "name_en": "Djibouti", "desc_en": "", "name_ru": "Джибути", "desc_ru": "" },
{ "mask": "+45-##-##-##-##", "cc": "DK", "name_en": "Denmark", "desc_en": "", "name_ru": "Дания", "desc_ru": "" },
{ "mask": "+1(767)###-####", "cc": "DM", "name_en": "Dominica", "desc_en": "", "name_ru": "Доминика", "desc_ru": "" },
{ "mask": "+1(809)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" },
{ "mask": "+1(829)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" },
{ "mask": "+1(849)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" },
{ "mask": "+213-##-###-####", "cc": "DZ", "name_en": "Algeria", "desc_en": "", "name_ru": "Алжир", "desc_ru": "" },
{ "mask": "+593-##-###-####", "cc": "EC", "name_en": "Ecuador ", "desc_en": "mobile", "name_ru": "Эквадор ", "desc_ru": "мобильные" },
{ "mask": "+593-#-###-####", "cc": "EC", "name_en": "Ecuador", "desc_en": "", "name_ru": "Эквадор", "desc_ru": "" },
{ "mask": "+372-####-####", "cc": "EE", "name_en": "Estonia ", "desc_en": "mobile", "name_ru": "Эстония ", "desc_ru": "мобильные" },
{ "mask": "+372-###-####", "cc": "EE", "name_en": "Estonia", "desc_en": "", "name_ru": "Эстония", "desc_ru": "" },
{ "mask": "+20(###)###-####", "cc": "EG", "name_en": "Egypt", "desc_en": "", "name_ru": "Египет", "desc_ru": "" },
{ "mask": "+291-#-###-###", "cc": "ER", "name_en": "Eritrea", "desc_en": "", "name_ru": "Эритрея", "desc_ru": "" },
{ "mask": "+34(###)###-###", "cc": "ES", "name_en": "Spain", "desc_en": "", "name_ru": "Испания", "desc_ru": "" },
{ "mask": "+251-##-###-####", "cc": "ET", "name_en": "Ethiopia", "desc_en": "", "name_ru": "Эфиопия", "desc_ru": "" },
{ "mask": "+358(###)###-##-##", "cc": "FI", "name_en": "Finland", "desc_en": "", "name_ru": "Финляндия", "desc_ru": "" },
{ "mask": "+679-##-#####", "cc": "FJ", "name_en": "Fiji", "desc_en": "", "name_ru": "Фиджи", "desc_ru": "" },
{ "mask": "+500-#####", "cc": "FK", "name_en": "Falkland Islands", "desc_en": "", "name_ru": "Фолклендские острова", "desc_ru": "" },
{ "mask": "+691-###-####", "cc": "FM", "name_en": "F.S. Micronesia", "desc_en": "", "name_ru": "Ф.Ш. Микронезии", "desc_ru": "" },
{ "mask": "+298-###-###", "cc": "FO", "name_en": "Faroe Islands", "desc_en": "", "name_ru": "Фарерские острова", "desc_ru": "" },
{ "mask": "+262-#####-####", "cc": "FR", "name_en": "Mayotte", "desc_en": "", "name_ru": "Майотта", "desc_ru": "" },
{ "mask": "+33(###)###-###", "cc": "FR", "name_en": "France", "desc_en": "", "name_ru": "Франция", "desc_ru": "" },
{ "mask": "+508-##-####", "cc": "FR", "name_en": "St Pierre & Miquelon", "desc_en": "", "name_ru": "Сен-Пьер и Микелон", "desc_ru": "" },
{ "mask": "+590(###)###-###", "cc": "FR", "name_en": "Guadeloupe", "desc_en": "", "name_ru": "Гваделупа", "desc_ru": "" },
{ "mask": "+241-#-##-##-##", "cc": "GA", "name_en": "Gabon", "desc_en": "", "name_ru": "Габон", "desc_ru": "" },
{ "mask": "+1(473)###-####", "cc": "GD", "name_en": "Grenada", "desc_en": "", "name_ru": "Гренада", "desc_ru": "" },
{ "mask": "+995(###)###-###", "cc": "GE", "name_en": "Rep. of Georgia", "desc_en": "", "name_ru": "Грузия", "desc_ru": "" },
{ "mask": "+594-#####-####", "cc": "GF", "name_en": "Guiana (French)", "desc_en": "", "name_ru": "Фр. Гвиана", "desc_ru": "" },
{ "mask": "+233(###)###-###", "cc": "GH", "name_en": "Ghana", "desc_en": "", "name_ru": "Гана", "desc_ru": "" },
{ "mask": "+350-###-#####", "cc": "GI", "name_en": "Gibraltar", "desc_en": "", "name_ru": "Гибралтар", "desc_ru": "" },
{ "mask": "+299-##-##-##", "cc": "GL", "name_en": "Greenland", "desc_en": "", "name_ru": "Гренландия", "desc_ru": "" },
{ "mask": "+220(###)##-##", "cc": "GM", "name_en": "Gambia", "desc_en": "", "name_ru": "Гамбия", "desc_ru": "" },
{ "mask": "+224-##-###-###", "cc": "GN", "name_en": "Guinea", "desc_en": "", "name_ru": "Гвинея", "desc_ru": "" },
{ "mask": "+240-##-###-####", "cc": "GQ", "name_en": "Equatorial Guinea", "desc_en": "", "name_ru": "Экваториальная Гвинея", "desc_ru": "" },
{ "mask": "+30(###)###-####", "cc": "GR", "name_en": "Greece", "desc_en": "", "name_ru": "Греция", "desc_ru": "" },
{ "mask": "+502-#-###-####", "cc": "GT", "name_en": "Guatemala", "desc_en": "", "name_ru": "Гватемала", "desc_ru": "" },
{ "mask": "+1(671)###-####", "cc": "GU", "name_en": "Guam", "desc_en": "", "name_ru": "Гуам", "desc_ru": "" },
{ "mask": "+245-#-######", "cc": "GW", "name_en": "Guinea-Bissau", "desc_en": "", "name_ru": "Гвинея-Бисау", "desc_ru": "" },
{ "mask": "+592-###-####", "cc": "GY", "name_en": "Guyana", "desc_en": "", "name_ru": "Гайана", "desc_ru": "" },
{ "mask": "+852-####-####", "cc": "HK", "name_en": "Hong Kong", "desc_en": "", "name_ru": "Гонконг", "desc_ru": "" },
{ "mask": "+504-####-####", "cc": "HN", "name_en": "Honduras", "desc_en": "", "name_ru": "Гондурас", "desc_ru": "" },
{ "mask": "+385-##-###-###", "cc": "HR", "name_en": "Croatia", "desc_en": "", "name_ru": "Хорватия", "desc_ru": "" },
{ "mask": "+509-##-##-####", "cc": "HT", "name_en": "Haiti", "desc_en": "", "name_ru": "Гаити", "desc_ru": "" },
{ "mask": "+36(###)###-###", "cc": "HU", "name_en": "Hungary", "desc_en": "", "name_ru": "Венгрия", "desc_ru": "" },
{ "mask": "+62(8##)###-####", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" },
{ "mask": "+62-##-###-##", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" },
{ "mask": "+62-##-###-###", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" },
{ "mask": "+62-##-###-####", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" },
{ "mask": "+62(8##)###-###", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" },
{ "mask": "+62(8##)###-##-###", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" },
{ "mask": "+353(###)###-###", "cc": "IE", "name_en": "Ireland", "desc_en": "", "name_ru": "Ирландия", "desc_ru": "" },
{ "mask": "+972-5#-###-####", "cc": "IL", "name_en": "Israel ", "desc_en": "mobile", "name_ru": "Израиль ", "desc_ru": "мобильные" },
{ "mask": "+972-#-###-####", "cc": "IL", "name_en": "Israel", "desc_en": "", "name_ru": "Израиль", "desc_ru": "" },
{ "mask": "+91(####)###-###", "cc": "IN", "name_en": "India", "desc_en": "", "name_ru": "Индия", "desc_ru": "" },
{ "mask": "+246-###-####", "cc": "IO", "name_en": "Diego Garcia", "desc_en": "", "name_ru": "Диего-Гарсия", "desc_ru": "" },
{ "mask": "+964(###)###-####", "cc": "IQ", "name_en": "Iraq", "desc_en": "", "name_ru": "Ирак", "desc_ru": "" },
{ "mask": "+98(###)###-####", "cc": "IR", "name_en": "Iran", "desc_en": "", "name_ru": "Иран", "desc_ru": "" },
{ "mask": "+354-###-####", "cc": "IS", "name_en": "Iceland", "desc_en": "", "name_ru": "Исландия", "desc_ru": "" },
{ "mask": "+39(###)####-###", "cc": "IT", "name_en": "Italy", "desc_en": "", "name_ru": "Италия", "desc_ru": "" },
{ "mask": "+1(876)###-####", "cc": "JM", "name_en": "Jamaica", "desc_en": "", "name_ru": "Ямайка", "desc_ru": "" },
{ "mask": "+962-#-####-####", "cc": "JO", "name_en": "Jordan", "desc_en": "", "name_ru": "Иордания", "desc_ru": "" },
{ "mask": "+81-##-####-####", "cc": "JP", "name_en": "Japan ", "desc_en": "mobile", "name_ru": "Япония ", "desc_ru": "мобильные" },
{ "mask": "+81(###)###-###", "cc": "JP", "name_en": "Japan", "desc_en": "", "name_ru": "Япония", "desc_ru": "" },
{ "mask": "+254-###-######", "cc": "KE", "name_en": "Kenya", "desc_en": "", "name_ru": "Кения", "desc_ru": "" },
{ "mask": "+996(###)###-###", "cc": "KG", "name_en": "Kyrgyzstan", "desc_en": "", "name_ru": "Киргизия", "desc_ru": "" },
{ "mask": "+855-##-###-###", "cc": "KH", "name_en": "Cambodia", "desc_en": "", "name_ru": "Камбоджа", "desc_ru": "" },
{ "mask": "+686-##-###", "cc": "KI", "name_en": "Kiribati", "desc_en": "", "name_ru": "Кирибати", "desc_ru": "" },
{ "mask": "+269-##-#####", "cc": "KM", "name_en": "Comoros", "desc_en": "", "name_ru": "Коморы", "desc_ru": "" },
{ "mask": "+1(869)###-####", "cc": "KN", "name_en": "Saint Kitts & Nevis", "desc_en": "", "name_ru": "Сент-Китс и Невис", "desc_ru": "" },
{ "mask": "+850-191-###-####", "cc": "KP", "name_en": "DPR Korea (North) ", "desc_en": "mobile", "name_ru": "Корейская НДР ", "desc_ru": "мобильные" },
{ "mask": "+850-##-###-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
{ "mask": "+850-###-####-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
{ "mask": "+850-###-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
{ "mask": "+850-####-####", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
{ "mask": "+850-####-#############", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
{ "mask": "+82-##-###-####", "cc": "KR", "name_en": "Korea (South)", "desc_en": "", "name_ru": "Респ. Корея", "desc_ru": "" },
{ "mask": "+965-####-####", "cc": "KW", "name_en": "Kuwait", "desc_en": "", "name_ru": "Кувейт", "desc_ru": "" },
{ "mask": "+1(345)###-####", "cc": "KY", "name_en": "Cayman Islands", "desc_en": "", "name_ru": "Каймановы острова", "desc_ru": "" },
{ "mask": "+7(6##)###-##-##", "cc": "KZ", "name_en": "Kazakhstan", "desc_en": "", "name_ru": "Казахстан", "desc_ru": "" },
{ "mask": "+7(7##)###-##-##", "cc": "KZ", "name_en": "Kazakhstan", "desc_en": "", "name_ru": "Казахстан", "desc_ru": "" },
{ "mask": "+856(20##)###-###", "cc": "LA", "name_en": "Laos ", "desc_en": "mobile", "name_ru": "Лаос ", "desc_ru": "мобильные" },
{ "mask": "+856-##-###-###", "cc": "LA", "name_en": "Laos", "desc_en": "", "name_ru": "Лаос", "desc_ru": "" },
{ "mask": "+961-##-###-###", "cc": "LB", "name_en": "Lebanon ", "desc_en": "mobile", "name_ru": "Ливан ", "desc_ru": "мобильные" },
{ "mask": "+961-#-###-###", "cc": "LB", "name_en": "Lebanon", "desc_en": "", "name_ru": "Ливан", "desc_ru": "" },
{ "mask": "+1(758)###-####", "cc": "LC", "name_en": "Saint Lucia", "desc_en": "", "name_ru": "Сент-Люсия", "desc_ru": "" },
{ "mask": "+423(###)###-####", "cc": "LI", "name_en": "Liechtenstein", "desc_en": "", "name_ru": "Лихтенштейн", "desc_ru": "" },
{ "mask": "+94-##-###-####", "cc": "LK", "name_en": "Sri Lanka", "desc_en": "", "name_ru": "Шри-Ланка", "desc_ru": "" },
{ "mask": "+231-##-###-###", "cc": "LR", "name_en": "Liberia", "desc_en": "", "name_ru": "Либерия", "desc_ru": "" },
{ "mask": "+266-#-###-####", "cc": "LS", "name_en": "Lesotho", "desc_en": "", "name_ru": "Лесото", "desc_ru": "" },
{ "mask": "+370(###)##-###", "cc": "LT", "name_en": "Lithuania", "desc_en": "", "name_ru": "Литва", "desc_ru": "" },
{ "mask": "+352(###)###-###", "cc": "LU", "name_en": "Luxembourg", "desc_en": "", "name_ru": "Люксембург", "desc_ru": "" },
{ "mask": "+371-##-###-###", "cc": "LV", "name_en": "Latvia", "desc_en": "", "name_ru": "Латвия", "desc_ru": "" },
{ "mask": "+218-##-###-###", "cc": "LY", "name_en": "Libya", "desc_en": "", "name_ru": "Ливия", "desc_ru": "" },
{ "mask": "+218-21-###-####", "cc": "LY", "name_en": "Libya", "desc_en": "Tripoli", "name_ru": "Ливия", "desc_ru": "Триполи" },
{ "mask": "+212-##-####-###", "cc": "MA", "name_en": "Morocco", "desc_en": "", "name_ru": "Марокко", "desc_ru": "" },
{ "mask": "+377(###)###-###", "cc": "MC", "name_en": "Monaco", "desc_en": "", "name_ru": "Монако", "desc_ru": "" },
{ "mask": "+377-##-###-###", "cc": "MC", "name_en": "Monaco", "desc_en": "", "name_ru": "Монако", "desc_ru": "" },
{ "mask": "+373-####-####", "cc": "MD", "name_en": "Moldova", "desc_en": "", "name_ru": "Молдова", "desc_ru": "" },
{ "mask": "+382-##-###-###", "cc": "ME", "name_en": "Montenegro", "desc_en": "", "name_ru": "Черногория", "desc_ru": "" },
{ "mask": "+261-##-##-#####", "cc": "MG", "name_en": "Madagascar", "desc_en": "", "name_ru": "Мадагаскар", "desc_ru": "" },
{ "mask": "+692-###-####", "cc": "MH", "name_en": "Marshall Islands", "desc_en": "", "name_ru": "Маршалловы Острова", "desc_ru": "" },
{ "mask": "+389-##-###-###", "cc": "MK", "name_en": "Republic of Macedonia", "desc_en": "", "name_ru": "Респ. Македония", "desc_ru": "" },
{ "mask": "+223-##-##-####", "cc": "ML", "name_en": "Mali", "desc_en": "", "name_ru": "Мали", "desc_ru": "" },
{ "mask": "+95-##-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" },
{ "mask": "+95-#-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" },
{ "mask": "+95-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" },
{ "mask": "+976-##-##-####", "cc": "MN", "name_en": "Mongolia", "desc_en": "", "name_ru": "Монголия", "desc_ru": "" },
{ "mask": "+853-####-####", "cc": "MO", "name_en": "Macau", "desc_en": "", "name_ru": "Макао", "desc_ru": "" },
{ "mask": "+1(670)###-####", "cc": "MP", "name_en": "Northern Mariana Islands", "desc_en": "", "name_ru": "Северные Марианские острова Сайпан", "desc_ru": "" },
{ "mask": "+596(###)##-##-##", "cc": "MQ", "name_en": "Martinique", "desc_en": "", "name_ru": "Мартиника", "desc_ru": "" },
{ "mask": "+222-##-##-####", "cc": "MR", "name_en": "Mauritania", "desc_en": "", "name_ru": "Мавритания", "desc_ru": "" },
{ "mask": "+1(664)###-####", "cc": "MS", "name_en": "Montserrat", "desc_en": "", "name_ru": "Монтсеррат", "desc_ru": "" },
{ "mask": "+356-####-####", "cc": "MT", "name_en": "Malta", "desc_en": "", "name_ru": "Мальта", "desc_ru": "" },
{ "mask": "+230-###-####", "cc": "MU", "name_en": "Mauritius", "desc_en": "", "name_ru": "Маврикий", "desc_ru": "" },
{ "mask": "+960-###-####", "cc": "MV", "name_en": "Maldives", "desc_en": "", "name_ru": "Мальдивские острова", "desc_ru": "" },
{ "mask": "+265-1-###-###", "cc": "MW", "name_en": "Malawi", "desc_en": "Telecom Ltd", "name_ru": "Малави", "desc_ru": "Telecom Ltd" },
{ "mask": "+265-#-####-####", "cc": "MW", "name_en": "Malawi", "desc_en": "", "name_ru": "Малави", "desc_ru": "" },
{ "mask": "+52(###)###-####", "cc": "MX", "name_en": "Mexico", "desc_en": "", "name_ru": "Мексика", "desc_ru": "" },
{ "mask": "+52-##-##-####", "cc": "MX", "name_en": "Mexico", "desc_en": "", "name_ru": "Мексика", "desc_ru": "" },
{ "mask": "+60-##-###-####", "cc": "MY", "name_en": "Malaysia ", "desc_en": "mobile", "name_ru": "Малайзия ", "desc_ru": "мобильные" },
{ "mask": "+60(###)###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" },
{ "mask": "+60-##-###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" },
{ "mask": "+60-#-###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" },
{ "mask": "+258-##-###-###", "cc": "MZ", "name_en": "Mozambique", "desc_en": "", "name_ru": "Мозамбик", "desc_ru": "" },
{ "mask": "+264-##-###-####", "cc": "NA", "name_en": "Namibia", "desc_en": "", "name_ru": "Намибия", "desc_ru": "" },
{ "mask": "+687-##-####", "cc": "NC", "name_en": "New Caledonia", "desc_en": "", "name_ru": "Новая Каледония", "desc_ru": "" },
{ "mask": "+227-##-##-####", "cc": "NE", "name_en": "Niger", "desc_en": "", "name_ru": "Нигер", "desc_ru": "" },
{ "mask": "+672-3##-###", "cc": "NF", "name_en": "Norfolk Island", "desc_en": "", "name_ru": "Норфолк (остров)", "desc_ru": "" },
{ "mask": "+234(###)###-####", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" },
{ "mask": "+234-##-###-###", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" },
{ "mask": "+234-##-###-##", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" },
{ "mask": "+234(###)###-####", "cc": "NG", "name_en": "Nigeria ", "desc_en": "mobile", "name_ru": "Нигерия ", "desc_ru": "мобильные" },
{ "mask": "+505-####-####", "cc": "NI", "name_en": "Nicaragua", "desc_en": "", "name_ru": "Никарагуа", "desc_ru": "" },
{ "mask": "+31-##-###-####", "cc": "NL", "name_en": "Netherlands", "desc_en": "", "name_ru": "Нидерланды", "desc_ru": "" },
{ "mask": "+47(###)##-###", "cc": "NO", "name_en": "Norway", "desc_en": "", "name_ru": "Норвегия", "desc_ru": "" },
{ "mask": "+977-##-###-###", "cc": "NP", "name_en": "Nepal", "desc_en": "", "name_ru": "Непал", "desc_ru": "" },
{ "mask": "+674-###-####", "cc": "NR", "name_en": "Nauru", "desc_en": "", "name_ru": "Науру", "desc_ru": "" },
{ "mask": "+683-####", "cc": "NU", "name_en": "Niue", "desc_en": "", "name_ru": "Ниуэ", "desc_ru": "" },
{ "mask": "+64(###)###-###", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" },
{ "mask": "+64-##-###-###", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" },
{ "mask": "+64(###)###-####", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" },
{ "mask": "+968-##-###-###", "cc": "OM", "name_en": "Oman", "desc_en": "", "name_ru": "Оман", "desc_ru": "" },
{ "mask": "+507-###-####", "cc": "PA", "name_en": "Panama", "desc_en": "", "name_ru": "Панама", "desc_ru": "" },
{ "mask": "+51(###)###-###", "cc": "PE", "name_en": "Peru", "desc_en": "", "name_ru": "Перу", "desc_ru": "" },
{ "mask": "+689-##-##-##", "cc": "PF", "name_en": "French Polynesia", "desc_en": "", "name_ru": "Французская Полинезия (Таити)", "desc_ru": "" },
{ "mask": "+675(###)##-###", "cc": "PG", "name_en": "Papua New Guinea", "desc_en": "", "name_ru": "Папуа-Новая Гвинея", "desc_ru": "" },
{ "mask": "+63(###)###-####", "cc": "PH", "name_en": "Philippines", "desc_en": "", "name_ru": "Филиппины", "desc_ru": "" },
{ "mask": "+92(###)###-####", "cc": "PK", "name_en": "Pakistan", "desc_en": "", "name_ru": "Пакистан", "desc_ru": "" },
{ "mask": "+48(###)###-###", "cc": "PL", "name_en": "Poland", "desc_en": "", "name_ru": "Польша", "desc_ru": "" },
{ "mask": "+970-##-###-####", "cc": "PS", "name_en": "Palestine", "desc_en": "", "name_ru": "Палестина", "desc_ru": "" },
{ "mask": "+351-##-###-####", "cc": "PT", "name_en": "Portugal", "desc_en": "", "name_ru": "Португалия", "desc_ru": "" },
{ "mask": "+680-###-####", "cc": "PW", "name_en": "Palau", "desc_en": "", "name_ru": "Палау", "desc_ru": "" },
{ "mask": "+595(###)###-###", "cc": "PY", "name_en": "Paraguay", "desc_en": "", "name_ru": "Парагвай", "desc_ru": "" },
{ "mask": "+974-####-####", "cc": "QA", "name_en": "Qatar", "desc_en": "", "name_ru": "Катар", "desc_ru": "" },
{ "mask": "+262-#####-####", "cc": "RE", "name_en": "Reunion", "desc_en": "", "name_ru": "Реюньон", "desc_ru": "" },
{ "mask": "+40-##-###-####", "cc": "RO", "name_en": "Romania", "desc_en": "", "name_ru": "Румыния", "desc_ru": "" },
{ "mask": "+381-##-###-####", "cc": "RS", "name_en": "Serbia", "desc_en": "", "name_ru": "Сербия", "desc_ru": "" },
{ "mask": "+7(###)###-##-##", "cc": "RU", "name_en": "Russia", "desc_en": "", "name_ru": "Россия", "desc_ru": "" },
{ "mask": "+250(###)###-###", "cc": "RW", "name_en": "Rwanda", "desc_en": "", "name_ru": "Руанда", "desc_ru": "" },
{ "mask": "+966-5-####-####", "cc": "SA", "name_en": "Saudi Arabia ", "desc_en": "mobile", "name_ru": "Саудовская Аравия ", "desc_ru": "мобильные" },
{ "mask": "+966-#-###-####", "cc": "SA", "name_en": "Saudi Arabia", "desc_en": "", "name_ru": "Саудовская Аравия", "desc_ru": "" },
{ "mask": "+677-###-####", "cc": "SB", "name_en": "Solomon Islands ", "desc_en": "mobile", "name_ru": "Соломоновы Острова ", "desc_ru": "мобильные" },
{ "mask": "+677-#####", "cc": "SB", "name_en": "Solomon Islands", "desc_en": "", "name_ru": "Соломоновы Острова", "desc_ru": "" },
{ "mask": "+248-#-###-###", "cc": "SC", "name_en": "Seychelles", "desc_en": "", "name_ru": "Сейшелы", "desc_ru": "" },
{ "mask": "+249-##-###-####", "cc": "SD", "name_en": "Sudan", "desc_en": "", "name_ru": "Судан", "desc_ru": "" },
{ "mask": "+46-##-###-####", "cc": "SE", "name_en": "Sweden", "desc_en": "", "name_ru": "Швеция", "desc_ru": "" },
{ "mask": "+65-####-####", "cc": "SG", "name_en": "Singapore", "desc_en": "", "name_ru": "Сингапур", "desc_ru": "" },
{ "mask": "+290-####", "cc": "SH", "name_en": "Saint Helena", "desc_en": "", "name_ru": "Остров Святой Елены", "desc_ru": "" },
{ "mask": "+290-####", "cc": "SH", "name_en": "Tristan da Cunha", "desc_en": "", "name_ru": "Тристан-да-Кунья", "desc_ru": "" },
{ "mask": "+386-##-###-###", "cc": "SI", "name_en": "Slovenia", "desc_en": "", "name_ru": "Словения", "desc_ru": "" },
{ "mask": "+421(###)###-###", "cc": "SK", "name_en": "Slovakia", "desc_en": "", "name_ru": "Словакия", "desc_ru": "" },
{ "mask": "+232-##-######", "cc": "SL", "name_en": "Sierra Leone", "desc_en": "", "name_ru": "Сьерра-Леоне", "desc_ru": "" },
{ "mask": "+378-####-######", "cc": "SM", "name_en": "San Marino", "desc_en": "", "name_ru": "Сан-Марино", "desc_ru": "" },
{ "mask": "+221-##-###-####", "cc": "SN", "name_en": "Senegal", "desc_en": "", "name_ru": "Сенегал", "desc_ru": "" },
{ "mask": "+252-##-###-###", "cc": "SO", "name_en": "Somalia", "desc_en": "", "name_ru": "Сомали", "desc_ru": "" },
{ "mask": "+252-#-###-###", "cc": "SO", "name_en": "Somalia", "desc_en": "", "name_ru": "Сомали", "desc_ru": "" },
{ "mask": "+252-#-###-###", "cc": "SO", "name_en": "Somalia ", "desc_en": "mobile", "name_ru": "Сомали ", "desc_ru": "мобильные" },
{ "mask": "+597-###-####", "cc": "SR", "name_en": "Suriname ", "desc_en": "mobile", "name_ru": "Суринам ", "desc_ru": "мобильные" },
{ "mask": "+597-###-###", "cc": "SR", "name_en": "Suriname", "desc_en": "", "name_ru": "Суринам", "desc_ru": "" },
{ "mask": "+211-##-###-####", "cc": "SS", "name_en": "South Sudan", "desc_en": "", "name_ru": "Южный Судан", "desc_ru": "" },
{ "mask": "+239-##-#####", "cc": "ST", "name_en": "Sao Tome and Principe", "desc_en": "", "name_ru": "Сан-Томе и Принсипи", "desc_ru": "" },
{ "mask": "+503-##-##-####", "cc": "SV", "name_en": "El Salvador", "desc_en": "", "name_ru": "Сальвадор", "desc_ru": "" },
{ "mask": "+1(721)###-####", "cc": "SX", "name_en": "Sint Maarten", "desc_en": "", "name_ru": "Синт-Маартен", "desc_ru": "" },
{ "mask": "+963-##-####-###", "cc": "SY", "name_en": "Syrian Arab Republic", "desc_en": "", "name_ru": "Сирийская арабская республика", "desc_ru": "" },
{ "mask": "+268-##-##-####", "cc": "SZ", "name_en": "Swaziland", "desc_en": "", "name_ru": "Свазиленд", "desc_ru": "" },
{ "mask": "+1(649)###-####", "cc": "TC", "name_en": "Turks & Caicos", "desc_en": "", "name_ru": "Тёркс и Кайкос", "desc_ru": "" },
{ "mask": "+235-##-##-##-##", "cc": "TD", "name_en": "Chad", "desc_en": "", "name_ru": "Чад", "desc_ru": "" },
{ "mask": "+228-##-###-###", "cc": "TG", "name_en": "Togo", "desc_en": "", "name_ru": "Того", "desc_ru": "" },
{ "mask": "+66-##-###-####", "cc": "TH", "name_en": "Thailand ", "desc_en": "mobile", "name_ru": "Таиланд ", "desc_ru": "мобильные" },
{ "mask": "+66-##-###-###", "cc": "TH", "name_en": "Thailand", "desc_en": "", "name_ru": "Таиланд", "desc_ru": "" },
{ "mask": "+992-##-###-####", "cc": "TJ", "name_en": "Tajikistan", "desc_en": "", "name_ru": "Таджикистан", "desc_ru": "" },
{ "mask": "+690-####", "cc": "TK", "name_en": "Tokelau", "desc_en": "", "name_ru": "Токелау", "desc_ru": "" },
{ "mask": "+670-###-####", "cc": "TL", "name_en": "East Timor", "desc_en": "", "name_ru": "Восточный Тимор", "desc_ru": "" },
{ "mask": "+670-77#-#####", "cc": "TL", "name_en": "East Timor", "desc_en": "Timor Telecom", "name_ru": "Восточный Тимор", "desc_ru": "Timor Telecom" },
{ "mask": "+670-78#-#####", "cc": "TL", "name_en": "East Timor", "desc_en": "Timor Telecom", "name_ru": "Восточный Тимор", "desc_ru": "Timor Telecom" },
{ "mask": "+993-#-###-####", "cc": "TM", "name_en": "Turkmenistan", "desc_en": "", "name_ru": "Туркменистан", "desc_ru": "" },
{ "mask": "+216-##-###-###", "cc": "TN", "name_en": "Tunisia", "desc_en": "", "name_ru": "Тунис", "desc_ru": "" },
{ "mask": "+676-#####", "cc": "TO", "name_en": "Tonga", "desc_en": "", "name_ru": "Тонга", "desc_ru": "" },
{ "mask": "+90(###)###-####", "cc": "TR", "name_en": "Turkey", "desc_en": "", "name_ru": "Турция", "desc_ru": "" },
{ "mask": "+1(868)###-####", "cc": "TT", "name_en": "Trinidad & Tobago", "desc_en": "", "name_ru": "Тринидад и Тобаго", "desc_ru": "" },
{ "mask": "+688-90####", "cc": "TV", "name_en": "Tuvalu ", "desc_en": "mobile", "name_ru": "Тувалу ", "desc_ru": "мобильные" },
{ "mask": "+688-2####", "cc": "TV", "name_en": "Tuvalu", "desc_en": "", "name_ru": "Тувалу", "desc_ru": "" },
{ "mask": "+886-#-####-####", "cc": "TW", "name_en": "Taiwan", "desc_en": "", "name_ru": "Тайвань", "desc_ru": "" },
{ "mask": "+886-####-####", "cc": "TW", "name_en": "Taiwan", "desc_en": "", "name_ru": "Тайвань", "desc_ru": "" },
{ "mask": "+255-##-###-####", "cc": "TZ", "name_en": "Tanzania", "desc_en": "", "name_ru": "Танзания", "desc_ru": "" },
{ "mask": "+380(##)###-##-##", "cc": "UA", "name_en": "Ukraine", "desc_en": "", "name_ru": "Украина", "desc_ru": "" },
{ "mask": "+256(###)###-###", "cc": "UG", "name_en": "Uganda", "desc_en": "", "name_ru": "Уганда", "desc_ru": "" },
{ "mask": "+44-##-####-####", "cc": "UK", "name_en": "United Kingdom", "desc_en": "", "name_ru": "Великобритания", "desc_ru": "" },
{ "mask": "+598-#-###-##-##", "cc": "UY", "name_en": "Uruguay", "desc_en": "", "name_ru": "Уругвай", "desc_ru": "" },
{ "mask": "+998-##-###-####", "cc": "UZ", "name_en": "Uzbekistan", "desc_en": "", "name_ru": "Узбекистан", "desc_ru": "" },
{ "mask": "+39-6-698-#####", "cc": "VA", "name_en": "Vatican City", "desc_en": "", "name_ru": "Ватикан", "desc_ru": "" },
{ "mask": "+1(784)###-####", "cc": "VC", "name_en": "Saint Vincent & the Grenadines", "desc_en": "", "name_ru": "Сент-Винсент и Гренадины", "desc_ru": "" },
{ "mask": "+58(###)###-####", "cc": "VE", "name_en": "Venezuela", "desc_en": "", "name_ru": "Венесуэла", "desc_ru": "" },
{ "mask": "+1(284)###-####", "cc": "VG", "name_en": "British Virgin Islands", "desc_en": "", "name_ru": "Британские Виргинские острова", "desc_ru": "" },
{ "mask": "+1(340)###-####", "cc": "VI", "name_en": "US Virgin Islands", "desc_en": "", "name_ru": "Американские Виргинские острова", "desc_ru": "" },
{ "mask": "+84-##-####-###", "cc": "VN", "name_en": "Vietnam", "desc_en": "", "name_ru": "Вьетнам", "desc_ru": "" },
{ "mask": "+84(###)####-###", "cc": "VN", "name_en": "Vietnam", "desc_en": "", "name_ru": "Вьетнам", "desc_ru": "" },
{ "mask": "+678-##-#####", "cc": "VU", "name_en": "Vanuatu ", "desc_en": "mobile", "name_ru": "Вануату ", "desc_ru": "мобильные" },
{ "mask": "+678-#####", "cc": "VU", "name_en": "Vanuatu", "desc_en": "", "name_ru": "Вануату", "desc_ru": "" },
{ "mask": "+681-##-####", "cc": "WF", "name_en": "Wallis and Futuna", "desc_en": "", "name_ru": "Уоллис и Футуна", "desc_ru": "" },
{ "mask": "+685-##-####", "cc": "WS", "name_en": "Samoa", "desc_en": "", "name_ru": "Самоа", "desc_ru": "" },
{ "mask": "+967-###-###-###", "cc": "YE", "name_en": "Yemen ", "desc_en": "mobile", "name_ru": "Йемен ", "desc_ru": "мобильные" },
{ "mask": "+967-#-###-###", "cc": "YE", "name_en": "Yemen", "desc_en": "", "name_ru": "Йемен", "desc_ru": "" },
{ "mask": "+967-##-###-###", "cc": "YE", "name_en": "Yemen", "desc_en": "", "name_ru": "Йемен", "desc_ru": "" },
{ "mask": "+27-##-###-####", "cc": "ZA", "name_en": "South Africa", "desc_en": "", "name_ru": "Южно-Африканская Респ.", "desc_ru": "" },
{ "mask": "+260-##-###-####", "cc": "ZM", "name_en": "Zambia", "desc_en": "", "name_ru": "Замбия", "desc_ru": "" },
{ "mask": "+263-#-######", "cc": "ZW", "name_en": "Zimbabwe", "desc_en": "", "name_ru": "Зимбабве", "desc_ru": "" },
{ "mask": "+1(###)###-####", "cc": ["US", "CA"], "name_en": "USA and Canada", "desc_en": "", "name_ru": "США и Канада", "desc_ru": "" }
]
[
{ "mask": "+247-####", "cc": "AC", "name_en": "Ascension", "desc_en": "", "name_ru": "Остров Вознесения", "desc_ru": "" },
{ "mask": "+376-###-###", "cc": "AD", "name_en": "Andorra", "desc_en": "", "name_ru": "Андорра", "desc_ru": "" },
{ "mask": "+971-5#-###-####", "cc": "AE", "name_en": "United Arab Emirates", "desc_en": "mobile", "name_ru": "Объединенные Арабские Эмираты", "desc_ru": "мобильные" },
{ "mask": "+971-#-###-####", "cc": "AE", "name_en": "United Arab Emirates", "desc_en": "", "name_ru": "Объединенные Арабские Эмираты", "desc_ru": "" },
{ "mask": "+93-##-###-####", "cc": "AF", "name_en": "Afghanistan", "desc_en": "", "name_ru": "Афганистан", "desc_ru": "" },
{ "mask": "+1(268)###-####", "cc": "AG", "name_en": "Antigua & Barbuda", "desc_en": "", "name_ru": "Антигуа и Барбуда", "desc_ru": "" },
{ "mask": "+1(264)###-####", "cc": "AI", "name_en": "Anguilla", "desc_en": "", "name_ru": "Ангилья", "desc_ru": "" },
{ "mask": "+355(###)###-###", "cc": "AL", "name_en": "Albania", "desc_en": "", "name_ru": "Албания", "desc_ru": "" },
{ "mask": "+374-##-###-###", "cc": "AM", "name_en": "Armenia", "desc_en": "", "name_ru": "Армения", "desc_ru": "" },
{ "mask": "+599-###-####", "cc": "AN", "name_en": "Caribbean Netherlands", "desc_en": "", "name_ru": "Карибские Нидерланды", "desc_ru": "" },
{ "mask": "+599-###-####", "cc": "AN", "name_en": "Netherlands Antilles", "desc_en": "", "name_ru": "Нидерландские Антильские острова", "desc_ru": "" },
{ "mask": "+599-9###-####", "cc": "AN", "name_en": "Netherlands Antilles", "desc_en": "Curacao", "name_ru": "Нидерландские Антильские острова", "desc_ru": "Кюрасао" },
{ "mask": "+244(###)###-###", "cc": "AO", "name_en": "Angola", "desc_en": "", "name_ru": "Ангола", "desc_ru": "" },
{ "mask": "+672-1##-###", "cc": "AQ", "name_en": "Australian bases in Antarctica", "desc_en": "", "name_ru": "Австралийская антарктическая база", "desc_ru": "" },
{ "mask": "+54(###)###-####", "cc": "AR", "name_en": "Argentina", "desc_en": "", "name_ru": "Аргентина", "desc_ru": "" },
{ "mask": "+1(684)###-####", "cc": "AS", "name_en": "American Samoa", "desc_en": "", "name_ru": "Американское Самоа", "desc_ru": "" },
{ "mask": "+43(###)###-####", "cc": "AT", "name_en": "Austria", "desc_en": "", "name_ru": "Австрия", "desc_ru": "" },
{ "mask": "+61-#-####-####", "cc": "AU", "name_en": "Australia", "desc_en": "", "name_ru": "Австралия", "desc_ru": "" },
{ "mask": "+297-###-####", "cc": "AW", "name_en": "Aruba", "desc_en": "", "name_ru": "Аруба", "desc_ru": "" },
{ "mask": "+994-##-###-##-##", "cc": "AZ", "name_en": "Azerbaijan", "desc_en": "", "name_ru": "Азербайджан", "desc_ru": "" },
{ "mask": "+387-##-#####", "cc": "BA", "name_en": "Bosnia and Herzegovina", "desc_en": "", "name_ru": "Босния и Герцеговина", "desc_ru": "" },
{ "mask": "+387-##-####", "cc": "BA", "name_en": "Bosnia and Herzegovina", "desc_en": "", "name_ru": "Босния и Герцеговина", "desc_ru": "" },
{ "mask": "+1(246)###-####", "cc": "BB", "name_en": "Barbados", "desc_en": "", "name_ru": "Барбадос", "desc_ru": "" },
{ "mask": "+880-##-###-###", "cc": "BD", "name_en": "Bangladesh", "desc_en": "", "name_ru": "Бангладеш", "desc_ru": "" },
{ "mask": "+32(###)###-###", "cc": "BE", "name_en": "Belgium", "desc_en": "", "name_ru": "Бельгия", "desc_ru": "" },
{ "mask": "+226-##-##-####", "cc": "BF", "name_en": "Burkina Faso", "desc_en": "", "name_ru": "Буркина Фасо", "desc_ru": "" },
{ "mask": "+359(###)###-###", "cc": "BG", "name_en": "Bulgaria", "desc_en": "", "name_ru": "Болгария", "desc_ru": "" },
{ "mask": "+973-####-####", "cc": "BH", "name_en": "Bahrain", "desc_en": "", "name_ru": "Бахрейн", "desc_ru": "" },
{ "mask": "+257-##-##-####", "cc": "BI", "name_en": "Burundi", "desc_en": "", "name_ru": "Бурунди", "desc_ru": "" },
{ "mask": "+229-##-##-####", "cc": "BJ", "name_en": "Benin", "desc_en": "", "name_ru": "Бенин", "desc_ru": "" },
{ "mask": "+1(441)###-####", "cc": "BM", "name_en": "Bermuda", "desc_en": "", "name_ru": "Бермудские острова", "desc_ru": "" },
{ "mask": "+673-###-####", "cc": "BN", "name_en": "Brunei Darussalam", "desc_en": "", "name_ru": "Бруней-Даруссалам", "desc_ru": "" },
{ "mask": "+591-#-###-####", "cc": "BO", "name_en": "Bolivia", "desc_en": "", "name_ru": "Боливия", "desc_ru": "" },
{ "mask": "+55-##-####-####", "cc": "BR", "name_en": "Brazil", "desc_en": "", "name_ru": "Бразилия", "desc_ru": "" },
{ "mask": "+1(242)###-####", "cc": "BS", "name_en": "Bahamas", "desc_en": "", "name_ru": "Багамские Острова", "desc_ru": "" },
{ "mask": "+975-17-###-###", "cc": "BT", "name_en": "Bhutan", "desc_en": "", "name_ru": "Бутан", "desc_ru": "" },
{ "mask": "+975-#-###-###", "cc": "BT", "name_en": "Bhutan", "desc_en": "", "name_ru": "Бутан", "desc_ru": "" },
{ "mask": "+267-##-###-###", "cc": "BW", "name_en": "Botswana", "desc_en": "", "name_ru": "Ботсвана", "desc_ru": "" },
{ "mask": "+375(##)###-##-##", "cc": "BY", "name_en": "Belarus", "desc_en": "", "name_ru": "Беларусь (Белоруссия)", "desc_ru": "" },
{ "mask": "+501-###-####", "cc": "BZ", "name_en": "Belize", "desc_en": "", "name_ru": "Белиз", "desc_ru": "" },
{ "mask": "+243(###)###-###", "cc": "CD", "name_en": "Dem. Rep. Congo", "desc_en": "", "name_ru": "Дем. Респ. Конго (Киншаса)", "desc_ru": "" },
{ "mask": "+236-##-##-####", "cc": "CF", "name_en": "Central African Republic", "desc_en": "", "name_ru": "Центральноафриканская Республика", "desc_ru": "" },
{ "mask": "+242-##-###-####", "cc": "CG", "name_en": "Congo (Brazzaville)", "desc_en": "", "name_ru": "Конго (Браззавиль)", "desc_ru": "" },
{ "mask": "+41-##-###-####", "cc": "CH", "name_en": "Switzerland", "desc_en": "", "name_ru": "Швейцария", "desc_ru": "" },
{ "mask": "+225-##-###-###", "cc": "CI", "name_en": "Cote d’Ivoire (Ivory Coast)", "desc_en": "", "name_ru": "Кот-д’Ивуар", "desc_ru": "" },
{ "mask": "+682-##-###", "cc": "CK", "name_en": "Cook Islands", "desc_en": "", "name_ru": "Острова Кука", "desc_ru": "" },
{ "mask": "+56-#-####-####", "cc": "CL", "name_en": "Chile", "desc_en": "", "name_ru": "Чили", "desc_ru": "" },
{ "mask": "+237-####-####", "cc": "CM", "name_en": "Cameroon", "desc_en": "", "name_ru": "Камерун", "desc_ru": "" },
{ "mask": "+86(###)####-####", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" },
{ "mask": "+86(###)####-###", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" },
{ "mask": "+86-##-#####-#####", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" },
{ "mask": "+57(###)###-####", "cc": "CO", "name_en": "Colombia", "desc_en": "", "name_ru": "Колумбия", "desc_ru": "" },
{ "mask": "+506-####-####", "cc": "CR", "name_en": "Costa Rica", "desc_en": "", "name_ru": "Коста-Рика", "desc_ru": "" },
{ "mask": "+53-#-###-####", "cc": "CU", "name_en": "Cuba", "desc_en": "", "name_ru": "Куба", "desc_ru": "" },
{ "mask": "+238(###)##-##", "cc": "CV", "name_en": "Cape Verde", "desc_en": "", "name_ru": "Кабо-Верде", "desc_ru": "" },
{ "mask": "+599-###-####", "cc": "CW", "name_en": "Curacao", "desc_en": "", "name_ru": "Кюрасао", "desc_ru": "" },
{ "mask": "+357-##-###-###", "cc": "CY", "name_en": "Cyprus", "desc_en": "", "name_ru": "Кипр", "desc_ru": "" },
{ "mask": "+420(###)###-###", "cc": "CZ", "name_en": "Czech Republic", "desc_en": "", "name_ru": "Чехия", "desc_ru": "" },
{ "mask": "+49(####)###-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
{ "mask": "+49(###)###-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
{ "mask": "+49(###)##-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
{ "mask": "+49(###)##-###", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
{ "mask": "+49(###)##-##", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
{ "mask": "+49-###-###", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" },
{ "mask": "+253-##-##-##-##", "cc": "DJ", "name_en": "Djibouti", "desc_en": "", "name_ru": "Джибути", "desc_ru": "" },
{ "mask": "+45-##-##-##-##", "cc": "DK", "name_en": "Denmark", "desc_en": "", "name_ru": "Дания", "desc_ru": "" },
{ "mask": "+1(767)###-####", "cc": "DM", "name_en": "Dominica", "desc_en": "", "name_ru": "Доминика", "desc_ru": "" },
{ "mask": "+1(809)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" },
{ "mask": "+1(829)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" },
{ "mask": "+1(849)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" },
{ "mask": "+213-##-###-####", "cc": "DZ", "name_en": "Algeria", "desc_en": "", "name_ru": "Алжир", "desc_ru": "" },
{ "mask": "+593-##-###-####", "cc": "EC", "name_en": "Ecuador ", "desc_en": "mobile", "name_ru": "Эквадор ", "desc_ru": "мобильные" },
{ "mask": "+593-#-###-####", "cc": "EC", "name_en": "Ecuador", "desc_en": "", "name_ru": "Эквадор", "desc_ru": "" },
{ "mask": "+372-####-####", "cc": "EE", "name_en": "Estonia ", "desc_en": "mobile", "name_ru": "Эстония ", "desc_ru": "мобильные" },
{ "mask": "+372-###-####", "cc": "EE", "name_en": "Estonia", "desc_en": "", "name_ru": "Эстония", "desc_ru": "" },
{ "mask": "+20(###)###-####", "cc": "EG", "name_en": "Egypt", "desc_en": "", "name_ru": "Египет", "desc_ru": "" },
{ "mask": "+291-#-###-###", "cc": "ER", "name_en": "Eritrea", "desc_en": "", "name_ru": "Эритрея", "desc_ru": "" },
{ "mask": "+34(###)###-###", "cc": "ES", "name_en": "Spain", "desc_en": "", "name_ru": "Испания", "desc_ru": "" },
{ "mask": "+251-##-###-####", "cc": "ET", "name_en": "Ethiopia", "desc_en": "", "name_ru": "Эфиопия", "desc_ru": "" },
{ "mask": "+358(###)###-##-##", "cc": "FI", "name_en": "Finland", "desc_en": "", "name_ru": "Финляндия", "desc_ru": "" },
{ "mask": "+679-##-#####", "cc": "FJ", "name_en": "Fiji", "desc_en": "", "name_ru": "Фиджи", "desc_ru": "" },
{ "mask": "+500-#####", "cc": "FK", "name_en": "Falkland Islands", "desc_en": "", "name_ru": "Фолклендские острова", "desc_ru": "" },
{ "mask": "+691-###-####", "cc": "FM", "name_en": "F.S. Micronesia", "desc_en": "", "name_ru": "Ф.Ш. Микронезии", "desc_ru": "" },
{ "mask": "+298-###-###", "cc": "FO", "name_en": "Faroe Islands", "desc_en": "", "name_ru": "Фарерские острова", "desc_ru": "" },
{ "mask": "+262-#####-####", "cc": "FR", "name_en": "Mayotte", "desc_en": "", "name_ru": "Майотта", "desc_ru": "" },
{ "mask": "+33(###)###-###", "cc": "FR", "name_en": "France", "desc_en": "", "name_ru": "Франция", "desc_ru": "" },
{ "mask": "+508-##-####", "cc": "FR", "name_en": "St Pierre & Miquelon", "desc_en": "", "name_ru": "Сен-Пьер и Микелон", "desc_ru": "" },
{ "mask": "+590(###)###-###", "cc": "FR", "name_en": "Guadeloupe", "desc_en": "", "name_ru": "Гваделупа", "desc_ru": "" },
{ "mask": "+241-#-##-##-##", "cc": "GA", "name_en": "Gabon", "desc_en": "", "name_ru": "Габон", "desc_ru": "" },
{ "mask": "+1(473)###-####", "cc": "GD", "name_en": "Grenada", "desc_en": "", "name_ru": "Гренада", "desc_ru": "" },
{ "mask": "+995(###)###-###", "cc": "GE", "name_en": "Rep. of Georgia", "desc_en": "", "name_ru": "Грузия", "desc_ru": "" },
{ "mask": "+594-#####-####", "cc": "GF", "name_en": "Guiana (French)", "desc_en": "", "name_ru": "Фр. Гвиана", "desc_ru": "" },
{ "mask": "+233(###)###-###", "cc": "GH", "name_en": "Ghana", "desc_en": "", "name_ru": "Гана", "desc_ru": "" },
{ "mask": "+350-###-#####", "cc": "GI", "name_en": "Gibraltar", "desc_en": "", "name_ru": "Гибралтар", "desc_ru": "" },
{ "mask": "+299-##-##-##", "cc": "GL", "name_en": "Greenland", "desc_en": "", "name_ru": "Гренландия", "desc_ru": "" },
{ "mask": "+220(###)##-##", "cc": "GM", "name_en": "Gambia", "desc_en": "", "name_ru": "Гамбия", "desc_ru": "" },
{ "mask": "+224-##-###-###", "cc": "GN", "name_en": "Guinea", "desc_en": "", "name_ru": "Гвинея", "desc_ru": "" },
{ "mask": "+240-##-###-####", "cc": "GQ", "name_en": "Equatorial Guinea", "desc_en": "", "name_ru": "Экваториальная Гвинея", "desc_ru": "" },
{ "mask": "+30(###)###-####", "cc": "GR", "name_en": "Greece", "desc_en": "", "name_ru": "Греция", "desc_ru": "" },
{ "mask": "+502-#-###-####", "cc": "GT", "name_en": "Guatemala", "desc_en": "", "name_ru": "Гватемала", "desc_ru": "" },
{ "mask": "+1(671)###-####", "cc": "GU", "name_en": "Guam", "desc_en": "", "name_ru": "Гуам", "desc_ru": "" },
{ "mask": "+245-#-######", "cc": "GW", "name_en": "Guinea-Bissau", "desc_en": "", "name_ru": "Гвинея-Бисау", "desc_ru": "" },
{ "mask": "+592-###-####", "cc": "GY", "name_en": "Guyana", "desc_en": "", "name_ru": "Гайана", "desc_ru": "" },
{ "mask": "+852-####-####", "cc": "HK", "name_en": "Hong Kong", "desc_en": "", "name_ru": "Гонконг", "desc_ru": "" },
{ "mask": "+504-####-####", "cc": "HN", "name_en": "Honduras", "desc_en": "", "name_ru": "Гондурас", "desc_ru": "" },
{ "mask": "+385-##-###-###", "cc": "HR", "name_en": "Croatia", "desc_en": "", "name_ru": "Хорватия", "desc_ru": "" },
{ "mask": "+509-##-##-####", "cc": "HT", "name_en": "Haiti", "desc_en": "", "name_ru": "Гаити", "desc_ru": "" },
{ "mask": "+36(###)###-###", "cc": "HU", "name_en": "Hungary", "desc_en": "", "name_ru": "Венгрия", "desc_ru": "" },
{ "mask": "+62(8##)###-####", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" },
{ "mask": "+62-##-###-##", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" },
{ "mask": "+62-##-###-###", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" },
{ "mask": "+62-##-###-####", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" },
{ "mask": "+62(8##)###-###", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" },
{ "mask": "+62(8##)###-##-###", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" },
{ "mask": "+353(###)###-###", "cc": "IE", "name_en": "Ireland", "desc_en": "", "name_ru": "Ирландия", "desc_ru": "" },
{ "mask": "+972-5#-###-####", "cc": "IL", "name_en": "Israel ", "desc_en": "mobile", "name_ru": "Израиль ", "desc_ru": "мобильные" },
{ "mask": "+972-#-###-####", "cc": "IL", "name_en": "Israel", "desc_en": "", "name_ru": "Израиль", "desc_ru": "" },
{ "mask": "+91(####)###-###", "cc": "IN", "name_en": "India", "desc_en": "", "name_ru": "Индия", "desc_ru": "" },
{ "mask": "+246-###-####", "cc": "IO", "name_en": "Diego Garcia", "desc_en": "", "name_ru": "Диего-Гарсия", "desc_ru": "" },
{ "mask": "+964(###)###-####", "cc": "IQ", "name_en": "Iraq", "desc_en": "", "name_ru": "Ирак", "desc_ru": "" },
{ "mask": "+98(###)###-####", "cc": "IR", "name_en": "Iran", "desc_en": "", "name_ru": "Иран", "desc_ru": "" },
{ "mask": "+354-###-####", "cc": "IS", "name_en": "Iceland", "desc_en": "", "name_ru": "Исландия", "desc_ru": "" },
{ "mask": "+39(###)####-###", "cc": "IT", "name_en": "Italy", "desc_en": "", "name_ru": "Италия", "desc_ru": "" },
{ "mask": "+1(876)###-####", "cc": "JM", "name_en": "Jamaica", "desc_en": "", "name_ru": "Ямайка", "desc_ru": "" },
{ "mask": "+962-#-####-####", "cc": "JO", "name_en": "Jordan", "desc_en": "", "name_ru": "Иордания", "desc_ru": "" },
{ "mask": "+81-##-####-####", "cc": "JP", "name_en": "Japan ", "desc_en": "mobile", "name_ru": "Япония ", "desc_ru": "мобильные" },
{ "mask": "+81(###)###-###", "cc": "JP", "name_en": "Japan", "desc_en": "", "name_ru": "Япония", "desc_ru": "" },
{ "mask": "+254-###-######", "cc": "KE", "name_en": "Kenya", "desc_en": "", "name_ru": "Кения", "desc_ru": "" },
{ "mask": "+996(###)###-###", "cc": "KG", "name_en": "Kyrgyzstan", "desc_en": "", "name_ru": "Киргизия", "desc_ru": "" },
{ "mask": "+855-##-###-###", "cc": "KH", "name_en": "Cambodia", "desc_en": "", "name_ru": "Камбоджа", "desc_ru": "" },
{ "mask": "+686-##-###", "cc": "KI", "name_en": "Kiribati", "desc_en": "", "name_ru": "Кирибати", "desc_ru": "" },
{ "mask": "+269-##-#####", "cc": "KM", "name_en": "Comoros", "desc_en": "", "name_ru": "Коморы", "desc_ru": "" },
{ "mask": "+1(869)###-####", "cc": "KN", "name_en": "Saint Kitts & Nevis", "desc_en": "", "name_ru": "Сент-Китс и Невис", "desc_ru": "" },
{ "mask": "+850-191-###-####", "cc": "KP", "name_en": "DPR Korea (North) ", "desc_en": "mobile", "name_ru": "Корейская НДР ", "desc_ru": "мобильные" },
{ "mask": "+850-##-###-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
{ "mask": "+850-###-####-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
{ "mask": "+850-###-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
{ "mask": "+850-####-####", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
{ "mask": "+850-####-#############", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" },
{ "mask": "+82-##-###-####", "cc": "KR", "name_en": "Korea (South)", "desc_en": "", "name_ru": "Респ. Корея", "desc_ru": "" },
{ "mask": "+965-####-####", "cc": "KW", "name_en": "Kuwait", "desc_en": "", "name_ru": "Кувейт", "desc_ru": "" },
{ "mask": "+1(345)###-####", "cc": "KY", "name_en": "Cayman Islands", "desc_en": "", "name_ru": "Каймановы острова", "desc_ru": "" },
{ "mask": "+7(6##)###-##-##", "cc": "KZ", "name_en": "Kazakhstan", "desc_en": "", "name_ru": "Казахстан", "desc_ru": "" },
{ "mask": "+7(7##)###-##-##", "cc": "KZ", "name_en": "Kazakhstan", "desc_en": "", "name_ru": "Казахстан", "desc_ru": "" },
{ "mask": "+856(20##)###-###", "cc": "LA", "name_en": "Laos ", "desc_en": "mobile", "name_ru": "Лаос ", "desc_ru": "мобильные" },
{ "mask": "+856-##-###-###", "cc": "LA", "name_en": "Laos", "desc_en": "", "name_ru": "Лаос", "desc_ru": "" },
{ "mask": "+961-##-###-###", "cc": "LB", "name_en": "Lebanon ", "desc_en": "mobile", "name_ru": "Ливан ", "desc_ru": "мобильные" },
{ "mask": "+961-#-###-###", "cc": "LB", "name_en": "Lebanon", "desc_en": "", "name_ru": "Ливан", "desc_ru": "" },
{ "mask": "+1(758)###-####", "cc": "LC", "name_en": "Saint Lucia", "desc_en": "", "name_ru": "Сент-Люсия", "desc_ru": "" },
{ "mask": "+423(###)###-####", "cc": "LI", "name_en": "Liechtenstein", "desc_en": "", "name_ru": "Лихтенштейн", "desc_ru": "" },
{ "mask": "+94-##-###-####", "cc": "LK", "name_en": "Sri Lanka", "desc_en": "", "name_ru": "Шри-Ланка", "desc_ru": "" },
{ "mask": "+231-##-###-###", "cc": "LR", "name_en": "Liberia", "desc_en": "", "name_ru": "Либерия", "desc_ru": "" },
{ "mask": "+266-#-###-####", "cc": "LS", "name_en": "Lesotho", "desc_en": "", "name_ru": "Лесото", "desc_ru": "" },
{ "mask": "+370(###)##-###", "cc": "LT", "name_en": "Lithuania", "desc_en": "", "name_ru": "Литва", "desc_ru": "" },
{ "mask": "+352(###)###-###", "cc": "LU", "name_en": "Luxembourg", "desc_en": "", "name_ru": "Люксембург", "desc_ru": "" },
{ "mask": "+371-##-###-###", "cc": "LV", "name_en": "Latvia", "desc_en": "", "name_ru": "Латвия", "desc_ru": "" },
{ "mask": "+218-##-###-###", "cc": "LY", "name_en": "Libya", "desc_en": "", "name_ru": "Ливия", "desc_ru": "" },
{ "mask": "+218-21-###-####", "cc": "LY", "name_en": "Libya", "desc_en": "Tripoli", "name_ru": "Ливия", "desc_ru": "Триполи" },
{ "mask": "+212-##-####-###", "cc": "MA", "name_en": "Morocco", "desc_en": "", "name_ru": "Марокко", "desc_ru": "" },
{ "mask": "+377(###)###-###", "cc": "MC", "name_en": "Monaco", "desc_en": "", "name_ru": "Монако", "desc_ru": "" },
{ "mask": "+377-##-###-###", "cc": "MC", "name_en": "Monaco", "desc_en": "", "name_ru": "Монако", "desc_ru": "" },
{ "mask": "+373-####-####", "cc": "MD", "name_en": "Moldova", "desc_en": "", "name_ru": "Молдова", "desc_ru": "" },
{ "mask": "+382-##-###-###", "cc": "ME", "name_en": "Montenegro", "desc_en": "", "name_ru": "Черногория", "desc_ru": "" },
{ "mask": "+261-##-##-#####", "cc": "MG", "name_en": "Madagascar", "desc_en": "", "name_ru": "Мадагаскар", "desc_ru": "" },
{ "mask": "+692-###-####", "cc": "MH", "name_en": "Marshall Islands", "desc_en": "", "name_ru": "Маршалловы Острова", "desc_ru": "" },
{ "mask": "+389-##-###-###", "cc": "MK", "name_en": "Republic of Macedonia", "desc_en": "", "name_ru": "Респ. Македония", "desc_ru": "" },
{ "mask": "+223-##-##-####", "cc": "ML", "name_en": "Mali", "desc_en": "", "name_ru": "Мали", "desc_ru": "" },
{ "mask": "+95-##-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" },
{ "mask": "+95-#-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" },
{ "mask": "+95-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" },
{ "mask": "+976-##-##-####", "cc": "MN", "name_en": "Mongolia", "desc_en": "", "name_ru": "Монголия", "desc_ru": "" },
{ "mask": "+853-####-####", "cc": "MO", "name_en": "Macau", "desc_en": "", "name_ru": "Макао", "desc_ru": "" },
{ "mask": "+1(670)###-####", "cc": "MP", "name_en": "Northern Mariana Islands", "desc_en": "", "name_ru": "Северные Марианские острова Сайпан", "desc_ru": "" },
{ "mask": "+596(###)##-##-##", "cc": "MQ", "name_en": "Martinique", "desc_en": "", "name_ru": "Мартиника", "desc_ru": "" },
{ "mask": "+222-##-##-####", "cc": "MR", "name_en": "Mauritania", "desc_en": "", "name_ru": "Мавритания", "desc_ru": "" },
{ "mask": "+1(664)###-####", "cc": "MS", "name_en": "Montserrat", "desc_en": "", "name_ru": "Монтсеррат", "desc_ru": "" },
{ "mask": "+356-####-####", "cc": "MT", "name_en": "Malta", "desc_en": "", "name_ru": "Мальта", "desc_ru": "" },
{ "mask": "+230-###-####", "cc": "MU", "name_en": "Mauritius", "desc_en": "", "name_ru": "Маврикий", "desc_ru": "" },
{ "mask": "+960-###-####", "cc": "MV", "name_en": "Maldives", "desc_en": "", "name_ru": "Мальдивские острова", "desc_ru": "" },
{ "mask": "+265-1-###-###", "cc": "MW", "name_en": "Malawi", "desc_en": "Telecom Ltd", "name_ru": "Малави", "desc_ru": "Telecom Ltd" },
{ "mask": "+265-#-####-####", "cc": "MW", "name_en": "Malawi", "desc_en": "", "name_ru": "Малави", "desc_ru": "" },
{ "mask": "+52(###)###-####", "cc": "MX", "name_en": "Mexico", "desc_en": "", "name_ru": "Мексика", "desc_ru": "" },
{ "mask": "+52-##-##-####", "cc": "MX", "name_en": "Mexico", "desc_en": "", "name_ru": "Мексика", "desc_ru": "" },
{ "mask": "+60-##-###-####", "cc": "MY", "name_en": "Malaysia ", "desc_en": "mobile", "name_ru": "Малайзия ", "desc_ru": "мобильные" },
{ "mask": "+60(###)###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" },
{ "mask": "+60-##-###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" },
{ "mask": "+60-#-###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" },
{ "mask": "+258-##-###-###", "cc": "MZ", "name_en": "Mozambique", "desc_en": "", "name_ru": "Мозамбик", "desc_ru": "" },
{ "mask": "+264-##-###-####", "cc": "NA", "name_en": "Namibia", "desc_en": "", "name_ru": "Намибия", "desc_ru": "" },
{ "mask": "+687-##-####", "cc": "NC", "name_en": "New Caledonia", "desc_en": "", "name_ru": "Новая Каледония", "desc_ru": "" },
{ "mask": "+227-##-##-####", "cc": "NE", "name_en": "Niger", "desc_en": "", "name_ru": "Нигер", "desc_ru": "" },
{ "mask": "+672-3##-###", "cc": "NF", "name_en": "Norfolk Island", "desc_en": "", "name_ru": "Норфолк (остров)", "desc_ru": "" },
{ "mask": "+234(###)###-####", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" },
{ "mask": "+234-##-###-###", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" },
{ "mask": "+234-##-###-##", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" },
{ "mask": "+234(###)###-####", "cc": "NG", "name_en": "Nigeria ", "desc_en": "mobile", "name_ru": "Нигерия ", "desc_ru": "мобильные" },
{ "mask": "+505-####-####", "cc": "NI", "name_en": "Nicaragua", "desc_en": "", "name_ru": "Никарагуа", "desc_ru": "" },
{ "mask": "+31-##-###-####", "cc": "NL", "name_en": "Netherlands", "desc_en": "", "name_ru": "Нидерланды", "desc_ru": "" },
{ "mask": "+47(###)##-###", "cc": "NO", "name_en": "Norway", "desc_en": "", "name_ru": "Норвегия", "desc_ru": "" },
{ "mask": "+977-##-###-###", "cc": "NP", "name_en": "Nepal", "desc_en": "", "name_ru": "Непал", "desc_ru": "" },
{ "mask": "+674-###-####", "cc": "NR", "name_en": "Nauru", "desc_en": "", "name_ru": "Науру", "desc_ru": "" },
{ "mask": "+683-####", "cc": "NU", "name_en": "Niue", "desc_en": "", "name_ru": "Ниуэ", "desc_ru": "" },
{ "mask": "+64(###)###-###", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" },
{ "mask": "+64-##-###-###", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" },
{ "mask": "+64(###)###-####", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" },
{ "mask": "+968-##-###-###", "cc": "OM", "name_en": "Oman", "desc_en": "", "name_ru": "Оман", "desc_ru": "" },
{ "mask": "+507-###-####", "cc": "PA", "name_en": "Panama", "desc_en": "", "name_ru": "Панама", "desc_ru": "" },
{ "mask": "+51(###)###-###", "cc": "PE", "name_en": "Peru", "desc_en": "", "name_ru": "Перу", "desc_ru": "" },
{ "mask": "+689-##-##-##", "cc": "PF", "name_en": "French Polynesia", "desc_en": "", "name_ru": "Французская Полинезия (Таити)", "desc_ru": "" },
{ "mask": "+675(###)##-###", "cc": "PG", "name_en": "Papua New Guinea", "desc_en": "", "name_ru": "Папуа-Новая Гвинея", "desc_ru": "" },
{ "mask": "+63(###)###-####", "cc": "PH", "name_en": "Philippines", "desc_en": "", "name_ru": "Филиппины", "desc_ru": "" },
{ "mask": "+92(###)###-####", "cc": "PK", "name_en": "Pakistan", "desc_en": "", "name_ru": "Пакистан", "desc_ru": "" },
{ "mask": "+48(###)###-###", "cc": "PL", "name_en": "Poland", "desc_en": "", "name_ru": "Польша", "desc_ru": "" },
{ "mask": "+970-##-###-####", "cc": "PS", "name_en": "Palestine", "desc_en": "", "name_ru": "Палестина", "desc_ru": "" },
{ "mask": "+351-##-###-####", "cc": "PT", "name_en": "Portugal", "desc_en": "", "name_ru": "Португалия", "desc_ru": "" },
{ "mask": "+680-###-####", "cc": "PW", "name_en": "Palau", "desc_en": "", "name_ru": "Палау", "desc_ru": "" },
{ "mask": "+595(###)###-###", "cc": "PY", "name_en": "Paraguay", "desc_en": "", "name_ru": "Парагвай", "desc_ru": "" },
{ "mask": "+974-####-####", "cc": "QA", "name_en": "Qatar", "desc_en": "", "name_ru": "Катар", "desc_ru": "" },
{ "mask": "+262-#####-####", "cc": "RE", "name_en": "Reunion", "desc_en": "", "name_ru": "Реюньон", "desc_ru": "" },
{ "mask": "+40-##-###-####", "cc": "RO", "name_en": "Romania", "desc_en": "", "name_ru": "Румыния", "desc_ru": "" },
{ "mask": "+381-##-###-####", "cc": "RS", "name_en": "Serbia", "desc_en": "", "name_ru": "Сербия", "desc_ru": "" },
{ "mask": "+7(###)###-##-##", "cc": "RU", "name_en": "Russia", "desc_en": "", "name_ru": "Россия", "desc_ru": "" },
{ "mask": "+250(###)###-###", "cc": "RW", "name_en": "Rwanda", "desc_en": "", "name_ru": "Руанда", "desc_ru": "" },
{ "mask": "+966-5-####-####", "cc": "SA", "name_en": "Saudi Arabia ", "desc_en": "mobile", "name_ru": "Саудовская Аравия ", "desc_ru": "мобильные" },
{ "mask": "+966-#-###-####", "cc": "SA", "name_en": "Saudi Arabia", "desc_en": "", "name_ru": "Саудовская Аравия", "desc_ru": "" },
{ "mask": "+677-###-####", "cc": "SB", "name_en": "Solomon Islands ", "desc_en": "mobile", "name_ru": "Соломоновы Острова ", "desc_ru": "мобильные" },
{ "mask": "+677-#####", "cc": "SB", "name_en": "Solomon Islands", "desc_en": "", "name_ru": "Соломоновы Острова", "desc_ru": "" },
{ "mask": "+248-#-###-###", "cc": "SC", "name_en": "Seychelles", "desc_en": "", "name_ru": "Сейшелы", "desc_ru": "" },
{ "mask": "+249-##-###-####", "cc": "SD", "name_en": "Sudan", "desc_en": "", "name_ru": "Судан", "desc_ru": "" },
{ "mask": "+46-##-###-####", "cc": "SE", "name_en": "Sweden", "desc_en": "", "name_ru": "Швеция", "desc_ru": "" },
{ "mask": "+65-####-####", "cc": "SG", "name_en": "Singapore", "desc_en": "", "name_ru": "Сингапур", "desc_ru": "" },
{ "mask": "+290-####", "cc": "SH", "name_en": "Saint Helena", "desc_en": "", "name_ru": "Остров Святой Елены", "desc_ru": "" },
{ "mask": "+290-####", "cc": "SH", "name_en": "Tristan da Cunha", "desc_en": "", "name_ru": "Тристан-да-Кунья", "desc_ru": "" },
{ "mask": "+386-##-###-###", "cc": "SI", "name_en": "Slovenia", "desc_en": "", "name_ru": "Словения", "desc_ru": "" },
{ "mask": "+421(###)###-###", "cc": "SK", "name_en": "Slovakia", "desc_en": "", "name_ru": "Словакия", "desc_ru": "" },
{ "mask": "+232-##-######", "cc": "SL", "name_en": "Sierra Leone", "desc_en": "", "name_ru": "Сьерра-Леоне", "desc_ru": "" },
{ "mask": "+378-####-######", "cc": "SM", "name_en": "San Marino", "desc_en": "", "name_ru": "Сан-Марино", "desc_ru": "" },
{ "mask": "+221-##-###-####", "cc": "SN", "name_en": "Senegal", "desc_en": "", "name_ru": "Сенегал", "desc_ru": "" },
{ "mask": "+252-##-###-###", "cc": "SO", "name_en": "Somalia", "desc_en": "", "name_ru": "Сомали", "desc_ru": "" },
{ "mask": "+252-#-###-###", "cc": "SO", "name_en": "Somalia", "desc_en": "", "name_ru": "Сомали", "desc_ru": "" },
{ "mask": "+252-#-###-###", "cc": "SO", "name_en": "Somalia ", "desc_en": "mobile", "name_ru": "Сомали ", "desc_ru": "мобильные" },
{ "mask": "+597-###-####", "cc": "SR", "name_en": "Suriname ", "desc_en": "mobile", "name_ru": "Суринам ", "desc_ru": "мобильные" },
{ "mask": "+597-###-###", "cc": "SR", "name_en": "Suriname", "desc_en": "", "name_ru": "Суринам", "desc_ru": "" },
{ "mask": "+211-##-###-####", "cc": "SS", "name_en": "South Sudan", "desc_en": "", "name_ru": "Южный Судан", "desc_ru": "" },
{ "mask": "+239-##-#####", "cc": "ST", "name_en": "Sao Tome and Principe", "desc_en": "", "name_ru": "Сан-Томе и Принсипи", "desc_ru": "" },
{ "mask": "+503-##-##-####", "cc": "SV", "name_en": "El Salvador", "desc_en": "", "name_ru": "Сальвадор", "desc_ru": "" },
{ "mask": "+1(721)###-####", "cc": "SX", "name_en": "Sint Maarten", "desc_en": "", "name_ru": "Синт-Маартен", "desc_ru": "" },
{ "mask": "+963-##-####-###", "cc": "SY", "name_en": "Syrian Arab Republic", "desc_en": "", "name_ru": "Сирийская арабская республика", "desc_ru": "" },
{ "mask": "+268-##-##-####", "cc": "SZ", "name_en": "Swaziland", "desc_en": "", "name_ru": "Свазиленд", "desc_ru": "" },
{ "mask": "+1(649)###-####", "cc": "TC", "name_en": "Turks & Caicos", "desc_en": "", "name_ru": "Тёркс и Кайкос", "desc_ru": "" },
{ "mask": "+235-##-##-##-##", "cc": "TD", "name_en": "Chad", "desc_en": "", "name_ru": "Чад", "desc_ru": "" },
{ "mask": "+228-##-###-###", "cc": "TG", "name_en": "Togo", "desc_en": "", "name_ru": "Того", "desc_ru": "" },
{ "mask": "+66-##-###-####", "cc": "TH", "name_en": "Thailand ", "desc_en": "mobile", "name_ru": "Таиланд ", "desc_ru": "мобильные" },
{ "mask": "+66-##-###-###", "cc": "TH", "name_en": "Thailand", "desc_en": "", "name_ru": "Таиланд", "desc_ru": "" },
{ "mask": "+992-##-###-####", "cc": "TJ", "name_en": "Tajikistan", "desc_en": "", "name_ru": "Таджикистан", "desc_ru": "" },
{ "mask": "+690-####", "cc": "TK", "name_en": "Tokelau", "desc_en": "", "name_ru": "Токелау", "desc_ru": "" },
{ "mask": "+670-###-####", "cc": "TL", "name_en": "East Timor", "desc_en": "", "name_ru": "Восточный Тимор", "desc_ru": "" },
{ "mask": "+670-77#-#####", "cc": "TL", "name_en": "East Timor", "desc_en": "Timor Telecom", "name_ru": "Восточный Тимор", "desc_ru": "Timor Telecom" },
{ "mask": "+670-78#-#####", "cc": "TL", "name_en": "East Timor", "desc_en": "Timor Telecom", "name_ru": "Восточный Тимор", "desc_ru": "Timor Telecom" },
{ "mask": "+993-#-###-####", "cc": "TM", "name_en": "Turkmenistan", "desc_en": "", "name_ru": "Туркменистан", "desc_ru": "" },
{ "mask": "+216-##-###-###", "cc": "TN", "name_en": "Tunisia", "desc_en": "", "name_ru": "Тунис", "desc_ru": "" },
{ "mask": "+676-#####", "cc": "TO", "name_en": "Tonga", "desc_en": "", "name_ru": "Тонга", "desc_ru": "" },
{ "mask": "+90(###)###-####", "cc": "TR", "name_en": "Turkey", "desc_en": "", "name_ru": "Турция", "desc_ru": "" },
{ "mask": "+1(868)###-####", "cc": "TT", "name_en": "Trinidad & Tobago", "desc_en": "", "name_ru": "Тринидад и Тобаго", "desc_ru": "" },
{ "mask": "+688-90####", "cc": "TV", "name_en": "Tuvalu ", "desc_en": "mobile", "name_ru": "Тувалу ", "desc_ru": "мобильные" },
{ "mask": "+688-2####", "cc": "TV", "name_en": "Tuvalu", "desc_en": "", "name_ru": "Тувалу", "desc_ru": "" },
{ "mask": "+886-#-####-####", "cc": "TW", "name_en": "Taiwan", "desc_en": "", "name_ru": "Тайвань", "desc_ru": "" },
{ "mask": "+886-####-####", "cc": "TW", "name_en": "Taiwan", "desc_en": "", "name_ru": "Тайвань", "desc_ru": "" },
{ "mask": "+255-##-###-####", "cc": "TZ", "name_en": "Tanzania", "desc_en": "", "name_ru": "Танзания", "desc_ru": "" },
{ "mask": "+380(##)###-##-##", "cc": "UA", "name_en": "Ukraine", "desc_en": "", "name_ru": "Украина", "desc_ru": "" },
{ "mask": "+256(###)###-###", "cc": "UG", "name_en": "Uganda", "desc_en": "", "name_ru": "Уганда", "desc_ru": "" },
{ "mask": "+44-##-####-####", "cc": "UK", "name_en": "United Kingdom", "desc_en": "", "name_ru": "Великобритания", "desc_ru": "" },
{ "mask": "+598-#-###-##-##", "cc": "UY", "name_en": "Uruguay", "desc_en": "", "name_ru": "Уругвай", "desc_ru": "" },
{ "mask": "+998-##-###-####", "cc": "UZ", "name_en": "Uzbekistan", "desc_en": "", "name_ru": "Узбекистан", "desc_ru": "" },
{ "mask": "+39-6-698-#####", "cc": "VA", "name_en": "Vatican City", "desc_en": "", "name_ru": "Ватикан", "desc_ru": "" },
{ "mask": "+1(784)###-####", "cc": "VC", "name_en": "Saint Vincent & the Grenadines", "desc_en": "", "name_ru": "Сент-Винсент и Гренадины", "desc_ru": "" },
{ "mask": "+58(###)###-####", "cc": "VE", "name_en": "Venezuela", "desc_en": "", "name_ru": "Венесуэла", "desc_ru": "" },
{ "mask": "+1(284)###-####", "cc": "VG", "name_en": "British Virgin Islands", "desc_en": "", "name_ru": "Британские Виргинские острова", "desc_ru": "" },
{ "mask": "+1(340)###-####", "cc": "VI", "name_en": "US Virgin Islands", "desc_en": "", "name_ru": "Американские Виргинские острова", "desc_ru": "" },
{ "mask": "+84-##-####-###", "cc": "VN", "name_en": "Vietnam", "desc_en": "", "name_ru": "Вьетнам", "desc_ru": "" },
{ "mask": "+84(###)####-###", "cc": "VN", "name_en": "Vietnam", "desc_en": "", "name_ru": "Вьетнам", "desc_ru": "" },
{ "mask": "+678-##-#####", "cc": "VU", "name_en": "Vanuatu ", "desc_en": "mobile", "name_ru": "Вануату ", "desc_ru": "мобильные" },
{ "mask": "+678-#####", "cc": "VU", "name_en": "Vanuatu", "desc_en": "", "name_ru": "Вануату", "desc_ru": "" },
{ "mask": "+681-##-####", "cc": "WF", "name_en": "Wallis and Futuna", "desc_en": "", "name_ru": "Уоллис и Футуна", "desc_ru": "" },
{ "mask": "+685-##-####", "cc": "WS", "name_en": "Samoa", "desc_en": "", "name_ru": "Самоа", "desc_ru": "" },
{ "mask": "+967-###-###-###", "cc": "YE", "name_en": "Yemen ", "desc_en": "mobile", "name_ru": "Йемен ", "desc_ru": "мобильные" },
{ "mask": "+967-#-###-###", "cc": "YE", "name_en": "Yemen", "desc_en": "", "name_ru": "Йемен", "desc_ru": "" },
{ "mask": "+967-##-###-###", "cc": "YE", "name_en": "Yemen", "desc_en": "", "name_ru": "Йемен", "desc_ru": "" },
{ "mask": "+27-##-###-####", "cc": "ZA", "name_en": "South Africa", "desc_en": "", "name_ru": "Южно-Африканская Респ.", "desc_ru": "" },
{ "mask": "+260-##-###-####", "cc": "ZM", "name_en": "Zambia", "desc_en": "", "name_ru": "Замбия", "desc_ru": "" },
{ "mask": "+263-#-######", "cc": "ZW", "name_en": "Zimbabwe", "desc_en": "", "name_ru": "Зимбабве", "desc_ru": "" },
{ "mask": "+1(###)###-####", "cc": ["US", "CA"], "name_en": "USA and Canada", "desc_en": "", "name_ru": "США и Канада", "desc_ru": "" }
]

@ -1,322 +1,322 @@
[
{ "mask": "+1(201)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(202)###-####", "cc": "US", "name_en": "USA", "desc_en": "District of Columbia", "name_ru": "США", "desc_ru": "Округ Колумбия" },
{ "mask": "+1(203)###-####", "cc": "US", "name_en": "USA", "desc_en": "Connecticut", "name_ru": "США", "desc_ru": "Коннектикут" },
{ "mask": "+1(204)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Manitoba", "name_ru": "Канада", "desc_ru": "Манитоба" },
{ "mask": "+1(205)###-####", "cc": "US", "name_en": "USA", "desc_en": "Alabama", "name_ru": "США", "desc_ru": "Алабама" },
{ "mask": "+1(206)###-####", "cc": "US", "name_en": "USA", "desc_en": "Washington", "name_ru": "США", "desc_ru": "Вашингтон" },
{ "mask": "+1(207)###-####", "cc": "US", "name_en": "USA", "desc_en": "Maine", "name_ru": "США", "desc_ru": "Мэн" },
{ "mask": "+1(208)###-####", "cc": "US", "name_en": "USA", "desc_en": "Idaho", "name_ru": "США", "desc_ru": "Айдахо" },
{ "mask": "+1(209)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(210)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(212)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(213)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(214)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(215)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(216)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(217)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(218)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(219)###-####", "cc": "US", "name_en": "USA", "desc_en": "Indiana", "name_ru": "США", "desc_ru": "Индиана" },
{ "mask": "+1(224)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(225)###-####", "cc": "US", "name_en": "USA", "desc_en": "Louisiana", "name_ru": "США", "desc_ru": "Луизиана" },
{ "mask": "+1(226)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(228)###-####", "cc": "US", "name_en": "USA", "desc_en": "Mississippi", "name_ru": "США", "desc_ru": "Миссисипи" },
{ "mask": "+1(229)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(231)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(234)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(239)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(240)###-####", "cc": "US", "name_en": "USA", "desc_en": "Maryland", "name_ru": "США", "desc_ru": "Мэриленд" },
{ "mask": "+1(248)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(249)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(250)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "British Columbia", "name_ru": "Канада", "desc_ru": "Британская Колумбия" },
{ "mask": "+1(251)###-####", "cc": "US", "name_en": "USA", "desc_en": "Alabama", "name_ru": "США", "desc_ru": "Алабама" },
{ "mask": "+1(252)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(253)###-####", "cc": "US", "name_en": "USA", "desc_en": "Washington", "name_ru": "США", "desc_ru": "Вашингтон" },
{ "mask": "+1(254)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(256)###-####", "cc": "US", "name_en": "USA", "desc_en": "Alabama", "name_ru": "США", "desc_ru": "Алабама" },
{ "mask": "+1(260)###-####", "cc": "US", "name_en": "USA", "desc_en": "Indiana", "name_ru": "США", "desc_ru": "Индиана" },
{ "mask": "+1(262)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wisconsin", "name_ru": "США", "desc_ru": "Висконсин" },
{ "mask": "+1(267)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(269)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(270)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kentucky", "name_ru": "США", "desc_ru": "Кентукки" },
{ "mask": "+1(276)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(281)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(289)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(301)###-####", "cc": "US", "name_en": "USA", "desc_en": "Maryland", "name_ru": "США", "desc_ru": "Мэриленд" },
{ "mask": "+1(302)###-####", "cc": "US", "name_en": "USA", "desc_en": "Delaware", "name_ru": "США", "desc_ru": "Делавэр" },
{ "mask": "+1(303)###-####", "cc": "US", "name_en": "USA", "desc_en": "Colorado", "name_ru": "США", "desc_ru": "Колорадо" },
{ "mask": "+1(304)###-####", "cc": "US", "name_en": "USA", "desc_en": "West Virginia", "name_ru": "США", "desc_ru": "Западная Виргиния" },
{ "mask": "+1(305)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(306)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Saskatchewan", "name_ru": "Канада", "desc_ru": "Саскачеван" },
{ "mask": "+1(307)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wyoming", "name_ru": "США", "desc_ru": "Вайоминг" },
{ "mask": "+1(308)###-####", "cc": "US", "name_en": "USA", "desc_en": "Nebraska", "name_ru": "США", "desc_ru": "Небраска" },
{ "mask": "+1(309)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(310)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(312)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(313)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(314)###-####", "cc": "US", "name_en": "USA", "desc_en": "Missouri", "name_ru": "США", "desc_ru": "Миссури" },
{ "mask": "+1(315)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(316)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kansas", "name_ru": "США", "desc_ru": "Канзас" },
{ "mask": "+1(317)###-####", "cc": "US", "name_en": "USA", "desc_en": "Indiana", "name_ru": "США", "desc_ru": "Индиана" },
{ "mask": "+1(318)###-####", "cc": "US", "name_en": "USA", "desc_en": "Louisiana", "name_ru": "США", "desc_ru": "Луизиана" },
{ "mask": "+1(319)###-####", "cc": "US", "name_en": "USA", "desc_en": "Iowa", "name_ru": "США", "desc_ru": "Айова" },
{ "mask": "+1(320)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(321)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(323)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(325)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(330)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(331)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(334)###-####", "cc": "US", "name_en": "USA", "desc_en": "Alabama", "name_ru": "США", "desc_ru": "Алабама" },
{ "mask": "+1(336)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(337)###-####", "cc": "US", "name_en": "USA", "desc_en": "Louisiana", "name_ru": "США", "desc_ru": "Луизиана" },
{ "mask": "+1(339)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(343)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(347)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(351)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(352)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(360)###-####", "cc": "US", "name_en": "USA", "desc_en": "Washington", "name_ru": "США", "desc_ru": "Вашингтон" },
{ "mask": "+1(361)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(385)###-####", "cc": "US", "name_en": "USA", "desc_en": "Utah", "name_ru": "США", "desc_ru": "Юта" },
{ "mask": "+1(386)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(401)###-####", "cc": "US", "name_en": "USA", "desc_en": "Rhode Island", "name_ru": "США", "desc_ru": "Род-Айленд" },
{ "mask": "+1(402)###-####", "cc": "US", "name_en": "USA", "desc_en": "Nebraska", "name_ru": "США", "desc_ru": "Небраска" },
{ "mask": "+1(403)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Alberta", "name_ru": "Канада", "desc_ru": "Альберта" },
{ "mask": "+1(404)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(405)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oklahoma", "name_ru": "США", "desc_ru": "Оклахома" },
{ "mask": "+1(406)###-####", "cc": "US", "name_en": "USA", "desc_en": "Montana", "name_ru": "США", "desc_ru": "Монтана" },
{ "mask": "+1(407)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(408)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(409)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(410)###-####", "cc": "US", "name_en": "USA", "desc_en": "Maryland", "name_ru": "США", "desc_ru": "Мэриленд" },
{ "mask": "+1(412)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(413)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(414)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wisconsin", "name_ru": "США", "desc_ru": "Висконсин" },
{ "mask": "+1(415)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(416)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(417)###-####", "cc": "US", "name_en": "USA", "desc_en": "Missouri", "name_ru": "США", "desc_ru": "Миссури" },
{ "mask": "+1(418)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(419)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(423)###-####", "cc": "US", "name_en": "USA", "desc_en": "Tennessee", "name_ru": "США", "desc_ru": "Теннесси" },
{ "mask": "+1(424)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(425)###-####", "cc": "US", "name_en": "USA", "desc_en": "Washington", "name_ru": "США", "desc_ru": "Вашингтон" },
{ "mask": "+1(430)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(432)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(434)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(435)###-####", "cc": "US", "name_en": "USA", "desc_en": "Utah", "name_ru": "США", "desc_ru": "Юта" },
{ "mask": "+1(438)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(440)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(442)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(443)###-####", "cc": "US", "name_en": "USA", "desc_en": "Maryland", "name_ru": "США", "desc_ru": "Мэриленд" },
{ "mask": "+1(450)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(458)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oregon", "name_ru": "США", "desc_ru": "Орегон" },
{ "mask": "+1(469)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(475)###-####", "cc": "US", "name_en": "USA", "desc_en": "Connecticut", "name_ru": "США", "desc_ru": "Коннектикут" },
{ "mask": "+1(478)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(479)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arkansas", "name_ru": "США", "desc_ru": "Арканзас" },
{ "mask": "+1(480)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arizona", "name_ru": "США", "desc_ru": "Аризона" },
{ "mask": "+1(484)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(501)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arkansas", "name_ru": "США", "desc_ru": "Арканзас" },
{ "mask": "+1(502)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kentucky", "name_ru": "США", "desc_ru": "Кентукки" },
{ "mask": "+1(503)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oregon", "name_ru": "США", "desc_ru": "Орегон" },
{ "mask": "+1(504)###-####", "cc": "US", "name_en": "USA", "desc_en": "Louisiana", "name_ru": "США", "desc_ru": "Луизиана" },
{ "mask": "+1(505)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Mexico", "name_ru": "США", "desc_ru": "Нью-Мексико" },
{ "mask": "+1(506)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "New Brunswick", "name_ru": "Канада", "desc_ru": "Нью-Брансуик" },
{ "mask": "+1(507)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(508)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(509)###-####", "cc": "US", "name_en": "USA", "desc_en": "Washington", "name_ru": "США", "desc_ru": "Вашингтон" },
{ "mask": "+1(510)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(512)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(513)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(514)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(515)###-####", "cc": "US", "name_en": "USA", "desc_en": "Iowa", "name_ru": "США", "desc_ru": "Айова" },
{ "mask": "+1(516)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(517)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(518)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(519)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(520)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arizona", "name_ru": "США", "desc_ru": "Аризона" },
{ "mask": "+1(530)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(531)###-####", "cc": "US", "name_en": "USA", "desc_en": "Nebraska", "name_ru": "США", "desc_ru": "Небраска" },
{ "mask": "+1(534)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wisconsin", "name_ru": "США", "desc_ru": "Висконсин" },
{ "mask": "+1(539)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oklahoma", "name_ru": "США", "desc_ru": "Оклахома" },
{ "mask": "+1(540)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(541)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oregon", "name_ru": "США", "desc_ru": "Орегон" },
{ "mask": "+1(551)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(559)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(561)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(562)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(563)###-####", "cc": "US", "name_en": "USA", "desc_en": "Iowa", "name_ru": "США", "desc_ru": "Айова" },
{ "mask": "+1(567)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(570)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(571)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(573)###-####", "cc": "US", "name_en": "USA", "desc_en": "Missouri", "name_ru": "США", "desc_ru": "Миссури" },
{ "mask": "+1(574)###-####", "cc": "US", "name_en": "USA", "desc_en": "Indiana", "name_ru": "США", "desc_ru": "Индиана" },
{ "mask": "+1(575)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Mexico", "name_ru": "США", "desc_ru": "Нью-Мексико" },
{ "mask": "+1(579)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(580)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oklahoma", "name_ru": "США", "desc_ru": "Оклахома" },
{ "mask": "+1(581)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(586)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(587)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Alberta", "name_ru": "Канада", "desc_ru": "Альберта" },
{ "mask": "+1(601)###-####", "cc": "US", "name_en": "USA", "desc_en": "Mississippi", "name_ru": "США", "desc_ru": "Миссисипи" },
{ "mask": "+1(603)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Hampshire", "name_ru": "США", "desc_ru": "Нью-Гэмпшир" },
{ "mask": "+1(604)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "British Columbia", "name_ru": "Канада", "desc_ru": "Британская Колумбия" },
{ "mask": "+1(605)###-####", "cc": "US", "name_en": "USA", "desc_en": "South Dakota", "name_ru": "США", "desc_ru": "Южная Дакота" },
{ "mask": "+1(606)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kentucky", "name_ru": "США", "desc_ru": "Кентукки" },
{ "mask": "+1(607)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(608)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wisconsin", "name_ru": "США", "desc_ru": "Висконсин" },
{ "mask": "+1(609)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(610)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(612)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(613)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(614)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(615)###-####", "cc": "US", "name_en": "USA", "desc_en": "Tennessee", "name_ru": "США", "desc_ru": "Теннесси" },
{ "mask": "+1(616)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(617)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(618)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(619)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(620)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kansas", "name_ru": "США", "desc_ru": "Канзас" },
{ "mask": "+1(623)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arizona", "name_ru": "США", "desc_ru": "Аризона" },
{ "mask": "+1(626)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(630)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(631)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(636)###-####", "cc": "US", "name_en": "USA", "desc_en": "Missouri", "name_ru": "США", "desc_ru": "Миссури" },
{ "mask": "+1(641)###-####", "cc": "US", "name_en": "USA", "desc_en": "Iowa", "name_ru": "США", "desc_ru": "Айова" },
{ "mask": "+1(646)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(647)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(650)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(651)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(657)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(660)###-####", "cc": "US", "name_en": "USA", "desc_en": "Missouri", "name_ru": "США", "desc_ru": "Миссури" },
{ "mask": "+1(661)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(662)###-####", "cc": "US", "name_en": "USA", "desc_en": "Mississippi", "name_ru": "США", "desc_ru": "Миссисипи" },
{ "mask": "+1(665)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arizona", "name_ru": "США", "desc_ru": "Аризона" },
{ "mask": "+1(678)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(681)###-####", "cc": "US", "name_en": "USA", "desc_en": "West Virginia", "name_ru": "США", "desc_ru": "Западная Виргиния" },
{ "mask": "+1(682)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(701)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Dakota", "name_ru": "США", "desc_ru": "Северная Дакота" },
{ "mask": "+1(702)###-####", "cc": "US", "name_en": "USA", "desc_en": "Nevada", "name_ru": "США", "desc_ru": "Невада" },
{ "mask": "+1(703)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(704)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(705)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(706)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(707)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(708)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(709)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Newfoundland and Labrador", "name_ru": "Канада", "desc_ru": "Ньюфаундленд и Лабрадор" },
{ "mask": "+1(712)###-####", "cc": "US", "name_en": "USA", "desc_en": "Iowa", "name_ru": "США", "desc_ru": "Айова" },
{ "mask": "+1(713)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(714)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(715)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wisconsin", "name_ru": "США", "desc_ru": "Висконсин" },
{ "mask": "+1(716)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(717)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(718)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(719)###-####", "cc": "US", "name_en": "USA", "desc_en": "Colorado", "name_ru": "США", "desc_ru": "Колорадо" },
{ "mask": "+1(720)###-####", "cc": "US", "name_en": "USA", "desc_en": "Colorado", "name_ru": "США", "desc_ru": "Колорадо" },
{ "mask": "+1(724)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(727)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(731)###-####", "cc": "US", "name_en": "USA", "desc_en": "Tennessee", "name_ru": "США", "desc_ru": "Теннесси" },
{ "mask": "+1(732)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(734)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(740)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(747)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(754)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(757)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(760)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(762)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(763)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(765)###-####", "cc": "US", "name_en": "USA", "desc_en": "Indiana", "name_ru": "США", "desc_ru": "Индиана" },
{ "mask": "+1(769)###-####", "cc": "US", "name_en": "USA", "desc_en": "Mississippi", "name_ru": "США", "desc_ru": "Миссисипи" },
{ "mask": "+1(770)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(772)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(773)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(774)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(775)###-####", "cc": "US", "name_en": "USA", "desc_en": "Nevada", "name_ru": "США", "desc_ru": "Невада" },
{ "mask": "+1(778)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "British Columbia", "name_ru": "Канада", "desc_ru": "Британская Колумбия" },
{ "mask": "+1(779)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(780)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Alberta", "name_ru": "Канада", "desc_ru": "Альберта" },
{ "mask": "+1(781)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(785)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kansas", "name_ru": "США", "desc_ru": "Канзас" },
{ "mask": "+1(786)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(801)###-####", "cc": "US", "name_en": "USA", "desc_en": "Utah", "name_ru": "США", "desc_ru": "Юта" },
{ "mask": "+1(802)###-####", "cc": "US", "name_en": "USA", "desc_en": "Vermont", "name_ru": "США", "desc_ru": "Вермонт" },
{ "mask": "+1(803)###-####", "cc": "US", "name_en": "USA", "desc_en": "South Carolina", "name_ru": "США", "desc_ru": "Южная Каролина" },
{ "mask": "+1(804)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(805)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(806)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(807)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(808)###-####", "cc": "US", "name_en": "USA", "desc_en": "Hawaii", "name_ru": "США", "desc_ru": "Гавайи" },
{ "mask": "+1(810)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(812)###-####", "cc": "US", "name_en": "USA", "desc_en": "Indiana", "name_ru": "США", "desc_ru": "Индиана" },
{ "mask": "+1(813)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(814)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(815)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(816)###-####", "cc": "US", "name_en": "USA", "desc_en": "Missouri", "name_ru": "США", "desc_ru": "Миссури" },
{ "mask": "+1(817)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(818)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(819)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(828)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(830)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(831)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(832)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(843)###-####", "cc": "US", "name_en": "USA", "desc_en": "South Carolina", "name_ru": "США", "desc_ru": "Южная Каролина" },
{ "mask": "+1(845)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(847)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(848)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(850)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(856)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(857)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(858)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(859)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kentucky", "name_ru": "США", "desc_ru": "Кентукки" },
{ "mask": "+1(860)###-####", "cc": "US", "name_en": "USA", "desc_en": "Connecticut", "name_ru": "США", "desc_ru": "Коннектикут" },
{ "mask": "+1(862)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(863)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(864)###-####", "cc": "US", "name_en": "USA", "desc_en": "South Carolina", "name_ru": "США", "desc_ru": "Южная Каролина" },
{ "mask": "+1(865)###-####", "cc": "US", "name_en": "USA", "desc_en": "Tennessee", "name_ru": "США", "desc_ru": "Теннесси" },
{ "mask": "+1(867)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Nunavut", "name_ru": "Канада", "desc_ru": "Нунавут" },
{ "mask": "+1(867)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Northwest Territories", "name_ru": "Канада", "desc_ru": "Северо-Западные территории" },
{ "mask": "+1(867)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Yukon", "name_ru": "Канада", "desc_ru": "Юкон" },
{ "mask": "+1(870)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arkansas", "name_ru": "США", "desc_ru": "Арканзас" },
{ "mask": "+1(872)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(878)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(901)###-####", "cc": "US", "name_en": "USA", "desc_en": "Tennessee", "name_ru": "США", "desc_ru": "Теннесси" },
{ "mask": "+1(902)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Nova Scotia", "name_ru": "Канада", "desc_ru": "Новая Шотландия" },
{ "mask": "+1(902)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Prince Edward Island", "name_ru": "Канада", "desc_ru": "Остров Принца Эдуарда" },
{ "mask": "+1(903)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(904)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(905)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(906)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(907)###-####", "cc": "US", "name_en": "USA", "desc_en": "Alaska", "name_ru": "США", "desc_ru": "Аляска" },
{ "mask": "+1(908)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(909)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(910)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(912)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(913)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kansas", "name_ru": "США", "desc_ru": "Канзас" },
{ "mask": "+1(914)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(915)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(916)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(917)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(918)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oklahoma", "name_ru": "США", "desc_ru": "Оклахома" },
{ "mask": "+1(919)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(920)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wisconsin", "name_ru": "США", "desc_ru": "Висконсин" },
{ "mask": "+1(925)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(928)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arizona", "name_ru": "США", "desc_ru": "Аризона" },
{ "mask": "+1(931)###-####", "cc": "US", "name_en": "USA", "desc_en": "Tennessee", "name_ru": "США", "desc_ru": "Теннесси" },
{ "mask": "+1(936)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(937)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(938)###-####", "cc": "US", "name_en": "USA", "desc_en": "Alabama", "name_ru": "США", "desc_ru": "Алабама" },
{ "mask": "+1(940)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(941)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(947)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(949)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(951)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(952)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(954)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(956)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(970)###-####", "cc": "US", "name_en": "USA", "desc_en": "Colorado", "name_ru": "США", "desc_ru": "Колорадо" },
{ "mask": "+1(971)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oregon", "name_ru": "США", "desc_ru": "Орегон" },
{ "mask": "+1(972)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(973)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(978)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(979)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(980)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(985)###-####", "cc": "US", "name_en": "USA", "desc_en": "Louisiana", "name_ru": "США", "desc_ru": "Луизиана" },
{ "mask": "+1(989)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" }
[
{ "mask": "+1(201)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(202)###-####", "cc": "US", "name_en": "USA", "desc_en": "District of Columbia", "name_ru": "США", "desc_ru": "Округ Колумбия" },
{ "mask": "+1(203)###-####", "cc": "US", "name_en": "USA", "desc_en": "Connecticut", "name_ru": "США", "desc_ru": "Коннектикут" },
{ "mask": "+1(204)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Manitoba", "name_ru": "Канада", "desc_ru": "Манитоба" },
{ "mask": "+1(205)###-####", "cc": "US", "name_en": "USA", "desc_en": "Alabama", "name_ru": "США", "desc_ru": "Алабама" },
{ "mask": "+1(206)###-####", "cc": "US", "name_en": "USA", "desc_en": "Washington", "name_ru": "США", "desc_ru": "Вашингтон" },
{ "mask": "+1(207)###-####", "cc": "US", "name_en": "USA", "desc_en": "Maine", "name_ru": "США", "desc_ru": "Мэн" },
{ "mask": "+1(208)###-####", "cc": "US", "name_en": "USA", "desc_en": "Idaho", "name_ru": "США", "desc_ru": "Айдахо" },
{ "mask": "+1(209)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(210)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(212)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(213)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(214)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(215)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(216)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(217)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(218)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(219)###-####", "cc": "US", "name_en": "USA", "desc_en": "Indiana", "name_ru": "США", "desc_ru": "Индиана" },
{ "mask": "+1(224)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(225)###-####", "cc": "US", "name_en": "USA", "desc_en": "Louisiana", "name_ru": "США", "desc_ru": "Луизиана" },
{ "mask": "+1(226)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(228)###-####", "cc": "US", "name_en": "USA", "desc_en": "Mississippi", "name_ru": "США", "desc_ru": "Миссисипи" },
{ "mask": "+1(229)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(231)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(234)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(239)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(240)###-####", "cc": "US", "name_en": "USA", "desc_en": "Maryland", "name_ru": "США", "desc_ru": "Мэриленд" },
{ "mask": "+1(248)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(249)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(250)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "British Columbia", "name_ru": "Канада", "desc_ru": "Британская Колумбия" },
{ "mask": "+1(251)###-####", "cc": "US", "name_en": "USA", "desc_en": "Alabama", "name_ru": "США", "desc_ru": "Алабама" },
{ "mask": "+1(252)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(253)###-####", "cc": "US", "name_en": "USA", "desc_en": "Washington", "name_ru": "США", "desc_ru": "Вашингтон" },
{ "mask": "+1(254)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(256)###-####", "cc": "US", "name_en": "USA", "desc_en": "Alabama", "name_ru": "США", "desc_ru": "Алабама" },
{ "mask": "+1(260)###-####", "cc": "US", "name_en": "USA", "desc_en": "Indiana", "name_ru": "США", "desc_ru": "Индиана" },
{ "mask": "+1(262)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wisconsin", "name_ru": "США", "desc_ru": "Висконсин" },
{ "mask": "+1(267)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(269)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(270)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kentucky", "name_ru": "США", "desc_ru": "Кентукки" },
{ "mask": "+1(276)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(281)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(289)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(301)###-####", "cc": "US", "name_en": "USA", "desc_en": "Maryland", "name_ru": "США", "desc_ru": "Мэриленд" },
{ "mask": "+1(302)###-####", "cc": "US", "name_en": "USA", "desc_en": "Delaware", "name_ru": "США", "desc_ru": "Делавэр" },
{ "mask": "+1(303)###-####", "cc": "US", "name_en": "USA", "desc_en": "Colorado", "name_ru": "США", "desc_ru": "Колорадо" },
{ "mask": "+1(304)###-####", "cc": "US", "name_en": "USA", "desc_en": "West Virginia", "name_ru": "США", "desc_ru": "Западная Виргиния" },
{ "mask": "+1(305)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(306)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Saskatchewan", "name_ru": "Канада", "desc_ru": "Саскачеван" },
{ "mask": "+1(307)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wyoming", "name_ru": "США", "desc_ru": "Вайоминг" },
{ "mask": "+1(308)###-####", "cc": "US", "name_en": "USA", "desc_en": "Nebraska", "name_ru": "США", "desc_ru": "Небраска" },
{ "mask": "+1(309)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(310)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(312)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(313)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(314)###-####", "cc": "US", "name_en": "USA", "desc_en": "Missouri", "name_ru": "США", "desc_ru": "Миссури" },
{ "mask": "+1(315)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(316)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kansas", "name_ru": "США", "desc_ru": "Канзас" },
{ "mask": "+1(317)###-####", "cc": "US", "name_en": "USA", "desc_en": "Indiana", "name_ru": "США", "desc_ru": "Индиана" },
{ "mask": "+1(318)###-####", "cc": "US", "name_en": "USA", "desc_en": "Louisiana", "name_ru": "США", "desc_ru": "Луизиана" },
{ "mask": "+1(319)###-####", "cc": "US", "name_en": "USA", "desc_en": "Iowa", "name_ru": "США", "desc_ru": "Айова" },
{ "mask": "+1(320)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(321)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(323)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(325)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(330)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(331)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(334)###-####", "cc": "US", "name_en": "USA", "desc_en": "Alabama", "name_ru": "США", "desc_ru": "Алабама" },
{ "mask": "+1(336)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(337)###-####", "cc": "US", "name_en": "USA", "desc_en": "Louisiana", "name_ru": "США", "desc_ru": "Луизиана" },
{ "mask": "+1(339)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(343)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(347)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(351)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(352)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(360)###-####", "cc": "US", "name_en": "USA", "desc_en": "Washington", "name_ru": "США", "desc_ru": "Вашингтон" },
{ "mask": "+1(361)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(385)###-####", "cc": "US", "name_en": "USA", "desc_en": "Utah", "name_ru": "США", "desc_ru": "Юта" },
{ "mask": "+1(386)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(401)###-####", "cc": "US", "name_en": "USA", "desc_en": "Rhode Island", "name_ru": "США", "desc_ru": "Род-Айленд" },
{ "mask": "+1(402)###-####", "cc": "US", "name_en": "USA", "desc_en": "Nebraska", "name_ru": "США", "desc_ru": "Небраска" },
{ "mask": "+1(403)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Alberta", "name_ru": "Канада", "desc_ru": "Альберта" },
{ "mask": "+1(404)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(405)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oklahoma", "name_ru": "США", "desc_ru": "Оклахома" },
{ "mask": "+1(406)###-####", "cc": "US", "name_en": "USA", "desc_en": "Montana", "name_ru": "США", "desc_ru": "Монтана" },
{ "mask": "+1(407)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(408)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(409)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(410)###-####", "cc": "US", "name_en": "USA", "desc_en": "Maryland", "name_ru": "США", "desc_ru": "Мэриленд" },
{ "mask": "+1(412)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(413)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(414)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wisconsin", "name_ru": "США", "desc_ru": "Висконсин" },
{ "mask": "+1(415)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(416)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(417)###-####", "cc": "US", "name_en": "USA", "desc_en": "Missouri", "name_ru": "США", "desc_ru": "Миссури" },
{ "mask": "+1(418)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(419)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(423)###-####", "cc": "US", "name_en": "USA", "desc_en": "Tennessee", "name_ru": "США", "desc_ru": "Теннесси" },
{ "mask": "+1(424)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(425)###-####", "cc": "US", "name_en": "USA", "desc_en": "Washington", "name_ru": "США", "desc_ru": "Вашингтон" },
{ "mask": "+1(430)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(432)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(434)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(435)###-####", "cc": "US", "name_en": "USA", "desc_en": "Utah", "name_ru": "США", "desc_ru": "Юта" },
{ "mask": "+1(438)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(440)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(442)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(443)###-####", "cc": "US", "name_en": "USA", "desc_en": "Maryland", "name_ru": "США", "desc_ru": "Мэриленд" },
{ "mask": "+1(450)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(458)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oregon", "name_ru": "США", "desc_ru": "Орегон" },
{ "mask": "+1(469)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(475)###-####", "cc": "US", "name_en": "USA", "desc_en": "Connecticut", "name_ru": "США", "desc_ru": "Коннектикут" },
{ "mask": "+1(478)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(479)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arkansas", "name_ru": "США", "desc_ru": "Арканзас" },
{ "mask": "+1(480)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arizona", "name_ru": "США", "desc_ru": "Аризона" },
{ "mask": "+1(484)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(501)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arkansas", "name_ru": "США", "desc_ru": "Арканзас" },
{ "mask": "+1(502)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kentucky", "name_ru": "США", "desc_ru": "Кентукки" },
{ "mask": "+1(503)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oregon", "name_ru": "США", "desc_ru": "Орегон" },
{ "mask": "+1(504)###-####", "cc": "US", "name_en": "USA", "desc_en": "Louisiana", "name_ru": "США", "desc_ru": "Луизиана" },
{ "mask": "+1(505)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Mexico", "name_ru": "США", "desc_ru": "Нью-Мексико" },
{ "mask": "+1(506)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "New Brunswick", "name_ru": "Канада", "desc_ru": "Нью-Брансуик" },
{ "mask": "+1(507)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(508)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(509)###-####", "cc": "US", "name_en": "USA", "desc_en": "Washington", "name_ru": "США", "desc_ru": "Вашингтон" },
{ "mask": "+1(510)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(512)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(513)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(514)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(515)###-####", "cc": "US", "name_en": "USA", "desc_en": "Iowa", "name_ru": "США", "desc_ru": "Айова" },
{ "mask": "+1(516)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(517)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(518)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(519)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(520)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arizona", "name_ru": "США", "desc_ru": "Аризона" },
{ "mask": "+1(530)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(531)###-####", "cc": "US", "name_en": "USA", "desc_en": "Nebraska", "name_ru": "США", "desc_ru": "Небраска" },
{ "mask": "+1(534)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wisconsin", "name_ru": "США", "desc_ru": "Висконсин" },
{ "mask": "+1(539)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oklahoma", "name_ru": "США", "desc_ru": "Оклахома" },
{ "mask": "+1(540)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(541)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oregon", "name_ru": "США", "desc_ru": "Орегон" },
{ "mask": "+1(551)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(559)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(561)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(562)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(563)###-####", "cc": "US", "name_en": "USA", "desc_en": "Iowa", "name_ru": "США", "desc_ru": "Айова" },
{ "mask": "+1(567)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(570)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(571)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(573)###-####", "cc": "US", "name_en": "USA", "desc_en": "Missouri", "name_ru": "США", "desc_ru": "Миссури" },
{ "mask": "+1(574)###-####", "cc": "US", "name_en": "USA", "desc_en": "Indiana", "name_ru": "США", "desc_ru": "Индиана" },
{ "mask": "+1(575)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Mexico", "name_ru": "США", "desc_ru": "Нью-Мексико" },
{ "mask": "+1(579)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(580)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oklahoma", "name_ru": "США", "desc_ru": "Оклахома" },
{ "mask": "+1(581)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(586)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(587)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Alberta", "name_ru": "Канада", "desc_ru": "Альберта" },
{ "mask": "+1(601)###-####", "cc": "US", "name_en": "USA", "desc_en": "Mississippi", "name_ru": "США", "desc_ru": "Миссисипи" },
{ "mask": "+1(603)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Hampshire", "name_ru": "США", "desc_ru": "Нью-Гэмпшир" },
{ "mask": "+1(604)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "British Columbia", "name_ru": "Канада", "desc_ru": "Британская Колумбия" },
{ "mask": "+1(605)###-####", "cc": "US", "name_en": "USA", "desc_en": "South Dakota", "name_ru": "США", "desc_ru": "Южная Дакота" },
{ "mask": "+1(606)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kentucky", "name_ru": "США", "desc_ru": "Кентукки" },
{ "mask": "+1(607)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(608)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wisconsin", "name_ru": "США", "desc_ru": "Висконсин" },
{ "mask": "+1(609)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(610)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(612)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(613)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(614)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(615)###-####", "cc": "US", "name_en": "USA", "desc_en": "Tennessee", "name_ru": "США", "desc_ru": "Теннесси" },
{ "mask": "+1(616)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(617)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(618)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(619)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(620)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kansas", "name_ru": "США", "desc_ru": "Канзас" },
{ "mask": "+1(623)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arizona", "name_ru": "США", "desc_ru": "Аризона" },
{ "mask": "+1(626)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(630)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(631)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(636)###-####", "cc": "US", "name_en": "USA", "desc_en": "Missouri", "name_ru": "США", "desc_ru": "Миссури" },
{ "mask": "+1(641)###-####", "cc": "US", "name_en": "USA", "desc_en": "Iowa", "name_ru": "США", "desc_ru": "Айова" },
{ "mask": "+1(646)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(647)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(650)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(651)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(657)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(660)###-####", "cc": "US", "name_en": "USA", "desc_en": "Missouri", "name_ru": "США", "desc_ru": "Миссури" },
{ "mask": "+1(661)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(662)###-####", "cc": "US", "name_en": "USA", "desc_en": "Mississippi", "name_ru": "США", "desc_ru": "Миссисипи" },
{ "mask": "+1(665)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arizona", "name_ru": "США", "desc_ru": "Аризона" },
{ "mask": "+1(678)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(681)###-####", "cc": "US", "name_en": "USA", "desc_en": "West Virginia", "name_ru": "США", "desc_ru": "Западная Виргиния" },
{ "mask": "+1(682)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(701)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Dakota", "name_ru": "США", "desc_ru": "Северная Дакота" },
{ "mask": "+1(702)###-####", "cc": "US", "name_en": "USA", "desc_en": "Nevada", "name_ru": "США", "desc_ru": "Невада" },
{ "mask": "+1(703)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(704)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(705)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(706)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(707)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(708)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(709)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Newfoundland and Labrador", "name_ru": "Канада", "desc_ru": "Ньюфаундленд и Лабрадор" },
{ "mask": "+1(712)###-####", "cc": "US", "name_en": "USA", "desc_en": "Iowa", "name_ru": "США", "desc_ru": "Айова" },
{ "mask": "+1(713)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(714)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(715)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wisconsin", "name_ru": "США", "desc_ru": "Висконсин" },
{ "mask": "+1(716)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(717)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(718)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(719)###-####", "cc": "US", "name_en": "USA", "desc_en": "Colorado", "name_ru": "США", "desc_ru": "Колорадо" },
{ "mask": "+1(720)###-####", "cc": "US", "name_en": "USA", "desc_en": "Colorado", "name_ru": "США", "desc_ru": "Колорадо" },
{ "mask": "+1(724)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(727)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(731)###-####", "cc": "US", "name_en": "USA", "desc_en": "Tennessee", "name_ru": "США", "desc_ru": "Теннесси" },
{ "mask": "+1(732)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(734)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(740)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(747)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(754)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(757)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(760)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(762)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(763)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(765)###-####", "cc": "US", "name_en": "USA", "desc_en": "Indiana", "name_ru": "США", "desc_ru": "Индиана" },
{ "mask": "+1(769)###-####", "cc": "US", "name_en": "USA", "desc_en": "Mississippi", "name_ru": "США", "desc_ru": "Миссисипи" },
{ "mask": "+1(770)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(772)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(773)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(774)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(775)###-####", "cc": "US", "name_en": "USA", "desc_en": "Nevada", "name_ru": "США", "desc_ru": "Невада" },
{ "mask": "+1(778)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "British Columbia", "name_ru": "Канада", "desc_ru": "Британская Колумбия" },
{ "mask": "+1(779)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(780)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Alberta", "name_ru": "Канада", "desc_ru": "Альберта" },
{ "mask": "+1(781)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(785)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kansas", "name_ru": "США", "desc_ru": "Канзас" },
{ "mask": "+1(786)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(801)###-####", "cc": "US", "name_en": "USA", "desc_en": "Utah", "name_ru": "США", "desc_ru": "Юта" },
{ "mask": "+1(802)###-####", "cc": "US", "name_en": "USA", "desc_en": "Vermont", "name_ru": "США", "desc_ru": "Вермонт" },
{ "mask": "+1(803)###-####", "cc": "US", "name_en": "USA", "desc_en": "South Carolina", "name_ru": "США", "desc_ru": "Южная Каролина" },
{ "mask": "+1(804)###-####", "cc": "US", "name_en": "USA", "desc_en": "Virginia", "name_ru": "США", "desc_ru": "Виргиния" },
{ "mask": "+1(805)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(806)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(807)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(808)###-####", "cc": "US", "name_en": "USA", "desc_en": "Hawaii", "name_ru": "США", "desc_ru": "Гавайи" },
{ "mask": "+1(810)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(812)###-####", "cc": "US", "name_en": "USA", "desc_en": "Indiana", "name_ru": "США", "desc_ru": "Индиана" },
{ "mask": "+1(813)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(814)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(815)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(816)###-####", "cc": "US", "name_en": "USA", "desc_en": "Missouri", "name_ru": "США", "desc_ru": "Миссури" },
{ "mask": "+1(817)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(818)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(819)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Québec", "name_ru": "Канада", "desc_ru": "Квебек" },
{ "mask": "+1(828)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(830)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(831)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(832)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(843)###-####", "cc": "US", "name_en": "USA", "desc_en": "South Carolina", "name_ru": "США", "desc_ru": "Южная Каролина" },
{ "mask": "+1(845)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(847)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(848)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(850)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(856)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(857)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(858)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(859)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kentucky", "name_ru": "США", "desc_ru": "Кентукки" },
{ "mask": "+1(860)###-####", "cc": "US", "name_en": "USA", "desc_en": "Connecticut", "name_ru": "США", "desc_ru": "Коннектикут" },
{ "mask": "+1(862)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(863)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(864)###-####", "cc": "US", "name_en": "USA", "desc_en": "South Carolina", "name_ru": "США", "desc_ru": "Южная Каролина" },
{ "mask": "+1(865)###-####", "cc": "US", "name_en": "USA", "desc_en": "Tennessee", "name_ru": "США", "desc_ru": "Теннесси" },
{ "mask": "+1(867)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Nunavut", "name_ru": "Канада", "desc_ru": "Нунавут" },
{ "mask": "+1(867)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Northwest Territories", "name_ru": "Канада", "desc_ru": "Северо-Западные территории" },
{ "mask": "+1(867)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Yukon", "name_ru": "Канада", "desc_ru": "Юкон" },
{ "mask": "+1(870)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arkansas", "name_ru": "США", "desc_ru": "Арканзас" },
{ "mask": "+1(872)###-####", "cc": "US", "name_en": "USA", "desc_en": "Illinois", "name_ru": "США", "desc_ru": "Иллинойс" },
{ "mask": "+1(878)###-####", "cc": "US", "name_en": "USA", "desc_en": "Pennsylvania", "name_ru": "США", "desc_ru": "Пенсильвания" },
{ "mask": "+1(901)###-####", "cc": "US", "name_en": "USA", "desc_en": "Tennessee", "name_ru": "США", "desc_ru": "Теннесси" },
{ "mask": "+1(902)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Nova Scotia", "name_ru": "Канада", "desc_ru": "Новая Шотландия" },
{ "mask": "+1(902)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Prince Edward Island", "name_ru": "Канада", "desc_ru": "Остров Принца Эдуарда" },
{ "mask": "+1(903)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(904)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(905)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Ontario", "name_ru": "Канада", "desc_ru": "Онтарио" },
{ "mask": "+1(906)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(907)###-####", "cc": "US", "name_en": "USA", "desc_en": "Alaska", "name_ru": "США", "desc_ru": "Аляска" },
{ "mask": "+1(908)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(909)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(910)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(912)###-####", "cc": "US", "name_en": "USA", "desc_en": "Georgia", "name_ru": "США", "desc_ru": "Джорджия" },
{ "mask": "+1(913)###-####", "cc": "US", "name_en": "USA", "desc_en": "Kansas", "name_ru": "США", "desc_ru": "Канзас" },
{ "mask": "+1(914)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(915)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(916)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(917)###-####", "cc": "US", "name_en": "USA", "desc_en": "New York", "name_ru": "США", "desc_ru": "Нью-Йорк" },
{ "mask": "+1(918)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oklahoma", "name_ru": "США", "desc_ru": "Оклахома" },
{ "mask": "+1(919)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(920)###-####", "cc": "US", "name_en": "USA", "desc_en": "Wisconsin", "name_ru": "США", "desc_ru": "Висконсин" },
{ "mask": "+1(925)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(928)###-####", "cc": "US", "name_en": "USA", "desc_en": "Arizona", "name_ru": "США", "desc_ru": "Аризона" },
{ "mask": "+1(931)###-####", "cc": "US", "name_en": "USA", "desc_en": "Tennessee", "name_ru": "США", "desc_ru": "Теннесси" },
{ "mask": "+1(936)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(937)###-####", "cc": "US", "name_en": "USA", "desc_en": "Ohio", "name_ru": "США", "desc_ru": "Огайо" },
{ "mask": "+1(938)###-####", "cc": "US", "name_en": "USA", "desc_en": "Alabama", "name_ru": "США", "desc_ru": "Алабама" },
{ "mask": "+1(940)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(941)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(947)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" },
{ "mask": "+1(949)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(951)###-####", "cc": "US", "name_en": "USA", "desc_en": "California", "name_ru": "США", "desc_ru": "Калифорния" },
{ "mask": "+1(952)###-####", "cc": "US", "name_en": "USA", "desc_en": "Minnesota", "name_ru": "США", "desc_ru": "Миннесота" },
{ "mask": "+1(954)###-####", "cc": "US", "name_en": "USA", "desc_en": "Florida", "name_ru": "США", "desc_ru": "Флорида" },
{ "mask": "+1(956)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(970)###-####", "cc": "US", "name_en": "USA", "desc_en": "Colorado", "name_ru": "США", "desc_ru": "Колорадо" },
{ "mask": "+1(971)###-####", "cc": "US", "name_en": "USA", "desc_en": "Oregon", "name_ru": "США", "desc_ru": "Орегон" },
{ "mask": "+1(972)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(973)###-####", "cc": "US", "name_en": "USA", "desc_en": "New Jersey", "name_ru": "США", "desc_ru": "Нью-Джерси" },
{ "mask": "+1(978)###-####", "cc": "US", "name_en": "USA", "desc_en": "Massachusetts", "name_ru": "США", "desc_ru": "Массачусетс" },
{ "mask": "+1(979)###-####", "cc": "US", "name_en": "USA", "desc_en": "Texas", "name_ru": "США", "desc_ru": "Техас" },
{ "mask": "+1(980)###-####", "cc": "US", "name_en": "USA", "desc_en": "North Carolina", "name_ru": "США", "desc_ru": "Северная Каролина" },
{ "mask": "+1(985)###-####", "cc": "US", "name_en": "USA", "desc_en": "Louisiana", "name_ru": "США", "desc_ru": "Луизиана" },
{ "mask": "+1(989)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" }
]
Loading…
Cancel
Save