remotes/origin/1203
kotzilla 12 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): class AvatarForm(forms.ModelForm):
avatar = forms.ImageField(label=_(u'Выберите файл (GIF, JPG, PNG. Размер 100 × 100 пикселей)'), avatar = forms.ImageField(label=_(u'Выберите файл (GIF, JPG, PNG. Размер 100 × 100 пикселей)'),
required=False) required=False, widget=forms.FileInput(attrs={'class': 'input'}))
class Meta: class Meta:
model = Profile model = Profile
fields = ('avatar',) fields = ('avatar',)

@ -14,6 +14,8 @@ from models import User
import json, datetime import json, datetime
import calendar as python_calendar import calendar as python_calendar
from django.views.generic import TemplateView, FormView, ListView from django.views.generic import TemplateView, FormView, ListView
from sorl.thumbnail import get_thumbnail
class SettingsView(TemplateView): class SettingsView(TemplateView):
template_name = 'accounts/settings.html' template_name = 'accounts/settings.html'
@ -240,10 +242,19 @@ class AvatarView(BaseProfileView):
def form_valid(self, form): def form_valid(self, form):
profile = self.request.user.profile 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 = self.form_class(self.request.POST, self.request.FILES, instance=profile)
form.save() form.save()
response = {'success': True} if self.request.is_ajax():
return HttpResponse(json.dumps(response), content_type='application/json') 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): class HomeView(BaseProfileView):
@ -300,7 +311,6 @@ def test(request):
from exposition.models import Exposition from exposition.models import Exposition
def get_user(url): def get_user(url):
try: try:
url = int(url) url = int(url)
@ -354,5 +364,4 @@ class UserSeminarView(UserEventView):
url = self.kwargs.get('url') url = self.kwargs.get('url')
user = get_user(url) user = get_user(url)
self.obj = user 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.auth.decorators import login_required
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
#models and forms #models and forms
from forms import CityForm, CityDeleteForm from forms import CityForm, CityDeleteForm, CityFilterForm
from models import City from models import City
from file.models import FileModel from file.models import FileModel
from file.forms import FileModelForm from file.forms import FileModelForm
#custom views #custom views
from functions.custom_views import objects_list, add_object_with_file, delete_object from functions.custom_views import objects_list, add_object_with_file, delete_object
from functions.admin_views import AdminListView
def city_all(request): def city_all(request):
@ -104,4 +105,9 @@ def search_city(request):
qs = City.objects.language().filter(country=country, translations__name__contains=term) qs = City.objects.language().filter(country=country, translations__name__contains=term)
result = [{'id': city.id, 'label': city.name} for city in qs] 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 -*- # -*- coding: utf-8 -*-
from django.conf.urls import patterns, url from django.conf.urls import patterns, url
from admin import CityListView
urlpatterns = patterns('city.admin', urlpatterns = patterns('city.admin',
url(r'^add/$', 'city_add'), url(r'^add/$', 'city_add'),
url(r'^delete/(?P<url>.*)/$', 'city_delete'), url(r'^delete/(?P<url>.*)/$', 'city_delete'),
url(r'^change/(.*)/$', 'city_change'), url(r'^change/(.*)/$', 'city_change'),
url(r'^all/$', 'city_all'), url(r'^all/$', CityListView.as_view()),
url(r'^search/$', 'search_city'), url(r'^search/$', 'search_city'),
) )

@ -13,6 +13,7 @@ from directories.models import Iata
from functions.translate import fill_with_signal from functions.translate import fill_with_signal
from functions.form_check import is_positive_integer, translit_with_separator from functions.form_check import is_positive_integer, translit_with_separator
from functions.files import check_tmp_files from functions.files import check_tmp_files
from functions.admin_forms import AdminFilterForm
class CityForm(forms.Form): class CityForm(forms.Form):
@ -158,4 +159,8 @@ class CityDeleteForm(forms.ModelForm):
class Meta: class Meta:
model = City 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 from django.contrib.auth.decorators import login_required
# models and forms # models and forms
from models import Exposition, TimeTable, Statistic, TmpTimeTable 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 theme.models import Tag
from city.models import City from city.models import City
from file.models import FileModel, TmpFile from file.models import FileModel, TmpFile
@ -19,6 +19,7 @@ import random
# custom views # custom views
from functions.custom_views import objects_list, delete_object from functions.custom_views import objects_list, delete_object
from functions.views_help import get_referer from functions.views_help import get_referer
from functions.admin_views import AdminListView
def exposition_all(request): def exposition_all(request):
@ -229,4 +230,9 @@ def exposition_change(request, url):
object_id=getattr(exposition, 'id')) object_id=getattr(exposition, 'id'))
args['obj_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 -*- # -*- coding: utf-8 -*-
from django.conf.urls import patterns, include, url from django.conf.urls import patterns, include, url
from admin import ExpositionListView
urlpatterns = patterns('exposition.admin', urlpatterns = patterns('exposition.admin',
url(r'^add.*/$', 'exposition_add'), url(r'^add.*/$', 'exposition_add'),
url(r'^delete/(?P<url>.*)/$', 'exposition_delete'), url(r'^delete/(?P<url>.*)/$', 'exposition_delete'),
url(r'^change/(?P<url>.*)/$', 'exposition_change'), 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'^switch/(?P<url>.*)/(?P<action>.*)$', 'exposition_switch'),
url(r'^copy/(?P<url>.*)$', 'exposition_copy'), 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.files import check_tmp_files
from functions.form_check import translit_with_separator from functions.form_check import translit_with_separator
from settings.settings import date_formats from settings.settings import date_formats
from functions.admin_forms import AdminFilterForm
class ExpositionCreateForm(forms.Form): class ExpositionCreateForm(forms.Form):
@ -479,4 +480,8 @@ class TimeTableForm(forms.Form):
else: else:
fill_with_signal(TimeTable, timetable, data) 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 import forms
from django.conf import settings from django.conf import settings
from django.utils.translation import ugettext_lazy as _
class AdminForm(forms.Form): class AdminForm(forms.Form):
@ -14,3 +16,27 @@ class AdminForm(forms.Form):
# uses enumerate for detect iteration number # uses enumerate for detect iteration number
# first iteration is a default lang so it required fields # first iteration is a default lang so it required fields
required = True if lid == 0 else False 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.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.conf import settings from django.conf import settings
@ -59,4 +59,86 @@ class AdminView(FormView):
return form_class(data) return form_class(data)
else: else:
return form_class() 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 from client_view import GalleryView, PhotoView
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'gallery/(?P<slug>.*)$', GalleryView.as_view()), #url(r'gallery/(?P<slug>.*)$', GalleryView.as_view()),
url(r'photo/(?P<slug>.*)$', PhotoView.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 warnings
import json
from django.conf import settings from django.conf import settings
from django.views.generic import DetailView, ListView from django.views.generic import DetailView, ListView
from photologue.models import Gallery, Photo from photologue.models import Gallery, Photo
from django.shortcuts import get_object_or_404, HttpResponse
# Number of galleries to display per page. # Number of galleries to display per page.
@ -29,3 +31,16 @@ class PhotoView(DetailView):
slug_field = 'slug' slug_field = 'slug'
template_name = 'client/photoreport/photo.html' 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.formsets import BaseFormSet, formset_factory
from django.forms.models import modelformset_factory from django.forms.models import modelformset_factory
#models and forms #models and forms
from forms import ExpositionForm, PlaceExpositionFormDelete, HallForm from forms import ExpositionForm, PlaceExpositionFormDelete, HallForm, PlaceExpositionFilter
from models import PlaceExposition, Hall from models import PlaceExposition, Hall
from city.models import City from city.models import City
from file.models import FileModel, TmpFile from file.models import FileModel, TmpFile
@ -192,7 +192,7 @@ def exposition_change(request, url):
#test---------------------- #test----------------------
from functions.admin_views import AdminView from functions.admin_views import AdminView, AdminListView
class PlaceExpositionView(AdminView): class PlaceExpositionView(AdminView):
@ -257,3 +257,7 @@ class PlaceExpositionView(AdminView):
return context 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 -*- # -*- coding: utf-8 -*-
from django.conf.urls import patterns, include, url from django.conf.urls import patterns, include, url
from admin import PlaceExpositionView from admin import PlaceExpositionView, PlaceExpositionListView
urlpatterns = patterns('place_exposition.admin', 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'^add.*/$', 'exposition_add'),
url(r'^delete/(?P<url>.*)/$', 'exposition_delete'), url(r'^delete/(?P<url>.*)/$', 'exposition_delete'),
url(r'^change/(?P<url>.*)/$', 'exposition_change'), url(r'^change/(?P<url>.*)/$', 'exposition_change'),
url(r'^copy/(?P<url>.*)/$', 'place_exposition_copy'), url(r'^copy/(?P<url>.*)/$', 'place_exposition_copy'),
url(r'^$', PlaceExpositionView.as_view()), url(r'^$', PlaceExpositionView.as_view()),
url(r'^(?P<url>.*)/$', PlaceExpositionView.as_view()), url(r'^(?P<url>.*)/$', PlaceExpositionView.as_view()),

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

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

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

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

@ -1,134 +1,82 @@
{% extends 'base_catalog.html' %} {% extends 'base_catalog.html' %}
{% load static %} {% load static %}
{% load i18n %} {% load i18n %}
{% load template_filters %} {% load template_filters %}
{% block page_body %} {% block page_body %}
<div class="m-article cl-photos"> <div class="m-article cl-photos">
<div class="cl-item"> <div class="cl-item">
<div class="cl-item-wrap clearfix"> <div class="cl-item-wrap clearfix">
<div class="cli-pict"> <div class="cli-pict">
<a href="{{ object.get_permanent_url }}"> <a href="{{ object.get_permanent_url }}">
{% with obj=object %} {% with obj=object %}
{% include 'client/includes/show_logo.html' %} {% include 'client/includes/show_logo.html' %}
{% endwith %} {% endwith %}
</a> </a>
</div> </div>
<div class="cli-info"> <div class="cli-info">
<div class="cli-top clearfix"> <div class="cli-top clearfix">
<header> <header>
<div class="cli-title"> <div class="cli-title">
<a href="{{ object.get_permanent_url }}">{{ object.name }}</a> <a href="{{ object.get_permanent_url }}">{{ object.name }}</a>
</div> </div>
</header> </header>
<div class="cli-descr"> <div class="cli-descr">
{{ object.get_type }} {{ object.get_type }}
</div> </div>
</div> </div>
<div class="cli-bot clearfix"> <div class="cli-bot clearfix">
{% if object.country %} {% if object.country %}
<div class="cli-place"> <div class="cli-place">
<a href="#">{{ object.country }}</a>, <a href="#">{{ object.city }}</a> <a href="#">{{ object.country }}</a>, <a href="#">{{ object.city }}</a>
</div> </div>
{% endif %} {% endif %}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="cli-photo-text"> <div class="cli-photo-text">
{{ object.description|safe }} {{ object.description|safe }}
</div> </div>
<div id="cli-pg" class="cli-photo-gallery"> <div id="cli-pg" class="cli-photo-gallery">
<ul class="clearfix"> <ul class="clearfix">
{% for photo in object_list %} {% for photo in object_list %}
<li> <li>
<a class="open-photo" href="#" > <a class="open-photo" href="#" >
<img src="{{ photo.get_client_thumbnail_url }}" alt="{{ photo.title }}" <img src="{{ photo.get_client_thumbnail_url }}" data-image-id="{{ photo.id }}"/>
data-user-id="{{ user.id }}" data-image-id="{{ photo.id }}" <span class="pg-title">{{ photo.title }}</span>
data-image-name="{{ photo.title }}" data-image-description="{{ photo.description }}"/> </a>
<span class="pg-title">{{ photo.title }}</span> </li>
</a> {% endfor %}
</li>
{% endfor %}
</ul>
</div>
</ul> </div>
</div> {% block paginator %}
</div>
{% block paginator %} {% with page_obj=page_obj queries=queries %}
{% include 'includes/paginator.html' %}
{% with page_obj=page_obj queries=queries %} {% endwith %}
{% include 'includes/paginator.html' %}
{% endwith %} {% endblock %}
{% endblock %}
{% endblock %}
{% endblock %} {% block photogallery %}
{% include 'client/popups/photo.html' %}
{% block photogallery %} {% endblock %}
<div id="pw-gallery" class="popup-gallery-container"> {% block scripts %}
<div class="pg-container-wrap"> <script src="{% static 'client/js/pages/place_photo.js' %}"></script>
<div class="popup-gallery-outer"> <script>
<div class="popup-gallery"> //js module initialization
<a class="pg-close"></a> //TODO: разобраться с опциями модуля
<div class="pg-wrap clearfix"> EXPO.placePhoto.init({
<div class="pg-photos"> modalId:'pw-gallery',
modalTrigger:'open-photo'
<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"/> </script>
{% endblock %}
</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 %}

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

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

@ -1,55 +1,55 @@
{% load static %} {% load static %}
{% load i18n %} {% load i18n %}
{% load template_filters %} {% load template_filters %}
<div id="pw-subj" class="popup-window pw-subj"> <div id="pw-subj" class="popup-window pw-subj">
<header class="clearfix"> <header class="clearfix">
<div class="pw-title">{% trans 'Тематика' %}</div> <div class="pw-title">{% trans 'Тематика' %}</div>
</header> </header>
<div class="pw-body clearfix"> <div class="pw-body clearfix">
<form class="pw-form search_form" action="{{ search_form.search_url }}"> <form class="pw-form search_form" action="{{ search_form.search_url }}">
<div class="pwf-line subj-checks"> <div class="pwf-line subj-checks">
<div class="pwf-field"> <div class="pwf-field">
<label class="check"><input type="checkbox" class="topicChecks" checked="true" name="sType" value="exhb" />выставки</label> <label class="check"><input type="checkbox" class="topicChecks" checked="true" name="sType" value="exhb" />выставки</label>
</div> </div>
<div class="pwf-field"> <div class="pwf-field">
<label class="check"><input type="checkbox" class="topicChecks" checked="true" name="sType" value="conf" />конференции</label> <label class="check"><input type="checkbox" class="topicChecks" checked="true" name="sType" value="conf" />конференции</label>
</div> </div>
<div class="pwf-field"> <div class="pwf-field">
<label class="check"><input type="checkbox" class="topicChecks" name="sType" value="smnr" />семинары</label> <label class="check"><input type="checkbox" class="topicChecks" name="sType" value="smnr" />семинары</label>
</div> </div>
<div class="pwf-field"> <div class="pwf-field">
<label class="check"><input type="checkbox" class="topicChecks" name="sType" value="webn" />вебинары</label> <label class="check"><input type="checkbox" class="topicChecks" name="sType" value="webn" />вебинары</label>
</div> </div>
</div> </div>
<div class="c-select-box-wrap"> <div class="c-select-box-wrap">
<div class="c-select-box topics"> <div class="c-select-box topics">
<div class="csb-title"> <div class="csb-title">
<input type="text" class="filter-input topicAC" autocomplete="on" placeholder="Введите или выберите тематику из списка" /> <input type="text" class="filter-input topicAC" autocomplete="on" placeholder="Введите или выберите тематику из списка" />
<div class="ac-custom-message" id="ac_animes_t"><span>Эта тематика уже выбрана.</span></div> <div class="ac-custom-message" id="ac_animes_t"><span>Эта тематика уже выбрана.</span></div>
</div> </div>
<div class="csb-selected-items"></div> <div class="csb-selected-items"></div>
<div class="scroll-container csb-menu"> <div class="scroll-container csb-menu">
<div class="scroll-content clearfix"> <div class="scroll-content clearfix">
<ul> <ul>
{% for value, text in search_form.th.field.choices %} {% for value, text in search_form.th.field.choices %}
<li class="level1{{ search_form.theme_classes|get_item:value }}"> <li class="level1{{ search_form.theme_classes|get_item:value }}">
<label> <label>
<input type="checkbox" name="th" value="{{ value }}" {% for option in search_form.th.value %}{% if option == value|slugify %}checked="checked"{% endif %}{% endfor %}/>{{ text }} <input type="checkbox" name="th" value="{{ value }}" {% for option in search_form.th.value %}{% if option == value|slugify %}checked="checked"{% endif %}{% endfor %}/>{{ text }}
</label> </label>
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="pwf-buttons-line"> <div class="pwf-buttons-line">
<button type="submit" class="icon-check">{% trans 'применить' %}</button> <button type="submit" class="icon-check">{% trans 'применить' %}</button>
</div> </div>
</form> </form>
</div> </div>
</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'); formDataString = decodeURI(formData).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"').replace(/\//ig, '\\/').replace(/\\n/g, '\\n');
this.formData = JSON.parse('{"' + formDataString + '"}'); this.formData = JSON.parse('{"' + formDataString + '"}');
this.formId = formName; this.formId = formName;
console.log('pushData:');
console.log(data);
}, },
pullData: function (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!" 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 // method to fulfill edited inputs with new content
@ -148,9 +142,6 @@ EXPO.company = (function() {
$img, imgSrc, $input, inputValue; $img, imgSrc, $input, inputValue;
this.pullHandler = function (data) { this.pullHandler = function (data) {
if (data.success){ if (data.success){
console.log('self:');
console.log(self);
for (item in self.formData) { for (item in self.formData) {
$input = $('#id_'+item); $input = $('#id_'+item);
if($.trim(self.formData[item]) != '' && $input.length){ 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", // dataType: "json",
url: self.ajaxPath, url: self.ajaxPath,
data:dataToSend, data:dataToSend,
processData: false,
contentType: false,
success: function(data) { success: function(data) {
self.pullHandler(data); self.pullHandler(data);
$('#wait-ajax').fadeOut(); $('#wait-ajax').fadeOut();
@ -38,6 +40,13 @@ EXPO.profile = (function() {
pushData: function (data, formName) { pushData: function (data, formName) {
var handler = this.pushHandler, var handler = this.pushHandler,
formData = data; 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(typeof handler == 'function'){
// if particular data change required // if particular data change required
handler(data); handler(data);
@ -46,11 +55,10 @@ EXPO.profile = (function() {
this.getajax(data); this.getajax(data);
$('#wait-ajax').show(); $('#wait-ajax').show();
} }
this.formData = JSON.parse('{"' + decodeURI(formData).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}'); console.log('formData type');
this.formId = formName; console.log(typeof formData);
console.log('pushData:');
console.log(data);
}, },
pullData: function (data) { pullData: function (data) {
@ -63,9 +71,7 @@ EXPO.profile = (function() {
message: " handler function for processing response after form submit not defined, please define it!" 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 // method to fulfill edited inputs with new content
@ -101,13 +107,7 @@ EXPO.profile = (function() {
// please add functionality for new profile forms here // 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 // 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. // 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) { Forms.home_form = function (path) {
var self = this; var self = this;
this.pullHandler = function (data) { this.pullHandler = function (data) {
@ -214,9 +214,7 @@ EXPO.profile = (function() {
$img, imgSrc, $input, inputValue; $img, imgSrc, $input, inputValue;
this.pullHandler = function (data) { this.pullHandler = function (data) {
if (data.success){ if (data.success){
console.log('self:');
console.log(self);
for (item in self.formData) { for (item in self.formData) {
$input = $('#id_'+item); $input = $('#id_'+item);
if($.trim(self.formData[item]) != '' && $input.length){ if($.trim(self.formData[item]) != '' && $input.length){
@ -247,26 +245,51 @@ EXPO.profile = (function() {
} }
$('.p-editable').removeClass('pe-current'); $('.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; 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 () { $(function () {
@ -400,7 +423,8 @@ EXPO.profile = (function() {
//forms init //forms init
$('.'+self.settings.updateFormClass).each(function () { $('.'+self.settings.updateFormClass).each(function () {
var formName = $(this).attr('id'), var formName = $(this).attr('id'),
path = $(this).attr('action'); path = $(this).attr('action'),
inputData;
//make and initialize form objects //make and initialize form objects
self.forms[formName] = Forms.factory(formName,path); self.forms[formName] = Forms.factory(formName,path);
@ -408,9 +432,15 @@ EXPO.profile = (function() {
// submit events handler // submit events handler
$(this).off('submit'); $(this).off('submit');
$(this).on('submit', function () { $(this).on('submit', function () {
var serialized = $(this).serialize(); //check if formData is supported
// each form post definitin function if ( window.FormData && ("upload" in ($.ajaxSettings.xhr())) ){
self.forms[formName].pushData(serialized, formName); inputData = new FormData(this);
self.forms[formName].pushData(inputData, formName);
} else {
inputData = $(this).serialize();
self.forms[formName].pushData(inputData, formName);
}
return false; return false;
}); });

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

@ -1,294 +1,294 @@
[ [
{ "mask": "+247-####", "cc": "AC", "name_en": "Ascension", "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": "+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-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": "+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": "+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(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": "+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": "+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": "+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": "Caribbean Netherlands", "desc_en": "", "name_ru": "Карибские Нидерланды", "desc_ru": "" },
{ "mask": "+599-###-####", "cc": "AN", "name_en": "Netherlands Antilles", "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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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-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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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(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(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(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": "+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": "+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": "mobile", "name_ru": "Эквадор ", "desc_ru": "мобильные" },
{ "mask": "+593-#-###-####", "cc": "EC", "name_en": "Ecuador", "desc_en": "", "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": "mobile", "name_ru": "Эстония ", "desc_ru": "мобильные" },
{ "mask": "+372-###-####", "cc": "EE", "name_en": "Estonia", "desc_en": "", "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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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(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-##-###-###", "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": "+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": "+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-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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "mobile", "name_ru": "Япония ", "desc_ru": "мобильные" },
{ "mask": "+81(###)###-###", "cc": "JP", "name_en": "Japan", "desc_en": "", "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": "+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": "+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": "+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": "+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": "+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": "+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-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": "+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": "+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": "+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": "+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(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": "+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(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": "+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": "mobile", "name_ru": "Ливан ", "desc_ru": "мобильные" },
{ "mask": "+961-#-###-###", "cc": "LB", "name_en": "Lebanon", "desc_en": "", "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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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-##-###-###", "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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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-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": "+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": "+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": "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": "+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": "+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": "+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": "+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": "+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": "+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": "", "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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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-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": "+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": "mobile", "name_ru": "Соломоновы Острова ", "desc_ru": "мобильные" },
{ "mask": "+677-#####", "cc": "SB", "name_en": "Solomon Islands", "desc_en": "", "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": "+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": "+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": "+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": "+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": "Saint Helena", "desc_en": "", "name_ru": "Остров Святой Елены", "desc_ru": "" },
{ "mask": "+290-####", "cc": "SH", "name_en": "Tristan da Cunha", "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": "+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": "+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": "+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": "+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": "+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": "", "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": "+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": "mobile", "name_ru": "Суринам ", "desc_ru": "мобильные" },
{ "mask": "+597-###-###", "cc": "SR", "name_en": "Suriname", "desc_en": "", "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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "mobile", "name_ru": "Таиланд ", "desc_ru": "мобильные" },
{ "mask": "+66-##-###-###", "cc": "TH", "name_en": "Thailand", "desc_en": "", "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": "+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": "+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-###-####", "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-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": "+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": "+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": "+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": "+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": "+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": "+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-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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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": "+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(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": "+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": "+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": "mobile", "name_ru": "Вануату ", "desc_ru": "мобильные" },
{ "mask": "+678-#####", "cc": "VU", "name_en": "Vanuatu", "desc_en": "", "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": "+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": "+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": "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": "+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": "+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": "+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": "+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": "+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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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": "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": "Northwest Territories", "name_ru": "Канада", "desc_ru": "Северо-Западные территории" },
{ "mask": "+1(867)###-####", "cc": "CA", "name_en": "Canada", "desc_en": "Yukon", "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(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(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(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(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": "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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(989)###-####", "cc": "US", "name_en": "USA", "desc_en": "Michigan", "name_ru": "США", "desc_ru": "Мичиган" }
] ]
Loading…
Cancel
Save