logo
  • Главная
  • Услуги
  • Блог
  • Контакты
  • О компании
  • Главная
  • О компании
  • Связаться с нами
  • Блог
  • Услуги

Ru

EN FA RU
Полезные ссылки О компании Связаться с нами Услуги
Телефон в Иране: +989152365531/+985138114593-5
Электронная почта: Info@artarail.com
Arta Rail @ 2025
var secure = location.protocol === 'https:' ? '; Secure' : ''; document.cookie = name + '=' + encodeURIComponent(value) + '; Max-Age=' + COOKIE_LIFETIME + '; Path=/; SameSite=Lax' + secure; } function randomVariant() { if (window.crypto && window.crypto.getRandomValues) { var value = new Uint32Array(1); window.crypto.getRandomValues(value); return value[0] % 2 === 0 ? 'legacy' : 'new'; } return Math.random() < 0.5 ? 'legacy' : 'new'; } function getVariant() { var forced = new URLSearchParams(location.search).get('form_variant'); if (forced === 'legacy' || forced === 'new') { return forced; } var saved = readCookie(EXPERIMENT_COOKIE); if (saved === 'legacy' || saved === 'new') { return saved; } var assigned = randomVariant(); writeCookie(EXPERIMENT_COOKIE, assigned); return assigned; } function upsertHidden(form, name, value) { var input = form.querySelector('input[name="' + name + '"]'); if (!input) { input = document.createElement('input'); input.type = 'hidden'; input.name = name; form.appendChild(input); } input.value = value; return input; } function textSet() { var language = (document.documentElement.lang || 'en').toLowerCase(); if (language.indexOf('fa') === 0) { return { dir: 'rtl', title: 'درخواست حمل بار', subtitle: 'سه سؤال کوتاه درباره مسیر؛ سپس اطلاعات تماس شما.', step1: 'مرحله ۱ از ۲', step2: 'مرحله ۲ از ۲', service: 'چه خدمتی نیاز دارید؟', servicePlaceholder: 'انتخاب کنید', services: ['حمل ریلی بین‌المللی', 'حمل جاده‌ای', 'حمل دریایی', 'حمل ترکیبی', 'خدمات واردات و صادرات', 'مشاوره / هنوز مطمئن نیستم'], origin: 'مبدا', originPlaceholder: 'شهر یا کشور مبدا', destination: 'مقصد', destinationPlaceholder: 'شهر یا کشور مقصد', cargo: 'نوع بار (اختیاری)', cargoPlaceholder: 'انتخاب کنید', cargos: ['کالای عمومی', 'مواد غذایی و کشاورزی', 'مواد معدنی و فلزات', 'مواد شیمیایی و سوخت', 'ماشین‌آلات و تجهیزات', 'سایر / هنوز مشخص نیست'], timing: 'زمان تقریبی ارسال (اختیاری)', timingPlaceholder: 'انتخاب کنید', timings: ['در اولین فرصت', 'کمتر از یک ماه', '۱ تا ۳ ماه آینده', 'فعلاً در حال برنامه‌ریزی'], next: 'ادامه و ثبت اطلاعات تماس', requiredError: 'این فیلد را تکمیل کنید.', email: 'ایمیل', emailError: 'یک ایمیل معتبر وارد کنید.', phone: 'تلفن / واتساپ', phoneError: 'شماره تماس معتبر وارد کنید.', notes: 'توضیحات تکمیلی (اختیاری)', notesPlaceholder: 'وزن، حجم، شرایط خاص یا سؤال شما', back: 'بازگشت', submit: 'ثبت درخواست و تماس با من', helper: 'فقط مبدا، مقصد و نوع خدمت اجباری است؛ جزئیات بیشتر را همکاران ما در تماس بعدی تکمیل می‌کنند.', trust: 'اطلاعات شما فقط برای بررسی درخواست حمل استفاده می‌شود.' }; } if (language.indexOf('ru') === 0) { return { dir: 'ltr', title: 'Запрос на перевозку', subtitle: 'Три коротких вопроса о маршруте, затем ваши контакты.', step1: 'Шаг 1 из 2', step2: 'Шаг 2 из 2', service: 'Какая услуга вам нужна?', servicePlaceholder: 'Выберите услугу', services: ['Международные железнодорожные перевозки', 'Автомобильные перевозки', 'Морские перевозки', 'Мультимодальные перевозки', 'Импорт и экспорт', 'Консультация / пока не уверен'], origin: 'Пункт отправления', originPlaceholder: 'Город или страна отправления', destination: 'Пункт назначения', destinationPlaceholder: 'Город или страна назначения', cargo: 'Тип груза (необязательно)', cargoPlaceholder: 'Выберите тип', cargos: ['Генеральный груз', 'Продукты питания и сельхозпродукция', 'Минералы и металлы', 'Химикаты и топливо', 'Оборудование и техника', 'Другое / пока не уверен'], timing: 'Срок отправки (необязательно)', timingPlaceholder: 'Выберите срок', timings: ['Как можно скорее', 'В течение месяца', 'Через 1–3 месяца', 'Пока планируем'], next: 'Продолжить', requiredError: 'Заполните это поле.', email: 'Email', emailError: 'Введите корректный email.', phone: 'Телефон / WhatsApp', phoneError: 'Введите корректный номер.', notes: 'Дополнительная информация (необязательно)', notesPlaceholder: 'Вес, объем, особые условия или ваш вопрос', back: 'Назад', submit: 'Отправить запрос', helper: 'Обязательны только услуга, пункт отправления и назначения. Остальные детали уточнит наш специалист.', trust: 'Ваши данные используются только для обработки запроса.' }; } return { dir: 'ltr', title: 'Request a freight quote', subtitle: 'Three quick route questions, then your contact details.', step1: 'Step 1 of 2', step2: 'Step 2 of 2', service: 'What service do you need?', servicePlaceholder: 'Select a service', services: ['International rail freight', 'Road freight', 'Sea freight', 'Multimodal freight', 'Import and export services', 'Consultation / Not sure yet'], origin: 'Origin', originPlaceholder: 'Origin city or country', destination: 'Destination', destinationPlaceholder: 'Destination city or country', cargo: 'Cargo type (optional)', cargoPlaceholder: 'Select cargo type', cargos: ['General cargo', 'Food and agricultural goods', 'Minerals and metals', 'Chemicals and fuels', 'Machinery and equipment', 'Other / Not sure yet'], timing: 'Estimated shipping time (optional)', timingPlaceholder: 'Select a timeframe', timings: ['As soon as possible', 'Within one month', 'In 1–3 months', 'Planning only'], next: 'Continue to contact details', requiredError: 'Please complete this field.', email: 'Email', emailError: 'Enter a valid email address.', phone: 'Phone / WhatsApp', phoneError: 'Enter a valid phone number.', notes: 'Additional details (optional)', notesPlaceholder: 'Weight, volume, special conditions, or your question', back: 'Back', submit: 'Send request and contact me', helper: 'Only the service, origin, and destination are required. Our team can complete the remaining details with you.', trust: 'Your details are used only to review this freight request.' }; } function optionMarkup(placeholder, values) { var html = ''; values.forEach(function (value) { html += ''; }); return html; } function installNewForm(form) { if (form.__artaV2Installed) return; form.__artaV2Installed = true; var copy = textSet(); var email = form.querySelector('input[name="email"]'); var phone = form.querySelector('input[name="phone"]'); var message = form.querySelector('textarea[name="msg"]'); var submit = form.querySelector('button[type="submit"], .btn-send_msg'); if (!email || !phone || !message || !submit) return; var emailBox = email.parentElement; var phoneBox = phone.parentElement; var messageBox = message.parentElement; var captchaError = document.getElementById('captcha_err'); var captchaBox = captchaError ? captchaError.parentElement : null; emailBox.classList.add('arta-v2-field'); phoneBox.classList.add('arta-v2-field'); messageBox.classList.add('arta-v2-source-message'); var emailLabel = emailBox.querySelector('span'); var phoneLabel = phoneBox.querySelector('span'); var emailError = emailBox.querySelector('small'); var phoneError = phoneBox.querySelector('small'); if (emailLabel) emailLabel.textContent = copy.email + ' *'; if (phoneLabel) phoneLabel.textContent = copy.phone + ' *'; if (emailError) emailError.textContent = copy.emailError; if (phoneError) phoneError.textContent = copy.phoneError; email.id = 'arta-email'; phone.id = 'arta-phone'; email.setAttribute('aria-label', copy.email); phone.setAttribute('aria-label', copy.phone); phone.required = true; email.autocomplete = 'email'; phone.autocomplete = 'tel'; var shell = document.createElement('div'); shell.className = 'arta-v2-shell'; shell.dir = copy.dir; shell.innerHTML = '
' + '

' + copy.title + '

' + '

' + copy.subtitle + '

' + '
' + copy.step1 + '
' + '
' + '
' + '
' + '
' + '' + '' + '' + copy.requiredError + '' + '
' + '
' + '' + '' + '' + copy.requiredError + '' + '
' + '
' + '' + '' + '' + copy.requiredError + '' + '
' + '
' + '' + '' + '
' + '
' + '' + '' + '
' + '
' + '

' + copy.helper + '

' + '' + '
' + '
' + '
' + '
' + '' + '' + '
' + '
' + '
' + '' + '
' + '
' + '
' + copy.trust + '
' + '
'; var contactFields = shell.querySelector('[data-contact-fields]'); var submitSlot = shell.querySelector('[data-submit-slot]'); var captchaSlot = shell.querySelector('[data-captcha-slot]'); contactFields.appendChild(emailBox); contactFields.appendChild(phoneBox); submit.textContent = copy.submit; submitSlot.appendChild(submit); if (captchaBox) captchaSlot.appendChild(captchaBox); Array.prototype.slice.call(form.children).forEach(function (child) { if (child === shell || child === messageBox || child === emailBox || child === phoneBox || child === submit || child === captchaBox) return; if (child.tagName === 'INPUT' && child.type === 'hidden') return; if (child.getAttribute && child.getAttribute('aria-hidden') === 'true') return; child.classList.add('arta-v2-original-hide'); }); form.appendChild(shell); form.classList.add('arta-v2-active'); var service = shell.querySelector('[name="arta_service"]'); var origin = shell.querySelector('[name="arta_origin"]'); var destination = shell.querySelector('[name="arta_destination"]'); var cargo = shell.querySelector('[name="arta_cargo"]'); var timing = shell.querySelector('[name="arta_timing"]'); var notes = shell.querySelector('[name="arta_notes"]'); var stepOne = shell.querySelector('[data-step="1"]'); var stepTwo = shell.querySelector('[data-step="2"]'); var progress = shell.querySelector('.arta-v2-progress'); function selectedText(select) { return select.value ? select.options[select.selectedIndex].text : 'Not specified'; } function syncMessage() { var lines = [ 'Qualified freight request submitted through the Arta Rail new form.', 'Service: ' + selectedText(service), 'Origin: ' + ((origin.value || '').trim() || 'Not specified'), 'Destination: ' + ((destination.value || '').trim() || 'Not specified'), 'Cargo type: ' + selectedText(cargo), 'Estimated shipping time: ' + selectedText(timing), 'Additional details: ' + ((notes.value || '').trim() || 'No additional details were provided.') ]; message.value = lines.join('\n').slice(0, 1000); message.dispatchEvent(new Event('input', { bubbles: true })); } function markField(field, valid) { var wrapper = field.closest('.arta-v2-field'); var error = wrapper ? wrapper.querySelector('.arta-v2-error') : null; field.classList.toggle('arta-v2-invalid', !valid); if (error) error.classList.toggle('is-visible', !valid); return valid; } function validateStepOne() { var validService = markField(service, !!service.value); var validOrigin = markField(origin, (origin.value || '').trim().length >= 2); var validDestination = markField(destination, (destination.value || '').trim().length >= 2); var valid = validService && validOrigin && validDestination; if (!valid) { var firstInvalid = shell.querySelector('.arta-v2-invalid'); if (firstInvalid) firstInvalid.focus(); } return valid; } shell.querySelector('[data-next-step]').addEventListener('click', function () { syncMessage(); if (!validateStepOne()) return; stepOne.hidden = true; stepTwo.hidden = false; progress.textContent = copy.step2; email.focus(); window.gtag && window.gtag('event', 'lead_form_step', { form_id: 'order-form', form_name: 'order_request', form_variant: 'new', form_step: 2 }); }); shell.querySelector('[data-back-step]').addEventListener('click', function () { stepTwo.hidden = true; stepOne.hidden = false; progress.textContent = copy.step1; service.focus(); }); shell.addEventListener('input', syncMessage); shell.addEventListener('change', syncMessage); submit.addEventListener('pointerdown', syncMessage, { capture: true }); syncMessage(); } function sendAnalyticsEvent(eventName, parameters) { window.dataLayer = window.dataLayer || []; window.gtag = window.gtag || function () { window.dataLayer.push(arguments); }; window.gtag('event', eventName, parameters); } function storageGet(key) { try { return sessionStorage.getItem(key); } catch (error) { return null; } } function storageSet(key, value) { try { sessionStorage.setItem(key, value); } catch (error) {} } function storageRemove(key) { try { sessionStorage.removeItem(key); } catch (error) {} } function initTracking() { var formDefinitions = [ { id: 'order-form', name: 'order_request' }, { id: '_themename-advert-create-form', name: 'contact_request' } ]; var definition = formDefinitions.find(function (item) { return document.getElementById(item.id); }); if (!definition) return; var form = document.getElementById(definition.id); var variantInput = form.querySelector('[name="form_variant"]'); var commonParameters = { form_id: definition.id, form_name: definition.name, form_variant: variantInput && variantInput.value ? variantInput.value : 'legacy', page_language: document.documentElement.lang || 'unknown' }; var urlParameters = new URLSearchParams(window.location.search); var submissionStatus = urlParameters.get('contact_status'); var storagePrefix = 'artarail_ga4_' + definition.name + '_'; if (!submissionStatus) { sendAnalyticsEvent('lead_form_view', commonParameters); } var hasStarted = false; form.addEventListener('input', function (event) { if (!event.target.matches('input:not([type="hidden"]), textarea, select')) return; storageRemove(storagePrefix + 'success'); if (!hasStarted) { hasStarted = true; sendAnalyticsEvent('lead_form_start', commonParameters); } }, { passive: true }); if (submissionStatus === 'success' && storageGet(storagePrefix + 'success') !== '1') { sendAnalyticsEvent('generate_lead', commonParameters); storageSet(storagePrefix + 'success', '1'); } var errorKey = storagePrefix + 'error_' + window.location.search; if (submissionStatus === 'error' && storageGet(errorKey) !== '1') { sendAnalyticsEvent('lead_form_error', Object.assign({}, commonParameters, { error_type: urlParameters.get('reason') || 'server_error' })); storageSet(errorKey, '1'); } } function initArtaRailLeadExperiment() { var orderForm = document.getElementById('order-form'); if (orderForm) { var variant = getVariant(); upsertHidden(orderForm, 'form_variant', variant); if (variant === 'new') installNewForm(orderForm); } initTracking(); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initArtaRailLeadExperiment, { once: true }); } else { initArtaRailLeadExperiment(); } })();